Skip to content

Overmind 0.4: "require('more-minerals')"

Pre-release
Pre-release
Compare
Choose a tag to compare
@bencbartlett bencbartlett released this 14 Jun 19:09
· 305 commits to master since this 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
    • 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)
  • 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
  • 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 damage
    • DirectiveAbandon 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)
  • 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
  • Refactored TransportRequestGroup to be more like LogisticsNetwork
    • CommandCenter (and EvolutionChamber) now submit resource requests via a shared transportRequest object
  • 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 an equalize() 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 to LogisticsNetwork
  • Lots of file renaming to be more concise
  • Colonies now register a shorthand reference on global for console use: 'E4S41' and 'e4s41' both refer to Overmind.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