Official development blog

Quicksaving and Restore Points

For me, permadeath is a huge part of the roguelike experience. When you make enough mistakes that you lose--that’s it, it’s over. No immediately starting from a safe checkpoint not long before in order to try again, no in-game benefits carrying over to future attempts. Each run is an isolated attempt in which you’re armed only with your knowledge and experience, where the lack of second chances clearly raises the stakes, and the consequences of each and every action feel that much more meaningful compared to games where you can simply say “oh well whatever I’ll just load my last save.” Taking on added risks has an all new meaning that fundamentally changes one’s approach to decision-making.

In that vein Cogmind has been strict on permadeath for its seven years of history to date, but things are [sorta] changing…

Cogmind today is a much longer game than it used to be (or at least it can be depending on play style and goals), and some people don’t have the time or desire to be punished by losing a lot of progress/time to their mistakes, or maybe they simply don’t have the time to spare but are still eager to enjoy more of the game. These are the same people for whom multiple difficulty settings were added a couple years ago. It’s an important form of accessibility, and while it isn’t for me, features like difficulty levels have added a lot of value for a decent chunk of players (no doubt after even more people discover them following the latest visibility improvements).

The same can be said about the ability to save and load progress. If an additional subset of players can better enjoy a roguelike once they have the ability to easily load a save slot, then adding such a feature seems like a good idea already.

People more inclined to want or need this feature are already more likely to do their own save scumming anyway, so why not make it easier? Well, technically there are arguments on both sides of this issue, both sides with merit, so for Cogmind I’ve ended up opting for a middle ground on this particular feature.

So yes, Cogmind is getting it’s very own save/load feature.

But it’s “middle ground” because this feature is not included in the highest difficulty setting, Rogue mode. I decided I want to preserve that mode as the “intended/designed way to play,” and a significant chunk of people who will enjoy the Rogue setting in the first place are going to be into the challenge of traditional roguelikes and permadeath anyway.

The two other difficulty modes, on the other hand, both support the designation of an arbitrary save point which can be restored at any time.

When in either Adventurer or Explorer mode, the game menu displays two new buttons for controlling the “restore point.”  As you can see below, if there is a previously saved point to load, the load button becomes available and shows both the location and turn number to be restored.

cogmind_saveload_game_menu

Accessing the save and load feature from the game menu.

The feature is also accessible via keyboard without the menu, simply by using Ctrl-F8/F9 as quicksave/load buttons while in the main UI.

In terms of architecture, Cogmind was of course already capable of saving runs to be continued later, and even arbitrary input-based saving and loading because I rely on it heavily for testing and debugging. From there it eventually became a Wizard Mode feature available to some patrons starting earlier this year. But the next step was a big one--debugging and wizardry are fine with some limitations or quirkiness, whereas a public feature needs to be accessible and robust!

For one, saving and loading need to also be available from the game over screen, in case the run ended prematurely but the player wants to go back and try again from their save point. So that was yet another expansion to that screen, adding a new row to the bottom if and when that option is available.

cogmind_saveload_gameover_menu

Restoring a save point from the game over screen.

For convenience that also displays the save point’s depth and map (if the latter is known to the player).

Overall there were a surprising number of technical considerations behind building a quicksave system that would be compatible with the rest of the game design. It ended up taking a couple days to work through all the possibilities.

Like the game already maintains a save file for the current run, the one that is restored if you exit the game and come back later--should this manual save override that? No, that would conflict with one of the goals of having a manual save in the first place: to be able to go back to an earlier point than the most recent progress. Clearly this needs to be a separate file, meaning this system exists outside the normal save system.

So if you die and never explicitly made a save point to recover, this approach would imply that’s the end of the run there’s no option to go back. To prevent that situation, I implemented “automatic manual save” behavior, whereby if the player has made no save point of their own, at the beginning of each new map the game fills their optional save slot with one automatically. That way if they lose, the game over screen will still present them with the option to load back to that point despite having set no recover point of their own. (Also rather than blindly saving on each new map the game is somewhat smart about it and will skip the save if the player is in very bad shape :P) Anyway, allowing players an opportunity to “try that last map again” is possibly a good way to learn without having to go all the way back to the beginning.

