<?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>Doolwind&#039;s Game Coding Blog &#187; Game Designer</title>
	<atom:link href="http://www.doolwind.com/blog/tag/game-designer/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.doolwind.com/blog</link>
	<description>Pragmatic Thoughts On Game Development</description>
	<lastBuildDate>Wed, 28 Jul 2010 22:53:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Mindie &#8211; Bridging The Gap Between Mainstream And Indie</title>
		<link>http://www.doolwind.com/blog/mindie-bridging-the-gap-between-mainstream-and-indie/</link>
		<comments>http://www.doolwind.com/blog/mindie-bridging-the-gap-between-mainstream-and-indie/#comments</comments>
		<pubDate>Wed, 14 Jul 2010 03:35:31 +0000</pubDate>
		<dc:creator>Doolwind</dc:creator>
				<category><![CDATA[Game Development]]></category>
		<category><![CDATA[Game Designer]]></category>
		<category><![CDATA[Indie Game Development]]></category>
		<category><![CDATA[Mindie]]></category>

		<guid isPermaLink="false">http://www.doolwind.com/blog/?p=508</guid>
		<description><![CDATA[I’m a mindie game developer and proud of it.  But what does that mean?  I’ve noticed a trend lately when it comes to indie developers.  It seems to be all or nothing.  You’re either Indie, with your beard and rebellious attitude or you’re mainstream with your suit and love of money.  Why does it need [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.doolwind.com/images/blog/mindie.jpg"><img class="alignright" title="Mindie Game Developer" src="http://www.doolwind.com/images/blog/mindie.jpg" alt="Mindie Game Developer" width="254" height="100" /></a>I’m a mindie game developer and proud of it.  But what does that mean?  I’ve noticed a trend lately when it comes to indie developers.  It seems to be all or nothing.  You’re either Indie, with your beard and rebellious attitude or you’re mainstream with your suit and love of money.  Why does it need to be so black and white?  Am I the only person that wants to fit nicely in the middle, making deep and meaningful games that make a healthy profit?  Can I be the bearded guy in a suit, or the clean shaven guy in a polo shirt?  What’s wrong with wanting to be “mainstream indie”, or a “mindie” game developer?</p>
<p><span id="more-508"></span></p>
<p>Over the past few years the mainstream has moved further towards sequels, playing it safe and limiting creativity.  It seems indie game developers are reacting to this by becoming “more indie”.  A case in point is the IGF.  Many of my indie friends complain that it’s impossible to win the IGF without making a controversial game that has no chance of making money.  Surely we can find a middle ground between these two opposed views.</p>
<p>Let’s look at key parts of game development and see where Mindie developers fit into the mix compared to pure mainstream and indie developers.</p>
<p><strong><span style="text-decoration: underline;">Profits</span> &#8211; </strong><em>Money is the root of all evil but the source of all Twinkie’s</em></p>
<p>Most indie developers I know don’t have the luxury of making games just for the love of it.  At the end of the day, we all need money to live.  Mindie developers are mindful of making a profit from their games but not at the expense of the game itself.  The current landscape of game distribution is the perfect time for this lofty ideal.  Digital distribution, micro-transactions and huge user bases on platforms like Facebook mean that we no longer have to make a boxed product that sinks or swims based on the first few months of sales.  This gives Mindie developers the freedom to flex our creative muscles and then find a sales model that fits our product.  There are many options to take opening up many more possibilities for game design and creativity.</p>
<p><strong><span style="text-decoration: underline;">Competition</span></strong> &#8211; <em>Competition creates better products, alliances create better companies</em> &#8211; Brian Graham</p>
<p>The general consensus is that indie developers don’t focus on their competition while mainstream developers are obsessed with them.  Where does the Mindie game developer fit in?  This time, we are closer to our indie roots.  While it’s important to be aware of the competition and create something new and interesting, it should not drive development.  Indie developers begin with their own ideas and creativity and adjust their plans based on competition.  Mainstream developers begin with their competition and adjust their plans slightly to create their own game.</p>
<p><strong><span style="text-decoration: underline;">Publishers/Investors</span></strong> &#8211; <em>Time is more valuable than money. You can get more money, but you cannot get more time</em> &#8211; Jim Rohn</p>
<p>The traditional indie developer is defined by not having a publisher or large investor, hence the term “independent”.  They are usually self-funded or take on small amounts of angel investment.  The general consensus from mindie developers is that they would take on money, so long as it doesn’t water down their game.  This is often shown by their realistic expectations of money required rather than the “more is better” attitude of most mainstream developers.</p>
<p><strong><span style="text-decoration: underline;">Project Size</span></strong> &#8211; <em>It&#8217;s not the size of the dog in the fight, it&#8217;s the size of the fight in the dog</em> &#8211; Mark Twain</p>
<p>Mainstream loves big, multi-million dollar games.  Every year the cost keeps going up.  Indie developers either through love, or more often than not, through necessity go for simple, small projects.  Mindie developers need to find the middle ground again.  Projects that are of a substantial size that they can make a profit while keeping development costs low at all levels of development.  From team sizes to feature lists, they focus on finding the fun with the least possible features.</p>
<p><strong><span style="text-decoration: underline;">Art</span></strong> &#8211; <em>If you think a game is ‘Madden 2008,’ then hey, games probably aren’t art</em> &#8211; Jonathan Blow</p>
<p>Many indie developers make art.  Mainstream developers are skilled in the art of spending copious amounts of money making a game that is 10% better than the previous game or competitor.  Mindie developers are pragmatic.  They focus on making a fun, deep game and letting everyone else decide whether it’s art.  Pragmatism over pretentiousism*.</p>
<p>*Yes that’s not really a word, but neither is Mindie</p>
<p><strong><span style="text-decoration: underline;">Conclusion</span></strong></p>
<p>So that’s my attempt to bring some unity between the mainstream and indie developers.  I look forward to seeing what the coming years bring for mindie’s and particularly in Australia where the collapse of the mainstream game development industry has left most of my friends turning indie in hopes of fame and fortune (or at least recognition and Twinkies).</p>
<p>What do you define as a mindie and are you one?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.doolwind.com/blog/mindie-bridging-the-gap-between-mainstream-and-indie/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Creating Sustainable Facebook Games</title>
		<link>http://www.doolwind.com/blog/creating-sustainable-facebook-games/</link>
		<comments>http://www.doolwind.com/blog/creating-sustainable-facebook-games/#comments</comments>
		<pubDate>Mon, 12 Jul 2010 04:34:14 +0000</pubDate>
		<dc:creator>Doolwind</dc:creator>
				<category><![CDATA[Game Development]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[Game Designer]]></category>
		<category><![CDATA[Zynga]]></category>

		<guid isPermaLink="false">http://www.doolwind.com/blog/?p=505</guid>
		<description><![CDATA[How much do you think it costs to play the average Facebook game if you pay to play?  While at GDC this year I spoke with a number of Facebook game developers about the spending habits of the average Facebook gamer.  They told me I would never believe how much money the average “soccer mom” [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.doolwind.com/images/blog/frontierville.jpg"><img class="alignright" title="Frontierville" src="http://www.doolwind.com/images/blog/frontierville.jpg" alt="" width="163" height="164" /></a>How much do you think it costs to play the average Facebook game if you pay to play?  While at GDC this year I spoke with a number of Facebook game developers about the spending habits of the average Facebook gamer.  They told me I would never believe how much money the average “soccer mom” gamer was spending, and they were right.  After some quick research I found that a game like FrontierVille can cost up to $60/hour.  That is more than any other video game, ranging from arcades to subscription based MMO’s.  Are payments of this magnitude sustainable?  Today I discuss how we can make sustainable games for Facebook and convert the new, huge, Facebook market into long-term gamers.</p>
<p><span id="more-505"></span></p>
<p><strong>The current landscape</strong></p>
<p>After my <a href="http://www.doolwind.com/blog/reaching-the-casual-market-by-limiting-actions/">last blog post</a> I was asked my thoughts on <a href="http://apps.facebook.com/frontierville">FrontierVille</a>.  I fired it up and started playing.  I immediately hit a snag as I needed energy to continue playing.  Energy is used to perform most actions in the game.  There are three options for acquiring energy:</p>
<ol>
<li>Waiting – Energy replenishes over time</li>
<li>Asking friends for energy – Spam your friends to request energy from them</li>
<li>Spend real money to get more energy</li>
</ol>
<p>None of these are very inviting to me.  In fact, they all make me want to switch off the game and play something else.</p>
<p>I decided to investigate how much it would cost if I chose the third option.  I found that 7 points lasts me about one minute.  This equates to:</p>
<ul>
<li>Smallest payment &#8211; $60/hour ($1 = 7 points)</li>
<li>Best value payment &#8211; $40/hour ($199 = 2,100 points)</li>
</ul>
<p>And that’s just for energy alone!  You can also buy other items in game which don’t add to your energy reserves.</p>
<p><strong>The Problem</strong></p>
<p>This kind of cost is not sustainable long-term.  People will either end up spamming their friends, paying ridiculous amounts of money or letting the game dictate when they can play.  While current Facebook developers may be happy to cash in on this it is not going to last.  There are two options for gamers from here.  Facebook gamers will find better alternative Facebook games, or they will stop playing Facebook games entirely.</p>
<p><strong>Why Sustainability?</strong></p>
<p>Game developers have the perfect opportunity to reach a massive audience with deep and meaningful gameplay.  This audience also has an extremely large disposable income which can be tapped.  If we don’t take advantage of this, the droves of mainstream gamers entering the market will disappear as quickly as they arrived.  Giving a deeper experience than these expensive, spam-driven games will help to capture and grow the audience.</p>
<p><strong>The Solution</strong></p>
<p>There are a number of steps we can take to make Facebook games more sustainable.  I’m not suggesting we stop micro transactions and wall posts entirely; we just need to be more respectful with how we use them.</p>
<p>Players should get a solid reward for their time and money investments.  This expenditure should be treated more as an investment than just the cost of playing.  Players should be encouraged to spend as much as they like, but should also be rewarded in valuable ways.  By adding value to the gamers experience they are more inclined to continue paying as they see a direct correlation between enjoyment and money spent.  Currently the only correlation is between game time and money spent.</p>
<p>Wall posts and “spam” are a necessary evil of viral and social marketing.  The current drop in numbers has shown that they are an ideal way of advertising the game (the <a href="http://www.gamasutra.com/view/news/29089/Facebooks_Zuckerburg_App_Reengagement_Focus_Credits_Help_Level_Playing_Field.php">limitation on spamming ability</a> of games directly relates to decline in number of players joining).  This viral marketing should be done in interesting ways that add value to the player, rather than being superficial requests for or sharing of items.</p>
<p>Rather than wall posts simply asking for things, or “sharing the good news” developers need to look at the core gameplay mechanics of their game and have a thread of continuity to their posts.  The main problem with existing games is the lack of deep and meaningful gameplay means there is little the gamer wants other than more of everything in the game.  Game designers need to factor wall posts and the like into their game design at a foundational level if they want any meaningful effect on gameplay to be seen.</p>
<p><strong>Conclusion</strong></p>
<p>With the right attitude and a good portion of respect for the player, we can turn this large audience into large revenue for the games industry.</p>
<p>What are your thoughts on sustainable Facebook games?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.doolwind.com/blog/creating-sustainable-facebook-games/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Fun Over Features &#8211; Manifesto for Agile Game Development</title>
		<link>http://www.doolwind.com/blog/fun-over-features-manifesto-for-agile-game-development/</link>
		<comments>http://www.doolwind.com/blog/fun-over-features-manifesto-for-agile-game-development/#comments</comments>
		<pubDate>Wed, 17 Mar 2010 01:25:17 +0000</pubDate>
		<dc:creator>Doolwind</dc:creator>
				<category><![CDATA[Game Development]]></category>
		<category><![CDATA[Game Designer]]></category>

		<guid isPermaLink="false">http://www.doolwind.com/blog/?p=470</guid>
		<description><![CDATA[I spent the first two days of GDC undertaking my Scrum Master Certification.  As part of this course we had to add an extra item to the agile manifesto.  I came up with the concept of “Fun over Features”.  Focus on finding fun within your game rather than just adding features in the hopes “fun” [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.doolwind.com/images/blog/funoverfeatures.jpg"><img class="alignright" title="Fun Over Features" src="http://www.doolwind.com/images/blog/funoverfeatures.jpg" alt="" width="164" height="72" /></a>I spent the first two days of GDC undertaking my Scrum Master Certification.  As part of this course we had to add an extra item to the agile manifesto.  I came up with the concept of “Fun over Features”.  Focus on finding fun within your game rather than just adding features in the hopes “fun” will emerge out of the features in the future.</p>
<p><span id="more-470"></span></p>
<p>The existing list of items in the agile manifesto are:</p>
<ul>
<li><strong>Individuals and interactions</strong> over processes and tools</li>
<li><strong>Working software</strong> over comprehensive documentation</li>
<li><strong>Customer collaboration</strong> over contract negotiation</li>
<li><strong>Responding to change</strong> over following a plan</li>
</ul>
<p>And below is my item:</p>
<ul>
<li><strong>Fun</strong> over features</li>
</ul>
<p><strong>What does it mean?</strong></p>
<p>Basically, it means finding the fun first.  The fewer features you can add to your game to get the required amount of fun the better.  Focus on the core gameplay that gamers will derive the most fun from, rather than adding outlandish features that make your game stand out.  Don’t just add features for the sake of having them.</p>
<p>Some examples of games that have a low or high amount of fun and features include:</p>
<p>Low fun, low features – Cheap failure (e.g. many unknown flash games)</p>
<p>Low fun, high features – Big budget flop (e.g. Spore)</p>
<p>High fun, high features – Big budget success (e.g. Mass Effect)</p>
<p>High fun, low features – Low budget success (e.g. Canabalt)</p>
<p><strong>Relationship between features and fun</strong></p>
<p>Features and fun are tightly related.  You can’t have fun without a feature.  Fun is derived from experiencing a feature.  However you can have a feature without it being fun.  This is the whole reason we need to focus on the fun rather than just the feature.</p>
<p><strong>Fun Amount vs Feature Size</strong></p>
<p>What’s better, adding a small feature that isn’t too fun, or adding a large feature that is extremely fun?  On the face of it, the former seems better.  It’s not absolutely certain that a feature will reach a certain level of fun.  However it is certain that a large feature will take a lot of resources and a long time.  Completing the smaller fun features first seems like a logical extension of iterative development – ascending iterative development.  Add features an iteration at a time starting with the smallest features first.</p>
<p>I’ve previously spoken about the <a href="http://www.doolwind.com/blog/feature-benefit-to-cost-ratio/">cost to benefit ratio</a>.  My suggestion for which features to add is an extension of this concept.  Look at the Feature size to fun ratio.  Unfortunately this can be quite difficult to quantify, however you can do some simple calculations:</p>
<ol>
<li>Rate your feature on “fun”      from 1 to 10 – how much fun players will derive from it</li>
<li>Rate your feature on      “size” from 1 to 10 – how large the feature will be to implement</li>
<li>Divide fun by size for      each feature &#8211; fun / size</li>
<li>Order the features from      largest to small (descending)</li>
<li>Work from the top down</li>
</ol>
<p>The obvious caveat to this is if you have core features that must be added to your game.  However if they are quite low on the list I’d question the motives for why this is such a core part of your game if it isn’t fun enough.</p>
<p><strong>Conclusion</strong></p>
<p>So that’s a little investigation into a simple concept I came up with on the fly.  I highly recommend Clinton Keith’s Scrum course which lead to this idea.  I also highly recommend GDC to anyone thinking of going next year.  I learnt more than I could ever have imagined and made countless critical contacts.</p>
<p>What do you think of this idea?  If you could add an item to the agile manifesto what would it be?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.doolwind.com/blog/fun-over-features-manifesto-for-agile-game-development/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Fluent Game Design With Fluent Interfaces</title>
		<link>http://www.doolwind.com/blog/fluent-game-design-with-fluent-interfaces/</link>
		<comments>http://www.doolwind.com/blog/fluent-game-design-with-fluent-interfaces/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 08:00:08 +0000</pubDate>
		<dc:creator>Doolwind</dc:creator>
				<category><![CDATA[Game Development]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Game Coding]]></category>
		<category><![CDATA[Game Designer]]></category>
		<category><![CDATA[Scripting]]></category>
		<category><![CDATA[Scripting Language]]></category>

		<guid isPermaLink="false">http://www.doolwind.com/blog/?p=419</guid>
		<description><![CDATA[Game designers often find themselves writing code in modern games.  Often, they have little to no programming experience and therefore must be taught the basics of programming (sequence, conditionals and loops).  I propose utilizing a technique that simplifies the code written by game designers in their games.  This technique is known as “Fluent Interfaces”. What [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.doolwind.com/images/blog/fluentinterfaces.jpg"><img class="alignright" title="Fluent Interfaces" src="http://www.doolwind.com/images/blog/fluentinterfacessm.jpg" alt="" width="200" height="125" /></a>Game designers often find themselves writing code in modern games.  Often, they have little to no programming experience and therefore must be taught the basics of programming (sequence, conditionals and loops).  I propose utilizing a technique that simplifies the code written by game designers in their games.  This technique is known as “<a href="http://en.wikipedia.org/wiki/Fluent_interface">Fluent Interfaces</a>”.</p>
<p><span id="more-419"></span></p>
<p><strong>What is Fluent?</strong></p>
<p>Fluent interfaces allow game designers to <span class="pullquote pqRight">write more fluid and readable code</span>.  Through the use of method chaining, English like sentences can be written to express game functionality.  Fluent interfaces can be implemented in any object oriented programming language.  Below is an example of a line in the game design document, a standard implementation example and a fluent example:</p>
<p><span style="text-decoration: underline;">Game Design Document:</span></p>
<p>&#8220;Do 5 damage to all enemy tanks within range 2 of an entity&#8221;</p>
<p><span style="text-decoration: underline;">Standard Example:</span></p>
<pre class="csharpcode"><span class="csharp05">foreach</span><span class="csharp10">(</span><span class="csharp00"> </span>var<span class="csharp00"> </span>unit<span class="csharp00"> </span><span class="csharp05">in</span><span class="csharp00"> </span>player<span class="csharp10">.</span>UnitsWithinRange<span class="csharp10">(</span><span class="csharp04">2</span><span class="csharp10">)</span><span class="csharp00"> </span><span class="csharp10">)</span><span class="csharp00">
</span><span class="csharp10">{</span><span class="csharp00">
    </span><span class="csharp05">if</span><span class="csharp10">(!</span>unit<span class="csharp10">.</span>IsType<span class="csharp10">(</span>Enemy<span class="csharp10">)</span><span class="csharp00"> </span><span class="csharp10">||</span><span class="csharp00"> </span><span class="csharp10">!</span>unit<span class="csharp10">.</span>IsType<span class="csharp10">(</span>Tank<span class="csharp10">))</span><span class="csharp00">
        </span><span class="csharp05">continue</span><span class="csharp10">;</span><span class="csharp00">

    </span>unit<span class="csharp10">.</span>Damage<span class="csharp10">(</span>5<span class="csharp10">);</span><span class="csharp00">
</span><span class="csharp10">}</span><span class="csharp00">
</span></pre>
<p><span style="text-decoration: underline;">Fluent Example:</span></p>
<pre class="csharpcode">player<span class="csharp10">.</span>UnitsWithinRange<span class="csharp10">(</span><span class="csharp04">2</span><span class="csharp10">)</span><span class="csharp00">
  </span><span class="csharp10">.</span>Where<span class="csharp10">(</span>UnitIs<span class="csharp10">.</span>Enemy<span class="csharp10">)</span><span class="csharp00">
  </span><span class="csharp10">.</span>Where<span class="csharp10">(</span>UnitIs<span class="csharp10">.</span>Tank<span class="csharp10">)</span><span class="csharp00">
  </span><span class="csharp10">.</span>DoDamage<span class="csharp10">(</span><span class="csharp04">5</span><span class="csharp10">);</span></pre>
<p>This fluent example closely matches the design document and is easier to read.  It also uses less language constructs like loops and conditions.  With Intellisense, designers are given a context sensitive list of operations they can perform.  Designers simply build up the expression that describes the original line in the game design document they are implementing.</p>
<p><strong>How to implement Fluent Interfaces </strong></p>
<p>Fluent interfaces are actually quite easy to implement.  Objects expose methods that return a reference to the object itself allowing method chaining.  The best way to describe this is by showing the implementation required for the examples above.</p>
<p>First, we create the object we will be working on (I’ve called it UnitsList in my examples).  This gives us the first part of the fluent call (Get.UnitsWithinRange(2)).</p>
<pre class="csharpcode"><span class="csharp05">public</span><span class="csharp00"> </span><span class="csharp05">class</span><span class="csharp00"> </span>ScriptObject<span class="csharp00">
</span><span class="csharp10">{</span><span class="csharp00">
    </span>UnitsList<span class="csharp00"> </span>UnitsWithinRange<span class="csharp10">(</span><span class="csharp05">int</span><span class="csharp00"> </span>range<span class="csharp10">)</span><span class="csharp00">
    </span><span class="csharp10">{</span><span class="csharp00">
        </span><span class="csharp05">return</span><span class="csharp00"> </span><span class="csharp05">new</span><span class="csharp00"> </span>UnitsList<span class="csharp10">(</span>range<span class="csharp10">);</span><span class="csharp00">
    </span><span class="csharp10">}</span><span class="csharp00">
</span><span class="csharp10">}</span><span class="csharp00">
</span></pre>
<p>The UnitsList object must have a set of methods that return references to the object itself allowing method chanining:</p>
<pre class="csharpcode"><span class="csharp05">public</span><span class="csharp00"> </span><span class="csharp05">class</span><span class="csharp00"> </span>UnitsList<span class="csharp00">
</span><span class="csharp10">{</span><span class="csharp00">
    </span><span class="csharp05">public</span><span class="csharp00"> </span>UnitsList<span class="csharp00"> </span>Where<span class="csharp10">(</span>UnitIs<span class="csharp00"> </span>condition<span class="csharp10">)</span><span class="csharp00">
    </span><span class="csharp10">{</span><span class="csharp00">
        </span><span class="csharp05">this</span><span class="csharp10">.</span>conditions<span class="csharp10">.</span>Add<span class="csharp10">(</span>condition<span class="csharp10">);</span><span class="csharp00">
        </span><span class="csharp05">return</span><span class="csharp00"> </span><span class="csharp05">this</span><span class="csharp10">;</span><span class="csharp00">
    </span><span class="csharp10">}</span></pre>
<p>The fluent expressions are terminated by returning void from a function.  This lets the designer know they have no more options and often that the actual operation will be performed.</p>
<pre class="csharpcode"><span class="csharp05">public</span><span class="csharp00"> </span><span class="csharp05">class</span><span class="csharp00"> </span>UnitsList<span class="csharp00">
</span><span class="csharp10">{</span><span class="csharp00">
    </span><span class="csharp05">public</span><span class="csharp00"> </span><span class="csharp05">void</span><span class="csharp00"> </span>DoDamage<span class="csharp10">(</span><span class="csharp05">int</span><span class="csharp00"> </span>damage<span class="csharp10">)</span><span class="csharp00">
    </span><span class="csharp10">{</span><span class="csharp00">
        </span><span class="csharp05">foreach</span><span class="csharp10">(</span><span class="csharp00"> </span>var<span class="csharp00"> </span>unit<span class="csharp00"> </span><span class="csharp05">in</span><span class="csharp00"> </span><span class="csharp05">this</span><span class="csharp10">.</span>mainUnit<span class="csharp10">.</span>UnitsWithinRange<span class="csharp10">(</span>range<span class="csharp10">)</span><span class="csharp00"> </span><span class="csharp10">)</span><span class="csharp00">
        </span><span class="csharp10">{</span><span class="csharp00">
            </span><span class="csharp05">if</span><span class="csharp10">(!</span>PassesConditions<span class="csharp10">(</span>unit<span class="csharp10">))</span><span class="csharp00">
                </span><span class="csharp05">continue</span><span class="csharp10">;</span><span class="csharp00">

            </span>unit<span class="csharp10">.</span>Damage<span class="csharp10">(</span>damage<span class="csharp10">);</span><span class="csharp00">
        </span><span class="csharp10">}</span><span class="csharp00">
    </span><span class="csharp10">}</span><span class="csharp00">

    </span><span class="csharp05">private</span><span class="csharp00"> </span><span class="csharp05">bool</span><span class="csharp00"> </span>PassesConditions<span class="csharp10">(</span>Unit<span class="csharp00"> </span>unit<span class="csharp10">)</span><span class="csharp00">
    </span><span class="csharp10">{</span><span class="csharp00">
        </span><span class="csharp05">foreach</span><span class="csharp10">(</span><span class="csharp00"> </span>var<span class="csharp00"> </span>condition<span class="csharp00"> </span><span class="csharp05">in</span><span class="csharp00"> </span>conditions<span class="csharp10">)</span><span class="csharp00">
        </span><span class="csharp10">{</span><span class="csharp00">
            </span><span class="csharp05">if</span><span class="csharp10">(!</span>unit<span class="csharp10">.</span>IsType<span class="csharp10">(</span>condition<span class="csharp10">))</span><span class="csharp00">
                </span><span class="csharp05">return</span><span class="csharp00"> </span><span class="csharp05">false</span><span class="csharp10">;</span><span class="csharp00">
        </span><span class="csharp10">}</span><span class="csharp00">
        </span><span class="csharp05">return</span><span class="csharp00"> </span><span class="csharp05">true</span><span class="csharp10">;</span><span class="csharp00">
    </span><span class="csharp10">}</span><span class="csharp00">
</span><span class="csharp10">}</span><span class="csharp00">
</span></pre>
<p>There are a couple of key things to notice:</p>
<ol>
<li>This last code example      looks a lot like the original standard example</li>
<li>A lot more “engine” code      is required to setup a fluent interface than a standard interface</li>
</ol>
<p>So, in effect, an extra layer of abstraction is being placed over the original code.  Rather than designers working on loops and conditions, they are calling (well named) methods.  This makes their life a lot easier and simplifies maintenance of their gameplay code.  It pushes the burden of maintenance down from the gameplay to the engine level and therefore on programmers, who are better suited to maintaining code.  If there is a change in the engine or game, this extra level of abstraction serves to buffer the designers and reduce the amount of code that needs to be written.</p>
<p><strong>Good Interface Design</strong></p>
<p>Care needs to be taken when designing the interfaces and exposing methods to the designers.  Rather than exposing all functions off a single object my recommendation is to define different objects for different situations.  The example provided starts with the player and retrieves a list of units around it.  Filters are then added before the final operation is performed on the resulting list.  By limiting the methods available to the designer to simple filters there is little risk of them making a mistake.  Also, the fact that the &#8220;DoDamage&#8221; function returns void stops them from chaining anything further.</p>
<p><strong>Other Syntaxes</strong></p>
<p>One small point is that designers can structure their fluent “sentences” in any way they please:</p>
<pre class="csharpcode">player<span class="csharp10">.</span>UnitsWithinRange<span class="csharp10">(</span><span class="csharp04">2</span><span class="csharp10">).</span>Where<span class="csharp10">(</span>UnitIs<span class="csharp10">.</span>Enemy<span class="csharp10">).</span>Where<span class="csharp10">(</span>UnitIs<span class="csharp10">.</span>Tank<span class="csharp10">).</span>DoDamage<span class="csharp10">(</span><span class="csharp04">5</span><span class="csharp10">);</span></pre>
<pre class="csharpcode">player<span class="csharp10">.</span>UnitsWithinRange<span class="csharp10">(</span><span class="csharp04">2</span><span class="csharp10">)</span><span class="csharp00">
  </span><span class="csharp10">.</span>Where<span class="csharp10">(</span>UnitIs<span class="csharp10">.</span>Enemy<span class="csharp10">)</span><span class="csharp00">
  </span><span class="csharp10">.</span>Where<span class="csharp10">(</span>UnitIs<span class="csharp10">.</span>Tank<span class="csharp10">)</span><span class="csharp00">
  </span><span class="csharp10">.</span>DoDamage<span class="csharp10">(</span><span class="csharp04">5</span><span class="csharp10">);</span></pre>
<p>There is no difference between the above two examples.  It’s simply a matter of coding style preferred by the writer.</p>
<p><strong>Conclusion</strong></p>
<p>What do you think of Fluent Interfaces?  Have you used a similar technique before?  Do you think the extra engine code and maintenance is too much hassle for the gain in clarity to designers?</p>
<p>As an experiment, try exposing a small set of functionality through a fluent interface and see whether your designers like working with it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.doolwind.com/blog/fluent-game-design-with-fluent-interfaces/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Virgin Play Testers</title>
		<link>http://www.doolwind.com/blog/virgin-play-testers/</link>
		<comments>http://www.doolwind.com/blog/virgin-play-testers/#comments</comments>
		<pubDate>Tue, 19 Jan 2010 12:21:09 +0000</pubDate>
		<dc:creator>Doolwind</dc:creator>
				<category><![CDATA[Game Development]]></category>
		<category><![CDATA[education]]></category>
		<category><![CDATA[Game Designer]]></category>
		<category><![CDATA[Play Testing]]></category>

		<guid isPermaLink="false">http://www.doolwind.com/blog/?p=403</guid>
		<description><![CDATA[How many virgins have played your game?  Do you make sure they&#8217;re virgins before they play?  You need at least one virgin per week to keep you on track and you should be filming them! What are virgin play testers? A virgin is anyone who has never played nor seen someone play your game before.  [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.doolwind.com/images/blog/virginplaytester.jpg"><img class="alignright" title="Virgin Play Tester" src="http://www.doolwind.com/images/blog/virginplaytester.jpg" alt="" width="131" height="109" /></a>How many virgins have played your game?  Do you make sure they&#8217;re virgins before they play?  You need at least one virgin per week to keep you on track and you should be filming them!</p>
<p><span id="more-403"></span></p>
<p><strong><span style="text-decoration: underline;">What are virgin play testers?</span></strong></p>
<p>A virgin is anyone who has never played nor seen someone play your game before.  That second part is important.  If Bob is watching Jim play your game then both Bob and Jim are no longer virgins.</p>
<p>They are equivalent to someone downloading the demo of your game and firing it up for the first time.  They should come from your target audience and preferably be scattered throughout this demographic.</p>
<p><strong><span style="text-decoration: underline;">Why do you need virgin play testers?</span></strong></p>
<p>People have a short attention span these days.  You only have minutes to convince someone your game is worth buying.  Watching a virgin play your game lets you watch the experiences every player will go through when they first play it.  This is absolutely vital if you want to make your game playable and get a conversion.</p>
<p>Gladwell in <a href="http://www.amazon.com/gp/product/0316017922?ie=UTF8&amp;tag=doosgamcodblo-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0316017922">Outliers</a> has the 10,000 hour rule: the time it takes to become proficient in an activity.  I have the 1,000 hour rule.  <span class="pullquote pqLeft">After 1,000 hours working on (and playing) your game you can&#8217;t objectively determine its quality</span>. The only caveat to this rule is that after a year of not having anything to do with the game your virgin status is reset.  This doesn’t really help in the world of game development as you can rarely take a year off.  It’s much easier to just go out and find virgins. The bottom line is that the only way you can experience what your game is like for a virgin is watching them play.</p>
<p><strong><span style="text-decoration: underline;">What’s the best process?</span></strong></p>
<p>Here are some simple rules to help you:</p>
<ul>
<li><strong>Video tape everything</strong> – If possible, try and get the game and their hands in the shot at the same time.  This lets you see what buttons/sticks they are pressing at different stages, particularly if they get stuck<strong></strong></li>
<li><strong>Don’t help</strong> – If you have to help them your game needs some major changes.  Imagine that same person sitting at home without you there; they will most likely give up on the game.<strong></strong></li>
<li><strong>Get them to say what they are thinking</strong> – The best way to find out when they are stuck, bored, excited, surprised or confused is to get them to tell you what they are thinking as they play through the game<strong></strong></li>
<li><strong>Don’t dismiss anything</strong> – No matter how trivial a comment is you need to take it on board.  Even if the person dismisses their comment later you should take notice of it.  On a number of occasions people would say a particular part of the game wasn’t a problem after having it explained and it’s easy to then ignore that issue.<strong></strong></li>
<li><strong>Fix the problems – </strong>This is vital.  There’s no point getting virgins in to play the game if you don’t fix problems they find.  This might seem like a simple idea, but it’s important you keep a record of every issue and resolve them.<strong></strong></li>
</ul>
<p><strong><span style="text-decoration: underline;">Where can you find virgin play testers?</span></strong></p>
<p>There are 4 main places you can find virgins to play test your game:</p>
<ol>
<li><strong>Within your company</strong> – If you work for a large company, start internally.  This reduces NDA and other issues, helps build community within the company and encourages other teams to start virgin play testing if they don’t already</li>
<li><strong>Friends and family</strong> – The next best step is people you know and trust.  You’ll still want them to sign an NDA, but there’s less chance they’ll break it.  This is also a great way to catch up with your partner who you haven’t seen since before crunch started.</li>
<li><strong>Local game development education institutions</strong> – Go to your local game education centre and put up a sign on the notice board reading “Get your name in the credits of a game, right now!”  I guarantee* at least 90% of them will jump at the opportunity.  This also has the secondary benefits of letting you scope out talent and you might even get some good suggestions for your game.</li>
<li><strong>Everyone else</strong> – This is the most important and largest group.  Grab random people off the street or from your local video game shop.  You want to be taking a large cross reference of people here.  It’s also a good idea to find some people outside your target audience.  You may find the game appeals to a larger audience, or that making some small tweaks will broaden your audience substantially.  Free beer and/or pizza is usually payment enough for people to sit and play games for a few hours.<strong></strong></li>
</ol>
<p>*Not a guarantee</p>
<p><strong><span style="text-decoration: underline;">Conclusion</span></strong></p>
<p>I’d like to say a big thanks to <a href="http://www.digitalcream.com.au/blog/">Matt Ford</a> for a lot of the ideas from this post.</p>
<p>I was blown away by how important it was to watch virgins playing our game each and every week.  It does take time and resources, but it’s well worth the effort.  It helps keep you on track and focussing on the initial user experience, the most important part for making the sale.</p>
<p>Go out right now, find someone that hasn’t played your game before, sit them down and watch them play.  I guarantee* you’ll learn something about your game that will make it better.</p>
<p>*This one is a guarantee (unless you’re a lawyer)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.doolwind.com/blog/virgin-play-testers/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Guide To Becoming An Independent Game Developer</title>
		<link>http://www.doolwind.com/blog/guide-to-becoming-an-independent-game-developer/</link>
		<comments>http://www.doolwind.com/blog/guide-to-becoming-an-independent-game-developer/#comments</comments>
		<pubDate>Mon, 02 Nov 2009 07:59:31 +0000</pubDate>
		<dc:creator>Doolwind</dc:creator>
				<category><![CDATA[Game Development]]></category>
		<category><![CDATA[Game Designer]]></category>
		<category><![CDATA[Indie]]></category>

		<guid isPermaLink="false">http://www.doolwind.com/blog/?p=249</guid>
		<description><![CDATA[Have you ever thought about becoming an indie game developer?  Has your game company just gone under, sick of working for publishers or do you just want to break into the games industry?  Whatever the reason, one thing that rings true for all Indie developers is the goal of making a good game.  A lot [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.doolwind.com/images/blog/braid.jpg"><img class="alignright" title="Braid" src="http://www.doolwind.com/images/blog/braid.jpg" alt="" width="102" height="102" /></a>Have you ever thought about becoming an indie game developer?  Has your game company just gone under, sick of working for publishers or do you just want to break into the games industry?  Whatever the reason, one thing that rings true for all Indie developers is the goal of making a <strong>good</strong> game.  A lot of friends in the games industry have recently made the decision to &#8220;go Indie&#8221;.  I thought I&#8217;d write up my guide to becoming an indie game developer taken from my experience and the experience of friends both starting out and with completed independent games.</p>
<p><span id="more-249"></span></p>
<p><strong>Is it for you?</strong></p>
<p>Indie game development isn&#8217;t for everyone.  The pay is low, you typically need a &#8220;day job&#8221; and you need to work extremely hard for little reward at the beginning.  It&#8217;s not all bad though as you are your own boss (and project manager), the monetary rewards can be higher and the reward of creating something of your own is overwhelming.</p>
<p>If you&#8217;re passionate about making games then the negatives might seem inconsequential, however I&#8217;d recommend taking some time to think them through.  You need to be well informed about how long indie games take to develop and you need to be realistic with the goals you set.  My biggest advice is to talk to people who have done it before.  These guys can tell you where the stumbling blocks are, and give you a realistic view into what life will be like once you take the plunge.</p>
<p><strong>Set Concrete, Realistic Milestones</strong></p>
<p>Many indie games are killed by a lack of interest after a few months or years of development.  By keeping your goals realistic and achievable you are reducing the chances of failing in the worst way, by not completing the game.  Always have one primary goal you are heading towards (e.g. alpha, beta, release).  The primary goal should be made up of smaller, measurable goals (e.g.  implementing level 5).  Finally these smaller goals should be broken up into a constant &#8220;to do&#8221; list.  If you have any spare time, you should know exactly what you should be working on next.  This cuts down on procrastination and helps you have a clear direction for the coming days and weeks.</p>
<p><strong>Find a Great Team!</strong></p>
<p>Realistically, there are few games that can be created by a single person.  Your team needs to cover all the bases &#8211; programming, design, art, audio, project management.  Even if you have all these skills, having at least one other person will half the amount of work you have to do and double the number of people contributing to game ideas and &#8220;finding the fun&#8221;.</p>
<p>Find people who are passionate about game development.  Passion trumps ability when it comes to independent games.  As long as the team member is good at their job, it&#8217;s more important to find someone who&#8217;s passionate then the very best in their field.  The lack of short and medium term rewards from indie game development means the team will be rely on their passion to make it to the end-game.</p>
<p>Don&#8217;t expect to &#8220;fill the gaps&#8221; at the end of a project by slotting someone in once everything else is done.  You need a well rounded team from the outset so all areas of the game get enough love and attention.</p>
<p>Different people have differing levels of time they can invest.  Work this out up-front and all agree on your level of commitment.  Roughly schedule the entire game so everyone is area of expectations and can commit to the duration of the project.</p>
<p><strong>Get a day job</strong></p>
<p>Most people will need a &#8220;day job&#8221; to pay the bills while they live the dream of being an indie developer.  Be careful if you plan on living off your savings as they disappear quickly, and there&#8217;s nothing worse than having to go back to working full-time because you ran out of money.</p>
<p>Find the highest paid job you can, no matter how boring.  Think of it as a short-term solution to the problem of funding your own indie game.  You can probably find a higher paid job outside the games industry by looking at similar industry that also use your talents.  Programmers can take on business contracts, artists can go freelance, designers can become technical writers and project managers can work on &#8220;normal&#8221; software projects.  Use your imagination and focus on having as much time as possible to work on your game while still paying the bills.</p>
<p><strong>Learn project management</strong></p>
<p>Love it or hate it, project management needs to be done.  Indie teams rarely have one person dedicated to project management, and so the task is shared throughout the team.  This includes scheduling, planning and making sure they are met.  A great way for people to lose focus and motivation is not have a clear plan for the project.  Look at one of the many agile development methodologies (e.g. scrum) as a great way to keep from bogging down in project management.</p>
<p>There are plenty of great tools available to help with project management, here are a few I&#8217;d recommend looking at:</p>
<p><a href="http://www.acunote.com">Acunote</a></p>
<p><a href="http://www.atlassian.com/software/jira/">Jira</a></p>
<p><a href="http://www.fogcreek.com/FogBUGZ/">FogBUGZ</a></p>
<p><strong>Get pragmatic</strong></p>
<p>Be pragmatic in everything you do.  Aiming for perfection will give you a great tech demo that no one will buy.  <strong>People will pay for a great game, not great technology</strong>.  Since working for myself I&#8217;ve stepped into what I call &#8220;Fanatical Pragmatism&#8221;.  Do the absolute minimum required to achieve your current goals without digging yourself into a corner.</p>
<p><strong>Overestimate time and money</strong></p>
<p>Everything always takes longer and costs more than you expect when you turn indie.  All the indie developers I know have spent far more money and have taken over double the time they first expected.  Constantly update schedules to keep a realistic target for your milestones.  When the schedule starts to slip, be realistic and evaluate if everyone is happy continuing.</p>
<p>My recommendation is to estimate how long the game will take to create and how much it will cost and multiply these values by three.  Either you&#8217;ll be happy working on the game for this long (and can afford to) or you need to cut back the scope of the game.</p>
<p><strong>Make constant playable builds</strong></p>
<p>Aim for a playable prototype as early as possible.  It&#8217;s difficult to be objective with your own game, so you need to reply on other people&#8217;s opinions.  Listen to their feedback and stop if your game is no good.  There&#8217;s no point spending months developing a game that&#8217;s no good.  Constantly create playable demos and show everyone you know.</p>
<p><strong>Keep it small and watch feature creep</strong></p>
<p>Keep the design tight and focussed.  Find the fun parts first and build only what&#8217;s necessary.  You&#8217;re an indie developer so people won&#8217;t expect a AAA title.  Aim for a lower price point and people&#8217;s expectations will be lower.  All the indie developers I&#8217;ve spoken to have had major feature creep causing their schedules to blow out.  The smaller you can start your design out, and keep it that way, the more success your project will have.  Your platform choice will help you keep things small&#8230;</p>
<p><strong>Pick the right platform</strong></p>
<p>The best choices for an indie developer are PC, iPhone and web.  The specific choice comes down to risk versus reward.  PC games are generally larger and therefore higher risk, however they also have a greater chance of making good money.  Web games are particularly good for a first game, just don&#8217;t expect to make much money.</p>
<p>There is a lot of debate at the moment about monetizing flash games and unfortunately the platform still seems a little too immature.  People just aren&#8217;t prepared to pay for a flash game.  There are numerous ways around this (like micro-payments), LostGarden has a <a href="http://lostgarden.com/2009/07/flash-love-letter-2009-part-1.html">great series</a> on this.</p>
<p><strong>Conclusion</strong></p>
<p>So this is a general list of things to prepare you for becoming an independent game developer.  It&#8217;s a long, slow slog, but it&#8217;s worth the effort.  By staying focussed and making intelligent decisions as you go you&#8217;ll put yourself in a great position.  Are you working on an indie game now, or would you like to?  Leave your thoughts and experiences in the comments.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.doolwind.com/blog/guide-to-becoming-an-independent-game-developer/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Game Developer Interview: Simon Neech &#8211; Game Designer</title>
		<link>http://www.doolwind.com/blog/game-developer-interview-simon-neech-game-designer/</link>
		<comments>http://www.doolwind.com/blog/game-developer-interview-simon-neech-game-designer/#comments</comments>
		<pubDate>Wed, 22 Jul 2009 11:51:55 +0000</pubDate>
		<dc:creator>Doolwind</dc:creator>
				<category><![CDATA[Game Development]]></category>
		<category><![CDATA[Edge of Twilight]]></category>
		<category><![CDATA[Game Designer]]></category>
		<category><![CDATA[interview]]></category>
		<category><![CDATA[QA]]></category>
		<category><![CDATA[The Sneech]]></category>

		<guid isPermaLink="false">http://www.doolwind.com/blog/?p=149</guid>
		<description><![CDATA[Today I&#8217;ve got another game developer interview.  This time with Simon Neech (The Sneech).  The Sneech is a game designer at Fuzzyeyes and used to work with me at Auran.  Please feel free to comment with any further questions as he visits regularly. Firstly, could you introduce yourself, tell us what games you’ve worked on, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.doolwind.com/images/blog/sneech.jpg"><img class="alignright" title="Sneech" src="http://www.doolwind.com/images/blog/sneech.jpg" alt="" width="165" height="112" /></a>Today I&#8217;ve got another game developer interview.  This time with Simon Neech (<a href="http://www.defence.gov.au/opex/global/opcatalyst/images/gallery/051203/RAN8095808_031030_064_lo.jpg">The Sneech</a>).  The Sneech is a game designer at <a href="http://www.fuzzyeyes.com/">Fuzzyeyes</a> and used to work with me at Auran.  Please feel free to comment with any further questions as he visits regularly.</p>
<p><span id="more-149"></span></p>
<p><strong>Firstly, could you introduce yourself, tell us what games you’ve worked on, how long you’ve been designing games and what you’re favourite games are?<br />
</strong> My name is Simon Neech and I&#8217;m a Game Designer at Fuzzyeyes Studio, creators of the upcoming Edge of Twilight.  I&#8217;ve been officially involved in the game industry for around 4 years (within 3 separate studios) although I have been following its development and products, in one way or other, for decades.  Titles I&#8217;ve contributed to so far are: Destroy All Humans 2, Fury and Battlestar Galactica but as a hobby I&#8217;ve played, modded and tinkered with hundreds of games before these.<br />
My list of favorite games is in constant flux; the release of new titles has me swinging between genres varying from simple puzzle games to detailed RTS&#8217;s. The platforms I play these on are similarly varied: from PC, to Xbox 360, PSP and recently the iPhone.  My favorite game at the time of writing is Anno 1404 but this could easily slip to Battlefield 1943 in the next few days.</p>
<p><strong>You started out as in QA right?  Can you tell us a bit about the transition from QA to game design?  Is this a path you can recommend to people wanting to get into the games industry?<br />
</strong>QA was a fun and rewarding experience which, although I didn&#8217;t know it at the time, allowed me to acquire skills that would assist me in my future career. I gained first hand experience with the production process that included stages of game development, asset pipelines and even commonly used jargon.  The transition period between the two careers was fairly smooth; I basically went from identifying and documenting bugs within games to creating the bugs myself!<br />
But yes, I would have to agree that working in QA is a great way to break into the industry. Of course, game companies employ testers to assure the quality of their product and not to lay groundwork for a potential career in design; so you need to start down this route with the correct attitude.  When I was first employed, I was overjoyed just to have a role within the industry, in whatever capacity.  I dedicated myself to this position until I found myself in the right place, at the right time and with the right level of experience to start down the design path.  Realistically, I could have continued to do QA for a lot longer and would still be regularly skipping happily to work to this day.</p>
<p><strong><a href="http://www.doolwind.com/images/blog/sneechfuzzyeyes.jpg"><img class="alignleft" style="margin: 10px;" title="Sneech" src="http://www.doolwind.com/images/blog/sneechfuzzyeyes.jpg" alt="" width="200" height="150" /></a>When we worked together you came up with a pitch for a game design almost weekly.  Talk us through the process you take when turning an idea into a document you can pitch to the team.</strong><br />
A simple way to develop a pitching method is to practice on anyone with the patience to listen.  Feedback is your friend, even though it can be devastatingly honest.  My personal process starts with a broad idea. I mentally play through this game idea; over and over until I&#8217;ve clocked it on hard difficulty and unlocked all the achievements. When I&#8217;m satisfied that it&#8217;s something worth developing further, I then document it.  This is the stage where major design flaws become apparent; the relationship between the games constituent parts can often reveal fatal inconsistencies.<br />
My pitch documents consist of two parts: an introductory overview followed by descriptions of the individual features that make the game unique.  The overview should address the basics, such as genre, perspective, platform, intended audience etc. The feature list includes the elements that truly define the idea. These need to be refined into easily relatable terms, while avoiding the trap of micro-explanation; something that will quickly lose peoples interest. The end result should be a few condensed pages, using examples of similar games to clarify points if necessary.</p>
<p><strong>Many people I talk to aspire to becoming a game designer.  What recommendations would you have for game designers who are looking to break into the industry?<br />
</strong>In preparation for a design position within the industry, there are many avenues of study that will teach you the tools of the trade.  But before this, I would advise potential designers to simply analyze the games they enjoy playing.  Scrutinize the graphics, sound and gameplay; immerse yourself in the nuances of story and narrative and imagine ways in which you could improve them.  Like most products, the technology and art of games are built upon the many iterations that comes before them.  Having a firm understanding of these, to see what&#8217;s been done well in the past and what has not will prepare you for the design challenges ahead.</p>
<p><strong>You’ve used a number of game engines for the various games you’ve worked on.  Could you tell us a little about what you like and dislike in an engine as a game designer.<br />
</strong> Overall, Unreal 3 is the engine I have the most experience with.  It’s a powerful design tool for developing games such as Edge of Twilight.  Prior to this, I&#8217;ve worked with propriety engines and have even used the accessible editing tools that often get bundled with commercially available games.<br />
As a designer, I consider versatility as the most important attribute of an engine; the ability to accomplish unforeseen tasks at a scripting level really assists the smooth flow of design.  Currently, I work on many facets of the game, but mainly concern myself with camera implementation used to observe the game world. The Unreal engine has allowed me to implement a wide variety of camera techniques, despite its freecam FPS roots not being generally designed to achieve this.</p>
<p><strong>Do you think the growing team sizes and budgets for games is good for the industry?<br />
</strong>I think the growing budget of games is a double edged sword.  On the one hand, a large budget contributes to high production values, enhancing the gameplay and narrative experience.  On the other hand, huge budgets carry inherent risks and these risks create a tendency to mold games into predictable, clichéd and ultimately safe titles that achieve little in breaking new ground.<br />
Fuzzyeyes, as an independent developer, balances big budget production with the freedom to explore new possibilities, especially in regards to mature themes. Our storyline, aimed at an adult audience, would probably be toned down in a more mainstream studio.<br />
Of course, as in other creative industries such as film, there is a niche to be filled for games with a wide range of budgets; anywhere from many millions of dollars to free!</p>
<p><strong>You’re currently working on “Edge of Twilight” at Fuzzyeyes.  Can you tell us a little about it?<br />
</strong>Edge of Twilight is a third person, action adventure game set in alternate, steampunk themed, universe.  For those not familiar with the term;  ‘Steampunk’ is an aesthetic style based on a modern interpretation of  Victorian-era society and engineering.<br />
The player will assume the role of Lex, an outcast bounty hunter who is a cross between two opposing races; the industrial Athern and spiritual Lithern.  Game play will be split between combat, puzzle-solving and exploration. These elements will in turn be split between two parallel planes of reality that only Lex can traverse; the Lithern influenced night realm, and the industrial, Athern dominated day realm.</p>
<p><strong>What would be your perfect project to work on?</strong><br />
For me, the perfect project would be to develop a game that I truly wanted to play on completion. In this regard, all the games I have worked on can be classed as &#8216;perfect&#8217; projects! As a long term personal goal, I would like to work on a game from my own repertoire of ideas; taking it from the very initial concept stages right through to release.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.doolwind.com/blog/game-developer-interview-simon-neech-game-designer/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>1 Day Game #1</title>
		<link>http://www.doolwind.com/blog/1-day-game-1/</link>
		<comments>http://www.doolwind.com/blog/1-day-game-1/#comments</comments>
		<pubDate>Thu, 21 Jun 2007 09:50:15 +0000</pubDate>
		<dc:creator>Doolwind</dc:creator>
				<category><![CDATA[Game Development]]></category>
		<category><![CDATA[Games]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Game Designer]]></category>
		<category><![CDATA[Game Programming]]></category>

		<guid isPermaLink="false">http://www.doolwind.com/blog/?p=80</guid>
		<description><![CDATA[Over the weekend I had a little spare time and decided to try out Haaf&#8217;s Game Engine (HGE). After spending the last year working on BSG and as long as I can remember on CIC I decided to make a small game that would take less than a day. The finished product came in at [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.doolwind.com/images/blog/game1%20screenshots.jpg"><img src="http://www.doolwind.com/images/blog/game1%20screenshots.jpg" alt="" width="39" height="153" align="right" /></a>Over the weekend I had a little spare time and decided to try out <a href="http://hge.relishgames.com/">Haaf&#8217;s Game Engine</a> (HGE).  After spending the last year working on BSG and as long as I can remember on CIC I decided to make a small game that would take less than a day.  The finished product came in at 13 hours and is a &#8220;<a href="http://en.wikipedia.org/wiki/Geometry_Wars">Geometry Wars</a>&#8221; style of game with a bit of a twist.  I&#8217;ve aptly called the game &#8220;<a href="http://www.doolwind.com/Game1/Game1.zip">Game1</a>&#8220;.</p>
<p><span id="more-80"></span></p>
<p>Below is a breakdown of the hours it took to create:</p>
<table border="1">
<tbody>
<tr>
<td>Description</td>
<td>Hours</td>
</tr>
<tr>
<td>Initial setup of core, engine, game and entity</td>
<td>1.5</td>
</tr>
<tr>
<td>More initial setup, movement, firing with bounding</td>
<td>2</td>
</tr>
<tr>
<td>Player, Bullet, Collision detection</td>
<td>1</td>
</tr>
<tr>
<td>Player dir and enemy</td>
<td>0.5</td>
</tr>
<tr>
<td>Enemy moving and firing on enemy</td>
<td>0.5</td>
</tr>
<tr>
<td>Reflect bullets based on angle</td>
<td>1</td>
</tr>
<tr>
<td>Random level generation</td>
<td>1</td>
</tr>
<tr>
<td>Fixing bugs</td>
<td>1</td>
</tr>
<tr>
<td>Adding gameplay and ui</td>
<td>1</td>
</tr>
<tr>
<td>Leaderboard, more gameplay</td>
<td>1.5</td>
</tr>
<tr>
<td>Encryption</td>
<td>1</td>
</tr>
<tr>
<td>Finalising and preparation for launch</td>
<td>1</td>
</tr>
</tbody>
</table>
<p>I&#8217;m quite impressed with HGE&#8217;s ease of use and will be looking to do a few more small games like this in the coming weeks.  The features of note are:</p>
<p>- Dynamically generated levels using a seeded random number generator.  This means that there are an unlimited number of levels that play the same way for every player.<br />
- Online scoreboard.  Your scores are uploaded at the end of the game and you can compare with other players.  Simple encryption was used to stop abuse.</p>
<p>If anyone is really interested in the source code please add a comment and I may look at releasing it in the near future.  I&#8217;d be interested in any comments or bugs.  My main aim was to keep the development short so I missed out a few features I&#8217;d like to have added.  These include audio and animations when the objects die.</p>
<p>Download the game below and let me know what you think.</p>
<p><strong><a href="http://www.doolwind.com/Game1/Game1.zip">Game 1</a></strong></p>
<p>Controls:<br />
wasd &#8211; movement<br />
LMB &#8211; fire<br />
RMB &#8211; shield<br />
All enemies are red.<br />
Reflected bullets become change to the reflectors team.<br />
The uploaded score simply uses your computer name.</p>
<p>Thanks to Drealmer&#8217;s comments there are now a few more keys:<br />
arrows &#8211; also for movement<br />
zqsd &#8211; also can be used for movement on AZERTY keyboards.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.doolwind.com/blog/1-day-game-1/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Less Is More</title>
		<link>http://www.doolwind.com/blog/less-is-more/</link>
		<comments>http://www.doolwind.com/blog/less-is-more/#comments</comments>
		<pubDate>Sun, 20 Aug 2006 12:51:44 +0000</pubDate>
		<dc:creator>Doolwind</dc:creator>
				<category><![CDATA[Game Development]]></category>
		<category><![CDATA[Games]]></category>
		<category><![CDATA[Game Designer]]></category>
		<category><![CDATA[Game Programming]]></category>

		<guid isPermaLink="false">http://www.doolwind.com/blog/?p=58</guid>
		<description><![CDATA[I&#8217;ve played a few demos over the past weeks and I&#8217;ve found a recurring theme in the good ones; that less is more. To aid in my explanation I&#8217;m going to compare two demos that have come out recently; Company of Heroes (CoH) by Relic (makers of Warhammer 40K) and Paraworld by SEK (makers of [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://doolwind.com/images/blog/lessismore/coh.jpg"> <img style="width: 220px; height: 166px;" src="http://www.doolwind.com/images/blog/lessismore/coh.jpg" alt="" align="right" /> </a>I&#8217;ve played a few demos over the past weeks and I&#8217;ve found a recurring theme in the good ones; that less is more. To aid in my explanation I&#8217;m going to compare two demos that have come out recently;<a href="http://www.companyofheroesgame.com/"> Company of Heroes </a>(CoH) by<a href="http://www.relic.com/"> Relic </a>(makers of Warhammer 40K) and<a href="http://www.paraworld.com/"> Paraworld </a>by SEK (makers of a few games you wouldn&#8217;t have heard of).</p>
<p><span id="more-58"></span></p>
<p>Below is a table of features that both games have and the number of each (figures are approximations):</p>
<table style="border: medium none; border-collapse: collapse;" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td style="border: 1pt solid windowtext; padding: 0cm 5.4pt; width: 88px;" valign="top"><strong>Type</strong></td>
<td style="padding: 0cm 5.4pt; width: 88px; border: 1pt 1pt 1pt medium solid solid solid none windowtext windowtext windowtext -moz-use-text-color;" valign="top"><strong>Paraworld</strong></td>
<td style="padding: 0cm 5.4pt; width: 158px; border: 1pt 1pt 1pt medium solid solid solid none windowtext windowtext windowtext -moz-use-text-color;" valign="top"><strong>Company of Heroes</strong></td>
</tr>
<tr>
<td style="padding: 0cm 5.4pt; width: 88px; border: medium 1pt 1pt none solid solid -moz-use-text-color;" valign="top">Units</td>
<td style="padding: 0cm 5.4pt; width: 88px; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color;" valign="top">27</td>
<td style="padding: 0cm 5.4pt; width: 158px; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color;" valign="top">14</td>
</tr>
<tr>
<td style="padding: 0cm 5.4pt; width: 88px; border: medium 1pt 1pt none solid solid -moz-use-text-color;" valign="top">Buildings</td>
<td style="padding: 0cm 5.4pt; width: 88px; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color;" valign="top">11</td>
<td style="padding: 0cm 5.4pt; width: 158px; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color;" valign="top">10</td>
</tr>
<tr>
<td style="padding: 0cm 5.4pt; width: 88px; border: medium 1pt 1pt none solid solid -moz-use-text-color;" valign="top">Upgrades</td>
<td style="padding: 0cm 5.4pt; width: 88px; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color;" valign="top">5</td>
<td style="padding: 0cm 5.4pt; width: 158px; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color;" valign="top">4</td>
</tr>
<tr>
<td style="padding: 0cm 5.4pt; width: 88px; border: medium 1pt 1pt none solid solid -moz-use-text-color;" valign="top">Resources</td>
<td style="padding: 0cm 5.4pt; width: 88px; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color;" valign="top">4</td>
<td style="padding: 0cm 5.4pt; width: 158px; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color;" valign="top">3</td>
</tr>
</tbody>
</table>
<p>As you can see, Paraworld has far more of everything than CoH, except for fun. I highly recommend trying out the CoH demo to see what I&#8217;m talking and to have a lot of fun playing it. If you&#8217;re a game developer then I recommend downloading the Paraworld so you can see how <strong>not </strong>to make an RTS these days.</p>
<p style="font-weight: bold;">More options, less strategy</p>
<p style="text-align: left;"><a href="http://www.doolwind.com/images/blog/lessismore/paraworld.jpg"> <img style="width: 221px; height: 164px;" src="http://www.doolwind.com/images/blog/lessismore/paraworld.jpg" alt="" width="221" height="164" align="right" /> </a>As is shown in the table above, Paraworld has far more options for buildings, units, resources and main upgrade levels. The problem is that the complex web of strengths and weaknesses is too overwhelming and doesn&#8217;t necessarily add depth. I was amazed how well CoH handled unit strengths and weaknesses with only a handful of different units. Even if completely outnumbered by the enemy, making the correct strategic decision will give you a fighting chance to either make a big enough dent in the enemy to give you time to reinforce or even the tactical advantage to win the battle. I was told that the game was simply &#8216;a race for the first person to get tanks&#8217; however this is far from the truth. In fact, racing to get tanks can be your downfall as they have many weaknesses. Attacking a tank from the back does extra damage (and has on-screen text to let you know what happened which is always a good idea) and a handful of cheap infantry if upgraded properly will often bring a tank to its knees. By keeping the number of units small and focusing on them, a deeper strategic game comes out.</p>
<p style="text-align: left;">
<p>What does Paraworld have? &#8216;Archers are long range and extremely weak in close combat&#8217;. Wow, what an amazing concept, never mind that this has been done to death. This simplistic single-strength, single-weakness for RTS units was fine 5 years ago, but we&#8217;ve come to expect more these days.</p>
<p><span style="font-weight: bold;"> More stolen ideas, less originality</span></p>
<p>In CoH nearly all of the micromanagement is taken away or abstracted into a single number. In Paraworld you must build cottages to build more units and you need storage space for the wood, food and stone you gather. What happens if you run out of storage space, your guys just sit there, like idiots, waiting for you to do something about it. How does this add value to the game? It&#8217;s just frustrating that&#8217;s what it is! CoH on the other hand has simple &#8216;strategic points&#8217; which you capture and your resources goes up meaning you can create more units. This is far simpler, yet adds so much more depth to the game. It forces you to move out to capture more points, while still being able to defend the ones you have. Unfortunately, Paraworld feels like a complete rip of the Age of Empires series. If anyone&#8217;s read my letter to the editor about Age of &lt;insert cash cow name here&gt; you know I can&#8217;t stand this. Let’s move on from the past and start making fresh original games that add value to the genre and to the player.</p>
<p>To prove my point I&#8217;m going to leave this blog here, short and sweet. Again, go out and try CoH, it&#8217;s a great game and I&#8217;d be happy if RTS games in the future start using it as their building block.</p>
<p>P.S. Less is more also applies to good GUI design, check<a href="http://www.doolwind.com/blog/?p=52"> this blog </a>out for more info.</p>
<p><span class="bl_key"><!-- ckey="647D0B04" --></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.doolwind.com/blog/less-is-more/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>
