<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" version="2.0">

<channel>
	<title>gamepoetry</title>
	
	<link>http://www.gamepoetry.com/blog</link>
	<description>The art, science and business of independent game development</description>
	<lastBuildDate>Sun, 14 Jun 2009 18:58:05 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/gamepoetry" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="gamepoetry" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>An Episode with Playtesting</title>
		<link>http://www.gamepoetry.com/blog/2009/06/14/an-episode-with-playtesting/</link>
		<comments>http://www.gamepoetry.com/blog/2009/06/14/an-episode-with-playtesting/#comments</comments>
		<pubDate>Sun, 14 Jun 2009 18:57:53 +0000</pubDate>
		<dc:creator>urbansquall</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Featured]]></category>

		<guid isPermaLink="false">http://www.gamepoetry.com/blog/?p=572</guid>
		<description><![CDATA[

We&#8217;ve released a lot of games on several different portals so we&#8217;re quite experienced with the Greater Internet Bastard Theory and how it is prevalent amongst what seems like a significant portion of the Flash game playing community. Last month we launched a single-level teaser of the upcoming Battalion games, and I must say, even [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.gamepoetry.com/blog/wp-content/uploads/2009/06/kong_dong.png" alt="kong_dong" title="kong_dong" width="585" height="58" class="aligncenter size-full wp-image-576" /></p>

<p>We&#8217;ve released a lot of games on several different portals so we&#8217;re quite experienced with the <a href="http://penny-arcade.com/comic/2004/03/19/">Greater Internet Bastard Theory</a> and how it is prevalent amongst what seems like a significant portion of the Flash game playing community. Last month we launched a single-level teaser of the upcoming Battalion games, and I must say, even though I usually can brush off this type of thing, many of the responses to the teaser level really left a bad taste in my mouth. <span id="more-572"></span></p>

<p>We wanted to put out <a href="http://www.kongregate.com/games/urbansquall/battalion-skirmish">Battalion: Skirmish</a> for a few different reasons:</p>

<ol>
<li>We wanted to raise awareness of the fact that there were additional Battalion games in the works, that they were coming soon, and that there would be a level editor and competitive multiplayer.</li>
<li>We wanted to <a href="http://www.kongregate.com/forums/1/topics/42844">recruit additional beta testers</a> for Arena, the multiplayer version of the game.</li>
<li>We wanted to pimp the iPhone release of our puzzle game, <a href="http://www.kongregate.com/games/urbansquall/robo-riot">Robo Riot</a>.</li>
<li>We wanted to get feedback about all the changes we made since the first Battalion, <a href="http://www.kongregate.com/games/urbansquall/battalion-nemesis">Nemesis</a>, including all the new graphics.</li>
<li>We recoded significant portions of the game (including a total rewrite of the AI, the UI and many of the rendering systems), so we wanted to get this code battle tested.</li>
</ol>

<p>We released the game early on a Friday evening. By the time I went to bed, the game was hovering around almost a thousand plays and had a very respectable rating of almost 4.2 on Kongregate.</p>

<p>When I woke up on Saturday morning, the number of plays had jumped to almost 20,000, and the score had dropped to almost 3.6. Although that is only a 12% drop, it represents, for me, the difference between a Great Game and a Decent Game. I was really surprised. Battalion is a GOOD game, how could it be at 3.6?</p>

<p>After my initial panic, I realized that my biggest mistake was in failing to manage expectations. In the description on Kongregate I clearly stated that this was just a teaser level, and what our goals with this release were. When I read over all the comments, it was clear that the length of the game was failing to meet the player&#8217;s expectations and so they felt compelled to punish me for it. They hadn&#8217;t read the game description. My first reaction was to ignore people who were going to be that stupid. Then after I settled down a little, I understood that I couldn&#8217;t expect people to read the game description when even I didn&#8217;t read them most of the time.</p>

<p>So, I put out a new build that made it very obvious that the game was just a teaser level and that it was a sneak peek (actually, I said sneak peak which I left up on purpose), and updated the description:</p>

<blockquote>Some people missed in the description that the purpose of this game is to get some community feedback on the new features, and also to give people a sneak peak at the game itself. I updated the title screen to show this more clearly. I don’t know if its too late to change anything, but such is life.

I apologize to anyone who was expecting anything more than just a mission showing off a couple new units and the new graphics.</blockquote>

<p>I think it is pretty obvious from this little excerpt that I was not at all happy how this little teaser level experience had turned out. In fact, I remember thinking how unfortunate it was because I would NEVER attempt another teaser level again because the feedback from the community was almost entirely useless, and, if I took it literally, would give me very bad feedback about future games even if they were awesome.</p>

<p>Time has passed and wounds have healed. I knew then that I had failed to manage people&#8217;s expectations and I know this is even more true now. After I made the changes to the title screen, the score started creeping up and it has settled at 3.74. I really wish I could see statistics about how many 1/5s there are because I think it would be very telling.</p>

<p>The game has hit almost 1.2M plays after three weeks, which for a teaser level is sort of amazing for me. Despite the bad rating on Kongregate, I feel like it has achieved all of its primary goals. We got tons of valuable feedback and bug reports for very obscure edge case bugs. The iPhone port of Robo Riot got as much exposure as I could have hoped for. I don&#8217;t think I&#8217;m ready to give up on the idea of small teaser games or previews, but I do know that I&#8217;m going to approach them a lot more carefully in the future.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gamepoetry.com/blog/2009/06/14/an-episode-with-playtesting/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Interactive Music Video</title>
		<link>http://www.gamepoetry.com/blog/2009/06/02/interactive-music-video/</link>
		<comments>http://www.gamepoetry.com/blog/2009/06/02/interactive-music-video/#comments</comments>
		<pubDate>Tue, 02 Jun 2009 18:11:37 +0000</pubDate>
		<dc:creator>urbansquall</dc:creator>
				<category><![CDATA[Art]]></category>

		<guid isPermaLink="false">http://www.gamepoetry.com/blog/?p=570</guid>
		<description><![CDATA[Simply breathtaking.
]]></description>
			<content:encoded><![CDATA[<p><a href="http://soytuaire.labuat.com/">Simply breathtaking.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.gamepoetry.com/blog/2009/06/02/interactive-music-video/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>My First Game Release Package</title>
		<link>http://www.gamepoetry.com/blog/2009/05/29/my-first-game-release-package/</link>
		<comments>http://www.gamepoetry.com/blog/2009/05/29/my-first-game-release-package/#comments</comments>
		<pubDate>Fri, 29 May 2009 08:01:24 +0000</pubDate>
		<dc:creator>sharky</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[best practices]]></category>

		<guid isPermaLink="false">http://www.gamepoetry.com/blog/?p=563</guid>
		<description><![CDATA[Urbansquall released recently Battalion: Skirmish, a one-level preview for its upcoming releases in the Battalion franchise (multiplayer, single-player and cooperative games are due to be released in frighteningly rapid succession over the course of the summer). I had joined on as a producer at the final stages of Skirmish's lifespan, and was asked to assist in its general release to some of the major Flash game portals that Urbansquall releases at (Kongregate, Newgrounds, etc.). And here's what I learned.]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-568" title="thumb" src="http://www.gamepoetry.com/blog/wp-content/uploads/2009/05/thumb.png" alt="thumb" width="241" height="122" />So who am I in relation to Urbansquall games? Previously, I&#8217;ve been their writer, but recently I&#8217;ve been asked to take on a more active role in production, acting specifically in a producer role: tracking deadlines, helping to coordinate releases and just generally being Johnny-on-the-Spot.</p>

<p>This puts me in a fairly unique position to comment upon the production cycle at what I dare-say is a fairly typical development house. I have a degree of experience with generalized project management and have been a life-long gamer and for the past few years a game-writer, so I understand the basic structure of gaming. Getting in up to my elbows in the swamp that is production, though, has been an illuminating process, and something I&#8217;ll likely be writing about with some degree of regularity here.</p>

<p>Now: the topic at hand. Urbansquall released recently Battalion: Skirmish, a one-level preview for its upcoming releases in the Battalion franchise (multiplayer, single-player and cooperative games are due to be released in frighteningly rapid succession over the course of the summer). I had joined on as a producer at the final stages of Skirmish&#8217;s lifespan, and was asked to assist in its general release to some of the major Flash game portals that Urbansquall releases at (Kongregate, Newgrounds, etc.). And here&#8217;s what I learned.</p>

<p><strong>1) Verify the .swf you will be Uploading</strong></p>

<p>I would sincerely hope that this comes across as a massive no-brainer for everyone out there, but it bears mentioning. This is especially true if you are releasing with any degree of exclusivity to any particular portal. If that&#8217;s the case, it&#8217;s likely that you are releasing an .swf that has full-functionality with your main portal, and limited functionality with all others. It&#8217;s pretty crucial that you verify that the .swf will behave properly in each location. So, pretty please, take the extra time, check your file.</p>

<p><strong>2) Pay Attention to the Small Things &#8211; Short vs. Long Description, Instructions</strong></p>

<p>Do not underestimate the power of these small items. If you&#8217;re releasing a game on a major portal, you&#8217;re talking about hitting into the hundreds of thousands of gamers—a pretty hefty demographic spread. This horde of gamers is also choosing between a mob of games to play. How do they choose which to play and which to avoid? Presentation. And this is presentation before they have even loaded your game, so pay attention to the little things.</p>

<p>Most portals have two sets of description you can post, a short and a long. The short will display on their main page, the long once the game-page has been loaded. Some tips for creating these descriptions.</p>

<p>Your short description needs to be carefully crafted. Chances are you have no more than two fairly short or one complex sentence to get across the sense of what your game is. Don&#8217;t waste your time spouting how great and revolutionary your game is. Do give the gamer a sense of what they have to look forward to. What action can the gamer expect from your title? What experience will they be having? Distill that concept down to a single sentence. That&#8217;s your short description. If your game is part of a series, find a way to work that in, especially if the earlier games were popular. People will zero in on that keyword immediately.</p>

<p>The long description is where you want to get into the various features that will give your game legs. Think of anything that might be unique selling points, anything that will allow the player to customize or extend their gameplay past a single run-through.</p>

<p>Instructions: just because you have them in-game doesn&#8217;t mean you should half-ass writing them out by hand. Maybe in-game you were limited by screen-space or functionality. Take the time to write out some solid instructions for posting alongside your game description. It&#8217;s a useful exercise, too, because perhaps it will highlight something to you that you had overlooked previously. And when it comes to Instructions, step 4 below is crucial.</p>

<p><strong>3) Choose the right Thumb</strong></p>

<p>Thumbnail selection is probably the single most important step here. We&#8217;re very visual these days, and Flash portal main pages are rife with images. If your screenshot does not stand out in some way, you are lost in a sea of colors. Just as your short description should encapsulate the feel of the game experience, so should your thumbnail. I&#8217;m a fan of including notable in-game art. The player character, a cool enemy, a critical power-up. Something that will give the player a sense of what the game will actually look like. Thumbs of the splash screen are doable, but less exciting. That art likely doesn&#8217;t reference what the game will actually look like. It&#8217;s either boring or disingenuous, and those are both bad. Bottom of the rung in my opinion is a thumbnail showing the game&#8217;s title. I know what the title is. It&#8217;s right next to the thumb. Now I just see the title twice.</p>

<p><strong>4) Have Someone Else Review All of your Release Materials</strong></p>

