Shareware-era shooter · One HTML file

RETRO STRIKE

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).

No install No engine No network v1.4.0 · MIT
License: MIT Version 1.4.0 Zero dependencies GitHub stars GitHub forks Last commit Single file Canvas 2D Chiptune Offline

01What's in the box

Everything ships inside one document — no engine, no assets to load, no network calls. These are the systems the game actually implements.

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.

Procedural arenas

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.

Live chiptune audio

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.

9 enemy types, 2 bosses

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.

12-level campaign

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.

Accessibility built in

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.

02How it works

No installer, no launcher, no account. The whole game is a single document — open it and you are playing.

1

Open one file

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.

2

Pick a mode

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.

3

Fight, shop, upgrade

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.

03Controls

Three input schemes feed one shared game state. Everything below is taken from the project's controls reference.

Keyboard & Mouse

W A S D
Move
← → / Q E
Turn (or mouse, pointer-locked)
Space
Fire (or left mouse)
Shift
Sprint (drains stamina)
1 2 3 4
Blaster / Spread / Rifle / Beam
G B H
Grenade / Mine / Cluster
V · C
Melee · Dash
Esc / P
Pause & menu
Tab
Shop list (intermission)

Touch

Left thumb
Virtual joystick to move
Right thumb
Drag to aim / turn
FIRE
Large round fire button
SWAP
Cycle weapon
NADE
Tap to throw, long-press to cycle
DASH · MEL
Dash and melee

Portrait phones show a rotate-to-landscape hint (tap to play anyway).

Gamepad

Left stick
Move
Right stick
Turn
RT / RB
Fire
LB
Cycle weapon
X
Throw
Start
Pause

Fire, swap, throw and pause are remappable in Settings → Controller Remap.

04Straight from the renderer

Captured from the live game — the real 320×200 software renderer, 4× nearest-neighbour upscale.

Prefer to jump straight in? Open the playable build →

05Get started

Play it in the browser, or clone it and open the file locally — the game runs fully offline with no network calls.

# clone the repo
git clone https://github.com/drsamonline/retro-strike.git
cd retro-strike

# just open the playable build…
open dist/retro-strike.min.html # macOS
xdg-open dist/retro-strike.min.html # Linux
start dist\retro-strike.min.html # Windows

# …or serve it locally
python3 -m http.server 8080

# edit the readable source, then rebuild
npm install # installs terser (the only dev dependency)
npm run build # src/retro-strike.html -> dist/retro-strike.min.html
JavaScript HTML5 Canvas Web Audio API Pointer Lock Gamepad API localStorage MIT License

Prefer zero setup?

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 & Play

06FAQ

The questions this project answers for itself.

+What exactly is RETRO STRIKE?
A complete retro-styled third-person shooter that lives inside a single HTML file. It has a custom software 3D renderer, a chiptune synth and a procedural arena — all in one document, with no engine, no build step and no dependencies.
+Do I need to install anything or run a server?
No. Open dist/retro-strike.min.html in any modern browser and you are playing — no server, no install, no network. A local server is only suggested if you want the fullscreen button to behave on some browsers.
+Does it use WebGL or any libraries?
Neither. The renderer is a hand-written software rasteriser drawing to a 320×200 Canvas 2D backing canvas, and the runtime has zero dependencies — only web-platform APIs (Canvas, Web Audio, Pointer Lock, Gamepad, localStorage).
+Is there multiplayer or an online mode?
No — RETRO STRIKE is single-player only, permanently. There are no servers, accounts, matchmaking or networking of any kind, and none are planned. Everything runs entirely in your browser.
+What modes can I play?
Endless Arena, a 12-level Campaign with objective variety, a date-seeded Daily Challenge with its own best-score tracking, a Training Range, and any arena you like via a custom seed. There is also a Photo Mode for free-orbit shots and one-click PNG score cards.
+Can I edit the game or contribute?
Yes. The readable, commented source is src/retro-strike.html; change it and run npm run build to regenerate the release. Contributions are welcome — read CONTRIBUTING.md and the Code of Conduct first. It is released under the MIT License.