<?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>Wrong.net &#187; Game development</title>
	<atom:link href="http://www.wrong.net/category/game-development/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.wrong.net</link>
	<description>Game development done right</description>
	<lastBuildDate>Sun, 14 Mar 2010 07:32:25 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Little Games</title>
		<link>http://www.wrong.net/2008/03/04/little-games/</link>
		<comments>http://www.wrong.net/2008/03/04/little-games/#comments</comments>
		<pubDate>Tue, 04 Mar 2008 19:20:35 +0000</pubDate>
		<dc:creator>Kyoryu</dc:creator>
				<category><![CDATA[Game development]]></category>

		<guid isPermaLink="false">http://www.wrong.net/2008/03/04/little-games/</guid>
		<description><![CDATA[Recently, I&#8217;ve been finding myself spending way too much time thinking about tools for game development, and not doing enough game development.  So, after I get through the current crunch state I&#8217;m in, I think I&#8217;m going to set a goal for myself to write a game in a week, no matter how small in [...]]]></description>
			<content:encoded><![CDATA[<p>Recently, I&#8217;ve been finding myself spending way too much time thinking about tools for game development, and not doing enough game development.  So, after I get through the current crunch state I&#8217;m in, I think I&#8217;m going to set a goal for myself to write a game in a week, no matter how small in scope.</p>
<p>When you have no timeframes and no set deliverables, it&#8217;s easy to get lost in theory-land, or what-is-the-best-way-to-do-this-land, or this-tool-isn&#8217;t-quite-perfect-land, or any number of other traps.  A hard deadline of a week seems like a great way to force myself past those.</p>
<p>The rules will be simple.  I will set a start date.  Seven days from then, I am done.  Anything not completed, is not completed.</p>
<p>The basic plan I have is to have a minimal basic idea of gameplay, and incrementally develop it primarily using TDD.  I am going to focus on a minimal, complete game before I focus on adding a ton of features.  The hope is that by doing so, I&#8217;ll have a game that&#8217;s ready to &#8220;ship&#8221; early on, and additional features will just be that.</p>
<p>I&#8217;m allowing myself the time before I start to investigate tools and think of gameplay ideas.  I will not be using the time before the &#8220;official&#8221; start to write code/do spikes/etc.</p>
<p>I&#8217;m looking forward to this.  It&#8217;s a chance to look at several of my development theories, and see how they pan out.</p>
<p>OTOH, I don&#8217;t think I&#8217;ll repeat it indefinitely.  There&#8217;s stuff I want to do that&#8217;s definitely not possible within a week.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wrong.net/2008/03/04/little-games/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Test-Driven Development Demystified</title>
		<link>http://www.wrong.net/2008/02/15/test-driven-development-demystified/</link>
		<comments>http://www.wrong.net/2008/02/15/test-driven-development-demystified/#comments</comments>
		<pubDate>Fri, 15 Feb 2008 18:08:07 +0000</pubDate>
		<dc:creator>Kyoryu</dc:creator>
				<category><![CDATA[Game development]]></category>
		<category><![CDATA[General development]]></category>

		<guid isPermaLink="false">http://www.wrong.net/2008/02/15/test-driven-development-demystified/</guid>
		<description><![CDATA[A lot of people have probably heard of test-driven development, and the buzz around it.  There&#8217;s evangelists and zealots, frameworks (unit tests and mock objects and acceptance tests, oh my!), and a lot of heated discussion.
What I don&#8217;t see a lot of is the basic ideas of test-driven development, distilled and put into a form [...]]]></description>
			<content:encoded><![CDATA[<p>A lot of people have probably heard of test-driven development, and the buzz around it.  There&#8217;s evangelists and zealots, frameworks (unit tests and mock objects and acceptance tests, oh my!), and a lot of heated discussion.</p>
<p>What I don&#8217;t see a lot of is the basic ideas of test-driven development, distilled and put into a form that most programmers can relate to.</p>
<p>A typical pattern that I&#8217;ve seen is the creation of separate applications or workspaces to isolate a component while you&#8217;re developing it.  If you were to do that with a stack, it might look something like this:</p>
<p>static public void main(string[] args)<br />
{<br />
   Stack s = new Stack();<br />
   s.Push(&#8220;foo&#8221;);<br />
   s.Push(&#8220;bar&#8221;);<br />
   string test = s.Pop();<br />
   System.Console.WriteLine(test);<br />
}</p>
<p>In some cases, you&#8217;ll write this before you even write the stack class, as a way to define your API in an outside-in way.</p>
<p>After you&#8217;ve written your Stack class, and you get the results you want, you&#8217;ll probably look at the insides of it to optimize it, or make it designed better.</p>
<p>If you&#8217;ve done this, congratulations, you&#8217;ve used test-driven development.  No, really.  Everything else surrounding TDD is nothing but tools to help write and run these types of testbed or sandbox programs.  For an experienced developer, it really is much ado about nothing.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wrong.net/2008/02/15/test-driven-development-demystified/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TDD Tidbits</title>
		<link>http://www.wrong.net/2007/12/28/tdd-tidbits/</link>
		<comments>http://www.wrong.net/2007/12/28/tdd-tidbits/#comments</comments>
		<pubDate>Fri, 28 Dec 2007 07:45:25 +0000</pubDate>
		<dc:creator>Kyoryu</dc:creator>
				<category><![CDATA[Game development]]></category>
		<category><![CDATA[General development]]></category>

		<guid isPermaLink="false">http://www.wrong.net/2007/12/28/tdd-tidbits/</guid>
		<description><![CDATA[A couple of thoughts I&#8217;ve had on the TDD process that may not be inherently obvious.

If you already have a complete spec with all of the API, and cannot deviate, you are not doing TDD.
When writing the test first, the failed compile is a good thing.  This helps prove that you don&#8217;t have any [...]]]></description>
			<content:encoded><![CDATA[<p>A couple of thoughts I&#8217;ve had on the TDD process that may not be inherently obvious.</p>
<ol>
<li>If you already have a complete spec with all of the API, and cannot deviate, you are not doing TDD.</li>
<li>When writing the test first, the failed compile is a good thing.  This helps prove that you don&#8217;t have any kind of strange name overwrites that you&#8217;re unaware of.  The value of this, of course, depends on language.</li>
<li>Once the compile errors are fixed, the failed tests tell us that the component isn&#8217;t &#8220;accidentally&#8221; doing what it needs to be.  If it is, we need to figure out in what circumstances, or why.</li>
<li>One of the big problems people seem to have with TDD is not refactoring.  Refactoring is, in my opinion, the most important step.  Without refactoring, using TDD, you will have garbage code (though it&#8217;ll probably have a nice API).</li>
<li>People seem to balk at the idea of writing the minimal code to get the test to pass.  They somehow think that this is supposed to be final code.  It&#8217;s not (necessarily).  The point is to allow you to enter the &#8220;green&#8221; (refactoring) phase earlier and with less work.  When possible, we want to be in the &#8220;green,&#8221; so that we know if we do something that causes a break.  If we try to write our ultimate design up-front, that just means that a lot of code is being written at one time without any assurances that it works.</li>
<li>If you find that you need to refactor to make a test work, comment out the test first, and then do the refactoring.  Always refactor when green.  Otherwise, you&#8217;re getting into the trap of refactoring while changing functionality, and that&#8217;s a slippery business.</li>
<li>People think TDD means no design.  I don&#8217;t agree.  Generally, you start with a class, which implies a certain amount of design.  But TDD folks think about design, a lot.  They just don&#8217;t think about design a huge amount up front, except for high-level architectural decisions, and they retain flexibility to change the design in case they were wrong.</li>
</ol>
<p>And a final though:  Since adopting TDD, I find development without it to be somewhat weird.  Just as non-TDD&#8217;ers think we&#8217;re weird for writing tests first, I think what they&#8217;re doing is strange.  To me, writing tests last (or not at all!) is essentially writing a bunch of code, and then trying to figure out what it does.  It just feels very unsafe, and I just get a weird feeling when doing it.</p>
<p>I don&#8217;t know how valid that is, or if I&#8217;ll think I&#8217;m an idiot in five years for thinking like this.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wrong.net/2007/12/28/tdd-tidbits/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
