Giter VIP home page Giter VIP logo

overmind's Introduction

Current release: Overmind v0.5.2 - Evolution Build Status


About Overmind

What is Screeps?

Screeps is an MMO strategy game for programmers. The core objective is to expand your colony, gathering resources and fighting other players along the way. To control your units, you code an AI in JavaScript; everything from moving, mining, building, fighting, and trading is entirely driven by your code. Because Screeps is an MMO, it takes place on a single server that runs 24/7, populated by every other player and their army of creeps. When you log off, your population continues buzzing away with whatever task you set them. Screeps pits your programming prowess head-to-head with other people to see who can think of the most efficient methods of completing tasks or imagine new ways to defeat enemies.

What is Overmind?

Overmind is my personal codebase that I run on the public server. The structure of the AI is themed loosely around the Zerg's swarm intelligence from Starcraft. Overlords orchestrate Creep actions within each Colony, and the colony Overseer places Directives to adapt to stimuli. Finally, the Assimilator allows all players running Overmind to act as a collective hivemind, sharing creeps and resources and responding jointly to a master ledger of all directives shared by all players.

The AI is entirely automated, although it can also run in manual or semiautomatic mode. The latest release should work right out of the box; however, if you find something broken, please submit an issue and I'll try to fix it.

Can I use Overmind as my bot?

If you're new to Screeps, I would definitely recommend writing your own AI: most of the fun of the game is programming your own bot and watching your little ant farm run! However, I've tried to make the codebase readable and well-documented, so feel free to fork the project or use it as inspiration when writing your AI.

If you still want to use Overmind on the public server, that's okay too - there are a number of people already doing this. But please realize that using a mature AI like this gives you a huge advantage over other new players, so don't go out of your way to ruin someone else's fun. In the future, I will be implementing methods for novice players to opt out of excessive aggression by Overmind bots (as long as they don't start a conflict and stay out of its way).

Installation

Out of the box

If you just want to run Overmind without modification, you can copy the compiled main.js file attached to the latest release into your script. While Overmind is fully automated by default, it can be run with varying levels of autonomy; refer to the Overmind wiki for how to configure and operate the bot.

Compiling from source

To install the full codebase, download or clone the repository. (Please note that while the latest release of Overmind should always be stable, the latest commit may contain unstable features.) Navigate to the Overmind root directory and run npm install. To compile and deploy the codebase, create a screeps.json file from the example file, then do one of the following actions:

  • Compile and deploy to public server: npm run push-main
  • Compile and deploy to private server: npm run push-pserver
  • Compile without deploying: npm run compile

Overmind uses rollup to bundle the compiled TypeScript into a single main.js file. The codebase includes functionality to compute checksums for internal validation - if you have a different version of rollup installed globally, different checksums may be computed and some functionality will be disabled. Please ensure the local installation of rollup found in node_modules is used.

Setting up the Grafana dashboard

Overmind includes a Grafana dashboard (shown below) which tracks detailed operating statistics. To set up the dashboard:

  1. Register for grafana service at screepspl.us
  2. Setup the ScreepsPlus hosted agent (simpler) or use the NodeJS agent on a free micro instance of Google Compute.
  3. Import the dashboard from Overmind.json and change $User to your username.
  4. Enjoy your pretty graphs!

Design overview

Check out the Overmind wiki for in-depth explanations of parts of the design of the AI. (Click the diagram below to see a higher-resolution version.)

AI structural schematic

overmind's People

Contributors

ahmedcharles avatar bencbartlett avatar coolfeather2 avatar rooklion avatar schealex avatar zgeneral avatar

Stargazers

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

Watchers

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

overmind's Issues

Incubate throws "Cannot read property 'overseer' of undefined"

Issue summary

placing a incubate flag causes this message
even when right next door to another colony

colonise works, incubate doesn't

Description of issue:

Steps to reproduce:

place purple grey flag next to room E38S42 at tick 7105600

Error message:

// Console output:
[00:40:43][shard2]WARNING 7105703 Could not find colony match for Flag4 in E39S44!
[00:40:43][shard2]TypeError: Cannot read property 'overseer' of undefined
    at new Overlord (main:9355:21)
    at new ClaimingOverlord (main:17558:9)
    at new DirectiveIncubate (main:17614:32)
    at Object.DirectiveWrapper$1 [as DirectiveWrapper] (main:19520:28)
    at _Overmind.registerDirectives (main:21664:1982)
    at _Overmind.build (main:21664:2451)
    at main (main:21765:18)
    at Object.wrap (main:6053:12)
    at Object.loop (main:21777:21)

Other information:

  • Overmind version: 0.4.1

Improve new colony startup time

Feature request summary

Motivation:

Improve new colony startup time

Description:

When a pioneer has completed building a spawn, it would be better if it spent the remainder of its time filling the spawn from the energy source to help get the new colony get started.

Currently, the pioneer just sits and waits to die.

Related issues:

this.room.hostiles undefined in ArcherDefenseOverlord with no room visibility

Description of issue:

Using the invasion defense flag (orange/red) in a room with an NPC invasion when there is no visibility throws an error on "this.room.hostiles" because "this.room" is undefined. This error occurs in a few blocks of the ArcherDefenseOverlord class.

Steps to reproduce:

Create an invasion defense flag (orange/red) and have no visibility in the room

Error message:

main:9663
amount = .sum(.map(this.room.hostiles, hostile => hostile.boosts.length > 0 ? 2 : 1));
^

TypeError: Cannot read property 'hostiles' of undefined
at ArcherDefenseOverlord.init (main:9663:44)
at Overseer.init (main:9805:26)
at Colony.init (main:14135:23)
at Overmind.init (main:17613:39)
at main (main:17778:14)
at Object.wrap (main:3682:12)
at Object.loop (main:17785:21)
at __mainLoop:1:52``

Other information:

  • Overmind version: 0.2
    • Commit hash: {Please include the commit hash if known}
  • Issue is with dependency: no

Uninitialized memory in TerminalNetwork.logTransferCosts()

Issue summary

Description of issue:

It seems some of the statistics memory hasn't been initialized correctly

Steps to reproduce:

