Pick up my new RSS feed over there!
Farewell, blogger!
A blog to document my (hopefully) life-changing story for 2009.



That there is a delicious pie chart of where people left my game for good, their IP address never to grace my website again. 45% of my visitors were lost completely before even loading a level. I then proceeded to lose around 20% of my traffic at each stop in the tutorial, to the point where less than 1% of total traffic finished the tutorial in it's entirety.
Sorry this one is unlabelled, but it is how many times each level was played - and essentially goes in order around the wheel - Tutorial 1, tutorial 2, tutorial 3, tutorial 4, etc... private function dec2bin(dec:uint, digits:Number=6):Array {
var result:Array = new Array();
for (var i:Number = 0; i <= digits-1; i++) result[i] = 0; for (var i:Number=digits-1; i >= 0; i--) {
if ((dec - Math.pow(2,i)) >= 0) {
result[i] = 1;
dec -= Math.pow(2,i);
}
}
return result; // results are in reverse order... 1 == 1,0,0,0,0,0
}
[...] ,,1,1,0,0,0,0,0,0,,2,2,0,0,0,-1,10,0,,3,3,0,0,0,23,0,0 [...]I used comma deliminators and the data is broken down as:,,Array Index, Tick#, jumpstate, firestate, (other keys)...Keystates could be At Rest (0), Just Released (-1), or Held Down (length).
...191J192Q200p201'202'203'204'205W300L...
package {
import flash.display.DisplayObject;
import flash.display.MovieClip;
import flash.events.Event;
import flash.utils.getDefinitionByName;
[SWF(width='800', height='450', backgroundColor='#E5E5E3', frameRate='30')]
public class Preloader extends MovieClip {
public function Preloader() {
stop();
addEventListener(Event.ENTER_FRAME, onEnterFrame);
}
public function onEnterFrame(event:Event):void {
if(framesLoaded == totalFrames) {
removeEventListener(Event.ENTER_FRAME, onEnterFrame);
nextFrame();
init();
} else {
// Show your preloading graphic or animation here
}
}
private function init():void {
var mainClass:Class = Class(getDefinitionByName("Main"));
if (mainClass) {
var app:Object = new mainClass();
addChild(app as DisplayObject);
}
}
}
}
It's a very simple application. It simply adds an event listener that waits until ALL frames have loaded, and once that happens it will launch your "Main" class. At this point in the game, we still only have a single frame, so it won't do much. In this case, "Main.as" is my main class for Protonaut and also exists in the root folder of my project. You will have to edit this to match the main class name for your project - use "BobJones" if "BobJones.as" is the primary class in your project."mxmlc.exe" -frame two Main -file-specs="Preloader.as"
var app:Object = new mainClass();
var app:Object = new mainClass(this);

This game is definitely bottom-rung in terms of control. Just give it a quick run-through and jump off of a ledge and you'll see what I mean. It's almost as if you controls are mapped directly to the keyboard in a hideous 1:1 ratio - it's obvious there was not much thought put into this at all.