<p>I cannot stress this enough. Even if you are a one-man development team, you need to have someone else review your materials. In fact, it&#8217;s better if someone who is not part of production review these materials. You&#8217;re too close to it. The concept is to have all of these items grab someone unfamiliar with the game and pull them in. Who best to review than someone who is actually unfamiliar with the game.</p>

<p>Do your thumbs look clear? Or are they too jumbled? Does the description give them a good sense of anything? Is the longer description readable? Do the instructions make sense?</p>

<p>Never underestimate your ability to gloss over mistakes. The brain is adept at this. It autocorrects, so be sure you have a failsafe.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gamepoetry.com/blog/2009/05/29/my-first-game-release-package/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Pimping: Robo Riot on the iPhone and Battalion: Skirmish</title>
		<link>http://www.gamepoetry.com/blog/2009/05/22/pimping-robo-riot-on-the-iphone-and-battalion-skirmish/</link>
		<comments>http://www.gamepoetry.com/blog/2009/05/22/pimping-robo-riot-on-the-iphone-and-battalion-skirmish/#comments</comments>
		<pubDate>Sat, 23 May 2009 00:51:18 +0000</pubDate>
		<dc:creator>urbansquall</dc:creator>
				<category><![CDATA[Featured]]></category>

		<guid isPermaLink="false">http://www.gamepoetry.com/blog/?p=561</guid>
		<description><![CDATA[It&#8217;s been a long week. We released our first iPhone game, a teaser level for the upcoming Battalion games and started the multiplayer beta test of Battalion: Arena. So, for today, all you get is some pimpage.   

Robo Riot on the iPhone

Robots are tired of doing the bidding of their human masters and [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been a long week. We released our first iPhone game, a teaser level for the upcoming Battalion games and started the multiplayer beta test of Battalion: Arena. So, for today, all you get is some pimpage. <img src='http://www.gamepoetry.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  <span id="more-561"></span></p>

<h3>Robo Riot on the iPhone</h3>

<p>Robots are tired of doing the bidding of their human masters and they’ve figured it’s finally time to overthrow them. Robo Riot is an iPhone port of our recent Flash game of the same name. As it turns out, the game is very naturally suited to the iPhone platform and, dare I say, is even more fun in a mobile setting. Give it a whirl and let us know what you think!</p>

<p><a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=315599741&#038;mt=8"><img src="http://www.urbansquall.com/blog/wp-content/uploads/2009/05/robo_riot_banner1.png" alt="robo_riot_banner1" title="robo_riot_banner1" width="660" height="229" class="aligncenter size-full wp-image-96" /></a></p>

<h3>Battalion: Skirmish</h3>

<p>Take command of the mighty Warmachine and lead your troops to victory in the latest chapter of the Battalion saga! We wanted to celebrate the release of Robo Riot on the iPhone, and show off some of the tasty new graphics and features in the upcoming Battalion game. This is just a single-level teaser, but it should be enough to give you a pretty cool idea of some of the fun stuff you&#8217;ll be seeing in the rest of the series.</p>

<p><a href="http://www.kongregate.com/games/urbansquall/battalion-skirmish"><img src="http://www.urbansquall.com/blog/wp-content/uploads/2009/05/title1.png" alt="title1" title="title1" width="660" height="356" class="aligncenter size-full wp-image-97" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.gamepoetry.com/blog/2009/05/22/pimping-robo-riot-on-the-iphone-and-battalion-skirmish/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Best Practices With Version Control</title>
		<link>http://www.gamepoetry.com/blog/2009/05/15/best-practices-with-version-control/</link>
		<comments>http://www.gamepoetry.com/blog/2009/05/15/best-practices-with-version-control/#comments</comments>
		<pubDate>Fri, 15 May 2009 18:49:47 +0000</pubDate>
		<dc:creator>urbansquall</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Science]]></category>
		<category><![CDATA[best practices]]></category>
		<category><![CDATA[code]]></category>

		<guid isPermaLink="false">http://www.gamepoetry.com/blog/?p=557</guid>
		<description><![CDATA[

In the past, I&#8217;ve discussed the importance of using version control and also ways for structuring your subversion repository. Today, I&#8217;d like to cover an important best practices with version control whether you are a lone wolf developer or you frequently travel in a pack. 

After you&#8217;ve wrapped your head around version control (and I&#8217;ll [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.gamepoetry.com/blog/wp-content/uploads/2008/12/subversion_logo-200x173.png" alt="subversion_logo-200x173" title="subversion_logo-200x173" width="200" height="173" class="aligncenter size-full wp-image-67" /></p>

<p>In the past, I&#8217;ve discussed the <a href="http://www.gamepoetry.com/blog/2008/06/20/effortless-development-and-version-control/">importance of using version control</a> and also <a href="http://www.gamepoetry.com/blog/2008/12/05/trunks-tags-and-branches-in-subversion/">ways for structuring your subversion repository</a>. Today, I&#8217;d like to cover an important best practices with version control whether you are a lone wolf developer or you frequently travel in a pack. <span id="more-557"></span></p>

<p>After you&#8217;ve wrapped your head around version control (and I&#8217;ll be honest, it baffled me the first time I was forced to use it), there&#8217;s only a couple more best practices you need to be aware of to get the most out it.</p>

<h3>Don&#8217;t Commit Conflict Bait</h3>

<p>Conflict Bait is basically something that&#8217;s going to generate conflicts pretty much any time a team member updates from the repository. A good example of Conflict Bait is the swf file that your project generates when you build, or intermediate build files that your IDE might generate. Don&#8217;t put these in the repository, because you will publicly mocked by your more senior team members when they are forced to remove them.</p>

<p>Exceptions: This one isn&#8217;t such a big deal if you&#8217;re the only person working on a particular project. When you are rocking it solo, it can sometimes be useful (read: lazy) to let version control track your builds so can look up old versions without checking out a fresh copy of the whole repository.</p>

<h3>Write Comments In Your Commit Message</h3>

<p>This one is a bit of a &#8220;Duh, really?&#8221; When you&#8217;re going back over a log of 1,000 commits, you&#8217;re going to be sorry you didn&#8217;t leave the breadcrumbs to help you track down that bug in that feature you haven&#8217;t tested in over 3 months.</p>

<h3>Only Commit Verified Builds</h3>

<p>Don&#8217;t commit code that breaks trunk. If you do, you will be shot and beaten. Resist the urge to commit that untested feature right before you sign off for the day. This is the absolutely WRONG thing to do. Perhaps your fellow coders were planning a code binge that night and your last minute tweak sends them on a 4 hour bug hunt instead. Don&#8217;t do this to your teammates.</p>

<p>Exceptions: This again is more applicable in a team environment.</p>

<h3>Close Your Open Files Before Updating</h3>

<p>Sure, Flash Develop or Flex Builder will usually warn you when a file has been externally updated and ask you if you want to reload. Usually. In my life, I&#8217;ve wasted at least 2 day&#8217;s work undoing the damage caused by accidental overwrites after the IDE failed to recognize an update changed a file. Close your open files, then update. Don&#8217;t be that guy, really.</p>

<h3>Make Your Commit As Small As Possible</h3>

<p>You might think you&#8217;re awesome by making monolithic commits, but you&#8217;re really just overcompensating. The best commits are ones that are as granular as possible. This is a good practice for numerous reasons, and one that helps support many of the other best practices already mentioned.</p>

<ol>
<li>It keeps your project manager informed of your progress. If you&#8217;re making commits every 5 days, it doesn&#8217;t matter how big they are, you still look like you are not pulling your weight when your project manager gets his daily commit log and your name isn&#8217;t on it.</li>
<li>Your commit becomes easy to refer to because of its unique revision ID. It becomes an entity that can be referred to, entered into bug databases, etc.</li>
<li>When you&#8217;re digging through logs that have one succinct change applied to a single file, it is far more useful than a commit log that is 9 pages long and involved 30 files, which may or may not be related to your current search.</li>
<li>Your commit becomes easy to undo. Let&#8217;s say you really screwed things up and totally broke a feature (and then went to bed for the night). Your team members can see quickly from your commit log that revision 324 was a granular commit related to that feature and is likely the source of the issue. They can roll back the change and move forward while just cursing you briefly.</li>
</ol>

<p>I&#8217;ve been using version control in a team environment for about a decade now. Hopefully this helps you benefit from some of that experience. <img src='http://www.gamepoetry.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.gamepoetry.com/blog/2009/05/15/best-practices-with-version-control/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Effective Problem Solving Through Showering</title>
		<link>http://www.gamepoetry.com/blog/2009/05/08/effective-problem-solving-through-showering/</link>
		<comments>http://www.gamepoetry.com/blog/2009/05/08/effective-problem-solving-through-showering/#comments</comments>
		<pubDate>Fri, 08 May 2009 18:50:10 +0000</pubDate>
		<dc:creator>urbansquall</dc:creator>
				<category><![CDATA[Art]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[best practices]]></category>
		<category><![CDATA[design]]></category>

		<guid isPermaLink="false">http://www.gamepoetry.com/blog/?p=549</guid>
		<description><![CDATA[

Showering is an important part of everyone&#8217;s daily routine, even if it is one that programmers avoid too often. At Urbansquall, the daily showering ritual has taken on a whole different meaning. It is during this time that many of our most difficult problems are solved, or our most creative ideas born. Let&#8217;s delve a [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.gamepoetry.com/blog/wp-content/uploads/2009/05/showering.jpg" alt="showering" title="showering" width="296" height="318" class="aligncenter size-full wp-image-550" /></p>

<p>Showering is an important part of everyone&#8217;s daily routine, even if it is one that programmers avoid too often. At Urbansquall, the daily showering ritual has taken on a whole different meaning. It is during this time that many of our most difficult problems are solved, or our most creative ideas born. Let&#8217;s delve a little deeper into &#8220;Shower Moments&#8221; and the critical role they play in effective game development. <span id="more-549"></span></p>

<h3>Shower Moments Defined</h3>

<p>A Shower Moment is an epiphany, a moment of focused clarity that changes your perspective on a particular design choice or implementation challenge. A Shower Moment doesn&#8217;t have to necessarily occur in a shower. It can happen while you&#8217;re on the toilet. Or while you&#8217;re eating a cheeseburger. Or while you are out walking your dog.</p>

<h3>The Importance of Shower Moments</h3>

<p>At the start of this year we had an impossibly short deadline to deliver a fairly complex game for one of our favorite clients. I was not sure if we would deliver the game on time, but I did my best to remove any production obstacles by trying to design the entire game up front before a single line of code was written. This worked as hoped for the most part, at least until a few days before the game was supposed to be ready to ship.</p>

<p>The controls were designed in a vacuum, and, in practice, they were far too complex. Everyone was too busy hammering to get the game done in time to notice, until I had one of these &#8220;Shower Moments&#8221; when my subconscious basically slapped me in the face and said &#8220;The game sucks and it is because of the controls!&#8221; Fortunately, we had just enough time left in the schedule to redo the control scheme. This didn&#8217;t instantly make the game great, but it saved it from being a total catastrophe. I became peripherally aware that shorter game development schedules were risky not only because there was less time to polish, but also because of something else. I just couldn&#8217;t put my finger on it.</p>

<h3>The Shower Moment of Shower Moments</h3>

<p>I only became acutely aware of the concept of the &#8220;Shower Moment&#8221; this year while attending a panel at the GDC. A developer from Capcom was complaining how difficult it was dropping from a traditional 2+ year development cycle to a 6+ month development cycle for console downloadable titles. The thing he lamented the most was not that it required smaller teams, or smaller scopes, but simply that there is a lot less idle time during a 6 month project than there is in a 2 year project. And no, the implication was not that 2 year development cycles have more downtime during production (they might), but rather that there was just less time with the project in general.</p>

<p>This is something I alluded to in my article about <a href="http://www.gamepoetry.com/blog/2009/01/02/maximizing-efficiency-by-taking-breaks/">Maximizing Efficiency By Taking Breaks</a>, so I was peripherally aware of the importance of this idle &#8220;production&#8221; time but I just didn&#8217;t fully grasp it until that panel.</p>

<h3>Why Shower Moments Are Important</h3>

<p>It&#8217;s possible to do a lot of proactive design and problem solving before production, but it is so rare that a game ends up being made exactly as it was penciled on paper. Throughout the course of a game&#8217;s development there are hundreds, if not thousands of little unplanned decisions that ultimately combine to create the final package. It&#8217;s fairly tempting to brute force all these decisions as they come up and often we have to do this. Many times these gut shot decisions are correct and life carries on, but frequently we&#8217;ll make a mistake, or base a decision on a false belief.</p>

<p>Shower Moments are vital to a game&#8217;s development because they help fix the problems that can&#8217;t simply be fixed with a hammer and a nail. Shower Moments are there to give you that solution that is out of the box, to fix the problem that is so pervasive you may not even notice it.</p>

<h3>Why Shower Moments Work</h3>

<p>I&#8217;m sure there are a lot of reasons why Shower Moments work. I believe it has a lot to do with our subconscious&#8217;s propensity to solve problems differently from our conscious. It could just be that sensory deprivation (specifically in the case of a shower where everything is white and the sound of water drowns everything out), activates a different problem solving part of our brain. I believe we have all experienced these moments, even if we didn&#8217;t recognize what they were, so I believe it is just self evident.</p>

<h3>Employing Shower Moments for Success</h3>

<p>The biggest problem with Shower Moments is they can&#8217;t really be forced, and they are often the most important when you are least likely to have the ability to rely on them. My goal now is to give each important project enough time to have all the Shower Moments it needs in order to achieve its full potential.</p>

<p>It is a luxury, one that is not always afforded, but with the knowledge that this critical element of game development exists, I can at least start each project hoping to give it enough breathing room to let these important insights bubble to the surface.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gamepoetry.com/blog/2009/05/08/effective-problem-solving-through-showering/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Link Spooge</title>
		<link>http://www.gamepoetry.com/blog/2009/05/01/link-spooge/</link>
		<comments>http://www.gamepoetry.com/blog/2009/05/01/link-spooge/#comments</comments>
		<pubDate>Sat, 02 May 2009 05:10:21 +0000</pubDate>
		<dc:creator>urbansquall</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.gamepoetry.com/blog/?p=547</guid>
		<description><![CDATA[Today&#8217;s post is just a bunch of must read material that&#8217;s finally achieved critical spooge mass:


Sirlin&#8217;s talk on competitive multiplayer was one of my top three favorite talks at this year&#8217;s GDC. You can get all the juicy details from his very helpful handout
The post mortem for Tale of Tale&#8217;s Graveyard.
Fairly sobering reflection on 2008 [...]]]></description>
			<content:encoded><![CDATA[<p>Today&#8217;s post is just a bunch of must read material that&#8217;s finally achieved critical spooge mass:</p>

<ol>
<li>Sirlin&#8217;s talk on competitive multiplayer was one of my top three favorite talks at this year&#8217;s GDC. You can get all the juicy details from his very helpful <a href="http://www.sirlin.net/storage/articles/balance/GDC%202009%20sirlin%20handout6.pdf">handout</a></li>
<li>The <a href="http://tale-of-tales.com/blog/the-graveyard-post-mortem/">post mortem</a> for Tale of Tale&#8217;s Graveyard.</li>
<li>Fairly sobering <a href="http://forums.introversion.co.uk/introversion/viewtopic.php?t=2012">reflection</a> on 2008 from Introversion (Uplink, Defcon, Darwinia, etc.).</li>
<li>Destructoid&#8217;s <a href="http://www.destructoid.com/gdc-09-everything-you-wanted-to-know-about-going-indie--125966.phtml">&#8220;Everything You Wanted To Know About Going Indie&#8221;</a>.</li>
<li>The <a href="http://tigsource.com/articles/2009/03/23/igs-09-the-four-hour-game-design">Four Hour Game Design</a> from this year&#8217;s IGS. Genius.</li>
</ol>

<p>That&#8217;s it for this week.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gamepoetry.com/blog/2009/05/01/link-spooge/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Game Developers and Porn Stars</title>
		<link>http://www.gamepoetry.com/blog/2009/04/27/game-developers-and-porn-stars/</link>
		<comments>http://www.gamepoetry.com/blog/2009/04/27/game-developers-and-porn-stars/#comments</comments>
		<pubDate>Mon, 27 Apr 2009 21:22:22 +0000</pubDate>
		<dc:creator>urbansquall</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.gamepoetry.com/blog/?p=545</guid>
		<description><![CDATA[A very funny read. comparing porn stars and game developers.
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.killtenrats.com/2009/04/13/game-developers-and-porn-stars/">A very funny read.</a> comparing porn stars and game developers.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gamepoetry.com/blog/2009/04/27/game-developers-and-porn-stars/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>For-Loop Defeats Copy/Paste</title>
		<link>http://www.gamepoetry.com/blog/2009/04/23/for-loop-defeats-copy-paste/</link>
		<comments>http://www.gamepoetry.com/blog/2009/04/23/for-loop-defeats-copy-paste/#comments</comments>
		<pubDate>Fri, 24 Apr 2009 05:30:47 +0000</pubDate>
		<dc:creator>urbansquall</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Science]]></category>
		<category><![CDATA[best practices]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[coding]]></category>

		<guid isPermaLink="false">http://www.gamepoetry.com/blog/?p=543</guid>
		<description><![CDATA[Copy/pasted code is evil. It can get you into all sorts of trouble. There are a lot of situations in which you might be tempted to perform the dreaded ctrl-c + ctrl-v. You must resist this urge! In certain situations you can write code that is significantly more robust than copy/pasted code and you can [...]]]></description>
			<content:encoded><![CDATA[<p>Copy/pasted code is evil. It can get you into all sorts of trouble. There are a lot of situations in which you might be tempted to perform the dreaded ctrl-c + ctrl-v. You must resist this urge! In certain situations you can write code that is significantly more robust than copy/pasted code and you can probably type it up quicker too. <span id="more-543"></span></p>

<p>One case where you might be tempted to copy/paste code is when you&#8217;re performing some logic on a group of related objects. In the following example, we test the neighbors of our tile to see if we are surrounded by sea. This technique can be applied effectively to many other scenarios, however, like initializing a set of buttons, or aligning a bunch of logos.</p>

<pre><code>var isSurroundedBySea : Boolean = false;

var leftTile : Tile = map.getTile( m_currentX - 1, m_currentY );
if( leftTile != null &amp;&amp; !leftTile.isSea() )
{
    isSurroundedBySea = false;
}

var rightTile : Tile = map.getTile( m_currentX + 1, m_currentY );
if( rightTile != null &amp;&amp; !rightTile.isSea() )
{
    isSurroundedBySea = false;
}

var upTile : Tile = map.getTile( m_currentX, m_currentY - 1 );
if( upTile != null &amp;&amp; !upTile.isSea() )
{
    isSurroundedBySea = false;
}

var downTile : Tile = map.getTile( m_currentX, m_currentY + 1 );
if( downTile != null &amp;&amp; !downTile.isSea() )
{
    isSurroundedBySea = false;
}
</code></pre>

<p>Copy/pasting has bloated the size of the code and made it incredibly brittle. If we need to modify the basic logic of the query (like perhaps testing for a modifier called &#8220;Sea&#8221; instead), we have to hope we remember to do it in all 4 places, and to do it correctly.</p>

<p>Never fear, though, Mr. For-Loop is here to save us. What I like to do in this particular case is plug all the objects into an array and then use a for-loop to make sure the code is written only once:</p>

<pre><code>var isSurroundedBySea : Boolean = false;

var neighbors : Array = [
    map.getTile( m_currentX - 1, m_currentY ),
    map.getTile( m_currentX + 1, m_currentY ),
    map.getTile( m_currentX, m_currentY + 1),
    map.getTile( m_currentX, m_currentY - 1 ) ];

for( var n : int = 0; n &lt; neighbors.length; n++ )
{
    var neighbor : Tile = neighbors[ n ];
    if( neighbor != null &amp;&amp; !neighbor.isSea() )
    {
        isSurroundedBySea = false;
        break;
    }
 }
</code></pre>

<p>Not only is it faster to write this code than it is to copy/paste all that junk up there, the code is significantly more robust because we&#8217;ve converted 4 potential sources of failure into (basically) one.</p>

<p>You have to be able to write bug free for-loops to use this trick effectively. But I&#8217;m pretty sure you can handle that. <img src='http://www.gamepoetry.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.gamepoetry.com/blog/2009/04/23/for-loop-defeats-copy-paste/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Nuggets of Wisdom from the 2009 Flash Gaming Summit</title>
		<link>http://www.gamepoetry.com/blog/2009/04/17/nuggets-of-wisdom-from-the-2009-flash-gaming-summit/</link>
		<comments>http://www.gamepoetry.com/blog/2009/04/17/nuggets-of-wisdom-from-the-2009-flash-gaming-summit/#comments</comments>
		<pubDate>Fri, 17 Apr 2009 18:25:33 +0000</pubDate>
		<dc:creator>urbansquall</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[best practices]]></category>
		<category><![CDATA[flash]]></category>

		<guid isPermaLink="false">http://www.gamepoetry.com/blog/?p=539</guid>
		<description><![CDATA[

I took copious notes at the Flash Gaming Summit that was held the Sunday before the GDC began. I thought that I might transcribe my favorite parts of the sessions and post them up on gamepoetry so that everyone could benefit from all the great information that was being shared. Turns out the furious note [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.gamepoetry.com/blog/wp-content/uploads/2009/04/218193623.gif" alt="218193623" title="218193623" width="168" height="190" class="aligncenter size-full wp-image-540" /></p>

<p>I took copious notes at the Flash Gaming Summit that was held the Sunday before the GDC began. I thought that I might transcribe my favorite parts of the sessions and post them up on gamepoetry so that everyone could benefit from all the great information that was being shared. Turns out the furious note taking was pretty much completely unnecessary because Mochi Media ended up pretty much <a href="http://mochiland.com/articles/the-flash-gaming-summit-re-cap-and-round-up">posting the whole thing</a> for the world to view.<span id="more-539"></span></p>

<p>I had the opportunity to go through my notes this week and reflect on some of the things that were said and discussed. As I reviewed my notes, I noticed four nuggets of wisdom that were worth highlighting, even though the sessions were all available anyway. These are paraphrased based on my very short-handed notes:</p>

<ol>
<li>Stephen Harris (Ninja Kiwi) &#8211; You need fresh eyes on your game constantly. Familiarity tends to amplify the perceived success or failure of a design.</li>
<li>Daniel James (Three Rings) &#8211; With all their knowledge and experience, Three Rings still make design mistakes. They&#8217;ve learned to use playtesting to guide their instincts.</li>
<li>Paul Preece (Casual Collective) &#8211; In competitive multiplayer, microtransaction models make you hate your rich friends. In cooperative multiplayer, microtransaction models make you love your rich friends.</li>
<li>Chris Hughes (Flash Game License) &#8211; It is okay to let the portals handle the monetization of your flash game, but make sure you&#8217;re participating in the benefits if your game is a runaway success.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.gamepoetry.com/blog/2009/04/17/nuggets-of-wisdom-from-the-2009-flash-gaming-summit/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss><!-- Dynamic Page Served (once) in 0.468 seconds -->
