Official development blog

Special Commands Menu Design

For years now I’ve been planning to eventually create a menu for accessing Cogmind’s lesser-used “special commands,” features not only requiring the keyboard, but even all assigned to Shift-Alt key combos. So these rarely needed (but still sometimes useful) features were already pretty clearly grouped together as a unit by their annoying modifier, but ideally they should be easier to trigger, not to mention also more readily available to mouse users.

I waited quite a while to implement this menu, mainly because I wanted to design and build it for a more stable and complete set of special commands, one that we couldn’t really be sure about until later in development (and sure enough these features have been gradually expanding and fluctuating over time, coming to a head in the current Beta 11). In the meantime it wasn’t an especially pressing issue because, again, these aren’t exactly commonly needed features, so occasionally requiring a player to wrangle with awkward commands via Shift-Alt-[“some-letter-I-forgot-because-I-rarely-use-it”] wasn’t all that terrible. Even with the advent of a dedicated “Special Commands” interface, the Shift-Alt-[letter] approach is not going away--it’s still available for those who don’t mind, or even prefer it, but as you’ll see we also gain other benefits in the process.

All you need to do is press Spacebar and a new menu pops up with a range of options originally only covered by one of these Shift-Alt-modified keys, and the menu allows both button access via mouse or hitting the corresponding key to enter a given “special command” (basically a blanket term for less commonly used UI features).

There are lots of advantages here:

  • Allows mouse access to special commands
  • Players aren’t forced to use Shift-Alt for these commands (especially on non-Windows systems, where the use of Alt can be problematic), where Spacebar+[letter] will do
  • Feature discovery is greatly improved, since all relevant options are listed following a single keypress
  • No need to remember the letter associated with each command, since those are listed as well
  • Having an explicit menu visualized in the interface also offers an easy way to describe what each feature does

The menu appearance is animated in standard Cogmind style, but input is accepted as soon as Spacebar is pressed to keep it responsive for people who simply want to use this as an alternative way to enter keyboard commands they already know, for example Spacebar+s to dump stats, without the window annoyingly popping up in between the keys. In fact, for this purpose the window even has a slight 150-millisecond delay after pressing Spacebar before it appears, a delay that isn’t really noticeable for someone using the mouse, but plenty of time to enter a second key.

UI Mockups

Before actual implementation, as always I used REXPaint to design the general layout of this menu based on its intended functionality, and to inform later UI coding work. I streamed the process when getting started, in this video where I also covered REXPaint and glanced at other past UI designs:

It’s not exactly the most exciting piece of UI design, especially since for consistency sake it mostly draws on existing simple elements from prior window designs, though I’ll cover some of the design evolution here.

Cogmind Special Commands Window Mockup 1 (REXPaint)

The initial mockup drawn on stream in REXPaint.

The first iteration above aimed at simply getting all the likely elements into a box and work from there, so it uses a pretty typical title and border style (the missing notch in the bottom-right is for a potential close button, which in Cogmind uses a different double-width character so can’t be shown in this same REXPaint file), shows the full list of commands we’ll be including (11 in all), and includes two separate sections of gray text, one to point out that the commands can also be entered directly via Shift-Alt, and another to provide a description for each button/feature as the mouse hovers over it. As this is a mockup, the gray text is not actually written out in its final form (or even to make sense :P), just copied from elsewhere as I was moving things around to get an idea of layout. Real content comes later.

Having a vertical list of options is generally ideal as far as menus go (especially alphabetically-listed options), but the problem here is that, at least all other things equal, a tall-style window ends up limiting the amount of horizontal space available for command descriptions unless they potentially span numerous lines, which doesn’t make for good reading.

Something wider would be preferred, so let’s split the options into two columns…

Cogmind Special Commands Window Mockup 2 (REXPaint)

The second mockup continued improving the layout on multiple fronts.

Unequal column length aside, this will generally look a bit better insofar as giving us more horizontal space for descriptions. Also here I split up the two gray text areas by straddling the options, since keeping them apart seems to make sense given they have different purposes, one static and another dynamic.

Altogether it was looking better, but I didn’t really like the unequal amount of space afforded to the option rows, and decided to equalize that:

Cogmind Special Commands Window Mockup 3 (REXPaint)

Further refinements with a third mockup.

In this layout the UI looks less lopsided, which while not a necessity (either could work), I preferred this aesthetic, plus we even get a little extra room for the additional text.

Final Layout

Now there’s no way I’m doing my best work while streaming, certainly not alongside an unavoidable loss of focus due to chatting and whatnot, and streaming or not I tend to sit on things like this (any kind of design work) for a bit after an initial pass and revisit them for refinement anyway. Sure enough, later that afternoon after some hours away from it I took another look at the interface and immediately had a new take on it…

What started it was that I didn’t really like the idea of this being a relatively small floaty window out over the large map view. We don’t really have those in Cogmind--windows are usually either large or connected to some other associated object or UI element, but in this case it’s a general-purpose feature menu so doesn’t have a natural place in the interface to associate with.

I thought it’d be better to try to redesign it with an eye towards having it occupy more space, and in that vein came up with an aesthetic pretty different from what we had going before, but very much in line with other pieces of the UI which offer functionality not entirely unlike this one: Cogmind’s options menu and commands reference pages!

Cogmind Special Commands Window Mockup 4 (REXPaint) - Final

