<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Gunpoint Development &#8211; Tom Francis Regrets This Already</title>
	<atom:link href="https://www.pentadact.com/tag/gunpoint-development/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.pentadact.com</link>
	<description>We&#039;re back on a default theme because comments broke on my custom one and I don&#039;t have the energy to figure out why</description>
	<lastBuildDate>Mon, 14 Jan 2013 16:42:26 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.1</generator>
	<item>
		<title>Making Gunpoint&#8217;s Save System</title>
		<link>https://www.pentadact.com/2012-03-22-gunpoints-save-system/</link>
					<comments>https://www.pentadact.com/2012-03-22-gunpoints-save-system/#comments</comments>
		
		<dc:creator><![CDATA[Pentadact]]></dc:creator>
		<pubDate>Thu, 22 Mar 2012 20:44:42 +0000</pubDate>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[Gunpoint]]></category>
		<category><![CDATA[Gunpoint Development]]></category>
		<guid isPermaLink="false">http://www.pentadact.com/?p=3975</guid>

					<description><![CDATA[Gunpoint&#8217;s current save system is rough, but functional if you know how to use it. The game autosaves every ten seconds, and when you die, a message pops up telling you to press L to load the latest one, O to load the one before, or R to start the mission completely. It&#8217;s just placeholder, [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Gunpoint&#8217;s current save system is rough, but functional if you know how to use it. The game autosaves every ten seconds, and when you die, a message pops up telling you to press L to load the latest one, O to load the one before, or R to start the mission completely. It&#8217;s just placeholder, but it&#8217;s close to what I want: you should never have to repeat a chunk of progress you&#8217;re happy with, only the bit you actually screwed up.<span id="more-3975"></span></p>
<p>But watching people play at GDC revealed a weird problem. Many people would get a long way through the level, die, and restart it completely. If they want to do that it&#8217;s fine, of course, but some of them seemed pretty frustrated. I&#8217;d tell them, &#8220;You can just press L and it&#8217;ll put you back much closer to where you were,&#8221; and they&#8217;d say &#8220;Ah!&#8221; and use that from then on.</p>
<p><a href="https://www.pentadact.com/wp-content/Old-Message.jpg"><img fetchpriority="high" decoding="async" src="https://www.pentadact.com/wp-content/Old-Message-500x238.jpg" alt="" title="Old Message" width="500" height="238" class="aligncenter size-medium wp-image-3981" srcset="https://www.pentadact.com/wp-content/Old-Message-500x238.jpg 500w, https://www.pentadact.com/wp-content/Old-Message.jpg 602w" sizes="(max-width: 500px) 100vw, 500px" /></a></p>
<p>Obtuse hotkeys are not how the final system will work, of course, but here&#8217;s why it&#8217;s weird: the message that tells you to press L to load the last autosave is the same one that tells you to press R to restart. If these players hadn&#8217;t seen that, how did they know to press R to restart the level?</p>
<p>I discovered they knew the key, they just didn&#8217;t know what it would do. Last save? When was that? I&#8217;m not gonna hit a button that might take me back three levels.</p>
<p>I could have an on-screen notification every time it saves &#8211; maybe a big sign that says &#8220;Saving content &#8211; please don&#8217;t turn off your PC, because apparently there&#8217;s some kind of epidemic of people randomly doing that in the middle of a game.&#8221; Much as I love patronising bullshit, Gunpoint saves a <em>lot</em> &#8211; any notification would be a constant distraction.</p>
<p>I already knew what I wanted, I just hadn&#8217;t built it yet: a small menu showing the last few autosaves and how old they are:</p>
<p><a href="https://www.pentadact.com/wp-content/5-and-10.jpg"><img decoding="async" src="https://www.pentadact.com/wp-content/5-and-10.jpg" alt="" title="5 and 10" width="377" height="140" class="aligncenter size-full wp-image-3986" /></a></p>
<p>I wanted that just because it&#8217;s nice, but the GDC problem made it an actual priority. Hurray!</p>
<p>It gets tricky when you think about where to store that data. If you store it as a variable in-game, then how does the game know which one is the most recent when you start it up again? It won&#8217;t have that data until it loads one of the autosaves, and each of them thought they were the latest one when they saved.</p>
<p>I tried messing around with renaming savegames so the latest one always had the same name, but it got awkward fast. So did the times themselves. Even seemingly simple systems get complicated to think about and test when you&#8217;re dealing with savegames, because loading a savegame is essentially time travel. You&#8217;re going back in time, then creating a new parallel timeline from there.</p>
<p>I was handling it, keeping it all straight in my head, until this happened:</p>
<p><a href="https://www.pentadact.com/wp-content/47-Seconds.jpg"><img decoding="async" src="https://www.pentadact.com/wp-content/47-Seconds.jpg" alt="" title="-47 Seconds" width="467" height="200" class="aligncenter size-full wp-image-3982" /></a></p>
<p>Minus what. What.</p>
<p>I had a savegame created 47 seconds in the future. I tried loading it. It was the past &#8211; about 15 seconds in the past. And now it claimed the last two autosaves were made at the same time.</p>
<p>I ended up drawing a pen and paper diagram that started to look like the plot of Primer in an attempt to understand how repeated and overlapping backward time travel could create a paradox like this. </p>
<p><a href="https://www.pentadact.com/wp-content/IMG_0513.jpg"><img loading="lazy" decoding="async" src="https://www.pentadact.com/wp-content/IMG_0513-500x480.jpg" alt="" title="IMG_0513" width="500" height="480" class="aligncenter size-medium wp-image-3979" srcset="https://www.pentadact.com/wp-content/IMG_0513-500x480.jpg 500w, https://www.pentadact.com/wp-content/IMG_0513.jpg 1024w" sizes="auto, (max-width: 500px) 100vw, 500px" /></a></p>
<p>It couldn&#8217;t.</p>
<p>Sure enough, I eventually found a bug in Game Maker&#8217;s time-keeping code that causes the number of seconds since the game started to occasionally reset. I made my own clock, but that behaved strangely for savegames too. It&#8217;s just super hard to keep track of time when the player is time-travelling, and the filenames he&#8217;s creating and loading can mean different things in different contexts.</p>
<p>The system I settled on picks a new filename for each successive save, so it&#8217;s easy for both the code and me to see which one is newest at any given time. And if it has trouble figuring out the save times, it can just look at the numbers &#8211; if the save interval is 10 seconds and this one&#8217;s 2 saves ago, it&#8217;s 20 seconds plus the time since the last autosave.</p>
<p>The last change it needed was one I didn&#8217;t expect to have to make. I&#8217;d had this great idea, throughout all these systems, to avoid Groundhog Death: the problem where an autosave happens just before you die, so when you load it you instantly re-die. It&#8217;s less of a problem with multiple autosaves anyway, but I thought I had a clever way to avoid it completely. </p>
<p>The game would save every 5 seconds, but assume the most recent save was &#8216;bad&#8217;. Only once the player has survived more than five seconds since the last autosave does it become a valid one to load. So with a 10 second save interval, the latest autosave will still be 10-15 seconds ago, but it&#8217;s guaranteed to be at least 5 seconds before you died.</p>
<p><a href="https://www.pentadact.com/wp-content/Reliable-Saves.jpg"><img loading="lazy" decoding="async" src="https://www.pentadact.com/wp-content/Reliable-Saves.jpg" alt="" title="Reliable Saves" width="395" height="157" class="aligncenter size-full wp-image-3984" /></a></p>
<p>Once the rest of the issues were ironed out, I discovered this system sucks. It&#8217;s possible, and actually pretty common, to load a point in your game when you <em>did</em> survive beyond five seconds, but you didn&#8217;t this time. Maybe you had a guy at gunpoint, or were in the middle of a tense situation, and when it loads you&#8217;re disoriented and screw it up.</p>
<p>My instinct as a gamer is not to think &#8220;This save sucks, take me further back!&#8221; It&#8217;s &#8220;Let&#8217;s go again, I can do this!&#8221; But now that we&#8217;ve time-travelled, that savegame is the latest one. And the latest one is always left off the load menu to be sure it&#8217;s not gonna screw you.</p>
<p>Instead, you feel <em>extremely</em> screwed. You <em>deleted</em> my savegame? The one I just loaded? I get <em>one</em> chance at this, with no knowledge of what I&#8217;m getting into, and then you take it away? Fuck you, Tom Francis. You are a shitty, shitty designer.</p>
<p>So I backed out of that: now you can load any save you like, and I give you three just to make sure you&#8217;re not screwed in all of them. You can even hammer the &#8216;1&#8217; key to repeatedly retry the same tricky situation if you want to. </p>
<p>Saves are tiny, take no time to create, and load instantly too. I&#8217;ve noticed that Gunpoint&#8217;s incredibly sudden, sometimes shocking deaths are often a positive thing &#8211; a lot of players at GDC would laugh when they got shot. So I never want that buzz to be dampened by the pain of having to repeat stuff you don&#8217;t want to, or being screwed by the save system.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.pentadact.com/2012-03-22-gunpoints-save-system/feed/</wfw:commentRss>
			<slash:comments>28</slash:comments>
		
		
			</item>
	</channel>
</rss>
