Official development blog

Special Mode Design: Abominations

Earlier this year I wrote about the hows and whys of alternate modes of play for roguelikes, taking a look at conducts and challenges and other unique ways to enjoy various games, and today I’m back to expand on that with some of the design process behind Cogmind’s latest new mode for Halloween 2019: Abominations!

There actually wasn’t a lot of forethought that went into this mode, as in unlike some plans I didn’t start with some idea but then just take notes and let it continue to incubate for a while as I thought more about its content and balance. It wouldn’t have even happened at all if not for special circumstances. There happened to be a week of down time during which Beta 9 was all but complete and I was waiting on third-party support for the final stretch regarding stat uploading to the new server. Around this time Steam sent out an email like they normally do reminding devs about upcoming events…


Excerpt from Steam’s notice about Halloween 2019.

I’ve done April Fools and Christmas/New Year’s events, but never really considered doing anything for Halloween. But hey here was a chunk of available time, and it happened to be the right time of year, so maybe I could come up with a suitably-themed event.

(This article won’t avoid Halloween mode spoilers at all, so if you want to explore it unspoiled, STOP NOW and come back later for the following in-depth talk about its design.)

My first thought jotted down in my notes was simply “maybe parts on the ground start putting themselves together to attack you :P” and I ran with it immediately. Thus began Abominations mode development, started suddenly and developed very much on the fly.

Now I wasn’t entirely sure how feasible this idea would really be, so at this point the mode was still relatively simple, focusing on the doing rather than the planning, mainly because my initial goal here was to first actually test and confirm that this new “core mechanic” was actually going to be interesting and fun, and work logistically. If not I was just going to scrap it (as I’ve done with one unreleased mode before, as discussed on Patreon if you’re a supporter).


Build-wise, Abominations presented some interesting considerations.

Unlike standard bots which have a static loadout and I set their core exposure in reverse by assigning the desired percentage and having the game calculate the exposure value based on their loadout, Abominations using a dynamic loadout (even frequently updating their build) meant they needed an initial static core exposure value.

This means I have less control over how easy it is to destroy a particular Abomination, but this is going to be a pretty chaotic mode as is, given that these new enemies can be composed of almost any combination of parts.

In terms of balance the wide range of potential Abomination effectiveness is okay though, since they don’t strictly work in squads like most other enemies, and individually powerful ones can and should be engaged away from others (or not at all) if possible. In playtesting I met some pretty impressive builds :)

Although Abominations can collect/attach any form of propulsion and you might find them treading, rolling, or even *gasp* flying, because they generally carry a lot they won’t often be moving especially fast, and by default they do have their own form of semi-slow propulsion: Etherial Tendrils.


Etherial Tendril stats--they’re odd since they don’t actually provide any coverage or absorb damage, but are also indestructible.

I originally tried to avoid giving them explicit propulsion so that they’d be as dynamic as possible, just using whatever happened to be around, but as you can imagine this resulted in a lot of immobile Abominations xD. They either hadn’t been formed near any propulsion parts, or had theirs destroyed in combat and would end up stuck in a room all alone.


At one point I added an “immobility counter” to my debugging info so I could keep tabs on how many of them were actually probably useless at any given point. The number tended to hover around half the total.

Being immobile was especially problematic if they didn’t have anything but their melee weapon. From the start I had given all Abominations a natural/built-in melee weapon, Etherial Claws, because otherwise they’d have trouble getting their build together by scrapping nearby bots and it would be fairly common to find an unarmed Abomination, which wouldn’t be very fun (at one point I did imagine them attacking you/targets by using non-weapon parts, but that would be rather complex and heading in a fairly different direction).

So each Abomination gets a free decent melee weapon (which is really just backup since they’ll prefer to attack from range with a projectile weapon(s) once they have one) and a semi-slow leg-type propulsion.

To be effective, though, builds really need to take into account how their various parts work together, and clearly a mostly-random compilation of parts is not going to achieve that. So to at least ensure Abomination builds aren’t completely broken and don’t too often rely on lucky synergies, they also automatically get a decent amount of innate power generation and heat dissipation. Hey, they’re etherial in nature, right? (we’ll get to that later)