On top of that file we also have the previously implemented periodic autosaves--backups in case a save file somehow gets corrupted (but more often for debugging purposes), and the save file used for time travel (yes that’s how that feature is implemented :P), so together with this new type, there are now four different possible types of save files for the current run!One of the other quirks of the new quicksaves is that they’re only valid in the current run. In other words, once you start a new run the save point from a previous run is no longer accessible--that would get rather confusing, suddenly switching back to a different run, and it would cause a number of other problems too, so I had to put that restriction in place.Altogether the save system is a little different than what’s found in non-roguelike games, since it was designed to work alongside the original “run-based system with automatic resuming on return” more common in traditional roguelikes, while combining the benefits of each.

I’m pretty sure that even though it’s now an “official feature” of two of the three difficulty modes, runs that have been quickloaded will be excluded from the leaderboards.

The HUD also got a new indicator that pops up in the top-right corner when applicable, showing the number of times the current run has been manually loaded so far.

cogmind_saveload_HUD_loaded_count

The load counter as it appears in the HUD, here having manually restored to an earlier point twice before on this run.

And for those who want to play Adventurer/Explorer modes but don’t want to even have the quicksave option available to them (to avoid the temptation to use it), I added a new advanced config option to disable that feature entirely, in which case the hotkeys won’t work and none of the relevant buttons will appear.

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

