Official development blog

Cogmind Beta 11 Player Stats

Beta 12 has released, and that means it’s once again time to examine player-submitted stats from the previous major release! Beta 11 was particularly special due to its sheer scope and secondary aim at rebalancing a number of fundamental mechanics, so unlike the usual shorter coverage of stats that I do over on the forums, let’s take a more comprehensive look at some relevant stats from Beta 11… (Beta 9 stats were the last I covered here on the blog.)

Overview

The data we’re examining spans the Beta 11~11.2 versions played from mid-March 2022 through the end of February this year, during which 935 unique players submitted a total of 11,207 runs. Of those, 895 (8%) runs are excluded here for being played in some special event mode, especially Polymind, for which I’ve already collected and shared stats in Part 2 of my Polymind design postmortem. Of the remaining runs, 10,062 had at least a score of 500 to be included in the leaderboards and general stats.

Patron activity was pretty significant throughout Beta 11 development, with 11 incremental prerelease versions to play, and since a big chunk of Cogmind player activity is by patrons (who also happen to be more likely to opt in to scoresheet submissions), technically an equally big chunk of our data can be traced to that group. That said, by default the stats below will ignore prerelease versions because 1) for our purposes we want to look at the final resulting “true” Beta 11, once it was no longer in flux, and 2) doing so also probably gives us a healthier cross-section of community data rather than allowing a small subset of players to significantly skew the results, as you’ll see in an example shortly.

In numbers, 2,997 runs were submitted from prerelease versions, accounting for 22% of the total (hence the real known run total was actually 14,204). I don’t really like the fact that Beta 11 ended up causing this large split, but that was a side effect of it being Cogmind’s longest beta cycle, and something we will generally be able to avoid going forward with somewhat more reasonably-sized releases and fewer prerelease versions.

Wins

Beta 11 added new toys and mechanics, but also some significant new challenges (Heavies! Cargo convoys! …), so as with most releases it makes sense to look for any impact on the win rate, which has remained stable for a while now.

Reminder: For win stats I only examine runs in Rogue mode, since that’s what the difficulty is balanced around, and it’s the only mode that enforces permadeath.

The overall win rate in Beta 11 was 5.3%, so a bounce back up from 4.1% in Beta 10, but not quite up to the 5.7% in the version before that. So still generally hovering around 1 in 20 runs being a win. However, as usual my preferred measurement of win rate is to look at the percentage of players who reported at least one winning run in that version, so I appended the new data to our graph from last time.

cogmind_beta11_stats_player_win_rate_beta8-11

Cogmind Player Win Rate (Beta 8~11, at least one win, Rogue mode)

Back to what I was saying earlier, notice the significant difference among those playing the prereleases, which tends to include many of Cogmind’s most experienced players.

Also interesting is the non-insignificant 33% uptick in win rate over the average from the three previous versions, which were relatively consistent. I can only speculate as to why this may be, but we can at least feel assured that Beta 11 is anything but a great increase in difficulty, and wait to see whether or how this value shifts in future versions. Is it an aberration? Or the new norm?

The most obvious potential reason, also reflected in the player count data, is that Cogmind had a smaller influx of new players during the previous version, leaving older players who are sticking around to get better and drive up the win rate.

Another interesting graph, especially when comparing prerelease data vs the final version, is the distribution of win types. Here we find that about 30% of wins are extended-game wins that achieved boss kills. That’s quite a lot! Still, compare to the prerelease community, where most wins (56.1%) are killing bosses xD

cogmind_beta11_stats_player_win_category_distribution_normal_vs_prereleases

Cogmind Beta 11 Player Win Category Distribution: Normal vs Prereleases

And the disparity there is not a potential side effect of smaller sample size--patrons alone reported 387 prerelease wins compared to the 454 of the entire public release group.

Difficulty

For the purposes of the remainder of this stat analysis, I’ll no longer be differentiating between difficulty modes--everyone’s included, though we can at least once again look at the ratio of players in each mode to see if there are any changes.

cogmind_beta11_stats_difficulty_distribution_beta8-11

Cogmind Change in Difficulty Distribution (Beta 8~11)

It seems there’s no clear trend emerging, so we have found our normal distribution and probably don’t have to pay much attention to this value anymore. It was most interesting after the addition of the difficulty selection menu as the first thing new Cogmind players see ;)

Impacts of Rebalancing

Our next section here will take a look at pieces of data that might be interesting in light of changes to Cogmind’s existing mechanics, of which there were several major ones in Beta 11.

Storage

By far the biggest change was to storage units, removing their stackability to put a hard cap on inventory sizes while redesigning stats around that new reality as well as expanding the number of options. There are a lot of mechanical details and historical discussion/writing surrounding inventory management and various builds which I won’t rehash here, but anyway now that we have the latest data I wanted to compare changes to inventory capacities over time.

cogmind_beta11_stats_inventory_capacity_by_version_beta7-11

Cogmind Avg/Max Inventory Capacity by Version. The chart explicitly shows the Beta 7~8 transition, then skips two releases, because that was a fundamental transition during which the High-capacity Storage Unit was returned to the game after having been removed years before in 2016.

You can clearly see how the new hard cap comes into play, the maximum inventory size being limited to 40 slots, whereas in earlier versions the limit was whatever the player decided to devote their build to in terms of mass and utility slot requirements. Of interest here is that although outliers with massive inventories were clearly removed, the average capacity of a build increased due to the rebalance.

The rebalance included a larger base inventory size, an increase in how much each storage unit could hold, and a couple new storage options at the high end, essentially shrinking the portion of a build dedicated purely to inventory, apparently without having a negative impact on the average inventory size. Great.

Another aspect I was curious about, given that we now have Cogmind’s widest-ever array of storage options, was which types of storage are the most popular, and among what kinds of players. For this data I relied on the “Favorite” item records in the scoresheet, which records the player’s most popular items of each type based on the number of turns they had it attached. Not an ideal reference basis for some use cases, but is simple and does mostly work for our purposes here.

Of course, technically our storage data will leave out a few players because the “Storage” type is shared with resource containers, but those generally spend most if not all of their time in inventory rather than attached, as opposed to storage units which are used continually throughout a run. Nonetheless, 3.9% of runs had a resource container as their favorite storage part. (Note that for these stats I’m only including runs that reached a depth of at least -6, because that gives players ample time to settle into their build and acquire the primary type of storage they want to use.)

4.4% of runs had no favorite storage type at all.

Moving on to our actual data, the winner of the favorite storage contest is… Large Storage Unit!

cogmind_beta11_stats_favorite_storage

Cogmind Beta 11: Most popular storage type.

This wonderful middle-ground storage unit has a diverse range of applications, be it for combat builds that don’t need to go quite so heavy on inventory, or fast-movers that want to carry more. About a quarter of runs preferred to use it, and it also happens to be the storage unit used by Haulers, making it relatively accessible

Surely though we’ll see a more telling difference in storage usage if we split runs into those using ground propulsion vs. airborne (hover/flight).

cogmind_beta11_stats_favorite_storage_by_propulsion_category

Cogmind Beta 11: Favorite storage type by propulsion category.

Not surprising that Small or Medium become the most popular if we’re talking about airborne builds, while heavier options are a more likely choice for ground-based builds. It appears that a decent number of airborne builds are still running Large (or even heavier options?!), but in many cases these values are probably not overlapping with the player’s time using an actual airborne build, but instead reflect a change of build at a different time. Cogmind is fluid, after all, with builds changing from time to time, and even transitioning from heavy combat to flight, or vice versa, depending on needs or strategy. So we can’t read too much into the outlying numbers as far as propulsion goes.

We can, however, take another look at the aggregate data, this time checking out what winning builds are going with…

cogmind_beta11_stats_favorite_storage_winning_runs

Cogmind Beta 11: Favorite storage type among winning runs.

Huge has an interesting presence here at the top, especially when you go back and compare its place in the first favorite storage chart. It’s fairly clear that winning runs prefer larger inventories a lot of the time. Not extremely large, have you (we’re not seeing a bunch of Cargo and Humpbacks at the top), but having spare parts, or even whole other builds to transition into when the time is right, is good strategy if you can support it.

Speaking of Humpbacks, look at that Humpback win… They’re suboptimal storage by far (hard to use!), but “Pogmind” fabricated several as soon as possible (early Factory), including spares, and kept using them throughout the mid-game until downsizing their inventory to Huge in -4. The purpose was, I guess unsurprisingly, GUs :). It wasn’t the strategy referred to by the community as “garmy” (I’ll skip the spoilers), but they rather appropriately became a Hauler-Golem and used their extra inventory capacity to keep it going over many maps while still having room to store other gear.

I was also interested in the four wins that utilized Lightpack, by Momo, ktur, leiavoia, and Olga. Momo stole it from the Exiles, but didn’t start using it until the mid-game and then through to the end (an extended win relying on the new Exo build, which we’ll get to later). ktur stole the Lightpack as well (buncha thieves!) and used it as soon as they entered Factory, through to the end of their run in C. Olga borrowed it from the Exiles (so nice!) and used it almost immediately and through the entire run until -2/Research (possibly losing it) on what was a pretty quick run ending in a sprint to the surface. leiavoia also borrowed it (nice!) and used it on arriving in Factory and through the rest of the run to C.

Dominant Classes

Speaking of Hauler-Golems, since build classifications were introduced back in Beta 9, that was one focus of the stats at the time, and I wanted to take a new look at whether there were any significant changes going into Beta 11.

For one, I would expect there to be fewer “Haulers” now, seeing as the redesign de-emphasized stacked inventories by concentrating all storage into a single part and leaving more room for other build-defining parts.

cogmind_beta11_stats_build_classification_modifier_prevalence_vs_beta10

Comparing the most common build modifiers between Betas 9 and 11.

Indeed Haulers were appropriately reduced, although percentage-wise they were essentially converted to yet more “(none),” that is builds with no modifier at all. While it’d be nice to have more modifiers, this is okay since special modifiers are meant to be… special. (Already a couple new ones have been added for Beta 13.)

Another notable change: “Messiah” was bugged before, resulting in a much higher prevalence than intended. Clearly that got fixed :P (there was only one in Beta 11)

The variety of complete build classifications in Beta 11 remained relatively unchanged in Beta 11--75 compared to 76/67 in Betas 10/9, and there we also see Haulers slipping out of the top ten:

cogmind_beta11_stats_primary_class_vs_beta10

Comparing the most popular primary classes between Betas 10 and 11.

The top ten classes among only winning runs shows a somewhat greater number of unique builds:

cogmind_beta11_stats_primary_class_wins

The most-used primary class throughout winning runs.

Mutants and Scavenger-Mutants are still going to be the most common by far, since that really is what Cogmind tends to be.

Remember these graphs are only showing the class most prevalent throughout an entire run, so don’t really reflect the variety that happens from map to map. I didn’t analyze that particular data, which would take longer to extract, though I do wonder how it compares, even weighting for turn count in each map…

In the end this system is just for fun, and it does at least succeed at that (seeing players commenting on what kinds of builds they create, as defined by the game, is neat :D). While I’d like to define more base classes and modifiers, doing so in an effective manner requires quite a lot more work, including for example building a testing system that could read in player scoresheets for their peak builds and assign class names to allow for aggregate analysis and adjustments based on those results. Such a system would be further complicated by the fact that not quite all the data points factored into class names come from parts alone.

RIF/Bothacking

Another major mechanic to investigate in relation to storage changes is bothacking. Traditionally considered an inventory-heavy strategy by some players, did enforcing an inventory cap affect RIF adoption, or the effectiveness thereof?

Some of the massive inventories seen used by players in pre-Beta 11 builds were indeed put together specifically to carry a huge number of spare Relay Couplers, though the assumption was that by reducing utility allocation towards storage units, more of those couplers could instead be directly attached to provide active benefits and flexibility, as opposed to having more limited options at once.

cogmind_beta11_stats_core_RIF_stats_beta9-11

Some core RIF stats for the last several Cogmind releases.

According to the data, somewhat fewer runs started the RIF journey by using any installer, and there was a greater drop in the number of runs that continued that journey towards maximum RIFness. Technically the latter can also be attributed to players adopting a low-RIF strategy that only wants to use a single installer, combining the benefits with other strategies, so I wouldn’t read much into it. Same with the continued drop in RIF builds that hacked at least 3 robots, which also fell but actually by a smaller percentage.

Comparing the average number of different Relay Coupler types attached at once, as expected that did increase from 2.7 in Beta 10 to 3.0. A handful of players in Beta 11 were often running around with ten or more couplers attached at once! The average total value of couplers attached at once in Beta 11 was 78, also an increase to Beta 10’s 75.

Way back for the Beta 7 stats we looked at the relative popularity of different robot hacks, so while we’re at it let’s see what’s changed since.

