<?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>Sun, 29 Apr 2012 07:29:19 +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>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[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[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[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>
		<item>
		<title>The New Year Cleanup Sprint, a post-mortem</title>
		<link>http://eliolhan.com/wordpress1/2012/01/21/the-new-year-cleanup-sprint-a-post-mortem/</link>
		<comments>http://eliolhan.com/wordpress1/2012/01/21/the-new-year-cleanup-sprint-a-post-mortem/#comments</comments>
		<pubDate>Sun, 22 Jan 2012 04:08:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Technical]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[iDevBlogADay]]></category>
		<category><![CDATA[process]]></category>
		<category><![CDATA[mini post-mortem]]></category>
		<category><![CDATA[THE OCTOBER GAME]]></category>

		<guid isPermaLink="false">http://eliolhan.com/wordpress1/?p=848</guid>
		<description><![CDATA[What came before At the end of last month, I transplanted THE OCTOBER GAME to a fresh app template. For the next week, I fixed lots of niggling little bugs, did more code cleanup, then another round of tweaking artwork. &#8230; <a href="http://eliolhan.com/wordpress1/2012/01/21/the-new-year-cleanup-sprint-a-post-mortem/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<h3>What came before</h3>
<p>At the end of last month, I <a href="http://eliolhan.com/wordpress1/2011/12/25/the-game-core-transplant-a-sprint-post-mortem/">transplanted</a> <strong><span style="color: #945206;">THE OCTOBER GAME</span></strong> to a fresh app template. For the next week, I fixed lots of niggling little bugs, did more code cleanup, then another round of tweaking artwork. I also added a graphical display of lives, progress and score to the Play screen.</p>
<p><a href="http://eliolhan.com/wordpress1/wp-content/uploads/2012/01/frogGameInfoDisplay1.png"><img class="alignnone size-full wp-image-852" title="frogGameInfoDisplay" src="http://eliolhan.com/wordpress1/wp-content/uploads/2012/01/frogGameInfoDisplay1.png" alt="" width="320" height="480" /></a></p>
<p>The last week or so was dedicated to rebuilding the Settings, Scores and About screens.</p>
<p><a href="http://eliolhan.com/wordpress1/wp-content/uploads/2012/01/newYearsProgress.png"><img class="alignnone size-full wp-image-853" title="newYearsProgress" src="http://eliolhan.com/wordpress1/wp-content/uploads/2012/01/newYearsProgress.png" alt="" width="600" height="320" /></a></p>
<p>I&#8217;d implemented quick &amp; dirty versions before but now was time to flesh them out and get the art style up-to-date. These areas were simpler than the Play screen since they didn&#8217;t have to manage a lot of real-time animation. Even so, art had to be planned, built, processed and revised over several iterations.</p>
<p><a href="http://eliolhan.com/wordpress1/wp-content/uploads/2012/01/frogAvatar_crop2.png"><img class="alignnone size-full wp-image-862" title="frogAvatar_crop2" src="http://eliolhan.com/wordpress1/wp-content/uploads/2012/01/frogAvatar_crop2.png" alt="A sneak peek" width="600" height="298" /></a></p>
<p>Next, I wanted to get a feel for the project as a whole. I&#8217;m visually-oriented so I thought I&#8217;d start out with a <a href="http://en.wikipedia.org/wiki/Dependency_graph">dependency graph</a> of all the classes.  Unfortunately the Class Model feature was removed from Xcode 4. Luckily for me, <a href="http://seriot.ch/index.php">Nicolas Seriot</a> wrote a very useful python script called <a href="https://github.com/nst/objc_dep">objc_dep.py</a> to generate a <a href="http://www.graphviz.org/">GraphViz</a> file showing dependencies.</p>
<p>The raw graph it creates is a bit, ahem… dense.</p>
<p><a href="http://eliolhan.com/wordpress1/wp-content/uploads/2012/01/denseRawClasses.png"><img class="alignnone size-full wp-image-854" title="denseRawClasses" src="http://eliolhan.com/wordpress1/wp-content/uploads/2012/01/denseRawClasses.png" alt="" width="600" height="144" /></a></p>
<p>I hand-edited it to take out most cocos2d classes and that cut the node count by half.</p>
<p><a href="http://eliolhan.com/wordpress1/wp-content/uploads/2012/01/gottaEat_1235_ed.png"><img class="alignnone size-full wp-image-855" title="gottaEat_1235_ed" src="http://eliolhan.com/wordpress1/wp-content/uploads/2012/01/gottaEat_1235_ed.png" alt="" width="600" height="301" /></a></p>
<p><a href="http://tvtropes.org/pmwiki/pmwiki.php/Main/SarcasmMode">Muuuuch better</a>. Yet it was still <a href="http://tvtropes.org/pmwiki/pmwiki.php/Main/Understatement">hard to get a clear picture</a>. While the alternative graph editor <a href="http://www.yworks.com/en/products_yed_about.html">yEd</a> offers better layout controls, it doesn&#8217;t read GraphViz formats (.dot or .gv). To convert it, I found another python script called <a href="http://www.mydarc.de/dl9obn/programming/python/dottoxml/">dottoxml.py</a> by Dirk Baechle. With some jiggery-pokery in yEd, I got it looking more organized.</p>
<p><a href="http://eliolhan.com/wordpress1/wp-content/uploads/2012/01/gameStructureSchematicClusterA.png"><img class="alignnone size-full wp-image-856" title="gameStructureSchematicClusterA" src="http://eliolhan.com/wordpress1/wp-content/uploads/2012/01/gameStructureSchematicClusterA.png" alt="" width="800" height="221" /></a></p>
<p>This helped me get a feel for the app structure. Then I was able to do some refactoring to clarify the intent of the code. I found a few loose ends. OCD says what?</p>
<p><a href="http://eliolhan.com/wordpress1/wp-content/uploads/2012/01/scary-surgery2.png"><img class="alignnone size-full wp-image-857" title="scary-surgery2" src="http://eliolhan.com/wordpress1/wp-content/uploads/2012/01/scary-surgery2.png" alt="" width="700" height="377" /></a></p>
<p>Other than a memory warning, there haven&#8217;t been any real surprises in this last sprint. I&#8217;m sure writing that will, in no way, come back to haunt me.</p>
<h3>What I learned</h3>
<ul>
<li>It helps to break down future tasks a day in advance.</li>
<li>Planning is a task in itself and takes a lot of mental energy.</li>
<li>My master chart helps me stay focussed on the right work and not go on tangents.</li>
</ul>
<h3>What went right</h3>
<ul>
<li>Held my productivity to 80% of my peak. Suck it, <a href="http://en.wikipedia.org/wiki/Regression_to_the_mean">regression to the mean</a>.</li>
<li>Learned to break down tasks even more finely, whenever I felt stalled.</li>
<li>Kept focus by frequently referring to my master task chart.</li>
<li>All screens are fully functional. If you put a gun to my head, I could release this month. With no music, no marketing and a few sound bugs, so no.</li>
</ul>
<h3>What went wrong</h3>
<ul>
<li>If I finished a task, like artwork creation, it was <em>very</em> hard to switch to sound editing or coding in the same day. I&#8217;m not sure how to overcome this yet.</li>
<li>Performance problems keep recurring on older hardware (iPhone 3G, I&#8217;m looking at you). I&#8217;m a hair&#8217;s breadth from dropping support for older devices entirely. A good cutoff point seems like the iOS 5 barrier. I would probably have to buy a iPod Touch 3rd-generation to test on. <a href="http://www.hindrances.com/2012/01/17/on-suffering-for-your-work/">How I suffer for my art</a>.</li>
</ul>
<h3>What&#8217;s next</h3>
<ul>
<li>Building out and play-testing levels.</li>
<li>Polishing the background art.</li>
<li>Product landing page on the web site.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://eliolhan.com/wordpress1/2012/01/21/the-new-year-cleanup-sprint-a-post-mortem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jeepers Veepers</title>
		<link>http://eliolhan.com/wordpress1/2012/01/21/jeepers-veepers/</link>
		<comments>http://eliolhan.com/wordpress1/2012/01/21/jeepers-veepers/#comments</comments>
		<pubDate>Sun, 22 Jan 2012 00:36:37 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Ideas]]></category>
		<category><![CDATA[creative]]></category>
		<category><![CDATA[sketch]]></category>
		<category><![CDATA[iSketchADay]]></category>

		<guid isPermaLink="false">http://eliolhan.com/wordpress1/?p=842</guid>
		<description><![CDATA[An #iSketchADay entry revisited. Gel pen on index card. Colorized in Photoshop CS4 Extended.]]></description>
			<content:encoded><![CDATA[<p><a href="http://eliolhan.com/wordpress1/wp-content/uploads/2012/01/Veepers_sm.png"><img class="alignnone size-full wp-image-843" title="Veepers_sm" src="http://eliolhan.com/wordpress1/wp-content/uploads/2012/01/Veepers_sm.png" alt="" width="500" height="337" /></a></p>
<p>An #<a href="https://twitter.com/#!/WillCulpepper/status/159912475129679873">iSketchADay</a> entry revisited.</p>
<p><em>Gel pen on index card. Colorized in Photoshop CS4 Extended.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://eliolhan.com/wordpress1/2012/01/21/jeepers-veepers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Toothy little critter</title>
		<link>http://eliolhan.com/wordpress1/2012/01/06/toothy-little-critter/</link>
		<comments>http://eliolhan.com/wordpress1/2012/01/06/toothy-little-critter/#comments</comments>
		<pubDate>Fri, 06 Jan 2012 23:22:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[shiny]]></category>
		<category><![CDATA[sketch]]></category>
		<category><![CDATA[critter]]></category>
		<category><![CDATA[toothy]]></category>
		<category><![CDATA[ViaCAD]]></category>

		<guid isPermaLink="false">http://eliolhan.com/wordpress1/?p=838</guid>
		<description><![CDATA[Where this came from, I do not know. Better inside your head than mine. ViaCAD Pro 7 glass render preset with tinting in Photoshop.]]></description>
			<content:encoded><![CDATA[<p><a href="http://eliolhan.com/wordpress1/wp-content/uploads/2012/01/toothy_dot_sm.png"><img class="alignnone size-full wp-image-839" title="toothy_dot_sm" src="http://eliolhan.com/wordpress1/wp-content/uploads/2012/01/toothy_dot_sm.png" alt="" width="400" height="378" /></a></p>
<p>Where this came from, I do not know. Better inside your head than mine.</p>
<p><em>ViaCAD Pro 7 glass render preset with tinting in Photoshop.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://eliolhan.com/wordpress1/2012/01/06/toothy-little-critter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Game Core Transplant, a sprint post-mortem</title>
		<link>http://eliolhan.com/wordpress1/2011/12/25/the-game-core-transplant-a-sprint-post-mortem/</link>
		<comments>http://eliolhan.com/wordpress1/2011/12/25/the-game-core-transplant-a-sprint-post-mortem/#comments</comments>
		<pubDate>Sun, 25 Dec 2011 08:53:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Technical]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[iDevBlogADay]]></category>
		<category><![CDATA[process]]></category>
		<category><![CDATA[mini post-mortem]]></category>
		<category><![CDATA[sprint]]></category>
		<category><![CDATA[THE OCTOBER GAME]]></category>

		<guid isPermaLink="false">http://eliolhan.com/wordpress1/?p=827</guid>
		<description><![CDATA[After regenerating all the art assets, it was time to move THE OCTOBER GAME core to a fresh app template. The game architecture had changed over the months, leaving the project with lots of cruft. Classes had unused methods, or &#8230; <a href="http://eliolhan.com/wordpress1/2011/12/25/the-game-core-transplant-a-sprint-post-mortem/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>After <a href="http://eliolhan.com/wordpress1/2011/12/10/art-regeneration-sprint-a-mini-post-mortem/">regenerating all the art assets</a>, it was time to move <strong><span style="color: #945206;">THE OCTOBER GAME</span></strong> core to a fresh app template. The game architecture had changed over the months, leaving the project with lots of cruft. Classes had unused methods, or had been superseded. Many, many obsolete variations of artwork and sounds were cluttering up the <em>Resources</em> folder. The AppDelegate had accumulated tons of helper functions…you get the idea.</p>
<p>By moving into a new Xcode project I could consolidate and toss old stuff without taking the risk of breaking the app. Getting your game into an unusable state is really terrible for morale, even temporarily. I didn&#8217;t have any experience with source control until recently, so all my exploratory development was done manually, like an animal. For instance, I&#8217;d rebuilt the audio and multitasking managers in a separate app to isolate them. Now they were tested and ready for re-integration.</p>
<p>This was also a chance to try out new ideas on how to be more productive. By keeping a daily running average and doing my coding earlier in the day, I essentially <em>doubled my productivity</em> compared to last month. I also did more fine-grained time estimation, but that was less effective. Most subtasks took twice as many steps as I predicted beforehand. Improving that is an ongoing project.</p>
<p>The master progress chart I started this summer is finally <em>shrinking</em> instead of growing. Here&#8217;s what I just got done with:</p>
<p><a href="http://eliolhan.com/wordpress1/wp-content/uploads/2011/12/transplant_sprint_sm.png"><img class="alignnone size-full wp-image-830" title="transplant_sprint_sm" src="http://eliolhan.com/wordpress1/wp-content/uploads/2011/12/transplant_sprint_sm.png" alt="" width="800" height="403" /></a></p>
<p>And the remaining work (as far as I can predict). The real story is in the end nodes.</p>
<p><a href="http://eliolhan.com/wordpress1/wp-content/uploads/2011/12/FrogGameRemaining20111218b_sm.png"><img class="alignnone size-full wp-image-831" title="FrogGameRemaining20111218b_sm" src="http://eliolhan.com/wordpress1/wp-content/uploads/2011/12/FrogGameRemaining20111218b_sm.png" alt="" width="800" height="971" /></a></p>
<p>Progress!</p>
]]></content:encoded>
			<wfw:commentRss>http://eliolhan.com/wordpress1/2011/12/25/the-game-core-transplant-a-sprint-post-mortem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

