<?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>JetpackHQ &#187; Tech Demos</title>
	<atom:link href="http://www.jetpackhq.com/blog/category/development-news/tech-demos/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jetpackhq.com/blog</link>
	<description>A chronicle of the development of a video game</description>
	<lastBuildDate>Sun, 18 Jul 2010 14:44:38 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Semi-Playable Solo Demo!</title>
		<link>http://www.jetpackhq.com/blog/2010/04/02/semi-playable-solo-demo/</link>
		<comments>http://www.jetpackhq.com/blog/2010/04/02/semi-playable-solo-demo/#comments</comments>
		<pubDate>Fri, 02 Apr 2010 04:20:27 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[Development News]]></category>
		<category><![CDATA[Input Requested]]></category>
		<category><![CDATA[Status Updates]]></category>
		<category><![CDATA[Tech Demos]]></category>

		<guid isPermaLink="false">http://www.jetpackhq.com/blog/?p=431</guid>
		<description><![CDATA[I&#8217;m really excited about this new demo.  Finally we have all the pieces of the game starting to come together, with some great new graphics and music we got from the Retrofit Contest, and many of the gameplay elements in place.  This demo should really give you a feel for the new Jetpack!
Instructions:

Move [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m really excited about this new demo.  Finally we have all the pieces of the game starting to come together, with some great new graphics and music we got from the Retrofit Contest, and many of the gameplay elements in place.  This demo should really give you a feel for the new Jetpack!</p>
<h3>Instructions:</h3>
<ul>
<li>Move with <b>ARROWS</b>, fly with <b>SHIFT / CTRL</b>, use &#038; phase with <b>SPACE</b>, jump with <b>Z or SLASH</b> (even when you have fuel)
<li>alternate keys: <b>WASD</b> to move, <b>TAB</b> to use, <b>TILDE (~)</b> to jump
</ul>
<h3>What to look for:</h3>
<ul>
<li>New effects when getting items
<li>New physics elements &#8211; slide off tiles, sink into sludge, and all motions now have acceleration
<li>You have to press up or down to &#8220;grab&#8221; ladders.  It was a real pain to make walking on ladders still work with this!
<li>A running jump will go a little farther than a standing jump.  And no more getting stuck on tiles!
<li>Trigger the spear by getting too close or phasing it
<li>New pushable solid object &#8211; for puzzles, blocking enemies
<li>All the new tiles are scattered along the very top of the level.  The thin stone tiles may not be kept, I&#8217;m still evaluating their usefulness.
<li>Footsteps vary depending on the surface you&#8217;re walking on
<li>Jetman grunts and yells in pain &#8211; no death yet.  I was hoping to make the voice gender neutral, but I just can&#8217;t find good neutral sounds.
<li>Environmental sound system adjusts volume &amp; panning as you walk past the teleporter (this is limited to low volume because p.o.s. flash introduces a lot of pops and clicks when changing volume or pan)
<li>Automatic map enhancement level visuals, some examples: applies a 3d look to tiles, gives gems a stand when on solid ground, gives ice/sludge edges, turns stacked columns into a single column
</ul>
<h3>What&#8217;s missing:</h3>
<ul>
<li><b>Enemies, clearly</b>
<li>Not all sounds are final
<li>A phasing tile effect, teleporting effect
<li>Graphics on the GUI
<li>Level transitions
<li>Achievements
<li>A few graphics are still missing, mainly the Jetman.  Yeah that one&#8217;s important.
<li><b>We need a lot more level backgrounds, and tiles for jungle &amp; outdoor themes</b>
<li>A known bug in box2d causes the jetman to &#8220;trip&#8221; on tile edges, even though they are supposed to be flush.  This one is really obnoxious.
<li>Intro &amp; story &#8211; I&#8217;ve never seriously considered adding a story to Jetpack, but in the last few weeks I&#8217;ve been working on a great story idea (with some help from Adam Dobay) that really adds a lot to the game.  And the ending(s) are really going to rock.
<li><b>THIRD PARTY API&#8217;s &#8211; ** Do you have any favorites, like Kongregate&#8217;s achievements, Mindjolt&#8217;s or Mochi&#8217;s high scores, or something on Facebook?</b>
</ul>
<p>Also please note this level may appear a little too &#8220;busy&#8221; because it incorporates test elements for every tile.<br />
<b>Please let me know if you have any problems, criticisms, or suggestions!</b></p>
<hr />
<h3>Updated April 3rd &#8211; Release 2</h3>
<p>I&#8217;ve applied the following changes to the demo:</p>
<ul>
<li><b>changed around the keys &#8211; see new instructions above</b>
<li><b>experimenting with realistic leaning for horizontal flight, better hover, and super-lean when hovering</b>
<li>down+jump while on a ladder releases the ladder
<li>you can now move while phasing
<li>removed the delay between phasing-complete and intangibility
<li>teleporter now freezes you (and breaks box2d occasionally)
<li>pushable blocks are now pushable on the moving floor, and via jetpack
<li>better balanced the sound volumes
<li>made it possible to stand still on the circle block &#8211; this required hacking box2d, as no amount of friction or damping completely stops motion!
<li>found a way to clear up the jitter from the physics engine
</ul>
<p>Tweaks:</p>
<ul>
<li>gems at the bottom have a stand
<li>darkened gem stands
<li>key down states cleared after pause
<li>reduced the amount of smoke
<li>sped up animations
<li>thickened up the ladders, and changed to 4 rungs &#8211; 30 is not divisible by 4, so it was tricky to make it look good (3 was odd looking)
<li>current teleporter flashes on contact
<li>darkened the spike-like look of the teleporter stand
<li>sludge is slower
<li>fixed the slow motion bug TimK found
</ul>
<h3>Release 2</h3>
<p></p>
<div style="text-align: center; width:782px; background:black; padding:1px;">
<object height="600" width="780" id="iefix_unique2010_01" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="movie" value="/r/2010-04_launcher.swf?now=0&#038;launch=/r/2010-04b_jetpack.swf" /><embed height="600" width="780" src="/r/2010-04_launcher.swf?now=0&#038;launch=/r/2010-04b_jetpack.swf" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed></object>
</div>
<p></p>
<hr />
<h3>Release 1</h3>
<ul>
<li>Move with <strong>ARROWS </strong>or <strong>W / A / S / D</strong>, Fly / Jump with <strong>SHIFT</strong>, Jump with <strong>SPACE </strong>
<li>Use switches &amp; teleporters with <strong>CTRL</strong>, phase with <strong>CTRL</strong>, while pressing <strong>ARROWS</strong>
</ul>
<p></p>
<div style="text-align: center; width:782px; background:black; padding:1px;">
<object height="600" width="780" id="iefix_unique2010_01" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="movie" value="/r/2010-04_launcher.swf?now=0&#038;launch=/r/2010-04_jetpack.swf" /><embed height="600" width="780" src="/r/2010-04_launcher.swf?now=0&#038;launch=/r/2010-04_jetpack.swf" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed></object>
</div>
<h3>What&#8217;s Next</h3>
<p>There&#8217;s a playable preview in our future!  I hope to progress enough to release a demo with some fully playable levels soon.  The main obstacles to tackle for that are: perfecting enemies, sound effects, and level intro/wrapup.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jetpackhq.com/blog/2010/04/02/semi-playable-solo-demo/feed/</wfw:commentRss>
		<slash:comments>68</slash:comments>
		</item>
		<item>
		<title>Control Me</title>
		<link>http://www.jetpackhq.com/blog/2010/01/18/control-me/</link>
		<comments>http://www.jetpackhq.com/blog/2010/01/18/control-me/#comments</comments>
		<pubDate>Mon, 18 Jan 2010 19:58:35 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[Input Requested]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Status Updates]]></category>
		<category><![CDATA[Tech Demos]]></category>

		<guid isPermaLink="false">http://www.jetpackhq.com/blog/?p=171</guid>
		<description><![CDATA[In the good old days of Jetpack 1, things were much simpler.  Input from the keyboard or joystick was translated directly into action.
It was along the lines of:

if(key[right arrow]) speedx += 10;
sprite.posx += speedx;

Sometimes I miss the old days&#8230;  The new path from input to action now looks like:

set up key bindings from [...]]]></description>
			<content:encoded><![CDATA[<p>In the good old days of Jetpack 1, things were much simpler.  Input from the keyboard or joystick was translated directly into action.</p>
<p>It was along the lines of:</p>
<ul>
<li>if(key[right arrow]) speedx += 10;</li>
<li>sprite.posx += speedx;</li>
</ul>
<p>Sometimes I miss the old days&#8230;  The new path from input to action now looks like:</p>
<ul>
<li>set up key bindings from default or configuration data</li>
<li>for each human player, translate input into commands based on bindings table; &#8220;right arrow&#8221; becomes &#8220;move right&#8221;</li>
<li>send commands to each player&#8217;s controlled entity</li>
<li>each entity processes commands through its state machine(s); if we&#8217;re on the ground, &#8220;move right&#8221; becomes &#8220;run right&#8221;</li>
<li>active states run actions &#8211; in this case, the &#8220;run right&#8221; state applies horizontal force to the entity&#8217;s physical body</li>
<li>the graphical representation of the physical body is updated</li>
</ul>
<p>The new process is certainly more powerful, but requires somewhere around 1000x more effort to write.  Below lies the implementation of the above process, the control tech demo.  You can use the arrows to control all the various entities, and [square backets] or the mouse to switch entities.  Your entity&#8217;s active state machines are displayed in the debug line at the bottom.</p>
<div style="text-align: center;">
<object id="iefix_unique2010_01" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="800" height="600" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="/r/launcher.swf?launch=/r/2010-01_control.swf" /><embed type="application/x-shockwave-flash" width="800" height="600" src="/r/launcher.swf?launch=/r/2010-01_control.swf"></embed></object></div>
<p>One of the nice things about this newfangled control system is that it meshes very well with the AI, which only needs to supply a command list to an entity, and not worry about the implementation details.  You can see this in action when you launch a guided missile &#8211; it will follow the mouse cursor using a generic AI &#8220;chase&#8221; algorithm.  This release also incorporates various other enhancements, including the <a href="/blog/2009/11/17/using-a-launcher-swf/">launcher from a previous post</a>.</p>
<h2>Jetpack 2 Engine Status</h2>
<p>I meant to have this demo out a month ago, but I opened up the Pandora&#8217;s Box of AS3 code optimization and fell in.  This had to be done at some point, so I&#8217;m glad its mostly out of the way.  On the plus side, I found several optimizations that doubled the frame rate of the game engine &#8211; there will be a big post on this later.  The engine is pretty close to basic playability now, and I&#8217;ll be releasing a special retro version of Jetpack in March.</p>
<h2>Personal Stuff</h2>
<p>My gallbladder surgery was successful, but I&#8217;m only feeling about 25% better.  I think it was worth it, but it looks like that wasn&#8217;t the cure-all I was hoping for.  Thanks to all the well-wishers!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jetpackhq.com/blog/2010/01/18/control-me/feed/</wfw:commentRss>
		<slash:comments>33</slash:comments>
		</item>
		<item>
		<title>Jetpack Physics Test</title>
		<link>http://www.jetpackhq.com/blog/2009/07/16/jetpack-physics-test/</link>
		<comments>http://www.jetpackhq.com/blog/2009/07/16/jetpack-physics-test/#comments</comments>
		<pubDate>Thu, 16 Jul 2009 14:50:35 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[Tech Demos]]></category>

		<guid isPermaLink="false">http://www.jetpackhq.com/blog/?p=87</guid>
		<description><![CDATA[Finally it&#8217;s time to show some progress with a new tech demo.  This demonstrates the integration of physics into the Jetpack game engine, along with some live-cached graphical effects and Thing grouping (the moving platform).  Note this is just a test of the physics engine and does not reflect what the final game [...]]]></description>
			<content:encoded><![CDATA[<p>Finally it&#8217;s time to show some progress with a new tech demo.  This demonstrates the integration of physics into the Jetpack game engine, along with some live-cached graphical effects and Thing grouping (the moving platform).  Note this is just a test of the physics engine and does not reflect what the final game will look like.  Please report any problems you experience, and if you like the progress, please digg this post!</p>
<div style="text-align: center;"><object height="600" width="800" id="iefix_2009_07" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"><param value="/r/2009-07_physics.swf" name="movie" /><embed height="600" width="800" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" src="/r/2009-07_physics.swf"></embed></object></div>
<p>Earlier in the project I put some time into writing my own physics engine, but I decided to try a 3rd party library for physics and I&#8217;ve been very happy with the result.  I am reluctant to use 3rd party code because when I&#8217;ve tried in the past I spend more time working around limitations, bugs, and poor documentation, than if I had simply written it myself.  But in this case, using the 3rd party physics engine <a href="http://box2dflash.sourceforge.net/">box2dflash</a> has turned out to be excellent. The API was much better than I expected, the docs have some quirks but are substantial, and the community is large. The result is way more functionality than I would have ever achieved, with a lot less work on my end.</p>
<p>While doing some minor optimization checks by selectively disabling certain features, I noticed a significant slowdown was being caused by alpha changes (translucency).  Strangely, if the graphic contains translucency but you don&#8217;t alter the alpha, there is no slowdown.  So I implemented a smart per-object cacheing system &#8211; in this case, alpha is applied and the graphic is drawn to a cache, and future changes in alpha trigger a cache refresh.  This is useful for any property that doesn&#8217;t change too often, like a rotated object at rest &#8211; render the rotated version to the cache, then all future frames will render the cache without rotation.  Using this technique and the box2dflash physics engine, on a typical machine I&#8217;m able to get 100 balls interacting (each with 2 translucent graphical objects), plus all the level blocks, and maintain an average 40fps.  Using Flash as a platform will not be a problem.</p>
<p>The next tech demo will be a control test &#8211; binding user input to commands, passing those commands to a Thing&#8217;s state machine, applying forces/motion based on the current states, and activating graphical representations of those states.  In other words, running around.  To be updated on future Jetpack developments, please register on JetpackHQ!</p>
<p><u><strong>Update</strong><br />
</u></p>
<p>This is a little jerky at times mainly because the code that lowers the frame rate under high load isn&#8217;t currently functional.&nbsp; It&#8217;s trying to hog the processor and the browser isn&#8217;t having it.&nbsp; This will be fixed in a later release.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jetpackhq.com/blog/2009/07/16/jetpack-physics-test/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
		<item>
		<title>Particle Effects</title>
		<link>http://www.jetpackhq.com/blog/2008/06/23/particle-effects/</link>
		<comments>http://www.jetpackhq.com/blog/2008/06/23/particle-effects/#comments</comments>
		<pubDate>Mon, 23 Jun 2008 16:46:50 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[Tech Demos]]></category>

		<guid isPermaLink="false">http://www.jetpackhq.com/blog/?p=6</guid>
		<description><![CDATA[Here&#8217;s a test of the new particle smoke system I&#8217;ve been working on for the Jetpack exhaust.  This one uses 400+ separate smoke particles, but in the game this number will have to be reduced for speed.  I would also like the smoke to flow along the floor, but this might be too [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a test of the new particle smoke system I&#8217;ve been working on for the Jetpack exhaust.  This one uses <strong>400+</strong> separate smoke particles, but in the game this number will have to be reduced for speed.  I would also like the smoke to flow along the floor, but this might be too taxing on the collision system, and I might have to just make the particles disappear when they hit the floor.  Whatever we end up with, I think it will look pretty cool.</p>
<div style='text-align:center;'>
<OBJECT id="iefix_unique_2008_06" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" WIDTH="300" HEIGHT="300"><br />
<PARAM NAME=movie VALUE="/blog/r/swflauncher.swf?run=particle-test.swf"><br />
<EMBED src="/blog/r/swflauncher.swf?run=particle-test.swf" WIDTH="300" HEIGHT="300" TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer"></EMBED></OBJECT>
</div>
<p>This requires Flash 9 &#8211; please let me know if you have any problems getting the example to run!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jetpackhq.com/blog/2008/06/23/particle-effects/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>3D Tile Test</title>
		<link>http://www.jetpackhq.com/blog/2008/02/16/3d-tile-test/</link>
		<comments>http://www.jetpackhq.com/blog/2008/02/16/3d-tile-test/#comments</comments>
		<pubDate>Sat, 16 Feb 2008 19:35:51 +0000</pubDate>
		<dc:creator>Adam</dc:creator>
				<category><![CDATA[Tech Demos]]></category>

		<guid isPermaLink="false">http://www.jetpackhq.com/blog/2008/02/16/3d-tile-test/</guid>
		<description><![CDATA[One of the big changes for Jetpack 2 is a 3D look.  I don&#8217;t want to go full 3D &#8211; 3D has its place but it often hurts playability.  A good example is Civilization 4 &#8211; IMHO it got a lot uglier and less fun when they made the switch to 3D graphics. [...]]]></description>
			<content:encoded><![CDATA[<p>One of the big changes for Jetpack 2 is a 3D look.  I don&#8217;t want to go full 3D &#8211; 3D has its place but it often hurts playability.  A good example is Civilization 4 &#8211; IMHO it got a lot uglier and less fun when they made the switch to 3D graphics.  Jetpack will have a form of faux-3D, similar to isometric but at a slightly different angle.</p>
<p>I created a level importer for the old Jetpack levels, and also imported all the old graphics to use as placeholders until I get new art.  I decided to have all tile pieces be square, and create angled versions for walls &amp; floors on the fly.  This creates a strange effect when using the old graphics.  The screenshot below looks really low res and blurry &#8211; don&#8217;t worry, that will change once I get an artist.  But this is (probably) the resolution and faux-3D look the game will have.  It will fit in 800&#215;600 in full screen mode.</p>
<p align="center"><img src="/blog/r/3d-tiles.png" style="border: 1px solid black" height="468" width="742" /></p>
<p align="center"><strong>Old-school low res graphics being manhandled into a faux-3D environment</strong></p>
<p align="left">The tiles in the old Jetpack were 12&#215;12.  These are 28&#215;28, or if you measure the whole cube with wall &amp; floor, 36&#215;36.  The new levels/maps/rooms will be a couple tiles bigger in each direction.  The faux 3D tiles are presenting a problem that I didn&#8217;t anticipate being so tricky, when doing depth ordering.  I&#8217;m going to put that off until later.</p>
<p align="left">The issue I&#8217;m dealing with now is collision detection.  In the old jetpack, the tiles were fixed in place, and collision detection could be done based on a simple grid.  For Jetpack 2, I may want the tiles to be movable, and I also want semi-realistic physics, so more complex collision detection is required.  I&#8217;m not planning on doing any special polygon handling or rotating &#8211; this will be strictly circle &amp; rectangle simulation.  The method I&#8217;m planning on using is: when a collision is imminent, step each object forward until right before the collision, then store that collision in a list sorted by time of impact.  The collisions are processed in order by time.  I&#8217;m hoping this method will be fast and accurate enough to handle something like 50 ping pong balls bouncing off eachother.  That may be too optimistic.   We&#8217;ll see how it works.</p>
<p align="left">&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jetpackhq.com/blog/2008/02/16/3d-tile-test/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
	</channel>
</rss>