cogmind_beta11_stats_most_used_bothacks_vs_beta7

Comparing the most popular bothacks from Betas 7 to 11.

Ignoring raw numbers since there were a lot more Beta 11 runs, we can still see that the top four hacks remain unchanged, and…

  • purge_threat, while #5 in Beta 11, didn’t even make the top 20 in Beta 7 o_O
  • overload_power dropped significantly, functionally replaced by the newer amplify_resonance in many situations
  • find_chute, which?doesn’t even require RIF at all, is definitely growing on people, helping avoid those pesky chutes when you don’t want to get sucked away (or finding one when you do want to)
  • formatsys_low has gotten lots more popular (more green bot manipulation! smart RIFfers!)

From both the data, and what I’ve seen anecdotally, RIF is alive and well.

cogmind_beta11_stats_most_robots_hacked

Our Top 10 bothackers from Beta 11, ranked by the number of different robots hacked in a single run.

Propulsion!

Propulsion underwent some significant rebalancing, so I’m sure we’re all curious to see if that had a noticeable impact on larger trends. From what I see… I don’t think so? Certainly a portion of strategies and builds were affected, with some older approaches fading from favor and newer ones joining the mix, but in terms of the spread of propulsion types that are being used for the majority of a given run, there hasn’t been any huge paradigm shift.

cogmind_beta11_stats_most_used_propulsion

Comparing primary propulsion type preferences between Betas 10 and 11.

To calculate this I looked only at runs that made it to at least -6, and determined the primary propulsion type of a run to be that which was used to move the most spaces. Crude, but at least somewhat representative :P

Without close examination of individual scoresheets (technically there’s enough supporting info inside…) we can’t easily algorithmically account for players who are forced to switch propulsion types, or temporarily use one type of propulsion when the real goal, and most important parts of that run, instead rely on a different type.

Freely available multislot treads being much less common in the late game could easily have contributed to the drop in that figure, but sometimes it’s also just a case of having more of a certain type of player during a given Beta, especially seeing as a lot of players seem to like sticking to either ground or airborne propulsion for the majority of their runs. They are very different strategies and gameplay styles after all, and preferences differ.

Regardless of whether extracting each run’s most-used propulsion and tallying those, or taking the total spaces moved for each type of prop from all included runs, the end result is about the same: Airborne propulsion is used about a quarter to one-third of the time.

Note that in both calculations, airborne prop is always skewed down a bit from how often it is normally used, since it is not available from the very beginning, and is challenging to main before leaving Materials, so we could get an even more accurate representation by excluding those depths.

But it’s also telling to look at full-length runs that went on to win, which I included in that graph. Flight definitely takes the lead there, being the safest way to earn the simpler win types, and even good at more safely gathering the pieces necessary to put together the best build upon reaching (or nearing) extended game areas for… bigger confrontations.

The least commonly used propulsion is still hover, being harder to build around and maintain, but also arguably the best if you can use it (kind of the expert prop among experts). Wheels are good but don’t have the same longevity as other ground prop, so are used for a smaller set of builds, or for some people primarily in emergencies.

Damage Types

Changes to some common damage types have expectedly had a noticeable impact on usage preferences, for which like propulsion I analyzed by checking runs to at least -6, counting the percentage of those runs that fired more shots from a given weapon type than any other.

cogmind_beta11_stats_damage_type_preferences

Comparing damage type preferences from Betas 8, 10, and 11.

Thermal use shows a sizeable increase after buffing that category in Beta 11, primarily at the expensive of Kinetic weapons, the other of the two most-commonly found (and used) damage types.

Electromagnetic weapons were nerfed going into Beta 10, cutting their usage in half, and again in Beta 11, cutting it in half again :P. While it’s worth noting that strong EM builds can take fewer shots to kill most targets, meaning shot count (or even damage totals) don’t offer a great comparison to other damage types, relative usage from version to version is clearly down. There’s room for that to bounce back up a good bit in a future update surrounding corruption mechanics, but we’ll see if and when that comes to pass… For now I’m good with it where it is, being still pretty effective in combination with the right build and strategies, but no longer an easy approach for any build that wants to just plug it in.

EX damage was added to the graph purely for completion, as one of the common damage types, though being situational it will always remain low compared to the others on a graph like this. But if you think about it, 1.9% in Beta 11 means nearly 1 in 50 runs is someone going ham with explosives and making it to at least -6 like that :P

With regard to the increase in thermal weapon use, we also see a marked increase in robots melted in Beta 11 due to thermal transfer.

cogmind_beta11_stats_most_robots_melted

Robot melting leaderboards from Betas 10 and 11. You really had to work at it before, but melting robots is now a more common side effect of thermal volleys, not to mention the group of new weapons specifically aimed at increasing melt potential.

Corruption

One of the big changes to EM damage in Beta 11 was of course the potential to corrupt the victim’s salvage, causing some amount of system corruption when attached. This may cause players to shy away from corrupting targets with desirable salvage, or avoid attaching quite as much of that salvage as they would before. Still, sometimes you just have to put on that extra corrupted part to survive, or maybe just don’t care :)

Due to the changes we’d expect the average system corruption to increase in Beta 11, and indeed it did, up from 2.6% to 3.3%. Also note that even if EM weapon use is down overall, targets can still become corrupted in other ways.

The number of actual deaths to system corruption remained unchanged, however--that’ll always be quite rare since other contributing factors tend to kick in long before that :P

cogmind_beta11_stats_corruption_death_leaderboards

System corruption death “leaderboards.” There were five recorded in each of the last Betas, accounting for 0.05% of Beta 11 runs, and 0.04% in Beta 10.

The average number of corrupted parts attached in runs reaching at least -6 was 1.4, so not exactly high, accounting for only 0.6% (~1/200) of all attached parts. I found it amusing that the absolute highest amount of total corruption from attaching corrupted parts was 190 by “deadnoob,” who attached 31 corrupted parts (6.5% of their total), and made it to -1/Access in that run.

That run didn’t even make the top ten when comparing across all Beta 11 runs the highest percentage of attached parts that were corrupted:

cogmind_beta11_stats_highest_percent_corrupted_parts_attached

Beta 11 runs attaching the highest percentage of corrupted parts--up around 10% or more is quite a lot! (incidentally I noticed woegarden on that list, who happens to have recently released an album inspired by Cogmind!)

Following the readjustment of corruption-related utilities for Beta 11, the amount of corruption purged has come down somewhat, most significantly a result of capping the amount of corruption individual utilities can purge. Among runs reaching at least -6, the average amount of corruption purged in Beta 10 was 3.23%, falling to 3.04% in Beta 11. The same trend is reflected in the top corruption-purging runs of each release:

cogmind_beta11_most_corruption_purged

Comparing the top 10 runs by total corruption purged in Betas 10 and 11.

Since the community is split on how much corruption really matters, the types of players playing each version may also impact whether and how often to purge corruption (and you see a lot of different names in the above graph because we did indeed have different players more likely to be playing one or the other), though I’m sure the main reason behind the disparity is that it’s no longer possible to wait in certain areas practically indefinitely with a single utility normally stashed away in one’s inventory to clear corruption. The fact that purging dropped but is still decently high, even with a cap, at least shows that the relevant utilities are common enough to be of help, and getting use.

Next time we’ll have to look at how many people were actually using the new corruption screens. They are better at preventing greater amounts of corruption, and I know some players used them and the data was reported in scoresheets, but the analysis program I was using left them out and I didn’t discover until too late to include them here xD

New Content and Mechanics

How about that new content!

DSFs

Distributed Storage Facilities became places you can actually visit in Beta 11, so how many people have been doing that? 1,056 runs (10.5%) visited at least one DSF. Of those, 138 (13.1%) visited more than one, with Jezoensis setting a record by entering 4 in a single run (the theoretical maximum number that can be visited is five, though the process to enter any more than three is already rather convoluted).

Since the entrances tend to be locked early on, I was curious about how much time players tend to spend in Factory/Research maps prior to entering a DSF: Apparently the average number of turns is 92. Out of 1,210 total DSF visits, half were within 53 turns, and a quarter were within 17 turns.

The absolute longest anyone ever spent on a map before successfully entering a DSF was a whopping 1,538 turns, by yub. They weren’t just sitting around, and they were indeed spotted a little, but it looks like they were jamming at the time, which is the easiest way to keep DSFs accessible for so long--just jam all comers :)

The number of runs that ended in a DSF: 155 (14.7% of those that entered). 42.6% of those died to the sterilization system. Oops. But this was also the first release to include DSFs, so of course it’s a learning period during which you have more people entering for the first time just to see what’s in there, and not necessarily knowing what to expect.

Critical Strikes

Beta 11 significantly expanded Cogmind’s array of critical strike effects, but as they’re more an expected occasional side effect of damage types (which we already covered) and we have nothing to compare to since they’re new, I don’t have much to look at here.

One of the more extreme effects, meltdown, is also on the rarer side for a common damage type, appearing with pretty low base chances on some thermal cannons, so I was curious to see how effective that is for some players and put together a chart for that.

cogmind_beta11_top_meltdown_crit_kills

Beta 11 top 10 meltdown critical strike kill counts. Getting several dozen outright meltdowns across a run is a pretty neat reward. I’ve seen screenshots of one-shotting tough Behemoths with builds that do this, which has gotta feel good :)

Overall, crit-focused builds seem as alive as ever in Beta 11:

cogmind_beta11_top_critical_strike_kills

Beta 11 Top 10 critical strike kill counts. Pogmind (nogimagogi from Discord) is clearly a fan of this strategy :P

Traps

Traps have always been an increasingly useful supporting mechanic, and Beta 11 further upped their potential by allowing them to be stored within Trap Extractors, so we’d expect to see a greater emphasis on trap use in Beta 11. The data supports that assumption, showing that on average nearly four times as many traps were extracted in Beta 11 (0.165) compared to Beta 10 (0.046).

2.6% of Beta 11 runs actually found and used a Trap Extractor at all, compared to only 0.7% in Beta 10. Interestingly, the average number of extracted traps was almost identical between the two releases, and the average install count was actually 28% higher back in Beta 10, though this is due to outliers and usage of other non-standard derelict tech.

If we instead compare the top 20 players by total traps extracted, i.e. those people leaning heavily into use of the new Trap Extractor mechanics, we instead see both a 29% version-over-version increase in extraction count, and 43% increase in traps installed among that group.

It’s definitely a become a pretty strong approach in its own right, and anecdotally the advent of extractors holding traps separately has indeed increased the prevalence of new trapping strategies vs. dangerous or high-value targets, rather than using up traps ASAP to free up inventory space.

Fabrication

Beta 11 overhauled the fabrication process, and while some players were worried this would ruin the ability to create builds via those means, I don’t think that’s turned out to be the case. From what I’ve seen so far, everyone basically just needs to learn and grow accustomed to using the new systems. Fabrication-centric strategies are emerging as before.

The numbers are still down, though.

Looking only at runs that reached at least -6 (since there aren’t any Fabricators until reaching Factory), 40.9% built at least one part in Beta 11, versus 54.2% in Beta 10. Players built an average of 1.6 parts in Beta 11 runs vs. 2.5 in Beta 10.

There was a lesser impact on robot fabrication, most likely due to the less specific categorization of robot Authchips combined with the fact that fewer people tend to fabricate allies in the first place. 13.3% of runs to -6 built at least one robot in Beta 11, versus 14.5% in Beta 10. Players built an average of 0.44 robots in Beta 11 runs vs. 0.48* in Beta 10.

1,187 runs (11.8%) carried at least one Authchip, and 60.0% of those runs actually used one to build something, which doesn’t seem too bad. Duckboy carried the most Authchips at once (13!) and used them to build a giant army :D

Comparing the top fabrication runs from Betas 10 and 11, we can see that despite the reduction in parts produced, dedicated players are still making good use of Fabricators with or even without heavy use of Authchips (depends on strategy!).

cogmind_beta11_top_fabrication_runs_vs_beta10

Top fabrication runs in Cogmind Betas 10 and 11, including parts and robots, and showing what percentage of Beta 11 fabrications were completed with help from Authchips.

Fabnet

This section and the remainder of the stats will be covering a few spoilery bits of Cogmind, so feel free to bow out now if you’re not ready to read more about fabnets, SR targets, and the new end-game Exo build.

So we have a new strategy for abusing Fabricators to interfere with Complex 0b10 operation, which doubles as an alternative way of making friends. Obviously I’d like to know just how much it’s been getting used, and it turns out quite a lot!

7.9% of all runs that made it to at least -6 reported using some amount of fabnet (-6 because this feature doesn’t even kick in until then), and 15 runs hit the fabnet cap (15%) at least once.

cogmind_beta11_top_fabnet_runs

Beta 11 top 10 fabnet runs. Look at that 72-override win by aperiodic!

