<?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>Paradice Software &#187; Game Golden Rules</title>
	<atom:link href="http://www.paradicesoftware.com/blog/index.php/category/game-golden-rules/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.paradicesoftware.com/blog</link>
	<description>Developing a role-playing game since 1981</description>
	<lastBuildDate>Tue, 22 Jun 2010 08:23:04 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Game Golden Rule #2: Settings &amp; Controls</title>
		<link>http://www.paradicesoftware.com/blog/index.php/2009/12/game-golden-rule-2-settings-controls/</link>
		<comments>http://www.paradicesoftware.com/blog/index.php/2009/12/game-golden-rule-2-settings-controls/#comments</comments>
		<pubDate>Tue, 15 Dec 2009 07:18:21 +0000</pubDate>
		<dc:creator>Lawrence</dc:creator>
				<category><![CDATA[Game Golden Rules]]></category>
		<category><![CDATA[Good coding guidelines]]></category>

		<guid isPermaLink="false">http://www.paradicesoftware.com/blog/?p=193</guid>
		<description><![CDATA[This is the second entry in my set of &#8220;10 Game Development Golden Rules&#8221;. Hopefully, this one is less contentious than the first!
The rule is:
Provide gamma and volume controls, and separate music from sound.
Pretty simple. But essential! The good news is, the AAA titles pretty much universally support this now. And it&#8217;s a good thing, [...]]]></description>
			<content:encoded><![CDATA[<p>This is the second entry in my set of &#8220;10 Game Development Golden Rules&#8221;. Hopefully, this one is less contentious than the first!</p>
<p>The rule is:</p>
<h3>Provide gamma and volume controls, and separate music from sound.</h3>
<p>Pretty simple. But essential! The good news is, the AAA titles pretty much universally support this now. And it&#8217;s a good thing, as I use these settings all the time. </p>
<p>I have an Xbox 360 but, unlike most Xbox 360s, mine isn&#8217;t connected to a TV &#8211; it plugs into a second DVI port on one of my 22&#8221; widescreen PC monitors. This is awesome because I can run it at 1680&#215;1050 and games look beautiful! (handy bonus: I can web-surf on my other screen while waiting for Matchmaking in Halo 3)</p>
<p>BUT my monitor has a very different colour profile than your average TV, and games with a lot of contrasting light/dark elements can look really bad by default. Gamma controls in your game are pretty essential for me to see the graphics the way the designer intended. I&#8217;m sure there are other people in similar situations or even wildly different situations who also need gamma settings. Your game needs to support them too!! And since there&#8217;s nothing on the &#8220;con&#8221; side of the ledger that could make it a bad idea, you have no excuse!</p>
<p>Providing separate controls for sound/music: Music is awesome but people like to be able to hear the game sounds sometimes! Particularly in a &#8216;competitive&#8217; environment, or simply when your game is providing an audio narrative (GTA4 is an excellent example &#8211; the &#8220;in-car radio&#8221; music is huge and contributes to the GTA atmosphere, but you <strong>need</strong> to turn the music volume down to be able to hear what mission you&#8217;re being given via the cellphone). If I&#8217;m playing an FPS single-player, I might turn the music up, but in multiplayer I want to use every audio cue the game gives me for competitive advantage, so I need to kill the music or at least turn it down. </p>
<p>Just like with the gamma controls, the good news is this is pretty universal now. But there are still Flash games that don&#8217;t separate them (and, even worse: there are plenty that have no Volume settings at all &#8211; sound is either On or Off). Sound might *add* to the game experience, but I&#8217;d like to set it so that it doesn&#8217;t completely drown out my background music, thanks! Vista and Windows 7 allow you to set the volume controls at the &#8220;application&#8221; level, which solves the problem for me specifically, but it doesn&#8217;t help anyone using XP (or anyone who doesn&#8217;t know about that feature). Support them too!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paradicesoftware.com/blog/index.php/2009/12/game-golden-rule-2-settings-controls/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Game Golden Rule #1: Support Windowed-mode</title>
		<link>http://www.paradicesoftware.com/blog/index.php/2009/11/game-golden-rule-1-support-windowed-mode/</link>
		<comments>http://www.paradicesoftware.com/blog/index.php/2009/11/game-golden-rule-1-support-windowed-mode/#comments</comments>
		<pubDate>Thu, 12 Nov 2009 06:50:43 +0000</pubDate>
		<dc:creator>Lawrence</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Game Golden Rules]]></category>
		<category><![CDATA[DirectX]]></category>
		<category><![CDATA[Taxes]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.paradicesoftware.com/blog/?p=141</guid>
		<description><![CDATA[I thought I&#8217;d cover this rule first, because I listed it as number one and also because it&#8217;s probably one of the most controversial. Let&#8217;s begin: a simple Why/Why Not argument should suffice for this one:
Why Allow Windowed-mode:
It&#8217;s more convenient for your users. Some users multitask (gasp!), even while playing games. This is much harder [...]]]></description>
			<content:encoded><![CDATA[<p>I thought I&#8217;d cover this rule first, because I listed it as number one and also because it&#8217;s probably one of the most controversial. Let&#8217;s begin: a simple Why/Why Not argument should suffice for this one:</p>
<h3>Why Allow Windowed-mode:</h3>
<p><strong>It&#8217;s more convenient for your users.</strong> Some users multitask (gasp!), even while playing games. This is much harder to do when your game is Fullscreen. I suspect this is a part of why games like Minesweeper and Solitaire get so much play-time. They&#8217;re built into the OS, sure, but you can also fire them up and play while you&#8217;re waiting for something to download/compile/whatever. Very handy!</p>
<p><strong>It&#8217;s more convenient for you.</strong> Debugging is hard, and debugging fullscreen is harder! My own game engine (in debug builds) has a feature to throw a debugging/log window up so I can watch internal game messages etc: you can&#8217;t do this if your game is always fullscreen. Not only that, but if your game crashes at some Direct3D stuff (which can happen in early builds, before you lock down your video interface code), it&#8217;s very tricky to find a cause when you&#8217;re staring at a blank screen. A blank window on the desktop gives you more context and options.</p>
<p><strong>It makes paying certain Windows taxes more obvious.</strong> If you&#8217;re running in Windowed mode while developing, you&#8217;re going to be hitting the titlebar close button, you&#8217;ll be minimising/maximising your game Window, or maybe just clicking other apps, stealing your game&#8217;s focus. Because you&#8217;re doing these things, you&#8217;re much more likely to take the time to ensure your game handles them correctly. Fullscreen games are required to handle these situations too, you know: but some of them never get around to it! (Civilization 3, which is always &#8220;fullscreen&#8221;, can experience a rather ugly crash if I dare to click something on my second monitor while I&#8217;m playing).</p>
<p><strong>It&#8217;s future proof.</strong> You might think your fullscreen game is pretty cool, what with it supporting resolutions right up to 1920&#215;1080, but who knows what the future holds? How well will your fullscreen game look on some giant desktop running 12,000&#215;12,000 pixels? Or do you just expect no one will be playing it then? (if you don&#8217;t, then code this way: you&#8217;re sure to be correct). Windowed mode doesn&#8217;t solve this completely, but it gives your users more options.</p>
<p>Ok, hopefully you can that there are always scenarios where that option would be valuable, but you might not be convinced to allow it in <strong>your</strong> game. Let&#8217;s take a look at some reasons why not:</p>
<h3>Why NOT allow Windowed-mode:</h3>
<p><strong>It&#8217;s hard to code.</strong> Oh no, now all of your video code has two scenarios to account for! Well, actually, no it doesn&#8217;t. Once you&#8217;ve initialised Direct3D correctly, none of your other code even needs to *know* it&#8217;s drawing to a windowed area of the desktop. And initialising Direct3D to support either Windowed or Fullscreen mode is <strong>easy</strong>! I&#8217;ll bet you $5 that the sum total of video code required to support this option is LESS than the amount of code required to present the option to the user and store the result.</p>
<p><strong>Fullscreen is more atmospheric. Atmosphere is important in my game!</strong> By all means then, make fullscreen the default. Plenty of games do. I&#8217;m just asking for the <strong>option!</strong></p>
<p><strong>But I want to retain control.</strong> Fuck off! The user is in control: it&#8217;s their computer. Besides, if the user really wants to window you, they can do it: they can fire up a virtual machine and lock you inside it: good luck getting into fullscreen mode then. Of course, if it&#8217;s that important to them, they&#8217;re more likely to just uninstall you and go play something with a windowed option.</p>
<p>And there you have it. Why I believe every game should support Windowed-mode!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paradicesoftware.com/blog/index.php/2009/11/game-golden-rule-1-support-windowed-mode/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Paying your Windows Taxes</title>
		<link>http://www.paradicesoftware.com/blog/index.php/2009/11/paying-your-windows-taxes/</link>
		<comments>http://www.paradicesoftware.com/blog/index.php/2009/11/paying-your-windows-taxes/#comments</comments>
		<pubDate>Wed, 11 Nov 2009 05:09:57 +0000</pubDate>
		<dc:creator>Lawrence</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Game Golden Rules]]></category>
		<category><![CDATA[Taxes]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.paradicesoftware.com/blog/?p=123</guid>
		<description><![CDATA[In Windows (like every operating system), when you&#8217;re writing an application or game there are certain things that your application is responsible for handling: some of them are easy, some of them take a little bit more effort. On his excellent blog, Microsoft&#8217;s Raymond Chen calls these responsibilities &#8220;Taxes&#8221;, and there are good reasons why [...]]]></description>
			<content:encoded><![CDATA[<p>In Windows (like every operating system), when you&#8217;re writing an application or game there are certain things that your application is responsible for handling: some of them are easy, some of them take a little bit more effort. On his excellent blog, Microsoft&#8217;s <a href="http://blogs.msdn.com/oldnewthing/archive/2005/08/22/454487.aspx">Raymond Chen</a> calls these responsibilities &#8220;Taxes&#8221;, and there are good reasons why you should pay them. Windows taxes include things like:</p>
<ul>
<li>Respond to Windows messages correctly</li>
<li>Respect user action (don&#8217;t silently cancel a Sleep request)</li>
<li>Non-standard installs (don&#8217;t assume C:\Windows!)</li>
<li>Run fine as a Standard User</li>
<li>Respect the user&#8217;s settings</li>
</ul>
<p>Raymond talks about more complex taxes too (internationalisation, heirarchical file systems), but I&#8217;m sticking to what I&#8217;m comfortable with!</p>
<p>Unfortunately, amongst all applications, games appear to be the worst at being good Windows citizens, there are far too many games out there (not just freeware ones either) that don&#8217;t pay <strong>any</strong> of the above taxes, and (to sustain the metaphor) some start trying &#8216;tax-fraud&#8217; schemes like:</p>
<ul>
<li>Trying to disable Alt-Tab</li>
<li>Refusing to be minimised (automatically restoring themselves after 1 sec)</li>
<li>Preventing the system from shutting down</li>
</ul>
<p>I might make this another series because there&#8217;s plenty to talk about, and most of it&#8217;s not even that difficult these days: you just have to be aware of the situation, and what the correct behaviour is. (I must admit I never gave thought to multi-monitor situations before I got my second monitor).</p>
<p>For now though, I will limit myself to a list of ten &#8216;golden rules&#8217; which I believe all games should obey, at a minimum (not all of them are Windows taxes &#8211; some of them are just treating your users properly). In fact I will expand on some of these in later posts too, because they&#8217;re worth talking about.</p>
<h3>Top ten Golden rules for Games: being a good Windows application</h3>
<ol>
<li>1. Fullscreen games: <strong>always</strong> allow an option to run in a Window.</li>
<li>2. Provide gamma and volume controls, and separate music from sound.</li>
<li>3. Always allow your game to be paused, saved and quit. At any time.</li>
<li>4. Provide a way to skip <strong>anything</strong> non-interactive: from cutscenes to credits.</li>
<li>5. Respect multi-monitor: If you were dragged to monitor 2, next time open on monitor 2.</li>
<li>6. Respect the filesystem: don&#8217;t open files in Read/Write mode if you only want to read from them.</li>
<li>7. Respect security: A game <strong>does not</strong> need an Administrator account to play!</li>
<li>8. Respect UI settings: if the user has selected &#8216;Use Large Fonts&#8217; in Windows, use larger fonts in your game!</li>
<li>9. Respect sessions: if the user logs off/hibernates/shuts down, handle it gracefully. Don&#8217;t try to block the action, and don&#8217;t lose their progress.</li>
<li>10. Adapt to a changing system: if you last opened on 1680&#215;1050, but the system now says the monitor can&#8217;t support that, open in a res it <strong>can</strong> support.</li>
</ol>
<p>I&#8217;ll talk about how to implement some of these (and why they&#8217;re so important) in future posts.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paradicesoftware.com/blog/index.php/2009/11/paying-your-windows-taxes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
