Jetpack on Facebook
JetpackHQ | Blog Home | Users | Register | Log in    


Jetpack is a classic DOS-based platform game released in 1993. This blog is a chronicle of the development of the long-awaited sequel, Jetpack 2. Please register to be notified about the progress of Jetpack 2!

The Jetpack Retrofit Contest!

February 9th, 2010 - filed under Development News, Input Requested


I’ve set a goal to release the new web playable Jetpack in March.  To get all the programming done in the next month will take a lot of work, not to mention the graphics, music, sounds, and extra levels.  If you’ve been following this blog, you know this is an indie release with a shoestring budget, and I can’t afford to hire an artist.  So instead, I’ve decided to blow it all on a contest!  This will give everyone in the Jetpack fan community a chance to contribute to the new Jetpack, and will help to reward some of the great work that’s being donated.

Calling All Artists, Musicians, SFX Wizards, and Level Designers

I already have a few volunteer Jetpack fans doing some great work, but we need a lot more. You can contribute any of the following resources for the final release:

  • Graphics: Use this template and replace the old blocky graphics with new ones that are closer to the style of modern flash games
  • Sound Effects:  Record your own replacements for the sound effects here. There’s no remastering these, since my masters are 8 bit 8000hz mono VOC. I need 256bit 44khz stereo mp3. Feel no obligation to stay close to the originals!
  • Music:   I need MOD format music, 50k-150k per song, in styles to suit different types of levels. You must be the copyright holder. I recommend MilkyTracker. Note the exact format we can support is still up in the air.
  • Levels:  I’d like to put a lot of new levels in the release.  Send me your creations that you consider to be the cream of the crop. Currently the only way to create levels is with the DOS version of Jetpack

New creations are great, and if you have any past work to which you still hold the copyright, that will work too. I’ll use the best parts out of what I receive, as long as it meets my quality standards.

Prizes

A total of $200 will go to the 6 people who create the most content chosen for use in Jetpack.

  • The top 2 will receive $50.00
  • 4 runners-up will receive $25.00

In addition EVERYONE who submits work used in Jetpack will receive:

  • A FREE premium/deluxe/platinum edition of Jetpack
  • Your name in the credits of the game

Get Started!

The contest ends on March 13th. Send in your creations as often as you like, the sooner the better. With your permission, I’ll place your entries in a members-only section of the blog for members to vote & comment on. Until I get a submission form set up, you can submit your work to the business email here.

Also, please help spread the word about this contest to any gaming groups or forums you’re on!

See all the latest submissions on the contest updates page!

Here’s a sample: song1 by Saga Musix

Rules

* The “Content” refers to any submitted work, data, or content, or any number of parts of such Content.
* You must be the copyright holder of the submitted Content, with the ability to transfer copyright ownership of the Content.
* By sending Content to Adept Software, you grant Adept Software the unlimited royalty-free license to use, modify, publish, and sell the Content as part of a game.
* While votes may be encouraged from users, Adept Software will be the sole judge of the winners of the contest.
* Winners are solely responsible for all taxes and/or fees that may be incurred.
* Adept Software reserves the right to alter the rules of this contest at any time.

BY SUBMITTING AN ENTRY, YOU WARRANT AND REPRESENT THAT IT: (A) IS YOUR OWN ORIGINAL WORK, (B) DOES NOT CONTAIN, INCORPORATE OR REFERENCE ANYTHING THAT IS OWNED BY ANY THIRD PARTY OR ENTITY OR WOULD REQUIRE THE CONSENT OF ANY THIRD PARTY OR ENTITY IN ANY JURISDICTION, (C) DOES NOT INFRINGE UPON THE COPYRIGHTS, TRADEMARKS, RIGHTS OF PRIVACY, PUBLICITY OR OTHER INTELLECTUAL PROPERTY OR OTHER RIGHTS OF ANY PERSON OR ENTITY, AND (D) THAT PUBLICATION OF THE WORK WILL NOT INFRINGE ON THE RIGHTS OF ANY THIRD PARTY. ANY SUCH ENTRANT WILL INDEMNIFY AND HOLD HARMLESS, SPONSOR FROM ANY CLAIMS TO THE CONTRARY. Contest void where prohibited or restricted by law and subject to all applicable federal, state, local and municipal laws and regulations.