Having been just introduced in Beta 11, I’d like to keep an eye on this feature next time to see if it picks up as more people discover it, or falls by the wayside.

SR Targets

Several changes to various artifacts, as well as the addition of some new ones, have occurred since the last replication check in Beta 9, so I’d like to see if there has been any meaningful change in SR targets since then.

Below I’m reposing the old Beta 9 graph alongside the new Beta 11 data. Normally I would be most interested in, and only share, the top uses, but specifically with the replicator, since it’s so unique, it can be fun to see what individuals are doing with it so we can imagine what they were up to at the time (aoemica specifically didn’t need it on one run--the Med. Storage Unit is their work).

cogmind_beta11_replication_results_vs_beta9

Comparing SR results between Betas 9 and 11 (open at full size for easier reading).

This time around we have 53 different SR targets vs. 36 last time, a 47% increase, compared to a lesser 23% increase in the absolute number of replications, so the variety of uses did in fact increase.

One of the biggest catalysts here was the ISR replication nerf to make it create an enhanced version of the original artifact rather than purely duplicating the original, which was very powerful and clearly the primary target of anyone with an SR if they could get their grabby things on both of these items in the same run. The point of that change was indeed to spur more variety, so… success!

The Shearcannon was an entirely new item in Beta 11, and clearly a big hit which absorbs a good chunk of new SR uses, though it was also a bit too common in Beta 11, so I imagine that value will come down a bit in Beta 12 as well.

Seeing a Core Expander on such a list in earlier versions would’ve seemed like a waste, but in Beta 11 it makes sense specifically for the new Exo build! So we know what those folks were up to…

The rest I’ll leave you to mull over :)

Exo

One of Beta 11’s new build options, this one a pretty complete transformation, is the Exoskeleton, specifically that one housed in Section 7. First you’ve got to be able to get there, but once you do, and under the right conditions, it’s a route to new gameplay and content on the back of a mostly OP build. I say mostly because still not quite everyone survives the results of using it :P

Here are some relevant stats I collected:

  • 73.1% of runs that entered and survived Section 7 did not integrate with the Exoskeleton (technically they may not have even had the means, so it’s not always a choice)
  • 0.8% of runs integrated with the Exoskeleton
  • 11.0% of Exo runs did not make it out of Section 7
  • 74.4% of Exo runs went on to win
  • 80.3% of those winning Exo runs were extended wins (67.3 of those earned a ++, 32.7% earned only one +)

Exo runs are definitely easier once you get to that point, especially for experienced players--I got my highest score of Beta 11 in a build based on it without too much difficulty, and aoemica did a lot of extended streaking with it, though using separate patron builds so it doesn’t show up in the data here.

It might see more adjustments in the future to increase the challenge, but for now it’s kind of a backup option providing something else to fool around with if you get to that point and can’t carry out your original plan, or a way for some players who have more trouble with some very hard extended areas to still see them in some capacity (without lowering the difficulty level and having to adjust to the other changes that come with that).

Posted in Meta | Tagged , | Leave a comment

Special Mode Design, Polymind Part 2: Players, Stats, and the Future

Last time in part 1 I covered everything leading up to Cogmind’s Winter 2022/Polymind event, so architecture, UX design, balance, multitile robot considerations etc. Now let’s take a look at the aftermath!

After Polymind was finally released and I could take a breather, I had a lot of fun seeing other players dive into it, reflected both in what’s been shared on the Discord server and also simply by checking out scoresheet uploads since those include new information specific to the event mode.

Cogmind Polymind Scoresheet Map Excerpt w/Annotations by Captain Croissandwich

It’s especially funny seeing Cogmind in the scoresheet’s final map summary represented by a character other than ‘@’, as seen here in an image shared by Captain Croissandwich who is just around the corner from the exit/win after having already opened the door, as a ‘u’ (Builder/Engineer)… kinda surrounded by unfriendly bots that had clearly become too suspicious!

Any time new play styles are introduced, there’s always a good bit of activity in the community since figuring out a new meta in an otherwise familiar world is an interesting exercise for fans. Polymind being a pretty extreme departure from normal Cogmind, there’s a lot to figure out.

My hope was that players would find creative new solutions to challenges, or at least fun aspects to toy with while setting their own unique goals besides simply winning.

Some strategies are obvious, as intended, such as preferring to take control of allies since their cost is always much lower (generally by 66%, though there are exceptions), and others are more indirect, such as obtaining robot schematics and fabricating desirable allies to then control.

The great thing about combat-capable allies is that later releasing control doesn’t result in having an angry hostile right next to you. Combat-capable hosts are useful, even required sometimes because they’re more resilient while also being the primary method of obtaining more Protomatter, but as aptly described by players there is a “riding the tiger” aspect to trying to leave a hostile one behind once you’re in control. You’ll likely want to get their weapons shot off first, or have some other plan.

Players also came up with the interesting strategy of using Repair Stations to remove unwanted parts from your host, since unlike Cogmind, hosts are not capable of reattaching the repaired parts themselves.

NPCs are commonly desired hosts, generally expensive but also relatively powerful compared to most common Complex 0b10 bots. Strategically speaking, the main goal of taking a combat host is to eventually end up with more Protomatter than you spent on it in the first place, so we’re back to the importance of those cost numbers, and no doubt more fine tuning is called for.

On that note one particularly strong strategy is “Tracker chaining,” or intentionally getting what are normally dangerous enemies sent after you, specifically with the intent to take control of them and use them to fight their friends--rinse and repeat as you progress. In a later update I had to significantly up their cost because Trackers are a special robot outside the normal build balancing rules, at least insofar as our integrity and core exposure variables do not reflect what they’re really capable of. Even after the increase they’re still good, though somewhat more balanced.

One of the most interesting discoveries, made by CaptainWinky, takes advantage of a Mechanic host’s repair abilities to build robot friends! Normally Mechanics use a collection of Backup parts from their inventory to restore basic functionality to robots that have lost their power/propulsion/weapons, and I had assumed that when fitting replacements they search for the appropriate Backup-named part, but no… The assumption is that their inventory would never contain anything other than Backup parts, so the code actually just checks for any available inventory parts that match the desired target slot (a faster check). You can see where this is going :P

Cogmind Polymind Allied Grunt w/Powerful Parts (fitted via Mechanic host)

A regular controllable grunt with very powerful gear xD (screenshot by CaptainWinky while testing the concept in wizard mode)

Since they’re not limited to Backup-series parts, with a Mechanic host you can gather other parts and “repair” your allies with a different loadout. Totally didn’t expect that, but it’s great.

In practice it’s probably hard to take advantage of since it’s a repair functionality after all, one that can’t be used unless the ally in question has an empty slot after taking damage. Other robots are not usually very resilient, so by then their core will often already be damaged as well, after which even with new parts they’ll probably end up dying quickly anyway. It might come in handy later on with stronger robots, or in specific situations. You also can’t fit any utilities to a robot, since that’s not a category of parts they replace with Backups (although this specific discovery honestly has me thinking about adding something that would slot in as a Backup utility).

Stats!

Now that the event has come to an end, the Polymind leaderboards have reached their final state, and it’s time to review the run data and pick out some stats for closer examination!

Cogmind Polymind Leaderboards (final)

Final Polymind leaderboards.

I tacked a couple extra days onto the end of the leaderboard cutoff past when the Polymind autoactivation period ended (through January 7th) so that anyone who had started a run near the end had some time to finish it and still be included. That means the official event ran for about 16 days, though other runs outside that period (and any additional lower-scoring runs for each player) can of course be found in the complete Beta 11.2 run database.

During this period, a total of 786 Cogmind runs were submitted, 328 (41.7%) of which were something other than Polymind. In a majority of cases those other runs were new players who didn’t yet qualify to have the mode start automatically, the remainder being anyone who deactivated it manually (didn’t want to participate) or playing some other special mode (launching any new event tends to bring attention to past events).

The data we’re looking at here is for the 457 Polymind runs (58.1% of the total) submitted by 113 unique players. That’s an average of 4 runs per participant. Polymind run counts per player ranged from 1 to 20, but most people played through at least a few runs. (Reminder: Cogmind run data is opt-in, so we don’t have any info for those who are not submitting scores.)

There were a total of 14 Polymind wins by 10 unique players, including two extended wins (both by aoemica). All winning runs except for one took less than three hours, and most were about 1~2 hours, so as reported Polymind runs do tend to be faster than regular Cogmind (see the Beta 10 stat summary for a graph of Win Count by Hours). The reduced length comes mainly because you have few significant incentives to take detours and collect branch rewards, or even seek out specific items--it’s simply a matter of survival to the end through a process of controlling other bots while gaining enough Protomatter to maintain that momentum.

Total play hours for this data set clocked in at 276 hours, so about twice what I spent on it. Not a great ratio, but then not surprising since I mostly work to serve a smaller number of long-term players at this point, and as I’ll write a bit about later, some of the work could impact the main game itself and gain more longevity that way. Plus of course some people will still play Polymind in the future.

Polymind Classes

One of the more fun bits of Polymind data which I was eager to examine is the class distribution list, since unlike the normal behavior which derives player build types from their current loadout, here we could instead use it to see what classes of bots they’re preferring to control (I had the system switch to simply reporting the current host class).

Among those runs with a Dominant Class of “Cogmind,” meaning their most common state was running around naked with no host at all, the majority were understandably limited to the early game (first few depths). 38% of Cogmind-dominant runs, however, reported making it to the mid- or late-game (none won), with half of those also naked for the majority of the entire run.

Of course most Polyminds spent their time in control of hosts, as expected, averaging 4 different classes of host throughout their run.

The record-holder for greatest number of unique classes controlled in a single run is CaptainWinky, whose list includes 11 different classes (making it onto the list requires spending at least 3% of the run using a given class):

Cogmind Polymind Scoresheet (Captain Winky): Class Distribution

CaptainWinky controlled a Sentry-class robot for 24% of their run, but also controlled hosts of 10 other types.

The number of unique host classes ranged from 3 to 9 among winning runs, so generally above average. Actually, the only winning run with a below-average dominant class count was my own--only three! During that run (being my first) I tried out a number of other classes, but not for a significant enough chunk of relative time to be included in the list.

Cogmind Polymind Scoresheet (Kyzrati): Class Distribution

Class distribution for my Polymind win.

As you can see I’m a fan of Heavies and their devastating firepower and just all around buff part-covered builds (plus they can rest off their suspicion at guard points!).

Despite my high 62% preference for Heavies, among winning runs that one actually ranks behind another for emphasis on a single host: LILY’s dominant class was Programmer, at 67%!

Cogmind Polymind Stats: Dominant Classes (winning runs)

Dominant class for each of Polymind’s winning runs, ranked by how dominant it really was throughout that run.

Here I should mention that I’m not differentiating difficulty modes for the purpose of Polymind data analysis. LILY had the only non-Rogue run among the wins, one of 76 (16.6% of the total).

To give some of the data coming out of these lists proper context, we’ll also have to explain one of the quirks of the class system: While players are certainly familiar with common Grunts, Sentries, and whatnot, some may not be aware that there are other special robots also categorized as those same classes. For example, some runs may show a high percentage of Swarmer hosts, like KTG-v3’s win spent 48% as a Swarmer! Examining the history log from that run we can see they indeed must have controlled common Swarmers for numerous maps before finally switching to the one and only Tracker (a special, more powerful, type of Swarmer) they eventually controlled in Research.

Cogmind Polymind Scoresheet: History Log w/Special Host

KTG-v3 takes control of a Tracker in Research. Before this, seven of the maps they traversed using common Swarmers.

So the history log provides more color as to what kinds of special hosts each player controlled, as does the event-specific “host kill count leaderboard,” both of which record the specific variant or name of the host. It is there that we can examine hosts of particular interest.

122 (26.7%) Polyminds controlled at least one unique special host, with about half of those controlling more than one. youngster controlled the largest variety of special hosts, eight in all, in a run that eventually went on to win.

By far the most popular special host to control was EX-DEC, an Exile that could be met early and controlled for relatively cheap, considering the formula-based Protomatter costs. EX-DEC is not normally a combat bot, but does carry a decently powerful autonomous weapon that allows them to move and shoot at the same time.

Cogmind Polymind Stats: Special Hosts Controlled (all runs)

Special hosts ranked by total times controlled across all Polymind runs.

The Tracker is up there, too, being quite cheap for a good while (that formula again…) until I significantly increased it manually in a later update (though still plenty worth it considering how powerful they are). Beasts make sense at #3 as one of the earliest ways to have some fun with a destructive multitile robot. The next two, Strikers and Executioners, along with many others on this list are clearly from Warlord-related events where these combat bots are either cheap (allied) or at least plentiful and effective. Many of the rest are various NPCs, since almost nothing was off limits for control, and NPCs often have decent loadouts.