With a fully autonomous not touched Overmind on private server, this error starts showing up when there are two RCL6 rooms with terminals (don't think it appears with only one terminal)

Error message:

// Console output:
[7:36:27 PM]DEBUG   364694 Equalizing Z within terminal network
[7:36:27 PM]TypeError: Cannot read property 'W7N4' of undefined
    at TerminalNetwork.logTransferCosts (main:19661:40)
    at TerminalNetwork.logTransfer (main:19658:14)
    at TerminalNetwork.transfer (main:19709:18)
    at TerminalNetwork.equalize (main:19845:28)
    at TerminalNetwork.equalizeCycle (main:19859:14)
    at TerminalNetwork.run (main:19937:18)
    at (anonymous function) (main:20093:5060)
    at _Overmind.try (main:20093:499)
    at _Overmind.run (main:20093:5017)

Other information:

  • Overmind version: 0.5.0
    • Commit hash: {optional, but helpful: include the commit hash (if known)}

TypeError: Cannot read property 'Muon'

Issue summary

Description of issue:

The script is running fine, but every 5 minutes or so this error is dumped into the console. The tick after the error, it continues to run as if nothing happened.

Steps to reproduce:

Checkout the master and run npm run compile then copy the resulting file to my screeps folder. I've modified some of Visualizer.ts and drawCreepReport method of Overseer.ts, but the error has persisted since the initial clone.

Error message:

// Console output:
TypeError: Cannot read property 'Muon' of undefined
    at _Assimilator.isAssimilated (main:672:2539)
    at _0x20473c (main:22932:846)
    at Function.runRoomIntel_2 (main:22932:9239)
    at Function.run (main:22932:9733)
    at _Overmind.run (main:22932:6820)
    at main (main:23171:14)
    at Object.wrap (main:1400:16)
    at Object.loop (main:23179:21)
    at __mainLoop:1:52

// Offending line:
let __lockedObjects__=[];let _0x5ce6efd=[];const MUON$2=_0x2bf0('0x0');const defaultAssimilatorMemory={'masterLedger':{},'clearanceCodes':{}};const defaultSecretAssimilatorMemory={'users':{},'validChecksums':{}};const TRUSTED_USERS=[MUON$2,_0x2bf0('0x1')];const UNTRUSTED_USERS=[_0x2bf0('0x2')];const ASSIMILATOR_SEGMENT=0x62;const ASSIMILATE_FREQUENCY=0x3e8;const T=ASSIMILATE_FREQUENCY;const CHECKSUM_MAX_AGE=0xf4240;const PHONE_HOME_HEADER=_0x2bf0('0x3');function alert(_0x18ba36){console[_0x2bf0('0x4')](_0x2bf0('0x5')+_0x2bf0('0x6')+_0x2bf0('0x7')+Game[_0x2bf0('0x8')][_0x2bf0('0x9')]()+_0x2bf0('0xa'),_0x2bf0('0xb')+_0x18ba36+_0x2bf0('0xc'));}class _Assimilator{constructor(){if(!Memory[_0x2bf0('0xd')]){Memory[_0x2bf0('0xd')]={};}_[_0x2bf0('0xe')](Memory[_0x2bf0('0xd')],defaultAssimilatorMemory);if(MY_USERNAME==MUON){if(!Memory[_0x2bf0('0xd')][_0x2bf0('0xf')]){Memory[_0x2bf0('0xd')][_0x2bf0('0xf')]={};}_[_0x2bf0('0xe')](Memory[_0x2bf0('0xd')][_0x2bf0('0xf')],defaultSecretAssimilatorMemory);}}get[_0x2bf0('0x10')](){return Memory[_0x2bf0('0xd')];}get[_0x2bf0('0x11')](){return Memory[_0x2bf0('0xd')][_0x2bf0('0xf')];}[_0x2bf0('0x12')](_0x1a3242){__lockedObjects__[_0x2bf0('0x13')](_0x1a3242);_0x5ce6efd[_0x2bf0('0x13')](_0x1a3242);}[_0x2bf0('0x14')](_0x206dcb,_0x42aada=![]){let _0x1934c2=[];let _0x5b52a9=_0x206dcb[_0x2bf0('0x15')](/(\.[a-zA-Z]*\()/gm)||[];let _0x4840fd=_0x206dcb[_0x2bf0('0x15')](/new [a-zA-Z]*\(/gm)||[];_0x1934c2=_0x1934c2[_0x2bf0('0x16')](_0x5b52a9,_0x4840fd);let _0x2c81ad=_0x1934c2[_0x2bf0('0x17')]('$');if(_0x42aada)console[_0x2bf0('0x4')](_0x2c81ad);return _0x2c81ad;}[_0x2bf0('0x18')](_0x1eeffd=![]){let _0x2ccb0e=0x0;if(_0x1eeffd)console[_0x2bf0('0x4')](_0x2bf0('0x19'));for(let _0x1c8b52 of _0x5ce6efd){let _0x42d65c=/\/\*[\s\S]*?\*\/|([^\\:]|^)\/\/.*$/gm;let _0x409613=JSON[_0x2bf0('0x1a')](''+_0x1c8b52);_0x409613=_0x409613[_0x2bf0('0x1b')](_0x42d65c,'');_0x409613=_0x409613[_0x2bf0('0x1b')](/\s/gm,'');let _0x8c2b8d=sha256(_0x409613);_0x2ccb0e+=_0x8c2b8d[_0x2bf0('0x1c')]((_0x411030,_0x34cd8a)=>0x2*_0x411030+_0x34cd8a);if(_0x1eeffd){console[_0x2bf0('0x4')](_0x2bf0('0x1d'));console[_0x2bf0('0x4')](_0x409613);console[_0x2bf0('0x4')](_0x2bf0('0x1e'));console[_0x2bf0('0x4')](_0x8c2b8d);console[_0x2bf0('0x4')](_0x2bf0('0x1f')+_0x2ccb0e);}}let _0x506dbf='0x'+_0x2ccb0e[_0x2bf0('0x9')](0x10);if(_0x1eeffd){console[_0x2bf0('0x4')](_0x2bf0('0x20')+_0x2ccb0e);console[_0x2bf0('0x4')](_0x2bf0('0x21')+_0x506dbf);}return _0x506dbf;}[_0x2bf0('0x22')](_0x91330){if(!this[_0x2bf0('0x10')][_0x2bf0('0x23')][MUON$2]){return ![];}return !!this[_0x2bf0('0x10')][_0x2bf0('0x23')][_0x91330];}[_0x2bf0('0x24')](_0x101cb8){return this[_0x2bf0('0x10')][_0x2bf0('0x23')][_0x101cb8]||null;}[_0x2bf0('0x25')](){let _0x9be78;if(MY_USERNAME==MUON$2){_0x9be78=Segmenter[_0x2bf0('0x26')](ASSIMILATOR_SEGMENT,_0x2bf0('0x23'));}else{_0x9be78=Segmenter[_0x2bf0('0x27')](_0x2bf0('0x23'));}this[_0x2bf0('0x10')][_0x2bf0('0x23')]=_0x9be78;}[_0x2bf0('0x28')](){let _0x2bce5f=ASSIMILATE_FREQUENCY*Math[_0x2bf0('0x29')](Game[_0x2bf0('0x8')]/ASSIMILATE_FREQUENCY)-0x1;alert(_0x2bf0('0x2a')+this[_0x2bf0('0x24')](MY_USERNAME)+_0x2bf0('0x2b')+_0x2bce5f+')');}[_0x2bf0('0x2c')](){this[_0x2bf0('0x2d')]();}[_0x2bf0('0x2d')](){const _0x1e8f92=this[_0x2bf0('0x18')]();this[_0x2bf0('0x11')][_0x2bf0('0x2e')][_0x1e8f92]=Game[_0x2bf0('0x8')];for(let _0x1e8f92 in this[_0x2bf0('0x11')][_0x2bf0('0x2e')]){if(this[_0x2bf0('0x11')][_0x2bf0('0x2e')][_0x1e8f92]<Game[_0x2bf0('0x8')]-CHECKSUM_MAX_AGE){delete this[_0x2bf0('0x11')][_0x2bf0('0x2e')][_0x1e8f92];}}}[_0x2bf0('0x2f')](){for(let _0x4caada of Game[_0x2bf0('0x30')][_0x2bf0('0x31')]){if(_0x4caada[_0x2bf0('0x8')]==Game[_0x2bf0('0x8')]-0x1&&_0x4caada[_0x2bf0('0x32')]&&_0x4caada[_0x2bf0('0x32')][_0x2bf0('0x33')](PHONE_HOME_HEADER)){try{let _0x532b06=JSON[_0x2bf0('0x34')](_[_0x2bf0('0x35')](_0x4caada[_0x2bf0('0x32')][_0x2bf0('0x36')](PHONE_HOME_HEADER)));let _0x4525c8=_0x532b06['U'];let _0x261578=_0x532b06['C'];if(_0x4525c8){this[_0x2bf0('0x11')][_0x2bf0('0x37')][_0x4525c8]={'checksum':_0x261578,'time':_0x4caada[_0x2bf0('0x8')]};}}catch(_0x28bb60){console[_0x2bf0('0x4')](_0x2bf0('0x38')+_0x4caada[_0x2bf0('0x32')]+_0x2bf0('0x39')+_0x28bb60);}}}this[_0x2bf0('0x11')][_0x2bf0('0x37')][MUON$2]={'checksum':this[_0x2bf0('0x18')](),'time':Game[_0x2bf0('0x8')]};}[_0x2bf0('0x3a')](_0x3d6d58,_0x4ed6ca,_0x5a2d54){if(UNTRUSTED_USERS[_0x2bf0('0x33')](_0x3d6d58)){return null;}if(!this[_0x2bf0('0x11')][_0x2bf0('0x2e')][_0x4ed6ca]&&!TRUSTED_USERS[_0x2bf0('0x33')](_0x3d6d58)){return null;}let _0x5a2718=sha256('U'+_0x3d6d58+'C'+_0x4ed6ca+'T'+_0x5a2d54)[_0x2bf0('0x1c')]((_0x46186f,_0x226590)=>0x2*_0x46186f+_0x226590);return '0x'+_0x5a2718[_0x2bf0('0x9')](0x10);}[_0x2bf0('0x3b')](){let _0x18869d={};for(let _0x509876 in this[_0x2bf0('0x11')][_0x2bf0('0x37')]){let _0x1f1c56=this[_0x2bf0('0x11')][_0x2bf0('0x37')][_0x509876][_0x2bf0('0x3c')];let _0xaef7ca=ASSIMILATE_FREQUENCY*Math[_0x2bf0('0x29')](Game[_0x2bf0('0x8')]/ASSIMILATE_FREQUENCY);_0x18869d[_0x509876]=this[_0x2bf0('0x3a')](_0x509876,_0x1f1c56,_0xaef7ca);}Segmenter[_0x2bf0('0x3d')](ASSIMILATOR_SEGMENT,_0x2bf0('0x23'),_0x18869d);}[_0x2bf0('0x3e')](){let _0xd6fe24=Segmenter[_0x2bf0('0x3f')]();if(_0xd6fe24){let _0x4c478f=_[_0x2bf0('0x40')](_[_0x2bf0('0x41')](_0xd6fe24[_0x2bf0('0x42')],0x1));if(_0x4c478f){let _0x2dc64d=_[_0x2bf0('0x40')](_[_0x2bf0('0x41')](Overmind[_0x2bf0('0x43')][_0x2bf0('0x44')],0x1));let _0x2c4abb={'U':MY_USERNAME,'C':this[_0x2bf0('0x18')]()};let _0x41c6f4=PHONE_HOME_HEADER+JSON[_0x2bf0('0x1a')](_0x2c4abb);_0x2dc64d[_0x2bf0('0x45')](RESOURCE_ENERGY,TERMINAL_MIN_SEND,_0x4c478f,_0x41c6f4);}}}[_0x2bf0('0x46')](){switch(Game[_0x2bf0('0x8')]%ASSIMILATE_FREQUENCY){case T-0x8:this[_0x2bf0('0x2d')]();break;case T-0x7:Segmenter[_0x2bf0('0x47')](ASSIMILATOR_SEGMENT);break;case T-0x6:let _0x44a468=_[_0x2bf0('0x48')](Overmind[_0x2bf0('0x43')][_0x2bf0('0x49')],_0x45ee89=>_0x45ee89[_0x2bf0('0x4a')][_0x2bf0('0x4b')]);Segmenter[_0x2bf0('0x3d')](ASSIMILATOR_SEGMENT,_0x2bf0('0x42'),_0x44a468);Segmenter[_0x2bf0('0x4c')](ASSIMILATOR_SEGMENT);break;case T-0x5:break;case T-0x4:this[_0x2bf0('0x2f')]();break;case T-0x3:Segmenter[_0x2bf0('0x47')](ASSIMILATOR_SEGMENT);break;case T-0x2:Segmenter[_0x2bf0('0x47')](ASSIMILATOR_SEGMENT);this[_0x2bf0('0x3b')]();break;case T-0x1:this[_0x2bf0('0x25')]();break;case 0x0:this[_0x2bf0('0x28')]();break;default:break;}}[_0x2bf0('0x4d')](){switch(Game[_0x2bf0('0x8')]%ASSIMILATE_FREQUENCY){case T-0x6:Segmenter[_0x2bf0('0x4e')](MUON$2,ASSIMILATOR_SEGMENT);break;case T-0x5:this[_0x2bf0('0x3e')]();break;case T-0x4:break;case T-0x3:break;case T-0x2:Segmenter[_0x2bf0('0x4e')](MUON$2,ASSIMILATOR_SEGMENT);break;case T-0x1:this[_0x2bf0('0x25')]();break;case 0x0:this[_0x2bf0('0x28')]();break;default:break;}}[_0x2bf0('0x4f')](){if(MY_USERNAME==MUON$2){this[_0x2bf0('0x46')]();}else{this[_0x2bf0('0x4d')]();}}}

Suggested fix (optional):

Not sure. Also not sure if it is causing any other issues in the script, as the obfuscated code make debugging all but impossible. My resulting dist obfuscated code compiled from the repository is significantly different then the releases here on GitHub.

Other information:

  • Overmind version: 0.5.0

Invasion defense flag BUG? RC2

Description of issue:

Invasion defense flag blocks spawn, to spawn screeps ( miners, workers, guard squad) on low lvl rc (2). If flag removed spawn will start working again, until flag is placed again.

Steps to reproduce:

Spawn in a room , where other players screeps are passing by

Error message:

"N/A"

// Console output:

Other information:

  • Overmind version: {0.2.0 - compiled 2018. May.9 - 11.00 AM ( Cest)

Pioneers getting hurt in SK rooms on their way to new baby colony

Issue summary

Description of issue:

When claiming a new room on the other side of SK rooms, the creeps originating from the supporting rooms can be hurt on the way thru the SK rooms, such that they arrive w/o WORK parts.

Steps to reproduce:

Establish a new colony on the other side of a few SK rooms, ensuring the path thru them leads the support creeps to get attacked by SKs

Error message:

// Console output:

Other information:

  • Overmind version: 0.5.0

Instructions to grafana install

Installation of Grafana5 with Google compute:

  • #Step1: Getting ready.

Create a google compute engine.
Set up an f1 - micro ubuntu or debian compute engine. This is the cheapest engine, but will do the work. Leave every setting on default. I personaly used ubuntu. I think the only difference is, that ubuntu comes with git installed.

Create a screepspl.us account.

Note: You will need your screeps auth token(provided by screeps.com), and screepspl.us token(generated at account creation).

  • #Step2: Connect to it via SSH.

I used SSH in a browser window. ( dropdown menu)

  • #Step3: Install git, node js, node-agent.

I personaly tried both Node v8, and v10. Both working.

In SSH terminal do the followings:

sudo apt-get install -y git - for Git

curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash - - for NodeJs installer

sudo apt-get install -y nodejs - NodeJs

git clone https://github.com/ScreepsPlus/node-agent.git - Cloning repository

cd node-agent - Entering the node-agent directory

npm install - Npm

  • #Step4: Configuring and testing node-agent script.

In SSH terminal do the followings

cp config.js.sample config.js - Creating config.js from config.js.sample.

nano config.js - Editing newly created config.js.

Edit config.js and use Your credentials. You have to use 2 different tokens, one provided from screeps account, and the other from screepsplus account. Do NOT forget to remove last line.

When You are done with editing do the following in SSH Terminal:

node app.js Test the node-agent script.

You shall see something like this:

Pushing stats

Result: {"ok":1,"ts":1529157913,"format":"json"}

If it has errors see the DEBUG section.

Press CTRL+C to stop the script.

  • #Step5: Setting Your script to run in background.

For this I personally used TMUX.

In SSH terminal do the followings:

tmux - Creating a tmux instance

cd node-agent - Entering Your script directory

node app.js - Starting Your script. As a result You shall see the same as in #STEP4.

Press CTRL+B and after press D. You detached from tmux. Tmux will keep to run in background.

In SSH terminal write:

w - This will list the users logged in, You shall see the tmux session also.

Example:

14:18:00 up 16:02, 2 users, load average: 0.00, 0.00, 0.00

USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT

boti pts/0 tmux(7622).%0 00:53 13:24m 12.74s 12.71s node app.js

boti pts/1 80.167.78.203 12:55 0.00s 0.05s 0.00s w

DO NOT START THE SCRIPT MULTIPLE TIMES!

Now feel free to close the SSh Terminal, because the script runs in the background. Every time You come back to Your server You can chack the TMUX status by typing the following in the SSH terminal:

tmux attach

  • #Step6:

Log in to your screepspl.us account. IMPORTANT!!!: We use grafana5.

Import Overmind.JSON. Change the username from dropdown to Your screepspl.us username.

Enjoy the graphs!

#########DEBUG########

In steps 1,2 and 5 You shall not run in errors.

In step 3 in case You have chosen ubuntu, You will have a warning, at git is already Installed. Ignore it.

In step 4 You may face configuration errors, check Your config file after tokens.

In step 4 You may also face this error:

Error: Rate limit exceeded, retry after 9222721ms or disable rate limiting

Make sure: You have only 1 instances of node-agent script running! Your screeps auth key is not used elsewhere. Do not create new auth tokens as I did, it is just a waste of time, because the couldown is set on You account globally. Simply wait until that timer expires.

In step 6 You may face errors from screepspl.us like this one:

Datasource named ScreepsPlus-Graphite was not found

Check You datasource list in the configuration menu. If it is empty fill the ollowing fields:

Name: ScreepsPlus-Graphite

Type: Graphite

HTTP/URL: https://screepspl.us/grafana/carbonapi

HTTP/Access: Direct

Graphite details/Version: 1.1x

Checkboxes: Default, AUTH/With credentials.

This script is not owned by me, I just made this detailed guide, because I faced every mentioned problem while I tried to set up grafana. I hope it will be helpful for some users, with 0 knowledge to servers.

Credits goes to:

  • users from #overmind slack channel for helping and testing.

  • ags131 for making grafana and support questions.

  • bonzAI instructions.

Suggestion

Description of Suggestion:

Atm, our screeps are using resources to build and maintain containers , near minerals, and also they have an extra bodypart (carry), which can be removed, so we spare some minerals.
I think would be considerable to get rid of the extra body part, and containers.
Suggestion:
We can make miners , without carry bodypart, which empties the extracted minerals to the ground, making a stockpile. Our carrriers can pick up from there. ( saw in TooAngels AI )

Please don`t take this suggestion as an offend. I am glad to use this Ai as it is.
Thanks for your hard work, and effort.

Machinarium

Shoud I ignore the TSlint?

Issue summary

When I open this code with WebStorm, here are alot of TSlint Error nearly every line.
image

Description of issue:

Steps to reproduce:

Error message:

// Console output:

// Offending line:

Suggested fix (optional):

Other information:

  • Overmind version: {found in package.json or by typing info() into console}
    • Commit hash: {optional, but helpful: include the commit hash (if known)}

Overmind aggressively claims outposts, removes avoid:true

Issue summary

Overmind aggressively claims outposts

Description of issue:

I've been attempting to keep friendly with the big neighbors by not taking their outposts, going as far to set avoid: true in the room memory to prevent pathing, which in turn, should prevent the outpost from being created based on the code. However, it seems to clear that after a while and reclaims the room as an outpost.
One of the room's I'm having this issue with is shard2 E2N46

Steps to reproduce:

Set Memory.rooms.<room>.avoid = true, check later and see it cleared.
Overmind chooses the room as an outpost, and ends up fighting for it.

Suggested fix (optional):

Allow blacklisting a room from being used as an outpost

Other information:

  • Overmind version: 0.5.2
    • Commit hash: 0e38a88 (with a minor edit to remove the pre-scouting requirement of ExpansionPlanner)

Road maintenance outside outpost rooms

Issue summary

Roads aren't maintained outside rooms marked with an outpost flag. Since outpost directive includes reserving overlord, should add a check that outpost room has controller before attaching ReservingOverlord to the OutpostDirective.

Script execution timed out when claiming a new room

Issue summary

Description of issue:

Found this issue in latest round of bot arena. Claiming a new room causes timeouts after pioneers have occupied a room for several ticks.

Error message:

Script execution timed out.
    at wishlist (main:6754:9)
    at init (main:21859:14)
    at try (main:22811:41)
    at try (main:22573:17)
    at init (main:22811:25)
    at init (main:23097:23)
    at main (main:23561:14)
    at wrap (main:1400:16)
    at loop (main:23570:21)

drone / worker logic addition

Feature request summary

drone / worker logic addition:

If resource is on ground && source empty && container near, pickup resource, place in container.

This is to prevent decay.

"Snatchers" new creep characteristic request.

Feature request summary

It is often that one sees containers in reserved / unclaimed rooms of other placers, often with a "harvester" creep or a "miner" mining the sources. These containers are often full, and transport is inefficient in distant colonies in other code scripts. This is a proposal to introduce a new creep type that could aid in war, seige and in general resource collection.

While energy is not hard to come by, it would be much harder to destroy an enemy if all of your outposts were being raided.

This creeps name is the "snatcher", its logic works in conjunction with the "scout" class type.

Scouts search rooms for containers, and the "value" of that container based on smart things you do and the energy it contains. If the total value reaches a threshold on distance, a snatcher is spawned to travel there and steal the energy from the hopeless harvesters.

It is essentially an offensive lorry / transport.

Spawn blocking

Combat feature - THE MIGHT OF THE SWARM

Motivation:

Would be useful against safe mode rooms without towers, or with empty towers. Would work as a swarm.

Description:

In some cases the safe modes are saving our opponents/enemies from us, forcing us to wait until safe mode Ends. The swarming tactic would block the spawns, preventing our opponent from spawning new creeps, forcing him/her to not to be able to recuperate. The swarm creeps could have only 1 part - moving. So they would be cheap, and effective. They would work as a counter-safe mode team.
The swarm in work: They will occupy every spot near the enemy spawn, disabling the spawning. Numbers may vary / they will need constant reinforcements.

Related issues:

Creeps do not avoid portals during pathing

Issue summary

Creeps can path into portals which will break pathing.

Description of issue:

Creeps will path into portals which can cause them to continue movement in a different room.

Steps to reproduce:

Error message:

// Console output:

// Offending line:

Suggested fix (optional):

Add portal entrances to be ignored in costMatrix during default pathing.

Other information:

  • Overmind version: {found in package.json or by typing info() into console}
    • Commit hash: {optional, but helpful: include the commit hash (if known)}
      v0.5.0

Feature Directive Flag(s) Upgraders/Workers

Feature request summary

Possibly the ability to place a flag which would allow for more upgraders/workers to spawn and start working in a particular location.

Motivation:

To be able to control how fast you can upgrade your RCL and ramparts on the fly.

Description:

Ability to place/remove directive flag as necessary to cause the spawn to start spawning more workers/upgraders to move to said location and begin work to speed up process. Might need two separate flags one for each. The ability to remove the flag would cause the spawner to go back to normal so if you notice your resources declining you could stop the spawning.

Related issues:

Not sure if it's an issue I just notice towards the later RCL lvls that you become limited to only about 2 upgraders and 1 worker as of early RCL lvls you have a swarm of about 5+.

TypeError: Cannot read property 'store' of undefined

Description of issue:

TypeError: Cannot read property 'store' of undefined
Does not seem to effect bot

Line 163 of TerminalNetwork.ts

Steps to reproduce:

Compile latest release

Error message:

// Console output:

main:23062
        let terminalNearCapacity = _.sum(terminal.store) > 0.9 * terminal.storeCapacity;
                                                  ^

TypeError: Cannot read property 'store' of undefined
    at TerminalNetwork.sellExcess (main:23062:51)
    at TerminalNetwork.run (main:23189:14)
    at _Overmind.run (main:24036:3343)
    at main (main:24126:14)
    at Object.wrap (main:6038:12)
    at Object.loop (main:24132:21)
    at __mainLoop:1:52
    at sigintHandlersWrap (vm.js:98:15)

Other information:

  • Overmind version: 0.3.1
    • Commit hash: 030726216cb195f4b0c04ea44edcb044f095956f
  • Issue is with dependency: Yes?

RCL3 Bugs

Issue summary

Script shall not check after rcl level, instead it shall check after max energy at lower rc s.

Description of issue:

Claiming , and guarding would work better, if are dependent to max energy. Both claiming and guarding blocks the colony from spawning at RCL3, without extensions.

Steps to reproduce:

Error message:

// Console output:

Other information:

  • Overmind version: {you can find this in package.json}
    • Commit hash: {optional, but helpful: include the commit hash (if known)}

Crash after claim.

Issue summary

Crash report

Description of issue:

The script is crashing right after claiming a new colony. I had this issue twice in a row. I am not sure if this affects players with multiple rooms or not.
Beginning: I respawned in a new novice zone. I waited until my rcl hit lvl 3, and had enough extensions to create a claimer. I put a purple/grey flag in a nearby room. As soon as the claimer arrived to the room, and took it, the script crashed, with the following errors**( First error)**.

I couldn`t resolve the crash, tried loading older versions , other scripts, nothing helped, so I decided to unclaim the room( the script was still crashing). After unclaiming the room, I had the following crash errors (second error):

Nothing helped, so I decided to respawn. I followed exactly the above steps again, and the script crashed again, at same point, with the same error messages.

Steps to reproduce:

  1. Respawn( to make sure You have only 1 room)
  2. Wait until rc3 is built , and extensions are built
  3. Try to colonize a room.

Error message:

First error:

TypeError: Cannot read property 'lookForStructure' of null at Colony.registerUtilities (main:18803:41) at new Colony (main:18692:14) at _Overmind.registerColonies (main:21719:1605) at _Overmind.build (main:21719:2220) at main (main:21851:18) at Object.wrap (main:2271:12) at Object.loop (main:21863:21) at __mainLoop:1:52 at __mainLoop:2:3

Second error:

[06:13:22][shard2]Error: Could not access room W21S56 at Object.findClosestByRange (<runtime>:14879:19) at Colony.registerUtilities (main:18799:39) at new Colony (main:18692:14) at _Overmind.registerColonies (main:21719:1605) at _Overmind.build (main:21719:2220) at main (main:21851:18) at Object.wrap (main:2271:12) at Object.loop (main:21863:21) at __mainLoop:1:52

// Console output:



### Other information:
- Overmind version: *0.4.1*
    - Commit hash: *Latest commit 700139e*

Unnecessary containers

Issue summary

Description of issue:

Overmind fails to remove containers after they are no longer necessary, resulting in only one container in the bunker

screenshot-20180826144725-923x1068-modified

Steps to reproduce:

This happens sometimes in autonomous modus

Error message:

[2:51:49 PM]WARNING 924305 W6N1: couldn't create construction site of type "container" at [W6N1, 30, 30]. Result: -14
[2:51:50 PM]WARNING 924307 W8N3: couldn't create construction site of type "container" at [W8N3, 34, 7]. Result: -14
// Offending line:

Suggested fix (optional):

Some logic to remove energy containers if there is a link adjacent might be enough

Other information:

  • Overmind version: git

Tune the room selection algorithm

Feature request summary

Motivation:

On a private testserver w/o other bots, Overmind has 3xO and 3xH at GCL6. It could have been better balanced.

These rooms are the standard private server setup, if one wants to reproduce the behavior. Initial room W8N6.

screenshot-20180826150321-1376x1301modified

Description:

Related issues:

Colony freezes if creep on construction site

Description of issue:

If a priority construction site is generated under a worker creep (maybe another type?), the entire colony will freeze because of -7 error on building.

Steps to reproduce:

Have a room reach level 3 while a creep is standing where a tower construction site is placed. All workers fail at building which freezes the colony but prevents the worker from moving off the site.

Problem fixed after moving the offending creep off the position.

Error message:

N/A
// Console output:
N/A

Other information:

  • Overmind version: 0.3.1
  • Issue is with dependency: no

[BUG] Spams attempted boost while spawning

Issue summary

Description of issue:

I commented here: d54e4ed#comments

Console is spammed as spawner tries to boost screep, because it cant during spawning.

Steps to reproduce:

Spawning upgrader, announces it wants to boost, then spams every tick with boosting: error code -7, until finally the creep spawns and it is success with code 0.

Error message:

// Console output:
[2:30:20 PM][shard3]INFO    2992265 Lab@[W24N19, 14, 31]: boosting creep [upgrader_0] with XGH2O! Response: -7
[2:30:21 PM][shard3]INFO    2992266 Lab@[W24N19, 14, 31]: boosting creep [upgrader_0] with XGH2O! Response: -7
[2:30:23 PM][shard3]INFO    2992267 Lab@[W24N19, 14, 31]: boosting creep [upgrader_0] with XGH2O! Response: -7
[2:30:26 PM][shard3]INFO    2992268 Lab@[W24N19, 14, 31]: boosting creep [upgrader_0] with XGH2O! Response: -7
[2:30:29 PM][shard3]INFO    2992269 Lab@[W24N19, 14, 31]: boosting creep [upgrader_0] with XGH2O! Response: -7
[2:30:32 PM][shard3]INFO    2992270 Lab@[W24N19, 14, 31]: boosting creep [upgrader_0] with XGH2O! Response: -7
[2:30:34 PM][shard3]INFO    2992271 Lab@[W24N19, 14, 31]: boosting creep [upgrader_0] with XGH2O! Response: -7
[2:30:38 PM][shard3]INFO    2992272 Lab@[W24N19, 14, 31]: boosting creep [upgrader_0] with XGH2O! Response: -7
[2:30:40 PM][shard3]INFO    2992273 Lab@[W24N19, 14, 31]: boosting creep [upgrader_0] with XGH2O! Response: -7
[2:30:43 PM][shard3]INFO    2992274 Lab@[W24N19, 14, 31]: boosting creep [upgrader_0] with XGH2O! Response: -7
[2:30:46 PM][shard3]INFO    2992275 Lab@[W24N19, 14, 31]: boosting creep [upgrader_0] with XGH2O! Response: -7
[2:30:48 PM][shard3]INFO    2992276 Lab@[W24N19, 14, 31]: boosting creep [upgrader_0] with XGH2O! Response: -7
[2:30:54 PM][shard3]INFO    2992278 Lab@[W24N19, 14, 31]: boosting creep [upgrader_0] with XGH2O! Response: 0
// Offending line:
https://github.com/bencbartlett/Overmind/commit/d54e4ede6e918acefd7fe99339bcfe02a16c8666

Suggested fix (optional):

d54e4ed#comments

Other information:

  • Overmind version: {found in package.json or by typing info() into console}
    • Commit hash: {optional, but helpful: include the commit hash (if known)}

Version: Overmind v0.5.1
‣ Checksum: 0x324d37c5b55

Pioneers and new colonies

Feature request summary

Atm a fresh RC1 will begin starting the production of a queen, than drones, we could switch them, to spare some ticks.
Pioneers: With the current settings we will have 4 pioneers building up a new spawn, if they are finished they are split equally between drones and workers. Would be a faster method, to split them as 1 queen, and 3 drones, so we can give a kickstart to the fresh colony.

Motivation:

To speed up low rc s catch up mechanism for fresh spawns, where is no opportunity to incubate.

Description:

Related issues:

Road-planner odd behavior

Issue summary

Roadplanner is planning multiple road layouts.

Description of issue:

Roadplanner is planning multiple road layouts. One for the real bunker location, and one for the suggested bunker location. Idk, if its a general bug, which happens at everyone, or just 1 of my rooms has it. All my other rooms has their flags at the suggested location. If I open the roomplanner it is clearly visible the suggested room bunker and road layout. The roads are counting as errant structures, and they can be demolished by the command destroyErrantStructures, but they get rebuilt. Outposts connected to this room are also affected by the same way.

Steps to reproduce:

Do not place Your bunker flag where its suggested.

Error message:

// Console output:

// Offending line:

Suggested fix (optional):

Other information:

‣ Version: Overmind v0.5.0
‣ Checksum: 0x40008107590
‣ Assimilated: (not yet implemented)
‣ Operating mode: semiautomatic
screenshot 2018-09-01 at 23 40 51
screenshot 2018-09-01 at 23 41 12
screenshot 2018-09-01 at 23 44 03

Haul flags get removed without hauling complete

Issue summary

If a haul flag is placed on an abandoned terminal or storage it gets removed before the available resources are removed.

Description of issue:

If a haul flag is placed on an abandoned terminal or storage it gets removed before the available resources are removed.

Steps to reproduce:

Place a haul flag on an abandoned terminal and wait a while, the flag will be removed

Error message:

n/a

// Offending line:

	if (_.sum(this.store) == 0 && this.pos.isVisible) {
		this.remove();			
	}

Suggested fix (optional):

This makes it behave differently, but this has stopped the flag being removed for me

	if (this.totalResources == 0) {
		log.info(`Removing ${this.name} - resources exhausted.`);
		this.remove();
	} 

Other information:

  • Overmind version: {found in package.json or by typing info() into console}

‣ Version: Overmind v0.5.2
‣ Checksum: 0x3f4a8c27850
‣ Assimilated: No (clearance code: null) [WIP]
‣ Operating mode: automatic

Workers sit idle at low RCL levels

Description of issue:

Early on in a new room, specifically during a fresh respawn, the basic worker_# creeps sit idle for many ticks, sometimes their entire lifecycle. Construction sites exist for roads exist, but workers are not assigned tasks. Sometimes some of the workers will have a task and others will sit idle.

Steps to reproduce:

Respawn into a fresh room. Set up roomPlanner flags. Finalize. Wait for construction sites to appear and worker_# creeps to begin spawning.

Error message:

N/A

// Console output:
N/A

Other information:

  • Overmind version: 0.2.0
    • Commit hash: {Please include the commit hash if known}
  • Issue is with dependency: No

The screenshot attached is a fresh respawn; miners have recently completed their first container, and workers began spawning. All of them sat idle at the spawner, not being assigned a task.

https://imgur.com/a/doKOm7V

TypeError

Issue summary

Description of issue:

Type error that does not seemingly influence operations

Steps to reproduce:

It happens when RCL increases and new extensions are placed. May be happening whenever an extension is finished.

Error message:

// Console output:
TypeError: Cannot read property 'store' of undefined
    at isStoreStructure (main:3216:16)
    at TransportRequestGroup.getInputAmount (main:11503:13)
    at TransportRequestGroup.requestInput (main:11456:32)
    at _.forEach.struct (main:10629:75)
    at arrayEach (<runtime>:17303:13)
    at Function.<anonymous> (<runtime>:19359:13)
    at Hatchery.registerEnergyRequests (main:10629:11)
    at Hatchery.init (main:10809:14)
    at _.forEach.hiveCluster (main:16199:65)

Other information:

  • Overmind version: 0.5

[Conversation] Assimilation method

Let me preface this by saying this is neither a bug report nor feature request. I am intrigued by the idea of swarm intelligence in screeps, so much so that last year I wrote a non-technical whitepaper on the idea of practical emergence in screeps.
Evanito/screeps-emergence#1

Since you will be the undisputed leader of the swarm, some of the topics won't be relevant. What I do think will interest you is where I discuss communication methods.

Specifically, sending 100 energy for a terminal transaction is an acceptable price to pay for a one time message. However, when you are doing perhaps dozens of players every several thousand ticks, it will be cumbersome.
The link above discusses the Public Memory Segment as an additional method of async communication.

Feel free to use any of these ideas, I appreciate your project and love to help out when I can.

shard3 W11N18 breaks Overmind logic

Issue summary

Description of issue:

Manually placing a flag at RCL3 is throwing off an undefined type error - this is using the current master compilation. I double checked the code for savedSources (which the memory.room.src property is set to) and it appears to be exactly the same as in the 5.2.1 release; I'm not sure if that version shares the same bug. On a possibly related note, the overseer hasn't automatically placed even a single outpost on any surrounding room, so it's possible the entire method for this is broken and I only see that error because I placed the flag manually.

Steps to reproduce:

Compile current master
spawn in a fresh room
get to RCL3 and manually place a purple/purple outpost flag.

Error message:

// Console output:

[2:31:21 AM]
[shard3]
INFO    4853168 Colony W11N18 assigned to Flag1.
[2:35:35 AM]
[shard3]
TypeError: Cannot read property 'src' of undefined
    at _.sum.roomName (main:25104:86)
    at arraySum (<runtime>:17624:20)
    at Function.sum (<runtime>:27925:11)
    at Overseer.handleNewOutposts (main:25104:28)
    at Overseer.placeDirectives (main:25137:22)
    at Overseer.run (main:25228:18)
    at _Overmind.run (main:25322:7133)
    at main (main:25716:14)
    at Object.wrap (main:969:16)

<!--- Please copy the line from main.js causing the error. This will be in the second line of the traceback --->

// Offending line:

let numSources = _.sum(colony.roomNames, roomName => (Memory.rooms[roomName].src || []).length);

Suggested fix (optional):

Other information:

  • Overmind version: 0.5.2 (compiled master, not public release)

Method `Game.map.getTerrainAt` is deprecated

Issue summary

Since the last update, every tick the game complains:
Method Game.map.getTerrainAt is deprecated and will be removed. Please use a faster method Game.map.getRoomTerrain instead.

Description of issue:

Steps to reproduce:

Error message:

// Console output:

// Offending line:

Suggested fix (optional):

Other information:

  • Overmind version: {found in package.json or by typing info() into console}
    • Commit hash: {optional, but helpful: include the commit hash (if known)}

CombatOverlord incorrectly looking at this.colony for SpawnGroup boosting

Issue summary

Creeps belonging to a CombatOverlord aren't looking at the proper colony when trying to boost

Description of issue:

Creeps belonging to CombatOverlords are creating a SpawnGroup but then getBoostLab and handleBoosting are looking at Overlord.colony instead of the colony the creep is spawning in for boosts.

Steps to reproduce:

Create a combat directive requiring boosts (Swarm Destroyer) in range of multiple, owned colonies that would cause different colonies to all spawn creeps for the directive.

Error message:

// Console output:

// Offending line:

Suggested fix (optional):

in getBoostLabFor():
//let closestLab = creep.pos.findClosestByRange(this.colony.labs);
let closestLab: any;
if (Overmind.colonies[creep.pos.roomName])
closestLab = creep.pos.findClosestByRange(Overmind.colonies[creep.pos.roomName].labs);

in handleBoosting():

let boostColony = Overmind.colonies[boostLab.pos.roomName];
if (boostColony) {
//if (this.colony.evolutionChamber.queuePosition(creep, boostLab) == 0) {
if (boostColony.evolutionChamber.queuePosition(creep, boostLab) == 0) {

Other information:

  • Overmind version: v0.5.0

[BUG] [MAJOR] CPU Reset Routine doesn't work, gets stuck.

Issue summary

Overmind gets stuck looping
WARNING 3139967 CPU bucket is critically low (13)! Starting CPU reset routine.

Description of issue:

When Overmind is running out of CPU, it tries to go into CPU reset routine. It never actually goes into it (?) and just tries again every tick, draining CPU the whole time.
Occasionally I see that it used the max CPU time limit several ticks in a row, and that's how it gets to a low number quickly.

After manually pausing the script until enough CPU is saved up, I get:
INFO 3140278 Operation suspended until bucket recovery. Bucket: 5520/10000
which seems to be normal behavior

This is on Shard 3

Steps to reproduce:

This has occurred twice:

  • I was tired of a colony that was in "terminal evacuate" mode for some reason, so I unclaimed it. Overmind immediately spent a lot of CPU doing who knows what (saw the room builder flash for a tick) and got stuck at low CPU (~200, decreasing slowly.) Saved by flushing memory and errant flags, and bypassing execution until bucket was at a safe level.
  • Now that I had a new room slot, Overmind colonized another room while I was away. Spawn and some extenders were built and RCL was 2, so it likely didn't happen immediately. Saved by bypassing execution until bucket was at a safe level.

Error message:

// Console output:
WARNING 3139967 CPU bucket is critically low (13)! Starting CPU reset routine.
WARNING 3139968 CPU bucket is critically low (11)! Starting CPU reset routine.
...etc
After manually pausing the script until enough CPU is saved up:
INFO    3140278 Operation suspended until bucket recovery. Bucket: 5520/10000
// Offending line:

Suggested fix (optional):

Other information:

  • Overmind version: v0.5.1
    • Commit hash:

Ill placed bunker

Issue summary

Description of issue:

Sometimes bunkers are placed too close to the exits, resulting in Invaders being able to get inside the bunker while at lower RCLs and first triggering safe mode and then triggering EVAC when safe mode is on cooldown. This happens even if there is room for the bunker further from the exit.

Steps to reproduce:

This has happened in several rooms on my private server

Error message:

screenshot-20180826145947-717x692

// Offending line:

Suggested fix (optional):

Attempting to place the bunker further from the edge, if it contains an exit within the planned ramparted area.

Other information:

  • Overmind version: git
    • Commit hash: *68cab1b30ed40ecc82780da17469eca342379f6a

Colonizing fails because room is owned

Issue summary

When Overmind tries to colonize a new room, colonization fails

Description of issue:

Overmind decides to colonize a room, creates a new flag and a directive, and sends pioneers. As soon as any unit reaches the room, Overmind removes the flag, stating that a room is already owned. I tried reserving the room and then manually adding the colonize flag, the same happens.

Steps to reproduce:

  • Let Overmind decide to colonize a room or flag room for colonization manually
  • Wait till any creep reaches the room
  • Within 10 ticks the flag and the directive are removed

Error message:

// Console output:

Room W14N38 selected as next colony! Creating colonization directive.
Removing Colonize directive in W14N38: room already owned by another player.

Suggested fix (optional):

Other information:

  • Overmind version: v0.5.0

Overmind prioritizes creating a Queen over bootstrapping a new spawn

When starting fresh with a new spawn, Overmind creates a queen as its first step.

Description of issue:

When starting fresh with a new spawn, Overmind creates a queen as its first step. The behavior I would expect from the documentation is for the room's colony to enter emergency recovery mode with a DirectiveBootstrap.

Steps to reproduce:

Start a fresh private server. Spawn and load up Overmind. Overmind will immediately begin spawning a Queen.

Error message:

N/A

Other information:

Collision detected on all bunker placements within the room

Feature request summary

Motivation:

This could be consider possibly a bug in the automatic mode, but could also be a feature depending on how you wanted things to work....

The bunker RoomPlanner gets initiated on placement of the spawn. This is fine, but there are some maps that a bunker placement won't do.

Description:

Some maps have too many walls in the terrain in order to plan such a big design. It would be nice to factor in the initial walls in the terrain to override some of the placements of the bunker or adjust/remove the location entirely with a suggested manual replacement.

When starting out in a fairly secluded map terrain it just isn't possible to generate that big of a Planned session. The work around to this is switch over to semi-automatic or manual mode and place the flags that you need for the directives, then close the planner and switch back over to automatic/semi-automatic depending on how the user wants to play.

Related issues:

Not published as an issue, but could be depending on the user.

No check for blocking structures when claiming

Issue summary

Description of issue:

There is currently no check for structures which are blocking the controller of a room that you are trying to claim. Claimers should be accompanied by guards or dismantlers if this is the case.

Collection of mineral levels

Feature request summary

Collect stats of each mineral and energy in the colonies + grafana dash panel.
I'm sure you are already calculating these levels for the terminal network equalize - just needs stat logging

Motivation:

I would like to see the overall levels of resources.

Description:

Stat collection of the levels of minerals and energy in each colony

Related issues:

Avoidance flags and permawalls

Feature request summary

There should be flags to indicated rooms to be avoided.

I am having a problem where scouts are trying to enter rooms that are walled off by novice area.

Motivation:

Description:

Related issues:

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.