Giter Club home page Giter Club logo

screeps's Introduction

Stonehenge

Smart colony management for the game Screeps. Written in TypeScript.

MIT License

Stonehenge is a proof-of-concept of a smart, robust, and maintainable Screeps codebase. It is developed in TypeScript, and designed with modularity in mind.

Developing

TODO!

Special Thanks

The architecture of the kernel is heavily based off of ags131's PosisKernel and thaelina's ThaeOS.

screeps's People

Contributors

chaoticweg avatar resir014 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

screeps's Issues

Some ideas regarding MemoryManager

I might have come across an enlightenment that trying to butcher MemoryManager even further might be a futile attempt. Which brings up the need to discuss this ahead of the merge.

On the #screeps-ts-manager Slack channel Erik mentioned earlier that he doesn't have any memory storage available for that. Except for the miners (which holds the memory on which sources they go after, since we have a limit of miners per source), every other roles don't store a piece of their target ids in the memory. Therefore most of the roles don't need to rely on MemoryManager, it'd be essentially just there to let ourselves easily access the Memory.* shorthand. They would end up just grabbing everything from their respective *Manager classes.

I might experiment with this in a branch once everything is fully converged.

Set up a FlagManager class

Right now we don't really have a FlagManager class, so we should at the bare minimum create one that has a method which pulls a flag with a certain name.

Have builders, repairers, and wallRepairers go to a designated flag when doing nothing

If a builder, repairer, or wallRepairer creep has no more things to do, then they need to renew and move to spawn, they will stay at/around spawn afterwards, therefore clogging the spawn and blocking the spawn's ability to create new creeps.

We should have them move to a certain flag on the map when they're doing nothing so that the spawn wouldn't get congested.

Improve creeps role management

As part of the convergence, we will take some steps into improving our role management. This will include new roles that we brought in from Erik's repo, and a more balanced role management.

Better job queue system

The current job queue system is very inefficient. We need to rewrite the entire system to a more structured object-based system.

Better autospawning logic

Currently, the canCreate*() method is unused because using that somehow doesn't cause the creeps to autospawn if needed in some cases. We need to improve this.

Improve our creep creator

Right now the method of creating a new create*() and *GoToWork() method every time we add a new role is not even DRY at all. We should create a single createNewCreep() and creepsGoToWork() that takes a role: string parameter we we can work from there.

This new creep creator will also need to support multiple possible body parts. e.g. [WORK, CARRY, MOVE] for "emergency mode", [WORK, WORK, CARRY, CARRY, MOVE], if we could create a stronger creep & a certain number of creeps already exists. Or even add another, much stronger one, later on.

The output of creeps would need to be balanced so that we don't end up with a lot of "emergency" creeps after RCL 2.

Creep generation fails on higher-tier body parts

It seems that we really need to tweak the balancing rates of creep spawning. Whenever the number of extensions in a room exceed 5, I found out that creep generation starts to fail horribly when reaching builders/repairers, due to the fact that the spawner mostly fails to generate creeps with [MOVE, MOVE, MOVE, MOVE, CARRY, CARRY, CARRY, WORK, WORK, WORK] body parts.

MemoryManager broken

MemoryManager was broken in the effort to add multi-room support. This bug was weird.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.