The full mapwise Dominant Class list that goes along with these can be even more interesting, in order to see which stretches of the world, and for how long, players used them, but that data contains much bigger spoilers so I’ll leave that off here. You can always check out other Polymind stats on your own by examining the raw Beta 11.2 run data to see more (sort by Mode to more easily find all Polymind runs).

Polymind-specific Scoring

Some bigger Cogmind events come with their own dedicated section in the scoresheet for recording event-specific data, and for Polymind there we’ll find some other entries besides the host kill leaderboard.

Cogmind Polymind Scoresheet: Polymind Data Sample

A sample Polymind scoresheet’s data section.

Among the Polymind-specific scoresheet data, we have the Top 5 Hosts by Kills per run, where it’s interesting to pick out the most destructive individual hosts among winning runs. Captain Winky led in this category by far, having managed to take control of 8R-AWN, by far the most powerful early target but also very expensive for that depth, hence only being used twice during the event.

Cogmind Polymind Stats: Top Deadly Hosts Ranked by Kills (w/player) (wins only)

Polymind’s ten most deadly hosts (and their controlling player) among winning runs.

The kill records get even higher if we include all runs, even those that did not ascend:

Cogmind Polymind Stats: Top 10 Hosts by Kills (all runs)

Top 10 individual Polymind hosts by kills, across all runs.

Captain Winky is still up there, in fact the only one on both lists. We can also see the only other 8R-AWN controller ;). And Perseus sure knows how to get the most out of a host!

Cogmind Polymind Scoresheets: Host Kill Leaderboard Samples

Here are some more samples of host leaderboards submitted in various scoresheets. Each ranks the best hosts by kill count, and where they were first controlled.

Note that during the first couple days of the event there were some issues with the host kill leaderboard system (fixed in one of the several patches), so technically a portion of the earlier runs may have failed to consider a few hosts for inclusion.

With a further fleshing out of the job system, it could also be interesting to tally a corresponding “unsuspicious leaderboard” ranking individual hosts by how much they contributed to lowering suspicion over their lifetime. This would allow us to see what kinds of hosts were being used for that purpose, and their relative effectiveness.

Classes Controlled tallies would be fun to examine over the long term if players were to continue doing many Polymind runs, but as an event there are only so many runs per player. This means the likelihood of optimal play is fairly low, as everyone is still experimenting with possibilities and learning what they can do with different hosts, making that stat less meaningful for aggregate analysis right now.

Robots Controlled data might hold some insights, especially looking at the percentage of new hosts at each depth which are combat-capable, although pulling those numbers from our data set in a meaningful way would be pretty challenging so I didn’t go that far…

Average host suspicion among winning runs was 64.2, lower than I expected! And among non-winning runs the average was 60.7, so not a significant difference. Some of the more interesting runs in this regard:

  • Thermalderp averaged only 26 suspicion, surviving 90% of the run as a Recycler and making it all the way to a -6 Garrison before being destroyed by a Grunt
  • Perseus spent 78% of one run as a Programmer and made it all the way to -1 with an average 32 suspicion
  • LILY and lyrabold tied for the lowest suspicion (40) among winning runs, the former also surviving 67% of the run as a Programmer, and lyrabold 58% Sentry.

Bonus Points

Outside the Polymind section, we also have a special bonus point entry simply called “Polymind Skill.” This value is a combination of multiple factors to reward players for being good polyminds, generally awarding points for behavior and achievements that are not normally sources of bonus points (or don’t even exist in the regular game).

At the high end Polymind Skill tended to contribute about 10-20k points to one’s final score, so often counts for a fairly significant chunk of that.

Cogmind Polymind Leaderboard Polymind Skill Percent

Top 20 Polymind leaderboard scores, along with the percentage of that score accounted for purely by the Polymind Skill bonus.

To compare, I also reranked the leaderboards by Polymind Skill to see what would come out of that:

Cogmind Polymind Leaderboards Re-ranked by Polymind Skill (Top 20)

Polymind leaderboards ranked by Polymind Skill (final Top 20 only).

Only a couple players swapped in/out of the Top 20 when switching metrics, so the effect was not significant in that regard, although it did enable a few players in the Top 20 to jump quite a few places.

I was thinking it might be fun to rank the final Polymind leaderboards using this method, but I would first want to further tweak the values and formulas used to generate the bonus, since all that was set based on theory, before Polymind had ever been played.

Perseus earned the highest Polymind Skill of any run (23176, 32% of their total score), and Captain Winky earned the highest among all wins (17933, 41% of total score).

aoemica had the only extended game wins, and while both of those runs had by far the lowest Polymind Skill as a percentage of score (both only 18%), that’s a more likely result as branches and extended game areas offer lots of alternative point sources to tip the balance in favor of non-Polymind scoring. As far as true play style goes, we could get more accurate readings by looking only at main maps, for example.

One of the preexisting bonus score components pairs especially well with Polymind: pacifism. Polymind’s capabilities of course lend itself to aiming for even more points (and survivability!) via the Pacifist bonus (the way it normally works is that you receive extra points for each new depth reached without having destroyed any robot on any previous floor, generally achieved by either avoiding enemies completely, running from them, or using alternative means of dispatching them). Polymind can fairly easily remain unsuspicious in the early floors, which are dense with cheaply controlled non-combat bots, and the data strongly reflects that: 44.4% of Polymind runs had at least some Pacifist bonus, quite high compared to a mere 4.5% in the regular game!

Looking at runs with the highest Pacifist bonus, we see a bunch of new names:

Cogmind Polymind Top 5 Runs by Pacifist Bonus

Top 5 Polymind runs by Pacifist bonus.

These players were particularly interested in remaining undetected, only sometimes controlling a combat bot such as a Sentry or Hunter to gather Protomatter for more sneaking around (eventually losing their pacifist streak at that point unless they had acquired Protomatter through other means). Above I only listed the primary class for their run, though they tended to control a good variety of classes across their run, at least 5~6 different types.

lcbb_tuk in particular had an interesting one, sticking with the same Watcher picked up in -10/Materials for the entire run. They were apparently attempting to speed run it with that Watcher, a decent choice due to their speed, evasion, and sensors, all in a single package, but eventually headed into the Upper Caves where they were chased down by a P-70 Sage.

Future of Polymind

Like most Cogmind events, Polymind will remain accessible in future versions of the game. (A list of all currently available modes, each with a summary and date when they were held, is avaiable in the manual.)

Seeing as I had already done quite a lot of work on Cogmind’s next version (Beta 12), and that version wasn’t yet itself ready for release, Polymind was developed as part of the public Beta 11.1 branch, and released as 11.2. (Patrons found it funny that when starting up their Beta 12 builds the date-based version notification system informed them that a “newer” version was available, even though Beta 12 has a lot more new stuff :P)

As a pretty big project, one that even included a few features we want back in the regular game as well (that new force melee toggle!), there’s a lot to import into the upcoming Beta 12. I normally don’t bother simultaneously working with multiple branches like this, but here it made sense.

Out of curiosity I checked just how much the code base expanded with the addition of Polymind and was surprised to see it clocked in at nearly 5k lines! Lines of code is of course a pretty bad metric, but it’s easy to calculate and fun to compare nonetheless, as long as the context and limitations are understood. Naturally we want to see how Polymind weighs up against Cogmind’s other special event versions :)

Cogmind Special Event Versions: Lines of Code (2017~2022)

Lines of code added for each of Cogmind’s special event versions over the years (2017~2022).

Yep, as expected Polymind is a chonky one. Also, fond memories of building an entire event in one hour--Launchers mode, Cogmind’s first ever April Fools Day event, which was unannounced and really caught people by surprise ;) (it was made and released on a whim that very morning). Note that some of these larger builds were accompanied by unrelated changes or fixes that could impact the LoC count, but the vast majority (if not all) of each was about the main event. Also note that some events added data as well, but I only compared source code for the purposes of this graph (it’s likely a similar ratio, except with Holiday Mode 2017 which was a data-heavy mode and that’s also part of the reason it was only playable in that version of Cogmind--I didn’t want to keep all that data polluting the later versions).

Anyway, time for Beta 12 Polymind. I’ve merged code before, but not anywhere near on this scale, so I searched up a new tool to help facilitate the process and found the lovely Meld. It’s very easy to use, can be navigated pretty much entirely by keyboard for fast merging, and supports three-way comparisons of directories and the contents of their files.

Cogmind Polymind Merging (Meld): Files

Meld comparison of files between Beta 11.1, 11.2, and 12.

This is perfect for my case since I can load up the original 11.1 alongside 11.2 and 12 while moving all the new parts of 11.2 into 12, most of which are detected just fine.

Cogmind Polymind Merging (Meld): Source Code

Meld source code comparison between Beta 11.1, 11.2, and 12.

There were just a few cases where I had to look a little closer due to some changes while writing Polymind that affected the overall logical organization rather than simple modification to lines of code.

Cogmind Polymind Merging (Meld): Source Code Merge Conflict

A relatively rare sighting during this process: red denoting an obvious conflict.

Of course this was also helpful for merging all the other supporting materials as well, so not just source code but also media files (SFX!) and external data/scripts.

Cogmind Polymind Merging (Meld): Data

Sample data comparison between log message definitions.

After completing the merge, I went and tested it out by streaming a round of Polymind in the IDE. It was meant to be a short one, followed by switching over to regular Cogmind to ensure that’s working properly as well, but I ended up having too much fun (and also playing well enough despite fooling around) to get really close to another Polymind win :P

Since it was basically a test run for dev purposes, there’s some dev talk in there, too.

Among my notes for Polymind, as I built it I was also recording features that would be nice if it were revisited one day for a significant update.

Probably highest priority among them would be making it so that almost any 0b10 robot has more relevant jobs it can do, especially combat bots. Derelict incursions! Calling for help from Garrisons! Basically things that would’ve required a lot more unique content and balancing to actually produce, and therefore beyond the scope of this event. At least there’s the low-hanging fruit of guard-type robots being able to remain at designated guard spots to lower suspicion, but even that system could be expanded.

Examples of other ideas:

  • proper faction responses to various host types outside 0b10
  • more machine interactions for 0b10 classes
  • add derelict reactions to having been a host
  • rework the “hidden faction” issue, since that doesn’t matter in Cogmind but clearly affects behavior in Polymind

I was thinking, and others were even later commenting, that Polymind could really be developed into a whole different game, leveraging the world of Cogmind and layering over it an alternative story and gameplay goals. Of course making another game is on a whole different level in terms of work :P

There are already other possession-focused roguelikes, a surprising number, actually, including also several 7DRLs, commercial projects, as well as multiple games in which it’s not the central mechanic but does at least exist as an ability.

In any case, some of the smaller bits from my notes that never made it into the Polymind event will likely find their way into a future release of Cogmind anyway, like I sometimes do for other major alternative modes when people are still playing them. There are still a couple fixes to come, but I didn’t want to do yet more releases during the event period, since there had already been several…

And even if Polymind is never revisited in a major way, experimenting with events like this, and the features required to get them playable, sometimes has a way of filtering back into the regular game in some form or another.

Like I discovered and experimented with what it’s like if the player has a way to temporarily be “friendly” with 0b10 (without actually changing faction alignment), harking back to that zxc idea about disguises mentioned earlier. Maybe we have a reasonable framework for that now?

Multitile Entity pushing is another feature that could offer a potential route for solving movement issues with very large bots (so long as it’ll agree with the AI--there is a distinct difference between allowing the player to do something and getting the AI to use it properly).

That backup utility for Mechanic repairs is definitely on my radar now, too…

???

???

 

Posted in Design | Tagged , | Leave a comment

Special Mode Design, Polymind Part 1: Architecture, Features, and Balance

At the end of 2022 I launched Cogmind’s most involved special event yet: Polymind (not to be confused with my earlier unrelated 7DRL, POLYBOT-7!). The release announcement already covers the basics, so I’ll assume you’re familiar with those already and avoid rehashing most of that here. Instead let’s talk development! Now that the event is over, towards the end we’ll also be taking a look at player stats from Polymind, which also had its own leaderboard for the duration.

Cogmind Polymind Cover Image

Polymind cover image. The word layout was actually created in REXPaint, which was faster than trying to use Photoshop since it was easy to drop in Cogmind tiles and manipulate those on a grid.

In terms of dev investment, Polymind is Cogmind’s most involved alternate mode yet, requiring well over a hundred high-paced hours of mostly coding work to realize. Unlike most prior events which tended to be concentrated in just a few areas of the code, this one is all over the place. It modifies the AI, player input, alert mechanics, part interaction… all sorts of stuff, while also adding many of its own new mechanics, too.

