Custom software 3D renderer
No WebGL. A hand-written rasteriser projects 3D points onto a 320×200 backing canvas with near-plane clipping, a painter's-algorithm depth sort and distance fog.
A complete retro-styled third-person shooter that lives inside a single HTML file — a hand-written software 3D renderer, a live chiptune synth and procedural arenas, with zero dependencies and no build step.
Free & fully offline — nothing to install. The Android .apk is sideload-only (allow installs from unknown sources).
Everything ships inside one document — no engine, no assets to load, no network calls. These are the systems the game actually implements.
No WebGL. A hand-written rasteriser projects 3D points onto a 320×200 backing canvas with near-plane clipping, a painter's-algorithm depth sort and distance fog.
A seeded xorshift generator builds reproducible maps with flood-fill reachability, open plazas and default / ice / lava biomes. Type a seed to replay or share any arena.
Music and every sound effect are synthesised on the fly from oscillators and noise buffers via the Web Audio API — a procedural chiptune loop that follows the day/night cycle and wave.
Grunt, Runner, Tank, Splitter, Kamikaze, Shield-bearer, Sniper and Healer (which pulses health to allies), plus elite variants — and a Summoner boss that calls in reinforcements.
Hand-authored layouts with objective variety — survive, find chests, defeat bosses — alongside an endless arena, a date-seeded Daily Challenge and a ghost replay of your best run.
Three HUD scales, red-green and blue-yellow safe palettes, big buttons, a left-handed layout, aim assist, adjustable FOV and crosshair, and remappable gamepad bindings.
No installer, no launcher, no account. The whole game is a single document — open it and you are playing.
The readable source is src/retro-strike.html; the shipped release is dist/retro-strike.min.html — the same game, compressed. Open the release in any modern browser and you are in the arena.
From the title screen choose Endless Arena, the 12-level Campaign, the Daily Challenge, a Training Range, or type a custom seed. Difficulty and arena size (48 / 64 / 80 tiles) are set here too.
Survive waves with four upgradeable weapons and throwables, spend between-wave shop cash on medkits, shields and a drone companion, and push for the top-10 leaderboard.
Three input schemes feed one shared game state. Everything below is taken from the project's controls reference.
Portrait phones show a rotate-to-landscape hint (tap to play anyway).
Fire, swap, throw and pause are remappable in Settings → Controller Remap.
Captured from the live game — the real 320×200 software renderer, 4× nearest-neighbour upscale.












Prefer to jump straight in? Open the playable build →
Play it in the browser, or clone it and open the file locally — the game runs fully offline with no network calls.
Hit Load Up and the playable build opens right here — no clone, no server, no install. The game auto-saves your settings, achievements and scores in localStorage.
Load Up & PlayThe questions this project answers for itself.