Fourth and final mockup, quite different from the others but I like it!

The above mockup assumes that the window appears over the map and extends out to either side of it in both directions. The button style already matched the options menu (as does the help text), and now the header and border does as well.

Other improvements in the final mockup:

  • Some commands were renamed, ideally so that their first letter matches the associated key.
  • We actually only need one section of gray text, rather than two, because we only need the descriptions available specifically when the mouse is hovering over a button, otherwise it can display the “default” message about Shift-Alt access.
  • The extra width allows for even longer descriptions without newlines, where instead each description will be written to keep it within the length seen in the mockup above (too long is also bad). This also allows the window layout to be more consistent since we don’t need to leave room for potential additional lines.

Here is the final implementation in action:

Cogmind Special Commands Window Demo

A demo of Cogmind’s new Special Commands window, here using it to activate the map ruler overlay.

Notice how the special commands menu is not vertically centered on the map. This is to leave some environmental context around Cogmind while it’s open, for reference. Not exactly a very important feature, but there’s room so why not :D

Notes

During the polish phase a few automations were added for convenience when it comes to mode switching and feature toggling. For example, Spacebar will automatically deactivate an active map ruler overlay since this will generally save time, particularly for mouse users who otherwise have to open the menu and click on the button again to toggle it off, and there’s seemingly no real reason one would need to keep the ruler on and then also access a second special command at the same time.

There are a few Shift-Alt commands not found in the menu, all three of which probably almost no one ever uses anyway, but they also require holding the key to take effect, so probably aren’t all that compatible with this menu approach anyway.

As for mouse access to the menu itself, I considered enabling that via middle mouse button, but that already has a somewhat more important use (plus again special commands aren’t that commonly needed…). Spacebar is also big and relatively easy to hit in these cases. I also considered having a clickable button on the main UI that could be used to open this interface for even better discoverability, and completely not needing the keyboard at all, but don’t really want to go that far just yet--it’s probably not all that needed compared to the extra clutter it would add for such low-use features.

Posted in GUI | Tagged , | Leave a comment

Maps Between Maps, and DSFs

I’ve described a few times (most recently when introducing Cargo Convoys) how Cogmind’s world is divided into two primary types of maps: main areas and branches. There is technically a third category serving special purposes, one that after many years is once again growing as part of Beta 11. This other category is what I call “maps between maps,” essentially much smaller maps forming optional bridges between the regular maps.

In its first year of Alpha builds Cogmind gained two such varieties of what we could call “intermaps,” in the form of Waste and Garrisons. Waste is reached via Chute Traps that suck robots down into a dangerous but potentially useful disposal area, looping back out to another area of the Factory at the same depth, and Garrisons are a primary source of combat bots that you can chose to proactively infiltrate for various reasons. Waste maps have not been explicitly covered on the blog before, but Garrison design was discussed at length. Today we’ll be covering a new type of intermap, the DSF.

cogmind_pixelwise_world_map_sample_intermap_highlights_no_redacted_spoilers

The sample world map I put together earlier this year, now with DSFs and specifically highlighting all intermaps (redacted-level spoilers have been edited out) (full size here).

Intermaps share a number of characteristics that differentiate them from most other maps:

  • Access from multiple depths: Intermaps of each type can always be found at more than one depth, so even if Cogmind doesn’t visit them at a given depth, there are more chances to encounter and/or take advantage of them later.
  • Numerous access points: Maps containing links to intermaps usually have multiple points from which to access them.
  • Unique access methods: Intermaps are not entered via the usual openly available stairs or doors, and instead each have their own special types of entrances.
  • Small interiors: The majority of regular Cogmind maps are fairly large, with main maps containing an average of 16,000 open cells, and branch maps around 4,000, but intermaps have only about 1,000 open cells.
  • Strong theme: Intermaps are tightly designed around their own unique mechanics and theme.
  • Optional: For the most part intermaps are entirely optional pathways (except being caught off guard by a chute, although some players opt to jump down known chutes as well).
  • Strategically meaningful: These special maps offer unique challenges for specific benefits, and choosing to visit them can be a part of short- or long-term plans. Intermaps are also the only way to loop back to another variant of the current main map, which sometimes factors into strategies as well.
cogmind_average_accessible_map_cell_count_samples

Comparing the total accessible area between main maps, select branch maps, and intermaps.

The closest common analogy for these maps to be found in other roguelikes is the concept of “vaults,” or small thematic areas often with some sort of risk-reward mechanic or otherwise challenge or cost for access, though in cases where these are presented as actual separate maps (rather than contiguously embedded within larger maps as I’ve discussed with prefabs), one important difference is that vaults would generally lead back to the same map and location from where they were entered, i.e. just going back out the door or some other portal. This is not something Cogmind’s intermaps can do because by design backtracking is not possible--leaving a map always pushes the player upwards or sideways on the world map to a completely new area, as seen in the sample world map connections above.

dcss_sewer_entrance_2016

DCSS contains “portal vaults” (aka mini-branches or sub-branches), like this sewer entrance. See portals on the DCSS wiki, and info about Treasure Troves; you can also browse many portal vault sample layouts and content in the source here.

Distributed Storage Facility

“DSF” have been in Cogmind lore since the very first release, and were actually one of the earliest pieces of background lore, just a bit of world building in that it describes an aspect of the Complex that was not otherwise represented in game.

