<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>ShaunInman.com // plus Elsewhere</title>
<link>http://www.shauninman.com/</link>
<description></description>
<copyright>Copyright 2001-2012 Shaun Inman</copyright>
<generator>Shaun Inman&#8217;s Bookend</generator>
<docs>http://blogs.law.harvard.edu/tech/rss</docs>
<lastBuildDate>Thu, 24 May 2012 15:21:37 GMT</lastBuildDate>

<item>
	<title>Jimjam Jimjam Panic</title>
	<description><![CDATA[<p>My submission to the <a href="http://sworcery.tumblr.com/">Sworcery AV Jam</a> answering soundtrack composer Jim Guthrie&#8217;s <a href="http://twitter.com/jampants/status/199998485116891136">call</a>. <a href="http://sworcery.tumblr.com/post/22848087803/a-wild-trigon-appeared-pixels-by-paul-veer">Lots</a> <a href="http://sworcery.tumblr.com/post/22844861443/woe-painting-by-david-lanham-aka-dlanham">of</a> <a href="http://sworcery.tumblr.com/post/22786893392/bloun-sworcery-pixel-painting-by-vic-nguyen">beautiful</a> <a href="http://sworcery.tumblr.com/post/22730487276/maybe-a-time-of-miracles-music-by-marius">work</a> in there.  <a href="http://www.shauninman.com/archive/2012/05/11/jimjam_jimjam_panic">&#x25CF;</a></p>]]></description>
	<link>http://shauninman.com/feeder/?FeederAction=clicked&amp;feed=Complete+Plus&amp;seed=http%3A%2F%2Fsworcery.tumblr.com%2Fpost%2F22845274485%2Fjimjam-jimjam-panic-nes-retcon-by-shaun-inman&amp;seed_title=Jimjam+Jimjam+Panic</link>
	<guid isPermaLink="false">1568@http://www.shauninman.com/</guid>
	<category>Collaborations</category><category>Design</category><category>Music</category><category>Elsewhere</category><category>Gaming</category>
	<pubDate>Fri, 11 May 2012 19:41:00 GMT</pubDate>
</item>
<item>
	<title>Millinaut Postmortem</title>
	<description><![CDATA[<p>This past weekend <a href="http://www.ludumdare.com">Ludum Dare</a> celebrated its tenth anniversary. Ten years of crazy people going it alone to create a game in 48 hours. Two years ago they expanded the event to allow teams to participate in a separate but concurrent 72 hour jam. This is my fourth Ludum Dare (<a href="/archive/2011/05/02/breathing_room_postmortem">1</a>, <a href="/archive/2011/08/22/data_entry_sentry_postmortem">2</a>, <a href="/archive/2011/12/21/sinkhole_postmortem">3</a>) but my first as a jam participant. I teamed up with <a href="http://mrgan.com/">Neven Mrgan</a> and <a href="http://alexogle.com/">Alex Ogle</a> to create <a href="/ludumdare/millinaut/">Millinaut</a>.</p>

<p><a href="/ludumdare/millinaut/"><img src="/assets/images/millinaut.png" alt="" title="" /></a></p>

<p>Neven was working from Portland and Alex and I from Chattanooga in the <a href="http://tubatomic.com">Tubatomic</a> offices. (Trivia: The Tub offices are above an event space that hosted <em>two</em> proms during this event.) We used <a href="http://db.tt/OYPKyTRx">Dropbox</a> to share files and Skype to bridge the two locations. (Did you know that on the iPad 3 video chat will drain the battery faster than USB can charge it? Neither did I.) We did very little preparation in advance of the theme annoucement. I made sure <a href="http://www.adobe.com/products/flash-builder.html">Flash Builder</a> still worked and figured out how to import <a href="http://www.mapeditor.org">Tiled</a> maps into <a href="http://flixel.org">Flixel</a>. </p>

<p>As Neven <a href="http://mrgan.tumblr.com/post/21695065510/millinaut">said</a>, &#8220;Flash, lol&#8221;. Why Flash instead of HTML5? My last two Ludum Dare games were HTML5 and the results were really lackluster. Zero to poor audio support, terrible mobile performance, and ugh, the choice between anti-aliasing or memory devouring in-canvas scaling. I&#8217;d rather create a good experience on one platform than a poor experience on many.</p>

<p>Like everyone else we got the theme &#8220;Tiny World&#8221; at 9 Eastern/6 Pacific on Friday night. While brainstorming we touched on Liliputians, Innerspace, and Alan Moore&#8217;s Voice of the Fire. We talked about the myriad things that can happen in small spaces, phonebooths, hotels, airplane cabins, and in our own heads. About small physical spaces observed over huge stretches of time. The idea of splitting yourself into smaller and smaller pieces and using the discarded pieces to progress. </p>

<p>An early narrative saw the player in a coma, wandering around inside his own head, piecing together the experiences that lead him to and eventually out of his current predicament. Was he a heroic fireman or a poisoned king? A victim of a drowning or a car accident? An astronaut knocked unconscious during reentry? We talked about additive level design where the entire game would play out in one room with each colected item filling in a narrative blank and adding more detail and new challenges to the game world. A player would control ego, super ego and id. The idea of an introspective totem pole eventually lead to the segmented gameplay mechanic.</p>

<p>While Neven pixelled the protagonist and Alex developed gameplay ideas and continued exploring narrative options I stumbled through <a href="http://pixelpracht.wordpress.com/2010/03/31/flash-tmx-parser/">loading tmx files</a>. Within a couple hours we had the core dropping heads and using them as platforms mechanic working and were able to build and test levels quickly. </p>

<p>Things get blurry here. Collision resolution with a segmented character was really difficult to implement. Adding in enemies and spikes only complicated things. The stack height affects environmental collisions but the damageable hitbox doesn&#8217;t actually change size. Changing the player&#8217;s height caused Flixel&#8217;s camera to shift suddenly or pushed the player into the ground and out the bottom of the level. Once we introduced enemies the idea of activating the heads, one moving up, the other falling was developed. So now the heads had different collision states. For a while you could ride the rocket up the screen (or the planet down) but that ability neutered the challenge of the vertical platforming.</p>

<p>While I continued to debug and add features, Neven and Alex both designed levels to explore the gameplay possibilities. Occasionally Neven would create some new characters or animation sequences. Alex performed the unenviable task of building up a library of sound effects and serving as a second pair of eyes and lobes diagnosing bugs in the game. Early Sunday morning I composed a background theme and slept for the first time since Thursday night (I slept 11 hours total during the event which spanned 72 hours plus the 12 hours before we got the theme).</p>

<p>The final 24 hours were focused on polishing what we already had. Inserting sound effects, composing background music and goal fanfare, fixing bugs, refining enemy and projectile interaction, creating more bugs, setting up autotiling and implementing the parallax starfield. Alex figured out how to get cutscenes created in the Flash IDE <a href="http://flashgamedojo.com/wiki/index.php?title=Cutscene_Template">into Flixel</a> and built those out. Neven trimmed the level fat. We had a bit of a scare at zero hour when the Flash Builder release build wouldn&#8217;t load our external levels so we ended up posting the debug build.</p>

<p>Ludum Dare is always a rewarding experience. You have a deadline and a direction and 48 (or 72) hours to see where they take you. At the end of the weekend you have something that didn&#8217;t exist before. It&#8217;s simultaneously exhausting and rejuvenating. You can <a href="http://tweetlibrary.com/shauninman/millinaut">relive our experience</a> and if you participated you can <a href="http://www.ludumdare.com/compo/ludum-dare-23/?action=preview&amp;uid=11930">rate our game</a>.</p>]]></description>
	<link>http://shauninman.com/feeder/?FeederAction=clicked&amp;feed=Complete+Plus&amp;seed=http%3A%2F%2Fwww.shauninman.com%2Farchive%2F2012%2F04%2F24%2Fmillinaut_postmortem&amp;seed_title=Millinaut+Postmortem</link>
	<guid isPermaLink="false">1567@http://www.shauninman.com/</guid>
	<category>Collaborations</category><category>Gaming</category>
	<pubDate>Tue, 24 Apr 2012 21:38:00 GMT</pubDate>
</item>
<item>
	<title>Flag-free US Keyboard Layout</title>
	<description><![CDATA[<p>I like the OS X Input menu but could do without the pixelated American flag cluttering up my otherwise monochromatic menu bar. So I used <a href="http://scripts.sil.org/ukelele">Ukelele</a> to clone the default Keyboard Layout and added a simple grayscale EN icon that matches the Kotoeri Hiragana, Katakana and Romaji ones. Unzip and add to <code>/~/Library/Keyboard Layouts/</code> then logout and back in. <a href="http://www.shauninman.com/archive/2012/04/04/flag_free_us_keyboard_layout_for_os_x">&#x25CF;</a></p>]]></description>
	<link>http://shauninman.com/feeder/?FeederAction=clicked&amp;feed=Complete+Plus&amp;seed=http%3A%2F%2Fshauninman.com%2Fassets%2Fdownloads%2FU.S.%2520Flag-free.bundle.zip&amp;seed_title=Flag-free+US+Keyboard+Layout</link>
	<guid isPermaLink="false">1566@http://www.shauninman.com/</guid>
	<category>Apple</category><category>Elsewhere</category>
	<pubDate>Thu, 05 Apr 2012 00:31:00 GMT</pubDate>
</item>
<item>
	<title>Level Design, Aspect Ratios &amp; Camera Behavior</title>
	<description><![CDATA[<p>It&#8217;s no secret that I&#8217;m working on a new iOS game. (Nope, not <a href="/archive/2010/02/23/mimeo_and_the_kleptopus_king">Mimeo</a>, still don&#8217;t feel like I have the chops to pull that off. Yet.) While I haven&#8217;t said too much about it yet, like Mimeo, the new game is a 2d platformer targeting both the iPhone/iPod touch and the iPad. The different aspect ratios of the two device types present some unique challenges when designing levels. (Development is overlapping with a number of other projects/responsibilities so I&#8217;ve been lax in my <a href="/liftoff/">development diary</a> duties for this game. <em>*dusts off blog*</em>)</p>

<p>Levels come in four varieties: a single screen tall and wide (room), a single screen tall and multiple screens wide (corridor), a single screen wide and multiple screens tall (shaft), or multiple screens wide and tall (cavern). Like <a href="/lastrocket/">The Last Rocket</a> the new game has an 8-bit aesthetic so a screen on an iPad is 256x192 pixels and 240x160 on an iPhone (both scaled squarely to exact device resolution). </p>

<p><img src="/assets/images/aspect-screens.png" alt="" title="" /></p>

<p>Obviously, a single iPad screen won&#8217;t fit on an iPhone screen without the camera drifting vertically on corridors, horizontally on shafts, or both in rooms and caverns (vertical drift can be minimized with the use of a <a href="http://www.youtube.com/watch?v=nryuCql2k9A">trap</a>). The Last Rocket sidestepped the issue with single iPhone screen sized levels and a tile set that resolves to black so the unused area of the iPad screen is unnoticeable.</p>

<p>The solution I&#8217;ve decided on requires a slightly modified camera behavior and that some simple rules be observed when designing levels.</p>

<p>The camera still follows the trap (instead of the player character) but on the iPhone the camera is snapped to a special bounds rectangle&#8212;unless the player character moves beyond that rectangle. The bounds rectangle is four rows and two columns smaller than the level and offset by two rows and one column from origin.</p>

<p><img src="/assets/images/aspect-bounds.png" alt="" title="" /></p>

<p>Look familiar? On a single screen room, the relationship between the level and the bounds is the same as the relationship between the iPad and iPhone screens. So what happens when the player character moves beyond the bounds? The camera slides to its natural, unsnapped position using the player character&#8217;s current velocity (or a default value when stationary). </p>

<p><img src="/assets/images/aspect-structure.png" alt="" title="" /></p>

<p>The level design considerations are easier to explain. To ensure that an edge is always visible on screen at the edges of a level, the top and bottom three rows and two columns on the left and right must be solid (with obvious exceptions for the doors that connect levels). I also block out some persistent space for the player&#8217;s thumbs (but not on screen buttons!). More on that in another post.</p>]]></description>
	<link>http://shauninman.com/feeder/?FeederAction=clicked&amp;feed=Complete+Plus&amp;seed=http%3A%2F%2Fwww.shauninman.com%2Farchive%2F2012%2F04%2F04%2Flevel_design_aspect_ratios_camera_behavior&amp;seed_title=Level+Design%2C+Aspect+Ratios+%26amp%3B+Camera+Behavior</link>
	<guid isPermaLink="false">1565@http://www.shauninman.com/</guid>
	<category>Design</category><category>Gaming</category>
	<pubDate>Wed, 04 Apr 2012 19:27:00 GMT</pubDate>
</item>
<item>
	<title>Chunks Strategy Guide</title>
	<description><![CDATA[<p>Matt Grimm dissects the iOS port of my Ludum Dare mini-game <a href="/chunks/">Chunks</a> and explains how anyone (with a little patience) can max their score or reach the highest level. <a href="http://www.shauninman.com/archive/2012/03/21/chunks_strategy_guide">&#x25CF;</a></p>]]></description>
	<link>http://shauninman.com/feeder/?FeederAction=clicked&amp;feed=Complete+Plus&amp;seed=http%3A%2F%2F8bitmatt.com%2Fchunks-strategy-guide&amp;seed_title=Chunks+Strategy+Guide</link>
	<guid isPermaLink="false">1564@http://www.shauninman.com/</guid>
	<category>Elsewhere</category><category>Gaming</category>
	<pubDate>Wed, 21 Mar 2012 18:09:00 GMT</pubDate>
</item>
<item>
	<title>Polished MML Bundle</title>
	<description><![CDATA[<p>A couple of weeks ago <a href="http://8bitmatt.com/">Matt Grimm</a> emailed an update to my <a href="/archive/2010/02/13/an_mml_bundle_for_textmate">TextMate MML bundle</a>. The two big adds are multi-line comments and much improved error reporting. The full list of changes follows:</p>

<ul>
<li>Multi-line comments (syntax highlighting and keyboard shortcuts)  <code>cmd + opt + /</code></li>
<li>Quickly change language to mml (shows in the list of other languages that use this shortcut too)  <code>ctrl + shift + opt + m</code></li>
<li>Easier to read ruby in bundle scripts (string interpolation)</li>
<li>Better cleanup. In some cases .h files were still hanging around.</li>
<li>When compiling fails you&#8217;ll know! Shows in a textmate tooltip. (no more guessing if something worked)</li>
</ul>

<p>Thanks Matt!</p>

<p><a href="/assets/downloads/MML.zip">Download</a> the updated bundle.</p>]]></description>
	<link>http://shauninman.com/feeder/?FeederAction=clicked&amp;feed=Complete+Plus&amp;seed=http%3A%2F%2Fwww.shauninman.com%2Farchive%2F2012%2F03%2F21%2Fpolished_mml_bundle&amp;seed_title=Polished+MML+Bundle</link>
	<guid isPermaLink="false">1563@http://www.shauninman.com/</guid>
	<category>Collaborations</category><category>Music</category><category>NSF</category>
	<pubDate>Wed, 21 Mar 2012 18:07:00 GMT</pubDate>
</item>
<item>
	<title>Sprint by South West</title>
	<description><![CDATA[<h2 id="h2-or-almost-the-most-expensive-bus-ride">Or (Almost) The Most Expensive $1 Bus Ride</h2>

<p><img src="/assets/images/run.gif" alt="" title="" /></p>

<p><a href="http://www.jenseninman.com/blog/text/13461106/sxswi">Leslie</a> and I arrived in Austin yesterday for our <a href="http://www.shauninman.com/archive/2005/03/24/a_proposal_at_thirty_four_thousand_feet">seventh SXSW</a>. We use to take a taxi from the airport until we discovered the <a href="http://www.capmetro.org/riding/airport.asp">$1 Capital Metro bus</a> a few years go. This year I did something unbelievably stupid: I forgot my laptop bag on the bus.</p>

<p>We got off at 4th and Congress and walked about a block before I realized what I had done. I immediately broke into a sprint in the direction I thought the bus was headed (it was already out of sight). Hands on my head, muttering, &#8220;Oh fuck, oh fuck, oh fuck&#8221;, I clopped along in my flip-flops for about a block before whipping them off for more speed. I dashed down every cross street, trying to desperately to pull up my mental map of downtown Austin (you don&#8217;t so much navigate Austin at SXSW as you do flock).</p>

<p>As I reached the borders of that map I almost ran past the bus at a stop light. I manically banged on the bus door, hoping the driver would recognize me from exiting minutes earlier and not mistake me for some deranged, barefoot maniac (though he wouldn&#8217;t have been too far off). Fortunately my laptop bag was still aboard, having slid out of sight, under the seat I had occupied.</p>

<p>I am fortunate I was able to intercept the bus before it continued on its way. In the laptop bag was my laptop, my iPad, my DS Lite and a handful of games, our house keys, our sole car key and clicker, and my antibiotics for the obligatory South By Sinus Infection.</p>

<p>There are so many different ways this story could have ended. If we had taken a taxi I might have never seen the bag again. My barefoot sprint could have ended in stitches (there seems to be broken glass everywhere here), or worse, hit by a car or the very bus I was frantically searching for. If Leslie wasn&#8217;t with me I would have had to choose between abandoning my luggage or my livelihood (so long luggage!). I feel bad for all the quantum Shaun&#8217;s that made it this far only to suffer one of these other, less fortunate fates. Sorry guys.</p>

<p><a href="http://tweetlibrary.com/shauninman/sprintby">tl;dr</a></p>]]></description>
	<link>http://shauninman.com/feeder/?FeederAction=clicked&amp;feed=Complete+Plus&amp;seed=http%3A%2F%2Fwww.shauninman.com%2Farchive%2F2012%2F03%2F09%2Fsprint_by_south_west&amp;seed_title=Sprint+by+South+West</link>
	<guid isPermaLink="false">1562@http://www.shauninman.com/</guid>
	<category>Personal</category>
	<pubDate>Fri, 09 Mar 2012 13:44:00 GMT</pubDate>
</item>
<item>
	<title>Lift Off: The Last Rocket Development Diary</title>
	<description><![CDATA[<p>Chockfull of &#8220;what was he thinking?&#8221; and &#8220;whoa&#8212;cool!&#8221; this DRM-free ePub documenting the 140 day development of <a href="/lastrocket/">The Last Rocket</a> includes hundreds of screenshots and tweets plus video and audio. <a href="http://www.shauninman.com/archive/2012/03/02/lift_off_the_last_rocket_development_diary">&#x25CF;</a></p>]]></description>
	<link>http://shauninman.com/feeder/?FeederAction=clicked&amp;feed=Complete+Plus&amp;seed=http%3A%2F%2Fstore.shauninman.com%2F&amp;seed_title=Lift+Off%3A+The+Last+Rocket+Development+Diary</link>
	<guid isPermaLink="false">1561@http://www.shauninman.com/</guid>
	<category>About</category><category>Books</category><category>Elsewhere</category><category>Gaming</category>
	<pubDate>Fri, 02 Mar 2012 18:47:00 GMT</pubDate>
</item>
<item>
	<title>Detox</title>
	<description><![CDATA[<p>This is an intervention. <a href="/assets/downloads/Detox.safariextz">Detox</a> is a tiny Safari extension that automatically expands shortened t.co links on the Twitter site (third-party desktop app users <del>are out of luck, sorry</del> should see the 1.1 update below). </p>

<p>Ever wonder why links you find via Twitter don&#8217;t show up in your browser history and aren&#8217;t suggested by autocomplete in the url bar? The t.co link shortener serves known browser user agents an HTML page containing a JavaScript or meta refresh redirect (instead of the standard <code>Location</code> header) so that Twitter can stake itself out as the referrer when coming from third-party clients. This confuses Safari.</p>

<p><a href="http://haveamint.com/">Stats are cool and all</a> but only when they don&#8217;t break the experience for your users. </p>

<p><a href="/assets/downloads/Detox.safariextz">Download Detox</a>.</p>

<p>(<a href="http://zackarycorbett.com/">Zackary Corbett</a> made a <a href="http://zyber17.com/detox/">Chrome version</a> too, which may or may not be necessary. Firefox and Opera also appear to be unaffected.)</p>

<h2 id="h2-detox-">Detox 1.1</h2>

<p>Now when you hit a t.co redirect page (from a native client or a direct message from Mail.app) the destination url is added to the document title making the destination url appear in your history and url autocomplete suggestions.</p>

<h2 id="h2-detox-">Detox 1.2</h2>

<p>Added <a href="https://gist.github.com/1792384">code</a> submitted by <a href="https://twitter.com/Orangenhain/status/168065964406079489">Orangenhain</a> that fixes a similar history-breaking problem on Google&#8217;s search results.</p>

<h2 id="h2-detox-">Detox 1.2.1</h2>

<p>Recently Twitter updated their link expansion <code>data</code> attributes. Previously the expanded url could be found in each link&#8217;s <code>data-expanded-url</code> attribute. A recent update duplicates the t.co url in <code>data-expanded-url</code> and puts the true url in <code>data-ultimate-url</code>.</p>

<h2 id="h2-detox-">Detox 1.2.2</h2>

<p>Digging deeper it appears that <code>data-ultimate-url</code> contains the terminal for twice (or more) shortened urls (eg. a t.co&#8217;d bit.ly pointing to the terminal google.com). Detox 1.2.2 Uses <code>data-ultimate-url</code> if available, falling back on the original <code>data-expanded-url</code>. <code>data-expanded-url</code> containing the t.co instead of the expanded url may have just been a temporary Twitter bug. I regret jumping to conclusions but with twice shortened urls the user never sees the intermediate url which is what ultimately lead to the confusion.</p>]]></description>
	<link>http://shauninman.com/feeder/?FeederAction=clicked&amp;feed=Complete+Plus&amp;seed=http%3A%2F%2Fwww.shauninman.com%2Farchive%2F2012%2F01%2F19%2Fdetox&amp;seed_title=Detox</link>
	<guid isPermaLink="false">1560@http://www.shauninman.com/</guid>
	<category>Apple</category><category>JavaScript</category>
	<pubDate>Thu, 19 Jan 2012 21:35:00 GMT</pubDate>
</item>
<item>
	<title>Stock</title>
	<description><![CDATA[<p>These things I produced in 2011:</p>

<ul>
<li><a href="/lastrocket/">The Last Rocket</a> Though not released until mid-August I started work on what I consider to be my first proper game in early January. The development of this game, more than anything else, shaped the past year. It was critically well received, responsible for a quarter of the year&#8217;s income, and even made <a href="https://twitter.com/matthewdkenyon/status/149484341154680833">Edge</a>, <a href="http://toucharcade.com/2011/12/23/best-ios-games-2011-buyers-guide/">Touch Arcade</a> and <a href="http://www.iphonealley.com/news/iphone-alleys-10-6-best-reviewed-games-of-2011">iPhone Alley</a>&#8217;s year end lists.</li>
<li><a href="/archive/2011/04/18/unplayed">Unplayed</a> I&#8217;d been privately maintaining a list of games I&#8217;ve played or want to play since getting a DS Lite in June of 2006. After briefly dabbling with a Tumblr to maintain the list I wrote this trifle of a web app.</li>
<li><a href="/archive/2011/05/02/breathing_room_postmortem">Breathing Room</a> My first Ludum Dare. Also, an early study from my thinking about level design.</li>
<li><a href="/archive/2011/07/25/cssfrag">CSSFrag</a> A Safari extension for targeting specific DOM elements by url. Passed the torch to <a href="http://karanlyons.com/pinpoint/">Pinpoint</a>.</li>
<li><a href="/archive/2011/06/02/reply_reach">Reply Reach</a>  &amp; <a href="/archive/2011/08/26/past_ats">Past @s</a> Two little JavaScript bookmarklets for use on Twitter.com.</li>
<li><a href="/archive/2011/08/22/data_entry_sentry_postmortem">Data Entry Sentry</a> My second Ludum Dare and my first attempts at a JavaScript/Canvas game. The genesis of the <a href="http://www.ludumdare.com/compo/2011/12/16/si2d-js/">JavaScript port</a> of the Objective-C framework I use for all of my iOS games, SI2d.</li>
<li><a href="/archive/2011/10/20/day_o_mac_menu_bar_clock">Day-O</a> A simple menubar calendar replacement for OS X.</li>
<li><a href="/archive/2011/12/05/chunks">Chunks</a> A native iOS port of my second Ludum Dare game, Data Entry Sentry. I didn&#8217;t promote this as much as I probably should have but a more vocal release might have set expectations too high for this modest little falling block game.</li>
<li><a href="/archive/2011/12/21/sinkhole_postmortem">Sinkhole</a> My third Ludum Dare. A tense little exploration game that I&#8217;m still actively developing. SI2d.js was updated significantly for this game. I even ported it from Canvas to DOM sprites to compare performance (pretty much head to head by the numbers but the Canvas version feels smoother in play and is easier to extend).</li>
<li><a href="/archive/2011/12/26/the_last_rocket_suite">The Last Rocket Suite</a> The <a href="/lastrocket/soundtrack.html">soundtrack</a> from The Last Rocket did pretty well too so I released this string quartet version of three themes from the game.</li>
</ul>

<p>In addition to these wholly new things, I also released a bunch of updates to <a href="http://haveamint.com/">Mint</a> and its <a href="http://haveamint.com/peppermill/">Pepper</a>, <a href="http://feedafever.com/">Fever</a>, <a href="http://shortwaveapp.com/">Shortwave</a>, <a href="/archive/lessn">Lessn</a> and <a href="/noisees/">NoiseES</a>. I&#8217;m also about a month or two into another all new 8-bit iOS game, inspired as much by Metroid and Super Mario Bros 2/Doki Doki Panic as it is by Studio Ghibli&#8217;s films. </p>

<p>All in all, a very productive year.</p>]]></description>
	<link>http://shauninman.com/feeder/?FeederAction=clicked&amp;feed=Complete+Plus&amp;seed=http%3A%2F%2Fwww.shauninman.com%2Farchive%2F2012%2F01%2F01%2Fstock_2011&amp;seed_title=Stock</link>
	<guid isPermaLink="false">1559@http://www.shauninman.com/</guid>
	<category>Apple</category><category>CSS</category><category>Design</category><category>Flash</category><category>JavaScript</category><category>Music</category><category>Personal</category><category>Mint</category><category>Gaming</category><category>Fever</category>
	<pubDate>Sun, 01 Jan 2012 19:39:00 GMT</pubDate>
</item>
<item>
	<title>Best iOS Games 2011</title>
	<description><![CDATA[<p>Ecstatic The Last Rocket landed on Touch Arcade&#8217;s year end list. Overjoyed to find Flip and AMI in Edge magazine&#8217;s January 2012 <a href="https://twitter.com/matthewdkenyon/status/149484341154680833">issue</a>. <a href="http://www.shauninman.com/archive/2011/12/26/best_ios_games_2011">&#x25CF;</a></p>]]></description>
	<link>http://shauninman.com/feeder/?FeederAction=clicked&amp;feed=Complete+Plus&amp;seed=http%3A%2F%2Ftoucharcade.com%2F2011%2F12%2F23%2Fbest-ios-games-2011-buyers-guide%2F&amp;seed_title=Best+iOS+Games+2011</link>
	<guid isPermaLink="false">1558@http://www.shauninman.com/</guid>
	<category>Elsewhere</category><category>Gaming</category>
	<pubDate>Mon, 26 Dec 2011 15:50:00 GMT</pubDate>
</item>
<item>
	<title>The Last Rocket Suite</title>
	<description><![CDATA[<p>A little present for <a href="/lastrocket/">The Last Rocket</a> soundtrack fans, a (GarageBand-synthesized) string quartet version of Apprepensive, Airlock and Lost and Found. <a href="http://www.shauninman.com/archive/2011/12/26/the_last_rocket_suite">&#x25CF;</a></p>]]></description>
	<link>http://shauninman.com/feeder/?FeederAction=clicked&amp;feed=Complete+Plus&amp;seed=http%3A%2F%2Fshauninman.com%2Flastrocket%2Fdownloads%2FThe%2520Last%2520Rocket%2520Suite.mp3&amp;seed_title=The+Last+Rocket+Suite</link>
	<guid isPermaLink="false">1557@http://www.shauninman.com/</guid>
	<category>Music</category><category>Elsewhere</category><category>Original Music</category><category>Gaming</category>
	<pubDate>Mon, 26 Dec 2011 15:49:00 GMT</pubDate>
</item>
<item>
	<title>Sinkhole Postmortem</title>
	<description><![CDATA[<p><img src="/assets/images/sinkhole-title.png" alt="" title="" /></p>

<p>This past weekend I participated in my third <a href="http://www.ludumdare.com/">Ludum Dare</a>. I created an HTML5 game called <a href="/ludumdare/alone/sinkhole/">Sinkhole</a> from scratch in 48 hours. It was an awesome experience and the game didn&#8217;t turn out half bad either. <a href="/archive/2011/08/22/data_entry_sentry_postmortem">Last time</a> I had just launched <a href="/lastrocket/">The Last Rocket</a>. This time I had just launched <a href="/chunks/">Chunks</a>, a native port of my previous Ludum Dare creation.</p>

<p>The theme this time around was <a href="http://www.ludumdare.com/compo/ludum-dare-22/">Alone</a>. Unlike the previous two Dares where I came up with three ideas and then slept on them before starting, this time I had an idea I was really excited about and after only half an hour set to work.</p>

<p>The first three lines of <a href="/ludumdare/alone/alone.txt">my notes</a> from that first night read:</p>

<ul>
<li>top-down</li>
<li>exploration by flashlight</li>
<li>something moving in the darkness</li>
</ul>

<p>I wanted there to be an urgency to the exploration. I wanted the antagonists, the stalkers, to be unseen. Let the players&#8217; imagination do the heavy lifting.</p>

<p>I also knew I didn&#8217;t want to have to worry about level design so after bootstrapping the <a href="http://www.ludumdare.com/compo/2011/12/16/si2d-js/">JavaScript framework</a> I cobbled together for the last Ludum Dare I started researching <a href="http://roguebasin.roguelikedevelopment.org/index.php?title=Cellular_Automata_Method_for_Generating_Random_Cave-Like_Levels">cellular automata</a> and <a href="http://devpro.it/javascript_id_137.html">pathfinding</a> so I could dynamically generate solvable maps to use. I managed to get the skeleton of a solution working (ported from C to JavaScript) before bed the first night.</p>

<p>While falling asleep I started imagining the stalkers&#8217; behavior. After a short delay a stalker appears and attempts to sneak up behind the player. Facing the stalker causes them to freeze. Shining a light on them causes them to flee. But every time one flees another, slightly faster, stalker spawns. The player solves their current problem at the cost of future safety. More impetus to find the exit quickly. </p>

<p>In addition to the unseen threat of the stalkers, the player&#8217;s defensive and discovery tool, light, is limited. The flashlight&#8217;s batteries drain in one minute. Matches burn out after 3 seconds. It takes time to load a new battery or strike a match. During that time visibility is nil. Or rather, you can see the stalkers approach but not the player or the walls of the level. Once the player runs out of light sources and their eyes adjust only slivers of walls are visible on the periphery of their limited cone of vision. The player must rely on these subtle hints and the minimap to find another battery or matchbook to buy them some more time to find the exit.</p>

<p>I eventually fell asleep.</p>

<p>I woke up to the realization that I had attempted (and abandoned) a very similar mechanic during my <a href="/archive/2011/05/02/breathing_room_postmortem">first Ludum Dare</a> (the original Chibi Pan &amp; Pup idea).</p>

<p>Shaking off the thought of repeat failure I quickly implemented a TileMap class in SI2d.js and a way to crop the viewport allowing the &#8220;camera&#8221; to follow the player as they moved across the map. I revisted the touch-based controls then created some rough graphic masks to start implementing the different sized beams of light that define the gameplay. Minimaps came quickly. Around this time I realized that the framerate wasn&#8217;t going to be acceptable on the iPad and implemented keyboard controls as well.</p>

<p>Power-ups, a compass to reveal the exit on the minimap, batteries and matchbooks to recharge your light supply slotted in pretty easily. Stalkers gave me a bit of trouble initially. They needed to spawn outside of the players cone of vision or else they would flee immediately.</p>

<p>The story arrived in the form of four tweets that became the prologue:</p>

<blockquote>
  <p>Tomo the Cartographer was on a routine survey mission in Central America when the earth opened up and swallowed him whole.</p>
  
  <p>Miraculously, he survived falling hundreds of feet and walked away with only a broken arm.</p>
  
  <p>Guide Tomo out of the sinkhole before he runs out of flashlight batteries or burns through all his matches.</p>
  
  <p>It will be a lonely climb back to the surface. At least, Tomo thinks he&#8217;s alone. He <em>hopes</em> he&#8217;s alone.</p>
</blockquote>

<p>Around midnight the second and final night I started on the artwork. Like all of my games to date I limited my palette to only colors the NES was <a href="http://en.wikipedia.org/wiki/File:NES_palette.png">capable of producing</a>. Tomo came together quickly, based largely on the Link sprite from the original Zelda (with a strong Mega Man influence). I used Mario from SMB3 as a referene when drawing his vine climbing animation. I had to redraw the power-ups and background tiles a few times but I eventually arrived at something I was happy with. I had a lot of fun creating the onomatopoeia bursts that represent the stalkers.</p>

<p>The remainder of the last day is a disjointed blur. Lots of revisions to stalker behavior. Persisting inventory between levels. In a remarkable moment of clarity I coded, from memory, in one go, an error-free JavaScript port of my Objective-C TextMap class. This allowed me to get some of Tomo&#8217;s internal dialog on-screen while playing.</p>

<p>The title screen graphic was a happy accident. While trying to draw grass hanging over the edge at the top of the sinkhole I accidentally turned off (or on) another layer producing the masked out, moss-clinging-to-the-sides effect you see in the finished artwork.</p>

<p>By the end of it all I couldn&#8217;t see straight, my own eyes were anti-aliasing the pixel art I had slaved over. But it was totally worth it. It&#8217;s creatively rejuvenating, knowing that you just created something, non-negligible, largely from scratch, in just 48 hours. If you participated in Ludum Dare, please play and rate <a href="http://www.ludumdare.com/compo/ludum-dare-22/?action=preview&amp;uid=4017">my entry</a> (I&#8217;d love any feedback you have as well)!</p>

<p>I&#8217;ve been continuing to develop the game in the days since submitting. Improving collision detection, softening cornering, improving keyboard responsiveness, adding <a href="https://wiki.mozilla.org/GamepadAPI">Gamepad API</a> support, refining power-up frequency and distribution, tuning stalker behavior. Maps no longer regenerate every time you die. The minimap remembers previously explored areas. Inventory reverts to its unique pre-level state rather than resetting completely. <a href="/ludumdare/alone/sinkhole/">Play the updated version of Sinkhole</a>. Who knows, maybe someday there will be an expanded native iOS version.</p>]]></description>
	<link>http://shauninman.com/feeder/?FeederAction=clicked&amp;feed=Complete+Plus&amp;seed=http%3A%2F%2Fwww.shauninman.com%2Farchive%2F2011%2F12%2F21%2Fsinkhole_postmortem&amp;seed_title=Sinkhole+Postmortem</link>
	<guid isPermaLink="false">1556@http://www.shauninman.com/</guid>
	<category>JavaScript</category><category>Gaming</category>
	<pubDate>Thu, 22 Dec 2011 03:46:00 GMT</pubDate>
</item>
<item>
	<title>Meet the Developer</title>
	<description><![CDATA[<p>Nathaniel Mott of AppStorm (who you might remember gave The Last Rocket a <a href="http://iphone.appstorm.net/reviews/games-reviews/the-last-rocket-retro-gaming-at-its-best/">10 out of 10</a>) interviewed me via email over the course of the past month. AppStorm is also doing a <a href="http://iphone.appstorm.net/general/competitions/win-one-of-five-copies-of-the-last-rocket/">Last Rocket giveaway</a>. <a href="http://www.shauninman.com/archive/2011/12/14/meet_the_developer">&#x25CF;</a></p>]]></description>
	<link>http://shauninman.com/feeder/?FeederAction=clicked&amp;feed=Complete+Plus&amp;seed=http%3A%2F%2Fiphone.appstorm.net%2Fgeneral%2Finterviews%2Fmeet-the-developer-shaun-inman-of-the-last-rocket%2F&amp;seed_title=Meet+the+Developer</link>
	<guid isPermaLink="false">1555@http://www.shauninman.com/</guid>
	<category>About</category><category>Elsewhere</category>
	<pubDate>Wed, 14 Dec 2011 13:45:00 GMT</pubDate>
</item>
<item>
	<title>Chunks</title>
	<description><![CDATA[<p><strong>Update</strong> Chunks is <a href="/chunks/">out now</a>! Grab the <a href="/chunks/chunks-osv.zip">four track OSV</a> while you&#8217;re at it.</p>

<p>Later tonight or early tomorrow I&#8217;ll have a new game in the App Store. (For real this time. Last week <a href="/horrorvacui2/">Horror Vacui 2</a> showed up on a number of App Store new release lists for no apparent reason despite being released over a year ago.) It&#8217;s a small game with more in common with Horror Vacui than <a href="/lastrocket/">The Last Rocket</a>. And it might look familiar.</p>

<p><a href="/chunks/"><img src="/assets/images/chunks.png" alt="Introducing the Chunks in Data Entry Sentry" title="" /></a></p>

<p><a href="/chunks/">Chunks</a> is a native iOS port of my most recent <a href="http://www.ludumdare.com/compo/about-ludum-dare/">Ludum Dare</a> game <em>Escape! Data Entry Sentry</em>. The core gameplay mechanic and most of the graphics were created over a <a href="/archive/2011/08/22/data_entry_sentry_postmortem">48 hour period</a> shortly after releasing The Last Rocket. While I&#8217;ve been working on a new, more ambitious 8-bit platformer for iOS (somewhere between The Last Rocket and the unreleased <a href="/archive/2010/02/23/mimeo_and_the_kleptopus_king">Mimeo and the Kleptopus King</a> in scale) I&#8217;ve also made time to rename and refine Chunks for a proper release.</p>

<p>In addition to some gameplay tweaks and instructional UI, I composed three new chiptunes, a short game over jingle plus a handful of sound effects. The themes were inspired by falling block giants Tetris and Dr. Mario (with a little The Guardian Legend thrown in for good measure). The tempo of the background music increases with the speed of the conveyor as you play. This change is imperceptible from level to level but after a while you really start to feel the frantic increase in momentum. Grab the <a href="/assets/music/nsfe/chunks.nsfe">NSFe</a> and give it a listen in <a href="/noisees/">NoiseES</a>.</p>

<p>Chunks is a universal app so you can play on your iPhone, iPod touch or iPad and includes Game Center leader boards for high score and highest level. It&#8217;s a small game with humble origins so it&#8217;s only a buck. <a href="/chunks/">Check it out tomorrow!</a></p>]]></description>
	<link>http://shauninman.com/feeder/?FeederAction=clicked&amp;feed=Complete+Plus&amp;seed=http%3A%2F%2Fwww.shauninman.com%2Farchive%2F2011%2F12%2F05%2Fchunks&amp;seed_title=Chunks</link>
	<guid isPermaLink="false">1554@http://www.shauninman.com/</guid>
	<category>Apple</category><category>Music</category><category>Gaming</category><category>NSF</category>
	<pubDate>Mon, 05 Dec 2011 16:47:00 GMT</pubDate>
</item>
<item>
	<title>Interviewed by Kevin Dees</title>
	<description><![CDATA[<p>I met Kevin at SXSW a few years ago and ran into him recently at Web Afternoon in Atlanta. Last week we talked about web and game development in a quick video interview. <a href="http://www.shauninman.com/archive/2011/11/07/interviewed_by_kevin_dees">&#x25CF;</a></p>]]></description>
	<link>http://shauninman.com/feeder/?FeederAction=clicked&amp;feed=Complete+Plus&amp;seed=http%3A%2F%2Fkevindees.cc%2F2011%2F11%2Finterview-with-shaun-inman%2F&amp;seed_title=Interviewed+by+Kevin+Dees</link>
	<guid isPermaLink="false">1553@http://www.shauninman.com/</guid>
	<category>About</category><category>Elsewhere</category>
	<pubDate>Mon, 07 Nov 2011 12:54:00 GMT</pubDate>
</item>
</channel>
</rss>