Like a number of other powerful bots in Cogmind they also get pretty good innate EM resistance, because that damage type tends to just bypass most other defenses and considerations, and would be too reliable and valuable a way to fight Abominations in particular given their possibly low core exposure and other capabilities.


Sample loadout from a random mid-game Abomination. This one’s pretty nasty with some decent synergies going on, and anything with a cannon or two is going to be dangerous, but at least it’s slow.

Abomination AI also has a couple of unique features that correspond to their abilities.

For one they can switch their mode of propulsion. This is something that hasn’t been needed before in Cogmind, since each bot uses a single form of propulsion, but clearly a random collection of parts is often going to include more than one type. So Abominations will check their movement speed assuming different modes, and choose whichever is fastest. Due to different build masses, overweight thresholds, penalties, and drag, “fastest” is not easy to determine! (They ended up using the propulsion cycling function I wrote for the player while working on the new siege tread mechanics, actually switching to different modes then querying their speed in each before comparing the final results and making a decision.)

Abominations are also capable of swapping out their existing parts for better ones! For simplicity this feature relies on the same QoL algorithm I wrote for the player for automatically managing inventory swapping and part replacement, so it means they won’t switch to fundamentally different parts, only better parts of the same general type they’re already using.


Now here’s a swap I think I can do without!


But where exactly are these Abominations coming from?

The answer just sorta popped into my head and mechanically I really like how it turned out: power sources.

As far as the locals are concerned, this is some sort of virus sweeping through Complex 0b10. Shortly after Cogmind enters a new map, 30% of all combat bots are instantly converted to wandering Abominations (lots of fighting naturally ensues since many of these bots will have been members of a squad).

After the initial wave, though, any power source already in the open, and any power source that is later created or dropped as salvage, has a chance to be marked as a potential Abomination. And each of these power sources has a random chance each turn to become the center of a new Abomination, sucking parts in from around it.

To maintain some semblance of control and balance, there is a cap on the number of Abominations which can be active at once on the current map, based on the size of the map: cap = [(mapWidth * mapHeight / 1150) + 10]. Also the chance to mark a new power source ranges from 40~80%, depending on how close to the cap we are (closer to the cap it’s less likely that new Abominations will be formed, whereas if the number is falling more Abominations will spawn).

There are actually five tiers of Abominations, from “Lesser Abominations” formed lower in the complex and from the weak engines powering common unarmed bots, to the pretty scary “Ultimate Abominations” resulting from late-game quantum reactors. Essentially the higher rated the power source, the better the Abomination, with better integrity and capable of attracting more parts.


Before even doing any real playtesting, I felt the mode would need more than this. “Robots” collecting parts from their surroundings and using them against everyone else is certainly an interesting enough premise, but theme-wise the event should should get even more creative than just relying on mixing and matching existing parts players are already mostly familiar with.

So I considered giving each Abomination a random special ability, noting down various concepts such as leaving a trail of fire, spewing heat, freezing nearby robots, detonating nearby machines, and more crazy stuff. Basically, adding environmental/area effects would make situations a lot more dynamic and interesting, especially if more than one of these effects is active in the same area.

However, it seemed like encounters would be a lot more dynamic if these abilities were given to a non-combatant entity, rather than concentrating them in what are already potentially powerful enemies (Abominations). Let’s call them “Anomalies,” drone-like objects randomly flying around and which, like Abominations, could also be centered around power sources.

One of the advantages here is that these Anomalies would then take up power sources that might otherwise form new Abominations and cause the latter to propagate out of control (at the time I hadn’t actually yet decided to cap the abomination count), not to mention if wandering non-combat bots are the ones carrying these abilities, that opens the door to neutral or even beneficial effects. Separate from Abominations, their faster speed also allows Anomaly effects to have a greater influence on their surroundings without the design having to worry about a hostile entity that will stick around and keep attacking the player in addition to its ability.

