On Autosave

I finally cracked back into proper MMORPG Tycoon 2 development yesterday.  Unlike the last month, which has been this weird combination of planning, marketing, trailer shooting, etc. (and the month before that, where I was generally unproductive because of a fractured arm), I’ve finally cracked back into actually writing real code that will go into the full game.

First thing is setting out the requirements for milestone 12 (milestone 11 is the Greenlight campaign, which I’m basically now finished with apart from some text editing, but which is now just waiting on some work from artists and musicians).  The first thing on my list for milestone 12 is to finally tackle the autosave problem.

Modern games typically tackle autosave in one of four ways:

  1. Autosave automatically whenever the player reaches a “checkpoint”.  Typically, these checkpoints are placed after every individual challenge, or after every “unit” of play.  After every match, for short-duration competitive games, or after every turn for turn-based games.  This is by far the most common autosave implementation.
  2. Autosave at the end of a level.  Most FPS games do this.
  3. Autosave on a timer.  For example, autosave after every five minutes of gameplay.  Many Tycoon games do this (including the original MMORPG Tycoon).
  4. Continual “autosave”.  Every action gets saved immediately after being taken.  This is either wrapped into an XCom-style “Ironman” mode, or else an MMORPG-style “there are no saves” setup.

Additionally, virtually every game will give the player a “Unsaved progress will be lost” warning when they try to exit the game, reminding them that they should explicitly save in order to keep their most recent progress.

My current thinking for MMORPG Tycoon 2 is that I want the game to save automatically when exiting the game (as in #4, above).  I’ve also been thinking about doing the #1-style autosave immediately before the user picks a game perk for a new release of their MMORPG.  Where I’m hesitant is the periodic “Autosave on a timer” save.  Would that be useful, to have a couple of rolling autosaves, say, one saved every five minutes or so?   Just to be absolutely certain that you wouldn’t lose work to a game crash.  (I try very hard to avoid game crashes, but they’re bound to slip through at some point)

In any case, those periodic saves wouldn’t replace the before-new-release autosaves or the latest-exit autosaves.

Does that all seem reasonable?  I suppose one probably can’t have too many autosaves, really.  But these save files are currently about 1 megabyte each, so they could potentially begin to build up if I save too too many of them.