Overmind 0.5.1
Pre-release
Pre-release
This patch changes the architecture of Overmind to be much more CPU efficient by introducing a cache-friendly refresh()
phase to the main loop. See this blog post for more details. Additionally, the Visualizer
system has been rewritten, and prelimiary support for assimilation and swarms has been added.
Added
- Huge persistence update: much of the Overmind architecture now persists on global between ticks! This saves a ton of CPU that was previously used toward garbage collection.
- The global
Overmind
object is now rebuilt every 20 ticks; in the meantime,refresh()
is called - Colonies, HiveClusters, Directives, Overlords, and Zerg are also persistent
- Parsed memory is saved each tick and restored the following tick to avoid
JSON.parse()
costs - You can expect massive CPU savings, along with decreased CPU variabiity from this update
- The global
- Added caching methods
$.set()
and$.refresh()
- Lots of new content added to the
Visualizer
!- Overmind logo now gets drawn in upper left corner
- This was a fun little project to do in Mathematica; I made a curve simplification algorithm to look at an image and give the minimum number of points to describe its perimeter within a given tolerance (those are all the hard-coded arrays in
logos.ts
)
- This was a fun little project to do in Mathematica; I made a curve simplification algorithm to look at an image and give the minimum number of points to describe its perimeter within a given tolerance (those are all the hard-coded arrays in
- CPU, bucket, and GCL meters drawn
- Updates to colony creep count visuals
- Displays bar graphs for command center and hatchery statistics
- Overmind logo now gets drawn in upper left corner
- New
Segmenter
module manages asynchronous memory segments - Added some under-the-hood content for assimilation
- Completed the "key exchange protocol" that the assimilator uses to periodically validate codebases
- Preliminary support for formation-based movement and pathfinding using
Swarm
s- Added behavioral locks to prevent usage of this feature for non-assimilated codebases
Changed
- Improvements to
RangedDefenseOverlord
which utilize some of the new combat logic developed for SK mining - Queens now are prespawned 100 ticks in advance of when they are needed (up from 50) until there are multiple spawns in the room
- Tweaks to bootstrapping
- Triggers if there is no queen and not enough energy to spawn a new one, regardless of presence of miners
- Will now reassign a transporter to become a queen if one is available
- CPU improvements
Colony.registerRoomObjects
now uses more caching and is less expensive- Improvements to
MiningSite
,ExtractionSite
, andUpgradeSite
to make them more CPU friendly
- Separated
Overlord
abstract class intoOverlord
andCombatOverlord
classes - Standardized creep setups and role names into a single library for greater consistency and exchangeability
- Boosts are now assigned by overlords in the constructor phase by passing a
boostWishlist
option in thezerg()
andcombatZerg()
methods - Improvements to destroyer pairs
- Better timeout functions for terminal state directives
- Changes to flag color codes and directory structure to make directive types more consistent:
- Changed primary color classifications:
- Red: offsensive combat (previously all combat)
- Blue: defensive combat (new)
- Yellow: resource collection and transport (previously logistics)
- Brown: terminal state directives (new)
- Specific color code changes:
- Guard: red/blue -> blue/blue
- Invasion defense: orange/red -> blue/purple
- Evacuate terminal state: yellow/red -> brown/red
- Emergency terminal state: yellow/orange -> brown/orange
- Rebuild terminal state: yellow/brown -> brown/yellow
- New console method will assist in this migration:
removeErrantFlags()
removes all flags which do not match a directive color code
- Changed primary color classifications:
- Colonies now no longer have an
Overseer
property. The Overseer has been moved to theOvermind
and now handles all directives and overlords for all colonies- Overlords are now initialized and run in order of their priority
- Changed routine to deal with critically low CPU bucket. Reaching the critical bucket threshold suspends operation until the entire bucket has replenished. This avoids entering a bucket "limbo state" where extra memory parsing costs are ever-present, increasing the total cost of operations.
- Quick garbage collection is now explicitly called when the Overmind is re-instantiated
- Limits the number of owned rooms you can own on CPU-limited
shard3
to three- Adjustable value in
~settings.ts
; will implement a more sophisticated CPU-based limiter in future
- Adjustable value in
Fixed
- Bugfix with pioneer recharging behavior to include dropped resources in recharging options
- Bugfix for incorrectly initialized terminalNetwork memory not logging transfer costs correctly (#38, thanks @MaggNorway!)
- Various SpawnGroup bugfixes
- Fixed a bug which caused RoomPlanner to still demolish baby ramparts prematurely
- Fixed a bug where I forgot to add container-building capabilities to the new extraction overlords (derp)
- Fixed a bug which broke notification disabling for scouts (#48)
- Fixed a bug where 0.4.x -> 0.5.x version migration could overwrite the default signature on a fresh installation of Overmind, breaking worker behavior
- Replaced all uses of deprecated
Game.map.getTerrainAt
to use newGame.map.getRoomTerrain
method - Barriers now placed on center tile in bunkers (#59)
- Fixed an issue in testing assimilation status outside
shard2
(#57) - Fixed a bug where queens could get idle indefinitely at early RCL if minerals ended up in Hatchery battery
Removed
MiningSite
s andExtractionSite
s have been removed; their functionalities have been split among the mining/extraction directives and overlords