Anomalies are actually created by Abominations: For each surplus power source they’re carrying, there’s a 5% chance per turn to use it to “shed an anomaly.” Anomalies consist purely of that power source plus “Etherial Propulsion,” a unique type of flight. They’re fairly robust, just so that they aren’t quite that easy to instantly pop on sight without a pretty good build, and each has a unique effect, after which they’re named:

  • Fire Anomaly: Significantly heats up nearby bots. These are essentially like the Furnace derelicts, only they move a lot faster and are a lot more common, considering few people ever see Furnaces :P. As far as 0b10 bots go, they might very well quickly meltdown when a Fire Anomaly passes by if they’re unlucky with the side effects of the initial heat.
  • Ice Anomaly: Freezes nearby bots, preventing them from acting for six full turns even if just by passing by them (or you!). Also a good way to cool down, though ;)
  • Corrupting Anomaly: Causes system corruption to build up in all nearby bots, like the Demented derelicts.
  • EM Anomaly: Zaps nearby bots with corrupting electromagnetic blasts, basically like a mobile overloaded Fabricator.
  • Matter Anomaly: Leave random amounts of matter behind as they travel.
  • Resonating Anomaly: Cause nearby explosive machines to explode.

Following a Resonating Anomaly as it wanders around triggering some machines.

  • Unstable Anomaly: Randomly trigger entropic explosions centered on themselves.
  • Sundering Anomaly: Randomly shoot out waves of energy that rip parts off nearby bots.
  • Hungry Anomaly: Suck in and collect loose parts from a large area. Abominations also might feed on them, taking parts they need! Design-wise this is a nice way to randomly redistribute and deliver parts to Abominations that otherwise haven’t found any/enough in their local area as they move around more slowly. They also make amazing loot piñatas for Cogmind ;)

Nom nom nom.

  • Disintegrating Anomaly: Disintegrate nearby terrain. Several of these can easily turn large areas of the map into Swiss cheese, which may be a good or bad thing depending on the circumstances :)

I removed enemies from this map to get a much quicker view of what’s happening, but when there are battles out there, corridors widening and walls coming down can have a significant impact on tactical situations.

  • Warp Anomaly: Cause loose parts and robots to randomly teleport. Also randomly teleport themselves via the same effect.
  • Chaotic Anomaly: Randomly open rifts and summon objects through them, anything from common parts to angry powerful robots. They can literally summon almost anything, making it possible that either you (or Abominations!) may find some really rare parts just lying around. Careful out there… However, unlike most other Anomalies, the Chaotic variety only apply their effect while under attack. If you feel safe, attacking one of these might give you something great, or end up being a terrible idea--care to take a gamble?
  • Polymorphing Anomaly: If they come under attack, they randomly morph into a different powerful (if not very powerful) combat robot. Once fairly damaged they’ll then return to Anomaly form.
  • Paradox Anomaly: Fully repair terrain, loose parts, and the parts and core of all robots across a large area! This includes even your parts, but not your core.

Paradox Anomaly restoring terrain (again I removed enemies for a quicker demonstration).

That’s every single one from my original notes except for one (the Deflecting Anomaly, which would presumably be able to redirect projectiles mid-flight, but getting that mechanic into Cogmind would’ve been a huge amount of work, and probably fraught with bugs).

Note that the detrimental abilities do not affect other Anomalies or Abominations (which would make the mode pretty unbalanced and I think less interesting), though they’re still affected by warping and the paradox effect.

I originally planned to put a description of each Anomaly effect in their info window, but by the time they were all implemented decided it’d be more fun to just let players figure them out. They all have log messages corresponding to what they’re doing anyway, but there could be some added suspense on meeting a new one that hasn’t yet used its ability (plus some have multiple/special interactions to discover!).

Although Anomalies are chosen randomly, not all types have an equal chance of being formed--they’re weighted to allow for some control. Chaotic Anomalies are potentially too powerful, for example, and Matter Anomalies would fill an entire map with matter if there are many of them. Some Anomalies also can’t appear too early in the complex. For example meeting a Polymorphing Anomaly in the first floors could mean a swift death because of what they’re capable of turning into, which wouldn’t be very fair :P

Like Abominations, there’s also a mapwide cap on the number of Anomalies (generally around twice as many as Abominations).


With the main content complete, it was time to test it out and tweak the many variables involved, especially those affecting spawn rates and caps since they’d form the backbone of a consistent experience.

I didn’t play just yet, though, since 1) that would be quite slow and 2) the real important factor is what’s happening across the map as a whole, of which the player is a pretty small part. So I loaded up maps and would spend hundreds of turns watching each one to see how it played out on its own.