In short, Polymind enables the player to take direct control of almost any other robot, basically “possession” mechanics as found in many other games. For years players have jokingly imagined roleplaying as a Worker or some other lowly non-combat robot frequently seen roaming the complex. In Polymind it’s not only possible, but doing so can even aid in your survival :)

In a complete departure from Cogmind’s normal core mechanic, the player is unable to attach any parts, or even evolve more slots, but is instead entirely dependent on hosts for protection, or avoiding detection completely by melding into Complex 0b10. While undetected, you can move around as if you belong, trying to keep your suspicion down, or eventually need to figure out a way out of trouble when things start going south. Fighting is always an option, too, but can be a dangerous one in the long term without access to Cogmind’s normally superior capabilities.

Is this Even Possible?

There were a lot of questions when initially considering whether to implement this mode, since more often than not a common but high-level comment like “[feature X] would be pretty cool…” is so much easier to say than actually build :P

So the very first thing I had to do after selecting Polymind from my list of potential event ideas was to do a feasibility study looking at the potential roadblocks with respect to Cogmind’s fundamental architecture and design.

Architecture

A good many roguelikes are coded such that the player and non-player “actors” (creatures/mobs/entities/whateveryoucallthem) are based on the exact same systems and data structures. This is really helpful for balancing the game, simplifying player understanding of mechanics and interactions, and of course simply building the game where you can have a ton of interactive systems but don’t have to always treat the player as some separate special case.

In this sense, roguelikes probably lend themselves well to possession mechanics, inherently being easier to swap in some other actor for the player to control without worrying about too many unexpected side effects. While Cogmind does have a few player-specific exceptions with regard to certain mechanics where necessary for balance reasons (usually being a little more lenient on the player), for the most part it follows this roguelike design tenet: The player is just another Entity composed of a handful of base stats and operating as a collection of items that confer the majority of their additional capabilities.

That doesn’t mean Polymind was completely smooth sailing on the architecture front, just… close to it :P

As I wrote about in Item Variants and Randomization in Roguelikes, data for Cogmind objects such as items (and Entities!) is mostly held in static databases loaded on startup, essentially a large number of game-defining values which are assumed to remain unchanged while Cogmind is running. I already had to address this roadblock in order to implement Constructs with variable stats for the upcoming Scrap Engine mechanics, so I was able to draw from that experience and code when working with Polymind. Directly editing the underlying data seems easy enough, and makes sense, but could have unintended side effects since it wasn’t built with that in mind, not to mention requires separate attention to actually loading and saving the relevant unique data changes for runs in progress, data which exists outside the normal serialization process. Anyway, as with Constructs it works but it’s a bit crude, as one might expect when venturing outside the bounds of what a system was designed to do in the first place…

Polymind also benefited from RPGLIKE, another earlier special mode, for which I had already added indirect access to a number of Cogmind stats that might be modified through abnormal/non-part means as a simpler alternative to editing underlying data which I had always wanted to avoid before. For example, instead of editing Cogmind’s base sight range in the database, leveling up that stat in RPGLIKE would edit a separate value, and retrieving sight range for an Entity first checks whether it’s the player, in which case it will draw from the separate value, or instead from the database for any other Entity. This offers another avenue for changing that value (and a few others) where applicable, if I don’t want to worry about saving and loading things directly to and from a supposedly static database…

So while this mode was already a lot of work, it would’ve been even more time-consuming if not for the fact that it could be built on the foundation of several big projects that came before.

In the end it’s not an ideal solution for the architecture side of things, but it works, and I’m open to cooking up a bit of spaghetti when it comes to putting together special events since they’re short-term projects isolated in the code anyway.

The “possession” process itself is interesting in that it actually destroys the host and transfers their stats to Cogmind, while separately storing as much of the original information necessary to recreate the host if and when the player releases control at a later point.

Cogmind Source Code: Polymind Host Stat Transfer

The code used to take control of a host, transferring its stats to Cogmind, along with the reverse process for restoring Cogmind’s default stats upon releasing control.

 

Cogmind Source Code: Polymind Host Data Storage

Data stored about a new host before destroying it. Not very much is required for recreation, since the majority of a robot’s values are either static or properties of their constituent parts, all of which are simply returned/reattached to the host later (any that still exist at the time, that is). hostID, killCount and routeIndex are actually not even necessary for the process--those are recorded purely for scoresheet generation purposes, since it wants to create a leaderboard of the hosts with top kill counts, and where they were originally found.

Due to how this latter system operates, storing the host’s original faction to restore it later, one side effect allowed players to discover a facet of Cogmind’s internal design which wasn’t previously known (and is confusing unless I explain it :P).

As players see it, Cogmind robots don’t actually indicate their specific faction, instead simply showing whether they are friendly, neutral, or hostile to the player, so sometimes in a few special case branch maps, as far as the data goes NPCs might technically belong to a “faction” that doesn’t behave as one might expect in another map. What this means is that specifically in Polymind, controlling such an NPC and releasing them in one of these other maps might cause them to be friendly to robots one would think are their enemies!

I did this early on in Cogmind development since it wouldn’t have any noticeable impact on the game, reusing “factions” on different maps for different purposes in order to keep the total number of required factions as low as possible. This is one of many things that could be addressed in the long term if more work was put into this event, but the focus was on gameplay in the main complex (more on that decision later), and the potentially unexpected faction behavior actually only comes into play in very few situations anyway.

Honestly I recall considering a more dynamic faction system for pre-alpha Cogmind, since at the time I was close to building one for X@COM, Cogmind’s predecessor and the source of its initial code, and although I later did do that for X@COM, I didn’t really see a strong need for it in Cogmind compared to the overhead it would add, so decided to forgo it. I’ve since started adding a few extra faction slots to Cogmind for different purposes, but it’s still not a dynamic system which would be even more flexible.

Design

On the design side my primary concern was interface complications, since all necessary interactions must be fully mouse and keyboard compatible, where a deficiency on one side or the other will as usual serve to limit and guide the mechanics. While in some cases mouse input in particular did require special attention, I was happy to discover that pretty much all of my goals there were achievable.

One new UI feature required on several different levels in order for Polymind to even be feasible is a toggleable force melee mode. Normally a “force melee” type interaction is enabled by holding a modifier key, though technically due to command conflicts has never been possible when combining force melee and diagonal movements using vi key directional input, for example. Alternative input options exist for such an occasion (not incredibly common), but for quite a while I have always planned to address the issue more directly with an optional universal toggle, so this was the perfect opportunity to finally make it a reality.

Cogmind Special Commands Menu: Force Melee

Force Melee on the Special Commands menu, toggleable via Spacebar then mouse click, or from the main interface with Spacebar-e or Shift-Alt-e.

(I’ll write about more mode-specific interface features later.)

Mechanically speaking, one of the big potential roadblocks was how to let the player remain friendly with all those bots out there that otherwise attack on sight. It’s not as simple as changing faction relation settings, which would introduce its own set of bigger problems. Instead I found a simpler solution to circumvent faction considerations and treat the player differently depending on their current host and status: just don’t let hostiles add the player as an enemy if they don’t currently see them as one.

Each AI normally stores its own list of enemies that it remembers for however long, a duration set initially by the AI’s robot type and can be shortened by system corruption or ECM effects. Polymind-Cogmind is blocked from being added to “hostile” AI memory if using a host friendly to the AI (based on that host data we stored earlier!) and not currently suspicious.

Technically under this system, if the player manages to break line of sight with hostile pursuers and significantly lower their suspicion level, perhaps in combination with switching to a new host (which itself lowers suspicion), they can once again be removed from pursuers’ memory and operate in safety, though the pursuers will likely investigate the local area and potentially discover the player again if suspicion again reaches the maximum level.

Technical design issues resolved, the other early requirement was to convince myself that the mode would actually be fun.

This aspect can be harder to nail down in gamedev, but at an early stage there’s really no need to get into the nitty gritty details--I just needed to focus on the bigger picture: Will this create challenges that the player can overcome by making interesting decisions using the resources and capabilities they have available at the time? What will the player be thinking from moment to moment during the various scenarios I can envision under the type of gameplay this will lead to? What can I do or add to help facilitate that interesting gameplay?

This line of thinking leads into some Polymind-specific features like the free intel system on controlling a new host. And of course first and foremost this is also where the suspicion system and corresponding jobs system come into play. I saw enough flexibility in those that players could find a fun balancing act to carry out in there, oscillating between suspicious and unsuspicious as necessary throughout their run to achieve their goals amidst evolving circumstances. Assuming the numbers are set right, that is, but balancing is for later when the features are actually implemented. The important part is to know that it’s theoretically a good track to be on before investing the required dev time.

Multitile Robots

This was huge (haha). Multitile robots are cool. They also tend to be a nightmare to work with. I wrote a lot about them in Developing Multitile Creatures in Roguelikes, but letting the player control one is a different and even more complex matter!

Multitile bots felt like they were close to derailing the project in its latest stages, since I had repeatedly pushed them further and further down the TODO list until they were just about at the end, then by the time I got to working on them and we were past my initial deadline for completion, all the related bugs sure took a long time to weed out (Polymind was definitely completed later than I wanted).

At one point it felt like they might need to be cut--essentially no controlling multitile hosts allowed, but I really felt like we had to have them in there if at all possible! They’re just too cool, and an important goal of this mode was to attempt to allow the player to control almost anybot. Even if only a few players ever ended up doing it, it needed to be a thing (cue late-hour coding sessions xD).

My first experience with this was back in 2019, when players were postulating what it’d be like if Cogmind could occupy multiple spaces as 2×2 bots do, so at the time as a joke test I simply changed the one variable determining Cogmind’s Entity size and surprisingly it actually more or less worked. Now that’s a far cry from what it takes to have proper full control of a large robot, but at least it showed me that such a change doesn’t immediately break the game!

Cogmind Testing Player Control of Odd 2x2 Entity

A recording from 2019 showing the quick and dirty version of a 2×2 Cogmind. Of course, Cogmind doesn’t have a tile large enough for it to occupy multiple cells like true large Entities, so instead the game automatically renders other adjacent tiles found in the tileset positions where such image data would normally be stored :P

 

Cogmind Joke 2x2 Bot as Sketched by Zyalin

A quick and dirty sketch by Zyalin to go with our innovative multitile Cogmind design that seems to be melding with various other robots…

So what’s the big deal with multitile actors?

Limited freedom of movement due to terrain is not something we’d address here--at worst they’ll just have to blast open doorways, take down walls, or even widen shorter corridors if they really want to head in some partially obstructed direction. But another movement issue that absolutely must be addressed is interaction with other robots, because those are everywhere, not to mention moving around most of the time and therefore easy to become repeatedly annoying obstacles.

For this I decided it’d be great to have them just push any blocking robots out of the way. Not like the ramming, crushing, or kicking that normally results from bumping another non-allied robot, mind you, just nudging anyone out of the way, regardless of their affiliation.

This is a pretty sensible and elegant solution, I think, although I admit it was kind of a little recursive nightmare--recursion be like that xD. I had to set up specific tests to be able to reliably repeat and fix issues, and just when I thought it was fixed, filling a room with all manner of other robots and randomly pushing through them in various directions would crash the game again in some new and unexpected way, or push one in an unexpected direction. The weirdest issue I recall was when pushing one blocking robot managed to crush it to death while simultaneously pushing a different robot that wasn’t even on the target path!?

Eventually it always worked, whew :)

Cogmind Polymind Multitile Entity Pushing

Pushing blocking robots out of the way while in control of a large host.

On the UI side, multitile Entities naturally also have a fair number of issues that require special handling, so much so that I entirely separated out the code for their player movement input processing, as well as excluded from those options certain actions that would be problematic in more ways that I didn’t have time to address (such as interacting with machines, or ramming with intent to damage or destroy robots and terrain).

Still, they can perform a majority of useful actions, and most importantly they work!

Cogmind Polymind Multitile Entity Path Preview/Highlight

Other helpful tweaks specific to multitile player-controlled actors include showing the full-width path preview/highlight. (As usual the path can be highlighted in a brighter color, but this screenshot is taken with the default appearance when simply moving the cursor across the map view.)

After all of the above architecture and design worries, I was pleased to see Polymind work out in the end. While at the beginning I could imagine a lot of potential issues down the road, I also really wanted to bring Polymind to life, so rather than fret over all of them in advance and try to draw up detailed plans, as soon as I had a general feeling that it might be feasible I simply started, which helped avoid the inevitable temporary paralysis from seeing so many issues without clear solutions.

We’ve barely scratched the surface here and you can already see there were tons of moving parts behind this event (and as you’ll see later quite a lot of code!), but sometimes you have to just say “I’ll figure it out when we get there” and hope for the best :P. At least the initial feasibility study where I examined some of those fundamental questions suggested I wouldn’t hit any serious show stoppers on the way!

