<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Chimps with Keyboards</title>
	<atom:link href="http://chimpswithkeyboards.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://chimpswithkeyboards.com</link>
	<description>Is it still game development if you don&#039;t ever make a game?</description>
	<lastBuildDate>Wed, 18 Jan 2012 00:07:38 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='chimpswithkeyboards.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Chimps with Keyboards</title>
		<link>http://chimpswithkeyboards.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://chimpswithkeyboards.com/osd.xml" title="Chimps with Keyboards" />
	<atom:link rel='hub' href='http://chimpswithkeyboards.com/?pushpress=hub'/>
		<item>
		<title>Removing the barrier between Obj-C and C++</title>
		<link>http://chimpswithkeyboards.com/2012/01/18/removing-the-barrier-between-obj-c-and-c/</link>
		<comments>http://chimpswithkeyboards.com/2012/01/18/removing-the-barrier-between-obj-c-and-c/#comments</comments>
		<pubDate>Wed, 18 Jan 2012 00:00:40 +0000</pubDate>
		<dc:creator>Jon Shute</dc:creator>
				<category><![CDATA[iOS]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Obj-C]]></category>

		<guid isPermaLink="false">https://chimpswithkeyboards.wordpress.com/?p=23</guid>
		<description><![CDATA[One of the first decisions I made for coding on iOS was that I need to keep a bunch of code portable so I can jump in with Windows versions of things if needs be. That will mainly be for games, but when you have a strict MVC pattern it&#8217;s easy enough to put the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=chimpswithkeyboards.com&amp;blog=20792424&amp;post=23&amp;subd=chimpswithkeyboards&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>One of the first decisions I made for coding on iOS was that I need to keep a bunch of code portable so I can jump in with Windows versions of things if needs be. That will mainly be for games, but when you have a strict MVC pattern it&#8217;s easy enough to put the model out into a separate language.</p>
<p>Luckily Xcode allows you to mix and match languages inside of the same project. Visual Studio would require me to put the C++ code into a different assembly if I wanted to use it with C# so in the end it&#8217;s slightly better than that. The slight problems are that it means that you need to get the two languages to coexist.</p>
<p>The problem I face is one akin to the managed and unmanaged code in Managed C++ for .NET. Obj-C has a layer of functionality that means that just consuming the C++ object is not going to work. A wrapper is needed in order to bridge between the two. Say I was going to wrap a nice C++ class that contains some nice cross platform graphics code I need something like this:</p>
<p style="font:11px Menlo;margin:0;"><span style="color:#cd00a5;">@interface</span> OpenGLView : <span style="color:#7c1fae;">NSOpenGLView</span></p>
<p style="font:11px Menlo;margin:0;">{</p>
<p style="font:normal normal normal 11px/normal Menlo;padding-left:30px;margin:0;"><span style="color:#3d8389;"> Wrapper</span> *openGL;</p>
<p style="font:11px Menlo;margin:0;">}</p>
<p style="font:11px Menlo;margin:0;">-(<span style="color:#cd00a5;">void</span>)drawRect:(<span style="color:#7c1fae;">NSRect</span>)dirtyRect</p>
<p style="font:11px Menlo;margin:0;">{</p>
<p style="font:normal normal normal 11px/normal Menlo;padding-left:30px;margin:0;"><span style="color:#cd00a5;"> if</span>(<span style="color:#3d8389;">openGL</span> == <span style="color:#cd00a5;">nil</span>)</p>
<p style="font:normal normal normal 11px/normal Menlo;padding-left:30px;margin:0;">{</p>
<p style="font:normal normal normal 11px/normal Menlo;padding-left:60px;margin:0;"><span style="color:#3d8389;"> openGL</span> = [[<span style="color:#3d8389;">Wrapper</span> <span style="color:#460085;">alloc</span>]<span style="color:#460085;">init</span>];</p>
<p style="font:normal normal normal 11px/normal Menlo;padding-left:30px;margin:0;">}</p>
<p style="font:normal normal normal 11px/normal Menlo;color:#225a5f;padding-left:30px;margin:0;"><span style="color:#000000;"> [</span><span style="color:#3d8389;">openGL</span>InitScene<span style="color:#000000;">];</span></p>
<p style="font:normal normal normal 11px/normal Menlo;color:#225a5f;padding-left:30px;margin:0;">[<span style="color:#3d8389;">openGL</span> <span style="color:#225a5f;">Draw</span>];</p>
<p style="font:11px Menlo;margin:0;">}</p>
<p>I&#8217;m not sure that the lazy allocation of the object there is a good idea, but it works for now. Wrapper is an Obj-C class that looks like this:</p>
<p>Wrapper.h</p>
<p style="font:11px Menlo;color:#804623;margin:0;">#ifdef __cplusplus</p>
<p style="font:11px Menlo;margin:0;"><span style="color:#cd00a5;">class</span> OpenGLBase;</p>
<p style="font:11px Menlo;color:#804623;margin:0;">#endif</p>
<p style="font:11px Menlo;color:#804623;margin:0;">#ifdef __OBJC__</p>
<p style="font:11px Menlo;color:#804623;margin:0;">#ifndef __cplusplus</p>
<p style="font:11px Menlo;margin:0;"><span style="color:#cd00a5;">typedef</span> <span style="color:#cd00a5;">void</span> OpenGLBase;</p>
<p style="font:11px Menlo;color:#804623;margin:0;">#endif</p>
<p style="font:11px Menlo;color:#804623;margin:0;">#endif</p>
<p style="font:11px Menlo;color:#804623;margin:0;">
<p style="font:11px Menlo;margin:0;"><span style="color:#cd00a5;">@interface</span> Wrapper : <span style="color:#7c1fae;">NSObject</span></p>
<p style="font:11px Menlo;margin:0;">{</p>
<p style="font:normal normal normal 11px/normal Menlo;padding-left:30px;margin:0;"><span style="color:#3d8389;"> OpenGLBase</span>* openGL;</p>
<p style="font:11px Menlo;margin:0;">}</p>
<p style="font:11px Menlo;margin:0;">-(<span style="color:#cd00a5;">void</span>)Draw;</p>
<p style="font:11px Menlo;margin:0;">-(<span style="color:#cd00a5;">void</span>)InitScene;</p>
<p style="font:11px Menlo;color:#cd00a5;margin:0;">@end</p>
<p>Wrapper.mm</p>
<p style="font:11px Menlo;color:#e40000;margin:0;"><span style="color:#804623;">#import </span>&#8220;Wrapper.h&#8221;</p>
<p style="font:11px Menlo;color:#e40000;margin:0;"><span style="color:#804623;">#include </span>&#8220;OpenGLBase.h&#8221;</p>
<p style="font:11px Menlo;color:#e40000;margin:0;">
<p style="font:11px Menlo;color:#cd00a5;margin:0;">@implementation<span style="color:#000000;"> Wrapper</span></p>
<p style="font:11px Menlo;margin:0;">-(<span style="color:#cd00a5;">id</span>)init</p>
<p style="font:11px Menlo;margin:0;">{</p>
<p style="font:normal normal normal 11px/normal Menlo;padding-left:30px;margin:0;"><span style="color:#cd00a5;"> self</span> = [<span style="color:#cd00a5;">super</span> <span style="color:#460085;">init</span>];</p>
<p style="font:normal normal normal 11px/normal Menlo;color:#3d8389;padding-left:30px;margin:0;">openGL<span style="color:#000000;"> = </span><span style="color:#cd00a5;">new </span>OpenGLBase<span style="color:#000000;">();</span></p>
<p style="font:normal normal normal 11px/normal Menlo;color:#cd00a5;padding-left:30px;margin:0;">return self<span style="color:#000000;">;</span></p>
<p style="font:11px Menlo;margin:0;">}</p>
<p style="font:11px Menlo;margin:0;">-(<span style="color:#cd00a5;">void</span>)Draw</p>
<p style="font:11px Menlo;margin:0;">{</p>
<p style="font:normal normal normal 11px/normal Menlo;padding-left:30px;margin:0;"><span style="color:#3d8389;"> openGL</span>-&gt;<span style="color:#225a5f;">Draw</span>();</p>
<p style="font:11px Menlo;margin:0;">}</p>
<p style="font:11px Menlo;margin:0;">-(<span style="color:#cd00a5;">void</span>)InitScene</p>
<p style="font:11px Menlo;margin:0;">{</p>
<p style="font:normal normal normal 11px/normal Menlo;padding-left:30px;margin:0;"><span style="color:#3d8389;"> openGL</span>-&gt;<span style="color:#225a5f;">InitScene</span>();</p>
<p style="font:11px Menlo;margin:0;">}</p>
<p style="font:11px Menlo;color:#cd00a5;margin:0;">@end</p>
<p>They key thing to notice is that the file is called Wrapper.mm instead of just Wrapper.m as that enables the object oriented features and allows a C++ class to even get close to it.</p>
<p>Now this solution does not seem neat to me by any means. There&#8217;s some serious redundancy in having Obj-C functions that just call through to the C++ object that could be a real mess for maintenance and I&#8217;ve not looked at any performance implications that they may have either. If the interface between the two is a small number of member functions then I&#8217;m not going to be too concerned for now, it works and allows me to bridge the gap. I can find a better solution when I know Obj-C better. I&#8217;m sure I can do something with interfaces to force me to implement functions or something, just as I would with an abstract base class in C++ or an interface in any other language. That is for the future, for now I have some working code I can use for playing around with OpenGL.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/chimpswithkeyboards.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/chimpswithkeyboards.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/chimpswithkeyboards.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/chimpswithkeyboards.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/chimpswithkeyboards.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/chimpswithkeyboards.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/chimpswithkeyboards.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/chimpswithkeyboards.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/chimpswithkeyboards.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/chimpswithkeyboards.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/chimpswithkeyboards.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/chimpswithkeyboards.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/chimpswithkeyboards.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/chimpswithkeyboards.wordpress.com/23/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=chimpswithkeyboards.com&amp;blog=20792424&amp;post=23&amp;subd=chimpswithkeyboards&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://chimpswithkeyboards.com/2012/01/18/removing-the-barrier-between-obj-c-and-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3dbff303921eab35435d181c7585bcca?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jon</media:title>
		</media:content>
	</item>
		<item>
		<title>Starting Coding for the iPad</title>
		<link>http://chimpswithkeyboards.com/2012/01/16/starting-coding-for-the-ipad/</link>
		<comments>http://chimpswithkeyboards.com/2012/01/16/starting-coding-for-the-ipad/#comments</comments>
		<pubDate>Mon, 16 Jan 2012 00:00:21 +0000</pubDate>
		<dc:creator>Jon Shute</dc:creator>
				<category><![CDATA[iOS]]></category>
		<category><![CDATA[Airplay]]></category>
		<category><![CDATA[Xcode]]></category>

		<guid isPermaLink="false">https://chimpswithkeyboards.wordpress.com/?p=19</guid>
		<description><![CDATA[There was a time, long ago, where this blog was about programming .NET things. I covered writing debuggers, profilers and other interesting things but now all that is so out of date it&#8217;s just not worth keeping around any more. I stopped because it just wasn&#8217;t exciting me any more, so I went off to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=chimpswithkeyboards.com&amp;blog=20792424&amp;post=19&amp;subd=chimpswithkeyboards&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>There was a time, long ago, where this blog was about programming .NET things. I covered writing debuggers, profilers and other interesting things but now all that is so out of date it&#8217;s just not worth keeping around any more. I stopped because it just wasn&#8217;t exciting me any more, so I went off to write about games until I started to get bored of that as well. It&#8217;s amazing how quickly having a paying writing gig can turn you off a subject you love.</p>
<p>I&#8217;ve tried to rekindle that passion many times, but always I&#8217;ve hit the same old problems of motivation. The reason is, as I think I&#8217;ve now found out, that there just wasn&#8217;t a big enough chunk of &#8220;unknown&#8221; out there for me to delve into. I work with .NET every day and have a pretty good handle on enough of it so that I don&#8217;t have an urge to go and explore the nooks and crannies to find out what cool things are behind the next corner.</p>
<p>The iPad fascinates me for this exact reason. We are nowhere near to figuring out what having powerful devices like phones and tablets with us all the time means yet, and it&#8217;s exciting me in ways that are feeling very familiar. So it&#8217;s time to grab Xcode and learn Objective-C. It&#8217;s time to grab the iPad and iPhone and see what I can make them do.</p>
<p>One of the most exciting things for me is Airplay. The ability to get a second display onto a TV over Wifi has some really fascinating implications for games that might make Sony and Microsoft a little uncomfortable over the next few years.</p>
<p>A few bazillion GB of downloads later and I have the Stanford iOS 5 videos ready to go along with a bunch from WWDC last year. So far there&#8217;s been a lot of &#8220;Ohh, that&#8217;s really clever&#8221; moments about features and just as many &#8220;wouldn&#8217;t this be easier in a less mad language?&#8221; ones as well.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/chimpswithkeyboards.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/chimpswithkeyboards.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/chimpswithkeyboards.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/chimpswithkeyboards.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/chimpswithkeyboards.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/chimpswithkeyboards.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/chimpswithkeyboards.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/chimpswithkeyboards.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/chimpswithkeyboards.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/chimpswithkeyboards.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/chimpswithkeyboards.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/chimpswithkeyboards.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/chimpswithkeyboards.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/chimpswithkeyboards.wordpress.com/19/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=chimpswithkeyboards.com&amp;blog=20792424&amp;post=19&amp;subd=chimpswithkeyboards&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://chimpswithkeyboards.com/2012/01/16/starting-coding-for-the-ipad/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3dbff303921eab35435d181c7585bcca?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jon</media:title>
		</media:content>
	</item>
		<item>
		<title>The Right Technology</title>
		<link>http://chimpswithkeyboards.com/2012/01/15/the-right-technology/</link>
		<comments>http://chimpswithkeyboards.com/2012/01/15/the-right-technology/#comments</comments>
		<pubDate>Sun, 15 Jan 2012 11:11:55 +0000</pubDate>
		<dc:creator>Jon Shute</dc:creator>
				<category><![CDATA[XNA]]></category>
		<category><![CDATA[independent games]]></category>
		<category><![CDATA[next generation xbox]]></category>
		<category><![CDATA[xbox dashboard]]></category>
		<category><![CDATA[xna games]]></category>

		<guid isPermaLink="false">http://chimpswithkeyboards.com/?p=16</guid>
		<description><![CDATA[There&#8217;s a lot that could be said about Microsoft&#8217;s handling of XNA games on 360 over the last few years, but with the current Xbox UI I think that all that should be said is that they are no longer something that Microsoft consider relevant. The ease of use and great developer tools just aren&#8217;t [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=chimpswithkeyboards.com&amp;blog=20792424&amp;post=16&amp;subd=chimpswithkeyboards&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>There&#8217;s a lot that could be said about Microsoft&#8217;s handling of XNA games on 360 over the last few years, but with the current Xbox UI I think that all that should be said is that they are no longer something that Microsoft consider relevant. The ease of use and great developer tools just aren&#8217;t enough, and unless the next generation Xbox does something better, which is a possibility, then homebrew on consoles is once again dead.</p>
<p>I do think that there is a non-zero chance of there being an app store on the next generation Xbox as it&#8217;s worked out well for Apple as a revenue source, but Microsoft are masters at not utilizing what they have and letting other beat them. I&#8217;ve always assumed that it&#8217;s various groups inside of Microsoft fighting away and pulling in different directions depending on who has won that month. XNA is being pulled towards phones and the Xbox UI is being pulled towards, well who knows what that mess of a UI is meant to be for now? It makes everything to do with games harder and hides some content so well that even Microsoft community people send you to youtube to find videos rather than the Xbox dashboard now.</p>
<p>It&#8217;s sad to see independent games on the consoles go away once again, but maybe we will get better support next time.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/chimpswithkeyboards.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/chimpswithkeyboards.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/chimpswithkeyboards.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/chimpswithkeyboards.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/chimpswithkeyboards.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/chimpswithkeyboards.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/chimpswithkeyboards.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/chimpswithkeyboards.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/chimpswithkeyboards.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/chimpswithkeyboards.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/chimpswithkeyboards.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/chimpswithkeyboards.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/chimpswithkeyboards.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/chimpswithkeyboards.wordpress.com/16/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=chimpswithkeyboards.com&amp;blog=20792424&amp;post=16&amp;subd=chimpswithkeyboards&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://chimpswithkeyboards.com/2012/01/15/the-right-technology/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3dbff303921eab35435d181c7585bcca?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jon</media:title>
		</media:content>
	</item>
		<item>
		<title>Phase One: Getting past the blank page</title>
		<link>http://chimpswithkeyboards.com/2011/03/05/phase-one-getting-past-the-blank-page/</link>
		<comments>http://chimpswithkeyboards.com/2011/03/05/phase-one-getting-past-the-blank-page/#comments</comments>
		<pubDate>Sat, 05 Mar 2011 12:00:00 +0000</pubDate>
		<dc:creator>Jon Shute</dc:creator>
				<category><![CDATA[RTS]]></category>

		<guid isPermaLink="false">https://chimpswithkeyboards.wordpress.com/2011/03/05/phase-one-getting-past-the-blank-page/</guid>
		<description><![CDATA[The question at the heart of all this is why aren’t there any good RTS games on consoles? The answer is usually “because there isn’t a mouse” and while that’s OK as a first pass it doesn’t actually address the question. Is the mouse actually indispensible? Can the controller do a similar job if it [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=chimpswithkeyboards.com&amp;blog=20792424&amp;post=9&amp;subd=chimpswithkeyboards&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The question at the heart of all this is why aren’t there any good RTS games on consoles? The answer is usually “because there isn’t a mouse” and while that’s OK as a first pass it doesn’t actually address the question. Is the mouse actually indispensible? Can the controller do a similar job if it tries? As I go down this road I’m going to look at a series of RTS games on the 360 and see what they do right and, more importantly, what they do wrong. I’m then going to implement various different things to see what works and what doesn’t.</p>
<p>In order to do that I will need a game engine. When you put it like that it sounds all big and scary, so what I need to start with is a small first stage to work towards. This first step has to result in something that runs and then lets me interact with it in some kind of meaningful way. I also need this to happen as quickly as possible so that I have started with enough inertia to keep going.</p>
<p>This means I need to pair down what I’m doing to start with to the smallest core possible. Anything fancy needs to be discarded and anything difficult needs to go as well.</p>
<h2>The First Iteration</h2>
<p>The first iteration of the game will be a 2d sprite based top down game. There are two sides, red and blue, and the graphics are the same for both except for the colours. You will be able to create units from a fixed base and move them around the map. You win by moving a unit onto the enemy base and there are no enemy units or AI. The landscape will be a flat colour with no obstacles to cause path finding issues and it will all be visible on screen at the same time. There will be no zooming or panning of the camera. There will also be no menus, the game starts playing and ends when you win.</p>
<p>Yes, that is the dullest game ever and can be won by creating a unit and sending them in a straight line to the enemy base. It does however give me something with a win condition that is playable from this iteration onwards as I add new features.</p>
<p>From this I created a quick list of features I need for this iteration:</p>
<ul>
<li>Basic application window (on the 360)</li>
<li>A World that is the same size as the display</li>
<li>Bases (in the middle of the short edges of the window)</li>
<li>Unit selection (need to select the base to create units, select the units to move them)</li>
<li>Unit creation</li>
<li>Unit Movement</li>
<li>The ability to win (move unit into the opposing base)</li>
</ul>
<p>No doubt I missed something massive here.</p>
<p>The reason for hitting the 360 from the word go is that it’s easy to do. In fact it sounds easier for me to always target it then to bring support in for it at a later date as I won’t have gone down any blind alleys along the way.</p>
<h2>Potential Next Iterations</h2>
<p>After I have this created I need to think about where step 2 will go. I think it is important to know where you are going next as that will guide your decisions for each iteration, but I’ll have to be careful not to look too far ahead and start coding things that aren’t needed yet. From this step on I’m thinking of very small iterations that just add one or two things and nothing should have as many features as the first one. The rules of iterative programming say don’t add features that you think you’ll need so this will basically be slap them in, refactor them in the future as I add new things.</p>
<p>The short list that I’ve come up with is quite simple:</p>
<ul>
<li>Local Multiplayer</li>
<li>Menus</li>
<li>Music (ability to play, not composing)</li>
<li>Sound Effects</li>
</ul>
<p>I think all of these are quite important for various reasons. The menus are needed in order to make it a “proper” looking game. Music will be needed at some point, as will sound effects and the earlier I get them in the sooner I can tick them off the list.</p>
<p>Multiplayer may seem like the odd one out here, but since the goal is to be playable at all times it gives a competitive experience with the least amount of effort compared to actually adding some AI which, I have to admit, I am clueless about at the moment.</p>
<p>I suspect I shall start with multiplayer and then add menus in order to satisfy my goals and design philosophy. Technically after I have these four features it could be considered a fully developed game (albeit a boring one) that is missing features required to actually sell the game on 360.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/chimpswithkeyboards.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/chimpswithkeyboards.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/chimpswithkeyboards.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/chimpswithkeyboards.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/chimpswithkeyboards.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/chimpswithkeyboards.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/chimpswithkeyboards.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/chimpswithkeyboards.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/chimpswithkeyboards.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/chimpswithkeyboards.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/chimpswithkeyboards.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/chimpswithkeyboards.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/chimpswithkeyboards.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/chimpswithkeyboards.wordpress.com/9/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=chimpswithkeyboards.com&amp;blog=20792424&amp;post=9&amp;subd=chimpswithkeyboards&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://chimpswithkeyboards.com/2011/03/05/phase-one-getting-past-the-blank-page/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3dbff303921eab35435d181c7585bcca?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jon</media:title>
		</media:content>
	</item>
		<item>
		<title>It is time to create something</title>
		<link>http://chimpswithkeyboards.com/2011/03/04/it-is-time-to-create-something/</link>
		<comments>http://chimpswithkeyboards.com/2011/03/04/it-is-time-to-create-something/#comments</comments>
		<pubDate>Fri, 04 Mar 2011 14:47:24 +0000</pubDate>
		<dc:creator>Jon Shute</dc:creator>
				<category><![CDATA[XNA]]></category>
		<category><![CDATA[RTS]]></category>

		<guid isPermaLink="false">https://chimpswithkeyboards.wordpress.com/2011/03/04/it-is-time-to-create-something/</guid>
		<description><![CDATA[I’m a developer, I play games and I’ve had a podcast for the last three years talking about games but I’ve never actually managed to make a game before. There’s nothing stopping me do it: I have the skills, I have the ideas and I have the talent (I believe) but I have the killer [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=chimpswithkeyboards.com&amp;blog=20792424&amp;post=8&amp;subd=chimpswithkeyboards&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I’m a developer, I play games and I’ve had a <a href="http://consoling.tv/" target="_blank">podcast</a> for the last three years talking about games but I’ve never actually managed to make a game before. There’s nothing stopping me do it: I have the skills, I have the ideas and I have the talent (I believe) but I have the killer weakness of getting easily distracted. </p>
<p>Along the way I’ve also gotten out of the habit of coding in my spare time. I used to spend a lot of (enjoyable) time poking around at the debugging layer of .NET and I feel the need to poke around at something again.</p>
<p>So basically I need to make a game to scratch that itch, but along the way play with a whole range of things that I find interesting. How hard can that be?</p>
<p>To start with I’m going to need a set of achievable goals. I’ve found over the years that the key to getting any software project successfully finished is to work in short steps with a working product at every step. For a game that means having something I can play from day one.</p>
<p>Next I need an idea. Luckily I have one, and it’s something I’ve wanted to explore for a long time. This question needs a console to be answered and so the choice of technology becomes limited to one possible solution: XNA. </p>
<p>What is that question? Can you make a good console RTS game?</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/chimpswithkeyboards.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/chimpswithkeyboards.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/chimpswithkeyboards.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/chimpswithkeyboards.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/chimpswithkeyboards.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/chimpswithkeyboards.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/chimpswithkeyboards.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/chimpswithkeyboards.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/chimpswithkeyboards.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/chimpswithkeyboards.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/chimpswithkeyboards.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/chimpswithkeyboards.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/chimpswithkeyboards.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/chimpswithkeyboards.wordpress.com/8/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=chimpswithkeyboards.com&amp;blog=20792424&amp;post=8&amp;subd=chimpswithkeyboards&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://chimpswithkeyboards.com/2011/03/04/it-is-time-to-create-something/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3dbff303921eab35435d181c7585bcca?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Jon</media:title>
		</media:content>
	</item>
	</channel>
</rss>