Watching chaos spread back and forth across the map (open for full size). Different depths behaved differently based on their general layouts and resident robots/parts, and this particular sample is just the first and smallest map, which tends to be fairly cramped and dangerous in this mode. Later depths tend to be more chaotic with a greater number and variety of Anomalies, and stronger 0b10 forces so they’re not as easily overcome (including lots of reinforcements from Garrisons, which the above sample map is lacking).

This is when I ended up actually adding the cap on Abomination/Anomaly numbers, because they originally just grew like crazy as more bots entered the floor and were slaughtered :P. I also made an exception for this mode to reduce the number of non-combat bots that would continue coming into the map to replace those that had been destroyed, because otherwise they were an endless source of weak engines and therefore a lot of potentially weak Abominations.


Another scene of post-Abomination carnage in -10/Materials, labeled. This shot was taken before I put more early-game restrictions on the types of things that can appear :P

I also ended up adding more 0b10 dispatches, one of the big reasons being to supply new power sources (better ones!), and so there’s a constant churn of conflict across the map and it doesn’t eventually die down with one side fully overcoming the other.


The extra dispatches are essentially roaming assault squads.

Halloween mode also required a bit of dedicated QoL for the interface: Since it’s pretty important to know the specific type of Abominations you’re facing off against, or the type of Anomalies just spotted or operating nearby, I modified map labels to show their full name. Normally map labels show only robot class names, which is better in regular Cogmind the way it’s designed, but in this mode having so many robots that appear the same but possess wildly different capabilities or effects means there needs to be a quick way to distinguish them rather than opening their info or even just using the Scan window. So while playing this mode I tend to frequently hit ‘1’ to call up the hostile robot labels to be sure of what types of Anomalies are flying nearby.


I see an opportunity to get repaired coming from the north, and it could also restore walls to put obstacles between myself and pursuers. Not getting too close to the Corrupting Anomaly would be a good idea, though…

In this mode players can also experience what it’s like to play against numerous robots with non-static loadouts, and why such a situation was intentionally avoided in Cogmind’s core design. With static robot designs, players can build up knowledge about enemies and establish expectations and therefore strategies based on that knowledge. Then the dynamic challenges are more about managing tactics, and as familiarity with robot loadouts grows, less time is spent learning basic information like the capabilities of enemies currently faced--i.e. it’s easier to quickly grasp a situation at hand, even as it changes, because the fundamental units making up that situation are all/mostly known. Having to very frequently examine robot info to find out about their build is a time-consuming process and not something I’d want to be a part of the long-term core Cogmind experience, but it’s okay for a special mode that will probably only be played a few times :)

(Aside: For similar reasons Cogmind also doesn’t feature randomly generated parts.)

Path-wise, for Halloween mode I blocked all the branch exits, even to Waste and Garrisons, because things would get weird and complex if this new content could interact with the plot. In that sense it’s rather nice and convenient that Cogmind’s core linear route to the surface is free of plot considerations and special events (at least none that are triggered locally).

Final Abomination

After everything was working nicely, with more dev time left to spare I felt the one thing missing was some kind of goal other than just escaping to the surface. I brainstormed a variety of ideas, even going to so far as to come up with meta possibilities like hiding Steam keys or creating a kind of tie-in ARG with clues and content outside the game.

In the end I decided it’d be cool to add some kind of boss, which could even have its own new map. At first I wasn’t sure I could easily add a new map like that, or that I really wanted to, since this was just for a special mode, but I went ahead with the idea and thus the “Lair” was born :)

Halloween mode can be won simply by escaping to the surface normally, so accessing the Lair is intended as a secret. After killing enough Abominations (at least 50, sometimes a little more), a dimensional gate suddenly opens, complete with sound effects and warning message so it’s pretty obvious something is going on, and all the exits from the current map are redirected to a new destination marked Final Abomination’s Lair.

To facilitate discovery of the secret, I added a special counter to the HUD that records the number of Abominations killed, and more importantly it changes color as the number gets higher, going from green to yellow to orange to red, hinting that there’s something else to that number.


