A faithful recreation of the classic 1980 arcade game Star Castle, built with modern web technologies for high performance and smooth gameplay.
- WebGPU Rendering: Built on Three.js
WebGPURenderer— real WebGPU on supporting browsers, automatic WebGL2 fallback everywhere else (current backend shown in the HUD) - Shader Post-Processing: Bloom for the neon vector-glow look, plus a CRT treatment (scanlines + vignette) written in Three.js TSL
- Spatial Audio: Web Audio sound stage — stereo panning by world position, procedural convolution reverb, a compressor bus, noise-based explosions, a looping engine rumble, and a lock-on warning when the cannon gets a bead on you
- Arcade-Authentic Background Hum: synthesized from the circuit descriptions in the original 1980 Cinematronics service manual — two beating square waves (the audio board's VCO divided by 126 and 128) that glide lower through the manual's four DAC pitch steps as the castle takes damage
- BFG-Grade Blasts: cannon fire, ship death, and castle kills use a sustained energy-blast synth (attack–hold–release envelope, detuned saw stack through waveshaper distortion, amplitude-modulation throb, sub-bass foundation down to ~22Hz) — the 60Hz hum from the arcade's fireball circuit is woven into the cannon's body
- Authentic Star Castle Gameplay:
- Three rotating, destructible shield rings (12 segments each) protect the central cannon
- Shield regeneration: destroy an entire ring and the surviving rings shift outward while a fresh ring grows back — punch a hole through instead!
- The cannon tracks your ship and only fires when it has a clear line of sight through the shield gaps
- Homing mines spawn from the shield perimeter and chase you down
- Vector-style graphics reminiscent of the original
- Screen wrapping player movement
- Precise collision detection
- Visual Polish:
- Starfield background and particle effects for explosions and thrust
- Ship explosion, respawn delay, and invulnerability blink on death
- Glowing retro-style text and UI
- Complete Game Experience:
- Start screen, pause functionality, game over screen
- Lives system, level display, and persistent high score (saved locally)
- Level progression with faster, more aggressive castles
- Mute toggle
Destroy the rotating shield segments to create an opening, then shoot the central cannon to advance to the next level.
- Arrow Keys:
- Left/Right: Rotate your ship
- Up: Thrust forward
- Spacebar: Fire bullets
- ESC: Pause/Resume game
- M: Toggle sound
- You start with 3 lives
- Destroy shield segments for 10 points each
- Destroy the central cannon for 1000 points and earn an extra ship
- Careful: wiping out a whole ring makes the shields regenerate — open a channel through all three rings instead
- The cannon aims at you and fires through gaps in its own shields — avoid the red bullets!
- Shoot the homing mines (or the cannon's shots) to defend yourself
- Your ship wraps around screen edges
- Each level spawns a faster, more aggressive castle
- Engine: Three.js
WebGPURenderer(WebGPU with automatic WebGL2 fallback), loaded via ES modules + import map from CDN - Effects: TSL node-based post-processing — bloom, scanlines, vignette — plus screen shake
- Graphics: Vector-style line rendering with GPU acceleration
- Audio: Web Audio API, no audio files — stereo panners,
ConvolverNodereverb with a procedurally generated impulse response,DynamicsCompressorNodemaster bus, filtered-noise synthesis,WaveShaperNodedistortion, and an attack–hold–release blast synth with AM throb - Physics: Custom 2D physics for authentic arcade feel
- Performance: Optimized for 60fps on modern browsers
ES modules require a web server (opening index.html directly via file:// won't work):
git clone <this repo>
cd starc
python3 -m http.server 8000Then open http://localhost:8000 and press Spacebar to play. No build step required.
This repository includes a Pages deployment workflow at .github/workflows/pages.yml.
To enable it:
- Open your repo Settings -> Pages.
- Under "Build and deployment", set Source to "GitHub Actions".
- Push to
main(or run the workflow manually). - Your game will be available at:
https://msitarzewski.github.io/starc/
- Chrome/Edge (recommended — full WebGPU rendering)
- Firefox and Safari (automatic WebGL2 fallback)
The HUD shows which backend you're running on.
- Original game: Cinematronics (1980) — sound design informed by the original arcade service manual
- Web edition: Michael Sitarzewski
- Co-author: Claude Fable 5 (Anthropic) — WebGPU migration, shader effects, arcade-authentic sound stage, and gameplay mechanics
Recreated with ❤️ for retro gaming enthusiasts