<?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; Microsoft</title>
	<atom:link href="http://www.doolwind.com/blog/tag/microsoft/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>Where Is Virtual Reality?</title>
		<link>http://www.doolwind.com/blog/where-is-virtual-reality/</link>
		<comments>http://www.doolwind.com/blog/where-is-virtual-reality/#comments</comments>
		<pubDate>Wed, 13 Jan 2010 23:51:35 +0000</pubDate>
		<dc:creator>Doolwind</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Game Development]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Virtual Reality]]></category>
		<category><![CDATA[VR]]></category>

		<guid isPermaLink="false">http://www.doolwind.com/blog/?p=392</guid>
		<description><![CDATA[Have you ever used Virtual Reality?  Whether the big cumbersome headsets in the early 90’s or the sleeker more refined technology of today, chances are you’ve encountered virtual reality in your travels.  It was touted as the “next big thing” in computers and was expected to be in every home but it never eventuated.  Today [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.doolwind.com/images/blog/virtual_reality.jpg"><img class="alignright" title="Virtual Reality" src="http://www.doolwind.com/images/blog/virtual_reality.jpg" alt="" width="168" height="126" /></a>Have you ever used Virtual Reality?  Whether the big cumbersome headsets in the early 90’s or the sleeker more refined technology of today, chances are you’ve encountered virtual reality in your travels.  It was touted as the “next big thing” in computers and was expected to be in every home but it never eventuated.  Today I’m going to discuss what virtual reality means for gamers and game developers.</p>
<p><span id="more-392"></span></p>
<p><strong>Introduction</strong></p>
<p>I first used virtual reality in 1995 while visiting SegaWorld in London.  They had a ride you sat in, donned a virtual reality headset and furiously pressed buttons to win or lose a battle (along with 20 or so other people).  I was so excited to finally get to use virtual reality that I took a wrong turn getting on the ride and fell off into the hydraulics.  I’m not sure if it was the amazing 3D, head tracking or loss of blood from my injuries but I had an awakening experience.  I knew that in the future, we’d all be playing games using virtual reality, and the world would be a better place.  Unfortunately, this never happened, but is it too late?</p>
<p><strong>Should it be the “Next Big Thing”?</strong></p>
<p>VR has a number of key features that make it the obvious path for game development in the future:</p>
<ul>
<li><strong>Full 3D Immersion</strong> – rather      than looking at the game world sitting on a monitor that’s sitting in your      room you are actually in the world.       Even 2D games take up your entire peripheral vision making them      immersive.</li>
<li><strong>True 3D (for free)</strong> –      Having two images allows a true stereoscopic display of the 3D world</li>
<li><strong>Head tracking</strong> – Most VR      headsets have built in head tracking which adds to the immersion.  Now you can look at the pre-pubescent      kid in counter strike before he headshots you.</li>
<li><strong>Look cool</strong> – Why wear nerdy      3D glasses when you can look like this:</li>
</ul>
<p style="text-align: center;"><a href="http://www.doolwind.com/images/blog/virtual_reality_helmet.jpg"><img class="aligncenter" title="Virtual Reality Helmet" src="http://www.doolwind.com/images/blog/virtual_reality_helmet.jpg" alt="" width="281" height="201" /></a></p>
<p>It’s best suited to the following games:</p>
<ul>
<li>Flight Sims</li>
<li>First-Person Shooters</li>
<li>Racing Games</li>
<li>Sport Games</li>
</ul>
<p>VR also opens up the possibility of relaxation and full emersion games that aren’t possible with regular monitors.  This might sound a little hippie like, but I can see some great opportunities in games for children in hospitals and rehabilitation from injuries.</p>
<p>In my eyes, these benefits make it the ideal candidate for game development in the future.  The current bout of <a href="http://edition.cnn.com/2010/SHOWBIZ/Movies/01/11/avatar.movie.blues/">depression</a> leading from the immersion experienced in the “Avatar” movie is proof that even 3D movies are enough to have a greater impact on people (and that some people are fairly weak).</p>
<p>3D movies bring up an interesting stepping stone towards VR.  Monitors are now available with high enough refresh rates that 3D glasses can be used to present a 3D image on the screen at 50Hz.  This might be an easier sell now that 3D movies are becoming more mainstream.  I find it interesting that some people are happy to accept 3D movies as the “next big thing” while dismissing virtual reality as a thing of the past, despite the fact it has much greater qualities.<strong></strong></p>
<p><strong>So why hasn’t Virtual Reality taken off?</strong></p>
<p>There are a few main reasons why Virtual Reality is still not in the mainstream of gaming:</p>
<ul>
<li><strong>Price</strong> – With the <a href="https://e-store.emagin.com/miva/merchant.mvc?Screen=PROD&amp;Store_Code=E&amp;Product_Code=Z3V&amp;Category_Code=">average      headset</a> coming in at $1,500USD, this is a lot for an 800&#215;600      display by anyone’s standards.       While it is comparable to some larger end monitors it’s still too      high for the average gamer.  If the      price of headsets can come down below $750USD and resolutions can be at      least 1024&#215;768 I expect a much larger uptake.  That’s certainly the sweet spot for      price and resolution for me.</li>
<li><strong>Vertigo/Eye Strain</strong> – Some people      have issues focussing on the screens in the virtual reality headset and      others suffer from eye strain.  Most      people should get used to this over time however it might simply mean some      people never adopt the technology</li>
<li><strong>Lack of interest</strong> – People just      got bored with the idea.  For so      long we kept hearing about how VR was going to change the world and it      never did.  A great example of this is the fact that searches for “Virtual Reality” are <a href="http://www.google.com/insights/search/#q=virtual%20reality&amp;cmpt=q">down 80%</a> since 2004!</li>
</ul>
<p><strong>Any other crazy thoughts?</strong></p>
<p>What would a blog post from me be without a reference to Microsoft?  The ultimate way for virtual reality to take off is for Microsoft to develop the headsets.  They make awesome peripherals, have the money to back it and have the console to go along with it.  Having both Xbox and PC support virtual reality would be better for gamers, game developers and give Microsoft more of an edge over the competition.</p>
<p><strong>What do you think?</strong></p>
<p>Have you used Virtual Reality before?  Did you like it?  How much would you be willing to pay and what resolution do you think should be the minimum supported?  Many people I’ve spoken to about Virtual Reality think it’s dead, what do you think?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.doolwind.com/blog/where-is-virtual-reality/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Using C# For a Commercial Game</title>
		<link>http://www.doolwind.com/blog/using-csharp-for-a-commercial-game/</link>
		<comments>http://www.doolwind.com/blog/using-csharp-for-a-commercial-game/#comments</comments>
		<pubDate>Tue, 17 Nov 2009 03:27:13 +0000</pubDate>
		<dc:creator>Doolwind</dc:creator>
				<category><![CDATA[Game Development]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Game Coding]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Scripting Language]]></category>
		<category><![CDATA[Unit Testing]]></category>

		<guid isPermaLink="false">http://www.doolwind.com/blog/?p=260</guid>
		<description><![CDATA[Does the title of this article make you cringe?  People have mixed feelings when it comes to C# and the .NET framework.  Just like many hardcore game developers 10 years ago swore that games should only be made in straight C, many developers today say that C++ is the only way to go.  This article [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.doolwind.com/images/blog/csharpcommercial.jpg"><img class="alignright" title="C# Commercial" src="http://www.doolwind.com/images/blog/csharpcommercial.jpg" alt="" width="109" height="82" /></a>Does the title of this article make you cringe?  People have mixed feelings when it comes to C# and the .NET framework.  Just like many hardcore game developers 10 years ago swore that games should only be made in straight C, many developers today say that C++ is the only way to go.  This article outlines my reasoning for using C# for a commercial game on PC.</p>
<p><span id="more-260"></span></p>
<p><strong>Rapid Application Development</strong></p>
<p>The primary reason for using C# is because coding in it is more productive than any other language I&#8217;ve used.  Language features like interfaces, generics and delegates make it a cleaner language than C++.  Development practices such as unit testing and dependency injection are also easier to use in C#.  This clarity translates to more readable code and less bugs, particularly when working with a larger or younger team of developers.</p>
<p>The second productivity gain comes from having access to the .NET framework.  From its XML handling for configuration, to built-in math libraries, many of the core functions you can think of are taken care of.  This saves you writing the code yourself and lets a reliable, tested framework do the heavy lifting in areas you don&#8217;t want to spend your time.</p>
<p>C# lets you focus on making a game rather than writing an engine, or learning someone else&#8217;s engine.</p>
<p><strong>Unified Code &#8211; Client, Server, Tools, Scripting</strong></p>
<ul>
<li><strong>Server</strong> &#8211; I&#8217;m writing the server      architecture (matchmaking, leaderboard, etc) in ASP.NET and C#.  This lets me share libraries between the      client and server and makes calling web services from the client a breeze.</li>
<li><strong>Tools</strong> &#8211; All our tools are also      written in C#.  This means that our      tools can have rendering within them, can reuse libraries and simplifies      the creation of in-game tools.</li>
<li><strong>Scripting &#8211; </strong>As I&#8217;ve mentioned in a <a href="http://www.doolwind.com/blog/why-you-should-use-csharp-for-your-scripting-language/">previous article</a>, I&#8217;m using C# for the scripting      language in our game.</li>
</ul>
<p><strong>Better Software Development</strong></p>
<p>C# supports better software development practices in a number of key ways:</p>
<ul>
<li><strong>Refactoring      Tools</strong> &#8211;      Visual Studio has great refactoring support such as renaming identifiers      and extracting methods &amp; interfaces.</li>
<li><strong>Separation of      Concerns</strong> &#8211;      Splitting a project into separate .dll&#8217;s is trivial in C#.  This helps with maintainability and encapsulation      of code and encourages good separation of concerns.</li>
<li><strong>Unit Testing</strong> &#8211; C# has great support for      unit testing through NUnit or MSTest.       As I&#8217;ve <a href="http://www.doolwind.com/blog/test-driven-game-development/">previously discussed</a>, unit      testing fits perfectly in certain areas of game development.  The easier unit testing is to achieve,      the more people are likely to adopt it.</li>
</ul>
<p><strong>In-Game Web Browser</strong></p>
<p>As part of the game engine we are developing we decided all interaction with the server for matchmaking would be through http/html.  This reduces the need for creating such a complex in-game UI system and simplifies communication with the server.  The .NET web browser control is extremely easy to use and communication between the browser and host application (the game) is a simple.</p>
<p><strong>Run-time isn&#8217;t too large</strong></p>
<p>I&#8217;m currently targeting the .NET 2 framework.  This put&#8217;s the footprint at around 20MB.  The latest .NET frameworks (3.5 and 4) both have a &#8220;client profile&#8221;.  This is a subset of the .NET framework that comes in at about 30MB.  My plan is to use the .NET 4 client profile once it is released as it gives me access to all the latest language features (Linq, lambda expressions, dynamic objects, etc).  MS is <a href="http://blogs.msdn.com/jgoldb/">currently planning</a> to make .NET 4 client profile a windows update meaning the .NET framework will finally become (almost) ubiquitous among PC&#8217;s running windows.</p>
<p><strong>Negatives</strong></p>
<p>There are obvious drawbacks to using C# for a commercial game engine which we took into consideration when making our decisions.</p>
<ul>
<li><strong>Not Cross      Platform</strong> &#8211;      While engines like Unity have proven that C# can run on multiple      platforms, this does not occur out of the box.  As we&#8217;re targeting PC&#8217;s exclusively for      our first release this was not a problem.</li>
<li><strong>Xbox run-time      not great</strong> &#8211;      C# can run on the Xbox as part of XNA game studio, however the run-time      performance isn&#8217;t great.  Garbage      collection is a particular problem which requires refactoring code to      achieve acceptable frame rates.<strong></strong></li>
<li><strong>Harder to use      C++ libraries</strong> &#8211; Linking to straight C++ (non-COM) libraries is not trivial like it is      connecting to other .NET libraries.       Extra time is required if there is a requirement to use existing      libraries such as RakNet.<strong></strong></li>
<li><strong>Some performance      concerns</strong> &#8211; C#      does have some performance concerns with garbage collection and certain      double math operations.  However the      algorithmic gains received from working with such a great language outweigh      the small performance issues in certain areas.  As with any language, bad code will run      slow.<strong></strong></li>
</ul>
<p><strong>Conclusion</strong></p>
<p>C# is a great language.  I thoroughly enjoy coding for it and I find it makes me more productive when creating games.  I plan to release my MVC engine in the future as an open source project.  Until then, I&#8217;m continuing to develop our engine and I&#8217;ll keep you up to date with the progress.</p>
<p>For reference, here are a couple of commercial games using C#:</p>
<p><strong>Arena Wars</strong> -<a href=" http://www.arenawars.net"> http://www.arenawars.net</a><strong></strong></p>
<p><strong>AI War Fleet Command</strong> &#8211; <a href="http://www.arcengames.com/aiwar_features.php">http://www.arcengames.com/aiwar_features.php</a></p>
<p><strong>Sacraboar</strong> &#8211; <a href="http://www.sacraboar.com">http://www.sacraboar.com</a></p>
<p>Have you used C# for game development?  Are you sick of chasing memory leaks and crashes in your C++ applications?  Do you think game developers will move on from C++ now or in the future?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.doolwind.com/blog/using-csharp-for-a-commercial-game/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Would Steam Points Work?</title>
		<link>http://www.doolwind.com/blog/would-steam-points-work/</link>
		<comments>http://www.doolwind.com/blog/would-steam-points-work/#comments</comments>
		<pubDate>Wed, 11 Nov 2009 02:05:12 +0000</pubDate>
		<dc:creator>Doolwind</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Game Development]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Modern Warfare 2]]></category>
		<category><![CDATA[osmos]]></category>
		<category><![CDATA[steam]]></category>
		<category><![CDATA[steam points]]></category>
		<category><![CDATA[Valve]]></category>

		<guid isPermaLink="false">http://www.doolwind.com/blog/?p=254</guid>
		<description><![CDATA[Steam&#8217;s having great success at the moment, with 40% market share making it the #1 platform for online game distribution.  They&#8217;ve expanded from in-house games to publishing titles of all shapes and sizes (from Modern Warfare 2 to Osmos).  I&#8217;ve always thought they were missing something, Steam Points.  Steam Points would be to Steam as Microsoft [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.doolwind.com/images/blog/steampoints.jpg"><img class="alignright" title="Steam Points" src="http://www.doolwind.com/images/blog/steampoints.jpg" alt="" width="251" height="82" /></a>Steam&#8217;s having great success at the moment, with 40% market share making it the #1 platform for online game distribution.  They&#8217;ve expanded from in-house games to publishing titles of all shapes and sizes (from <a href="http://modernwarfare2.infinityward.com/games.php">Modern Warfare 2</a> to <a href="http://www.hemispheregames.com/osmos/">Osmos</a>).  I&#8217;ve always thought they were missing something, Steam Points.  Steam Points would be to Steam as Microsoft Points are to Xbox.  This entry discusses why this would be a valuable addition for Valve, developers, gamers and even retailers.</p>
<p><span id="more-254"></span></p>
<p><strong>Features</strong></p>
<p>Steam Points could be used to buy games, Downloadable Content and even in-game assets (through micro-transactions).  They open up the option of gift cards rather than buying a specific game for someone.  This would be perfect leading up to Christmas as non-game savvy friends and family could buy gift cards rather than guessing and thinking &#8220;Diaper Dash&#8221; is something you&#8217;d enjoy.</p>
<p>All payment would still go through PayPal keeping the security burden on them.  Keeping payment with PayPal also stops Valve from watering down their focus by becoming a merchant facility.  It will simply give gamers more options with how they buy their games.</p>
<p><strong>Advantages for Valve</strong></p>
<ul>
<li>Create new revenue sources &#8211; gift cards and      micro-transactions</li>
<li>Encourage micro-transactions within games,      increasing revenue</li>
<li>Bringing more developers and gamers to their      platform</li>
<li>Another differentiator to their competitors      (not that they really need one)</li>
</ul>
<p><strong>Advantages for Developers</strong></p>
<ul>
<li>A new revenue source</li>
<li>Revenue during the life-time of the game rather      than only at the point of sale</li>
<li>Reduce barriers for customers as the initial      cost of the game can be lower</li>
<li>Micro-transactions allow more styles of games      to be developed</li>
</ul>
<p><strong>Advantages for Gamers</strong></p>
<ul>
<li>Using a trust company for purchasing      points.  Valve isn&#8217;t going bust any      time soon</li>
<li>Initial cost of games will be lower, increasing the      number of games a player can afford</li>
<li>More options for how players want to play (pay      for convenience)</li>
<li>Can purchase points at a retailer removing the      need for a credit card</li>
<li>Unifies the currency leading to less confusion for the international market</li>
</ul>
<p><strong>Advantages for Retailers</strong></p>
<ul>
<li>Gives them a simple avenue into online      distribution</li>
<li>Can sell cards in their shops and make a cut of      online sales</li>
<li>Game retailers may resist however it&#8217;s similar      to &#8220;iTunes credit&#8221; which most music shops now sell</li>
</ul>
<p><strong> Conclusion</strong></p>
<p>Whether you love or hate Steam, it&#8217;s here to stay.  I see a lot of great opportunity for Valve in the future and Steam Points are a great way to begin their move forward.  Some people I&#8217;ve discussed this with are against the idea as they already see Valve as having a monopoly over online distribution.  What do you think?  Would you be happy to start spending Steam Points to buy your games and make micro-transaction?  Should other platforms like Impulse use this system to differentiate themselves?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.doolwind.com/blog/would-steam-points-work/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>What Platform Should You Develop Your Next Game For?</title>
		<link>http://www.doolwind.com/blog/what-platform-should-you-develop-your-next-game-for/</link>
		<comments>http://www.doolwind.com/blog/what-platform-should-you-develop-your-next-game-for/#comments</comments>
		<pubDate>Sun, 18 Oct 2009 22:16:00 +0000</pubDate>
		<dc:creator>Doolwind</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Game Development]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Valve]]></category>
		<category><![CDATA[Xbox 360]]></category>

		<guid isPermaLink="false">http://www.doolwind.com/blog/?p=225</guid>
		<description><![CDATA[I&#8217;ve been talking with a number of Indie game developer friends about what platform they should develop their next game for.  There are a number of great platforms available to game developers and this choice of platform is critical to the success of your game.  Many people have a game idea, but aren&#8217;t sure what [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.doolwind.com/images/blog/platforms.jpg"><img class="alignright" title="Game Platforms" src="http://www.doolwind.com/images/blog/platforms.jpg" alt="" width="114" height="111" /></a>I&#8217;ve been talking with a number of Indie game developer friends about what platform they should develop their next game for.  There are a number of great platforms available to game developers and this choice of platform is critical to the success of your game.  Many people have a game idea, but aren&#8217;t sure what platform is best for them, this article will help you in making that decision.</p>
<p><span id="more-225"></span></p>
<p><strong>So, Which Platform!?</strong></p>
<p>The short answer is, it depends.  There&#8217;s no silver bullet when it comes to platforms.  Each has its strengths and weaknesses and the choice depends on the game you are creating.  I have a set of questions below, move the sliders to represent your situation and see the recommendation for platforms.  The further to the right the platform, the better it fits with your situation.  If there&#8217;s a platform I&#8217;m missing you&#8217;d like added, please add a comment.</p>
<p><iframe src="http://www.doolwind.com/blog/platform/platform.html" width="100%" height="850" frameborder="0"></p>
<p>Your browser does not support iframes.</p>
<p></iframe></p>
<p><strong>The Platforms</strong></p>
<p>Now that you have your recommended platforms, I&#8217;ll give some more info on my thoughts on developer for each platform.</p>
<p><strong>iPhone</strong></p>
<p>The iPhone market is saturated with games and is getting worse every month.  It seems nearly every indie game developer I know is making an iPhone game.  My biggest recommendation is to make something small that stands out.  The sales are very top heavy which means you&#8217;ll either make nothing or massive sales.  The biggest issue is that the only real way to get in front of people is to be in the top 50 applications which is extremely difficult due to the market saturation.</p>
<p>The other gotcha is the requirement for both a Mac and learning Objective-C.  There are a number of great engines out there (eg <a href="http://unity3d.com/">Unity</a>) which I&#8217;d recommend using to speed up development.</p>
<p><strong>Console</strong></p>
<p>Unless you have funding, full version console games are almost impossible for an Indie to develop for.  It&#8217;s really hard to get your game accepted by a console manufacturer (Microsoft, Sony, etc) and the certification process can be a nightmare.</p>
<p><strong>PC</strong></p>
<p>PC development is the most open and an easy to break into.  There are many distribution methods (Steam, Impulse, self-publishing) to suit your games needs.  Piracy is one of the biggest threats to your game and building a game that takes piracy into account is a good step forward.  Something as simple as requiring users to login to a central server can help reduce piracy.</p>
<p><strong>Web-Based</strong></p>
<p>Web based games are the best place to get started, particularly if you just want to get a game &#8220;under your belt&#8221;.  It&#8217;s a great way of reaching a wide audience quickly, however don&#8217;t expect too much in either money or respect.  Web-based games are one of the hardest ways to make money from games (at this stage) and tends to have one of the most immature communities of all platforms.  <a href="http://lostgarden.com/2009/07/flash-love-letter-2009-part-1.html">Lost Garden</a> has a great set of articles that discusses generating real money for web-based (primarily flash) games.</p>
<p><strong>XBox Live Arcade</strong></p>
<p>XBLA games are like a cut-down version of a console release.  It&#8217;s much easier to get accepted and get through certification.  There are also less rewards/potential for your game compared to a full version console game.  As the name suggests, XBLA is perfect for smaller &#8220;arcade&#8221; style games.</p>
<p><strong>Multiple Platforms</strong></p>
<p>One recommendation I would make is to start small.  Look at developing a smaller version (or prototype) of your game on one of the low-end platforms (flash or iPhone) to gauge the response to your game.  If it&#8217;s successful, then put the extra time and money into developing a larger version of your game on a higher-end platform.  John Carmack has stated his belief in developing for low-end platforms first.  This helps you focus on the core fun of a game, rather than flashy graphics or other &#8220;next-gen&#8221; features that don&#8217;t necessarily make the game better.</p>
<p><strong>Conclusion</strong></p>
<p>You should now have a better idea of what platform to develop your next game for.  If there&#8217;s a platform I haven&#8217;t discussed that you &#8216;d like to hear about, leave a comment and I&#8217;ll add it to the list.  The important thing to remember is that no platform is perfect.  They each have their own strengths and weaknesses and it&#8217;s critical that you chose the platform that best fits with your game.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.doolwind.com/blog/what-platform-should-you-develop-your-next-game-for/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>What Microsoft Should Do With XNA</title>
		<link>http://www.doolwind.com/blog/what-microsoft-should-do-with-xna/</link>
		<comments>http://www.doolwind.com/blog/what-microsoft-should-do-with-xna/#comments</comments>
		<pubDate>Wed, 13 Feb 2008 02:59:13 +0000</pubDate>
		<dc:creator>Doolwind</dc:creator>
				<category><![CDATA[Game Development]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[XNA]]></category>

		<guid isPermaLink="false">http://www.doolwind.com/blog/?p=91</guid>
		<description><![CDATA[Now that I&#8217;ve discussed why you should be using XNA, I&#8217;d like to look from the other side and talk about what Microsoft should do with XNA to benefit both developers and gamers. XNA is a great opportunity for Microsoft to get even further ahead of Sony in the current generation of consoles; they just [...]]]></description>
			<content:encoded><![CDATA[<p align="left"><img src="http://www.doolwind.com/images/blog/comic/comic-03.jpg" usemap="#Map" align="right" border="0" height="203" width="300" /><br />
<map name="Map" id="Map">
<area href="http://www.squidtank.com" shape="rect" coords="133,170,336,221" /></map>
<p>Now that I&#8217;ve discussed why you <a href="http://www.doolwind.com/blog/?p=87">should be using XNA</a>, I&#8217;d like to look from the other side and talk about what Microsoft should do with XNA to benefit both developers and gamers.  XNA is a great opportunity for Microsoft to get even further ahead of Sony in the current generation of consoles; they just need to make the right decisions to get there.</p>
<p><span id="more-91"></span></p>
<h3><strong>Is XNA the YouTube of games, and do we want it to be?</strong></h3>
<p>I saw a presentation last year from a Microsoft guy who was going on about XNA being the YouTube of games.  I&#8217;ve also heard it thrown around the web a lot with various XNA articles.  It sounds like a great idea, but where is it?  Until there&#8217;s a means of distributing games easily both on PC and Xbox there&#8217;s no way this can be true.  I haven&#8217;t heard any concrete plans for how they are going to do this.</p>
<p>While I&#8217;m a big fan of YouTube, a direct copy is not really feasible for games.  <strong>You can&#8217;t just sit down and watch a game for 1 to 5 minutes</strong>.  Games are interactive and keeping too close to the YouTube style will pigeonhole XNA games into the casual market.  I&#8217;d rather see all types of game being developed.  <strong>The first XNA MMO is going to be interesting</strong>.  XNA really needs to be user driven, more like Digg.  There&#8217;s going to be a LOT of content and it needs to be filtered if the mainstream is going to stay interested.  I see a few basic options for Microsoft here:</p>
<ol start="1" type="1">
<li>Microsoft does all the      filtering, similar to Xbox Live Arcade</li>
</ol>
<p>This means that only the best games get through to mainstream users however it limits the number of games that can be released hamstringing creativity.  As we&#8217;ve seen from XBLA though, it also means that the queues for submission will quickly grow and it may become almost as hard to release a game through XNA as XBLA.</p>
<ol start="2" type="1">
<li>User voted content</li>
</ol>
<p>This style would allow anyone to upload their game and users can &#8220;digg&#8221; or &#8220;bury&#8221; the uploaded games.  <strong>This stops the crap from making it into the public eye</strong>.  Microsoft could make a set of rules for content (explicit material etc) and the $100 Creators Club price tag would keep most people from putting anything bad up as they would be banned.  This allows the most freedom for indie developers as the barrier for entry is reduced.</p>
<ol start="3" type="1">
<li>A hybrid</li>
</ol>
<p>The other alternative is to have a combination of #1 and #2.  Firstly, Microsoft could make a simple check over games that are in the queue to make sure they pass a certain quality level.  Developers would be able to share their games with other Creator Club members while they are in the queue to be processed and could &#8220;vote up&#8221; particular games within the queue.  <strong>Videos and screenshots could be used to &#8220;sell&#8221; the game so the more buzz/hype there is, the sooner it would be reviewed by Microsoft and released</strong>.  Once the game is released, a system like #2 would allow gamers to vote up their favourite games and vote down anything they don&#8217;t like.</p>
<p>So is it YouTube or Digg?  I guess it&#8217;s a bit of both.  Microsoft really wants it to be like YouTube as there is a crazy amount of viewer hours ripe for advertising.  It also makes sense for smaller games which people can play for less than an hour in their spare time.  There also needs to be a Digg style system for filtering out the bad games and keeping the most popular games (based on user feedback) in front of mainstream gamers.</p>
<p><strong>What we really want here is for mainstream gamers on their Xbox to see a list of games in a similar way to how XBLA games are currently displayed</strong>.  Mainstream gamers will be turned off as soon as they waste their time on a terrible game, therefore only games with a large positive number of developers and more hardcore gamers behind it should be shown.  The more the list can look like an extension to XBLA the better.  Gamers should be able to download a demo and choose to buy the games in the same way they currently do for XBLA games.</p>
<h3><strong>Creators Club</strong></h3>
<p>I really like the $100 price tag for the Creators Club.  It keeps people from just playing around and releasing crap.  <strong>It&#8217;s free to develop games on the PC so experimentation can take place there, where it belongs</strong>.  Sharing source code is not an option and I&#8217;m glad that this requirement has been removed (I don&#8217;t think it was ever a long term plan anyway).</p>
<p>We really need the Creators Club community to get behind XNA game releases to keep the white noise away from more mainstream gamers.  If these paid members can be the first step in the filtering process it will save Microsoft a lot of time and will have a flow on effect to assist developers as they develop their own games.  Keeping the $100 price tag will also reduce the anonymity and trolling that occurs on sites like gamedev.net.</p>
<h3><strong>Price Point</strong></h3>
<p>If you have an Xbox Live account, how many MS points do you have just lying around unusable due to the 800 point minimum game purchase?  After some quick investigation I&#8217;ve found that most <strong>people, like me, have about 200-600 points just sitting around unused in their account </strong>(thanks Chen).  This is the perfect opportunity for XNA games to be priced at 50-400 points and pick up this &#8220;spare change&#8221;.  What&#8217;s important is that Microsoft uses the same point system for people buying XNA games as XBLA games.  I haven&#8217;t heard either way how XNA games will be priced, but it&#8217;s important that mainstream gamers can easily buy them.</p>
<h3><strong>World Editor</strong></h3>
<p>To simplify the game creation process, a solid world editor will add a lot of value.  It could be a simple world builder, with a max/maya style viewer and a simple way to load and save the files within XNA.  They should easily be able to add scripting (in C#) and other extras in a later release.  This will allow level designers to create level quickly and easily and have them load easily with something like:</p>
<p>Level level1 = Content.Load(&#8220;level1.lvl&#8221;);<br />
level1.Render();<br />
object mainBoss = level1.GetEntity(&#8220;mainboss&#8221;);</p>
<p><strong> </strong></p>
<h3><strong>Conclusion</strong></h3>
<p>I&#8217;m interested to hear other people&#8217;s thoughts on what they&#8217;d like to see from XNA in the future.  I know distribution is a major issue for many people at the moment so any thoughts on this would be great.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.doolwind.com/blog/what-microsoft-should-do-with-xna/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Why You Should Use XNA</title>
		<link>http://www.doolwind.com/blog/why-you-should-use-xna/</link>
		<comments>http://www.doolwind.com/blog/why-you-should-use-xna/#comments</comments>
		<pubDate>Mon, 07 Jan 2008 08:04:27 +0000</pubDate>
		<dc:creator>Doolwind</dc:creator>
				<category><![CDATA[Game Development]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[XNA]]></category>

		<guid isPermaLink="false">http://www.doolwind.com/blog/?p=87</guid>
		<description><![CDATA[XNA has been around for a while and just recently hit version 2.0 (XNA Game Studio 2.0). It’s now ready for proper use and below is a list of reasons why you should give XNA a try, and even start using it as your primary development environment. Before I begin, I’ll list a few groups [...]]]></description>
			<content:encoded><![CDATA[<p align="left"><img src="http://www.doolwind.com/images/blog/comic/comic-01.jpg" usemap="#Map" align="right" border="0" height="200" width="300" /><br />
<map name="Map" id="Map">
<area href="http://www.squidtank.com" shape="rect" coords="138,167,336,221" /></map>
<p>XNA has been around for a while and just recently hit version 2.0 (XNA Game Studio 2.0).<span>  </span>It’s now ready for proper use and below is a list of reasons why you should give XNA a try, and even start using it as your primary development environment.</p>
<p><span id="more-87"></span></p>
<p align="left"> Before I begin, I’ll list a few groups of people who XNA isn’t really designed for so they can move on and go back to C++ and DirectX (C++DX).<span>  </span>If you’re a hardcore engine developer or you want to become one (eg. <span> </span>the next Carmack) then XNA isn’t for you. <span> </span>The main reasons for this are that low-level, hardcore engines like <em>id tech 5</em> and the source engine will have to be written in C++DX (or OpenGL) for the time being.<span>  </span>The other group are people wanting to make games for anything other than PC and Xbox.<span>  </span>Everyone else (students, small studios, hobbyists) will gain something from at least trying out XNA.<span>  </span>Read on to find out exactly what XNA can do for you.</p>
<map name="Map" id="Map">
<area href="http://www.squidtank.com" shape="rect" coords="138,167,336,221" /></map>
<h3><strong>It’s all about RAD baby</strong></h3>
<p><strong>Rapid Application Development (RAD) is really where it’s at</strong> for games at the moment.<span>  </span>We need to get prototypes up and running in no time at all so the “fun factor” can be sorted out before the first million is sunk into the project.<span>  </span>XNA has this at a number of levels.<span>  </span>Firstly it uses C#, a managed language which takes away a lot of the hassles of software development.<span>  </span>I’ve been using C# almost exclusively over the past few months (in ASP.NET and playing with XNA) and I love it.<span>  </span>If you’ve been through the gruelling hours of fixing access violations and memory leaks (and weren’t the one causing them) then you obviously know your stuff, and you deserve to move onto the next generation of language.<span>  </span>It’s easier to use, cleaner, and feels so much like C++ it’s a breeze to step into.</p>
<p>The second RAD feature of XNA is in the XNA library itself.<span>  </span>Rendering a 2D sprite of 3D model can be done in a few lines of code.<span>  </span>All the hassle and crap of DX is hidden away, and you just load the model and render it.<span>  </span>You still have complete control over how it’s rendered using .fx files (HLSL) however that’s all you need to worry about.<span>  </span>Basically, XNA moves us a step higher in the level of abstraction.<span>  </span>Instead of worrying about <strong>how to get the computer to render a 3D model</strong>, you worry about <strong>how the 3D model should look</strong>.<span>  </span>It’s taking a more user focussed view on the problem of rendering a 3D model, rather than a software development view of how to actually get the 3D data onto the screen.<span>  </span>This is just one example of how much nicer development is using the XNA libraries.</p>
<p>The third RAD feature is the build process.<span>  </span>Most indie’s or hobbyists never worry too much about build processes as they just want to get the basics up and running.<span>  </span>With XNA, they still don’t need to worry about it because there’s a build process already there for them.<span>  </span>Build processes can take up a lot of development time on a medium to large scale project, having the ground work laid out will make life a lot easier for anyone requiring a more complex build process.</p>
<h3><strong>Getting in on the ground floor</strong></h3>
<p>Now for the hardcore coders out there, this is probably enough reason to at least try out XNA.<span>  </span>However, I’d like to look further into XNA and see why this ease of development is not the biggest reason you should be switching over to it.<span>  </span>I have one word for you, Microsoft.<span>  </span>When Microsoft gets behind something, you really notice it, and Microsoft are placing themselves firmly behind XNA.<span>  </span>Managed DX (MDX) disappeared of the radar a while ago and we’ve since learnt that XNA was its replacement.<span>  </span>Anyone who spent any time using MDX may be a little pissed that their time was wasted, however they can rest assured that MS isn’t looking like doing the same thing for XNA.</p>
<p>With the release of XGS 2.0, XNA is now at a point where it can be taken seriously and people can start making “real” games with it.<span>  </span>With networking support, and a simpler way of sharing games with others on XBL, it’s becoming a reality for anyone to start <strong>making games of the same quality as any XBLA game out there</strong> (and actually having them run on the Xbox).<span>  </span>The fact that this has only just become the case now means that we are all standing on the ground floor and there’s only so much room in the elevator to the top.<span>  </span>I can guarantee you from experience that there’s going to be a LOT of people trying to get into the XBL action when it becomes available and being one of the first is going to be the best way to stand out.</p>
<p>So what is the XBL action?<span>  </span>Well, Microsoft is pitching XNA as being the “YouTube for games”.<span>  </span>This sounds kinda cool, as it means that <strong>anyone can release their small game and have millions of people around the world play it, and possibly pay for it</strong>.<span>  </span>This is great news for Microsoft as it’s going to encourage great games, and be another area that the Xbox stand out amongst the other consoles.<span>  </span><span> </span>As with YouTube, this will become very crowded quickly, so getting in their first will prove a valuable way of getting noticed.</p>
<h3><strong>It’s good for your future!</strong></h3>
<p>I’m going to have to put on my cynical hat for this section.<span>  </span>The games industry, for many people, isn’t forever.<span>  </span>Some people reading this may not want to get into the industry, others may only stay for 5 years (the average at the moment), and others still may find themselves unemployed just before Christmas.<span>  </span>While this is part of why the game industry is in trouble at the moment, it’s actually advantageous for people thinking of switching to XNA.</p>
<p>The reason for this is that <strong>your skills are transferrable</strong>.<span>  </span>Working solely on C++ will make it quite hard to find a “real job” out in the business world.<span>  </span>Looking over business jobs, very few are looking for straight C++ programmers.<span>  </span>C# on the other hand (and .NET in general) is in high demand.<span>  </span>Having exposure to C# is going to give you a step up in the event that you find yourself not working in the games industry, for whatever reason.</p>
<p>It’s also inevitable that the games industry will one day move on from C++ into a next generation language.<span>  </span>There are two main reasons for this.<span>  </span>Firstly, as projects grow larger it becomes increasingly difficult to handle such a complex system without having some of the latest features that languages like C# boast.<span>  </span>The second reason is that as we move into a world with crazy numbers of cores to work with (16+), we’re going to have free cores just sitting around with not a lot to do.<span>  </span>The speed limitations of newer languages than C# can be offset by this extra processing power.<span>  </span>Take garbage collection for example.<span>  </span>Would you rather have an extra 100 blades of grass rendered on the horizon, or use a core to do your garbage collection so the performance hit isn’t noticeable?<span>  </span>I don’t see this happening just yet, but it is inevitable, and C# is looking like a good contender for the next language.</p>
<h3><strong>For the naysayers</strong></h3>
<p>I’ve heard quite a bit of opposition to XNA, and C# and I’d like to address some of it now.<span>  </span>Up until recently I wasn’t sold on XNA either, and I’ve had a lot of discussions with people about the pros and cons of languages like C# in the past.<span>  </span>Below is just a quick list of reasons I’ve heard against XNA/C# and some counter arguments:</p>
<p><strong>.NET/C# is just too slow </strong></p>
<p>Version 1.0 of .NET had some performance problems; however a lot of these have been fixed.<span>  </span>I can’t find any specifics of performance comparisons, but I’m hearing it is only 10% slower than C++ in some cases.<span>  </span><strong>C# is NOT interpreted</strong>; it is complied down to IL code and JIT’ed to machine code before being run.</p>
<p>A lot of people are using scripting languages for parts of their gameplay already.<span>  </span><strong>C# is MUCH faster than scripting languages </strong>such as python, LUA or game monkey script.<span>  </span>Games using the Unreal 3 engine are written almost entirely in unreal script.</p>
<p>As with all coding, it’s more about the algorithms used than just the language.<span>  </span>No matter how much faster or slower a language is if you don’t write good, optimized code then you’re never going to hit the 60 fps mark.</p>
<p><strong>Learning XNA will put you at a disadvantage</strong></p>
<p>A big question students will want answered is whether they should learn XNA to get a job in the games industry.<span>  </span>The short answer is yes, but with a caveat.<span>  </span>Every studio I know uses C++DX and so you’ll need to know this if you want a job with them.<span>  </span>If you rock up to an interview knowing on XNA then you’re unlikely to get a job.<span>  </span>However, if you turn up with a lot of XNA knowledge, and a few C++DX to show you know your stuff then you are a in a great position.<span>  </span>Use XNA for rapid development on larger tech demos or an entire game or two.<span>   </span>Just use C++DX for small tech demos to show you understand the tech.<span>  </span></p>
<p><span></span>  The reason for this is that <strong>knowing XNA shows that you know 85% of what’s required for game development</strong>.<span>  </span>You know all the theory behind it, you can write the shaders, and you can write all the gameplay code.<span>  </span>The only thing you’re missing is the last 15% which involves some specific C++ stuff, and the basics of DX.<span>  </span>Also, if you don’t want anything to do with graphics you can take the DX part out of the equation as well which means you know about 90% of what is required for game development by using XNA alone.<span>  </span></p>
<p><span></span>  Many studios have C++ programming tests.<span>  </span>If you can pass these then you can show that you’re a competent programmer.<span>  </span>Personally, I’d look more favourably on a hardcore C# programmer that can also do really well on a C++ test, it shows they are a versatile programmer.</p>
<p>So, in the short term, learning XNA will put you at a slight disadvantage as you’ll need to learn C++DX as well.<span>  </span>However, in the mid to long term, you’ll be at a great advantage.<span>  </span>You can rapidly create games and tech in XNA to show off your skills, and you’ll generally pick up “game programming” faster as you won’t get bogged down as much.<span>  </span>C++DX has a fairly steep learning curve, so using XNA will free you up to just becoming a better game programmer.</p>
<h3><strong>Conclusion</strong></h3>
<p>I’d highly recommend you download the <a href="http://creators.xna.com/Education/GettingStarted.aspx">XGS 2.0</a>, follow the first couple of tutorials and see how easy it is to get a simple 2D sprite and a 3D model working with full <a href="http://www.doolwind.com/blog/?p=85">Xbox 360 controller support</a>.<span>  </span>My next article will be more focussed on where I think Microsoft should be taking XNA in the coming year.</p>
<p>Big thanks to <a href="http://www.squidtank.com">Shauno</a> for doing the comic for this post.</p>
<p><script type="text/javascript"> digg_url = "http://www.digg.com/programming/Why_You_Should_Use_XNA"; </script><br />
<script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.doolwind.com/blog/why-you-should-use-xna/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
	</channel>
</rss>