Polymind-specific Features

Beyond simply taking control of other robots, sharing their parts and basic stats, conceptually what does that mean, both in terms of gameplay and theme.

Thematically this goes back to players’ original desire to roleplay a Worker, doing Worker things. (And actually even before all that, one player in particular (zxc) always thought it would be fun to be able to temporarily disguise oneself in the regular game purely in order to bypass enemies, though a combination of significant technical hurdles and balance issues kept me from considering it in a more serious capacity.)

This is where suspicion and jobs come in. An idea central to the gameplay here is to remain unsuspicious, and for that to work we clearly need to define a new set of capabilities outside the scope of what’s offered by the game through normal part interactions.

Cogmind Polymind Notes: Class Special Abilities

An excerpt from my initial Polymind design notes (itself a 3k-word document xD) on what types of new abilities would be necessary to offer a decent range of actions.

The above list of abilities adds some of the tools necessary to remain unsuspicious. It is not, however, an exhaustive list of ways to modify suspicion (either up or down), since other relevant actions are already covered by existing behaviors, such as combat, or even just Operators working at terminals (hacking!) or Minesweepers collecting traps. But those are very easy to incorporate since they already existed in the code, whereas the notes were focused on the creation of entirely new features which would require separate implementation.

Yet more thematic abilities were listed as possibilities, but would be too complex to tackle in the short term, and for little benefit compared to the importance of core behaviors one expects from the bot classes listed above.

New features also generally require new supporting interface elements, at least concerning QoL to smooth out the experience. For example some of those class abilities require a way to designate valid targets, such as areas for tunnelers to dig.

Cogmind Polymind Tunneler Host Demo

Tunneler hosts are fairly limited in the areas they can help out, but at least excavating is an extremely effective way of lowering suspicion.

For the Engineer in particular I decided Polymind-specific highlighting was unnecessary, since by default even in the regular game it’s pretty obvious when areas have been destroyed and are in need of repair.

For a few of the more complex hosts, it became necessary to blink other robots in white or pink to imply what action would take place if interacted with given the player’s current host and status. This is because item toggle state, suspicion level, and whether the target is hostile could all impact what action currently applies.

Cogmind Polymind Mechanic Host Demo

Demonstrating the use of a Mechanic to dismantle a lone Grunt, after which a Recycler steals and recycles its parts, then we put it back together with backup gear. Toggling the Recalibrator highlights valid targets in the color matching what will occur upon bumping them.

The actual meaning of these colors, and class abilities in general, are conveyed through the Polymind info panel for the current host, accessed through the usual special event UI window over the bottom-left corner of the map.

Cogmind Polymind Programmer Host Demo

By necessity Programmers are one of the most complex hosts to control since they have multiple capabilities, but there is no Polymind-specific command system so everything must be managed through the standard actions, and reflected on the map so the player knows what will happen.

The info panel includes all of the host’s innate stats, like built-in energy generation and damage modifiers, so playing Polymind and controlling different hosts offers an interesting alternative way for players to gain deeper insight into robot capabilities (and weaknesses!) even in the regular game.

Cogmind Polymind Heavy Host Info

Heavy-class hosts are really powerful. My first Polymind run won by basically spending most of the time in one of these guys obliterating everything, and sometimes doing my job to wait for the right moment to strike ;)

Also on that panel is a list of any intel obtained from controlling a new host of that class. The intel idea was something I added only at the very end, not only because it’s logical, but also for design reasons: Players are trying to make informed decisions as they hop around between bots, and intel helps in that regard while also giving yet another reason for wanting to take over multiple different bots to begin with, depending on the circumstances. So it’s not just about what the bot is capable of, but also what information they’ll reveal when you take control. This info is also often tied to their respective jobs, so this feature brings way too many advantages to leave it out…

Cogmind Polymind Hauler Host Info

Haulers have some okay intel, but were one of the non-combat classes that unfortunately did not get a job as a host. Logically speaking there is material to work with there, since they normally do have tasks to complete, but implementing them would’ve been more complicated.

Fortunately the intel portion was much less work that it otherwise would’ve been, because it drew directly from all the normal robot hacks you can perform on 0b10 bots to get information!

Cogmind Polymind Notes: Class Intel Types

My Polymind design notes specifying intel from various classes, the majority simply correlating to various existing robot hacks.

 

Cogmind Polymind Watcher Host Intel Acquisition

This Watcher host intel acquisition sequence and effect looks suspiciously like a successful map_route hack! (a good bothack, by the way)

Balance

This mode was designed under a lot of time pressure, meaning not much time left at the end for proper balance work. Much of the balance for Polymind’s first release was based on hypotheticals, though I do think it worked out pretty well for the most part.

Once players got hold of it, and I had an opportunity for real playtesting myself, there were multiple updates within a week of release to make some adjustments, but still nowhere near the attention a mode like this would get if it were to become something even bigger. As a timed special event though, I’m satisfied as long as it meets the goal of being fun for at least a little while.

Aside: Designing these events feels somewhat like a 7DRL--basically you’ve got a new core mechanic around which to quickly design a unique experience, just within the confines of Cogmind’s world. So in that sense even though I rarely participate in 7DRLC (even though I always want to and have lots of ideas for it xD), technically I’ve made a good many “XDRLs” over the years. In fact, on that note the idea for POLYBOT-7 came from what was originally going to be a Cogmind event!

On the topic of fun, the relevant “numbers” mentioned earlier could definitely have used more tweaking, but that level of balance requires a fair amount of data that we just didn’t have yet.

There are many numbers involved, but among the most important, and numerous, is the cost of taking control of each type of host. Of course it can’t be free, so for this I resurrected the idea of Protomatter first introduced for the RPGLIKE event, a matter-like item salvaged from some robots as an alternative mode-specific resource.

Even if I did have time for proper playtesting (I didn’t…), we’d still need some kind of starting point for setting these costs, so I decided to base them on a formula derived from each robot’s core integrity and exposure:

cost = [core_integrity] * (1 + ((0.40-[core_exposure%]) / [core_exposure%]))

This formula uses 40% as an average core exposure and increases or reduces their integrity-based cost by a corresponding percentage when they have a lower or higher value than that. The actual costs are not as important here, it’s more about relative cost, since we can always tweak the Protomatter drop rate and amounts as necessary, but the idea is to assign a higher cost to more powerful robots, and by design power level generally corresponds to core integrity and exposure.

I originally tried a formula based on part rating, since many capabilities are based on parts, after all, but found that to be overall too unreliable as a basis for cost. Basing it on integrity/exposure isn’t perfect, either, but it would have to do!

I also considered but did not factor robot speed into the formula--faster robots do indeed enjoy greater survivability as a result of their speed, but as far as Polymind mechanics go, balance-wise it is not only more likely that faster hosts will lose their capabilities, it is also generally more likely that high-integrity/low-core-exposure hosts will be more capable of acquiring additional Protomatter (through the destruction of other robots) in order to keep taking control of other targets. Fast hosts certainly have their advantages, but generally do not contribute as much to later progress (or score, for that matter).

While building the event I was worried Polymind might be too easy overall, but as it turns out the difficulty ramp is similar to the regular game, growing increasingly challenging all the way to the end. To give that claim some context: Cheaper host-dense early depths make it easier to avoid detection completely if desired, compared to later maps which are much larger, along with the usual increasingly powerful enemies roaming about despite Cogmind having access to fewer tools (generally little to no inventory, and no part swapping, slot expansions, or most consumables). Combat becomes all but unavoidable at some junctions.

Polymind is still very winnable, so that’s good, but while I like the resulting challenge level, it could still stand to be tweaked and expanded for an even smoother, better-balanced experience.

As usual when working on a new feature, while building it I also made a list of areas or potential add-ons that could be important to examine for “optional balance tweaks” later on, depending on how the final gameplay turns out and what players do with it, though for the subsequent updates I did not yet need to revisit that list so much since many of those options were implemented shortly before even the first release once I realized there’d be no time for playtesting and instead continued on the instinct that they’d inevitably be applied anyway. (I had wanted to let patrons try out Polymind in advance and tweak from there, but again there was no time.)

Polymind can especially get weird outside Complex 0b10, in branches, since the mode was mainly designed around non-branch content. But unlike some of the previous events (Abominations, for example) and challenge modes, I didn’t want to prevent the player from visiting branches and interacting with much of the game content, especially when it’s possible to take control of a whole bunch of different hosts out there as well, plus trigger interesting game events. So while all maps were left accessible, we had to simply assume that all the other factions recognize you as Cogmind regardless of your current form, and plot/NPC interactions more or less remain the same. So that’d be another area that could be expanded or addressed in other ways, a topic I’ll get into more at the end.

Players Meet Polymind

Part 2 of this article looks at player stats, strategy, merging code, and more…

Posted in Design | Tagged , | 2 Responses

Year 9 of the Cogmind

Early this year Cogmind celebrated its 10th anniversary since it was first released as a 7DRL, and as the year comes to a close it’s once again time for an annual review to take a quick look at where we’ve been, and where we’re going!

First here’s our yearly dev collage showing off in visual form some of the progress and work since our last review, version 2022!

cogmind_development_year_9_small

Selection of images from the past year of Cogmind-related development as posted on this blog, forums, and social media (larger size here).

Development Time

While lots of cool things have happened this year, I’m a bit disappointed that the past couple months were shattered by health and IRL issues (mostly repeated Covid interruptions), slowing what would’ve otherwise been an even more productive 2022. Technically I put in 7.5% more hours than the previous year, but the total fell 13.7% compared to 2020.

cogmind_developent_time_cumulative_hours_15467_221130

Cumulative hours of Cogmind-related work, 2013~2022.

Looking at the cumulative chart, it’s interesting to note that the past several years show a less steep incline, but also lack the obviously “shelves” from even earlier years. Those were from various vacations/traveling when I’d put development on a longer pause, though with Covid and travel issues out there it’s now been nearly three years since I left the country xD

So development has been progressing at a more constant pace rather than the sometimes stop-and-go of before.

On reviewing the data I’m happy to see that my game-to-non-game-stuff work ratio has continued in my preferred direction (I shared a graph and more info about this trend back in the 2020 review), so more working on the game itself and less community-facing marketing-type stuff. The Year 8 ratio was about 4:3, while this time it’s closer to 5:3.

Obviously community interaction is quite important and still plays an ongoing role in development, as always, but at this point I feel it’s more important to focus on expanding content as much as possible.

By extension this does mean fewer blog posts and spreading the word about Cogmind through various secondary channels, which in turn means less revenue overall (down 20% this year), but patrons continue to help in that regard :D (so we get to focus more on the game itself!)

Of course that’s only one factor in the revenue drop, but it definitely plays a significant role.

Releases

This year’s major release was of course Beta 11 “Mechanical Renaissance,” in the works for 17 (!) months, and a massive set of new toys, challenges, revamped mechanics, and more.

Cogmind Beta 11 Release Art

Cogmind Beta 11 release art, by Zyalin.

Following the Beta 11 release I was also finally able to put together the Beta 10 player stat summary, complete with graphs and analysis

Beta 12 was supposed to be released this year, but it was originally envisioned as just one new map and a faction to go with it. So yeah that’s easy enough, right? Definitely could release it this year according to my plan, yeah? Well I hadn’t even started on that before patrons voted to expand Garrisons, which sucked up a huge amount of time but everyone seems to agree has turned out quite well.

Cogmind Garrison Map Generator Considering Encounter Locations

Cogmind’s new Garrison layout generator considering locations suitable for inserting additional encounters in outlying areas (dark gray boxes). Read more about its design here on the blog.

In addition to lots of new content and strategic possibilities, the Garrison expansion even added a whole new faction system.

So we’re done, right? Ready to do that Beta 12 map? Apparently not, because as part of the potential Beta 12 content I decided to experiment with a new kind of mechanic I’d been considering for years: randomly generated parts.

That turned out to be pretty complicated to design and integrate, and was successful in the end, though despite all the work it’ll actually end up being a secondary part of the release with no direct connection to the main content… Still, it’s fun and creates a whole new build style, and now I don’t have to keep thinking about maybe doing it one day because it finally exists :P

Community

leiavoia, creator of the Dataminer scoresheet viewer, has continued to improve its feature set (see community stats as well now, and compare your stats to those across the community), and on top of that created some great guides, like leiavoia’s new player guide for those who want some more early-game tips

cogmind_leiavoia_new_player_guide__collage

and the heavy combat guide, a style which leiavoia is very good at ;)

cogmind_leiavoia_heavy_combat_guide_collage

aoemica continued expansion of Cog-Minder, including not only the build and combat simulator and tons of raw searchable data but now also with an amazing new wiki including maps, encounters, strategies, and all sorts of good stuff.

cogmind_aoemica_wiki_sample