Demonstrating the special mode’s kill counter on the HUD (via a debug option).

The key number was initially 80, but I lowered it after playtesting the mode myself a couple times, since I didn’t want it to be that cumbersome, and too high a number would also make accidentally discovering it quite unlikely.

Within the Lair is the huge “Final Abomination” with a few Abomination friends which can produce wandering Anomalies as usual. It’s a prefab cave, and not an especially large one, designed just large enough to provide enough space and cover for the final fight. Lots of random high-level parts are scattered throughout the cave, and mechanically speaking the Final Abomination itself is also simply an even bigger Abomination with the same ability, drawing in nearby parts for its own use. It has a decent amount of core integrity though, so combined with its potential loadout it can be rather tough to take down.


Final Abomination’s Lair. I’ll leave out the boss so you can maybe discover what they look like one day :)

Some of the cave walls also randomly break open to spill out new parts, which might help later on (or hinder, depending on who picks them up xD)

The only way to escape is to destroy the Final Abomination, which creates a door that leads to the surface.


I like how special modes can easily take an otherwise familiar environment and turn it on its head to suddenly provide a range of entirely new strategic and tactical considerations to take into account. Yeah we’re still in Complex 0b10, and the usual combat and non-combat bots are around and also may need to be dealt with, plus we’ve got a lot of the usual tools to work with, but with Abominations and Anomalies running around, everything feels different.

I’ll admit it’s quite chaotic, actually, though Cogmind is right at home immersed in chaos since the name of the game has always been about adaptability. It’s true in the regular game some players weave their way around the unpredictable elements and minimize the chance of risk and need for adapting to the unexpected, though for me the game shines brightest when it’s repeatedly throwing unexpected tactical situations at the player, situations that can most likely be overcome, but it’s a question of how well the player performs, and whether the result weakens them too much to take on the next situation, and the next, and so on.

Anyway, while playing I made some observations about Abomination-specific survival as I was blasting my way through the chaos, making it most of the way through on my first run, and on my second facing off against the boss (which I managed to take down about half way, though I entered the area fairly weak):

  • Abominations are often pretty slow, so running away or at least repositioning is often a decent option. Checking their speed is pretty important.
  • Spare parts just lying around can be incredibly scary (hey, it’s Halloween!), since they can be used against you. Spotting a cache of good explosives, for example, I’m immediately imagining how much I’d rather not meet an Abomination that decided to pick up such firepower. Either make a beeline for it and pick them all up, or avoid it like the plague :P. Heck, maybe even consider destroying them! Sometimes you might also consider “feeding” an Abomination some weaker weapons so it doesn’t end up attaching something better!
  • Any power sources in particular needs to be handled carefully. Those already lying on the ground could suddenly become a new enemy (and take nearby parts!), and dropping one on the ground is often even more dangerous since it could create a new Abomination right next to you! (which also sucks up nearby parts and immediately attacks you xD)
  • The existence of Fire Anomalies makes it likely that almost any build will need heat disappation at some point, even if the build doesn’t normally require it. Probably a good idea to at least have one such part in inventory, preferably a Coolant Injector or something similarly effective :). If one of these Anomalies rushes over and parks next to you for a bit, without a way to get rid of the heat you are going to start melting and it’s going to get pretty nasty.
  • It’s important to be very aware of Anomalies flitting about in general, since they move so quickly and can greatly change circumstances for better or worse. Think of how to use them to your advantage! Frequent use of ‘1’ to label them all is a good idea, as is learning what their respective effects look like, since some of them you can easily spot coming a ways off and change your tactics accordingly. Adapt!
  • Use 0b10 forces and Abominations against each other. It’s a three-way battle for survival, after all, so try not the stand in the middle, or maybe even try to invite them to meet each other ;). I remember one case where I actually dropped an engine from my inventory specifically to take on an oncoming 0b10 squad--sure enough it spawned an Abomination, sucked up all the nearby weapons, and started trashing the other bots while I waltzed off to find the exit, haha.
  • It’s possible to reach the Final Abomination more quickly than the late-game, but in doing so you’ll have fewer slots (not as many evolutions!) so it could be pretty dangerous. Once in Access the exit always leads to the surface, though, so you have to open the dimensional gate before then. The ideal depth would theoretically be -2/Research.

