Skip to content

msitarzewski/starc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Star Castle - Modern Web Edition

A faithful recreation of the classic 1980 arcade game Star Castle, built with modern web technologies for high performance and smooth gameplay.

Features

  • 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

How to Play

Objective

Destroy the rotating shield segments to create an opening, then shoot the central cannon to advance to the next level.

Controls

  • Arrow Keys:
    • Left/Right: Rotate your ship
    • Up: Thrust forward
  • Spacebar: Fire bullets
  • ESC: Pause/Resume game
  • M: Toggle sound

Gameplay

  • 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

Technical Details

  • 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, ConvolverNode reverb with a procedurally generated impulse response, DynamicsCompressorNode master bus, filtered-noise synthesis, WaveShaperNode distortion, 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

Running Locally

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 8000

Then open http://localhost:8000 and press Spacebar to play. No build step required.

GitHub Pages

This repository includes a Pages deployment workflow at .github/workflows/pages.yml.

To enable it:

  1. Open your repo Settings -> Pages.
  2. Under "Build and deployment", set Source to "GitHub Actions".
  3. Push to main (or run the workflow manually).
  4. Your game will be available at:
    • https://msitarzewski.github.io/starc/

Browser Compatibility

  • Chrome/Edge (recommended — full WebGPU rendering)
  • Firefox and Safari (automatic WebGL2 fallback)

The HUD shows which backend you're running on.

Credits

  • 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

About

A faithful recreation of the classic 1980 arcade game Star Castle, built with modern web technologies for high performance and smooth gameplay.

Resources

Stars

6 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors