Overmind 0.4: "require('more-minerals')"
Pre-release"We require more minerals." Well finally, we now have them! This long-overdue release (the largest update to date by additions/deletions) adds fully automatic mineral mining, processing, trading, and boosting capabilities to Overmind!
Colonies now automatically start mining minerals once an extractor is built. Minerals are stored in the terminal and are transferred between colonies as needed for resource production. Excess minerals are sold on the market and once a player reaches a credit threshold (currently >10k credits), missing base minerals required for resource production are purchased from the market. Labs will automatically cycle through reaction queues to try to build up a stockpile of prioritized resources. When creeps request to get boosted, the necessary resources are transferred to the appropriate colony automatically, or, if the player has sufficient credits (>15k), they will be bought on the market if not present.
Although most of the planned combat features will be implemented in v0.5, this release also introduces a number of (primarily defensive) military improvements. A CombatIntel module has been added, containing methods for combat-related calculations. Ranged and melee defenders (now hydralisks and zerglings, respectively) have been improved and will now request boosts when sufficiently large invasions occur. Additionally, directives (placed automatically) have been added to handle nuke responses, building ramparts over affected structures, and terminal evacuation, transmitting all resources in a terminal to remote colonies just before a room is lost.
Finally, we now have a feature request template! If you have a suggestion for something you'd like added or changed to Overmind, feel free to submit a request there.
Added
- Added support for mineral mining and processing (finally)!
- Reaction cycles planned by the
Abathur
module, which makes decisions related to the global production of resources, guiding the evolution of the swarm- Module
Abathur
incompatible with pronouns
- Module
- New hiveCluter to manage boosting and mineral production:
EvolutionChamber
EvolutionChamber
is run by the colony manager and produces batches of resources as needed to meet a target amount- You might not see mineral production for the first few days while your colonies sell resources to gain sufficient market credits
- New hiveCluster for mineral mining:
ExtractionSite
(based on @rooklion's pull request #12)
- Reaction cycles planned by the
- Fully automatic support for creep boosting!
- Boosts are used when
Overlord.boosts[creepRoleName]
is set to a list of minerals - Some overlords, like
RangedDefense
, will automatically boost creeps when needed - Boosts will only be used if (1) you have the boosts already, (2) other colonies have a sufficient total amount, or (3) you have >15k credits with which to buy the compounds
- Boosts are used when
- RoomPlanner now includes automatic barrier planning
roomPlanner.barrierPlanner
uses a modified min-cut algorithm to compute the best location to place ramparts- Opening and closing the roomPlanner for a colony which already has walls will create duplicate walls. Use
destroyAllBarriers(roomName)
if you wish to get rid of your old barriers.
- New
TraderJoe
module with lots of built in market functions:- Labs will attempt to buy resources they need if there are sufficient (>10k) credits
- Sells excess resources on the market
- New directives, all placed automatically by colony overseer:
DirectiveNukeResponse
will automatically build ramparts using workers to block incoming nuke damageDirectiveAbandon
will evacuate resources from a terminal if overseer detects that the colony has been breached (also prevents terminal from receiving resources)
- Added flee response to miners in outpost rooms (EDIT: this functionality is still present, but has been disabled while I tune the sensitivity)
- Miners in colony rooms will also retreat to the safety of the controller if there is a large invasion happening
- Workers will no longer attempt to work in unsafe remote rooms
- Preliminary DEFCON system to classify colony safety levels; this will be expanded in the next (combat-focused) update
- Room signatures can now be changed via the console command
setSignature('newSignature')
- Added a behavioral lock in
Overmind.ts -> Overmind_obfuscated.js
which enforces that controller signatures must contain the string "overmind" (not case-sensitive)
- Added a behavioral lock in
- New melee defense overlord spawns zerglings in rooms with a sufficiently high rampart/walls ratio and defend against melee attacks
- Improvements to the ranged defense overlord, which now spawns hydralisks which have better pathing
- New
combatIntel
module, which contains an assortment of methods related to making combat-related decisions and calculations - Preliminary
roomIntel
module containing methods for serializing notable room features into memory - New
VersionMigration
system will automatically perform one-time changes to resolve backward-incompatible changes with new releases (does not work when migrating from versions prior to 0.3.0) - Added a feature request template and streamlined the existing issue and pull request templates
Changed
- Lots of under-the-hood improvements to the logistics system!
- You should see about a 60% reduction in CPU usage from
LogisticsNetwork
due to better internal caching - Tweaks to the predictive functions reduce the chance that transporters occasionally get stuck in an oscillatory pattern
- You should see about a 60% reduction in CPU usage from
- Refactored
TransportRequestGroup
to be more likeLogisticsNetwork
- CommandCenter (and EvolutionChamber) now submit resource requests via a shared
transportRequest
object
- CommandCenter (and EvolutionChamber) now submit resource requests via a shared
- Lots of under-the-hood memory tweaks:
- You should see about a 30% reduction in overall memory usage!
- Improved memory footprint of stats collection and shortened hiveCluster names in memory
Mem.wrap()
now initializes new properties to defaults within the target object (previously, would only initialize if target was undefined)
- Rewrote most of the manager overlord to account for the new resource production features
TerminalNetwork
now uses anequalize()
routine to distribute resources between colonies- Several creep role names have been renamed, resulting in a reduction of the number of unique names. For example, miners and the new mineral miners are now both called "drone"s
- CreepSetups moved to respective overlord; now are constant instances rather than extending classes
- Construction sites now time out after 50000 ticks and are removed
LogisticsGroup
renamed toLogisticsNetwork
- Lots of file renaming to be more concise
- Colonies now register a shorthand reference on
global
for console use: 'E4S41' and 'e4s41' both refer toOvermind.colonies.E4S41
- Updates to the Grafana dashboard:
- Several new logged statistics, including expansion ranking, miningSite usage/downtime, and energy income per tick by colony
- Fixed several null datasource issues and made some tweaks to GCL graphs suggested by @Coolfeather2
Fixed
- Fixed a longstanding bug with
RoomObject.targetedBy
returning incorrect results because of faulty cache updating when switching tasks - Made link allocation less buggy; hiveClusters now claim their link, preventing others from registering the same link
- Fixed a bug where the roadPlanner would plan roads for incomplete paths
- Fixed a bug where roadPlanner would incorrectly plan road networks if sources were not visible at the recalculation tick
- Fixed a bug where workers will occasionally stop working if outpost mining site containers are under construction
- Workers will no longer attempt to build sites for structures over the max amount for current room level (for example, after a controller downgrade)
Removed
- Removed all contents from
src/deprecated