cogmind_dsf_query_results

The latest iteration of the DSF lore entry hacked from a Terminal.

Worldbuilding generally calls for having a larger unrealized amount of content which is still at least referenced throughout the game, and Cogmind has always had a fair bit of that, though this sort of content also tends to be ripe with ideas for future features, or at least suggests where new playable content might want to emerge in a way that fits well with what already exists. So six years later, here we are with the real deal :)

In the past players had speculated that the Storage map might be an example of a DSF, which could indeed have been one explanation (no need to provide all the details when players can do a great--and better--job of filling these in on their own!), though the new official implementation aligns better with its stated intent, and Storage shall remain just a unique branch map by comparison. Storage and DSFs do, however, share a color theme.

Originally I wasn’t planning on adding DSFs in Beta 11 (or ever, necessarily), but the opportunity presented itself when I needed a way to offer some form of guaranteed access to Authchips as part of the fabrication overhaul. So this really was an example of taking advantage of the existing lore and bringing it to life, expanding upon it, in order to meet other design needs. Of course if that’s all it was for this might seem like overkill (adding a whole new map type?!), but I felt there was plenty of room to play with here for it to become an interesting strategic option, regardless of tie-ins to the fabrication system.

So let’s look at how you get into this place, and what you might find there.

DSF Access

All Factory and Research maps have a number of DSF entrances, special-purpose Terminals that control an adjacent access point, similar to how Garrisons work. These locations have a unique look to them, a simple Terminal adjacent to an open cell where the door appears once unlocked via the Terminal, and surrounded on three sides by reinforced walls.

cogmind_DSF_access_distribtion_factory

Sample Factory map layout highlighting all DSF Access locations, including an up-close look at the small prefab’s appearance. The space adjacent to the ‘T’ is where the door appears.

Although there are enough access points that the chance to eventually spot one at some point on each map is quite high (that they’re placed in corridors rather than inside rooms further increases this chance), the desired number here is mainly taking into account the fact that any which aren’t somewhat near the player’s entrance are unlikely to be accessible. The reason is due to a DSF-specific mechanic whereby all of the DSF entrances are permanently locked (as far as the player’s time on the map is concerned) as soon as any hostiles are spotted. So to actually get inside one, the player must do so without being spotted by anything on the lookout for enemies of the Complex.

Even though DSFs were added to the game as a guaranteed method of obtaining Authchips, as I emphasized again in the recent fabrication article Cogmind’s philosophy focuses more on adapting to what you find rather than having high control over predetermining your build, so although the Authchips themselves are guaranteed consistent rewards inside, the ability to access a DSF at all is the less consistent part of the equation :P

cogmind_DSF_access_open

Opening a DSF via its Terminal.

To facilitate locating the nearest DSF, among the other usual possibilities there is also a new non-RIF Hauler hack that anyone with a Datajack can perform: find_dsf. The result of the hack takes advantage of the new map comments system, adding an automated comment marketing that particular Terminal for what it is.

cogmind_robot_hack_find_dsf_automated_map_comment

Hacking a Hauler to find the nearest DSF. Here you can also see the difference in color scheme for a map comment added automatically as opposed to manually by the player.

There is a global message when anything hostile is discovered on the current map and DSF lockdown is engaged (technically this doesn’t have to be the player, but the player is the most likely to trigger it first), after which attempting to open any DSF will simply report that it’s in lockdown mode.

Layout and Defenses

DSF map generation is similar to Garrisons in that it is based on quadrant prefabs, albeit simpler overall since there are no variations--each quadrant is either present or it isn’t, and there must be at least two of them (one to hold the entrance and another for the exit).

cogmind_DSF_annotated

A full-sized four-quadrant DSF with its major features annotated.

There are quite a lot of good items to steal from a DSF, with four sections of Authchips around the center, two to four quadrants each with their own random theme (e.g. weapons, devices, traps…), and main corridors lined with random parts. Each quadrant also has a chance to include a hidden (but sometimes guarded) area behind its walls containing extremely good parts, and the Matter Repositories can also be damaged to recover a lot of Matter if necessary.

The primary defensive feature is the Heavy stationed at the center, around which the entire DSF layout was planned. Its sensor range covers almost the entire map (except the corners), and reaching the exit always requires passing through its visual range, so it’s necessary to have a way to deal with this bot. Each corner also has a chance to contain a dormant Specialist. As usual the Heavy can call in reinforcements, and an infiltrated DSF will eventually also be subject to additional patrols, thus limiting the amount of time available to freely loot the area.

Destroying enough robots within a DSF triggers another emergency defensive measure, “rapid sterilization,” or a quicker version of the sterilization system found in other parts of Complex 0b10 which gradually raises the ambient heat until no robots can survive. This offers another optional strategy to afford more time for looting since with enough cooling Cogmind can survive longer than other bots.

DSF are generally predictable as described above, and though the types of items found within can vary greatly (aside from the Authchips), there are so many of them that stashes will usually have at least something useful for most builds. But it’s always nice to throw in a little more extreme variety for fun, so there are a number of possible DSF events that occur more rarely (without removing the chance to loot).

Routing

In most cases leaving a DSF will exit to the next higher depth, although there is a small chance it instead leads directly into a Garrison, to throw a little wrench into the best laid plans, for fun and excitement.

