play the games

Celebrity Bloodbath

Hurl meat cleavers at annoying celebrities and watch them spew blood everywhere. Much fun :)

Play Celebrity Bloodbath

Hoth Strike

The rebels are fleeing Hoth but a few stranded pilots remain littered around the icy wastes. Zoom across Hoth’s frozen surface and rescue your comrades before they are zapped or kidnapped by the Empire’s increasingly menacing probe army.

hoth strike


Invaders from Mars

Earth is under attack from a distant terror. Can you save mankind from the marauding martian army ?

Climb in to your laser tank and square up to the wierdest critters you ever saw…

Invaders from Mars

Invaders from Mars

I put these nadditional otes together to help explain a few of the features I was looking to implement in Invaders fromMars. You will always find the latest test release reflected at
Since the code moved out of test you will find a playable version at
(Although I may drop new features in to the game I’m not strictly testing anything anymore since all of the sprite behaviour is defined.)

Details on each significant version change in test releases are listed below.

Sound effects enhance the action
Implementing sound effects in to a JavaScript game sounds pretty basic but is actually not something you can achieve through DOM manipulation or any other fancy techniques. I found a SWF file on the web that basically handles the sound generation. To create the sounds I fired up MAME and recorded my progress as a WAV file through some classic games such as Galaga. I then opened up Audacity (, an awesome little sound editing package and manipulated the sounds. The results are very nice and very arcade. This little game is certainly coming together.

Pulling it all together and a change of direction
Colourful aliens (test aliens. the real ones come soon) and a change of theme. Finalising game elements as I go.

Assembling a playable formation
Handling player expectations in an arcade game is a huge deal. No games in my opinion do it better than Galaga and Space Invaders. Most other shooters are derived from their models. So with my game Invaders from Mars I am looking in to providing a repeatable structure that sees the player battle it out in a familiar scenario over multiple levels. To that end I aim to provide an “alien formation”. Better still I want to have aliens break away from this formation to challenge the player more directly. I played and observed Galaga very closely since this was the closest model I could find for my game. The results will slowly appear in the tech area. You can see current progress by clicking the link above.

Improved performance
In an attempt to clean up display code I put a new function in place: this.blit() which handles all displaying of sprites with a few conditions. It appears to have shaved an unhealthy 10 frames per second off my average FPS.

Improved action and better stats
It’s important to monitor statistics when making any software so I put up a console that reflects (amongst other things) frames per second. I’ve seen it drop to below 30 on some systems but for the most part I’m seeing 50+.

Something else I’ve tweaked (and blogged about) is the ‘fun factor’ in the game. I’ve tried to make it more fun to actually shoot stuff !

Falling rocks!
Well, strictly speaking they’re asteroids. This was really an exercise in developing my workflow. Once the game mechanics are in place (currently about 60% complete) I just want to get on with developing cool aliens with smart behaviour.

I also took the opportunity in this version to put a console in. I can chuck any stats I like at the console.

I have tried to remain as faithful to arcade shooters as I can in that the player has full control of his ship (including lasers) even during the intermission. I am constantly looking at ways of improving the “feel good” factor of the game. Currently I find it quite satisfying just to rapid-tap the fire button.

Improved game structure and Player/Hi scoring
It’s time to put the scoring system in place. Every entity (object/sprite whatever you want to call it) has a Points Value. This points value is naturally added to the player score upon the entity’s death. Player score is displayed at the same time as the hi score and I deliberately format the scores as per the arcade games of old (i.e. To 8 places with leading zeros).

The player’s score is tested against the hi score on each refresh to keep the hi score up to date.

I also played around in the game logic area of the code to implement a neater intermission between levels. At the moment (until inspiration strikes) I speed the stars up and then slow them down before the action starts. The aliens also drift (randomly at present) in to place whilst a “READY” banner crosses the screen.

Player ship destruction and end of level
Much improved laser handling and the aliens now have a screen limit. Note: Aliens (or monsters in general) are defined by their Aggression parameter being set greater than zero.)

Player missiles and game structure
Players can now rapid tap the fire button. Improved collision on the missile/alien part sees improved performance and clearly more enjoyment.

This test also includes staging. There are now the following game stages in effect:

  • gameMode
  • getReady
  • attractMode

More bombs and player missiles
Aliens drop bombs based on behaviour and tendency towards aggression. The aggression flag is part of the object’s instantiation rather than being game specific.

Aliens now drop bombs. Simple in its execution in that only aliens set to alive = true can generate bombs. Bomb objects are set to expire at the screen edge. Currently no collision detection.

Simple collision test
Sprites are created through the core spritemagic script file. To test the concept of hit points and damage depletion on each object during collision we have coloured the sprite bounding box. The alien sprites pass through 6 colours before being set to this.dying = true.

There are quite possible too many on screen objects.

Copyright notice. Rebel Ideas is not a supporter of software patency in any shape or form. We are where we are at this point because of the ability to freely scutinise and benefit from other developer’s code. If you wish to use the code on this site feel free. We would however ask that you credit the source (Rebel Ideas –

%d bloggers like this: