Instructions:
There are two game modes, but the gameplay in both is pretty straightforward -- just shoot and destroy everything! Be careful - don't stray too close to the explosions because the larger debris (the small spinning triangles) will damage your shields (unless you have the Debris Shield powerup) . Your shields can also absorb limited collisions with heavily damaged asteroids and your own gunfire, but they won't hold out for long, so this should generally be avoided. Both shooting the guns and firing the thrusters will consume energy -- this will slowly recharge though.
When you destroy an enemy ship, it will release one of serveral kinds of power-up. Collect it before it collides with an asteroid (or worse, another enemy ship grabs it).
For both game modes, if you beat the "world high score", you can enter your name for all to see (max of 12 alpha-numeric characters).
Game Mode: Asteroids
Just blow up all the asteroids! When you destroy them all, you progress to the next round. Shoot accurately -- if you achieve over 70% accuracy in a round you will receive a bonus to your score. You will get a bounus life every 10,000 points.
Game Mode: Challenge
This game mode is good for a quick blast. The objective is to get as high as score as possible (which basically means staying alive for as long as you can...). There are no rounds -- it is a continuous fight against enemy ships (a new level 3 enemy ship is spawned every 15 seconds), with a few medium and small asteroids thrown in as a buffer. You will get a bonus life every 50,000 points.
Important - when the game screen comes up, be sure to click into the applet first -- otherwise it won't detect you key-strokes.
Key Assignments:
Z/X = Rotate left /right
M = Fire thrusters
K = Shoot missile (does lots more damage, but you have a limited supply per ship)
L = Fire guns
S = Toggle Sound On/Off
P = Pause
FAQ / Common Problems / Notes:
Question: What happened to the old high score? I reset the high scores when I released version 14. This is because (1) the game balancing has changed quite a bit, and (2), because version 13 had cheat keys (which I have since removed).......
Question: Thats a crazy high score -- how is it possible to get a score like that?. Answer: The key is to try and destroy all the enemy ships. In the first round, the enemy ship is worth 1000 points. Each round after, the point value goes up by 1000, and also an extra one appears. If you destroy all the enemy ships in round 6 (which is the highest round I have ever got up to), you will get 36,000 points, + 3 extra lives for your effor (ofcourse it is pretty much impossible to do this.....). In the early rounds, try to get the accuracy bonus, as this helps get extra lives, which you will need in the later rounds.
Problem: When the game loads, all the objects move really fast, then really slow, then really fast again (repeating). The automatic frame rate management code (switched on by default) is having trouble adapting to your particular computer -- this usually happens if you are using a Microsoft VM on a reasonably old computer (e.g. Pentium II or lower). Try hitting 'T' in the demo screen to toggle off the automatic frame rate management and cycle between a number of manual settings. You might also want to do this if you are getting a poor frame rate with the automatic management, or if you just want to try and get a better frame rate [the automatic management introduces a 20ms delay between each frame if the frame rate exceeds 100fps, and switches this off if it drops below 30fps]. Very high frame rates produce prettier engine and missile trails, but they can also result in the unpredictable movement of objects during game play (i.e. the game becomes impossible to play). A frame rate of about 50-70fps seems to be a good compromise.
Problem: My ship sometimes explodes but I am nowhere near an asteroid -- why? Reason: You have probably run into some debris (the small spinning triangles) from an explosion, and your shields were already low. Either this, or you have shot yourself (or have been shot by an enemy ship).
Problem: I hear shooting and explosion sounds but can't see where they are coming from. Reason: There is probably an enemy ship off screen trying to evade (or destroy) some off-screen asteroids.
Question: What is the enemy ship AI? Answer: Roughly this: If there is an immediate threat, destroy it if it can be easily, otherwise avoid it. If not, and off the screen, move on to it (to be fair to the player). If not, and there is a clear line to a power-up, persue it. If not, and there is a clear line to the player ship, shoot at the player ship. If not, move to a new location on the screen. This is an over-simplification of it, and there are a few subtlities / fudges I made based on play testing, but this is basically how it works. Enemy ships get tougher (more shields) and shoot faster each round (also more of them appear).
Question:What are the power-ups? Answer: Shield recharge, 10-second invincibility, Extra missiles, "Super Gun" (useful, but chews up energy......), Rapid Auto Fire (hold down L), Fast-Energy-Recharge (x2 speed), Debris Shield (stops you taking damage from the debris from explosions), and a Homing Missile Guidance System (+2 extra missiles so you can use it). Enemy ships will also seek out and use the power-ups. An enemy ship with a super gun, auto-fire and a payload full of missiles isn't usually good for your health. Tip: unless you have to, try not to destroy enemy ships in a hail of bullets, because you will probably also destroy the power-up they release in the process. Note that aside from invincibility, power-ups last until the end of the round, or until the player ship is destroyed (which-ever comes first).
Note: The homing missile guidance system works like this: If a homing missile has a current target identified, it will remain locked on to that target while there is a clear line to it, and while it remains within 45 degrees of the missiles heading. If a missile looses a lock, it will seek out a new target, locking on to the target that is closest to the direction it is heading in, and that it has a clear line to (though it will only "see" targets within 45 degrees of its current heading). Warning: homing missiles also consider the player ship as a valid target if you are unfortunate enough to get yourself in front of one.....
Note: While you are invincible, you won't be able to collect power-ups.
Note: It is possible for you (and enemy ships) to shoot pretty much any object, including missiles and even other bullets. The one exception is debris -- I thought it would be a bit mean if you by chance wasted a missile that just hapened to collide with an adrift piece of debris. Enemy ships may try to shoot out incoming missiles rather than try and avoid them if they are facing in the approximate direction when they first detect them.
Note: You won't receive credit for objects you don't destroy (i.e. things that enemy ships run into or shoot).
Note:The screen size is currently 800x600. Sorry to everyone that runs at 800x600 resolution - I'll put in a scaling routine at some stage, but this is down on the priority list. In the meantime, stick the browser in full screen mode (F11 on IE).
Note: The code around the framerate needs additional work to handle different virtual machines and operating systems (once I figure out a better way to do it, and get around to testing all of them....). From what I have seen, you will get best results if you are running Internet Explorer with Microsoft's Java Virtual Machine on Windows NT/2000/XP or Linux. If you are using a Sun VM (e.g. using Netscape, Opera, or a Sun plug-in), it will basically go as fast as your computer lets it (Sun's graphics routines appear to be orders of magnitude slower than Microsoft's, which has a nice side-effect of controlling the speed of the game....). An in-game framerate of 30+fps is good. If you are getting less than this, it isn't going to be great, and the collision detection with fast moving objects (i.e. bullets) may not be accurate. If you have background applications running, they may cause un unpredictable framerate -- the primary symptom of which is objects speeding up and slowing down on the screen as the program tries to adapt to the different CPU availability (a warning message will be displayed at the top of the screen if this is happening). A routine to accurately get the system time would avoid this problem.......