cogmind_world_map_mockup_DSF_visit_and_progress

World map UI mockup reflecting intermap-related routes.

There are definitely more ideas that could later become new types of maps between maps (much longer-lived plans than the spontaneous DSF :P), and while I’m not sure how likely it is to happen, I’d also like to do experiments with small maps that can return the player to the same map that was left earlier. This would be a pretty complicated endeavor after so many years of building an architecture that assumes it’s not possible--plenty of room for bugs and design issues in there xD

Posted in Design | Tagged , , , , | 2 Responses

Year 8 of the Cogmind

Cogmind is now in its 9th year of continuous development, so as usual let’s take a look at the past year of progress in yet another annual review!

Although most of the feature progress I share is in the form of animated gifs, there are a handful of static PNGs as well which I’ve compiled into another collage for a visual overview of 2021:

cogmind_development_year_8_small

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

Development Time

Hourly recording of dev work continues as usual, and the trajectory is similar to last year with more time put towards coding and work on the game itself as opposed to community-facing marketing-type stuff (an angle made easier by the lack of public releases, but we’ll get to that later :P). I’ve been a lot less interested in getting the word out and would rather focus on spending time with current players (the Roguelikes Discord is where we’re at!) and improving the game for those of us who are playing it.

That said, it’s still important to do some types of that outward-facing stuff which includes a lot of discussion and writing, so even at this rate I don’t really see, for example, Code overtaking Community in this graph for a long while :P

cogmind_cumulative_time_input_breakdown_201306-202111

A categorical breakdown of the hours that have been invested in Cogmind-related development over the years, through November 2021. (More data and details about each category will be shared at some point in the future during a comprehensive review of these records.)

Like 2020 there was a fair bit of extra time allocated to non-Cogmind-related roguelike community efforts (and therefore excluded from my tallies), such as the usual moderation, but also quite a lot of 7drl reviewing and streaming, and introducing and streaming other roguelikes.

I also took some time out in the middle of the year to try to bring in funding through other means, but without going into details let’s just say that didn’t pan out in the end (though it did unfortunately eat up that time xD). No matter, we have a growing patreon! (see further below)

Releases? Sorta :)

This is normally where I’d cover all the public releases from the year, but… yeah, in a rather anomalous development we didn’t have any aside from the quick AFD job back in April (it was released in tandem with this progress report, though there was no changelog or other description for it, as a sort of surprise since… all robots explode in dramatic fashion when destroyed :P).

2021 marks the first year in which Cogmind had no major public release, which if you’ve been following the blog (or checking out the occasional long-term progress announcements or my streams) will know is because the year has been spent working on the next huge iteration of the game along with patrons.

So 2021 is basically the year of Beta 11, in preparation for which there have already been eight major new versions (and other minor ones) released for testing since January, covering a variety of new and revamped systems as the whole of Beta 11 comes together. Development has been going pretty smoothly and I hope to have it out some time within the next few months.

While the year has been a special one in Cogmind history for being entirely devoted to laying the groundwork for a great 2022, this is not only in the sense that a game-changing Beta 11 is well on its way to completion…

For one, support via Patreon has really come into its own! The numbers don’t lie.

kyzrati_patreon_earnings_history_2019-2021

Patreon earnings data, 2019-2021, straight from the dashboard.

Having reached and maintained the level I set for funding “the Unchained,” guess what Beta 12 will be bringing in 2022 :D. That’s one of the potential mini-factions which I haven’t really talked much about, though they were given a bit more color as part of last year’s Forbidden Lore ARG (search the walkthrough for the keyword “unchained”).

The financial support is great since it means development can continue without selling DLC or expansions etc., which put more awkward pressure on the design and are something I’ve always wanted to avoid even though it would technically mean more revenue. Having a better and more cohesive experience is more important to me, and I’m sure is more appreciated by players as well.

Speaking of thresholds, not too long ago Cogmind’s Steam review count finally reached the goal I set two years ago (800 while maintaining an OP rating), and that means we also even have a roadmap for next year’s Beta 13! It will feature yet another faction, this one hailing from a new Derelict community currently dubbed “Scraptown” (a code name subject to change once implementation begins). I also gave the concept a little more color in the ARG (search for that keyword in the walkthrough), but still mostly teaser material rather than specific mechanical details or lore implications. (Noticing a trend yet? That ARG is full of concepts that could easily find their way onto Tau Ceti IV some day…)

Seeing as we’ve already got an extended roadmap laid out (remember there’s also the Merchants Guild to come in a bigger expansion, too!), I’m not setting a new review threshold for now, but keep ’em coming since it’s good for the future of the game :D

Community

One could say 2021 has been a very big year for third-party releases by the player community :)

Although I’ve already mentioned some of them in previous progress updates, it’s worth highlighting the major projects here again as well since they’re new this year and forming an important part of the experience for players that make use of them.

Cog-minder by aoemica is a great resource with a filterable item database, build theorycrafting, combat simulator, and more. It’s still getting occasional fixes and updates, but is a very useful tool if you want to plan out how to take your game to the next level.

cogmind_aoemica_cog-minder_feature_composite

Visual summary of some of Cog-minder’s primary features.