Yet More Polish

So after writing this entire post and then going on to enjoy actually playing the mode quite a few times before release, although fun from the start I kept seeing areas where a little more work here and there would go a long way towards improving the experience.

A number of balance changes came first, since the early floors were clearly on the very hard side, plus I later also realized it would be nice to have better support for the separate difficulty settings. But then after the gameplay portion felt pretty smooth and on target to me, I turned my eye towards interface QoL aspects that were hard to ignore. It was certainly nice to be ahead of schedule on this side project, leaving time for so much extra polish before the official release :)

One modification was to filter out pop-up labels for Matter specifically in this mode, because Matter Anomalies eventually produce quite a lot of it, otherwise making it hard to mass-label other items on the map to parse them.


Compare the difference between the filtered set and unfiltered. Yeah. As here, quickly labeling a second time does show all Matter, in case there maybe isn’t a lot of it around yet and you’d like to see the actual values (although the Matter tile’s/ASCII’s brightness reflecting the amount is also useful). This is the same type of filter behavior behind the adjustable relative rating feature in the advanced.cfg options for the regular game as well.

Another big improvement was adding different colors for each type of Anomaly. Labels are pretty easy to access, but still, Anomalies move fast, and frequently relying purely on manual labels to optimize tactics is pretty tedious. Tedium is bad. The Anomaly’s ‘n’ character (and corresponding Drone tile) is not all that often seen in the regular game anyway, and certainly even less in this mode aside from Anomalies, so giving them more freedom in terms of color won’t really lead to any confusion. They are one of the two stars of the show, after all!

So I started by just giving Anomalies different colored trails, where color is based on their type--Fire is red, Ice is white, Matter is purple, and so on.


Watching only colored Anomaly trails in a debug view as they move around the map.

This is nice, but trails are intentionally kinda faint and only transient, whereas having a more persistent way to differentiate Anomalies would be even more useful.

I didn’t want to completely override their base color since that would remove the faction info it normally reflects, which might come into play at some point (if rarely), so I decided to instead have them blink in the color of their trail (but brighter).


Sample Anomalies blinking their respective colors. The blinking also works for those not currently in view but within range of sensors (with an Advanced or better Signal Interpreter, of course).

Blinking also makes these “environmental hazards” stand out a lot more on the map.


I decided to make “Abominations mode” a permanent part of the game, so it’ll be available even in future versions.. So far now most special modes have retained their playability, but a similarly content-heavy one last year, Holiday Mode, was only available for that version in order to more freely wreak havoc on the data and code base just for that mode. This time around I had more time to work on this mode, so even though it makes major additions, there was time to ensure each piece was being added in an orderly and futureproof manner.

I think special modes are a good way to add even more longevity to an already highly replayable genre, or bridge gaps between regular releases, although in this case it’s sadly coming a mere week after the massive Beta 9 dropped xD


Art by Zyalin.

This entry was posted in Design and tagged , , , . Bookmark the permalink. Trackbacks are closed, but you can post a comment.


  1. Joshua
    Posted October 26, 2019 at 7:37 pm | Permalink

    *reads entire design article*

    *stuck on one thought*

    Wha… furnaces are real? I’ve only ever found the caches of broken ones (and broken parasites). I assumed they were too powerful to be in the game as a working bot. :)

    Nice writeup, as usual it’s fascinating to be able to peer into the design process and the way you think. Thanks for sharing.

    • Kyzrati
      Posted October 26, 2019 at 8:01 pm | Permalink

      Haha, well, yeah, the broken ones…

      You know, when I wrote that I was questioning myself as well (for just a split second), as to whether or not there were any non-broken ones actually in the game, since I was pretty sure there aren’t. On thinking about it longer, indeed, there are not!

      Furnaces and Parasites both are designs that technically work but have not actually been applied anywhere yet. There’s still opportunities :)

      I guess they would certainly have some incredible destructive power if the player could get hold of them, as you can see with the Fire Anomalies in this mode, cruising past bots causing meltdowns :P

Post a Comment

Your email is never published nor shared. Only the anti-spam entry is required. See here for the privacy policy.

You may use these HTML tags and attributes <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>