We have a pool of Accountants hauling energy from our Franchises back to the room’s central storage. Now we’re just balancing the throughput and the output, which makes things a little simpler. Those costs can be calculated up front and subtracted from our baseline budgets as a fixed expense. We’ll spawn Salesmen to harvest the sources, Marketers to reserve the rooms, and Accountants to haul enough energy to spawn those input minions. We won’t always be able to use all the energy, but it’ll be there when we need it. Our Salesmen are fairly cheap in terms of spawn time, so we’ll always spawn enough to work the sources we intend to harvest. I lied we’re going to take a shortcut for the input. Our baseline budgets, the maximum constraints we have to work with, look something like this:Ībove I said we need to balance the input, throughput, and output. We need to balance the input, throughput, and output, within the constraints of CPU, energy, and spawn time. If we put too much into harvesting, we won’t be able to haul all the energy back but if we put too much into hauling, we won’t be able to use all the energy, and it will be wasted. Some of those parts will go towards harvesting sources some towards hauling energy back to base and some towards using it for construction or upgrading. We only have one spawn and can manage CREEP_LIFE_TIME / CREEP_SPAWN_TIME = 500 parts total. To really maximize our effective energy output, we need to optimize our use of these resources.Īt the early stages of the game, just after spawning in, spawn time is probably the most significant limiting factor. These costs vary for different tasks - an Engineer constructing extensions will take more energy, and a fleet of Accountants hauling energy from the Franchises will take more spawn time. And the fixed creep lifetime means there’s a cap on how many creep parts a single spawn can maintain. There’s an energy cost to spawn the minion, and then also any ongoing energy cost (for building, repairing, or upgrading). Minions take a certain amount of CPU to do their work. There are three main limitations to how many minions you can maintain: CPU, energy, and spawn time. Let’s pretend that didn’t happen and instead talk about the economy rewrite. I spawned in, but my rough draft had critical issues and never got off the ground in the second round. I started working on some fixes and an improved energy economy system, and as a result was woefully unprepared for the Botarena reboot sans Tigga. We were hitting 7-15 energy/tick, with remotes, and was being outpaced by Snowgoose who wasn’t bothering with remote harvesting at all.įor all the work we’ve put into it, there’s clearly a lot of room for improving the energy pipeline.Īnd that energy economy is the foundation of it all: Tiggabot’s efficient economy meant that it spread faster than everyone else, dominating more resources, and completely wiped the other competitors in less than a week. By RCL4 Tigga had 6 rooms reserved and had spikes of 60 energy per tick into upgrading. I’d seen the early-RCL swarm before, but comparing it to our own progress highlighted just how effective it could be. There were a handful of other deficiencies, from laughably low rampart levels to simply no lab code, which I turned into issues on the repository to tackle later.īut the most helpful part of the first round was watching Tigga’s exponential growth. The Grey Company still managed to acquire three rooms, so my efforts at testing expansion on a private server were not entirely wasted. I had one game-breaking bug, which caused surplus energy to be sold instead of used for upgrading, so once my rooms reached RCL6 they began to stagnate. I had no real expectation of winning, but competition is still an excellent way to improve: you can take notes from your own failures and from everyone else’s victories. BotarenaĪs promised in the last post, we entered in the Botarena competition and made a valiant effort. Here’s the GitHub repo if you’d like to follow along. The article below describes the AI in its current state: I’m still expanding and refining my codebase.