Years from now, veteran Screeps players in their retirement homes will still be telling the story about the Battle for E2S7. One of the most intense showdowns the Screeps world has seen to date, it involved a series of attacks that took place over several weeks. Some of these would last for days at a time. Many a bedtime would be neglected. Many a pool of yellow blood would be spilled onto the cold grey ground. Both players would be pushed to their limits.
The concentration of epicness was so high that the room could collapse into a black hole or the entire world could be broken up into shards.
We each bring a unique interpretation to some of the more ambiguous aspects to this story, which is no surprise. We’ve tried to preserve that difference because we think it will make a more interesting read.
|bonzai’s story||o4kapuk’s story|
|Even this prelude has a prelude. If the history could scroll as far as a month earlier, you would see another fierce battle raging, this one with Hernandeur as the defender. On the opposing side are myself and taiga, a fellow ThunderKitten. We were able to establish a zone of control in the room for a period but Hernandeur took a safe mode and was able to beef up the defense. Unfortunately, he quit before the true owner of the room was ever decided.|
“Authorization” might be a stronger word than I would use. My reckoning was that SteeleR effectively said there was nothing he could do about it, as the portal was closed. It wasn’t big enough to make a huge fuss about (ThunderKittens are known for our practical approach to these matters, at least we like to think so).
The attack on SteeleR’s room played only a small role in the decision to attack E2S7. The bigger reason is that we had formulated a crazy plan to take that sector from these well established players, and taking a room means nothing if you are not able to hold on to the territory. We have a simple rule of thumb for deciding whether we should first try to solve a territory dispute in a diplomatic way or in a more forceful way. We assume players who have attacked us in the past prefer a less wordy approach, which we are happy to oblige.
I could see by o4kapuk’s design that he knew what he was doing. At the moment, the walls were at ~1 million hits. A vision flashed before my eyes of trying to take this room with higher walls, and I didn’t like what I saw. Unfortunately, this would prove to be prophetic. But I am getting ahead of myself. For now it was clear: E2S7 must be reconquered!
I think that story begun July the 10th when I removed TK member SteeleR from E74N27 (we at CoPS thought he’s too close to our borders). We had his authorization (at least we thought so) to clear that room, so I didn’t expect this action to trigger the war; but the next day (or so) I found bonzai’s troops demolishing E2S7, my experimental bunker room I established in the middle of June.
Having a room close to the Big Cross was always my wet dream, so when Hernandeur despawned I moved out immediately after a suitable portal appeared. My reasons to capture and hold that room were more emotional than rational, and that factor significantly affected my behavior. If that had happened anywhere else, I probably won’t have fought for my room that hard. But I see having a room in the world core as matter of prestige, so when it comes to taking that away from me, it’s not surprising to face a fierce resistance.
The history of room’s design deserves a separate article, but here is enough to say that I took bonzai’s design and did some work to make it match my approaches better.
After having some experience in solving different issues about that design I decided to discuss some things with the author of original layout, and we had a nice talk about it. Probably attracting his attention to that room was another reason why this story happened how it happened.
|bonzai’s story||o4kapuk’s story|
At first, the attack seemed to be going well. The main challenge to an attack on a room design like o4kapuk’s is the vicinity of the towers to all possible attack points. Eventually, you get close enough so that you are taking maximum damage from all 6 towers (3600 damage per tick).
The math involved in writing attack code that can withstand this situation deserves its own article. Here is the quick version. A creep with 12 boosted TOUGH can take 4000 damage before it really starts to hurt. Unless you have dozens of healers nearby, you need those TOUGH parts to hold. A direct hit by all towers will take out 11 TOUGH parts. On the next tick, you have far less protection. The recent change that adjusts healing mechanics has helped a great deal, but this can still be tricky. Miss a single tick due to a bug or a timeout (which are occasionally out of your control) and it is “sayonara”.
I chose to use a tunneling approach on this first attack, and that was a mistake. I believe I made it it as far as 3 positions into the interior of his base. Due to the lack of healing in the vicinity as he advanced further in, it met with a towery death. This bought o4kapuk enough time to start spawning some boosted creeps. You can probably imagine how much more complicated it gets when creep defense damage is added in.
Let’s just say the rest of the attack wasn’t pretty, at least from my side. Here I am, supposedly a capable raider, and I am foiled by walls at ~1 million hits. o4kapuk, who has only been playing since December, makes a convincing underdog in this story.
I believe I recall one player expressing a sense of schadenfreude from seeing my attack fail. Considering all the havoc I’ve caused, I think I deserved it.
I had no defense code activated those days; the only thing I had was primitive, stupid, and buggy, so I just decided to disable it for MMO world until it’s ready and tested on a private server. Worse, the room wasn’t fortified enough; as far as I recall my ramparts was around 1M hits which is nothing when you face properly coded t3-boosted attackers.
Thus it’s not surprising that I found my room partially breached (as far as I remember, bonzai managed to break through two or three layers and destroy some labs).
Fortunately, I still had enough labs to properly boost creeps; unfortunately, my defense code still was a shit. So I spawned some defenders manually using parts of my raid code and reflected the attack.
I was surprised that the room held out long enough while being not defended; I rebuilt what was destroyed and returned to debugging my defense.
We talked a little in private and in TK public slack. I was a little frustrated by military activity without any declarations (I used to have more definiteness in military conflicts) but later when bonzai’s intentions became clear I took this feud as an opportunity to finish my defense code and see bonzai’s advanced raid code in action.
We decided to limit the conflict by the E2S7 only, and I was happy with this decision because I didn’t want to put other members of CoPS under threat.
|bonzai’s story||o4kapuk’s story|
There is something to be said for getting it right the first time, but when that isn’t possible there is sheer stubbornness to fall back on. Although the first attack failed, it was close enough to think that it might be successful given a few adjustments and some help from my nukers.
o4kapuk and I had shared some brief communications that were generally positive. It is hard to overstate how nice this is for a game like Screeps. In other online games, most matches are over in a relatively short time. Players can trash talk all they want and forget about it. Not so in Screeps. Because of the tick times and the game mechanics, feuds can last for days or months. Like it or not, you are stuck with each other.
There’s no reason why it should necessarily be a negative interaction. In a sense, you are collaborating, each writing the testing suite for the other person’s code. I see a sort of elegance in this. One thing is for certain, both of us have improved our code as a result. So I think this perspective holds true.
Unfortunately for me, this second attack showed that my code still did not pass the test. o4kapuk successfully repaired the ramparts so that they were virtually undamaged. The ramparts were also higher, ~3m if I recall correctly.
The only thing I had going for me was the inter-nuke period. I spaced each nuke to be 248 ticks apart, which would theoretically buy me some time in between nukes to go whack a few walls.
Unfortunately, the logistics of this strategy are not always straightforward. First, you need to make sure you have creeps present when the nukes are falling. I was spawning creeps from 5 different rooms, some of them far enough away that creeps were arriving with only 500 ticks to spare.
Second, you need to have a robust evacuation plan. I have code that will start clearing the room of creeps at 80 ticks before touchdown. That might seem like an overly conservative margin, but it is often necessary. Indirect paths to the exit, swamps, and traffic control are all factors that can work against you.
I don’t recall exactly in which way my second attack failed, maybe it failed a little bit in every way. I believe some creeps did not evacuate properly and were caught in the nukes. I believe the tower code was also smarter and managed to take down a few squads.
I also believe this was the first time I saw his Ballistas, high powered ranger creeps that sit at the edge of the bunker and throw death at my creeps. Given the already insane amount of tower damage from being so close to the cluster, it was going to take something much smarter to outlive these attacks.
This was the same style of attack that had caused other defenses to crumble, but it just wasn’t going to work against o4kapuk’s bunker of pain. I was going to have to improve it!
|The day after the first attack bonzai informed me that he was going to use “at least one nuke” as a part of his next attack. I had a basic code for proper fortifying nuke landing area so I didn’t worry much about this.|
I started fortifying the critical structures: spawns, storage and terminal.
Soon after that I saw 3 nukes flying to my labs. A simple calculations gave me that I can’t fortify them fast enough with my usual 15/15/15 worker even with boosted WORK parts. I replaced him with full-boosted 30xWORK creep but still that wasn’t enough. To solve this, I added two more full-boosted workers and found out soon that the bunker is too narrow for them to work properly. This forced me to disable remote mining in that room to decrease traffic inside; that worked and I got landing area fortified enough to survive nukes and remain at the same level with the other ramparts which has been slightly increased to ~1.5-2M (not sure about how high they were).
I also wrote an evacuation code to keep my creeps alive so they won’t take up valuable spawn time when bonzai’s troops arrive.
I wasn’t entirely sure about my debugged defense code, primarily because it was still primitive. I decided to babysit the defense. This is not the right way to play screeps if you ask me, but I really wanted to keep my room. So I spawned a squad and moved them to E1S7 to protect the evacuation point.
That worked well: my creeps returned to their positions and they were ready to meet the raiders.
bonzai’s offensive code was good, but not perfect at the beginning. One melee defender with a minor assistance of evacuation guard could easily kill the invaders.
There I implemented a simple code for focusing specific creep with towers – a quick and dirty solution which required manual target specifying. But hey, that worked and gave me an opportunity to make it nice in future. Crawl-walk-run was always a good strategy.
But that was just in the beginning. I suppose my opponent were also babysitting his raid and I saw several improvements in each wave. They learned how to avoid the defender and started to shoot ramparts from the safe distance.
I reacted by replacing melee defender with several rangers who did their job very well after I made them focus the same target as the towers. This way, there is no ‘safe distance’ for shooting anymore, and bonzai said that he need to think how to handle that kind of defense.
Thus ended the second attack.
|bonzai’s story||o4kapuk’s story|
Some battles are won before they even begin.
I woke up on the Sunday morning for which I scheduled my nukes and surveyed the situation. Much to my dismay, o4kapuk’s repair was very effective and the nukes themselves would do virtually no damage to the structure. Once again, the only thing I could rely on were the brief intervals between nukes in which I could whack away at the walls mostly uninterrupted. The typical wall height was 6m, and I would need to carve away at least a dozen before the integrity of the bunker was significantly compromised. With only a handful of nuke intervals to work with, there just wasn’t enough time.
Still, giving up now would be a terrible way to end the story. I’d rather my attack end in an impotent blaze of glory than fizzle out in a prudent surrender. o4kapuk had also done a hell of a job adapting his defense up to this point. He deserved a better ending. I went about setting up the parameters for the grand finale.
I decided not to hold anything back. I would crank-up the five rooms that were spawning my squads to full steam. That sounds like a lot of rooms, but a few of them were so far away that creeps would arrive with only 500 ticks to spare. I would have been able to put more creeps in the room with two closeby rooms, but you go to war with the army you have.
This would mean a GREAT DEAL of boosts would be required. Given the fact that I had been sending in a steady stream of creeps for the last two days, my stocks were starting to get low. Many people were wondering where all these boosts were coming from, some even speculating that I had a botnet army sending me resources. Unfortunately, reality is much more boring. My ally, SteeleR, had decided to respawn and was sending me all his leftover boosts.
With dozens of my impatient attack squads waiting outside his room, the first nuke landed. Ignoring the dangerous radiation, my squads rushed into the room.
My plan of attack was inspired by finndibaen’s attack on my own room design. The idea was to try to take out some key ramparts (shown in cyan) in the short time that I had. Those ramparts are crucial for protecting the entire corner section, since some of the other ramparts where attackers could stand rely on them for a safe path. Of course, a defense involving ranged attackers will be less susceptible. Still, it was the best plan I had, an upgrade from my usual plan of “kill all the things”.
During the barrage of the first four nukes, things went about as well as could be expected. I was able to get many creeps into the room, and also have them retreat at the right times. Some creeps stayed behind because they didn’t have enough TTL to make fleeing worthwhile.
During this time I was trying to improve my nuke-fleeing code. I accidentally recorded a gif that shows one of my frantic edits.
Despite a few creep losses here and there, it went pretty much according to plan. If I wasn’t able to take the room, at least I could be sure that I gave it my best. Finally, the last nuke landed and it was time to go full tilt. I made some quick edits to my code so that the fleeing was less conservative. If I can’t maintain a position near the walls, it was all over anyway.
There was even a glimmer of hope. I was able to weaken the wall at the critical junctures on the right side. There was one funny moment (shown in o4kapuk’s story) where about 15 ranged attackers are trying to outdamage a single boosted repair creep. They were just barely successful. I managed to wedge some squads into the critical points.
For a few hundred glorious ticks, it all went according to plan. o4kapuk had a specific lab he was using to boost ranged attackers, and they were unable to get to it without venturing into an unsafe position and being sniped by a dozen furious bonzAI creeps.
There was an obvious solution. Fill up a different lab with boosts for his ranged attackers. Would o4kapuk accommodate in time? The outer shell of his wall was failing fast, with a few ramparts only ticks away from obliteration.
Over near the terminal, you can see o4kapuk’s ranged attacker boost himself and join his already-boosted brethren at the wall. All three of them together, combined with the towers, can deliver over 9000 damage (more if they used rangedMassAttack). That’s gonna leave a mark, no matter how much healing you have available.
And like that, my creeps are sent to Valhalla, one by one. With the heavy amount of damage, even their very brazen flee parameters are not enough to keep them on the front line. Confused, they stumble around the battlefield looking for their lost parts and wondering what kind of cruel commander would lead them to such a fate. Death brings mercy and garbage collection to their memories.
I had a controller attacker about to enter the room. This creep would have been necessary to continue the fight, had it not already been decided. I kept it going just to prove that I could have attacked the controller, had the other part been successful. In these moments, you take whatever consolation you can find. However, I quickly went in my editor to change the code so that it delivered a congratulatory message rather than attack the controller.
There is a saying where I’m from. If you can’t beat ‘em, join ‘em.
The first thing worth mentioning is that bonzai blocked all the ways to evacuate population, so I disabled it for E2S7.
The second thing is a good timing between bonzai’s nukes and an excellent synchronization between nukes and troops: ~400 ticks between bombs is not enough to recover proper room filling creeps and spawn defenders/repairers, but definitely enough for attackers to jump inside and do notable damage to ramparts.
Fortunately for me, taiga’s nukes wasn’t coordinated either with bonzai’s nukes nor with each other so that was not that stressful to survive them. Nobody came in to damage my ramparts or to frustrate me.
Although extensions filling infrastructure was slightly damaged by taiga’s nukes, it was operational; I lost 8 extensions, all of my ‘caching’ containers and most of roads. I was very glad to see that despite of being damaged filling system still provides adequate filling rate; it was slower than before, of course, and my fillers literally hadn’t a single tick to smoke, but it was working good enough to handle expensive creeps spawning one by one.
Only between the nukes, when I saw which ramparts he was targeting I understood his plan: together with destroyed rampart in the epicenter these two which he was going to demolish was meant to block safe access to my lab with XKHO2 boost, a core component of my defense. Unboosted defenders could handle some attacks, but not this one. Not a bonzai’s crowd.
The plan was performed perfectly. My ranged attack boost lab was cut off completely, ramparts were melting with a frightening speed, resistance was useless, and the big picture seemed to be irremediable…
…until I remapped my labs which triggered loading of XKHO2 to a previously unused lab in a safe area.
The rest was predictable. Being properly boosted, my defenders with coordinated support of towers easily secured the whole perimeter (exactly how that was happening before), and then my workers were spawned to rebuild destroyed ramparts.
The Battle was over.
|bonzai’s story||o4kapuk’s story|
This whole attack was one of the most rewarding experiences I’ve had in Screeps to date. There’s no shame in being beaten by the best, and I believe I was. Although I was not successful in taking the room, I believe I gained something far more valuable. I walked away with much better attack code and a new friend.
The developers have stated their intention for it to be possible to have a defense that would virtually rule out a successful attack. In my opinion, o4kapuk is the closest I’ve seen. I haven’t given up the idea of writing an attack that could take down this room. I’ll continue thinking about what I can do to improve it. But I think o4kapuk has earned the right to be accepted as a permanent owner of a E2S7.
If anyone is foolish enough to challenge that earnestly, it won’t be me.
First of all, I should thank bonzai; actually, I should thank him many times, and when I say “many”, I mean “many”:
As for results, I think there could be many contradictory points of view about who won the Battle for E2S7 and who lost it. One could think that I won the Battle and bonzai lost it because I achieved what I wanted (to keep my room) and he hasn’t succeeded in his intention to remove me. Another one could tell that we both lost because we wasted an unimaginable amount of resources just to return to our previous state, to achieve nothing.
I think differently. I think we both won the Battle. We didn’t waste those resources, we converted them into good code and lots of ideas about our further code development. Bonzai made many improvements to his raid code and many ideas for his defense system, I achieved an adequate level of my defense, implemented an excellent traffic management (which was always wanted but always postponed), improved my extensions filling system, and got many ideas for my raid code, spawn system, boost system, mineral processing, and general economics.
In addition to all of this, we established a positive relations based on mutual respect; moreover, I gained some worldwide reputation as the first ever player (aside from SWC) who resisted the famous “Jack The Reaper” of the Screeps world, the bonzai himself.
As my final word I wish you all that your every game conflict went like the Battle for E2S7.
Peace! Or war. Your choice 🙂