Dataminer by leiavoia takes advantage of the large amount of run data collected by Cogmind from players who opt into the leaderboard systems in order to present you with a huge range of graphs summarizing each run, even including unique forms of analysis. (Dataminer is also still expanding with new features.)

Dataminer stat samples by leiavoia

High-level overview of some of Dataminer’s run stat features. Direct links to Dataminer processing have also been added to the run database.

Runia’s 3D-printed bots based on Cogmind’s tileset both look great and are also for sale if you’d like your own. (Runia can be found on our Discord.) It’s been fun watching these come to life over the year as Runia discovered more of them in game :D

cogmind_runia_3D_print_samples_210717

A partial set of completed 3D-printed models from Cogmind, by Runia.

Also it wasn’t for everyone, but I did actually create a special one-time event for two of Cogmind’s streamers who were playing together earlier this year, Tone and MTF, and many of the core players hung out in those streams (or later watched the videos) to do a sort of “stream-only ARG,” basically unique content only for that one run which filled in a bit of hidden lore that no players had uncovered in last year’s ARG. I’m quite happy with out that turned out, and Tone archived the run on YouTube if you’d like to check it out, with the first video here:

A big <3 to the great Cogmind community, which really helps keep me (and this project) going.

I won’t post a screenshot this year, but 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 (and then not bother competing for the top 10 because those games have much larger communities--but we can manage Top 100). Update 211211: Aaaaannd we’re in the Top 100! :D

2022

Normally I’d end with a little talk about our roadmap, but this year being special and all I seem to have already covered that above, since what happened this year has played an integral role in confirming what’s to come.

In summary, we should see Beta 11 in all its glory released within the next few months, followed by Betas 12 and 13 each with a new faction and mechanics, coming much more quickly than what you’ve seen with Beta 11 xD

I also have at least one major event in the planning stages (promise it’ll blow your Cog-mind), but I’m currently imagining that’ll be further out beyond these releases. We’ll possibly have some other smaller ones during the year as well, depending on how the release schedule aligns with other factors.

Posted in Annual Review | Tagged , , , | 6 Responses

Design Overhaul 4: Fabrication 2.0

The updates to Cogmind’s fabrication system aren’t exactly an “overhaul” to the extent seen with our other Beta 11 modifications in this series, and not like the one back in 2016 when the process was greatly simplified from its original early alpha form. As you’ll see this is more of a rebalancing, though it does make several important changes including the introduction of a new mechanic and type of part to go along with it, affecting the overall feel and accessibility of fabrication for different builds.

Fabrication is an interesting topic in the context of Cogmind because adapting your build based on what you find and salvage is a major part of the experience, and yet here is a system outside that process with the potential to enable the tightest level of control over your build. So naturally I’ve always wanted to limit the amount of fabrication possible across a run, but just how to best limit it has been in flux.

Prior to the changes in Beta 11, fabrication has been fairly tightly coupled to machine hacking capabilities. That is, with enough hackware you could pretty easily both get the schematics you want and build them at one or more Fabricators to significantly flesh out a build. Moreover, builds capable of this approach (fast/evasive/intel-oriented builds) are less likely to lose parts to begin with, making it easier to coast along with a very stable build. Now I don’t want to completely remove this strategy--it can certainly be an interesting way to play, with its own challenges, but I believe it should be a little harder to execute than what we’ve seen so far.

Limitations

For a long while the main global limitation on fabrication involved the map-wide “central matter system,” which contributed the matter required to build parts or robots at a Fabricator. The system’s matter would be replenished at various intervals, and the more matter drained by unauthorized player-initiated builds relative to the amount of matter remaining in the system, the more likely to be discovered and have the entire system shut down permanently (as far as the player’s time on the map is concerned).

So the rate of fabrication depended on the matter costs of building a given set of schematics vs the rate of replenishment, while being able to build anything at all was contingent on not being discovered (which would always happen eventually, but involved a fair bit of randomness--sometimes very quick, other times allowing for many parts or robots to be built).

I do like the idea of central systems that can be hooked into other pieces of the content, as these are the sort of connections that really help bring a world to life, but aside from the disabling of matter-related machines reducing the reserves available for fabrication across the map (a fairly opaque connection, to say the least), there were no other links made here. Based on how many such mechanical or thematic connections there are elsewhere in the world, people kept assuming or hoping they could add matter to the system at Recycling Units by recycling parts, but for various reasons I didn’t want that to be a thing.

Beta 11 removes the central matter system entirely, and by extension there are no more map-wide lockouts. Certainly no big loss here, and players will be really happy with these changes, though of course I’m still going to want some limitations here, so what’ll it be…

The aforementioned hacker-fabber strategy remains largely intact, but hackers now have a one-build-per-Fabricator limit, because as soon as an unauthorized build is initiated, that machine is locked (but will still finish the job) and an investigation squad is sent to the area. This latter element will add an extra challenge to obtaining parts/allies this way by eventually increasing the number of local hostiles, though both finding more Fabricators (to perform more builds) and evading, distracting, or recalling the investigation(s) are feats well within a hacker’s area of expertise.

Based on what I’ve seen in player runs, and the way the numbers balance out, this change will ultimately have a relatively minimal impact on what is possible for hacker-fabbers to achieve (though again there might be some extra challenge involved). While under the central matter system it was nice that there could be a bit of a choice in there with regard to pushing for faster fabrication at the cost of a higher risk of discovery, by design that system was fairly opaque and therefore difficult to strategize around. By comparison, this newer system is reliably consistent with clear consequences, which is generally preferable with an extensive central system like this.