Good News, Everyone!

January 31st, 2010 - filed under Development News, Status Updates

(apologies to Hubert J. Farnsworth)

We’re shifting gears!

Instead of just releasing a small retro port as a milestone on the way to Jetpack 2, I suddenly realized with so much work done, taking a bit more work I could make a full game release out of it. Announcing the March 2010 release of a brand new & enhanced, web playable Jetpack!

Jetpack Logo

From the press release:

Jetpack is a classic game from the MSDOS era (1993). Jetpack was the #1 top seller for its publisher out of 70 titles, and since its re-release as freeware in 1995 it has been downloaded over 1 million times from AdeptSoftware.com. Many people have fond memories of the family-friendly brand. The old DOS version of Jetpack continues to receive 2000+ downloads per month from our site, despite requiring DOSBox to run in new versions of Windows. The re-release of Jetpack to the web platform will add high res graphics, new levels, remastered sounds, realistic physics, and a pixelated “retro mode”, as well as a level editor integrated into the level repository at JetpackHQ.com.

Adept Software was founded in 1997 and incorporated in 2004. Past projects range from development applications (PLC, Nautilus) to dating & social networking services (CyberSoulmate, NetRelate, ConnectMate). Our current focus is on web playable video games, specifically reviving classic retro games.

Jetpack Level Intro

 
 
The title of this game will just be “Jetpack”, like the original. As for Jetpack 2, the plan is for a release near the end of this year.   I’m pulling the retro mode out of Jetpack 2 – it will only exist in Jetpack 1.  The gameplay of Jetpack 2 will be significantly different, so you’ll want to play them both.
 
 
It’s great to be working toward a goal that’s so close! We’ll be staying true to the original gameplay, but with your help there will be several enhancements:

  • New high res graphics & sound effects
  • Music!
  • New levels!
  • Difficulty levels. Finally my mom will be able to play.
  • Improvements to controls and physics
  • Shiny new info panels & end level stats
  • The author & background story for each original level, including the official hintbook text
  • Web playable, embeddable, and downloadable versions
  • Retro mode with the original, old school graphics and sounds

I say “with your help”, because I’m going to need help creating new graphics, music, sounds, and levels. More on that coming soon.

Adam

Control Me

January 18th, 2010 - filed under Input Requested, Programming, Status Updates, Tech Demos

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… The new path from input to action now looks like:

  • set up key bindings from default or configuration data
  • for each human player, translate input into commands based on bindings table; “right arrow” becomes “move right”
  • send commands to each player’s controlled entity
  • each entity processes commands through its state machine(s); if we’re on the ground, “move right” becomes “run right”
  • active states run actions – in this case, the “run right” state applies horizontal force to the entity’s physical body
  • the graphical representation of the physical body is updated

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’s active state machines are displayed in the debug line at the bottom.

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 – it will follow the mouse cursor using a generic AI “chase” algorithm. This release also incorporates various other enhancements, including the launcher from a previous post.

Jetpack 2 Engine Status

I meant to have this demo out a month ago, but I opened up the Pandora’s Box of AS3 code optimization and fell in. This had to be done at some point, so I’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 – there will be a big post on this later. The engine is pretty close to basic playability now, and I’ll be releasing a special retro version of Jetpack in March.

Personal Stuff

My gallbladder surgery was successful, but I’m only feeling about 25% better. I think it was worth it, but it looks like that wasn’t the cure-all I was hoping for. Thanks to all the well-wishers!

Progress Report

December 2nd, 2009 - filed under Status Updates

Very shortly I’ll be releasing the next tech demo, on controlling entities with state machines. Before I wrap that up, here’s an update on the progress since the last demo:

