Click to start audio. Graphics and weapon strength pulse to the beat.
Space bar fires weapon.
Forward arrow key accelerates, back arrow key decelerates.
Right and left arrow keys rotate.

Keyboard controls only, sorry mobile users.

This applet is built using p5.js. The graphics are constructed using a small utility class I wrote, ArbitraryShape.js, which abstracts the plotting of strokes and handles rotation, marching, etc. more conveniently than vanilla p5 does. This made the game logic very simple to build - for example, the ship object simply asks its ArbitraryShape component to rotate and adjust velocity, and that's movement taken care of. The ArbitraryShape then passes back its new position so the ship can check collision.

This was a quick project I built all the way back in 2018, and it would be nice to revisit it to add some visual flair and introduce scoring. If I were to update it, though, it makes more sense to build a fresh 2.0 version in Three.js.

Under heavy construction.