(It’s also worth noting here that the “preloaded schematic” mechanic remains intact, and building one does not count as an unauthorized build, so getting lucky with a good preloaded schematic you want is still a nice thing to find. Internally I even expanded that system as I’ll describe later.)

So hackers can now enjoy the removal of global rate limitations, and more predictable fabrication potential rather than sudden complete lockouts after a single build or two, but this update is about much more than that, because in addition to increasing reliability while reducing some of the potential for excessive fabrication by hackers, non-hackers are also getting a new way to reliably fabricate something via *gasp* a new consumable!

Authchips

Fabricators don’t need to be a resource limited to hackers (or anyone who happens across a lucky preloaded schematic)--why not include another option for accessing them which different build styles can also take advantage of? I’ve generally tried to avoid consumables in Cogmind (and written as much about it before), but as with Relay Couplers I believe there’s room here for a new tool and limiting factor in terms of how non-hackers can utilize Fabricators.

“Authchips” are a new type of consumable item that can each be used once to load and build a single schematic. Success is guaranteed, and using one does not cause any detection, tracing, or other negative side effects. There being no explicit central matter system anymore, and no more lockouts, Authchips essentially allow for otherwise unlimited and safe fabrication so long as one has the necessary chips.

cogmind_ascii_art_beta11_authchips

Authchips!

Technically an Authchip must be attached in order to use it for fabrication, a requirement which allows for them to come with corruption as a possible drawback, while more importantly also making this feature compatible with the UI in that by attaching an Authchip of a given type, it can be assumed the intent is to use the Authchip rather than attempting to hack the target instead (there is no explicit choice available via the Fabricator interface).

cogmind_fabrication_via_authchip_demo1

An example of using an Authchip to immediately start building something that would otherwise be pretty tough in that situation (notice the special color and indicator in the schematics list).

Scoresheets have also been updated to include Authchip indicators.

cogmind_scoresheet_fabrication_authchip_indicator

We can now also tell from scoresheets whether an Authchip was used for a given fabrication.

Balance Factors

Obviously with success at a Fabricator guaranteed and without consequences, Authchip design needs to rely on other factors to ensure balance.

First and foremost is acquisition, or how and whether the player can obtain Authchips to begin with. On this front I added quite a few sources, but admittedly almost none of them are guaranteed. This is more in line with Cogmind’s philosophy of “I have found this interesting new option, should I take advantage of it?” over “I have a very specific plan and am going to execute it to a tee.” The former is much more roguelike in spirit. Two of the Authchip sources are guaranteed, but each of those comes with its own drawbacks and is therefore not necessarily something everyone would want or even be able to do. Instead the general idea is that players may randomly encounter one of the many different possible Authchip sources and have to decide then and there whether they have (or will seek out) a desirable schematic and want to allocate the required inventory space until they reach a Fabricator. (Update: I’ve since written about the primary guaranteed Authchip source, DSFs.)

A second balance factor likely apparent from the earlier demo gif is that “Authchip” is not a single item, but a group of items which each apply to different part categories, as with Relay Couplers indicating their relevant category in brackets. The main issue with consumables (and basically any non-part item) revolves around making sure they’re worth the slot requirement and/or inventory space compared to whatever else they might be displacing. Based on their intended frequency, allowing a single Authchip to build any schematic whatsoever would have far too much versatility for the goal I’m aiming for, but fully splitting them into a 1:1 ratio with item types would be excessively limiting, so I’ve chosen a middle path that divides them by slot type while further subdividing utilities (the bulk of Cogmind items) into four main categories, giving us Authchips for Storage, Devices, Processors, and Armor in addition to the slot-based Power, Propulsion, Weapons. Robots, mostly a sideshow when it comes to discussing fabrication so I haven’t been mentioning them much so far, simply add two more types of chips, Combat and NC (non-combat, using the same abbreviation found on couplers).

cogmind_fabrication_via_authchip_demo2

Another Authchip fabrication demo, this one of the [Propulsion] type.

The third balance factor is of course schematics! It doesn’t help to have the “right” Authchip without a schematic to use it on. Hackers aiming for fabrication are at an advantage here since they’ll have a wider variety of schematics to choose from earlier on, though it’s not too hard for even non-hackers to hack up a smaller number of useful schematics, or maybe find some random but potentially useful direct schematics at Terminals, or more likely acquire free schematics from NPCs. On the latter part I also added support for prefab-scripted Terminals to include procedurally-selected schematics, whereas before any Terminals with schematics were static, or at best chosen randomly from a list I compiled manually, so now there’ll be more variety in some prefab locations and therefore a greater chance to get something interesting or useful for different builds. I also applied that schematic generation code to a new item, the Schematic Archive, a collectable data item containing a random schematic which is learned on picking it up. There aren’t many places to find these yet, but the item and foundation is there. Yet more ways to acquire schematics will be added in the future (very likely related to Merchants).

cogmind_schematic_archive_item_info

Someone in Zion probably owns a lot of these.