What’s Done

  • faux-3D depth: What a headache. I spent days banging my head against different methods of faux-3D depth sorting in 2D, until I finally realized the problem: it’s impossible. Depth in 3D is not sequential, and approximating it cannot be done perfectly using a back-to-front rendering system without some big hacks. So I adjusted the tiles to be slightly less 3D, and I think it’s just as good with no sacrifice in speed.
  • control: input bindings, command queues, state machines, actions
  • animated effects: “tween” style
  • created entities: ball, spring, missile, retro jetman

What’s To Come

I had hoped to get pre-alpha relase 1 done by December 31st, but my work needs me for extra time this month. When its done, this first official release should be a roughly playable “retro-mode” of a few levels, using the original graphics. I also have gall bladder surgery scheduled in early January. Hopefully that will cure or at least help with my chronic fatigue.

Remaining tasks for the pre-alpha:

  • basic sound effects
  • basic menus
  • retro tile behavior: ladders, gems, treasure, teleporters, conveyor belts
  • retro creature behavior: jetman, ball, spring, missile, homer, bat, trackbot, flitzer, spikes

Using a Launcher SWF

November 17th, 2009 - filed under Programming

Since this blog could potentially have many SWF examples on a single page, I have to consider effect of having them load and run all at once, both on the browser and on my bandwidth.  Users will not always want to see every SWF, so ideally a “click to start” intro would precede the loading of each example.

I tried this with just an image: when it was clicked, it would hide itself and embed the SWF where the image had been. Unfortunately, the SWF was not focused and would have to be clicked again, and Firefox has a flaw that does not always allow javascript to focus a SWF :( . Therefore the nice and simple image idea had to give way to a whole separate SWF as a launcher for the examples. The launcher is always running, but it’s small and the frame rate is low and it doesn’t do too much. Once the launcher is clicked it loads the example SWF and bumps up the frame rate to the proper level.  Of course, since this is Actionscript, what takes a sentence to write took 2 days to implement.

This is a form of preloader, and I’ve gotten confused a few times when thinking about this, so I’ll document it here.  It also helped me to refer back to my post on preloaders.

preloader via separate swf

  • displays “click to start” and waits – this can be bypassed via an argument to the swf
  • loads the main swf while updating progress
  • sets the new framerate, activates the main swf, and goes away

preloader embedded in main swf

  • the preloader is on frame 1 of the timeline, and begins to execute while the rest of the timeline loads
  • large assets are embedded in later frames
  • the preloader passes control to the main program once the swf fully loads

For Jetpack, I’m going to attempt a combination of the 2 methods, so the user experience will be as follows:

  • The game window will instantly show loading progress (preloader swf)
  • The preloader will fade away, revealing a Jetpack level in demo playback (main swf preloader)
  • While the demo game runs, a status bar will show progress as the rest of the assets (mp3 music) load
    (At this point, an in-game ad could be shown, but the income from those is not impressive and I’d rather not clutter up the game.)
  • When loading is complete, the main menu will fade into view

There are some other advantages to using a launcher swf that I can think of:

  • When users embed the launcher swf on their own websites, it will always load the latest version of Jetpack from JetpackHQ.
  • I’ll have full stats on who is playing and where.
  • Security against game reskinning is improved, by having the launcher and the main swf validate eachother.

Getting the launcher just right took some struggling with Actionscript, but the result works great.  It’s only 2k, and can serve just about any swf file (on the same server).  I was able to find a way to read the target framerate from the loaded swf and set that before launching it.  You can also read the width & height, but I know no way of resizing the SWF at runtime without using javascript.  I’ve attached the source code to this project at the bottom of this post.  Here’s a sample:

function Startup()
{
    // ARGS - launch='', now=0/1
    var args = stage.loaderInfo.parameters;
    if(args.launch!=undefined) launch_swf_path = args.launch;
    if(args.now!=undefined) wait_for_click = !int(args.now);
    if(!launch_swf_path) Fail("usage: launcher.swf?launch=abc.swf&now=0");

    if(wait_for_click)
    {
        Show_WaitForClick();
        stage.addEventListener(MouseEvent.CLICK, StartLaunch);
    }
    else StartLaunch();
}

//--------------------------------------

function Shutdown()
{
    root.Shutdown();
    root = null;
    System.gc();
}

//------------------------------------------------------------------------------

function StartLaunch(event:MouseEvent=null)
{
    if(wait_for_click)
    {
        stage.removeEventListener(MouseEvent.CLICK, StartLaunch);
        Hide_WaitForClick();
    }
    Show_Preloader();
    loader = new Loader();
    loader.contentLoaderInfo.addEventListener(Event.COMPLETE, CheckReady_Hack);
    stage.addEventListener(Event.ENTER_FRAME, CheckReady_Hack);
    loader.load(new URLRequest(launch_swf_path));
}

//--------------------------------------

function CheckReady_Hack(event:Event)
{
    // in certain cases when not waiting for click, complete/init fires but loaderInfo.frameRate
    // is not accessible.  misinformation from the official ActionScript docs: "When the loaderInfo
    // object dispatches the init event, you can access all properties of the loaderInfo object"
    if(event.type==Event.COMPLETE)
    {
        ready_hack = true;
        loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, CheckReady_Hack);
    }
    if(event.type==Event.ENTER_FRAME)
    {
        if(!ready_hack) return;
        stage.removeEventListener(Event.ENTER_FRAME, CheckReady_Hack);
        Launch();
    }
}

