<?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; CIC</title>
	<atom:link href="http://www.doolwind.com/blog/category/cic/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>Opticode &#8211; Brisbane .NET and Silverlight Development</title>
		<link>http://www.doolwind.com/blog/opticode-brisbane-net-and-silverlight-development/</link>
		<comments>http://www.doolwind.com/blog/opticode-brisbane-net-and-silverlight-development/#comments</comments>
		<pubDate>Mon, 07 Jul 2008 08:36:30 +0000</pubDate>
		<dc:creator>Doolwind</dc:creator>
				<category><![CDATA[CIC]]></category>
		<category><![CDATA[Game Development]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[Silverlight]]></category>

		<guid isPermaLink="false">http://www.doolwind.com/blog/?p=95</guid>
		<description><![CDATA[So a few months ago I posted about resigning and how I was planning to set up a software development company. It&#8217;s now a little over 6 months later and I thought I&#8217;d give everyone an update on how things are going. Walter and I formed Opticode late last year and have been busy making [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;"><a href="http://www.opticode.com.au/"><img class="alignright" style="float: right;" src="http://www.opticode.com.au/Opticode.jpg" alt="" /></a>So a few months ago I posted about resigning and how I was planning to set up a software development company.  It&#8217;s now a little over 6 months later and I thought I&#8217;d give everyone an update on how things are going.  Walter and I formed <a href="http://www.opticode.com.au">Opticode</a> late last year and have been busy making ASP.NET, .NET and Silverlight applications for quite a few clients around Brisbane.  I&#8217;m still doing some game development contract work where I&#8217;m currently helping with the development of a multi-threaded renderer as well as some C# tools development.</p>
<p><span id="more-95"></span></p>
<p>As Opticode expands during the coming months we&#8217;ll be looking to take on a few more programmers so shoot me an <a href="mailto:alistair@opticode.com.au">email</a> if you&#8217;d like to work for an agile company working on some of the latest Microsoft technology.</p>
<p>I&#8217;m still working away on the back story to CIC which has become my spare-time hobby.  I&#8217;ve been asked by quite a few people about CIC&#8217;s status and I&#8217;m happy to report that while the direct development is on hold, the design is always evolving and the game will be released eventually.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.doolwind.com/blog/opticode-brisbane-net-and-silverlight-development/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>AI Game Programming Wisdom 4</title>
		<link>http://www.doolwind.com/blog/ai-game-programming-wisdom-4/</link>
		<comments>http://www.doolwind.com/blog/ai-game-programming-wisdom-4/#comments</comments>
		<pubDate>Mon, 18 Jun 2007 13:21:03 +0000</pubDate>
		<dc:creator>Doolwind</dc:creator>
				<category><![CDATA[CIC]]></category>
		<category><![CDATA[Game Development]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[Game Programming]]></category>

		<guid isPermaLink="false">http://www.doolwind.com/blog/?p=79</guid>
		<description><![CDATA[So I&#8217;ve been extra busy as always and haven&#8217;t had a great deal of time to post.  This time I have an excuse!  Over the past few weeks I&#8217;ve been working on my first draft for the upcoming &#8220;AI Game Programming Wisdom 4&#8243; book.  I&#8217;m writing an article entitled &#8220;Scripting Your Way to Advanced AI&#8221; [...]]]></description>
			<content:encoded><![CDATA[<p>So I&#8217;ve been extra busy as always and haven&#8217;t had a great deal of time to post.  This time I have an excuse!  Over the past few weeks I&#8217;ve been working on my first draft for the upcoming &#8220;AI Game Programming Wisdom 4&#8243; book.  I&#8217;m writing an article entitled &#8220;<span class="text"><span class="text">Scripting Your Way to Advanced AI&#8221; (check out more info <a href="http://www.introgamedev.com/cfp.html">here</a>).  After working with <a href="http://www.defence.gov.au/opex/global/opcatalyst/images/gallery/051203/RAN8095808_031030_064_lo.jpg">Simon</a> (our designer) on the singleplayer of Battlestar Galactica I decided to share my experiences.  I&#8217;m unsure how much I can talk about the article so I&#8217;ll leave it at that for now.  Suffice it to say</span></span> at least one Dark Reign reference was snuck in there, imaginary sticker for anyone that finds it.</p>
<p><span id="more-79"></span></p>
<p>In other news I&#8217;ve been busily working towards big milestones at work and all is going well.  I&#8217;ve started playing with <a href="http://hge.relishgames.com/">HGE</a> (Haaf&#8217;s Game Engine) and so far I&#8217;m enjoying it.  I&#8217;ve just put a small game together which I&#8217;ll release later in the week for everyone to try out.  I decided after writing an article and all the months of work on BSG and CIC I needed a small pet project for the weekend so I threw something together in a few hours.  I&#8217;ll have full stats when I release the game.</p>
<p>That&#8217;s about all for now.  CIC is still creeping along slowly however with 9+ hours of work per day and then an hour or so of article writing I haven&#8217;t had the brain energy left to solve some of the complex problems I&#8217;m facing in CIC.  It is moving along smoothly though and I have movement with missile pathing working nicely.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.doolwind.com/blog/ai-game-programming-wisdom-4/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Happy Easter</title>
		<link>http://www.doolwind.com/blog/happy-easter/</link>
		<comments>http://www.doolwind.com/blog/happy-easter/#comments</comments>
		<pubDate>Fri, 06 Apr 2007 02:03:42 +0000</pubDate>
		<dc:creator>Doolwind</dc:creator>
				<category><![CDATA[CIC]]></category>
		<category><![CDATA[Games]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://www.doolwind.com/blog/?p=75</guid>
		<description><![CDATA[Hi guys, This is just a quick post to say happy Easter and let you know how things are going at the moment. Things at work have been going crazy leading up to big milestones so I&#8217;ve been putting in 10+ hour days for a while now. This has left me little time to work [...]]]></description>
			<content:encoded><![CDATA[<p>Hi guys,</p>
<p>This is just a quick post to say happy Easter and let you know how things are going at the moment.  Things at work have been going crazy leading up to big milestones so I&#8217;ve been putting in 10+ hour days for a while now.  This has left me little time to work on my latest blogs, but rest assured, I have a number in the works.  I&#8217;m currently playing Silent Hunter 4 in all its bugginess and as usual still playing as much Company of Heroes as I can with my limited spare time.</p>
<p><span id="more-75"></span></p>
<p>CIC is moving along quite slowly.  I&#8217;m looking to convert my engine to use 64bit floating point numbers (doubles) so I can accurately represent the entire Solar System down to centimeter precision.  Once things settle down at work (probably not for a few more months) I&#8217;ll look at getting back into ~10 hours a week so I can make some more progress.</p>
<p>I&#8217;ve had some requests for blog articles which I&#8217;m working on at the moment.  If anyone else has any requests please post a comment and I&#8217;ll write up an article if I know enough about the subject.  Until then, have a great Easter.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.doolwind.com/blog/happy-easter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Orbital Mechanics</title>
		<link>http://www.doolwind.com/blog/orbital-mechanics/</link>
		<comments>http://www.doolwind.com/blog/orbital-mechanics/#comments</comments>
		<pubDate>Thu, 11 Jan 2007 10:53:55 +0000</pubDate>
		<dc:creator>Doolwind</dc:creator>
				<category><![CDATA[CIC]]></category>

		<guid isPermaLink="false">http://www.doolwind.com/blog/?p=71</guid>
		<description><![CDATA[Just a quick update to let you know that things are coming along nicely in CIC at the moment. I&#8217;ve decided to put together my second tech demo (alpha 2) which wills how off movement and may have orbital mechanics involved. I&#8217;ve always been interested in orbits, both how they work, and the math that [...]]]></description>
			<content:encoded><![CDATA[<p align="left"><a href="http://www.doolwind.com/images/blog/hohmann.jpg"><img align="right" src="http://www.doolwind.com/images/blog/hohmann_sm.jpg" /></a>Just a quick update to let you know that things are coming along nicely in CIC at the moment.  I&#8217;ve decided to put together my second tech demo (alpha 2) which wills how off movement and may have orbital mechanics involved.  I&#8217;ve always been interested in orbits, both how they work, and the math that goes into entering and exiting them.  I haven&#8217;t played a game to date that includes them so it seemed like a good mechanic for a tech demo.  My hope is that I can hide all of the boring and complex 3D math from the player and let them concentrate on having fun sling shotting of planets, entering/exiting and changing orbits and other fun things.</p>
<p><span id="more-71"></span></p>
<p>Without accounting for the orbital parts, I&#8217;ve estimated about 55 hours of work to reach the tech demo.  As I&#8217;m doing a lot of overtime at work at the moment I won&#8217;t be able to hit my usual 10 hours per week of work so I can&#8217;t set a date for the tech demo yet.  Having said that, I&#8217;m making good time so far and will do as much as I can when I get the chance.</p>
<p>As always, any comments, ideas or feedback on the &#8216;fun&#8217; parts of orbits or anything to do with moving in space is always welcome.  I&#8217;m aiming for true* Newtonian physics which will allow for fun real 3D combat thanks to my as yet unannounced time algorithm.</p>
<p><em>*Many games claim to have Newtonian physics only to add in a &#8216;dampener drive&#8217; (or equivalent) which magically takes away all the pains of REAL Newtonian physics.  I hope to have a game that finally allows true physics without the player worrying about spending hours speeding up and slowing down.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.doolwind.com/blog/orbital-mechanics/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>CIC 3D</title>
		<link>http://www.doolwind.com/blog/cic-3d/</link>
		<comments>http://www.doolwind.com/blog/cic-3d/#comments</comments>
		<pubDate>Tue, 05 Dec 2006 13:45:25 +0000</pubDate>
		<dc:creator>Doolwind</dc:creator>
				<category><![CDATA[CIC]]></category>

		<guid isPermaLink="false">http://www.doolwind.com/blog/?p=69</guid>
		<description><![CDATA[It&#8217;s been quite a while since I posted specifically about CIC so I thought I&#8217;d give a quick update. Last night I made my first check-in since September (before the wedding). I&#8217;m beginning work on the &#8217;3D movement&#8217; part of the game which I&#8217;m hoping will be one of it&#8217;s main features. Homeworld 1 &#038; [...]]]></description>
			<content:encoded><![CDATA[<p align="left"><a href="http://www.doolwind.com/images/blog/hw2.jpg"><img width="176" height="132" align="right" src="http://www.doolwind.com/images/blog/hw2.jpg" /></a>It&#8217;s been quite a while since I posted specifically about CIC so I thought I&#8217;d give a quick update.  Last night I made my first check-in since September (before the wedding).  I&#8217;m beginning work on the &#8217;3D movement&#8217; part of the game which I&#8217;m hoping will be one of it&#8217;s main features.  Homeworld 1 &#038; 2 have been the best games to use 3D that I&#8217;ve played so far, however I still didn&#8217;t like their interface.  It was predominately 2D with the 3rd dimension being an added extra. CIC is going to be fully 3D and there are no major and minor axis (z/up being minor in Homeworld).  This has two advantages, firstly, you have all dimensions to use in your strategy and you&#8217;re not disadvantaged by attacking along a minor axis.  Secondly, it&#8217;s far easier for the player to comprehend what&#8217;s going on in true 3D as they only need think about where enemies are relative to themselves, not relative to a given coordinate system.  Will this work? Time will tell.  I&#8217;ve already rewritten the tried and true chess rules for my mini-game, I may as well try rewriting the way games handle 3D while I&#8217;m at it.</p>
<p><span id="more-69"></span></p>
<p>The big question here is why am I adding &#8216;true&#8217; 3D to my game, is it just a gimmick?  I&#8217;ve been thinking about this recently and come to the conclusion that it&#8217;s not.  If I go back to my initial reasons for adding true 3D, it was not to try and sell more copies or add more features, it was to allow more strategy in my game.  Not only that, it was to add <u>true</u> strategy to the game.  Space combat (as explained very well in Ender&#8217;s Game) will be truly 3D and we&#8217;ll need to unlock our minds from thinking about &#8216;up&#8217; and &#8216;down&#8217; being relative to the world (or planets) around us, instead they are relative to where the enemy is.  Hopefully this will make for engaging gameplay, I&#8217;m willing to bet it is and I just hope I can make the interface to pull it off.</p>
<p>So that&#8217;s where things are at the moment.  I&#8217;m hitting the books with design and working on some more complex 3D math problems.  I&#8217;ll keep you posted on how things are going and will start to set out a schedule soon for Alpha 2 which will include 3D movement.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.doolwind.com/blog/cic-3d/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Flexibility vs. Speed</title>
		<link>http://www.doolwind.com/blog/flexibility-vs-speed/</link>
		<comments>http://www.doolwind.com/blog/flexibility-vs-speed/#comments</comments>
		<pubDate>Wed, 30 Aug 2006 07:44:23 +0000</pubDate>
		<dc:creator>Doolwind</dc:creator>
				<category><![CDATA[CIC]]></category>
		<category><![CDATA[Game Development]]></category>
		<category><![CDATA[Scripting Language]]></category>

		<guid isPermaLink="false">http://www.doolwind.com/blog/?p=59</guid>
		<description><![CDATA[In software development there are many goals that we aim for in designing our software, some of which compete against each other. Two such goals are flexibility and speed. While they may not always be in competition, I&#8217;ve found in the past that they quite often are, and particularly so when it comes to game [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.doolwind.com/images/blog/ew.jpg"><img src="http://www.doolwind.com/images/blog/ew.jpg" alt="" width="219" height="172" align="right" /></a>In software development there are many goals that we aim for in designing our software, some of which compete against each other.  Two such goals are flexibility and speed.  While they may not always be in competition, I&#8217;ve found in the past that they quite often are, and particularly so when it comes to game development.  What exactly do I mean by these two terms?  Flexibility can mean anything from allowing multiple development languages to cross-platform support.  When I talk about speed I&#8217;m talking about actual run-time performance of your application.  Today I&#8217;m going to speak specifically about my time adding both <a href="http://www.somedude.net/gamemonkey/">GameMonkey</a> (GM) for scripting support and minimax for AI.</p>
<p><span id="more-59"></span></p>
<p><strong>The Mini-Game</strong></p>
<p>As part of a mini-game for CIC I wanted players to be able to play a chess-like game allowing one of the 4 or 5 players per ship to conduct &#8216;Electronic Warfare&#8217; against other ships they were battling with.  I needed to do a lot of prototyping of the game rules testing different types of units, different board sizes etc.  For the greatest flexibility in prototyping I decided to implement the entire game logic in script files allowing rule changes on the fly.  After investigating the different options for scripting languages, I chose to go with GM Script.  It also gave me the added benefit of trying out GM Script on a small sized project to help decide if I should use it for the high-level AI in the rest of CIC.</p>
<p>During the creation of the board game engine I first created chess and checkers, using script files only, to make sure I had enough features for a full chess-like game.  I then created a separate script file with the rules and unit types for my &#8216;Electronic Warfare&#8217; game.  It shows just how flexible scripting languages can be, with a simple change in script file completely changing the game.</p>
<p><strong>Game Monkey Script</strong></p>
<p>GM Script is &#8220;a simple, small, game / application extension language for C++ coders&#8221;.  It&#8217;s similar to Lua, but designed with C/C++ game programmers in mind.  Using a C style language it allows script (.gm) files to be loaded and executed at run-time.  The script files allow many useful features from configurable variables to complex functions.  I found it easy to use, simple to integrate with my own code, and generally a great benefit to the project.  I highly recommend anyone to check out GM script for any scripting solutions they need in the future, and feel free to contact me for any more detailed info or questions.</p>
<p><strong>MiniMax (with alpha-beta pruning)</strong></p>
<p>Thinking back to my AI subjects at university I remembered that minimax tree traversal was one of the best forms of AI for chess-like games.  After some investigation I decided I&#8217;d implement minimax for my chess game, and after a few hours of coding had simplistic tree generation and traversal implemented.  The basic concept of minimax tree traversal requires you to generate a tree of possible moves from the current board layout (and all moves from each of those moves etc).  Each set of moves is a new level in the tree, and the children for each node are all the possible moves from that board configuration.  The number of nodes in the tree quickly blows out with only looking ahead a small number of moves (currently I look forward 3 or 4 moves).  To allow looking forward this far I needed the game to run a lot faster.  I added my own memory pool, I compressed my board and unit class sizes as far as I could and ran AMD&#8217;s optimizer (<a href="http://developer.amd.com/downloads.aspx">CodeAnalyst</a>) over my game to find any bottlenecks.  After squeezing as much performance as I could out of the code I ended up running into a brick wall, I couldn&#8217;t have both the flexibility of a scripting language and still have the speed to run the minimax algorithm properly.</p>
<p><strong>Script vs. AI</strong></p>
<p>As a lot of the core gameplay was implemented as functions within GM script, every time I called them I had a major run-time hit which wasn&#8217;t a problem during regular play, but when generating thousands of possible moves it soon grinds to a halt.  Don&#8217;t get me wrong, I&#8217;m not saying you shouldn&#8217;t use scripting in your games; it&#8217;s just that you have to choose where you use it wisely.  One area of the GM script that allows your app to still have excellent run-time performance is configuration variables.  By loading all of the definitions in at once (at load time) and storing them in regular C++ structs/class you can then access them at full speed while still having the flexibility of originally loading them in from script.  There is no native support for binding GM config files to C++ struct/classes however it&#8217;s a simple task to create this yourself.  Using configuration variables I&#8217;ve managed to get around the problem for now, however it means I can&#8217;t have any of the extra features (like special moves such as castling in chess) working with the AI.</p>
<p>The main performance problem will occur if you use script in a time critical part of the game loop.  Scripting languages when compiled to non-native byte code will be 10-100 times slower than native code.</p>
<p><strong>Conclusion</strong></p>
<p>So in summary, GM script could be a great addition to your game, in moderation, and minimax is an excellent algorithm to use in any chess-like game.  Minimax has fairly limited uses outside of that scope, however it was fun to implement and only took a few hours to get up and running, with a few extra hours optimizing it.  I now have the fun task of making the AI smarter through the &#8216;score&#8217; it gives to a particular board configuration, the better the algorithm, the smarter the AI will be.  Once I&#8217;m happy with the AI I&#8217;ll look to start integrating it within CIC and see how it plays with the rest of the game.  Then it&#8217;s on to implementing all of the fancy features I&#8217;ve come up with over the past few months of design.  I&#8217;d like to thank <a href="http://www.squidtank.com/">Shauno</a> for working on the art for my &#8216;Electronic Warfare&#8217; game, it goes to show again just how much better a game looks when a real artist has spent even a few hours on it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.doolwind.com/blog/flexibility-vs-speed/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Good Game GUI Design</title>
		<link>http://www.doolwind.com/blog/good-game-gui-design/</link>
		<comments>http://www.doolwind.com/blog/good-game-gui-design/#comments</comments>
		<pubDate>Sun, 14 May 2006 12:02:47 +0000</pubDate>
		<dc:creator>Doolwind</dc:creator>
				<category><![CDATA[CIC]]></category>
		<category><![CDATA[Game Development]]></category>

		<guid isPermaLink="false">http://www.doolwind.com/blog/?p=52</guid>
		<description><![CDATA[All games have user interfaces, from first person shooters to puzzle games and hardcore simulations. Their quality ranges from excellent down to looking like they’ve been hastily put together by programmers themselves at the end of a project.  Sometimes they seem to only be there to let players have access to the internal workings of [...]]]></description>
			<content:encoded><![CDATA[<p>All games have user interfaces, from first person shooters to puzzle games and hardcore simulations.  Their quality ranges from excellent down to looking like they’ve been hastily put together by programmers themselves at the end of a project.  Sometimes they seem to only be there to let players have access to the internal workings of the game, almost as an after thought.  In this article I’ll discuss why World of Warcraft’s GUI works so well and why games as old as Sim Ant (1991) started the trend in excellent design.</p>
<p><span id="more-53"></span></p>
<p>Below is the list of 7 rules I follow during the design of a GUI for any game.</p>
<p><strong>1.    Less is more</strong></p>
<p align="left"><a href="http://www.doolwind.com/images/blog/GGGD/confusion.jpg"><img src="http://www.doolwind.com/images/blog/GGGD/confusion.jpg" alt="" align="right" /></a>People in general become overwhelmed and confused easily.  This is particularly true when playing games as people use them as a time to relax and enjoy themselves.  Work out what the player’s options are in each section of the game and remove any UI elements that aren’t relevant or that are used infrequently.  From speaking with gamers from casual to hardcore I’ve found that confusion actually grows exponentially with the number of UI elements you have on screen at once.</p>
<p><strong>2.    Context sensitivity is in</strong></p>
<p>Context sensitive help and options are all over Windows XP for a reason, it makes life so much easier.  If you are right clicking on a folder then you’ll want to perform different operations to right clicking on the start button.  In games, there are a multitude of different approaches you can take from performing a different action based on what they clicked on to bringing up different options in a radial menu when they right click on a different object.</p>
<p><strong>3.    Match data to representation</strong></p>
<p align="left"><a href="http://www.doolwind.com/images/blog/GGGD/simant.jpg"><img style="width: 177px; height: 147px;" src="http://www.doolwind.com/images/blog/GGGD/simant.jpg" alt="" align="right" /></a>Programmers like to represent everything with numbers on screen.  It’s quick, gets the data across and doesn’t take up much room, what more could you want?  The use of numbers to represent some data is fine, such as the number of arrows left in your quiver, but displaying the current health of the player can be done in better ways.  The first time I saw this work really well was playing Sim Ant over 10 years ago.  The player had to assign a resource between 3 different options.  Rather than have 3 numbers you could change where increasing one decreased the other two they had a triangle where you dragged a dot to any point in the triangle representing a split of the resources.  It was so simple and elegant and even though I was only 10 years old I instantly understood what to do.</p>
<p><strong>4.    Mouse over help is in</strong></p>
<p>This is another concept introduced by Windows that works well in games.  The Movies does this really well by displaying a help bubble with general information about the object and after a few more seconds displaying more detailed information.  World of Warcraft has one of the best mouse over help interfaces I’ve seen in a game to date.  Nearly every UI element in the game has information telling you exactly what it does removing the need for a manual or even looking through a help file.</p>
<p><strong>5.    Give immediate feedback for every action</strong></p>
<p>This is a key point to reducing the frustration of the player.  Whenever they click on a button or object you should let them know that the game has registered their action, from simply playing a sound to playing an animation on the button.  Warcraft (the RTS) used to give an immediate response from the character when you ordered them to do something even though the character didn’t actually perform the action until the server sent the response back.  You couldn’t notice any problem as your brain was satisfied that the character understood the order and was just a little slow to get moving.  If you’ve ever found yourself clicking multiple times or yelling at the screen because you’ve clicked 20 times and nothing has happened you will understand how frustrating this can be.</p>
<p><strong>6.    Keep the user from moving all over the screen with the mouse</strong></p>
<p align="left"><a href="http://www.doolwind.com/images/blog/GGGD/nexuswowcompare.jpg"><img style="width: 169px; height: 254px;" src="http://www.doolwind.com/images/blog/GGGD/nexuswowcompare.jpg" alt="" align="right" /></a>You should try to position UI elements together in their logical groups as much as possible.  It’s a good idea to keep UI elements to the sides of the screen out of the way, but try and keep them all in the one area rather than around more than 1 or 2 sides of the screen.  In this picture the red parts indicate how much of the screen the user can click on.  World of Warcraft succeeds by keeping everything to the bottom while Nexus has 3 sides of the screen where you may need to click meaning you spend a lot of time moving all over the screen to select different options.</p>
<p><strong>7.    Design before you begin</strong></p>
<p>Ad hoc GUI’s show and they are really awful to use.  This point was reinforced with how difficult the initial UI in CIC was for most users.  They were overwhelmed with choice and had options they hardly used.  Most parts of your game will only be seen infrequently, however you can be guaranteed the GUI will be on their screen the entire time so it’s important to design it properly.  This is reinforced by the fact that releasing your game with a simple ad hoc GUI and then fixing it in a later release means the users will have to re-learn an entirely new interface and they will have picked up bad habits from your first ad hoc design.</p>
<p>I’m working on a small game for a friend for the next month or so after which I will be continuing work on my board game which will be part of the “Electronic Warfare” section of CIC.</p>
<p>[Edit] For my blog on why trying to remove GUI&#8217;s completely is a bad idea, go <a href="http://www.doolwind.com/blog/?p=19">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.doolwind.com/blog/good-game-gui-design/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>CIC Alpha 1 Complete</title>
		<link>http://www.doolwind.com/blog/cic-alpha-1-complete/</link>
		<comments>http://www.doolwind.com/blog/cic-alpha-1-complete/#comments</comments>
		<pubDate>Sat, 08 Apr 2006 02:04:29 +0000</pubDate>
		<dc:creator>Doolwind</dc:creator>
				<category><![CDATA[CIC]]></category>

		<guid isPermaLink="false">http://www.doolwind.com/blog/?p=50</guid>
		<description><![CDATA[It&#8217;s done! After months of development and testing the first alpha of CIC is complete. Those who have signed up for the closed alpha should have received an email last night giving them instructions on how to download the latest build to try it out. If there are any major problems I plan to release [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s done!  After months of development and testing the first alpha of CIC is complete.  Those who have signed up for the closed alpha should have received an email last night giving them instructions on how to download the latest build to try it out.  If there are any major problems I plan to release a patch, and then decide how best to move on with the development.  I&#8217;m really pleased that I met the first deadline I set 12 weeks ago of April 7th and it was suprisingly accurate as I fixed my last bug last night before uploading it to the server.<br />
Due to the feedback I&#8217;ve already received I&#8217;ve decided to continue with the development of CIC, however I&#8217;m going to take a break for a while and plan out how I can best utilize the remaining year or so of development.  It&#8217;s not too late to sign up for the closed alpha, just fill out the form below and I&#8217;ll send out the details on how to download CIC.</p>
<p><span id="more-51"></span></p>
<form action="http://scripts.dreamhost.com/add_list.cgi" method="post">
<input type="hidden" value="cicnewsletter" name="list" />
<input type="hidden" value="www.doolwind.com" name="domain" />
<input type="hidden" name="url" />
<input type="hidden" name="unsuburl" />
<input type="hidden" name="alreadyonurl" />
<input type="hidden" name="notonurl" />
<input type="hidden" name="invalidurl" />
<input type="hidden" name="emailconfirmurl" />
<input type="hidden" value="1" name="emailit" />    Name:<br />
<input name="name" style="background-color: #ffffa0" /> E-mail:<br />
<input name="email" style="background-color: #ffffa0" />
<input type="submit" value="Join Closed Alpha" name="submit" />
<input type="submit" value="Unsubscribe" name="unsub" /> </form>
]]></content:encoded>
			<wfw:commentRss>http://www.doolwind.com/blog/cic-alpha-1-complete/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Polishing Bugs</title>
		<link>http://www.doolwind.com/blog/polishing-bugs/</link>
		<comments>http://www.doolwind.com/blog/polishing-bugs/#comments</comments>
		<pubDate>Mon, 03 Apr 2006 11:32:13 +0000</pubDate>
		<dc:creator>Doolwind</dc:creator>
				<category><![CDATA[CIC]]></category>

		<guid isPermaLink="false">http://www.doolwind.com/blog/?p=49</guid>
		<description><![CDATA[Everything is in and ready to go for the tech demo. I&#8217;ve been working on polish and bugs fixes for the last couple of weeks and I&#8217;ve cleaned up all my known bugs. I&#8217;ve just got a week of testing singleplayer and mainly multiplayer over a LAN and the internet. After a couple of weeks [...]]]></description>
			<content:encoded><![CDATA[<p>Everything is in and ready to go for the tech demo.  I&#8217;ve been working on polish and bugs fixes for the last couple of weeks and I&#8217;ve cleaned up all my known bugs.  I&#8217;ve just got a week of testing singleplayer and mainly multiplayer over a LAN and the internet.  After a couple of weeks of looking on and off I finally found the cause of my graphical bug which made the missile trails to render incorrectly every 10-15 seconds for a frame or two.</p>
<p><span id="more-50"></span></p>
<p>I&#8217;ve got a list of 5 polish items which will make the game easier to play, so I&#8217;ll implement as many of them as I can.  None are too critical so it&#8217;s safe to introduce them at this stage.  I&#8217;d highly recommend checking out the tutorial videos if you haven&#8217;t already as without in-game tutorials the game is quite daunting to begin with.  This will be a major factor over the next few months as I work out ways of fixing the interface design (which has been ad-hoc so far) and basically making the game accessible to all players.</p>
<p>I&#8217;m away this weekend visiting my parents so I&#8217;ll try and upload before I go and leave everyone to try the game out over the weekend.</p>
<p>PS. Happy birthday Ryan and Amy&#8230;and good luck in your interview tomorrow Kel.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.doolwind.com/blog/polishing-bugs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CIC101</title>
		<link>http://www.doolwind.com/blog/cic101/</link>
		<comments>http://www.doolwind.com/blog/cic101/#comments</comments>
		<pubDate>Tue, 21 Mar 2006 11:33:13 +0000</pubDate>
		<dc:creator>Doolwind</dc:creator>
				<category><![CDATA[CIC]]></category>

		<guid isPermaLink="false">http://www.doolwind.com/blog/?p=45</guid>
		<description><![CDATA[I&#8217;ve put up some video tutorials of CIC in preparation for the alpha test.  I&#8217;ve got one more tutorial to make and that will be up by the end of the week.  Please check out the tutorials and let me know if there&#8217;s anything you&#8217;d missing and I can make a few more tutorials.  It&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve put up some <a href="http://www.doolwind.com/index.php?page=10">video tutorials</a> of CIC in preparation for the alpha test.  I&#8217;ve got one more tutorial to make and that will be up by the end of the week.  Please check out the tutorials and let me know if there&#8217;s anything you&#8217;d missing and I can make a few more tutorials.  It&#8217;s also a chance to hear my nerd voice in action.</p>
<p><span id="more-47"></span></p>
<p>I&#8217;ve also decided to unlock the <a href="http://www.doolwind.com/forum">forums</a> so you no longer need a login to post.  There&#8217;s still a poll running and if you want to give any feedback about CIC it&#8217;s a good place to start.</p>
<p><a href="http://www.r2.com.au">Cliff</a> and I had 3 player test (he used his laptop as well) and it all went well.  There were a few bugs we found, however most of them have since been fixed. I&#8217;ll be doing a few more multiplayer tests before I&#8217;m ready to put the a build up on the net for everyone to make sure there aren&#8217;t any major issues.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.doolwind.com/blog/cic101/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