The nice thing here is that new strategies and tradeoffs will appear now that technically any build has access to Fabricator use assuming they have the schematic and can acquire Authchips, at least any build willing to temporarily sacrifice inventory for the promise of being able to eventually build something neat later (there are no rating limits on what can be built at any Fabricator, so it really is all about getting the desired schematic).

Complex-initiated Fabrication

Complex 0b10’s Fabricators weren’t installed as a friendly gesture to intruders. They’re of course one of the main sources of Unaware robots and parts, albeit mostly built at some time prior to your own arrival (or after your departure). Still, this being a living world it’s nice to see evidence of it actually happening, so for a long while now Fabricators have actually been able to produce things, where any parts built are picked up by a Hauler which takes them from the map, or any combat robots built head off to report to a Garrison. It’s not incredibly common, plus it could can happen at any Fabricator on the map, so the chances of coming across it are not all that high, but it does happen.

Now in the past the implementation of this feature took the easy route (as rare low-impact content tends to do if it won’t make much difference), with simply a small random chance each turn that a random Fabricator somewhere on the map would suddenly spit something out as described above. The problem with this approach is that internally it didn’t follow the normal fabrication rules, in that there’s no real production process, nor is the proper schematic even loaded on that machine--it just… happened.

Not a big deal before since this behavior was mostly fluff, but along with the fabrication system changes, it turns out we needed to remove or replace some hacks, since the matter-related stuff from before no longer applied. When updating content, wherever possible I prefer replacement over removal, as this helps feature modifications either increase the amount of content or at least keep it stable, and also forces a bit of creativity (“what would this feature do instead under this scenario?”) which can have unexpected and fun results!

A Fabricator’s Network(Status) command/hack was originally meant as an easy way to check on the current central matter reserves, but instead of removing it, what better new purpose than to tell you what all the Fabricators are really up to? …If only the Complex actually knew :P

Fortunately with a fabrication rework comes more time to focus on the system and a greater desire to expand and perfect it, so 0b10 will now preload schematics for what it’s planning to build, actually puts in the time required to do so, and Network(Status) reports the details.

cogmind_fabricator_network_status_preloaded_schematics_automated_map_comments

Network(Status) effect under the new fabrication system.

In that gif above you’re also seeing a new purpose for the Map Comments feature: automated comments! It wouldn’t make much sense to give all this network status info if there wasn’t an easy way to reference it. It’s the kind of information players would want to consider taking notes on, or add their own comments via that UI feature, but in any case we may as well just have all that happen automatically.

You can edit and remove these map comments as normal during comment editing. The system is also smart enough to automatically remove/update existing Fabricator comments if the situation has changed by the next time you run that hack.

Similarly one of the Fabricator Trojans was given new functionality, which also makes use of automated map comments to report on fabrication processes in real time wherever you are.

cogmind_trojan_report_automated_map_comment

Real-time map-wide fabrication reporting adding automated comments to the map. As you can see here automated map comments in particular will appear in a different color to differentiate them from those you’ve added on your own (the Network(Status) gif further above was recorded before that change was made).

While expanding the system I also added a couple new Fabricator Trojans to discover for fun :D

Results

I started brainstorming changes to the fabrication system a year ago in reaction to lots of recurring player discussion on the topic, and more recently spent a couple months revisiting possible concepts a few times, sharing some of the process with patrons while refining it further each time.

The process was supposed to culminate in a “purely experimental” test release to see if this whole Authchip idea would work or if we might want to roll back any changes and continue looking for other systems. Things didn’t end up playing out that way because following that many refinements, and while eventually starting to implement the foundation, I started getting pretty confident that even if it wasn’t perfect, this design is close enough to the final state to warrant skipping the whole experiment idea and building it in full. So it’s here to stay.

Part of the reason for the late confidence was that the original concepts were more extreme, going as far as considering replacing Fabricator hacking with Authchips or other such heavy-handed requirement, but in the end as you can see the new system is more of a rebalanced and expanded version of what we had before, so a lot easier to predict the results of adding it to the game and I at least don’t see any negative consequences, per se.

The new system has been included in Beta 11 prerelease versions for some weeks at this point, however experience with these bits is still limited so I can’t actually comment on how successful it’s ultimately been. I did make a list of other factors that could be used to further tweak the balance if necessary, though I’m still confident at this point that over time this’ll work out.

Posted in Cogmind Beta Overhaul | Tagged , , | Leave a comment

Map Comments and Log Notes

Back in August I was watching the first Tone-MTF combo stream, and listening to them repeatedly strategize aloud so they could collaborate brought more than the usual planning talk to the forefront of the conversation, through which I noticed the occasional potential for manual map comments to be helpful.

Very few roguelikes support freely adding annotations to specific locations on the map, perhaps because most roguelikes don’t have very large maps anyway, or rely on other features like map memory to serve enough of that purpose (some roguelikes will even store old enemy position data in addition to items and other objects/environment features), or don’t allocate quite as many dev resources to non-essential UI features.

tggw_map_memory_creatures

The Ground Gives Way remembering that a particular creature was left outside your FOV when you moved away, a simple way to let you know you avoided or fled from something in that area earlier. See the two ‘c’s to the south of the player (@), where ‘c’ represents a canine type creature. (Wild dogs are fast but can’t open doors so I used a rod of slowing on them then retreated to close the door.)