//--------------------------------------

function Launch()
{
    Hide_Preloader();

    var swf:DisplayObject = loader.content;
    // frameRate, width, height are only available before unload()
    stage.frameRate = swf.loaderInfo.frameRate;
    loader.unload();
    loader = null;

    // clear the stage
    while(stage.numChildren) stage.removeChildAt(0);
    // launch the loaded swf
    stage.addChild(swf);
    Shutdown();
}

Download launcher-2009-11-17.zip

15 Years

October 5th, 2009 - filed under Miscellaneous

Something happened shortly after the release of Jetpack in 1993 that changed my life, and not in a good way.  A combination of high stress and I’m guessing food poisoning or a stomach virus, gave me severe stomach pains and ulcers.  I didn’t have health insurance so I did not go to a doctor.  I took massive amounts of Maalox and Rolaids for a month until the pain settled from acute to chronic.  I eventually paid to see a doctor but I couldn’t afford any expensive tests so not much came of it.  Eventually the pain went away during the day – it only happens when I’m lying down now, usually around 3am.

Back in 1992 I would sleep 10 hours (generally from 2am to noon) and code 12+ hours every day.  I created Jetpack in 4 months.  I wrote Squarez Deluxe in 1 month.  Now, and for the last 15 years, I have been getting 4-5 hours sleep per day and suffering constantly from chronic fatigue.  My short term memory and concentration are shot.  I’ll be excited about a project and fired up to work, but when I try to code my abilities slip away and I’ll forget everything that was in my head.  I usually end up zoning out on TV or playing video games.  It’s a constant struggle to get things done, except on the rare days, maybe 1 or 2 a month, when my brain decides to work.

A couple years after this started, I finally got a job with health insurance (in Seattle), and over a year I saw 5 different doctors.  They were all completely useless – one actually listened for 3 minutes then told me to take Metamucil for the rest of my life – he spent more time asking me computer questions than trying to diagnose my problem.

  • I’ve had these tests: upper gi, small bowel series, endoscopy, colonoscopy, food sensitivity test, fat absorption test, ultrasound.  The only abnormality in my blood tests was elevated Gliadin IgG
  • I’ve tried 10 different diets, including vegetarian, no lactose, no fat, no salt, & celiac for 3 months
  • I’ve been to 10+ doctors, including gut and back specialists, chiropractors, massage, and acupuncture
  • I’ve taken countless drugs and herbal remedies, acid reducers, antibiotics, glutamine, hyoscyamine, etc, etc, etc.  Once I took a bad combination of anti-yeast herbals, went a little loopy, and ended up in the hospital.