6 Comments

  1. Posted October 22, 2019 at 6:36 pm | Permalink

    I’ve been a fan of Roguelikes for years but as a lot of people I suck. I love permadeath and the concept of having isolated runs, I really do. But for Cogmind must say I’m happy with this new settings because my runs weren’t for reaching the end, they were to explore the game maps and the beautiful life GSG has created. Bothacking, upgrades, and more things I don’t want to spoil. God, I even made a webapp for collecting the hacked bits of lore. I don’t want to be on a rush playing this game, I don’t want to win (I’ve never won yet in years I’ve been playing), I wan’t to know everything about this game before saying I’m done with it, and Save Scumming is a new way of enjoying the world without fear, risking everything for that Query(lore) command or just going to that prototype weapon to randomly break the wall and kill some innocent servs.

    Thanks for this option GSG (Kyratzi, Kyzrati… I suck at names, I’m so sorry)

    • Kyzrati
      Posted October 22, 2019 at 8:02 pm | Permalink

      Hey Gexgekko, glad you like it, I wonder how many more people will be making use of this new feature--hopefully many more like yourself :). I’ve certainly heard from a number of players in a similar situation. Some just play on an easier difficulty combined with manual save scumming, so at this point might as well make this a built-in feature to facilitate it!

      This was something I didn’t want to add until late in development, but now the time is just right. There are even more features I’m thinking about in the future that you might like, but no need to jump the gun, we’ll see…

  2. Sylverone
    Posted October 25, 2019 at 10:06 pm | Permalink

    In a sense I think this represents a sort of retracing of the evolution of game design over the years. I’m reminded a bit of how in the past almost all RPGs had limited save points, sometimes requiring the player to have several-hour blocks of time to get through areas. These days that’s less common, and I’d say it’s a clear improvement.

    The difference, in this case, is that there is a special value to permadeath, and I’m glad to see it remain. I’m also very impressed by how you approach the subject in general, and I’ve dropped a few links around to your initial post about introducing difficulty modes.

    Being highly purist about permadeath is not entirely a bad thing, but I do think it is a restricting viewpoint from the perspective of exposure and sales, perhaps in essence because it’s not a very social one, and it’s hard to peel it away from elitist sentiments that some carry (and may not always be consciously aware of). Then again, what some call elitism is sometimes none other than conscientiousness -- the drive to set goals and pursue them despite setbacks. To a conscientious person (who will not always be a polite person), organization tends to matter, including “who’s better than who”. “People should work hard if they care.” Usually conscientious types find themselves at least somewhat opposed to those who are in favor of options and leveling the playing field. Interestingly, there some parallels in this to the whole conservative/liberal dichotomy.

    Anyway that’s basically my stream of consciousness on the topic for the moment. ;P

    Best wishes as 1.0 release seems to come ever-nearer!

    • Kyzrati
      Posted October 26, 2019 at 8:52 am | Permalink

      Hi Sylverone, welcome back :)

      Indeed it is kinda like retracing that evolution, heh. Permadeath used to be a lot more common in games, or at least the expectation of fairly tight limitations on attempts as one of the challenge factors. When done right it’s great, although as a mechanic it was overused just because that’s what everyone was used to :P

      Things have certainly come a long way with the rapid expansion of the gaming population, alongside years of collective design experience, and there are so many games nowadays that competition for player time is fierce. I believe today’s overall older gamer population is also less patient and more likely to sometimes just want to have fun rather than endless brain-racking challenges.

      That’s a lot of different topics to unpack, each of which I just barely touched on, but anyway, the point is “yeah times have changed and more options are good” :)

  3. Jim
    Posted March 23, 2022 at 10:45 am | Permalink

    People are ruled by philosophy. if they aren’t taught good philosophy laid down by the ancients, they will undoubtedly make up their own. often times i feel that people who push for permadeath or no difficulty levels belong to a camp that hold a shared philosophy about gaming. i think they believe that because permadeath provides a unique challenge, and therefore, a unique experience, that anything but adherence to the strictest definition is a form of adultery. but i think that what we’re really talking about is a form of vanity and pride disguised by pearl clutching.

    it’s easy to see that for those who beat the game in it’s “pure” form will have bragging rights. they then become gatekeepers to the community. because, after all, if you lower the bar so that others can succeed as well, then that diminishes the value of the success of those who came before.

    i reject the notion that a game’s value should be determined by the ego of someone who has more time to spare than me. if i’m winning at life, why should i be punished for it because you’d rather win at a game?

    the game’s rules should reflect it’s function. and it’s value should be determined by whether or not it’s fun, not pigeonholing it into a specific style determined by those who believe they are “better” gamers because they beat a game, while others failed despite numerous attempts.

    i would argue, spending ridiculous amounts of time to reach an achievement that serves no purpose other than thumping your chest makes you a loser, not a winner.

    lets get back to the rules. would progress saving make sense for a game like, tetris? no, of course not, because inherent in the purpose of the game is the challenge of making it to the end, but also, there is a LIMITED number of variations a player may encounter in the game, so that as it becomes more difficult, with time the player’s skill increases and eventually he can achieve success. add to that, there is no progress per se, and the inherent challenge is the end unto itself. how about super mario brothers? progress is a factor, and the challenge alone is not the sole function of the game. although you get extra lives, the levels don’t change, and therefore with practice, you can make it to the end. so we see a middle ground, a balance between progress and challenge.

    COGMIND is essentially a more advanced version of super mario. but it combines the brutality of tetris with the landscape of super mario. a landscape where the levels are different every time you play, and the penalty for defeat that punishes you for even trying.

    beating a roguelike in it’s “pure” form doesn’t make you a better gamer, it makes you a gamer with more time to waste. playing all the way to the end, and then losing it all on the final boss would leave someone resenting having spent the money on the game, and never come back.

    that’s not good for gaming. and it’s not good for business. games should be fun distractions from real life, not reminders of how bad life can suck.

    offering progress saving is a worthwhile addition that doesn’t have to impune the pride of those who enjoy the highest challenge. if you’re going to pearl clutch because others want to enjoy the experience with less stress, you need to get over yourself. the game doesn’t belong to YOU, as if the joy of the story is a sacred treasure that you’re not going to allow others to share in unless they enter through the same door as yourself.

    after all people, we’re talking about moving little electronic, digital pixels around on a screen in a certain way. there’s not much ultimate meaning behind that no matter how you want to justify it. it’s a game.

    people who have important things to do in the real world welcome these options. purists are always welcome to bump the difficulty to maintain their bragging rights.

    • Kyzrati
      Posted March 23, 2022 at 4:21 pm | Permalink

      Yeah I think having it as an option is good in general, even if it’s not for me personally (or most of the current players, technically), all in the same vein as the earlier discussion I linked back to in the article on difficulty settings.

      In the years since this feature was introduced, it’s certainly given a portion of players a better way to experience the game that suits their needs without really any major drawbacks.

Post a Comment

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

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