For a while on Patreon I had suggested map notes were a possibility for Cogmind, and although there was a fair bit of support for them among the player base, it wasn’t high compared to the desire for various other features. Some potential roguelike criteria to consider as far as the usefulness of map comments:

  • If backtracking to earlier maps is possible, players may need to remember some important local detail(s) long after they may have forgotten them due to having since interacted with many other subsequent maps and encounters.
  • If maps are large or complex enough, players may have a harder time remembering details about an area they might revisit later, or after saving and loading their game for another session.

There’s no backtracking to previous maps in Cogmind, so my personal preference is to avoid ending a session partway through a map if possible, to reduce the chance I’ll forget some important piece of information without having to make notes on everything. On that note, however, back in Beta 10 I did add “log notes” which can help with just such a situation. Compared to an interface feature like map comments, simply adding notes to the log is much easier to build :P

cogmind_player_log_note_demo

Adding a custom note to the log. Implementing this feature is as simple as calling up a dialogue box to accept a line of text and copying it to the log once confirmed.

In terms of temporarily preserving info as a reminder for later, log notes are similar to map notes but without the positional data, though as is these will of course also scroll away as the log progresses since they don’t have a separate dedicated display.

Log notes could also be used to add more explanation to the message log for those players who will export it in full at the end of their run, for example to describe in greater detail what was going on at the time (in fact this was the original reason one player requested it a long while back).

cogmind_streamer_break_log_note

Interestingly, since the log notes functionality allows players to type a line of arbitrary text in the middle of the screen, some streamers have taken to using it as an in-theme way to write a message letting viewers know they’re away for a short break.

Back to the idea of map notes, although I one day finally decided to just add them on a whim for fun (I do rather enjoy taking dev detours to implement little interface QoL bits), I quickly discovered this was a complicated endeavor filled with potential for bugs and coming with plenty of UI challenges! You’ve got your typical data storage considerations, the need to write but also edit or delete existing comments associated with a particular location, a new modal interface to handle all this separately from the rest of the main UI, and visualization work involving showing the comments normally, or just reminders of the comment locations when not shown in full, or relative directions to comments to help pinpoint them across a larger map… All told, this feature ended up taking a week to complete.

Fortunately for the visual parts I eventually managed to get the comments piggybacking on the exit label system (including support for displaying relative direction of off-screen comments) rather than having to write a separate system, which would’ve taken even longer.

I will say that at first I didn’t really feel this system would be worth the amount of time invested in building it, but in the time since I’ve been discovering more uses (including automated ones) that have made it seem more worthwhile.

Map comments are added by entering “Comment Mode,” currently activated via Shift-Alt-c (but later also coming to the “special commands menu” in Beta 11 for easier access).

cogmind_map_comment_adding

Adding a comment to the map.

Even when not in the mode, the map view reminds players about comments made earlier by intermittently highlighting those cells (the interval is adjustable in the advanced options, or can even can be turned off entirely if it’s distracting). Hovering the mouse or keyboard cursor over a single comment position also shows that one comment in its entirety, but on entering the mode they all appear at once and remain visible as long as the mode is active. Right-clicking on an existing comment (or the ‘r’ key) removes it.

cogmind_map_comment_highlighting_showall_deleting

Highlighting individual comments, as well as showing them all and demonstrating individual removal.

As with other on-map labels, of course we need support for showing indicators of those not currently within the map view area. This was where it came in extremely handy to already have lots of architecture in place for displaying directional labels.

cogmind_map_comment_offscreen

Demonstrating off-screen map comment markers.

Comment Mode also supports cycling through existing comments via Tab/Shift-Tab for added convenience.

cogmind_map_comment_cycling_editing

Tabbing through map comments, and also editing one of them.

Overall there’s a fair amount of overlap between map comments and other existing features (including the aforementioned log notes but also other new Beta 11 features like item searching) so their usefulness will likely vary greatly from player to player depending on preferences, but it’s always nice to enable extra optional possibilities.

Map comments are indeed the only way to add custom spacial info where it matters, though in my understanding player-side uses are probably pretty niche and I’ll be keeping an eye out for what people end up actually doing with this feature.

Either way, I am starting to like the potential for automated uses, making map comments a potential new tool I can apply to have the game serve up reminders of certain location-based knowledge that doesn’t already have or justify adding its own unique method of display. I already have some ideas of my own, but this is also one area where it could help to see what players are doing, since repeated manual behaviors in certain situations are always good candidates for automation.

One potential issue I’ll be on the lookout for here is whether map comments actually add tedium to the game, mainly in terms of optimal play. Like marking known Sentry/Heavy defense points? Behemoths? It’s true people can theoretically use screenshots as a recording tool for this sort of optimal play, but that requires enough work that it’s not something players do in practice--we just rely on our brain instead :P. Once you give players a tool that reduces the cost of some form of optimal play, one that was previously safely beyond the threshold of reasonability, there’s always the danger that this new tool will invite tedium.

Again though, if some form of map comment is useful enough, it may become automated if possible. That said, doing this in a way that’s both useful and accurate could end up being a lot more complex than it seems at first!

Map comments have been in prerelease test builds for a little while so far and I have yet to hear about them getting a lot of usage, so I guess we’ll need more time to tell!

// TODO: Add list of automated map comment features here ;)

…and here we go, since publishing this I’ve started posting some other examples of automated comments, so the list begins:

Posted in GUI | Tagged , | Leave a comment