A sample entry from aoemica’s new wiki.

As a resource it already blew Cogmind’s original wiki out of the water (so much so that earlier this year I just put a link on the front page of the wiki leading to Cog-Minder), but at this point I guess the official community wiki has been blown… clean off Tau Ceti IV xD

For my part, I’ve been doing less Cogmind streaming in 2022, instead sharing other roguelikes, but have done several prerelease streams to demo new features coming to Beta 12, and earlier in the year before Beta 11 was released we did some fun and useful dev streams with the community, a different sort of format for back and forth about mechanics and balancing than the usual approaches on the Roguelikes Discord server.

I’ve also been writing more general roguelike-related articles, too, looking at game design, item randomization, and backtracking.

You can now find me on Mastodon, too, where I’ll be sharing info about roguelike development, other roguelikes, and of course the occasional Cogmind update. After joining last month I also did a little summary of my roguelikedev history.

Kyzrati Roguelike Dev History Summary on Mastodon

As usual, if you’ve got a moment there’s some days remaining to vote for Cogmind over on IndieDB. Always nice to make it in their Top 100 list for a little extra exposure when that comes out. Made it every year since 2014, so may as well :) -- Update 221211: Made it into the Top 100 again :D

2023

I foresee, um, more Cogmind, yes ;)

As mentioned, Beta 12 is delayed into next year, and is going to be way bigger and even better than originally planned. Aside from the other new features already completed… that bit about it including one new map? Yeah that was wrong, too :P

Turns out I can’t add a new faction and related lore without going a bit overboard with the whole thing, so what was one normal-sized map will now be three large maps spanning the early-, mid-, and late-game, plus a whole new ending (Cogmind’s 10th) to top it off, this one quite unlike the others. Tons of new items, mechanics, robots, encounters, NPCs, and more on the way…

Cogmind ASCII Art Samples - Beta 12

Sample item art from Beta 12 (open image for full size).

Progress has been good overall despite the relatively short amount of time invested on this part so far, since now we’re mostly working in familiar territory, using all the tools I’ve put together over the years for content creation.

Cogmind Artisan at Work

A new type of bot at work, busy doing… something :)

Some of the work I’ve been doing is even related to beta 13, which is closely tied to beta 12 in several ways, and will include at least one new map and lots of new mechanics and NPCs with more unique AI behavior. I can’t promise that one will happen in 2023, but I will at least say it’s not impossible.

WARLORD FOREVER!

Cogmind Warlord and other bot models in front of partially explored Research map

(also Cogmind forever, apparently!)

Posted in Annual Review | Tagged , , , | 1 Response

On Backtracking in Roguelikes

More than once over the years we’ve had discussions in the roguelike development community regarding the idea of “backtracking,” and with good reason: whether or not to allow it has quite a lot of implications!

Here we’re primarily talking about the player revisiting earlier floors on their journey, rather than backtracking within a single map (though I’ll cover that topic a bit separately at the end), and our discussion focuses on roguelikes of the dungeon delving variety, since open world games generally allow backtracking by default.

Examples

Let’s open with a sample cross section of the types of map transitions available in the roguelike space:

  • DCSS: Floors generally contain multiple stairs which lead to either the next floor or back to the previous one. The majority of roguelikes fall into this category, although not necessarily the multiple stairs part.
  • Cogmind: At the other end of the spectrum, some roguelikes don’t allow backtracking to earlier floors at all. This group also includes DRL/Jupiter Hell and Infra Arcana, but it’s a pretty small group overall. (DCSS variant “Hellcrawl” removes the up stairs from that game, notably increasing the difficulty.)
  • Moria/Angband: These are unique in that backtracking is allowed, but by default it generates a new floor each time! Although not true backtracking in every sense, it will naturally count in some ways. The approach is quite thematic, in any case, getting lost exploring the Mines of Moria, or maze-like fortress Angband :)
moria_using_up_stairs

Heading back up some stairs (‘<‘) in Moria for your very own “I have no memory of this place” moment.

  • Rogue: Interestingly, in the original Rogue backtracking as a part of the ongoing diving process was not a thing! You can only proceed down stairs until you acquire the amulet, then you can finally go up stairs, but each floor in the return direction is generated anew, essentially requiring playing through 51 floors to beat the game!

One traditional reason it might make sense for roguelikes to allow backtracking is because the goal is often to reach a destination then escape back out, not unlike your typical RPG dungeon adventure.

Different games handle the escape in a variety of ways, perhaps throwing some kind of new challenges at the player along the way, for example being intercepted by powerful monsters the entire way in DCSS, or being harassed on the way out of Angband by an angry Morgoth after stealing one of the Silmarils from his crown in Sil (or the newer Sil-Q).

The Ground Gives Way has an especially interesting approach, having the dungeon’s statues come to life after you acquire the trombone relic (yes, trombone) at the bottom, and you have to escape without being killed by the animated statues or whatever other creatures might still be in the way because they weren’t dealt with before. The interesting part is that you can see all these statues on the way in, foreshadowing potentially difficult bottlenecks on the way out (assuming you can’t directly confront and outright destroy all the living statues, a decent assumption for many builds).

tggw_statues

These statues will come to life on the way out and try to stop you--better have a plan when the time comes! (Tip: If you put down the trombone they’ll stop following you, giving you an opportunity to deal with other issues, rest, or prepare in other ways.)

By comparison, Cogmind is purely about escape, starting from the inside, so there’s no reason to go back as part of the conclusion.

To Backtrack or not to Backtrack

I was originally going to divide this article into two sections highlighting the “advantages and disadvantages” of each approach, but it’s not always clear whether a given mechanic or consideration would neatly fall under one of those two categories, especially given that additional design adjustments can turn a drawback into a positive, or otherwise mitigate issues, so it’s more a question of simply examining the implications of a particular choice and accounting for it in a game’s wider design. So instead we’ll take a topical approach.

Realism

Being able to backtrack is generally going to be more realistic in the RPG sense--of course your character should be able to go back and pick up that item they left behind, or fight that enemy that scared you away before. Plenty of roguelikes are designed as CRPGs first, so it makes sense they’d want backtracking for this factor alone, if anything.

Some roguelikes don’t go heavy on realism, in which case backtracking for this reason can be considered a non-issue and solely a decision to be made within the greater mechanical design, though this does mean progress ends up feeling gamier overall.

Since thematic plausibility and lore are quite important in Cogmind, I added reasoning for why you can’t backtrack, so that’s an option as well. In general it’s good practice to try to explain anything that doesn’t work as players might otherwise expect, and the one thing you can count on setting player expectations is realism! Realism is optional (these are games!), but ideally we want everything to at least make some sense within the context of the game world itself.

Stashes

While on the subject of realism, it also makes plenty of sense you can go back to collect resources left behind earlier. In a game setting, though, this can be quite an annoyance from a design perspective (harder to balance!) and is likely to either become a player crutch or lead to tedious optimal play (a topic I covered in my game design philosophy article).

As a result, you sometimes see developers coming up with ways to address issues arising from players creating “stashes” of items to return to. DCSS has an interesting historical summary of changes related to its stashes, including methods to decrease player reliance on them.

As a fully item-focused roguelike (in that items are everything to you, with no other types of character progression), stashes used to be extremely useful for an optimal player in TGGW. That’s before the aliens showed up :)

Aliens arrive while you’re napping to steal things the player has touched, and you can sometimes catch a glimpse of them running away with an item, or theoretically even try to stop them before they teleport away, but it’s pretty tough, so you’re highly encouraged to always keep anything you want to use for the long run. Under this scheme, strategically the player may also opt to leave an item on the ground, untouched until they might want it, but it can be hard to justify that decision since in many cases if it’s a quality item you won’t be entirely sure what specific item it is until you’ve picked it up to identify and it’s got that human scent all over it :P

tggw_alien

Caught red-handed, but good luck stopping them.

An alternative approach to stashes is to simply embrace them as part of the design, even going so far as to outright give the player a safe location to stash extra items they don’t need at the moment, for example in a town. Heck, throw in shops to visit while you’re at it :D

angband_town

An Angband town, which serves as a hub to return to for stashing items, or shopping.

 

angband_home_inventory_sample

An example of a player home inventory in Angband (taken from here among the great LPs by TooMuchAbstraction).

Or an even simpler approach: just give the player a practically infinite inventory :P

Of course stashes aren’t always an issue--depending on how the game works there may not even be a use for them, although the reason it comes up so often in roguelikes is that the genre is overall fairly item-heavy, not just different useful gear but especially consumables, which leans towards stashes being a thing.

If tight enough, a roguelike’s typical food clock or other similar feature pushing the player forward might also serve as a suitable countermechanic, or impose prohibitive costs on abuse/overuse of stashes.

Grind

Grinding as a strategy, or even existing as a possibility, is pretty unwelcome among modern roguelike fans. Not universally so, to be sure, but grind tends to be more of a roguelite thing.

Preventing backtracking cleanly cuts out a number of potential types of grinding (such as returning to fight weaker enemies to maximize XP or resources), thereby serving as another feature contributing to a player’s forward momentum.

Of course for some roguelikes, grind is an acceptable part of the gameplay for those who want it. No doubt the grindiest of classic roguelikes is Moria/Angband, and this honor is a direct result of backtracking as per the mechanic described earlier. Simply going up and down stairs to generate new maps (“level scumming”) gives access to theoretically almost anything that can appear at a given depth, so a player can use this to not only raise more levels from repeated combat before pressing forward, but perhaps even more in the spirit of ultimate grinding, you can keep regenerating maps to search for specific items.

In a way Angband further facilitates some of the grinding process with its “level feeling” text on entering a map, revealing how dangerous the floor feels, how good the items potentially are, and maybe even a “special feeling” like “You feel strangely lucky…” or “You have a superb feeling about this level” to indicate additional features such as a vault.

Then in 2015 the Angband maintainers doubled down by making the grind even more player-friendly, adding level feeling information directly to the status bar in numerical form.

angband_with_level_feeling_indicator

Angband level feeling indicator “LF:X-Y,” where X/Y refer to the danger/treasure level on a scale of 1~9. Y even shows as $ if an artifact was generated on the current floor.

Well fast forward to 2017 (27 years after Angband’s first release) and a new option is added to the game, one that changes everything: persistent levels!

angband_birth_options_persistent_levels

Birth options menu during Angband character creation. Even after five years, birth_levels_persist is still considered an experimental feature with potential bugs to work out.

Yes it’s optional and clearly not the default considering it removes one of Angband’s defining features, but this addition made the game playable for some who hated the original incentive to grind, dangling there like a carrot at every depth, and also gave existing players an alternative way to enjoy the content. Some technically were already playing it that way before, without the grinding, but enforcing that conduct can take a lot of self-control, especially in a game with permadeath ;)

Anyway, Angband has taken up a good chunk of the article so far because I think it’s an interesting study for this topic, considering you can experience two very different approaches to backtracking in a single roguelike. There’s a lot of conversation out there about how different types of players prefer one or the other.

Difficulty

For the same reason backtracking might make way for grinding, it also serves as a way to help soften difficulty spikes, especially those that might occur immediately on entering a new (and presumably more difficult) map. If finding it hard to press forward after using the stairs, one could theoretically go back and switch to a different map (Angband), or approach the new floor from a different point (DCSS with its multiple stairs), or go grind more resources/XP left behind in earlier areas to help advance.

Cogmind has very large maps so this isn’t as much of an issue--you’re generally not going to full clear all maps anyway, and there are usually many possible routes within a given map (especially counting terrain destruction, employed liberally by players :P), so encountering a dangerous bottleneck required for progress is not all that common. Cogmind also has “spawn protection” on main maps explicitly to give the player more breathing room on entry (though not in optional branch maps, where ambushes are indeed possible! just an extra part of their potential danger in exchange for the rewards within).

cogmind_map_export_exploring_research

It’s not usually in your best interest to explore the entirety of every map in Cogmind--they’re big and you’re likely to lose more than you gain from doing so. Above is an export of one player’s unusually lengthy journey across a large swathe of a 200×200 map in search of a particular destination (a desired exit).

Zorbus is a good example of difficulty spikes on entering a new map where backtracking is not allowed. You’re in for a crazy ride almost any time you take the stairs in this DnD-style roguelike, especially given the pretty significant jump in danger from map to map, where all the enemies are higher level than you until you catch up, and thin them out a bit first.

zorbus_map_entrance_ambush

My party in Zorbus getting ambushed by all manner of powerful enemies coming from the west, south and east right outside the opening room (clearly the NPCs know what’s up!). Large battles are common on entering a new Zorbus map. They will spot you, hunt you, tell their friends, then hunt you with their friends :P

This aspect of Zorbus was softened a bit following response to the game during its wider release on Steam recently, at least protecting the player from being right near the level boss on entry, which could understandably be pretty devastating xD

