{"id":3764,"date":"2016-03-16T11:47:04","date_gmt":"2016-03-16T01:47:04","guid":{"rendered":"http:\/\/www.vectorstorm.org\/?p=3764"},"modified":"2016-03-16T11:47:04","modified_gmt":"2016-03-16T01:47:04","slug":"autosave","status":"publish","type":"post","link":"https:\/\/www.vectorstorm.com.au\/2016\/03\/16\/autosave\/","title":{"rendered":"On Autosave"},"content":{"rendered":"

I finally cracked back into proper MMORPG Tycoon 2 development yesterday.\u00a0 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.<\/p>\n

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).\u00a0 The first thing on my list for milestone 12 is to finally tackle the autosave problem.<\/p>\n

<\/p>\n

Modern games typically tackle autosave in one of four ways:<\/p>\n

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

    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.<\/p>\n

    My current thinking for MMORPG Tycoon 2 is that I want the game to save automatically when exiting the game (as in #4, above).\u00a0 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.\u00a0 Where I’m hesitant is the periodic “Autosave on a timer” save.\u00a0 Would that be useful, to have a couple of rolling autosaves, say, one saved every five minutes or so?\u00a0\u00a0 Just to be absolutely certain that you wouldn’t lose work to a game crash.\u00a0 (I try very hard to avoid game crashes, but they’re bound to slip through at some point)<\/p>\n

    In any case, those periodic saves wouldn’t replace the before-new-release autosaves or the latest-exit autosaves.<\/p>\n

    Does that all seem reasonable?\u00a0 I suppose one probably can’t have too many autosaves, really.\u00a0 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.<\/p>\n","protected":false},"excerpt":{"rendered":"

    I finally cracked back into proper MMORPG Tycoon 2 development yesterday.\u00a0 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…<\/p>\n","protected":false},"author":1,"featured_media":3767,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"spay_email":""},"categories":[24,25],"tags":[],"jetpack_featured_media_url":"https:\/\/www.vectorstorm.com.au\/wp-content\/uploads\/2016\/03\/autosave2.jpg","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/so9WK-autosave","_links":{"self":[{"href":"https:\/\/www.vectorstorm.com.au\/wp-json\/wp\/v2\/posts\/3764"}],"collection":[{"href":"https:\/\/www.vectorstorm.com.au\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.vectorstorm.com.au\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.vectorstorm.com.au\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.vectorstorm.com.au\/wp-json\/wp\/v2\/comments?post=3764"}],"version-history":[{"count":1,"href":"https:\/\/www.vectorstorm.com.au\/wp-json\/wp\/v2\/posts\/3764\/revisions"}],"predecessor-version":[{"id":3768,"href":"https:\/\/www.vectorstorm.com.au\/wp-json\/wp\/v2\/posts\/3764\/revisions\/3768"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.vectorstorm.com.au\/wp-json\/wp\/v2\/media\/3767"}],"wp:attachment":[{"href":"https:\/\/www.vectorstorm.com.au\/wp-json\/wp\/v2\/media?parent=3764"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.vectorstorm.com.au\/wp-json\/wp\/v2\/categories?post=3764"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.vectorstorm.com.au\/wp-json\/wp\/v2\/tags?post=3764"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}