Garrisons were originally added to Cogmind in the months after the first Alpha release in 2015 (see an overview here) as an optional location for players to visit, adding a unique extra dimension to the world to answer the question “what if I infiltrate these things where many enemy squads come from?” (More recently here on the blog I covered that category of Cogmind maps, the “maps between maps,” since a third such map type was added this year.)
In the time since Garrisons were added, however, a combination of relevant changes to the game started putting pressure on their original design:
- Many more full branch maps were added, along with factions, each with their own enticing reasons to visit them compared to the weaker incentives for entering a Garrison.
- Eventually Garrisons themselves became a sort of faction home as well, in the form of RIF-using bothackers, which in turn meant that some styles of play encouraged visiting many Garrisons.
As a result, for a while now I’ve wanted to revisit and update Garrison design to better merge it with what the rest of the world had become.
This always felt like a kind of side project though, one which could be small (doesn’t live up to the potential?) or large (hard to fit the work in?), so it simply floated around on my lengthy todo list forever. For Beta 12 I decided to include it on the patron feature voting list, and… it won. Cue several weeks of work which has definitely been worth it!
The amount of content variety offered by the original Garrison design was more suited to a lower visitation rate, not the “I’m going to play almost my entire run inside these things” which it had become for some people. RIF garrison diving became increasingly common, because it’s a fun style, but we could totally make it even more fun with greater variety!
So the goals for Garrisons 2.0 are to increase variety in the form of encounters, events, and new layouts, while also reworking the clock and giving even non-RIF players good reasons to enter.
Let’s get started!
1.0 Garrisons
As a quick reminder of their fundamental structure, unlike most maps which use more involved generation methods, Garrisons are built entirely from large prefabs, four of them to be precise, fitting and rotating randomly selected quadrants to create a larger square map.
So each quarter of the above map is a separate prefab rotated such that their corners form the central room. With 44 variants in all, many with somewhat variable content of their own (random items, traps, maybe potential allies instead of hostiles, etc.), this results in quite a few possible permutations, but seeing as each map is composed of only four of these prefabs, when players start exploring upwards of ten of this same type of map in a single run, some of these corridors start looking all too familiar, especially betraying hidden areas that might otherwise be surprising! (and by design there are quite a few of these inside Garrisons)
We’re going to need to inject more layout randomness in here to liven things up over the long term…
Before getting started with that, I first built a little tool to get an idea of the complete contents of a random set of Garrisons. This might help spot areas I wanted to adjust, or at least offer a clearer picture of the total challenges and rewards possible in a given map as of Beta 11. For Garrisons the complete list is also more relevant than elsewhere, since “full clearing” a Garrison is a lot more common than in many other maps.
The tool would load up the game, visit a Garrison at every depth, and tally its contents, adding the results to a file, doing this for however many seeds are specified. I could save the data to revisit it later, after adjustments are made.
Relay Couplers are not reflected in this list, since there are almost no free-standing couplers in Beta 11--they’re acquired separately from Relay machines, and I already have a good idea of their distribution since it’s more directly controlled anyway. Here I’m more interested in the non-RIF-related rewards.
One very noticeable issue is that for some Garrisons there was little to nothing under the “usefuls” or “items” categories, making the entire map almost purely of benefit to RIF players (since there are always Relay Couplers to be found, plus the RIF Installer for abilities).
Sometimes other players would Garrison dive for fun/something different to do, and sometimes come out with nice rewards/out-of-depth gear, but unlike the alternative (going for branch rewards instead) that was definitely not guaranteed, so not really a reliable long-term strategy to play around. It’d sure be nice to resolve that!
Adding extra content could have the dual benefit of both spicing up Garrisons and making them valuable to more than one type of player. I’m reminded of Beta 11’s spicing up the main complex with Heavies and Cargo Convoys, though in this case it’s not just adding one or two new mechanics but instead about turning Garrisons into proper branch maps in terms of content distribution…
Encounter Architecture
If you’ve read some of my earlier map generation articles (specifically here, and here for caves), you might be familiar with how I make use of an “encounter system” to procedurally distribute and insert map content, generally via prefabs.
The question was how to apply this approach to Garrisons.
Embedded prefab encounters in other tunneler-generated maps have a defined set of empty rooms to work with, but Garrisons don’t have any empty rooms at all, themselves being composed purely of prefab quadrants where every space is hand-crafted with purpose.
I considered a lot of options here, going as far as thinking of building a new generator from scratch (one that would make encounters much easier to implement), but I liked the established and consistent core theme of existing Garrisons and didn’t want to mess with that. Instead I came up with a way to integrate Garrisons into the room-based encounter system: If we don’t have any empty rooms to place encounters, we’ll just have to dig some!
And I mean dig manually…
I went back through each prefab and outlined areas as essentially “optional placeholder rooms” which the generator could use to insert prefabs, but any of these areas not used for an encounter would actually not appear in the final map.
While a more algorithmic approach could also be used to do this, I prefer the handcrafted touches this allows for, like what nearby prefab sections the encounter at a given position is allowed to connect to, and how wide to make the links (which also determines which types of encounters can appear there).
Also we could’ve done something like choose an encounter then build a suitable space for it, but I was trying to take advantage of as much prior work as possible here, and that meant simply handing the encounter system a list of existing empty rooms to work with.
How the encounters link up with the map is a little different than usual, too. As drawn, some areas have multiple connections to main Garrison corridors or rooms, but only one connection is chosen at random to be used. This enables yet more variation in layouts.
Check out some full-sized Garrisons in the map generator before the game gets hold of them to actually insert the encounters, shown here with potential encounter areas in dark gray:
Here it’s important to remember: Encounter rooms aren’t nearly that large (usually), outlined is just the available space within which to place them, space which is then shrunk down to match the necessary size. Let’s see the steps as I shared for the embedded prefabs in other maps!
- Find an optional placeholder room large enough to hold the desired encounter/prefab. The one above has two possible connections with the Garrison, one to the south and another to the west.
- The southern link is chosen and the target prefab area is shifted against the southern edge of the room. The horizontal offset is selected randomly but still allowing access to the prefab interior in cases where the prefab itself contains objects that would otherwise block the path.
- Areas of the room unused by the prefab are filled in with earth.
- The prefab’s contents are placed on the map, and any walls still needed are created adjacent to open space (most prefabs don’t specify their own outer walls, but this one in particular does because it wants to surround an interior section with reinforced walls).
The right column shows an example where prefab contents are rotated and shifted to use the western link instead.
Also notice the blue phase wall at the entrance to the western-facing prefab, instead of a door. This is another key difference with Garrison encounters, that they specify the form of their outer connection with the Garrison, be it an open space, hidden door, or phase wall. Some encounters force a certain type of connection, while others uses weighted possibilities, whatever is suitable for the design.
Unlike 0b10 encounter rooms, these cannot actually expand or move doors, and use a tunnel-like connection rather than sharing a wall with an outer corridor. As with 0b10 encounters though, random horizontal flipping is allowed for further variation.
For now encounters only connect directly with main Garrison prefab areas as per the drawn suggestions, so only one entrance/exit each. I considered introducing the possibility of dynamically generating more loops via hidden paths between some encounters, though there are already a fair number of hand-crafted loops built into Garrison quadrants anyway, and players can always try to create their own additional connections given the circumstances and layout. Rampant terrain destruction is awesome, by the way ;)
Generating more paths would likely make Garrisons easier in some regards (unnecessary!), and not be compatible with many of the encounters anyway, since knowing which direction the player will enter from is often an important part of their design.
Below is a collection of images showing the full layout of several Garrisons after the complete generation process, including encounter placement:
New Garrison Quadrants
With a new encounter system in place, another thing I did was go back and create two new sets of Garrison quadrants, adding 12 more variants on top of the original 44. Each “set” of quadrants follows certain rules for their layout, and in this case one of the rules was to take into account the fact that encounter rooms may be embedded into the quadrant, something none of the earlier sets expected when they were created.
The new quadrant above moves some of its “standard contents” to beyond the entrance/exit (represented by the red ‘0’) when pathing from the Garrison center (top-right here), and includes some especially large prefab areas with wide entrances, even leaving room for some within its main structure rather than the more typical outer edge locations.
Of course simply having a larger pool of quadrants for the map generator to pull from further expands the potential number of unique Garrisons as well, which was the first thing I was hoping to do with this update before even thinking about encounters at all.
Encounter Types
In my previous related articles I wrote about dividing encounters into four categories: Fluff, Reward, Risk-Reward, and Danger.
When Cogmind was pretty much done in 2017, a survey of encounters throughout the entire game recorded 25% of them to be fluff, 46% reward, 15% risk-reward, and 14% danger. By comparison, a breakdown of encounters in our newly expanded Garrisons shows 3% fluff, 40% reward, 55% risk-reward, and 3% danger.
Garrisons are already fairly dangerous given their concentration of hostiles, so I really wanted to focus on the risk-reward aspect--go the extra mile with these mostly optional side encounters, face even more dangerous situations, and likely be handsomely rewarded. In playtesting so far this (among other benefits we’ll get to later) is already clearly tempting players who would otherwise always prefer regular branches over infiltrating a Garrison.
The above samples show encounters added to a variety of Garrison layouts, highlighted with a dev visualization overlay. Those sections of the map would have otherwise remained filled with solid earth.
Notice that encounters do not generally fill the space available to them, with some even occupying only a tiny portion of it, so the sizes of rectangles here can be deceiving in terms of determining the prevalence of encounters. We’re mainly looking at respective counts, color, and placement.
Grey rectangles in the visualization show areas not chosen for encounter placement. As with other maps, during generation there are X number of available encounter rooms, and different map types set their own percentage of those to attempt to fill, so it’s easy to adjust overall density.
For Garrisons I’ve started with a 50% usage rate. If that turns out to be too overwhelming it can be lowered, or if we want even more encounters for some reason it can be increased (that said, I don’t think the number of available encounters I’ve created so far is enough to support a higher prevalence while maintaining each Garrison’s unique feel).
Some Cogmind maps have a 100% usage rate, though the circumstances are different in those cases, for example caves being populated by a much higher number of fluff encounters to add to their character. Others have very low rates like Access (10%), being a huge map with wide corridors and large machines, designed for lots of open space and more predictable content.
RIF Installers
Back when I added a proper bothacking system to Cogmind, creating RIF Installers and inserting them in Garrisons for both lore reasons and in a bid to increase the map’s relevance, they were always placed adjacent to a random entrance/exit, since by design the Garrison prefabs always left some open space in those areas.
Having introduced encounters, this method was no longer reliable as these locations might now be occupied by other rooms in some or theoretically even all cases. Certainly one option would be to reserve the necessary area in advance, but that wasn’t very compatible with the existing architecture, and there was an even more enticing and natural idea in this case anyway: put RIF Installers into the encounter system, too!
RIF Installers were already a prefab to begin with, one which (without precedent anywhere else in the game) were actually inserted via a separate hard-coded method, so let’s add it as an encounter instead. Of course this change comes with significant balance repercussions, which we’ll cover when we get to discussing that topic further below.
After implementing all the encounters, I went back and added them to my original Garrison content summary tool, primarily looking to ensure that RIF Installers were indeed being included everywhere as expected, though notice that even this earliest Garrison is quite stacked compared to before (again, excludes standard content like the normal Relays and their Coupler contents):
Clocks
From early on I always wanted to make sure Cogmind had sufficient food clocks, although as the world expanded in the time since, I’ve added a few areas in which there is no clock for whatever reason. For a while I’ve planned to eventually address these as opportunities present themselves.
That’s not to say we need incredibly tight clocks--Cogmind clocks are lenient enough to offer plenty of flexibility to allow for different play styles, but assigning some explicit value to time by giving it a mechanical impact is good for balance in a goal-oriented roguelike like Cogmind (as opposed to a sandbox), otherwise any number of weird player strategies might start to emerge as they take advantage the inevitable design cracks in a complex web of systems that can start to break down when you have unlimited time to poke at them in a single run. While some players enjoy puzzling out creative ways to get ahead, at the extreme end it eventually devolves into optimal tedium which is overall harmful to the experience. I wrote about this factor in my recent article on game design philosophy.
Garrisons originally had their own clock whereby the alert level gradually rises over time (as opposed to the usual decay or at least remaining neutral), thus overstaying in a single Garrison could have a negative impact on the following map.
As one of its perks, RIF-aligned builds were not affected by this type of ambient alert increase, which made Garrisons a lot safer for those players. But RIF has since gotten a lot more powerful in its own right, with even more benefits to come in Beta 12, so we really do need to consider a clock that applies to everyone, and seeing as we’re building Garrisons 2.0 here, of course it makes sense to do that now as part of the new design!
At the same time, the original alert increases for non-RIF builds were a bit too punishing for players to seriously consider these maps as part of their route, so I didn’t want to simply say “okay RIF isn’t immune anymore.”
Initially I approached this as an opportunity to come up with some new type of clock. Over the years I’ve been adding more unique clocks as part of different kinds of challenges in Cogmind, so maybe there was something suitable for Garrisons as well? Some concepts:
- More enemies could show up? Okay so that’s not a new concept, and kinda used generally throughout Cogmind for both clock and non-clock responses, so nothing special there and even kinda repetitive, not to mention it invites farming anyway.
- Sterilization is another option, the floorwide response to farming on some other maps, slowly raising the ambient temperature to eventually melt anything that doesn’t evacuate. I’ve already reused a slightly altered version of this in the new DSF maps, and balance-wise don’t find it suitable for Garrisons anyway.
- Probably the most interesting and unique possibility I considered is eventually permanently sealing each of the Garrison exits one by one, until eventually there is absolutely no way out and you are trapped and lose the run! This is less harsh than it might sound at first, since the closing escape window would be clearly telegraphed to the player along with sufficient time to leave, and unlike other floors the exit locations are not exactly hard to find (they’re all in predictable locations with mostly predictable paths to reach them). That said, if someone were to actually lose that way for some reason it would feel kinda bad, plus (unless the mechanics get even more complicated than that) it’s a very hard cap on time, whereas flexible clocks are generally more desirable than brick walls where possible!
So, uh, what’s a flexible mechanic that ties into a bunch of other mechanics already? …alert level xD
Yeah we’ll just do that, only this time we’ll tweak it differently!
Alert still increases naturally over time while inside a Garrison, but it will be much more lenient for a while, then eventually the rate begins to quickly ramp up, before plateauing. Mind you, the rate of increase plateaus, not the alert, so you generally don’t want to hang around too long once it starts ramping up, but the option is there if you need a little more time, depending on what is acceptable given the circumstances.
The numbers used are based on a wealth of player run stats, in combination with the desired balance for these new Garrisons. The time required to full clear will generally push alert quite high, but is technically still achievable and not unreasonable if that’s something the player wants to do, while the option to bail early is always available.
Note that while RIF builds no longer immediately benefit from simply being RIF builds in this scenario, by design that play style comes with more tools for controlling alert, so at least retains some indirect benefit.
Balance
With all these new encounters, the average content density inside Garrisons just shot up. However, I don’t think higher density itself has a significant impact on difficulty, which would be the main concern. Garrison map flow remains unchanged from before, with all exits directly accessible from the center via four spokes, and encounter rooms are either further out towards the edges, or at least off the beaten path, meaning they can usually be avoided if desired, serving mostly as optional areas for the player to investigate based on their own risk-reward tolerance.
The added variety no doubt makes Garrisons more interesting and fun to explore, but also introduces new design challenges. Encounters now make up at least half of their content, including many of the potential benefits (even the holy grail itself, the RIF Installer!), but many of these extra rooms are hidden behind one or maybe even two layers of phase walls which not all players are equipped to detect. This can make exploring a Garrison very problematic, even unfun. In theory it could be optimal to destroy all the walls in a search for hidden paths (especially with Beta 11 when there was no clock adding at least some time pressure), assuming one is willing to pay the alert cost for the collateral damage.
To help alleviate this I added a guaranteed Terminal embedded in the wall of a random main corridor, a Terminal that lists the “Access(Emergency)” hack which reveals all hidden doors and phase walls across the entire map (expanded behavior beyond its normal effect).
So simply exploring the main areas of the Garrison will eventually lead to discovering this Terminal, which offers a pretty good chance of marking all the hidden paths, but first you have to find it.
Failing that (gets blasted in a fight? hacking attempts unsuccessful?), one of the potential “encounters” is another Terminal nook containing a new “Download(Registry)” hack with an even more extreme effect, revealing all terrain, security locations, and even item caches.
But it’s not a guaranteed find, and being an encounter itself there is a chance it’s not easily accessible, either (it has no door of its own, but the area selected for it may otherwise not be directly linked to a main corridor).
So that’s just one possible option. The reason these options are more important inside Garrisons is because a number of typical sensor types are blocked, which is where the costly backup approach comes in: Destroying the Phase Generator eliminates the blocking (at the cost of raising alert further), and also opens all the phase walls, making it easier to explore freely. There’s usually (but not always) at least one Phase Generator in a Garrison, and it can often be found through natural exploration since it’s designed to be heard through phase walls that lead to it.
RIF Installers (again!)
Any RIF build visiting a Garrison is itching to find this thing ASAP. More abilities? Yes, please! (In fact, I even added a new ability for Beta 12 so we’re up to 16 now, 7 of which have multiple levels.)
It used to be fairly easy to find--if it’s not adjacent to your starting position, follow the spokes to each of the three exits and it’ll be at one of those, but now that Installer placement has been merged with the encounter system it could be anywhere! Including of course outlying hidden areas (see the image from earlier for one such example). That’s a problem.
Forcing some players to repeatedly full clear Garrisons to ensure they find these is excessive, so I added a new mechanic to help out: Once a player has installed the RIF system, getting anywhere near other Installers will automatically ping them, revealing their precise location.
There is precedent for this behavior, since RIF-capable builds already similarly ping nearby Garrison Access points elsewhere in Complex 0b10, and adding this feature elegantly solves the “where the hell is the Installer?!” issue. In fact, it could even be considered more interesting than the predictable locations used before, since the new randomized locations might require a bit more exploration to uncover, as well as figuring out how to reach the Installer once discovered. That while making sure it’s not damaged in the process, since who knows what else is lurking around…
Incidentally damaged RIF Installers (:O) will no doubt be more common in Beta 12, though there are balance factors at play here, too:
- A single Garrison may contain more than one RIF Installer. That’s pretty exciting news for RIF users, though it’s worth being cautious since the second potential installer may be trapped or defended!
- Looping back to a main floor through one other particular new encounter for a shot at another Garrison (and its Installer(s)) at the same depth is a possibility. This is different from normal exits in that it always loops, regardless of where the other exits lead.
Overall the average total ability count across an entire run will likely be higher than before among players who want to optimize for it.
Non-RIF Builds
RIF this, RIF that… but as I stated at the beginning, one of the goals here is to give more non-RIF builds good reasons to visit Garrisons as well!
I think the update manages to deliver on this point, and we’ll see other builds Garrison diving at least some of the time, as a part of existing strategies or even entirely new ones. Advantages include:
- Out-of-depth parts, often significantly so.
- Other situationally useful rewards such as large numbers of traps or Authchips. Also allies, sometimes pretty effective ones.
- Unique intel. Among the new Terminals added to Garrisons, we also have new hacks enabling the download of patrol navigation and security data for the next map, intel which can be quite useful given its scope.
- Then there’s the really big one, an entirely new meta mechanic spanning many areas of the game with significant strategic impacts outside Garrisons and even into extended, but requiring Garrison visits to trigger and… nurture. Almost sounds like RIF, but by design the two are actually mutually exclusive options, so I look forward to seeing who uses it, and when and how. Writing about this new feature could be a whole new article topic on its own, but given that it’s steeped in lore and is one of those things meant for people to uncover naturally, I won’t go into any details here. Let’s just say it’s neat, and it’s useful. I’ll almost certainly be streaming it at some point though, so that would be one way to learn about it from me, aside from the usual places in the community.
These advantages exist on top of the original beneficial side effect of passing through a Garrison, whereby looping back to the same depth reduces the size of all patrols (while you have your chance to harvest more resources? find an elusive branch?).
Events
While encounters help flesh out the general Garrison experience, there is another potential layer on top of that to further shake things up: Events.
Events are not all that frequent, but when they do occur have a map-wide impact. These are various faction-level activities that might be beneficial for the player, or add some new danger, or something in between.
For spoiler reasons I won’t say more about these, other than to point out that from a design perspective it’s nice to have this extra layer so that once players are familiar with the individual encounters possible in a Garrison, and come up with localized strategies for those, there’s always the chance for something to come along and change the strategic equation in a bigger way.
In other words, events contribute to avoiding the “flat” experience of simply moving from point A to B, dealing with whatever challenges lie at the destination, then the next one beyond that.
Technically we have encounters that when close enough to one another might bleed into each other due to an alarm trap, untimely patrol, call for reinforcements, Terminal trace investigation, or… accidental retreat in the wrong direction? :P
And this approach is reflected throughout Cogmind’s other maps as patrol routes change, units carry out unique duties across different areas, and yet others are dispatched to react to something far away (dungeon environments can be about as dynamic as an open world!), but Garrisons are smaller maps with fewer macro systems at play, so it helps to add that extra layer of potential content to mix it up. For the same reason, DSFs (even smaller and simpler than Garrisons) also have the occasional event.
This sort of mutlilayered approach is also really useful for emphasizing the lore, taking advantage of another dimension to bring the world to life. It’s not just “Cogmind vs. the world,” it’s “Cogmind happens to occupy this world alongside many other actors with their own goals, friends, and enemies.”
Again these events are uncommon, since we still want most Garrisons to be focused around their encounter content and balance, as opposed to events which generally take over the entire floor and make it into something quite different. As I have it set now, there is a 60% chance of having a single event across a full run that visits a Garrison at every single depth, and a 10% chance of having two. 30% of seeds have no Garrison event at all, regardless of how many are visited. Events are special!