Now I’m in Boston and the doctors seem a little better here.  Recently, thanks mostly to the internet and in part to my doctors, I’ve found 2 things that help my pain about 50% – Sucralfate/Carafate (bonds with hydrochloric acid to form a paste that allows intestinal ulcers to heal) and Dicyclomine/Bentyl (smooth muscle antispasmodic, stops intestinal cramping).  Now I find it easier to sleep, but after 15 years of this I have a sleep habit of waking up after 4-5 hours.  My latest doctor has also found that my gallbladder has some serious issues – but most of my pain is on the sides, not near the gallbladder.  I may have it removed soon, and I hope that turns out to be the cause.

In conclusion, I want to make 2 points:

  • This is why there is no Jetpack 2 yet
  • Universal health care is a basic human right.  No one should be excluded because of preexisting conditions, or have their insurance canceled when they get sick.  A friend of mine recently had her coverage revoked after being diagnosed with cancer – the reason?  She hadn’t disclosed a high blood pressure test 5 years earlier.  The decision to deny care should not be made by people whose jobs depend on maximizing profit – it’s just that simple.

Actionscript Caveats, Gotchas, & WTF – Part 1

September 16th, 2009 - filed under Programming

This is what I would like to do to the designers of Actionscript:

There are very few good large scale games written for Flash, and there’s a good reason why: Actionscript is chock full of undocumented problems that Adobe is either unaware of or unwilling to fix.  I feel bad for anyone who was introduced to programming with this language.  I wish I had documented all the roadblocks I’ve had to work around, but I’ve only got a small sample of the most heinous or recent ones that are causing headaches.  I don’t have any saved up for part 2 of this series, but I’m confident that won’t be a problem.

Mysterious Arrow & Numeric Key Issue

Recently, on one of my computers, arrow and number keys are firing key-up immediately after key-down, so you can’t tell if one of the keys is held down.  Many flash games never catch the key-down event at all, so most flash games are unplayable for me on this computer.  I have no idea why – I’ve tried several recent versions of the Flash player and both the debug/release versions, both in-browser and standalone.

Mysterious Faint Box

On another one of my computers, whenever an object is rotated a very faint solid rectangle appears behind it.

The Registration Point Problem

Most graphical objects in Actionscript have a registration point (or “center”) at the object’s center, meaning when you set an object’s position you are saying where the center of the object should be.  This also means that rotation occurs more or less as you would expect.  Bitmaps don’t work this way – the registration point is the top left of the object.  There is no way to move the registration point.  What you have to do – and all this is completely undocumented – is hack a solution by applying an offset via matrix transformation, and never again using the object’s x, y, or rotation properties.  There are many many people asking about this problem on the web, and only a few partial solutions are out there.  I wasted an entire day and pulled out a lot of hair figuring this out.

Alpha / ColorTransform is slow

If you change the opacity of your visuals, you’ll notice a significant drop in performance.  I was suprised by this, because I’m also importing graphics with an alpha channel, and those don’t have the slowdown.  I’m guessing that Flash’s drawing algorithm must be applying the alpha as a separate step before the blit, rather than doing it during the blit.  To get around this and other suboptimal behavior, I’ve written a system to automatically cache a graphic after all the effects are applied, and mark the cache dirty when an effect changes.  Also, when opacity is set to zero the processing continues unabated – you need to manually set the graphic’s visibility off when this happens.

More Reading

There used to be some other websites with more Actionscript issues, but they seem to be gone.  If you find any more, please share them.

Iconara’s Architectural Atrocities
Choice quote:

The ActionScript 3.0 API:s have a few interfaces, in general it’s a good thing, it shows that the Macromedia/Adobe developers actually understand something, which hasn’t been obvious in the past.
The decision to include interfaces in AS2 was probably a manager or marketing executive saying “hey, all the other languages have something called ‘interfaces’, why don’t we?”, and the developers quietly obeyed.

Don’t Phase Me, Bro

July 29th, 2009 - filed under Input Requested

