Destroids: a classic Asteroids clone built from scratch in Odin and WebAssembly
Destroids is a faithful vector-style take on the arcade classic. Pilot a ship through a drifting field of asteroids, blasting them into smaller and smaller pieces while dodging the debris, then clear the wave before your three lives run out. Every frame's starfield, rocks, bullets, and particle debris are recorded into one buffer and flushed to the screen in a single WASM-to-JS crossing, so the field can stay dense without the frame rate suffering.
How to play
Turn with ◀/▶ (or A/D) and fire the thrusters with ▲ (or W); tap SPACE to shoot and SHIFT to make a risky hyperspace jump to a random point on the field when a rock has you cornered, and you might teleport straight into another one. Large asteroids split into smaller, faster pieces when hit, so clearing a wave means whittling every fragment down to nothing. P pauses, ENTER restarts, and S/M toggle sound effects and background music. Losing all three lives ends the run; your best score is saved locally so you can chase it again next time.
How it's built
The whole game, physics, collision, rendering, and audio, is written in the Odin programming language and compiled to WebAssembly, with zero image files, zero audio files, and zero JavaScript/npm runtime dependencies. Every visual is a canvas vector primitive; every sound is a synthesized Web Audio oscillator or filtered noise burst, and the background music runs on its own AudioWorklet thread so it can't disturb the frame rate. Rendering goes through Batchiness, an open-source batched-Canvas2D library that records a frame's draw calls (hundreds of starfield points, dozens of asteroids, bullets, and debris particles) into one packed byte buffer and flushes them across the WASM↔JS boundary in a single crossing, rather than one call per shape.
About the developer
I'm Ewald Horn, a software developer: I build all kinds of things, not just games. Destroids is one example from a personal collection of small browser projects used to explore systems programming, WebAssembly, and simulation from first principles. I might be available for freelance development work.