<?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>eliolhan</title>
	<atom:link href="http://eliolhan.com/wordpress1/feed/" rel="self" type="application/rss+xml" />
	<link>http://eliolhan.com/wordpress1</link>
	<description>Commerce makes progress. Fortune passes everywhere</description>
	<lastBuildDate>Sat, 22 Sep 2012 12:38:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>GottaEat is now available</title>
		<link>http://eliolhan.com/wordpress1/2012/07/22/gottaeat-is-now-available/</link>
		<comments>http://eliolhan.com/wordpress1/2012/07/22/gottaeat-is-now-available/#comments</comments>
		<pubDate>Sun, 22 Jul 2012 14:30:42 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[business]]></category>
		<category><![CDATA[creative]]></category>
		<category><![CDATA[shiny]]></category>
		<category><![CDATA[real artists ship]]></category>
		<category><![CDATA[THE OCTOBER GAME]]></category>

		<guid isPermaLink="false">http://eliolhan.com/wordpress1/?p=1055</guid>
		<description><![CDATA[My first game is now on the App Store! Huzzah! GottaEat is a casual arcade game for iPhone and iPod Touch. It costs a dollar (in the US store). Hop to catch flying insects. Avoid the deadly bees or you&#8217;ll &#8230; <a href="http://eliolhan.com/wordpress1/2012/07/22/gottaeat-is-now-available/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>My first game is now on the App Store! Huzzah!</p>
<p><strong><a href="http://itunes.apple.com/app/gottaeat/id543305166?mt=8">GottaEat</a></strong> is a casual arcade game for iPhone and iPod Touch. It costs a dollar (in the US store).</p>
<p><a href="http://eliolhan.com/wordpress1/wp-content/uploads/2012/07/GottaEat-poster-01-web.png"><img class="alignnone size-full wp-image-1056" title="GottaEat-poster-01-web" src="http://eliolhan.com/wordpress1/wp-content/uploads/2012/07/GottaEat-poster-01-web.png" alt="" width="450" height="576" /></a></p>
<p>Hop to catch flying insects.</p>
<p><a href="http://eliolhan.com/wordpress1/wp-content/uploads/2012/07/help-hop-web.png"><img class="alignnone size-full wp-image-1057" title="help-hop-web" src="http://eliolhan.com/wordpress1/wp-content/uploads/2012/07/help-hop-web.png" alt="" width="450" height="352" /></a></p>
<p><a href="http://eliolhan.com/wordpress1/wp-content/uploads/2012/07/help-catch-web.png"><img class="alignnone size-full wp-image-1058" title="help-catch-web" src="http://eliolhan.com/wordpress1/wp-content/uploads/2012/07/help-catch-web.png" alt="" width="450" height="352" /></a></p>
<p>Avoid the deadly bees or you&#8217;ll lose a life.  Lose 3 lives and it&#8217;s game over. If you do <em>really</em> badly, you&#8217;ll earn a dunce cap. If you play a better game, you&#8217;ll earn a top hat or a cool viking helmet.</p>
<p><a href="http://eliolhan.com/wordpress1/wp-content/uploads/2012/07/help-lose-web.png"><img class="alignnone size-full wp-image-1059" title="help-lose-web" src="http://eliolhan.com/wordpress1/wp-content/uploads/2012/07/help-lose-web.png" alt="" width="450" height="352" /></a></p>
<p>Each level is nice and short so you can play whenever you have a free minute.  If you get interrupted, don&#8217;t worry, it&#8217;ll pick up where you left off. You can even play your own music instead of the game&#8217;s.</p>
<p>I put lots of help pages in the game if want to know more.</p>
<p><a href="http://eliolhan.com/wordpress1/wp-content/uploads/2012/07/help-menu.png"><img class="alignnone size-full wp-image-1061" title="help-menu" src="http://eliolhan.com/wordpress1/wp-content/uploads/2012/07/help-menu.png" alt="" width="450" height="518" /></a></p>
<p>I had fun making it and I hope you like it. Enjoy!</p>
<p><a href="http://eliolhan.com/wordpress1/wp-content/uploads/2012/07/company_frog01_avatar.png"><img class="alignnone size-full wp-image-1062" title="company_frog01_avatar" src="http://eliolhan.com/wordpress1/wp-content/uploads/2012/07/company_frog01_avatar.png" alt="" width="450" height="452" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://eliolhan.com/wordpress1/2012/07/22/gottaeat-is-now-available/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Terrible Ideas: Bread-chucks</title>
		<link>http://eliolhan.com/wordpress1/2012/07/07/terrible-ideas-bread-chucks/</link>
		<comments>http://eliolhan.com/wordpress1/2012/07/07/terrible-ideas-bread-chucks/#comments</comments>
		<pubDate>Sat, 07 Jul 2012 18:52:21 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[creative]]></category>
		<category><![CDATA[sketch]]></category>
		<category><![CDATA[iSketchADay]]></category>
		<category><![CDATA[terribleIdeas]]></category>

		<guid isPermaLink="false">http://eliolhan.com/wordpress1/?p=1043</guid>
		<description><![CDATA[Note to self: eat breakfast before doing daily sketch. Pencil on index card. Painted in Photoshop CS4.]]></description>
			<content:encoded><![CDATA[<p>Note to self: eat breakfast before doing daily sketch.</p>
<p><a href="http://eliolhan.com/wordpress1/wp-content/uploads/2012/07/Bread-chucks_out.png"><img class="alignnone size-full wp-image-1044" title="Bread-chucks_out" src="http://eliolhan.com/wordpress1/wp-content/uploads/2012/07/Bread-chucks_out.png" alt="" width="640" height="382" /></a></p>
<p><em>Pencil on index card. Painted in Photoshop CS4.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://eliolhan.com/wordpress1/2012/07/07/terrible-ideas-bread-chucks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Palette knife</title>
		<link>http://eliolhan.com/wordpress1/2012/06/20/palette-knife/</link>
		<comments>http://eliolhan.com/wordpress1/2012/06/20/palette-knife/#comments</comments>
		<pubDate>Wed, 20 Jun 2012 21:27:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[creative]]></category>
		<category><![CDATA[sketch]]></category>
		<category><![CDATA[iSketchADay]]></category>

		<guid isPermaLink="false">http://eliolhan.com/wordpress1/?p=1039</guid>
		<description><![CDATA[Faber-Castell PITT artist pen size-S. Tinted in Photoshop CS4.]]></description>
			<content:encoded><![CDATA[<p><a href="http://eliolhan.com/wordpress1/wp-content/uploads/2012/06/Palette-knife_sm.png"><img class="alignnone size-full wp-image-1040" title="Palette-knife_sm" src="http://eliolhan.com/wordpress1/wp-content/uploads/2012/06/Palette-knife_sm.png" alt="" width="312" height="600" /></a></p>
<p><em></em><em>Faber-Castell PITT artist pen size-S. Tinted in Photoshop CS4.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://eliolhan.com/wordpress1/2012/06/20/palette-knife/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Cleanup Sprint</title>
		<link>http://eliolhan.com/wordpress1/2012/05/27/the-cleanup-sprint/</link>
		<comments>http://eliolhan.com/wordpress1/2012/05/27/the-cleanup-sprint/#comments</comments>
		<pubDate>Sun, 27 May 2012 08:07:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Technical]]></category>
		<category><![CDATA[iDevBlogADay]]></category>
		<category><![CDATA[process]]></category>
		<category><![CDATA[awesome-fun-cookies]]></category>
		<category><![CDATA[bugs bugs get 'em off me]]></category>
		<category><![CDATA[cleanup]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[THE OCTOBER GAME]]></category>

		<guid isPermaLink="false">http://eliolhan.com/wordpress1/?p=1029</guid>
		<description><![CDATA[Coming into the home stretch of THE OCTOBER GAME, I took some time to do a little cleanup. What came before After finishing the level editor, I created the last few stages and played the game through many times, editing &#8230; <a href="http://eliolhan.com/wordpress1/2012/05/27/the-cleanup-sprint/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Coming into the <a href="http://en.wiktionary.org/wiki/home_stretch">home stretch</a> of <strong><span style="color: #945206;">THE OCTOBER GAME</span></strong>, I took some time to do a little cleanup.</p>
<h3>What came before</h3>
<p>After <a href="http://eliolhan.com/wordpress1/2012/04/01/the-level-editor-sprint-pt-4/">finishing the level editor</a>, I created the last few stages and played the game through many times, editing and adjusting to get a good difficulty progression. Right now there&#8217;s a good ramp-up with the end levels hard enough that even <em>I</em> can&#8217;t always win. If you beat this game, you&#8217;ll definitely earn it. <span style="color: #808080;">link:evil-laugh.wav</span></p>
<p><a href="http://eliolhan.com/wordpress1/wp-content/uploads/2012/05/gameOverWon-crop.png"><img class="alignnone size-full wp-image-1033" title="gameOverWon-crop" src="http://eliolhan.com/wordpress1/wp-content/uploads/2012/05/gameOverWon-crop.png" alt="" width="400" height="316" /></a></p>
<h3>Play testing</h3>
<p>I had a friend play, which led me to make a few tiny tweaks to the user interface. I would like to get a few more testers on different devices but I&#8217;m not sure how to go about it. More on that later, maybe.</p>
<h3>Performance</h3>
<p>Performance issues have dogged this project from the very beginning. Keeping the frame rate near 60 fps has lead me to rewrite this game three <span style="text-decoration: line-through;"><span style="color: #808080;">LONG STREAM OF EXPLETIVES DELETED</span></span> times. If I&#8217;d chosen to drop support for older devices earlier, I could&#8217;ve cut development time by a full third. When I started this project I was willing to support the iPhone 1st gen but I&#8217;ve had to retreat from that a bit. Once I get an iPod Touch 3rd gen to test on, I&#8217;ll make a decision where the cutoff point is. That said, I am <em>so done</em> with iOS 3.x, it&#8217;s not even funny.</p>
<h3>Lingering bugs</h3>
<p>To my surprise, I&#8217;m still finding bugs. A quick search of my development log reveals an astounding <strong>200 bugs found and fixed</strong> over 17 months of development. I haven&#8217;t done a detailed analysis of the data but it looks like I&#8217;m generating fewer bugs per unit of time. The thing is, I&#8217;m writing less code overall. I wouldn&#8217;t be a bit surprised to find my bug rate to be constant by lines of code. Certainly it&#8217;s in my best interest  to write as little new code as possible.</p>
<h3>Cleanup</h3>
<p>My policy is to do cleanup sprints after major feature pushes. I try not to mess around with the oldest code even though it&#8217;s rather ugly, stylistically. For one thing, most of the bugs have been squeezed out. Art assets are a different story. Images have several processing steps to make them program-ready. Audio also has pretty strict restrictions such as file format, volume, frequency and bit-rate limits. Any change and all the steps have to be repeated. It&#8217;s a real pain so I tend to save up corrections and do them in big batches.</p>
<h3>Next steps</h3>
<p>I still have to do one last art sweep before shipping, as well as generate branding images for the web site. I&#8217;m also putting together a plan for the promotional push, something I&#8217;ve never done before and a source of extreme <span style="text-decoration: line-through;">anxiety</span> <em>awesome-fun-cookies</em>.</p>
]]></content:encoded>
			<wfw:commentRss>http://eliolhan.com/wordpress1/2012/05/27/the-cleanup-sprint/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Programming Praxis with Code Katas</title>
		<link>http://eliolhan.com/wordpress1/2012/04/28/programming-praxis-with-code-katas/</link>
		<comments>http://eliolhan.com/wordpress1/2012/04/28/programming-praxis-with-code-katas/#comments</comments>
		<pubDate>Sun, 29 Apr 2012 07:29:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Ideas]]></category>
		<category><![CDATA[creative]]></category>
		<category><![CDATA[iDevBlogADay]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[kata]]></category>
		<category><![CDATA[praxis]]></category>
		<category><![CDATA[THE OCTOBER GAME]]></category>

		<guid isPermaLink="false">http://eliolhan.com/wordpress1/?p=946</guid>
		<description><![CDATA[As THE OCTOBER GAME nears completion, it&#8217;s all debugging and cleanup. It can be both tedious and frustrating working on the same codebase for so long. I&#8217;ve mentioned before the little side-projects I work on. But there&#8217;s another kind of &#8230; <a href="http://eliolhan.com/wordpress1/2012/04/28/programming-praxis-with-code-katas/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>As <strong><span style="color: #945206;">THE OCTOBER GAME</span></strong> nears completion, it&#8217;s all debugging and cleanup. It can be both tedious and frustrating working on the same codebase for so long.</p>
<p>I&#8217;ve mentioned before the little <a href="http://eliolhan.com/wordpress1/2011/10/29/switching-gears-to-get-unstuck/">side-projects</a> I work on. But there&#8217;s another kind of practice called a <a href="http://en.wikipedia.org/wiki/Kata_(programming)">Code Kata</a>. The big idea is to solve the same problem repeatedly, each time extracting new lessons. It&#8217;s the same problem, but you try to come at it from a different angle. While the name is taken from the martial arts field, the concept is more like the <a href="http://en.wikipedia.org/wiki/Practice_(learning_method)#Deliberate_practice">deliberate practice</a> of the musician. A beginner might practice scales, but more experienced performers would have well-worn pieces that they comes back to, both for private enjoyment and education.</p>
<p>There are a number of well-known code katas floating around but I think there&#8217;s value in having a personal set. I&#8217;ve spent the past few years learning Objective-C and the Cocoa framework specifically for use with the iOS operating system. I write iPhone and iPad apps even for my own private use. It&#8217;s my &#8220;home&#8221; base. Within that realm, there are a few subjects that I keep being drawn to:</p>
<p>Touch-controlled Shapes.</p>
<p><a href="http://eliolhan.com/wordpress1/wp-content/uploads/2012/04/touchable-saccades.png"><img class="alignnone size-full wp-image-948" title="touchable-saccades" src="http://eliolhan.com/wordpress1/wp-content/uploads/2012/04/touchable-saccades.png" alt="" width="568" height="440" /></a></p>
<p><a href="http://eliolhan.com/wordpress1/wp-content/uploads/2012/04/touchable-montador.png"><img class="alignnone size-full wp-image-949" title="touchable-montador" src="http://eliolhan.com/wordpress1/wp-content/uploads/2012/04/touchable-montador.png" alt="" width="512" height="384" /></a></p>
<p>Particle Simulations.</p>
<p><a href="http://eliolhan.com/wordpress1/wp-content/uploads/2012/04/particle-sim-bots.png"><img class="alignnone size-full wp-image-950" title="particle-sim-bots" src="http://eliolhan.com/wordpress1/wp-content/uploads/2012/04/particle-sim-bots.png" alt="" width="512" height="384" /></a></p>
<p><a href="http://eliolhan.com/wordpress1/wp-content/uploads/2012/04/particle-sim-smallSim.png"><img class="alignnone size-full wp-image-951" title="particle-sim-smallSim" src="http://eliolhan.com/wordpress1/wp-content/uploads/2012/04/particle-sim-smallSim.png" alt="" width="384" height="512" /></a></p>
<p>Timers.</p>
<p><a href="http://eliolhan.com/wordpress1/wp-content/uploads/2012/04/timer-lavada.png"><img class="alignnone size-full wp-image-952" title="timer-lavada" src="http://eliolhan.com/wordpress1/wp-content/uploads/2012/04/timer-lavada.png" alt="" width="384" height="512" /></a></p>
<p><a href="http://eliolhan.com/wordpress1/wp-content/uploads/2012/04/timer-poquito.png"><img class="alignnone size-full wp-image-953" title="timer-poquito" src="http://eliolhan.com/wordpress1/wp-content/uploads/2012/04/timer-poquito.png" alt="" width="512" height="384" /></a></p>
<p>Down the road, I want to add some more like Machine Learning, Maze Generation and Image Processing but there are only so many hours in a day.</p>
<p>Also, I totally earned this:</p>
<p><a href="http://eliolhan.com/wordpress1/wp-content/uploads/2012/04/Praxis-Badge-crop.png"><img class="alignnone size-full wp-image-954" title="Praxis-Badge-crop" src="http://eliolhan.com/wordpress1/wp-content/uploads/2012/04/Praxis-Badge-crop.png" alt="" width="350" height="350" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://eliolhan.com/wordpress1/2012/04/28/programming-praxis-with-code-katas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Level Editor Sprint, Pt.4</title>
		<link>http://eliolhan.com/wordpress1/2012/04/01/the-level-editor-sprint-pt-4/</link>
		<comments>http://eliolhan.com/wordpress1/2012/04/01/the-level-editor-sprint-pt-4/#comments</comments>
		<pubDate>Sun, 01 Apr 2012 08:02:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Technical]]></category>
		<category><![CDATA[iDevBlogADay]]></category>
		<category><![CDATA[process]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[level editor]]></category>
		<category><![CDATA[small bets]]></category>
		<category><![CDATA[THE OCTOBER GAME]]></category>

		<guid isPermaLink="false">http://eliolhan.com/wordpress1/?p=917</guid>
		<description><![CDATA[My third attempt at a level editor for THE OCTOBER GAME succeeded, but not how I expected. As I mentioned last time, the game was feature complete including scaffolding like the Top Scores and Help screens. I&#8217;d found creating levels by hand to &#8230; <a href="http://eliolhan.com/wordpress1/2012/04/01/the-level-editor-sprint-pt-4/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>My third attempt at a level editor for <strong><span style="color: #945206;">THE OCTOBER GAME</span></strong> succeeded, but not how I expected.</p>
<p>As I mentioned <a href="http://eliolhan.com/wordpress1/2012/03/17/the-level-editor-sprint-pt-3/">last time</a>, the game was feature complete including scaffolding like the Top Scores and Help screens. I&#8217;d found creating levels by hand to be unbearably slow and error-prone. This led to creating an app to automate the creation, editing and export of game level data.</p>
<p>To avoid the mistakes of previous attempts, I would</p>
<ul>
<li>Plan more before coding</li>
<li>Break the job into smaller sprints</li>
<li>Budget enough time to make real progress</li>
</ul>
<p>I started out by describing the functions I needed for an app of small, medium and large scope.</p>
<p><a href="http://eliolhan.com/wordpress1/wp-content/uploads/2012/03/ranas_initialNotes.png"><img class="alignnone size-full wp-image-920" title="ranas_initialNotes" src="http://eliolhan.com/wordpress1/wp-content/uploads/2012/03/ranas_initialNotes.png" alt="" width="500" height="400" /></a></p>
<p>Then I sketched interface designs</p>
<p><a href="http://eliolhan.com/wordpress1/wp-content/uploads/2012/03/ranas_UISketches.png"><img class="alignnone size-full wp-image-921" title="ranas_UISketches" src="http://eliolhan.com/wordpress1/wp-content/uploads/2012/03/ranas_UISketches.png" alt="" width="500" height="400" /></a></p>
<p>Then I detailed how I would implement the parts.</p>
<p><a href="http://eliolhan.com/wordpress1/wp-content/uploads/2012/03/ranas_detailedNotes.png"><img class="alignnone size-full wp-image-922" title="ranas_detailedNotes" src="http://eliolhan.com/wordpress1/wp-content/uploads/2012/03/ranas_detailedNotes.png" alt="" width="500" height="400" /></a></p>
<p>Later, I started to become concerned about the time this was taking. While I was careful to budget more than the usual two days, I now realized I&#8217;d been working on the editor for a <em>month</em>. I was only 1/3 finished and <em>couldn&#8217;t make a single full level yet</em>.</p>
<p><a href="http://eliolhan.com/wordpress1/wp-content/uploads/2012/03/doh.jpg"><img class="alignnone size-full wp-image-911" title="doh" src="http://eliolhan.com/wordpress1/wp-content/uploads/2012/03/doh.jpg" alt="" width="321" height="400" /></a></p>
<p>This led me to reassess the value of the project. I decided to scale back and adapt existing work, rather than call a halt. I&#8217;d determine the <em>most awkward</em> <em>part</em> of the current workflow and <em>improve just that</em>.</p>
<p>Once I decided this, I built a few levels using a horribly primitive and tedious workflow.  I needed Xcode, Property List Editor, Apple Mail, TextWrangler, PasteBot, both my old and new level editors and the game running on the iPhone. <em>Madness</em>.</p>
<p>Still, after making a few levels this way, it became clearer what would make the process <em>slightly easier</em>. I took a few days to add it, then went back to making levels. I repeated this cycle a few times and now I&#8217;m up to Level 26 of 36. The process is still hard work, but it&#8217;s manageably complex. If I see some simple tweak, I&#8217;ll add it, but no more thoughts of some <a href="http://en.wikipedia.org/wiki/Law_of_the_instrument">universal nail driver tool what pounds all kinds of nail real good</a>.</p>
<p>Here&#8217;re some screens.</p>
<p><a href="http://eliolhan.com/wordpress1/wp-content/uploads/2012/03/ranas_stageBuilderScreen.png"><img class="alignnone size-full wp-image-923" title="ranas_stageBuilderScreen" src="http://eliolhan.com/wordpress1/wp-content/uploads/2012/03/ranas_stageBuilderScreen.png" alt="" width="500" height="375" /></a></p>
<p><a href="http://eliolhan.com/wordpress1/wp-content/uploads/2012/03/ranas_timeStepperScreen_sm.png"><img class="alignnone size-full wp-image-924" title="ranas_timeStepperScreen_sm" src="http://eliolhan.com/wordpress1/wp-content/uploads/2012/03/ranas_timeStepperScreen_sm.png" alt="" width="500" height="375" /></a></p>
<p><strong>Time spent:</strong> 2 months</p>
<p><strong>Lessons learned:</strong> Start with a primitive workflow and fix the single worst pain point that can be solved in a few days work. Baby steps. Or rather, small bets.</p>
<p><strong>Mistakes made:</strong> I didn&#8217;t keep a close connection between theoretical features and actual workflow improvement. Didn&#8217;t work in small enough sprints so the cost of mistakes was still high. Well-designed features or well-built code that solves the wrong problem is a subtle failure mode.</p>
<p><strong>What I did right:</strong> I&#8217;ve been alternating between game development and very small practice projects. I&#8217;ve learned so much that it&#8217;s completely been worth the diverted time. The key is keeping them small and short. Also, Unit Tests up the <a href="http://www.urbandictionary.com/define.php?term=wazoo">wazoo</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://eliolhan.com/wordpress1/2012/04/01/the-level-editor-sprint-pt-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Level Editor Sprint, Pt.3</title>
		<link>http://eliolhan.com/wordpress1/2012/03/17/the-level-editor-sprint-pt-3/</link>
		<comments>http://eliolhan.com/wordpress1/2012/03/17/the-level-editor-sprint-pt-3/#comments</comments>
		<pubDate>Sun, 18 Mar 2012 06:34:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[iDevBlogADay]]></category>
		<category><![CDATA[process]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[complexity]]></category>
		<category><![CDATA[lessons learned]]></category>
		<category><![CDATA[level editor]]></category>
		<category><![CDATA[rework]]></category>
		<category><![CDATA[THE OCTOBER GAME]]></category>

		<guid isPermaLink="false">http://eliolhan.com/wordpress1/?p=903</guid>
		<description><![CDATA[My second attempt at a level editor for THE OCTOBER GAME was a useful failure. A few months after my last effort, I wanted to try a new method of app development. Previously, I tended to write code in a &#8230; <a href="http://eliolhan.com/wordpress1/2012/03/17/the-level-editor-sprint-pt-3/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>My second attempt at a level editor for <strong><span style="color: #945206;">THE OCTOBER GAME</span></strong> was a useful failure.</p>
<p>A few months after my <a href="http://eliolhan.com/wordpress1/2012/03/03/the-level-editor-sprint-pt-2/">last effort</a>, I wanted to try a new method of app development. Previously, I tended to write code in a big burst of activity. That&#8217;s fine for very small projects but if code grew past a certain threshold it became <em>really</em> hard to work with. It was like driving successively larger vehicles on wet sand. A bike is no problem, a car is harder, a semi-truck becomes impossible to steer or back up. It gets more attractive to just abandon it and start over. So the new way was to build smaller, more independent bits of functionality. That way I&#8217;d have something useful whether the full project succeeded or not.</p>
<p><a href="http://eliolhan.com/wordpress1/wp-content/uploads/2012/03/FrogGameLevelEditor.png"><img class="alignnone size-full wp-image-906" title="FrogGameLevelEditor" src="http://eliolhan.com/wordpress1/wp-content/uploads/2012/03/FrogGameLevelEditor.png" alt="" width="400" height="400" /></a></p>
<p>I started at the most basic level: A button that switches between states and shows images reflecting that state.</p>
<p><a href="http://eliolhan.com/wordpress1/wp-content/uploads/2012/03/multi-state-curves.png"><img class="alignnone size-full wp-image-907" title="multi-state-curves" src="http://eliolhan.com/wordpress1/wp-content/uploads/2012/03/multi-state-curves.png" alt="" width="400" height="219" /></a></p>
<p><a href="http://eliolhan.com/wordpress1/wp-content/uploads/2012/03/multi-state-types.png"><img class="alignnone size-full wp-image-908" title="multi-state-types" src="http://eliolhan.com/wordpress1/wp-content/uploads/2012/03/multi-state-types.png" alt="" width="400" height="219" /></a></p>
<p>Then I grouped those multi-state buttons into a cell.</p>
<p><a href="http://eliolhan.com/wordpress1/wp-content/uploads/2012/03/enemySpecCell.png"><img class="alignnone size-full wp-image-909" title="enemySpecCell" src="http://eliolhan.com/wordpress1/wp-content/uploads/2012/03/enemySpecCell.png" alt="" width="218" height="216" /></a></p>
<p>Multiple cells would be grouped into a more complex control, an AttackGroup strip.</p>
<p><a href="http://eliolhan.com/wordpress1/wp-content/uploads/2012/03/attackGroupStripScreen.png"><img class="alignnone size-full wp-image-910" title="attackGroupStripScreen" src="http://eliolhan.com/wordpress1/wp-content/uploads/2012/03/attackGroupStripScreen.png" alt="" width="384" height="512" /></a></p>
<p>Those would be grouped into levels. Levels would be grouped into a whole Game. Then I&#8217;d have some method of transferring the data to the actual game app. That all sounds pretty complicated, right? The big idea was to construct the smallest, simplest useful bit and re-evaluate at each stage. If it started to go wrong, or I needed to work on something else, I&#8217;d at least have the last completed part to use.</p>
<p>In fact, something did go wrong. As I completed the AttackGroup strip, I realized I couldn&#8217;t specify two enemies in the same lane yet going in opposite directions.</p>
<p><a href="http://eliolhan.com/wordpress1/wp-content/uploads/2012/03/doh.jpg"><img class="alignnone size-full wp-image-911" title="doh" src="http://eliolhan.com/wordpress1/wp-content/uploads/2012/03/doh.jpg" alt="" width="321" height="400" /></a></p>
<p>Not only was this configuration allowed by the game rules, it played a critical role in making levels more challenging. Since I was near the limit of my programming skill, I had to either stop here or devote <a href="http://www.urbandictionary.com/define.php?term=fuck%20that%20noise">an indeterminate amount of time to research</a>. Then I&#8217;d have to redesign the control. Then I&#8217;d continue work until I reached my limit again.</p>
<p>I decided I didn&#8217;t have the skills yet so I halted the level editor project and went back to work on the main game app. Even so, I used the AttackGroup strip control many, many times to generate individual AttackGroups, which I hand-edited into game levels.</p>
<p><strong>Time spent</strong>: 2 days</p>
<p><strong>Lessons learned</strong>: Spend more time planning before coding, to avoid dead-ends. Budget research time for more complicated work.</p>
<p><strong>Mistakes made</strong>: Got too focussed on fine details and not the big picture. Let myself get discouraged by mistakes.</p>
<p><strong>To do</strong>: Improve general coding and design skills with small side projects.</p>
<p>In the following months, I continued developing <strong><span style="color: #945206;">THE OCTOBER GAME</span></strong>, increased performance and fixed <a href="http://www.urbandictionary.com/define.php?term=metric%20fuckton">tons</a> of bugs. I recently reached the point where all the features in the game were in place. Except for lots of fun, playable levels. To do that, I would need an editor.</p>
<p><em>To be continued.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://eliolhan.com/wordpress1/2012/03/17/the-level-editor-sprint-pt-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Level Editor Sprint, Pt.2</title>
		<link>http://eliolhan.com/wordpress1/2012/03/03/the-level-editor-sprint-pt-2/</link>
		<comments>http://eliolhan.com/wordpress1/2012/03/03/the-level-editor-sprint-pt-2/#comments</comments>
		<pubDate>Sat, 03 Mar 2012 23:58:47 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Technical]]></category>
		<category><![CDATA[iDevBlogADay]]></category>
		<category><![CDATA[process]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[complexity]]></category>
		<category><![CDATA[lessons learned]]></category>
		<category><![CDATA[level editor]]></category>
		<category><![CDATA[rework]]></category>
		<category><![CDATA[THE OCTOBER GAME]]></category>

		<guid isPermaLink="false">http://eliolhan.com/wordpress1/?p=893</guid>
		<description><![CDATA[My first attempt at a level editor for THE OCTOBER GAME was an instructive failure. Writing code is fun and this leads me to jump into projects, then drown in rising complexity. To counteract this, I try the simplest thing &#8230; <a href="http://eliolhan.com/wordpress1/2012/03/03/the-level-editor-sprint-pt-2/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>My first attempt at a level editor for <strong><span style="color: #945206;">THE OCTOBER GAME</span></strong> was an instructive failure.</p>
<p>Writing code is fun and this leads me to jump into projects, then drown in rising complexity. To counteract this, I try <a href="http://www.extremeprogramming.org/rules/simple.html">the simplest thing that could possibly work</a>.</p>
<p>The <em>simplest</em> thing was <em>no</em> level editor, but that had it&#8217;s own problems. As I <a href="http://eliolhan.com/wordpress1/2012/02/18/the-level-editor-sprint-part-1/">mentioned before</a>, it was possible to make levels by specifying all the attributes of each enemy by type, direction, motion curve, number of flybys and flight lane.</p>
<p><a href="http://eliolhan.com/wordpress1/wp-content/uploads/2012/03/enemy-datum.png"><img class="alignnone size-full wp-image-895" title="enemy-datum" src="http://eliolhan.com/wordpress1/wp-content/uploads/2012/03/enemy-datum.png" alt="" width="500" height="357" /></a></p>
<p>A column of enemies was called an <em>AttackGroup</em>. A set of AttackGroups made up a <em>Level</em>. A set of Levels made up a <em>Game</em>.</p>
<p><a href="http://eliolhan.com/wordpress1/wp-content/uploads/2012/03/game-entity-hierarchy.png"><img class="alignnone size-full wp-image-896" title="game-entity-hierarchy" src="http://eliolhan.com/wordpress1/wp-content/uploads/2012/03/game-entity-hierarchy.png" alt="" width="500" height="500" /></a></p>
<p>The levels would become progressively harder in order to present a real challenge to the player. I figured about thirty would strike a balance between game length and level creation effort. That number was arrived at after due consideration and careful research, and <em>in no way from thin air</em>.</p>
<p>As it turned out, building levels by hand was hard to predict, error-prone and very slow. The obvious solution was to work at a higher level of abstraction. That meant creating a graphical tool to configure enemies and display them interacting in real-time. Ideally, it would output a formatted file to drop into the game app and playtest with.</p>
<p><a href="http://eliolhan.com/wordpress1/wp-content/uploads/2012/03/swarmful_app_icon_med.png"><img class="alignnone size-full wp-image-898" title="swarmful_app_icon_med" src="http://eliolhan.com/wordpress1/wp-content/uploads/2012/03/swarmful_app_icon_med.png" alt="" width="300" height="300" /></a></p>
<p>The big idea was a grid-based editor with motion preview. No need for detailed configuration. Just touches to toggle through the various enemy types laid out in a grid. Time was controlled by a simple slider. I figured I&#8217;d get the basics done and if that went well, I could elaborate later.</p>
<p><span style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; line-height: 19px;"><img class="alignnone size-full wp-image-897" title="Swarmful_interface_sm" src="http://eliolhan.com/wordpress1/wp-content/uploads/2012/03/Swarmful_interface_sm.png" alt="" width="700" height="525" /></span></p>
<p>It took a couple days to get it built and I learned a lot about making custom controls. I was pleased with it until I realized that the simple motion system (just sliding two grids of buttons around), wouldn&#8217;t accommodate an important gameplay feature: multiple enemy flybys. Rather than migrate the animation system from the actual game app, I decided to halt work on the editor and concentrate on more direct game features.</p>
<p><strong>Time spent</strong>: 2 days</p>
<p><strong>Lesson learned</strong>: Start from the lowest level and build up complexity. Compose simple controls into larger ones. Have natural stopping points so the project doesn&#8217;t drag on.</p>
<p><strong>Mistakes made</strong>: Should have planned the design more before coding.</p>
<p>Later, when the pain of hand-building levels grew again, I built another editor.</p>
<p><em>To be continued.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://eliolhan.com/wordpress1/2012/03/03/the-level-editor-sprint-pt-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Emperor Penguin</title>
		<link>http://eliolhan.com/wordpress1/2012/03/02/emperor-penguin/</link>
		<comments>http://eliolhan.com/wordpress1/2012/03/02/emperor-penguin/#comments</comments>
		<pubDate>Sat, 03 Mar 2012 03:12:30 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[creative]]></category>
		<category><![CDATA[sketch]]></category>
		<category><![CDATA[iSketchADay]]></category>

		<guid isPermaLink="false">http://eliolhan.com/wordpress1/?p=889</guid>
		<description><![CDATA[Faber-Castell PITT artist pen size-S. Tinted in Photoshop CS4.]]></description>
			<content:encoded><![CDATA[<p><a href="http://eliolhan.com/wordpress1/wp-content/uploads/2012/03/Penguin_sm.png"><img class="alignnone size-full wp-image-890" title="Penguin_sm" src="http://eliolhan.com/wordpress1/wp-content/uploads/2012/03/Penguin_sm.png" alt="" width="500" height="591" /></a></p>
<p><em>Faber-Castell PITT artist pen size-S. Tinted in Photoshop CS4.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://eliolhan.com/wordpress1/2012/03/02/emperor-penguin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Level Editor Sprint, part 1</title>
		<link>http://eliolhan.com/wordpress1/2012/02/18/the-level-editor-sprint-part-1/</link>
		<comments>http://eliolhan.com/wordpress1/2012/02/18/the-level-editor-sprint-part-1/#comments</comments>
		<pubDate>Sun, 19 Feb 2012 05:37:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Technical]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[creative]]></category>
		<category><![CDATA[iDevBlogADay]]></category>
		<category><![CDATA[process]]></category>
		<category><![CDATA[sketch]]></category>
		<category><![CDATA[complexity]]></category>
		<category><![CDATA[level editor]]></category>
		<category><![CDATA[THE OCTOBER GAME]]></category>

		<guid isPermaLink="false">http://eliolhan.com/wordpress1/?p=868</guid>
		<description><![CDATA[Early on, I decided the THE OCTOBER GAME would have designed levels rather than random ones. That decision led to significant complexity, here&#8217;s how: The core of the game is simple, the player jumps up to hit enemies flying across &#8230; <a href="http://eliolhan.com/wordpress1/2012/02/18/the-level-editor-sprint-part-1/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Early on, I decided the <strong><span style="color: #945206;">THE OCTOBER GAME</span></strong> would have <em>designed</em> levels rather than <em>random</em> ones. That decision led to significant complexity, here&#8217;s how:</p>
<p>The core of the game is simple, the player jumps up to hit enemies flying across the screen.</p>
<p><a href="http://eliolhan.com/wordpress1/wp-content/uploads/2012/02/core_mechanic.png"><img class="alignnone size-full wp-image-871" title="core_mechanic" src="http://eliolhan.com/wordpress1/wp-content/uploads/2012/02/core_mechanic.png" alt="" width="500" height="300" /></a></p>
<p>As a complication, some enemies are good to hit and some are bad.</p>
<p><a href="http://eliolhan.com/wordpress1/wp-content/uploads/2012/02/good_enemy_vs_bad.png"><img class="alignnone size-full wp-image-872" title="good_enemy_vs_bad" src="http://eliolhan.com/wordpress1/wp-content/uploads/2012/02/good_enemy_vs_bad.png" alt="" width="500" height="300" /></a></p>
<p>The game needed variety so I made multiple kinds of good hits: food and bonus.</p>
<p><a href="http://eliolhan.com/wordpress1/wp-content/uploads/2012/02/food_and_bonus_types.png"><img class="alignnone size-full wp-image-873" title="food_and_bonus_types" src="http://eliolhan.com/wordpress1/wp-content/uploads/2012/02/food_and_bonus_types.png" alt="" width="500" height="300" /></a></p>
<p>Further subtypes allow for different scores, behaviors and appearance. The system could be expanded as far as I wanted. For this small game, I wound up with six kinds of enemy. Three food types, two bonus types, one danger type,  plus an invisible null type, used for spacing. They&#8217;re rather small on screen and they move fast so I kept the colors simple.</p>
<p><a href="http://eliolhan.com/wordpress1/wp-content/uploads/2012/02/full_cast.png"><img class="alignnone size-full wp-image-881" title="full_cast" src="http://eliolhan.com/wordpress1/wp-content/uploads/2012/02/full_cast.png" alt="" width="500" height="300" /></a></p>
<p>I added a few more adjustable parameters like straight and wiggly paths plus different flight directions.</p>
<p><a href="http://eliolhan.com/wordpress1/wp-content/uploads/2012/02/curves_and_directions.png"><img class="alignnone size-full wp-image-874" title="curves_and_directions" src="http://eliolhan.com/wordpress1/wp-content/uploads/2012/02/curves_and_directions.png" alt="" width="500" height="300" /></a></p>
<p>Movement is restricted to five flight lanes so I could predictably stack columns of enemies or put danger closer to the player.</p>
<p><a href="http://eliolhan.com/wordpress1/wp-content/uploads/2012/02/lanes.png"><img class="alignnone size-full wp-image-875" title="lanes" src="http://eliolhan.com/wordpress1/wp-content/uploads/2012/02/lanes.png" alt="" width="500" height="300" /></a></p>
<p>This allowed 350 variations for each column of enemies.</p>
<p><a href="http://eliolhan.com/wordpress1/wp-content/uploads/2012/02/columns.png"><img class="alignnone size-full wp-image-876" title="columns" src="http://eliolhan.com/wordpress1/wp-content/uploads/2012/02/columns.png" alt="" width="500" height="300" /></a></p>
<p>Along with speed and spacing, that would allow enough variation to design fun levels.</p>
<p>And that&#8217;s how you get complexity from a tiny number of adjustable parameters. If I hadn&#8217;t started simple, adding variety would have quickly become overwhelming.</p>
<p>While it wasn&#8217;t that hard to generate a few levels by hand, it soon become impossible to predict the <em>feel</em> of a level just by looking at this:</p>
<p><a href="http://eliolhan.com/wordpress1/wp-content/uploads/2012/02/raw_level_spec_example.png"><img class="alignnone size-full wp-image-878" title="raw_level_spec_example" src="http://eliolhan.com/wordpress1/wp-content/uploads/2012/02/raw_level_spec_example.png" alt="" width="500" height="300" /></a></p>
<p>So I needed to construct a level editor, which was harder than I expected.</p>
<p><a href="http://www.dramabutton.com/">Dun dun duuuun</a>!</p>
<p><em>To be continued.</em></p>
<p><a href="http://eliolhan.com/wordpress1/wp-content/uploads/2012/02/enemy_spec_cell.png"><img class="alignnone size-full wp-image-877" title="enemy_spec_cell" src="http://eliolhan.com/wordpress1/wp-content/uploads/2012/02/enemy_spec_cell.png" alt="" width="500" height="300" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://eliolhan.com/wordpress1/2012/02/18/the-level-editor-sprint-part-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