While I think shooting would add some interesting gameplay elements to Jetpack, I’m reluctant to add weapons for several reasons:

  1. We have this cool, nonviolent vibe going on – at least, the violence only happens TO you.
  2. It seems like over 95% of games have guns.  This bugs me – its been done to death.
  3. Really creative, original, groundbreaking games like M.U.L.E., Lemmings, and Katamari Damacy don’t need shooting.  There are plenty of unique gameplay elements to explore if you think outside the box.

On the other hand, shooting is fun.  What do you think – no weapons, lots of weapons, or a few limited options like a freeze ray?

As for other carried items, how important is the Phase Shifter to gameplay?  Obviously it was originally inspired by Lode Runner, but is this aspect of gameplay still necessary to Jetpack?  Here are a few of the ideas I have for carried items.  You will probably be limited to only holding one item at a time.

  • Keys – for opening doors
  • Flashlight – for dark locations
  • Proximity Locator – for finding hidden objects
  • Bomb – for destroying bricks
  • Shield – for temporary immunity

Can you think of any other fun usable items?

Other News

  • I’ve unsubscribed everyone from all blog posts except releases.  If you want to subscribe to other/all posts, please do so manually from the dashboard.  The dashboard is available to all registered users – there are a couple other interesting features there for now.
  • There’s a new “contact us” page if you need to write to me privately.
  • If you’re on Facebook, join our Jetpack Facebook Group
  • We have a new users page which shows the bio & web page of all our users.  It isn’t much, but you can find posts by certain users.  Your email is private – if you want other users to be able to contact you, add contact info to your biography in the dashboard page.  I recommended obscuring email addresses somehow to avoid spammers.
  • I’d like to send thanks out to TIGSource for posting about Jetpack 2TIGSource is a cool site for independent gaming news.

Protecting Flash Source Code

July 26th, 2009 - filed under Programming

Imagine spending months or years creating a game, only to have several remarkably similar games appear on the market at the same time.  If your source code is leaked or stolen, you could easily find yourself in the position of competing for income with your own work.  Languages like C++ are compiled into machine code, but a major downside of Actionscript is that your source code is maintained virtually intact in your released SWF.  While the few flash decompilers out there are admittedly very buggy, the opporunity exists for a dastardly thief to spend minimal effort to produce a game very similar to your own.  Legal options are often available, but its much easier to avoid the expense and hassle by protecting your code.  This is why SWF obfuscation tools exist.

I evaluated Kindisoft’s secureSWF, Amayeta’s SWF Encrypt, Ambiera’s irrFuscator, and LockLizard’s Lizard Flashguard.  Based on the level of security features, ease of use, and stability, the tool I’ve chosen for this task is secureSWF.  It offers several good features, and the ones I found most useful are:

  • renames identifiers
  • uses several techniques to obscure code flow
  • encrypts strings
  • optimizes code
  • has build process integration

Obfuscating Actionscript is a pretty complex task and secureSWF handles it well – my SWF ran perfectly with adjustments to all security settings.  Here are the results of my rough performance comparisons:

no security
plain SWF: 211k , 37fps

default settings
secure SWF: 293k, 35fps
40% larger, 6% slower

custom settings – disabled “control flow obfuscation”
secure SWF: 244k, 37fps
15% larger, no performance loss

Tweaking the settings for less aggressive encryption can give better size and performance, but I consider the small performance hit to be a mandatory cost of business for creating a mid-scale game using Actionscript.  If you have a lot of high quality original source code that you want protected, I highly recommend Kindisoft’s secureSWF.

Jetpack Physics Test

July 16th, 2009 - filed under Tech Demos

Finally it’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!

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’ve been very happy with the result. I am reluctant to use 3rd party code because when I’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 box2dflash 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.

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’t alter the alpha, there is no slowdown. So I implemented a smart per-object cacheing system – 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’t change too often, like a rotated object at rest – 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’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.

The next tech demo will be a control test – binding user input to commands, passing those commands to a Thing’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!

Update

This is a little jerky at times mainly because the code that lowers the frame rate under high load isn’t currently functional.  It’s trying to hog the processor and the browser isn’t having it.  This will be fixed in a later release.


  • Categories