<?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>Nazeeh's Little Corner on the Web</title>
	<atom:link href="http://www.nazspace.com/wp/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.nazspace.com/wp</link>
	<description>Game Development Demystified!</description>
	<lastBuildDate>Fri, 04 Sep 2009 04:02:51 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Back from the dead! With a link :)</title>
		<link>http://www.nazspace.com/wp/2009/09/03/back-from-the-dead-with-a-link/</link>
		<comments>http://www.nazspace.com/wp/2009/09/03/back-from-the-dead-with-a-link/#comments</comments>
		<pubDate>Fri, 04 Sep 2009 04:01:45 +0000</pubDate>
		<dc:creator>nazeeh</dc:creator>
				<category><![CDATA[Beginner Game Tutorials]]></category>

		<guid isPermaLink="false">http://www.nazspace.com/wp/2009/09/03/back-from-the-dead-with-a-link/</guid>
		<description><![CDATA[Yes..yes&#8230;I am still alive. Just that I have been a bit busy with a little project called Natal. But I just ran into this really cool link and I just had to share it:
http://www.gamedev.net/reference/art/features/blender1/
Learn how to make game models with the free 3D modeling package Blender.
Enjoy!
]]></description>
			<content:encoded><![CDATA[<p>Yes..yes&#8230;I am still alive. Just that I have been a bit busy with a little project called Natal. But I just ran into this really cool link and I just had to share it:</p>
<p><a href="http://www.gamedev.net/reference/art/features/blender1/">http://www.gamedev.net/reference/art/features/blender1/</a></p>
<p>Learn how to make game models with the free 3D modeling package Blender.</p>
<p>Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nazspace.com/wp/2009/09/03/back-from-the-dead-with-a-link/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Windows 7 Beta 1 is upon us!</title>
		<link>http://www.nazspace.com/wp/2009/01/09/windows-7-beta-1-is-upon-us/</link>
		<comments>http://www.nazspace.com/wp/2009/01/09/windows-7-beta-1-is-upon-us/#comments</comments>
		<pubDate>Sat, 10 Jan 2009 00:17:47 +0000</pubDate>
		<dc:creator>nazeeh</dc:creator>
				<category><![CDATA[Windows Vista]]></category>

		<guid isPermaLink="false">http://www.nazspace.com/wp/2009/01/09/windows-7-beta-1-is-upon-us/</guid>
		<description><![CDATA[Yes ladies and gents. Today I want to talk a bit about my favorite new OS, Windows 7. I am not coming to you as a loyal Microsoft employee trying to sell our newest iteration of Windows. I am here as a dude just excited about a new OS (and I just happen to get [...]]]></description>
			<content:encoded><![CDATA[<p>Yes ladies and gents. Today I want to talk a bit about my favorite new OS, Windows 7. I am not coming to you as a loyal Microsoft employee trying to sell our newest iteration of Windows. I am here as a dude just excited about a new OS (and I just happen to get paid by the company making it – but we’ll ignore that ok?). So why am I excited? </p>
<p>For one, it works. It works really well specially considering it’s a beta. The OS is solid! I am using it at home right now on my machine. I upgraded from Vista x64 and the upgrade went pretty smoothly. It took quite a while, but eventually I was greeted with the new Windows 7 look! Here’s a run down of my initial reaction as I booted it up for the first time:</p>
<p>“hey! look at that! We finally put some graphic at the boot screen above the progress bar! Not sure WHY we didn’t before… but it’s ok. Looks cool”</p>
<p>“Hmm… boots quite a bit faster. Nice work.”</p>
<p>“Whoah! Check out this new Task bar! I got icons on it for the apps I use. I can drag/drop more icons.”</p>
<p>“Ok..that’s neat. I like how when I hover over the active icons (i.e. app running), it has this cool glow on it. Someone is paying attention to some eye candy! Hell…it’s about time! (Yeah… I still quote Starcraft II trailer :/ )”</p>
<p>“!!!! Windows update has what for me??? No way! NO WAY! A pre-release NVIDIA driver for Windows 7? DAMN! it works!” At this point, I near dropped dead from sheer shock. My #1 hair pulling frustration with Vista was Nvidia drivers. To actually have a WORKING driver for the beta blows me away. </p>
<p>The upgrade was awesome! The OS works pretty well and it is <em>snappy</em>! Lots of cool features I have yet to mess with are:</p>
<ul>
<li>Media/document libraries</li>
<li>Home networking features that are supposed to make Windows 7 machines share stuff very easily. That is cool and I really wanted it. </li>
<li>Other UI trickery like dragging windows to edges, etc.</li>
</ul>
<p>Overall, I am quite happy with it. Vista had a rough start and is pretty good now in my opinion. Windows 7 improves on Vista and XP minus the rough start. I truly think people are going to be happy when the install it. Beta 1 should be available sometime in the coming few days to everyone. I’ll make sure to post a link to the download. When I do, get it… just get it. I promise you won’t be disappointed. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.nazspace.com/wp/2009/01/09/windows-7-beta-1-is-upon-us/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Year = New Theme!</title>
		<link>http://www.nazspace.com/wp/2009/01/04/new-year-new-theme/</link>
		<comments>http://www.nazspace.com/wp/2009/01/04/new-year-new-theme/#comments</comments>
		<pubDate>Mon, 05 Jan 2009 06:45:07 +0000</pubDate>
		<dc:creator>nazeeh</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.nazspace.com/wp/?p=266</guid>
		<description><![CDATA[A bit of a belated &#8220;Happy New Year&#8221; to everyone! I decided to do some maintenance work on my blog that I&#8217;ve been putting off for a while. The visible part is the new theme I got going on here. Next on the list is getting some more content on! I am working on it [...]]]></description>
			<content:encoded><![CDATA[<p>A bit of a belated &#8220;Happy New Year&#8221; to everyone! I decided to do some maintenance work on my blog that I&#8217;ve been putting off for a while. The visible part is the new theme I got going on here. Next on the list is getting some more content on! I am working on it :)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nazspace.com/wp/2009/01/04/new-year-new-theme/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Off topic: StarCraft II to be a trilogy?</title>
		<link>http://www.nazspace.com/wp/2008/10/13/off-topic-starcraft-ii-to-be-a-trilogy/</link>
		<comments>http://www.nazspace.com/wp/2008/10/13/off-topic-starcraft-ii-to-be-a-trilogy/#comments</comments>
		<pubDate>Mon, 13 Oct 2008 23:41:05 +0000</pubDate>
		<dc:creator>nazeeh</dc:creator>
				<category><![CDATA[General Gaming]]></category>

		<guid isPermaLink="false">http://www.nazspace.com/wp/2008/10/13/off-topic-starcraft-ii-to-be-a-trilogy/</guid>
		<description><![CDATA[So… looks like according to Kotaku, StarCraft II is going to be released on 3 parts. I was just wondering what you guys think of that? I am a huge StarCraft fan (who isn’t?!) and am waiting anxiously for that game to ship! I was a bit bumped that they will release it as a [...]]]></description>
			<content:encoded><![CDATA[<p>So… looks like according to <a href="http://kotaku.com/5061980/starcraft-ii-single-player-is-a-trilogy">Kotaku</a>, StarCraft II is going to be released on 3 parts. I was just wondering what you guys think of that? I am a huge StarCraft fan (who isn’t?!) and am waiting anxiously for that game to ship! I was a bit bumped that they will release it as a trilogy, but then I realized that I really don’t play the single player portions of most of the games I buy. So it won’t matter as much. Speaking of RTS games… what do are you guys playing out there? It’s still by far my favorite genre even though I SUCK at them :/</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nazspace.com/wp/2008/10/13/off-topic-starcraft-ii-to-be-a-trilogy/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Team Interview &#8211; Tom Miller</title>
		<link>http://www.nazspace.com/wp/2008/09/30/team-interview-tom-miller/</link>
		<comments>http://www.nazspace.com/wp/2008/09/30/team-interview-tom-miller/#comments</comments>
		<pubDate>Tue, 30 Sep 2008 18:33:15 +0000</pubDate>
		<dc:creator>nazeeh</dc:creator>
				<category><![CDATA[Team Interviews]]></category>

		<guid isPermaLink="false">http://www.nazspace.com/wp/2008/09/30/team-interview-tom-miller/</guid>
		<description><![CDATA[This week I am very excited to bring you a really fun team interview! Tom Miller is one of those people that needs little introductions if you’ve been following the world of Managed Game Development at all. Remember all that stuff about Managed DirectX? That was Tom’s work, he brought that to reality. So I [...]]]></description>
			<content:encoded><![CDATA[<p>This week I am very excited to bring you a really fun team interview! Tom Miller is one of those people that needs little introductions if you’ve been following the world of Managed Game Development at all. Remember all that stuff about Managed DirectX? That was Tom’s work, he brought that to reality. So I asked him to spare some of his time to answer my interview questions, and here’s what he had to say.</p>
<p><strong>Who are you and what do you do at XNA Game Studio?</strong></p>
<p>Well, I’m Tom Miller.&#160; What do I do here?&#160; I suppose you could say I type a lot mainly!&#160; I’ve worked on almost every area of the product at least briefly aside from the Visual Studio integration stuff (that stuff scares me a little).&#160; I’ve developed a good many of the features you as a user have probably dabbled with!&#160; I’ve written a couple of books, sometimes rant on my blog, listen to a lot of music, play a lot of games, and generally don’t have enough time to do all the things I want to do.&#160; I’m trying really hard not to recite Joe Walsh’s Ordinary Average Guy here.&#160; I also considered answering every question here with lyrics from random songs, but that would take entirely too long, and I’m feeling lazy today.</p>
</p>
<p><strong>What did you work on before joining XNA Game Studio?</strong></p>
<p>My tan?&#160; Seriously though, directly before coming here I worked on the DirectX team.&#160; I got hired on that team to write samples for “DirectX for Visual Basic” (dxvb), but shortly after that migrated to actually owning dxvb.&#160; Right after DirectX8.0 shipped I got wind of this new nifty thing called “C#” and had a prototype of “DirectX.NET” up and running and showing it off at GDC within a few weeks.&#160; After a couple major overhauls and a renaming of the project to “Managed DirectX” we shipped DirectX9.0 with the first managed support for DirectX.&#160; Before that I had a wide variety of jobs here working on Visual Basic 6, Office, and various internal projects.&#160; I’ve been in the “games” area for the last 9 years or so, and everything before that is a bit fuzzy. </p>
</p>
<p><strong>How did you join the XNA Game Studio team? Tell the story!</strong></p>
<p>There I was sitting in my office.&#160; The sun was shining outside.&#160; Birds were chirping.&#160; Harps and violins were playing soft music.&#160; I could be misremembering some of this though.&#160; I was approached by the development manager of the XNA Game Studio team with a proposition.&#160; They were wanting to create a managed framework for making games on Windows and Xbox 360 and they wanted to do it fast.&#160; Since I was really the only person in the company with a significant amount of experience in this area (I had already developed the entire Windows version of this framework, written a couple books on the subject, etc), they asked me to come help with this new effort.&#160; Anyone who’s seen the original Managed DirectX, and to be more specific, the “Whidbey Beta” of Managed DirectX that was never released will recognize a lot of features within XNA Game Studio.&#160; We took that experience and enhanced it, made it work on the Xbox 360, and now Zune as well.</p>
</p>
<p><strong>What features did you work on for XNA Game Studio 1.0 and 2.0?</strong></p>
<p>In 1.0 I worked almost exclusively on the “framework” (the portion of the product where the API’s you call talk to the hardware behind the scenes).&#160; I did the original implementation of the entire graphics area, audio, storage, input, and security.&#160; Hmm, actually, I guess that covers every area in our 1.0 release.&#160; Luckily we had people like Shawn, Eli and Ito to come help me fix all the bugs I introduced implementing those features.&#160; In 1.0 I also realized that it was entirely possible to go months without a day off and hardly realize the time had gone by because of how passionate you were about the product.</p>
</p>
<p>In 2.0 I didn’t have nearly as much to do though, so that was a relief!&#160; I focused mainly on what sound like minor graphics improvements, but were in reality a lot more work than they appeared.&#160; Things like fixing render targets to be more consistent, implementing the ability to use multiple render targets on Xbox 360, correctly handling predicated tiling with various render target combinations (I still have nightmares about render targets), and removing the need for the developer to worry about device resets and resolution changes (even though I still see people trying to handle this manually).&#160; I also dabbled in other areas as well, but those were my big tasks.</p>
</p>
<p>In 3.0, I barely worked on the framework at all though!&#160; I did stuff all over in other areas working on features I’m not even sure we have announced yet, but I’m sure you’ll think they’re awesome when you see them.</p>
</p>
<p>Stealing a portion of Shawn’s interview where he considers what portion of code he’s written, which has been executed the most times.&#160; While I probably couldn’t narrow it down, it is impossible to make an XNA Game Studio game without running at least one line of code I’ve written.&#160; I’d probably have to say the creation of the graphics device has probably been executed the most.</p>
</p>
<p><strong>What’s your favorite part of XNA Game Studio, and why?</strong></p>
<p>Seems like a kind of a trick question.&#160; Like asking a parent “Which kid do you love the most?” (the one who cleans up after themselves best), or “Does this make me look fat?” (if you have to ask, then yes).&#160; I could say Graphics, but then I’m pretty sure Audio would stop talking to me (they’re having a bit of a turf war) and we wouldn’t want that to happen now would we?&#160; I love all the features equally!&#160; Except render targets that is, I still have a love/hate relationship with them.</p>
</p>
<p><strong>What is your favorite Xbox game? PC game?</strong></p>
<p>PC game is easy being World of Warcraft.&#160; I’ve spent more time on that than any other game.&#160; Starcraft comes in a close second and Diablo 2 probably third.&#160; I notice a trend here!&#160; Xbox is a bit harder though.&#160; I’ve liked the games such as Guitar Hero and Rock Band.&#160; I liked all the Dance Dance Revolution games.&#160; I liked Condemned and Lost Oddysey.&#160; It’s hard to narrow down just a single game there that I would call my “favorite”.&#160; If you put a gun to my head, probably Portal. (Yes, I know that is on the PC as well, but I played it on Xbox)</p>
</p>
<p><strong>Share some tips and tricks for using XNA Game Studio</strong></p>
<p>Tips and tricks are hard for me actually.&#160; Despite writing so much code that is in the product, I rarely have the free time to actually *use* the product.&#160; Every time I think I’ll have time to sit down and right something using XNA Game Studio, some other feature comes up that needs implementing, or a bug that needs fixing, and I get side tracked again.&#160; So my tips and tricks would have to include actually making time to use the thing!</p>
</p>
<p>Before I joined the team though, I (like so many others) had the dream of being a game developer.&#160; While that dream no longer lurks within me, the thing I discovered while I had it was starting a game is way easier than finishing one.&#160; You start out with a grand idea and start writing code and it is going to be the greatest game ever, and then something happens.&#160; Maybe you don’t have any artistic talent and don’t know anyone who is an artist and your game looks “ugly” and it frustrates you.&#160; Maybe you’re stuck with a particularly hard development concept required for your game.&#160; Something happens that is an obstacle to you and finishing your game and the project slowly fades away before finally dying.&#160; Don’t let this be you.&#160; Your ideas are worth saving!&#160; We have a vibrant community that is growing.&#160; If you’re stuck, ask for help.&#160; Finishing a single game is more rewarding that starting a million different ones.</p>
</p>
<p><strong>Last words?</strong></p>
<p>Years ago when I started “DirectX.NET” one of my goals was to open up game development to the masses.&#160; I wanted to see games being written for home consoles, I wanted to see games being written for computers, I wanted to see games being written for everything by everyone.&#160; A lot of people told me I was crazy and it would never happen.&#160; The performance wasn’t good enough, no one would open up a console for anyone to write games for them, plenty of reasons why it couldn’t happen.&#160; Yet here we are, and it is happening.&#160; It’s been a long time coming, and I for one can’t wait to see where we go next (even if I do already have a pretty good idea).</p>
</p>
<p>Actually, that’s a pretty boring set of last words.&#160; How about something more exciting like dishabiliophobia.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nazspace.com/wp/2008/09/30/team-interview-tom-miller/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Understanding Zune Development</title>
		<link>http://www.nazspace.com/wp/2008/09/30/understanding-zune-development/</link>
		<comments>http://www.nazspace.com/wp/2008/09/30/understanding-zune-development/#comments</comments>
		<pubDate>Tue, 30 Sep 2008 18:06:32 +0000</pubDate>
		<dc:creator>nazeeh</dc:creator>
				<category><![CDATA[XNA Game Studio]]></category>

		<guid isPermaLink="false">http://www.nazspace.com/wp/2008/09/30/understanding-zune-development/</guid>
		<description><![CDATA[With the upcoming release of XNA Game Studio 3.0 (it is currently in Beta), one of the big features of the release is the ability to write your own games on a Zune device. This is a very exciting prospect for a lot of people as well as the XNA Game Studio dev team. When [...]]]></description>
			<content:encoded><![CDATA[<p>With the upcoming release of XNA Game Studio 3.0 (it is currently in <a href="http://creators.xna.com/en-us/3.0beta_mainpage">Beta</a>), one of the big features of the release is the ability to write your own games on a <a href="http://www.zune.net/">Zune</a> device. This is a very exciting prospect for a lot of people as well as the XNA Game Studio dev team. When we first released Game Studio Express, we didn&#8217;t know what to expect as far as the type and quality of games people would make. I remember sitting in a big room with a Xbox hooked up to a nice TV about to see demos of games from the first <a href="http://www.dreambuildplay.com/main/default.aspx">Dream.Build.Play</a> contest. Boy&#8230; seeing games like Dishwasher and others totally took us by storm! So now that we have Zune as another platform, I want to make sure you guys have as much as you need to blow our minds again! So&#8230; what&#8217;s the deal with developing a game for the Zune?</p>
<h3>Understanding the Device</h3>
<p>The Zune player, while comes in different form factors, has the same capabilities across the board except for the storage size it has. All Zune devices have the following characteristics:</p>
<ul>
<li>A screen resolution of 240&#215;320 pixels. This is regardless of the physical size of the device. The resolution is the same. </li>
<li>An internal storage medium that is either flash or hard drive based. </li>
<li>The biggest size game you can create is 2GB. </li>
<li>The amount of memory available for your game in total is <strong>16MB</strong>. This includes your code in memory, data, textures, sounds, etc. Take away some memory for the XNA Game Framework and you realistically have around 12MB of memory to work with. </li>
</ul>
<p>So what does this mean to you as an aspiring Zune game developer? Well&#8230; the most obvious factor you have to consistently keep in mind is that 16MB of available memory. If you don&#8217;t take that into account and just code away, I guarantee you that your game will run out of memory pretty quickly. </p>
<h3>Memory on the Zune</h3>
<p>As I mentioned above, you have a total of 16MB of memory to work with for your Zune game. If left unchecked, your game will probably run out of memory leaving you quite unhappy. This will manifest itself in one of many ways including Out of Memory Exceptions or Out of Video Memory Exception. You see one of those bad boys, and you know you&#8217;re in trouble. So let&#8217;s see what kind of things can cause this evil to happen!</p>
<p>A common scenario you might find yourself in is if you write a game on Xbox and/or Windows and just directly port it to Zune via the <strong>Convert to Zune</strong> feature of our project system. The game will probably build just fine, you&#8217;ll do some quick fixes to scale your textures down to fit the Zune screen. You&#8217;ll hit F5 and the game will launch on the Zune and things will look nice and happy. You&#8217;ll think that the XNA Game Studio team are a bunch of amazing geniuses to enable something so cool to be so easy. Well&#8230; until your game crashes and you start to call us some really bad names. </p>
<p>So what happened? Is the XNA Game Studio team a bunch of n00bs? In certain games, yes&#8230;they are! But in coding, so not! Here&#8217;s what happened:</p>
<p><strong>Textures..Textures..Textures</strong></p>
<p>Your game, the one you initially created on Windows or Xbox, is probably using some nice, big textures. Windows and Xbox have way..way..waaaaaay more memory than their little brother the Zune. So if you have a texture that is say 512&#215;512 in dimensions in your game, that is would come out to approx 1/2 MB of memory. </p>
<p>To calculate the size of a texture in memory, the formula is:</p>
<p>Texture has no transparency: width x height x 2bytes</p>
<p>Texture has transparency (alpha channel): width x height x 3bytes</p>
<p>So right there, you just ate 1/2 MB of your 16MB of memory. </p>
<p>So right there, that’s your first clue why you ran out of memory. You have to be very careful about the size of the textures you’re loading. And no, scaling the texture in game doesn’t solve that! You have to scale down the actual texture and then build the game. </p>
<blockquote><p><font color="#b0b0b0"><strong>Tip: Keep the sizes of your textures small! If you don’t need transparency, don’t use it. Re-use textures as much as you can. </strong></font></p>
</blockquote>
<p>Another area you can optimize is animations in your game. 2D animations are usually created using sprite sheets (see my <a href="http://www.nazspace.com/wp/2007/12/10/animated-textures/">post</a> on the topic). Since such animations are created using frames of equal size usually, that means you can end up with a pretty big texture just for an animation. To get around that, you might need to approach it a bit differently. Things to consider:</p>
<ol>
<li>Instead of storing all the frames in your animation, start storing only the the parts that actually move and animate them over the static parts. This way your frames don’t have to be of equal size and can drastically reduce the size of your texture strip. </li>
<li>Animations don’t have to be done via texture strips. Borrowing from the 80s style of game development (which makes sense since they had similar restrictions), you can animate stuff by using static textures and compositing them over each other. Check out this <a href="http://www.youtube.com/watch?v=xOCRCEAhluo">video</a> to get an idea of what I am talking about. See how the boss is just a set of textures that are moved around to give the animation? Much smaller in size than animating the boss the usual way. </li>
</ol>
<p>How you create your world is another area you want to focus on. In Windows/Xbox, you can use relatively hefty textures for your backdrops and so forth. Try that on Zune and you’re taking away from your memory budget. Consider using Tile Maps (I just started a <a href="http://www.nazspace.com/wp/2008/09/23/creating-your-world/">post</a> about this) for your world. They use much less memory and encourage reuse of textures. </p>
<p>I was talking to <a href="http://www.nazspace.com/wp/2008/01/30/team-interview-yuichi-ito/">Yuichi Ito</a> about this subject last week, and he actually told me this story of some artist he was working with back in the day. He said the guy knew he had little memory to work with but wanted the game to look good still. So he had to improvise. He started using the same texture he used for trees in the background for the hair on the characters! Just changed the color. No one noticed ;) You’d be surprised how much you can get away with and people won’t notice. </p>
<p>Yet another area you want to look into is particle effects. If you have any in your game, make sure you’re not using a separate texture for every particle color you’re using. Use a master white texture and then use the Tint color argument of SpriteBatch.Draw to color them. </p>
<p><strong>Audio and Music</strong></p>
<p>Audio and music in your game is very much like textures. So they need the same amount of focus from you or else you’ll hit the memory barrier yet again. Audio gets loaded in memory to be played, so the bigger it is, the more memory it will eat up. So use lower quality audio for your Zune games! You can read all about audio in general in <a href="http://www.nazspace.com/wp/2008/02/11/team-interview-eli-tayrien/">Eli’s</a> blog post about it right <a href="http://blogs.msdn.com/etayrien/archive/2008/09/22/audio-input-and-output-formats.aspx">here</a>. </p>
<p>Smaller Audio == more memory for your game! </p>
<p><strong>Under the Hood</strong></p>
<p>XNA Game Studio on the Zune runs using the <a href="http://en.wikipedia.org/wiki/.NET_Compact_Framework">.NET Compact Framework</a> (NetCF). NetCF, while quite similar to its bigger brother on Windows, it’s not quite the same internally. Desktop .NET has a lot more memory and CPU power to work with, while NetCF doesn’t. So certain measures had to be taken to ensure good performance on the target platforms. This means some features are less <em>efficient</em>&#160; than they are on the desktop. So how does this affect us while we create Zune games?</p>
<p>Most of the content you can create on a Zune game has both a Managed object and a native resource attached to it. For instance, a Texture has both a Texture2D object (the managed one) and an underlying Texture resource that is in Zune native land. The managed object references that native resource and wraps it. This way you get the nice looking managed objects without having to worry about the underlying implementation. </p>
<p>So when you actually load a Texture2D object, NetCF sees a small object being loaded, the managed object that represents the Texture. It doesn’t see the huge native resource that is also loaded by that texture object. As far as NetCF is concerned, your Texture2D object is only a few bytes large and therefore is not a priority when it has to do garbage collection. But we know better! If anything, that object better get collected as soon as possible since it’s actually pretty large. NetCF disagrees though :) So you need to lend a helping hand.</p>
<p>When you’re done with textures you were using, you need to either call <strong>Content.Unload </strong>to unload all the content that was previously loaded by your content manager or call Dispose on that texture yourself. You can make this a bit easier on yourself by creating a new instance of <strong>ContentManager </strong>in your code to load specific textures you know you’ll want to get rid off soon. You can have more than one <strong>ContentManager</strong> in your game, it’s totally fine. Same applies to things like Audio and others. </p>
<blockquote><p><font color="#b0b0b0"><strong>Clean up after yourself! Don’t rely on Garbage Collection to do the right thing for you!</strong></font></p>
</blockquote>
<p>Here’s another interesting implementation detail for you to keep in mind. When you load a Texture in memory, ContentManager will load it in system memory first, then copy it to Video memory. Guess what? In Zune, System and Video memory are one of the same! So when you load a Texture that is 1MB in memory size, you are actually using 2MB of memory to finish the operation. The first 1MB though will get garbage collected when more memory is needed. But keep that in mind since if you have 4MB of memory available, you will not be able to load 4 x 1MB textures because of this. You’ll only be able to load 3. </p>
<p><strong>Debugging the Issues</strong></p>
<p>So how do you debug memory issues on the Zune? When we would talk to people about this topic for Xbox 360 development, we usually would just tell people to use performance profiling tools on Windows against a Windows build of the same game. Since Windows and Xbox 360 are relatively close to each other, you can actually spot the issues on Windows using the more advanced tools and can fix them for the Xbox 360. Can’t really do that for the Zune :/ </p>
<p>The Zune is severely dwarfed in power when compared to a PC. So perf issues that affect the Zune probably won’t appear on Windows in any obvious way. Sure, you can try, but I doubt you’ll get much helpful information. But there are tools that can still help you somewhat. We provide the Remote Performance Monitor tool (RPM) that can be used to tell you how much memory you’re using by your game and so forth. </p>
<p>To use RPM, launch it from your Start Menu (Microsoft XNA Game Studio 3.0-&gt;Tools). Get your Zune device hooked up and the game deployed on it (but not running). Then: </p>
<ul>
<li>Click on the Launch application button in the UI: <a href="http://www.nazspace.com/wp/wp-content/uploads/2008/09/image17.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="image" border="0" alt="image" align="left" src="http://www.nazspace.com/wp/wp-content/uploads/2008/09/image-thumb16.png" width="140" height="76" /></a> </li>
</ul>
<p>&#160;</p>
<p>&#160;</p>
<p>&#160;</p>
<ul>
<li>Pick your Zune device from the list and then enter the name of the game you deployed: </li>
<li><a href="http://www.nazspace.com/wp/wp-content/uploads/2008/09/image18.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.nazspace.com/wp/wp-content/uploads/2008/09/image-thumb17.png" width="442" height="197" /></a> </li>
<li>Hit the Ok button. Your game should launch on the Zune. </li>
<li>Now we check the GC Heap by clicking on the “GC Heap” button on the toolbar, you’ll see a window similar to this one: </li>
<li><a href="http://www.nazspace.com/wp/wp-content/uploads/2008/09/image19.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.nazspace.com/wp/wp-content/uploads/2008/09/image-thumb18.png" width="466" height="231" /></a> </li>
<li>This already provides you with good information. You can see how many objects your code is running at the moment and the size in KB of all of them. This way you can see which objects are getting too big and might need to get on a diet. </li>
<li>Another area you might want to look at is the JIT section of the main window UI: </li>
<li><a href="http://www.nazspace.com/wp/wp-content/uploads/2008/09/image20.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.nazspace.com/wp/wp-content/uploads/2008/09/image-thumb19.png" width="674" height="104" /></a> </li>
<li>This will tell you how much space your code is taking up in memory. Another data point that might help you realize you may need to reduce the size of your code. Unless you’ve written your game in a very horrible way, I don’t think you’ll have much to optimize here though. </li>
</ul>
<h3>In Conclusion</h3>
<p>Developing games on the Zune is indeed a very exciting thing! We can’t wait till we see the kind of games people will come up with. The experience of developing a game the right way can be quite challenging but also rewarding. So get started on those games and let us know how we can help you out! </p>
]]></content:encoded>
			<wfw:commentRss>http://www.nazspace.com/wp/2008/09/30/understanding-zune-development/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Ninjas, Pandas and Tennis?!</title>
		<link>http://www.nazspace.com/wp/2008/09/29/ninjas-pandas-and-tennis/</link>
		<comments>http://www.nazspace.com/wp/2008/09/29/ninjas-pandas-and-tennis/#comments</comments>
		<pubDate>Mon, 29 Sep 2008 17:31:26 +0000</pubDate>
		<dc:creator>nazeeh</dc:creator>
				<category><![CDATA[XNA Game Studio]]></category>

		<guid isPermaLink="false">http://www.nazspace.com/wp/2008/09/29/ninjas-pandas-and-tennis/</guid>
		<description><![CDATA[You know… I still remember when I first joined this team back in 2005. Back then, the entire team could fit around one conference table and leave a few chairs open. Most of what we knew was that we were called the “XNA Team”. What are we going to do? Still not sure. We had [...]]]></description>
			<content:encoded><![CDATA[<p>You know… I still remember when I first joined this team back in 2005. Back then, the entire team could fit around one conference table and leave a few chairs open. Most of what we knew was that we were called the “XNA Team”. What are we going to do? Still not sure. We had a lot of things on the table and had to pick the most strategic one. Finally we decided to go after XNA Game Studio. “Let’s open up game development to the masses! Let the beginners/amateurs be able to write their own games!”. Hell…it’s about time (name the reference!). Fast forward to today, and we start seeing games like this one being made with our stuff!</p>
<p>This game is one of the entries for the <a href="http://www.dreambuildplay.com">Dream.Build.Play</a> contest this year. Wow… just wow! Stuff like this truly blows us away and makes coming to work every morning a pleasure! So thank you people! You rock beyond words! I leave you with the awesome trailer for <a href="http://www.battletennis.com/">BattleTennis</a>!</p>
<div style="padding-bottom: 0px; margin: 0px auto; padding-left: 0px; width: 432px; padding-right: 0px; display: block; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:312f789e-6c21-4cd0-bbf4-68d5b0460237" class="wlWriterEditableSmartContent">
<div><embed src="http://images.video.msn.com/flash/soapbox1_1.swf" quality="high" width="432" height="364" wmode="transparent" type="application/x-shockwave-flash" pluginspage="http://macromedia.com/go/getflashplayer" flashvars="c=v&#038;v=7cacdd73-c857-4e70-812e-f9a2a76d829f&#038;ifs=true&#038;fr=shared&#038;mkt=en-US&#038;from=writer&#038;mkt=en-US"></embed></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.nazspace.com/wp/2008/09/29/ninjas-pandas-and-tennis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creating your World</title>
		<link>http://www.nazspace.com/wp/2008/09/23/creating-your-world/</link>
		<comments>http://www.nazspace.com/wp/2008/09/23/creating-your-world/#comments</comments>
		<pubDate>Tue, 23 Sep 2008 20:24:08 +0000</pubDate>
		<dc:creator>nazeeh</dc:creator>
				<category><![CDATA[Beginner Game Tutorials]]></category>

		<guid isPermaLink="false">http://www.nazspace.com/wp/2008/09/23/creating-your-world/</guid>
		<description><![CDATA[Today I want to talk to you about one of the important subjects of game development. Creating your world. Your game lives in some world (usually), how you design and build that world is something you want to think about early on regardless if it’s a 2D or 3D game. Since we’re still learning, let’s [...]]]></description>
			<content:encoded><![CDATA[<p>Today I want to talk to you about one of the important subjects of game development. Creating your world. Your game lives in some world (usually), how you design and build that world is something you want to think about early on regardless if it’s a 2D or 3D game. Since we’re still learning, let’s focus on 2D first. This will be a mini series of posts that will walk you through creating a 2D world, the tools you can use and how we can code it up in our game. We’ll even touch on some semi-advanced features of XNA Game Studio such as custom content pipeline extensions. Don’t be scared now! It really sounds way scarier than it actually is. So let’s get started!</p>
<h2>So what is a 2D world?</h2>
<p>In a 2D game, a world is really the map you’re playing on. Let’s have a look at some examples:</p>
<p><img style="display: block; float: none; margin-left: auto; margin-right: auto" alt="super-mario-bros.jpg" src="http://mrharry.files.wordpress.com/2007/08/super-mario-bros.jpg"></p>
<p>Here’s a classical screenshot of Super Mario Bros. You can see that the world is the sky, pipes, clouds, bricks, etc that Mario is running around in. </p>
<p><img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://retrojuegos.files.wordpress.com/2006/09/zelda_a_linkgba.jpg"></p>
<p>Here’s another one. This is from Zelda, a game that is so popular that people think I am wasting their oxygen because I never played it or got into it :/</p>
<p>How are such worlds created? Well… that’s the easy part :)</p>
<h2>Creating a 2D world</h2>
<p>These worlds are created using a technique a lot of us learned at childhood: Tiles! Yep… that’s all they are. The world is composed of a set of tiles that are arranged on a grid to give the final look. So to create a world like the one in the Mario screenshot above, you need a tile that is totally blue in color for the sky, one that looks like bricks for the ground, etc. You then just lay them next to each other to create the world you want. Load that up in the game and there you go! You got a world! Easy eh? </p>
<p>I’ll explain a bit more! I’ll create two tiles now, one for a sky and another for green ground:</p>
<p><a href="http://www.nazspace.com/wp/wp-content/uploads/2008/09/image.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.nazspace.com/wp/wp-content/uploads/2008/09/image-thumb.png" width="73" height="73"></a> <a href="http://www.nazspace.com/wp/wp-content/uploads/2008/09/image1.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.nazspace.com/wp/wp-content/uploads/2008/09/image-thumb1.png" width="76" height="74"></a> </p>
<p>Simple and so not pretty, but will have to do. To create a world that has a sky and a green ground, I can just tile the green ones next to each other to form the ground, then the blue ones to form the sky:</p>
<p><a href="http://www.nazspace.com/wp/wp-content/uploads/2008/09/image2.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.nazspace.com/wp/wp-content/uploads/2008/09/image-thumb2.png" width="239" height="240"></a> </p>
<p>See? A perfectly ugly world but a world nonetheless! All by having only two tiles and just placing them on a grid (this one is a 10&#215;10 grid by the way). So to create such a world in code, you would load up those two textures and then using a loop, position them next to each other in the order required to show your world. We’ll get to the code later though. </p>
<h2>The Tools!</h2>
<p>So how do you design such a world anyway? Surely you didn’t think I would suggest that you would do it via code! You need a designer! I’ve done some research and found a really cool tool that you can use to create such worlds very easily! The tool is called <a href="http://tilestudio.sourceforge.net/">Tile Studio</a>. It’s open source and free and works <em>really </em>well. </p>
<p>Let’s dive right in and see how we can use it to create my ugly world above, shall we? </p>
<p>Launch up the app! You should be presented with this window:</p>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://www.nazspace.com/wp/wp-content/uploads/2008/09/image3.png" width="497" height="416"> </p>
<p>The first thing you want to do is create a couple of tiles that you can use to draw your world with. Right off the bat, the application will be in tile edit mode and you have a new tile ready to be created right there. So I’ll create a blue tile first:</p>
<p>Pick the Flood Fill tool</p>
<p><a href="http://www.nazspace.com/wp/wp-content/uploads/2008/09/image4.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.nazspace.com/wp/wp-content/uploads/2008/09/image-thumb3.png" width="103" height="163"></a> </p>
<p>then pick the color you want to use from the color picker on the right. Then click on the gray tile in the middle of the editor to fill it with that color. Mine looks like this:</p>
<p><a href="http://www.nazspace.com/wp/wp-content/uploads/2008/09/image5.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.nazspace.com/wp/wp-content/uploads/2008/09/image-thumb4.png" width="261" height="233"></a> </p>
<p>Now we do the same thing but for a ground tile which will be green. But first we add a new tile by hitting Ctrl+N (or via the menu Tile-&gt;Add New Tile). You’ll get another Gray blank tile to work with. Pick the green color and fill it in. </p>
<p>If you look at the bottom left corner of the editor, you should see all the tiles you have created at the moment lined up next to each other in a horizontal strip:</p>
<p><a href="http://www.nazspace.com/wp/wp-content/uploads/2008/09/image6.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.nazspace.com/wp/wp-content/uploads/2008/09/image-thumb5.png" width="209" height="105"></a> </p>
<p>Cool! We got ourselves two tiles to work with. Now let’s create a world! To do that, you need to create a new map. Click on the New Map button on the toolbar:</p>
<p><a href="http://www.nazspace.com/wp/wp-content/uploads/2008/09/image7.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.nazspace.com/wp/wp-content/uploads/2008/09/image-thumb6.png" width="168" height="38"></a> </p>
<p>When you click on it, you’ll get the New Map window asking you what size should the map be in tiles:</p>
<p><a href="http://www.nazspace.com/wp/wp-content/uploads/2008/09/image8.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.nazspace.com/wp/wp-content/uploads/2008/09/image-thumb7.png" width="235" height="220"></a> </p>
<p>I gave it a name, Level1, and set it to be 10 by 10 tiles large. I wouldn’t worry too much about the size now, you can add rows/columns later easily. This is what the map editor looks like:</p>
<p><a href="http://www.nazspace.com/wp/wp-content/uploads/2008/09/image9.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.nazspace.com/wp/wp-content/uploads/2008/09/image-thumb8.png" width="367" height="294"></a> </p>
<p>A nice blank map for us to use! To draw on it, you just click on one of the tiles at the bottom left corner of the editor and click anywhere on the map to place that tile there. I started with the ground:</p>
<p><a href="http://www.nazspace.com/wp/wp-content/uploads/2008/09/image10.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.nazspace.com/wp/wp-content/uploads/2008/09/image-thumb9.png" width="271" height="283"></a> </p>
<p>and then did the same with the sky to get to the final world:</p>
<p><a href="http://www.nazspace.com/wp/wp-content/uploads/2008/09/image11.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.nazspace.com/wp/wp-content/uploads/2008/09/image-thumb10.png" width="274" height="288"></a></p>
<p>Awesome! We created a world!! Take a few moments to enjoy that fact before you realize “oh…now what?! how do I get this in my game!”. Don’t sweat it… I got you covered!</p>
<h2>Exporting the Map </h2>
<p>Up to this point, figuring out how to use this editor was a piece of cake! Getting to know how to export the world though, that took some time. But I am here to save you the hassle. Usually the way tile maps are exported is in the form of a number array. Let me explain.</p>
<p>First thing you would do is give indices to the tiles in your tile strip. The tile strip that will be generated by our example looks like this:</p>
<p><a href="http://www.nazspace.com/wp/wp-content/uploads/2008/09/image12.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.nazspace.com/wp/wp-content/uploads/2008/09/image-thumb11.png" width="64" height="33"></a> </p>
<p>So the first tile would be index 0 and the next one index 1. </p>
<p>Then the map itself is just an 10&#215;10 array of integers that shows where each tile is placed. Would look roughly like this:</p>
<p><font face="Courier New">0 0 0 0</font></p>
<p><font face="Courier New">0 0 0 0</font></p>
<p><font face="Courier New">0 0 0 0</font></p>
<p><font face="Courier New">1 1 1 1</font></p>
<p><font face="Courier New">1 1 1 1</font></p>
<p>This makes it easy to use code to loop through the array, and draw the correct tile by referencing the index. So how do we generate something like this for our map? </p>
<p>I expected tile studio to generate something like this automatically, but turns out that they wanted to be very flexible so instead, they gave you a Tile Definition Language (TSD) that you can use to tell Tile Studio how to format the output. Long story short, I wrote a small script in TSD to output a map in XML for easy parsing :) </p>
<p>Download the script from <a href="http://www.nazspace.com/f/xml.tsd">here</a> (xml.tsd).</p>
<p>Take the file you just downloaded and copy it in the folder that contains the TS.exe (Tile studio application’s folder). </p>
<p>Now go back to Tile studio and let’s export the map:</p>
<ul>
<li>First we save the project by clicking File-&gt;Save. Save it in a folder of its own.
<li>Click on Code-Code Generation Settings</li>
</ul>
<p><a href="http://www.nazspace.com/wp/wp-content/uploads/2008/09/image13.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.nazspace.com/wp/wp-content/uploads/2008/09/image-thumb12.png" width="409" height="310"></a> </p>
<ul>
<li>Pick the <strong>xml</strong> option for the list as shown (that’s the TSD file we just copied there). Then hit Ok.
<li>Make sure that the output is going to be generated in the project’s folder:
<li><a href="http://www.nazspace.com/wp/wp-content/uploads/2008/09/image14.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.nazspace.com/wp/wp-content/uploads/2008/09/image-thumb13.png" width="244" height="138"></a>
<li>Now you’re ready to generate the code! Hit F10 or do it through the above menu.</li>
</ul>
<p>Tada! Map data generated! Go look in your project’s folder, mine looks like this:</p>
<ul>
<li><a href="http://www.nazspace.com/wp/wp-content/uploads/2008/09/image15.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.nazspace.com/wp/wp-content/uploads/2008/09/image-thumb14.png" width="397" height="167"></a> </li>
</ul>
<p>As you can see, we have a file called Tiles1.xml and a folder called Content which has one image in it called Tiles1.bmp which is a vertical image strip of all the tiles you have. </p>
<p>Let’s take a quick look at the Tiles1.xml file that was created:</p>
<p><a href="http://www.nazspace.com/wp/wp-content/uploads/2008/09/image16.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.nazspace.com/wp/wp-content/uploads/2008/09/image-thumb15.png" width="557" height="260"></a> </p>
<p>See what it looks like? Just some simple XML that defines every tile on the map by it’s X and Y positions and which tile it uses. First &lt;MapTile&gt; node for instance has the first tile at position X=0 and Y=0 and uses TileNumber=1.</p>
<blockquote><p><strong>Note: TileNumber is not Zero based! That means tile number 1 is TileNumber 1. So in my code, when I load this data, I subtract 1 from the value of TileNumber so that it’s zero based which makes life easier. There was no way to have it export this data in Zero based format I am afraid. </strong></p>
</blockquote>
<p>Also note that the root element of the map (&lt;map&gt;) includes all the data you need to properly render this map. You have the Width and Height of the grid in tiles, the width and height in pixels of the tiles and the name of the tilestrip file in the Content folder.</p>
<p>Ignore the MapCode attribute for the moment, we’ll get to that later :) </p>
<p>There! We now have a map all drawn up and ready to be consumed by our code! That… will be the topic of my next post! This one was long enough as it is. In the meantime, go mess around with the editor! </p>
]]></content:encoded>
			<wfw:commentRss>http://www.nazspace.com/wp/2008/09/23/creating-your-world/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Learn 3D and stuff!</title>
		<link>http://www.nazspace.com/wp/2008/07/19/learn-3d-and-stuff/</link>
		<comments>http://www.nazspace.com/wp/2008/07/19/learn-3d-and-stuff/#comments</comments>
		<pubDate>Sat, 19 Jul 2008 17:12:02 +0000</pubDate>
		<dc:creator>nazeeh</dc:creator>
				<category><![CDATA[Beginner Game Tutorials]]></category>

		<guid isPermaLink="false">http://www.nazspace.com/wp/2008/07/19/learn-3d-and-stuff/</guid>
		<description><![CDATA[Hey guys! Quick post as I am on my way out to the airport for a quick family trip. Check out the 3D Beginner&#8217;s guide video tutorial that was just posted on creators.xna.com. It is really neat! It will serve as a really good introduction that I hopefully will follow up myself with some 3D [...]]]></description>
			<content:encoded><![CDATA[<p>Hey guys! Quick post as I am on my way out to the airport for a quick family trip. Check out the <a href="http://creators.xna.com/en-US/education/gettingstarted/bg3d/chapter1">3D Beginner&#8217;s guide video tutorial</a> that was just posted on <a href="http://creators.xna.com" target="_blank">creators.xna.com</a>. It is really neat! It will serve as a really good introduction that I hopefully will follow up myself with some 3D material once I get off my lazy butt and blog some more :/</p>
<p>Have fun!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nazspace.com/wp/2008/07/19/learn-3d-and-stuff/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Team Interview &#8211; Shawn Hargreaves</title>
		<link>http://www.nazspace.com/wp/2008/06/04/team-interview-shawn-hargreaves/</link>
		<comments>http://www.nazspace.com/wp/2008/06/04/team-interview-shawn-hargreaves/#comments</comments>
		<pubDate>Wed, 04 Jun 2008 23:01:42 +0000</pubDate>
		<dc:creator>nazeeh</dc:creator>
				<category><![CDATA[Team Interviews]]></category>

		<guid isPermaLink="false">http://www.nazspace.com/wp/2008/06/04/team-interview-shawn-hargreaves/</guid>
		<description><![CDATA[After tormenting you with an interview with Shawn&#8217;s cat, it&#8217;s only fair that we talk to the man himself. Today, we are going to know more about &#34;teh Shawn&#34; as he&#8217;s known to us now at the office. Shawn is the man responsible for quite a few of the nifty parts of the XNA Game [...]]]></description>
			<content:encoded><![CDATA[<p>After tormenting you with an interview with <a href="http://www.nazspace.com/wp/2008/06/02/team-interview-purr/">Shawn&#8217;s cat</a>, it&#8217;s only fair that we talk to the man himself. Today, we are going to know more about &quot;teh Shawn&quot; as he&#8217;s known to us now at the office. Shawn is the man responsible for quite a few of the nifty parts of the XNA Game Studio product in general. Hate it or love, Content pipeline was one of his first contributions, one of many many to come. The man needs little introduction, so &#8230; I give you, Shawn Hargreaves!</p>
<h3>Who are you and what do you do at XNA GS team? </h3>
<p>I&#8217;m a programmer on the XNA Framework team. Along with my colleagues Eli, Ito, and a couple of shady characters you haven&#8217;t yet got around to interviewing (hi Tom!), we are responsible for implementing the APIs for things like graphics, sound, and input: all the cool stuff you need to make your game.</p>
<p>In my spare time, I write some of the samples for the creators.xna.com site, and spend way too much time answering questions in the forums.</p>
<h3>What did you work on before joining XNA GS team? </h3>
<p>I worked for an independent developer called Climax in the UK, where I was lead programmer on the MotoGP series of bike racing games. I also worked on engines and tool chains (we wrote an entirely custom modeling package, which the artists used to construct the bike and track models) and did some prototyping for various original game ideas.</p>
<p>Before that I worked on the Extreme G games on the Nintendo 64, and back in college I started the open source Allegro game programming library. That was my first experience of building an API for a whole community of game developers, and I found it so rewarding, that was actually one of the main things that made me want to work on the XNA Framework.</p>
<h3>How did you join the XNA GS team? Tell the story! </h3>
<p>In between MotoGP and MotoGP 2, Climax made a special MotoGP demo version that shipped alongside the first release of Xbox Live. That was a crazy experience: we had very little time to put it together, and Live was totally new at the time, so we had to figure everything out as we went along. Microsoft gave us loads of help (they needed us to finish on time so they&#8217;d have at least one game ready on day one to demo what Live was capable of!) and I got to know some of the Xbox guys pretty well. I thought </p>
<p>they were cool people, and Microsoft seemed like it would be a good place to work.</p>
<p>I later met Chris Satchell (now the head of the whole XNA organization) when he worked for Microsoft Game Studios and we were pitching a game idea to them.</p>
<p>A couple of years later I was looking for a new job, so I got in touch with Chris to ask if there was anything interesting going on in the Xbox group. XNA was only a vague glimmering of an idea back then, but it was interesting enough to get my attention, and has been steadily getting more interesting ever since.</p>
<p>At first our mission was pretty much just &#8220;figure out something cool that will help game developers, then go do it&#8221;. Things got a bit more solid when we decided this meant managed code on Xbox 360, and even more solid when we decided it meant indie and hobbyist developers, all leading up to the recent arrival of community games on Xbox Live. Exciting times!</p>
<h3>What features did you work on for XNA GS 1.0 and 2.0? </h3>
<p>For 1.0, I mostly worked with Eli on the Content Pipeline.</p>
<p>For 2.0, I mostly worked on the networking functionality.</p>
<p>I&#8217;ve dabbled and fixed bugs in many other areas: graphics, sound, input, security, performance optimizations.</p>
<p>I was thinking the other day that of all the lines of code I&#8217;ve written in my lifetime, the default shader used by SpriteBatch has probably been executed the most times. Although the blit() function from Allegro must come in a close second.</p>
<h3>What were some of the problems faced when developing your feature?</h3>
<p>Figuring out how to let unsigned games access the Live servers was a real challenge. The Live system has some interesting security features aimed at reducing cheating, which mostly center around signing game executables during the certification process, and then preventing anyone from modifying the game code. But if we want indie developers to use the Live service without having to go through certification, how can we make this possible without just bypassing or turning off all the security stuff? (we would never have been allowed to ship this feature if it hadn&#8217;t been properly secure). This was a fun, juicy technical problem, especially on Windows.</p>
<h3>What&#8217;s your favorite part of XNA Game Studio, and why? </h3>
<p>I love the C# language. You could argue this is not strictly part of XNA Game Studio, but hey, we are standing on the shoulders of giants, right?</p>
<p>I&#8217;ve used a lot of languages over the years, and C# is my favorite so far. It hits exactly the right balance between power and simplicity, elegance and practicality, performance and productivity.</p>
<h3>What is your favorite Xbox 360 game? </h3>
<p>My dirty little secret is that I&#8217;m not actually much of a gamer. I&#8217;m passionate about the technology that goes into making games, but for some reason just not that interested in playing the end result (this is one reason why working on framework technology suits me so well).</p>
<p>When I do play games, I usually spend most of my time examining the graphics and trying to figure out what shader techniques they are using!</p>
<p>Every now and then I do get stuck into something, usually because of quirky or unusual gameplay. I&#8217;m currently about halfway through Portal. Before that (by which I mean a year before that &#8211; I did say I&#8217;m not much of a gamer!) I really enjoyed Shuggy, and before that Elasto Mania.</p>
<p>And of course the original Monkey Island remains by far the greatest game ever created.</p>
<h3>Share some tips and tricks for using XNA GS</h3>
<p>Start simple. Write a game. Finish it. Give it to your friends. Rinse, lather, repeat.</p>
<p>This is the only way I know to become a great game programmer.</p>
<p>If you get bored or stuck along the way, check out some of the samples on creators.xna.com, or post on the forums. But don&#8217;t stop making those games!</p>
<h3>Last words? </h3>
<p>How&#8217;s this for a curious coincidence? I thought I&#8217;d look in a dictionary to see what the last word actually was. This turns out to be &#8220;zymurgy&#8221;, which means the science of fermentation. And as it happens, I have a batch of beer fermenting in my spare room even as we speak. If you haven&#8217;t tried making your own beer, you should give that a whirl sometime. It&#8217;s great fun: a proper mad scientist combination of cooking and chemistry, with alcohol thrown in for good measure.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nazspace.com/wp/2008/06/04/team-interview-shawn-hargreaves/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