Stairs

Stairs are an interesting design issue in roguelikes regardless of which backtracking rules apply.

Without backtracking, players are stuck with dealing with whatever they encounter on the other side, though hopefully have tools for managing sudden difficult situations, such as immediately teleporting away, or perhaps specifically preparing for a potential ambush before entering.

In Zorbus, blinking away is a common strategy for escaping dire threats. Cogmind doesn’t have easy/unlimited teleporting, but also has the spawn protection rules to avoid issues in many areas, and where those don’t apply, a player might indeed decide to enter prepared for a close-range ambush, like with a launcher at the ready :P

cogmind_cave_ambush_obliteration

In most cases I feel safer entering caves with a launcher out to blast any group loitering on the other side. (It’s less of an issue for some builds, though, or if traveling with allies.)

With backtracking, developers have the unfortunate task of addressing “stair dancing,” or repeatedly using stairs as an easy escape option, even as part of localized combat tactics. Do enemies follow through stairs? How far? What else do they do if they see a player leave but don’t follow?

Various solutions, or pieces of a solution, include:

  • Nearby enemies can follow via stairs, for example in DCSS and Caves of Qud, but in games that do this there’s always the problem of just how far away will enemies follow from? It’s often still optimal if you can use this tactic to split them up, or at least temporarily break LOS to some while fighting others. Qud has an interesting addition here where you can actually use the stairs then stand on them to fight enemies that are coming one-by-one, but it’s blind combat and you can’t see which one you’re attacking.
  • Attach a resource cost to reusing stairs. For example drain stamina so the player is at an immediate tactical disadvantage after doing it, should enemies follow. Or using stairs takes more game time, further advancing whatever food/other types of clocks the game employs.
  • Reusing stairs first gives nearby enemies free attacks of opportunity.
  • Enemies that saw the player reuse the stairs wait nearby, then get the initiative/first strike on the player’s return.
  • Teleport players after going back through stairs (a possibility in DCSS variant “bcrawl“).
  • Make reusing stairs impossible while in combat (some TGGW stairs are called “twisted stairs” and behave this way, while others are normal, so traveling down the former might be more dangerous).
  • Design such that stair dancing is meaningless. For example it was originally an optimal tactic in Tangledeep, but the developer later changed it so that all monsters heal fully heal when the player leaves, but the player doesn’t have passive regeneration.

Anyway, stair dancing is definitely high on the list of issues a developer wants to consider if backtracking is a thing. My own DCSS play and stair dancing experience (circa 2010) was a strong influence on Cogmind, in that it was the whole reason I decided I didn’t want backtracking at all, despite the other advantages of making that choice which I later came to appreciate (Cogmind was originally a 2012 7DRL, so the scope wasn’t imagined to be anywhere near what it eventually became--there were far fewer considerations then :P).

Design Control

For several reasons already touched on, removing backtracking affords tighter control over progression and mechanical design since map transitions serve as a hard cutoff, turning individual maps into more isolated units. Expanding on that, the designer now also has reliable points at which to determine specifically what the player has and has not done by then, a fact that won’t change going forward. While roguelikes of the hack-n-slash variety (uh, lots of them xD) maybe don’t care so much about this aspect, there are definitely some greater benefits to be had among modern games branching out beyond that style.

Being able to refer back to an entire immutable history of player interactions with prior maps and their content, developers are able to more easily build sturdy plot lines that are harder to disrupt, for example. In open-world CRPGs where you have plot and quests, I imagine many of you have had the experience of breaking them one way or another :P

I’ve written a lot about “Weaving Narratives into Procedural Worlds” before, and it would be vastly more work to achieve the same results if backtracking were possible, simply due a ridiculously large expanding web of possibilities. If you can visit NPCs in any order, or revisit earlier locations after later events have occurred, each new connection and route ideally needs to be accounted for, or risk feeling like a loose end. Alternatively, you could explicitly block the player from doing many of these disruptive things, which is less immersive, so we’re essentially trading in a potentially gamier “no backtracking” rule in order to ensure we can create more realistic interactions throughout the world, covering more of those bases in a satisfactory manner.

In cogmind the web of possibilities is already increasingly complex the further the player reaches, and that’s assuming players cannot revisit earlier areas. To demonstrate, below is an abstract visualization of Cogmind’s potential plot-related encounters with major NPCs. The game begins at the left, and progresses to a win at the far side. The story is tightly integrated into the gameplay, and many of these encounters have implications for later encounters, for the player, or for the world in general.

cogmind_major_NPC_encounter_visualization_longterm_impact_2022

Major NPCs, colored by faction, showing those with a direct effect on some later encounter (arrows), as well as those with a relatively significant long-term impact on gameplay (bracketed length). And that’s just the major ones :P

Now for small-scale quests or one-off minor NPCs, backwards travel is not a big deal, but for anything on a grander scale, the control afforded by forcing the player forward keeps the amount of work required to a sane level. It’s certainly still doable, after all there are open-world roguelikes, but it somewhat limits the types of interconnected events and content you can add, or the level of detail added to each one, unless there’s enough dev resources to account for and build all the unique permutations, or simply have those possibilities take a more generic form (i.e. integrate them into generic faction-based systems and revolve more around dynamic relationships rather than building a compounding handcrafted story).

As far as story goes there’s definitely something to be said for allowing the player to revisit an earlier location and find a new experience there, but I’m willing to sacrifice that possibility for all the other benefits.

In Cogmind I can safely introduce extreme changes to the player’s capabilities or relationships without having to worry about the implications on earlier areas (of which there would be many, making it really hard or in some cases impossible to implement a number of my ideas :P). Also because Cogmind has a branching world structure in which we know that not all branches will be visited, the player is forced to make permanent choices about where they will travel for benefits (or challenges) XYZ down the road. Linear dungeons don’t need to consider this sort of thing, but it’s quite important for branching dungeons, where without backtracking we’ve suddenly built a new layer of design control directly into the world structure itself.

Sample Cogmind world map, in which the player can choose their route but only move upward or sideways to a new map. (This version excludes a number of spoiler areas, especially towards the end--a full-size version and more info can be found at the beginning of my series on spicing up Cogmind’s primary maps.)

Compare to DCSS, which also has a branching structure but allows backtracking, meaning players instead have a range of non-mutually exclusive options to combine, or return to later if desired. More freedom for the player, less control for the dev. Not that strong controls are necessary, of course--it’s built with this level of open-ended freedom in mind.

dcss_dungeon_map

A DCSS dungeon map linked from the wiki. It’s fairly old since it’s from version 0.19 (2016!), but it gets the point across (open image for full size).

Meta Complexity

On a larger scale, new maps serving as a cutoff point also allow players to repeatedly unload some previous content from memory. It’s just their current state and resources, and the path forward--less about traveling back and forth, and more about exploring the unknown, which in turn happens to be more in the roguelike spirit (says me :P) (but think about it!).

Backtracking and the implication that an optimal player probably needs to be keeping as much useful run background info in their mind might add yet more overhead, especially if one stops playing for a while and resumes a run in a later session--in some cases it’s much easier to pick up and continue an unfinished run in a roguelike that doesn’t have backtracking since you just check your character info and take a look at the map (where you may have even efficiently stopped right at a transition point).

Roguelikes with backtracking, especially those that don’t play out in a linear dungeon, also add a greater amount of navigational overhead that developers will ideally optimize away through good QoL features. Again looking at DCSS, you have a way to quickly perform multifloor searches for locations of matching known objects in order to autotravel to them:

dcss_search_result

Auto-travel in DCSS to facilitate what would otherwise require players to have a much better memory, or take notes :)

Of course a roguelike player isn’t usually one to shy away from complexity, but the more you can streamline the process of getting to the fun decision-making parts of a game the better.

tggw_seen_dungeon_features_list

TGGW is a linear dungeon, but backtracking to visit certain dungeon features is quite useful at times, so it also includes a convenient map list accompanied by the characters for notable features at that depth--NPCs, stairs, teleporters, mechanical valves, terrain that might contain something… (there is also a key elsewhere on the UI)

Architecture

As we’ve seen there’s a good bit of design overhead for allowing backtracking, and this comes with additional architecture costs as well.

In terms of disk/memory footprint, in the modern day it’s no problem to store lots of old map data for potential reuse, though perhaps these considerations played some role in the decision behind always generating new maps in the earliest classics (Rogue/Moria). Naturally there’s also then the need to be able to reuse that data, which requires more supporting code.

There also might be a need for partial simulation of other maps, for example in order to enable methods to combat stair dancing, or add more realistic behavior, plus of course building any additional systems to support backtracking, be they mechanics-related or for the interface.

Basically: Doing backtracking right is going to require more work under the hood compared to just forgetting about the past :P

Addendum: Intramap Backtracking

So what I really wanted to cover in this article is backtracking to previous maps, since that’s usually what people tend to have questions about, or opinions on, in our community dev discussions. Backtracking in terms of “revisiting local areas on the same map,” however, doesn’t seem to get nearly as much discussion. Since it’s a somewhat related concept and worth taking into consideration during map design, I’ll add a few notes about it here.

Some amount of backtracking in this sense is inevitable for tactical reasons (retreeaat!!!), or even strategic ones (returning to face a previously discovered challenge after preparing, visiting a local stash, etc.), though absent of player-initiated reasons to backtrack, it’s nice to be able to leave it as a mostly optional part of dungeon navigation, especially in roguelikes with larger maps.

In other words, ideally the player isn’t experiencing too much “well I’ve fully explored this section of the map, time to trek all the way back to a junction to find other new areas.” The larger the map, the more relevant this issue becomes, so I’ve definitely taken this idea to heart given that Cogmind basically has the largest maps among non-open world roguelikes :P

For this reason I like to make sure there are enough looping paths providing alternative routes to reach different areas, meaning fewer dead ends. This helps cut down on backtracking and is more likely to offer new encounters rather than having to revisit cleared/now empty space, should the player choose to continue exploring forward. Retreading old ground is generally a boring part of a roguelike, and I prefer to keep the focus on exploration.

cogmind_cavegen_analyzed

An old demonstration put together for one of my cave generation articles, with separate overlays showing both the general flow of the map and the loopable routes contained within, making it easier for the player to do more exploring than backtracking, even when traveling in a general direction (e.g. from one side of the map to the other).

As with freely backtracking to earlier maps, local backtracking can, however, be facilitated through QoL features to help mitigate the downsides.

Some roguelikes rely on autoexplore, which cuts down on the negative impact of empty space (both backwards and forwards!). Similar movement-enhancing features include “running” (commands to move in a single direction until an obstacle is hit), or even simply selecting a destination and automatically pathfinding to it, which is clearly pretty effective at unwinding a recent detour to return to a main path, or directly approach unexplored areas elsewhere.

tggw_shift_running

Exploring a TGGW dungeon with the help of shift-modified movement keys, which will continue in a given direction until stopped/reach something interesting/see something dangerous, and even follow corridors.

Personally I feel that using the mouse to click some faraway spot to return from a dead end has a good chance of interrupting the flow of exploration in some roguelikes, turning the map into a series of disjointed encounters, the relative locations of which don’t even matter anymore. This topic actually comes up a lot with respect to game design and autoexplore being an unfortunate band-aid.

But we can sorta do something about that if we want to! Wandering threats are a big help (especially combined with interwoven looping layouts :D). That passage that was cleared earlier might not be so clear on the next visit.

Cogmind has an easier time taking this to the extreme since it’s more of a living world than the typical roguelike, filled with lots of actors which means lots of potential encounters shifting around, sometimes across great distances. Some actors may leave the map, other new ones may come in… It’s a busy place, and the macro strategic environment combined with various clocks trying to push you forward mean that autoexplore is both wasteful and dangerous, which I think is a good sign in roguelike design.

cogmind_AI_general_movement

A bunch of actors (colored by category) doing their thing on one section of a map in Cogmind, and this is without player interference or other events, which might mix things up and lead to yet more variety.

Earlier I mentioned QoL’s role in mitigating some of the potential negatives of backtracking, and yet another area for it to shine here is with features such as item searching and other memory aids.

To that end I added item searching and filtering to Cogmind a couple years back, and it is pretty glorious when you need it.

cogmind_item_search_ui_demo_filters

In Cogmind filtering known items by name and/or other criteria, to highlight them on the map and path there.

Zorbus’ item search and filter interface is similarly cool, a nice implementation that also includes a closeup of the selected item and its surroundings, as well as a path to it.

zorbus_item_search_filter_sample

Zorbus item search UI in action.

Anyway, backtracking in the intramap sense is almost universally found to some degree or another in a roguelike. The real question is whether you’re going to allow players to visit old maps again, and get the most out of taking whichever approach you decide on :)

Posted in Design | Tagged , | Leave a comment