<?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>Jon Voth [Interactive Specialist]</title>
	<atom:link href="http://www.jonvoth.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jonvoth.com</link>
	<description>Portfolio and Blog of Jon Voth, Interactive Developer</description>
	<lastBuildDate>Thu, 21 Apr 2011 01:45:03 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>Embedding fonts in Flex with the correct fontFamily name</title>
		<link>http://www.jonvoth.com/blog/embedding-fonts-in-flex-with-the-correct-fontfamily-name/</link>
		<comments>http://www.jonvoth.com/blog/embedding-fonts-in-flex-with-the-correct-fontfamily-name/#comments</comments>
		<pubDate>Thu, 21 Apr 2011 01:45:03 +0000</pubDate>
		<dc:creator>Jon</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[embed]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[font]]></category>
		<category><![CDATA[fontFamily]]></category>

		<guid isPermaLink="false">http://www.jonvoth.com/?p=697</guid>
		<description><![CDATA[Embedding fonts in Flex 3.x is usually a source of frustration for me. Using CSS to manage files in an application is a very efficient and relatively seamless process, something - <a href="http://www.jonvoth.com/blog/embedding-fonts-in-flex-with-the-correct-fontfamily-name/">View Post ..</a>]]></description>
			<content:encoded><![CDATA[<p>Embedding fonts in Flex 3.x is usually a source of frustration for me. Using CSS to manage files in an application is a very efficient and relatively seamless process, something I count as one of the advantages to using Flex. Unfortunately, when you want to use custom embedded fonts (from a SWF or an external OpenType or TrueType font) it&#8217;s quite difficult to discern the fontFamily name to use in the embed syntax.</p>
<p>While this may seem like a trivial issue, consider the time it takes to implement, compile and test all of the possible fontFamily names for the font Gotham Rounded Medium:<br />
<blockquote>fontFamily: &#8220;Gotham Rounded Medium&#8221;<br/>fontFamily: &#8220;GothamRoundedMedium&#8221;<br/>fontFamily: &#8220;GothamRounded Medium&#8221;<br/>fontFamily: &#8220;gotham rounded medium&#8221;<br/>fontFamily: &#8220;gothamroundedmedium&#8221;<br/>fontFamily: &#8220;gotham rounded medium&#8221;<br/>fontFamily: &#8220;GothamRounded-Medium&#8221;<br/>fontFamily: &#8220;Gotham-Rounded-Medium&#8221;<br/>fontFamily: &#8220;gothamgounded-medium&#8221;</p></blockquote>
<p>After embedding a font from a SWF using <a href="http://livedocs.adobe.com/flex/3/html/help.html?content=fonts_04.html">Adobe&#8217;s suggested CSS syntax</a>, I find myself having to try several different values for the fontFamily parameter before the compiler stops throwing errors.</p>
<p>After running into this issue yet again today, I found <a href="http://yourpalmark.com/2009/04/05/embedding-fonts-using-external-swf-files/">this article</a> by Mark Walters. He includes in his steps for embedding fonts from a SWF a simple for loop that traces the correct name of each embedded font. By adding this loop to the first frame in the timeline of the FLA in which the fonts are embedded, you can discern exactly which fontFamily name to use in your Flex CSS document.</p>
<p>Here&#8217;s the loop to place in the FLA (quoted from Mark&#8217;s site):<br />
<blockquote><code>var fontList:Array = Font.enumerateFonts();<br/>for( var i:int=0; i < fontList.length; i++ ) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;trace( "font: " + fontList[ i ].fontName );<br/>}</code></p></blockquote>
<p>Which will trace out something along the lines of:<br />
<blockquote>font: GothamRounded-Medium<br/>font: Rockwell</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.jonvoth.com/blog/embedding-fonts-in-flex-with-the-correct-fontfamily-name/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Building a better trace()</title>
		<link>http://www.jonvoth.com/blog/building-a-better-trace/</link>
		<comments>http://www.jonvoth.com/blog/building-a-better-trace/#comments</comments>
		<pubDate>Sun, 17 Apr 2011 20:18:22 +0000</pubDate>
		<dc:creator>Jon</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[core library]]></category>
		<category><![CDATA[ham]]></category>

		<guid isPermaLink="false">http://www.jonvoth.com/?p=675</guid>
		<description><![CDATA[Working in a development team can be tricky. Of course, everyone has their individual style of coding and their own conception of what structures and design patterns should be used - <a href="http://www.jonvoth.com/blog/building-a-better-trace/">View Post ..</a>]]></description>
			<content:encoded><![CDATA[<p>Working in a development team can be tricky. Of course, everyone has their individual style of coding and their own conception of what structures and design patterns should be used to create desired functionality. But also there are more practical issues, like who is working in which files and how code will be merged. One of these more practical issues is how your application talks back to you.</p>
<h3>Making Your App Talk</h3>
<p>Wether it&#8217;s a trace() statement in AS3, an NSLog() command in Objective C, or an alert() in JavaScript; every language has it&#8217;s mouthpiece. A device by which the developer can tell the application to spit out human-readable information from within the running program is essential to the development and debugging process.</p>
<h3>A Tiny Tower of Babel</h3>
<p>In Ham&#8217;s AS3 core library, we had always used the intrinsic trace() statement for this purpose, sporadically spread throughout the the core and all published applications. After functioning this way for years, we realized that the output console was filling up quickly with trace() statements from 4 or 5 different developers. Aside from the, admittedly minor, extra computational power these trace() statements absorbed, it became very difficult to find your own messages among the clutter.</p>
<h3>Stranger Danger</h3>
<p>We also realized the danger in allowing these traces to be published within a live application: you never know who has the debug version of Flash Player installed. Anyone running the debug Flash Player can easily see the content of all trace() statements. While this may be a relatively minor concern for some, it is in some ways a breach of security.</p>
<p>Consider the case where a developer needs to confirm that privileged information from an application is being stored or computer correctly. They may use a trace() to reveal a password, credit card number, or cheat code intended for their eyes only. If they forget to remove the trace() or rely on the public not having the debug player, this privileged information could be exposed unintentionally.</p>
<h3>The Solution</h3>
<p>While we don&#8217;t deal with all that many credit card numbers at Ham, we still need to take security seriously so we realized the need to create a system to prevent unwanted trace() statements from making it into the wild. Furthermore, a system by which one developer could prevent the output of all messages other than their own would be enormously helpful to the development process.</p>
<p>We ended up calling our solution the OutputManager; a singleton class to manage all output to the debugging console. Essentially, this class is intended to be the ONLY location in the entire core library where a trace() statement could be found. This way, there was a single choke point at which we could control the flow of data to the console. We ended up shortening the class name to &#8220;Out,&#8221; because who wants to type 13+ characters (&#8220;OutputManager&#8221; + method names) when they could just type 5 (&#8220;trace&#8221;)?! This is an important thing to remember when writing classes that are intended to be used by multiple developers; if it&#8217;s inconvenient in any way, it won&#8217;t be universally adopted.</p>
<p>So, we created a singleton class with several static methods in order to log both regular messages (logM) and errors (logE). Making the methods static and forcing instantiation on the first line of the method also made the methods more convenient to use. Instead of having to create and store an instance of the OutputManager, a dev could simple type Out.logM() and trace away.</p>
<p>These &#8220;log&#8221; methods in turn call a private method in the OutputManager that performs the actual trace. This is the point at which we wrapped the trace() statement in a conditional that checks if the app is allowed to perform traces. By simple setting this Boolean early in the run sequence of the app, we can block all output messages from reaching the console.</p>
<h3>The Finishing Touches</h3>
<p>After using the OutputManager system for some time, we discovered a couple pieces of functionality that could make the class even more useful. First, we realized that having an automatic way to announce which class and method from which the message originated would be very helpful for debugging. Also, we found that one of our original problems was still present; too many traces in the output console from other developers. This meant it was still difficult to find your own messages in the crowded output window.</p>
<p>To solve the issue of automatically notating the location of the original message, we built off the suggestion of <a href="http://stackoverflow.com/questions/4656447/get-current-classmethod-name-in-as3">this article</a>. By throwing an Error in the OutputManager when a message was sent to be traced, we could parse through the text of the Error&#8217;s stack trace and capture the class and method names, along with the line number. The one issue we ran into when implementing this, is that throwing an Error in this way will cause the non-debug version of the Flash Player to freeze up, as it cannot handle the Error properly. To overcome this, we employed the Capabilities class&#8217; isDebugger property. By checking if this property is set to true before throwing the Error, we could avert the issue altogether.</p>
<p>We were able to solve the problem of a crowded output console by adding something we call the &#8220;Override Flag.&#8221; This flag is a String set on the OutputManager at some point (presumably early) in the run sequence of the app using the setOverrideFlag() method. After the flag has been set, any messages sent to the log() methods in the OutputManager that do not include the correct override flag String (as an optional parameter) will not be traced. This way, a single developer can choose, with minimal effort, to see ONLY their own trace messages in the output console.</p>
<h3>Take a Look</h3>
<p>Download a zipped copy of the Out class <a href="http://www.jonvoth.com/content/AS3_OutputManager.zip">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonvoth.com/blog/building-a-better-trace/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creating a Symbolic Link</title>
		<link>http://www.jonvoth.com/blog/creating-a-symbolic-link/</link>
		<comments>http://www.jonvoth.com/blog/creating-a-symbolic-link/#comments</comments>
		<pubDate>Sun, 17 Apr 2011 18:07:19 +0000</pubDate>
		<dc:creator>Jon</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Dropbox]]></category>
		<category><![CDATA[ham]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[OSX]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.jonvoth.com/?p=683</guid>
		<description><![CDATA[In light of the recent restructuring of how Ham&#8217;s code and assets are stored and versioned, we needed a way to store or copy assets from a Dropbox folder into - <a href="http://www.jonvoth.com/blog/creating-a-symbolic-link/">View Post ..</a>]]></description>
			<content:encoded><![CDATA[<p>In light of the recent restructuring of how Ham&#8217;s code and assets are stored and versioned, we needed a way to store or copy assets from a <a href="https://www.dropbox.com/">Dropbox</a> folder into the source code folder of a specific project. Most development projects require assets (like JPGs, PNGs, SWFs, and video files) to be included in the source code folder so individual assets can be referenced locally from code written in the source files. In order to take advantage of Dropbox&#8217;s syncing capabilities, all folders and files intended to be synced must be a child of the Dropbox folder itself. This means that project assets synced through Dropbox must be copied into the source folder for the project in order for the source code to reference them.</p>
<h3>Options</h3>
<p>Originally we had considered several options: copying the files &#8220;by hand&#8221; as-needed, setting up a folder action to automatically copy the files when new assets are added, setting up an <a href="http://en.wikipedia.org/wiki/Automator_(software)">Automator</a> script to copy the files as-needed, or attempting to use an alias.</p>
<p>Copying by hand: This was our fallback. Copying files as-needed would be the most sure-fire way to accomplish the task, but it is also the most tedious and would slow down our overall workflow.</p>
<p>Folder Action: This appeared to work at first, but we soon realized that only newly added files would be copied and would not suit our needs as all updates to files would need to be copied as well.</p>
<p>Automator Script: This worked quite well. Automator allows you to create an application that will run a set of actions, in this case we could set up an application for each project, double click it, and it would copy the files automatically.</p>
<p>Alias: This did not serve our needs as development IDE&#8217;s may not recognize the files in the assets folder as accessible via an alias, as they actually reside at a path different from the source folder.</p>
<p>Another consideration we realized while trying to find solutions was that directly copying the files may take a great deal of time and waste storage space for asset-heavy projects.</p>
<h3>The Solution</h3>
<p>Though making an application with Automator would work, it required the application to be run every time an asset update was needed. Furthermore, all of the solutions mentioned above (save the alias) would still have the issue of storing potentially heavy files twice on your hard drive.</p>
<p>After some research by Cameron (a member of Ham&#8217;s dev team) we found the perfect solution: a <a href="http://en.wikipedia.org/wiki/Symbolic_link">Symbolic Link</a>. A Symbolic Link creates a &#8220;soft link&#8221; that resolves the file path of a folder to a different location. In essence, it is like an alias that makes the files within it appear as if they reside at the location of the alias.</p>
<h3>How To Make the Link</h3>
<p>The Symbolic link is made possible by a free Automator action written by Junecloud software (<a href="http://junecloud.com/software/mac/junecloud-automator-actions.html">download it here</a>). Download the actions and take a look at the demo video to see how it&#8217;s done (apologies for the Screenflow watermark).</p>
<p><iframe title="YouTube video player" width="480" height="390" src="http://www.youtube.com/embed/K1bEK3YVkqw" frameborder="0" allowfullscreen></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonvoth.com/blog/creating-a-symbolic-link/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPhone App Icon Sizing Issues</title>
		<link>http://www.jonvoth.com/blog/iphone-app-icon-sizing-issues/</link>
		<comments>http://www.jonvoth.com/blog/iphone-app-icon-sizing-issues/#comments</comments>
		<pubDate>Tue, 01 Mar 2011 21:32:09 +0000</pubDate>
		<dc:creator>Jon</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[apps]]></category>
		<category><![CDATA[format]]></category>
		<category><![CDATA[ham]]></category>
		<category><![CDATA[icon]]></category>
		<category><![CDATA[image]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Objective C]]></category>
		<category><![CDATA[resize]]></category>

		<guid isPermaLink="false">http://www.jonvoth.com/?p=631</guid>
		<description><![CDATA[Recently a client had some issues uploading our app to the App Store, citing the following error: Icon.png: icon dimentions (114 x 114) don’t meet the size requirements. The icon - <a href="http://www.jonvoth.com/blog/iphone-app-icon-sizing-issues/">View Post ..</a>]]></description>
			<content:encoded><![CDATA[<p>Recently a client had some issues uploading our app to the App Store, citing the following error:</p>
<blockquote><p>Icon.png: icon dimentions (114 x 114) don’t meet the size requirements. The icon file must be 57&#215;57 pixels in .png format.</p></blockquote>
<p>This seemed odd to me, as we had very explicitly created a 57&#215;57 (standard display) icon and a 114&#215;114 (Retina display) icon, and followed <a href="http://globalmoxie.com/blog/designing-for-iphone4-retina-display.shtml">Apple&#8217;s &#8220;@2x&#8221; naming convention</a>.</p>
<p>After some digging, I found that the root of the issue was the info.plist file for the app. Apparently you must not only follow the &#8220;@2x&#8221; convention, but also explicitly specify paths to the various sizes of your App&#8217;s icon files in a &#8220;CFBundleIconFiles&#8221; array.</p>
<p>I found a great article at <a href="http://useyourloaf.com/blog/2010/8/4/application-icon-troubles.html">Use Your Loaf</a> that helped resolve the issue. By specifying paths for each size of the app icon, the App Store error was resolved and we could also include icons at the correct sizes for all iOS device screens.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonvoth.com/blog/iphone-app-icon-sizing-issues/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hello &lt;canvas&gt;!</title>
		<link>http://www.jonvoth.com/blog/hello-canvas/</link>
		<comments>http://www.jonvoth.com/blog/hello-canvas/#comments</comments>
		<pubDate>Thu, 02 Dec 2010 22:47:57 +0000</pubDate>
		<dc:creator>Jon</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[canvas]]></category>
		<category><![CDATA[color]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[particles]]></category>

		<guid isPermaLink="false">http://www.jonvoth.com/?p=584</guid>
		<description><![CDATA[I decided today was the day to jump on the bandwagon to the future and teach myself some &#34;HTML5.&#34; I finally had enough free time to do some research, and - <a href="http://www.jonvoth.com/blog/hello-canvas/">View Post ..</a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.jonvoth.com/playground/html5_canvas_particles/index.html" target="_blank"><img class="alignleft size-medium wp-image-593" title="colorCanvas" src="http://www.jonvoth.com/wp-content/uploads/2010/12/colorCanvas-300x232.png" alt="" width="300" height="232" /></a></p>
<p>I decided today was the day to jump on the bandwagon to the future and teach myself some &quot;HTML5.&quot;</p>
<p>I finally had enough free time to do some research, and the new &lt;canvas&gt; element is what I see as the most promising of HTML5&#8242;s features. So, I put together a pretty simple little Hello World demo I call <a href="http://www.jonvoth.com/playground/html5_canvas_particles/index.html" target="_blank">Color Canvas</a>.
<p>With the help of <a href="http://sebleedelisle.com/" target="_blank">Seb Lee-Delisle</a>&#8216;s Particle class (adapted from the AS3 Particle class I&#8217;ve come to know and love), you can use your mouse to change the color and origin of a particle system in your &quot;HTML5-equipped&quot; browser.</p>
<p>It&#8217;s exciting to finally be able to have the creative freedom usually reserved for a plugin, in a browser. As I dive further in I&#8217;m sure I will find that the &lt;canvas&gt; element (like any other visual technology) has it&#8217;s limitations. But from the little I&#8217;ve seen of it so far, &lt;canvas&gt; seems to be a solid visual building block we&#8217;ll be using in the next generation of interactive experiences.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonvoth.com/blog/hello-canvas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to find the UDID on your iOS device</title>
		<link>http://www.jonvoth.com/blog/how-to-find-the-udid-on-your-ios-device/</link>
		<comments>http://www.jonvoth.com/blog/how-to-find-the-udid-on-your-ios-device/#comments</comments>
		<pubDate>Wed, 24 Nov 2010 22:00:30 +0000</pubDate>
		<dc:creator>Jon</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[apps]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[mobile]]></category>

		<guid isPermaLink="false">http://www.jonvoth.com/?p=577</guid>
		<description><![CDATA[When testing iOS apps it is essential to know the Unique Device Identifier (UDID) of each device you want to test with. The UDID is a sequence of is a - <a href="http://www.jonvoth.com/blog/how-to-find-the-udid-on-your-ios-device/">View Post ..</a>]]></description>
			<content:encoded><![CDATA[<p>When testing iOS apps it is essential to know the Unique Device Identifier (UDID) of each device you want to test with. The UDID is a sequence of is a 40 letters and numbers, similar to a serial number but unique to each individual device&#8217;s hardware. In order to test with a device, it&#8217;s UDID must be registered with a iOS developer account online.</p>
<p>To find your device&#8217;s UDID, follow these steps:</p>
<ul>
<li>1: Connect your device to a computer.</li>
<li>2: Open iTunes.</li>
<li>3: Select your device from the &#8220;Devices&#8221; list in the left-hand column.</li>
<li>4: Your device summary display in ITunes should now display the Serial Number as the 4th piece of information to the right of your device&#8217;s icon (outlined in red below).</li>
<p><a href="http://www.jonvoth.com/wp-content/uploads/2011/04/Setp4.png"><img src="http://www.jonvoth.com/wp-content/uploads/2011/04/Setp4-150x150.png" alt="" title="Step 4" width="150" height="150" style="float:none;" /></a>
<li>5: Click on the serial number and the display will update to show the UDID number (outlined in red below).</li>
<p><a href="http://www.jonvoth.com/wp-content/uploads/2011/04/step5.png"><img src="http://www.jonvoth.com/wp-content/uploads/2011/04/step5-150x150.png" alt="" title="Step 5" width="150" height="150" style="float:none;" /></a>
<li>6: Select Edit > Copy, or press Command + C in your keyboard, to copy the UDID number to your clipboard.</li>
<li>7: Paste the UDID into any text document (text file, email, etc.) you wish.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.jonvoth.com/blog/how-to-find-the-udid-on-your-ios-device/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Country Inn &amp; Suites Breakfast Bounce</title>
		<link>http://www.jonvoth.com/work/country-inn-suites-breakfast-bounce/</link>
		<comments>http://www.jonvoth.com/work/country-inn-suites-breakfast-bounce/#comments</comments>
		<pubDate>Sun, 07 Nov 2010 04:41:47 +0000</pubDate>
		<dc:creator>Jon</dc:creator>
				<category><![CDATA[Work]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Country Inn]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[game]]></category>
		<category><![CDATA[ham]]></category>
		<category><![CDATA[Olson]]></category>
		<category><![CDATA[physics]]></category>

		<guid isPermaLink="false">http://www.jonvoth.com/?p=569</guid>
		<description><![CDATA[As an incentive for users to join their GoldPoints Plus rewards program and also highlight the hotel chain&#8217;s continental breakfast options, Country Inn and Suites wanted to create a game - <a href="http://www.jonvoth.com/work/country-inn-suites-breakfast-bounce/">View Post ..</a>]]></description>
			<content:encoded><![CDATA[<p><a href="https://www.breakfastbounce.com/"><img src="http://www.jonvoth.com/wp-content/uploads/2011/01/BreakfastBounce.jpg" alt="Country Inn and Suites Breakfast Bounce" title="BreakfastBounce" width="300" height="212" class="alignleft size-full wp-image-623" /></a>
<p>As an incentive for users to join their GoldPoints Plus rewards program and also highlight the hotel chain&#8217;s continental breakfast options, <a href="http://www.countryinns.com/">Country Inn and Suites</a> wanted to create a game in which users could earn real reward program points. The company&#8217;s advertising agency, <a href="http://www.oco.com/">Olson</a>, concepted and designed an experience reminiscent of the Price is Right game &#8220;Plinko&#8221; (only with falling breakfast foods instead of discs) and contracted Ham to develop it.</p>
<p>As the user&#8217;s success in the game could net them &#8220;real-world&#8221; points (which held a monetary value), security of data transmission and level of difficulty were primary concerns. After several rounds of tweaking point values and gameplay timing, a balance of playability and moderate point payout was achieved. A high level of coordination with Olson&#8217;s tech team was also required to maintain security and speed while exchanging data via .NET webservices.</p>
<p>On this project I was responsible for essentially all of Ham&#8217;s involvement in the process. I interfaced with Olson&#8217;s design and tech team, both on and off-site, many times contributing key technical suggestions about gameplay. I also functioned as production artist, cutting up PSDs and structuring Flash files for the final deliverable. Last but not least, I developed the game using AS3 within Ham&#8217;s Flex application framework, also utilizing the <a href="http://www.box2d.org/">Box2D</a> physics engine for gameplay interactions.</p>
<p>The Gold Points promotion was capped at 1,000,000 points, so the monetary payout may not be in effect anymore, but you can check the game out here: [<a href="https://www.breakfastbounce.com/">Play Online</a>]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonvoth.com/work/country-inn-suites-breakfast-bounce/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fashionistas of Oz</title>
		<link>http://www.jonvoth.com/work/fashionistas-of-oz/</link>
		<comments>http://www.jonvoth.com/work/fashionistas-of-oz/#comments</comments>
		<pubDate>Fri, 24 Sep 2010 04:44:38 +0000</pubDate>
		<dc:creator>Jon</dc:creator>
				<category><![CDATA[Work]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[game]]></category>
		<category><![CDATA[ham]]></category>
		<category><![CDATA[movie]]></category>
		<category><![CDATA[Warner Brothers]]></category>

		<guid isPermaLink="false">http://www.jonvoth.com/?p=573</guid>
		<description><![CDATA[To help promote the 70th anniversary of the original release of the Wizard of Oz, KidsWB engaged Ham to create an online dress-up game for kids featuring favorite characters from - <a href="http://www.jonvoth.com/work/fashionistas-of-oz/">View Post ..</a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.kidswb.com/wizard-of-oz/#/fashionistas"><img src="http://www.jonvoth.com/wp-content/uploads/2011/01/FashionistasOfOz.jpg" alt="Fashionistas of Oz" title="FashionistasOfOz" width="300" height="191" class="alignleft size-full wp-image-617" /></a>
<p>To help promote the 70th anniversary of the original release of the Wizard of Oz, KidsWB engaged Ham to create an online dress-up game for kids featuring favorite characters from the film. The main element of the game is to dress Dorothy, Glina, or the Wicked Witch with thousands of clothing combinations and place them in one of four environments from the film. Once the user has chosen a character, dressed them and placed them in an environment, they can print and save their creation or play a scavenger hunt mini-game within the environment to unlock extra clothing options.</p>
<p>The game was developed using a combination of Flex components and more traditional Flash assets, all within Ham&#8217;s Flex application framework. As senior developer on the project I helped concept overall gameplay, architected the structure of the application, oversaw a junior developer&#8217;s implementation of that structure, and eventually completed building the application. The result was a beautiful and addictively-fun game for kids. Enjoy! [<a href="http://www.kidswb.com/wizard-of-oz/#/fashionistas">Play Online</a>]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonvoth.com/work/fashionistas-of-oz/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dark Blue: Stress Test</title>
		<link>http://www.jonvoth.com/work/dark-blue-stress-test/</link>
		<comments>http://www.jonvoth.com/work/dark-blue-stress-test/#comments</comments>
		<pubDate>Wed, 01 Sep 2010 22:25:52 +0000</pubDate>
		<dc:creator>Jon</dc:creator>
				<category><![CDATA[Work]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[game]]></category>
		<category><![CDATA[ham]]></category>
		<category><![CDATA[TNT]]></category>
		<category><![CDATA[TV]]></category>

		<guid isPermaLink="false">http://www.jonvoth.com/?p=537</guid>
		<description><![CDATA[Recently Ham was tasked with making a game for the new TNT series Dark Blue. The show revolves around an undercover officer, so the game reflects situations a covert agent - <a href="http://www.jonvoth.com/work/dark-blue-stress-test/">View Post ..</a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.tnt.tv/series/darkblue/stresstest/" target="_blank"><img src="http://www.jonvoth.com/wp-content/uploads/2010/08/work_tnt_darkBlue-300x202.jpg" alt="" title="work_tnt_darkBlue" width="300" height="202" class="alignleft size-medium wp-image-543" /></a>
<p>Recently Ham was tasked with making a game for the new TNT series <a href="http://www.tnt.tv/series/darkblue/" target="_blank">Dark Blue</a>. The show revolves around an undercover officer, so the game reflects situations a covert agent may encounter. Tasks like taking a cell phone &#8220;off the grid,&#8221; forging a signature, and hot-wiring a car are recreated in a mouse-driven Flash environment.</p>
<p>As senior developer at Ham I assumed a management role on this project. We used an external resource to write the majority of the code as I oversaw the project’s technical details and aspects of gameplay as they related to development. Try it out for yourself here: [<a href="http://www.tnt.tv/series/darkblue/stresstest/" target="_blank">Play Online</a>]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonvoth.com/work/dark-blue-stress-test/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tom and Jerry Meet Sherlock Holmes</title>
		<link>http://www.jonvoth.com/work/tom-and-jerry-meet-sherlock-holmes/</link>
		<comments>http://www.jonvoth.com/work/tom-and-jerry-meet-sherlock-holmes/#comments</comments>
		<pubDate>Wed, 18 Aug 2010 15:56:51 +0000</pubDate>
		<dc:creator>Jon</dc:creator>
				<category><![CDATA[Work]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[game]]></category>
		<category><![CDATA[ham]]></category>
		<category><![CDATA[physics]]></category>
		<category><![CDATA[side-scroller]]></category>
		<category><![CDATA[Warner Brothers]]></category>

		<guid isPermaLink="false">http://www.jonvoth.com/?p=545</guid>
		<description><![CDATA[KidsWB asked Ham to create a game to help promote the DVD release of Tom &#38; Jerry Meet Sherlock Holmes. In gameplay we tried to capture some of Tom &#38; - <a href="http://www.jonvoth.com/work/tom-and-jerry-meet-sherlock-holmes/">View Post ..</a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://tomandjerrymeetsherlockholmes.com" target="_blank"><img class="alignleft size-medium wp-image-550" title="work_kwb_tomAndJerry" src="http://www.jonvoth.com/wp-content/uploads/2010/08/work_kwb_tomAndJerry-300x162.jpg" alt="" width="300" height="162" /></a></p>
<p>KidsWB asked Ham to create a game to help promote the DVD release of Tom &amp; Jerry Meet Sherlock Holmes.  In gameplay we tried to capture some of Tom &amp; Jerry&#8217;s classic “cat and mouse” hijinks while they also work together to help Sherlock Holmes solve the case. Players can explore seven levels looking for keys to unlock doors, collecting diamonds and special skills, and ultimately find clues represented by magnifying glasses to help Sherlock solve the case.</p>
<p>I was the lead developer on this project and tasked with creating all of the systems used in gameplay. Maintaining visual continuity proved to be the most challenging aspect of the project. When Tom &amp; Jerry engage in a specific one of their &#8216;hijinks&#8217; an animation is displayed using a unique spritesheet. Because the characters had to organically transition between a wide variety of states, it was essential to build a system that allowed fine-tuned control of spritesheet positioning.</p>
<p>Another development challenge on this project was it&#8217;s sheer size. Each of the seven levels in the game was greater than 2000px x 1000px. To accommodate this size, the memory footprint of each system had to be carefully managed and all assets had to be optimized to the smallest possible size while maintaining quality.</p>
<p>Through the course of the project, three different physics engines were implemented in the game based on client feedback. After <a href="http://www.cove.org/ape/" target="_blank">APEngine</a> and <a href="http://www.box2d.org/" target="_blank">Box2D</a> could not live up to the client&#8217;s requirements, I ended up creating a custom physics engine from scratch that met the client&#8217;s exact needs. Though Box2D provided by far the most natural interactions, the custom engine proved to be very lightweight, efficient and malleable to the client feedback.</p>
<p>The result is a smoothly- performing side-scroller that hopefully captures the spirit of the Tom &amp; Jerry franchise.  [<a href="http://tomandjerrymeetsherlockholmes.com" target="_blank">Play Online</a>]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jonvoth.com/work/tom-and-jerry-meet-sherlock-holmes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

