Skip to content

shipshitgames/starblight

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

STARBLIGHT

An arcade pilot shooter — Space Invaders / Galaga × Survivors. A Ship Shit Games joint.

You fly a lone interceptor along the bottom of the screen. Waves of the Scourge — a zerg-like horde — descend and weave from the top, spitting bio-fire down at you. Hold the line: clear a wave, the next comes faster and denser. Run out of lives and the line breaks.

This is a playable core-loop skeleton, not a finished game: a thin Game class owning shared state plus a handful of systems, a clamped requestAnimationFrame loop, and all gameplay tunables in one CONSTANTS object. Built with Vite + TypeScript + Three.js, no framework. The aesthetic follows the studio's DOOM design language: black void, blood red, hellfire orange, gunmetal, bone text — only Three.js primitives with emissive materials.

Controls

Input Action
/ or A / D Fly left / right
(automatic) Auto-fire upward
Space Focused burst (fan of shots, on a cooldown)
Enter / Space Start / restart from a menu

HUD shows SCORE, WAVE, and LIVES, plus a burst-charge meter.

Run it

npm install
npm run dev        # http://localhost:5173
npm run build      # static output -> dist/
npm run preview    # serve the built dist/

build is vite build only (no tsc gate) so a stray type-nit never blocks a deploy.

Deploy (Vercel)

Vercel auto-detects Vite. Defaults work out of the box:

  • Build command: vite build (or npm run build)
  • Output directory: dist
  • Install command: npm install

Push the repo and import it; no extra config needed.

Architecture

index.html          canvas + plain-DOM HUD overlay (#hud)
src/
  main.ts           entry: boots Game, owns HMR dispose
  styles.css        DOOM HUD styling
  game/
    constants.ts    COLORS, WORLD frustum, CONSTANTS (all tunables)
    types.ts        HudState + entity records
    Game.ts         thin orchestrator: run-state + rAF loop + collisions
  systems/
    RenderSystem.ts orthographic camera, starfield, screen-shake
    InputSystem.ts  keyboard -> steering axis + edge-triggered burst
    EntitySystem.ts ship / enemies / bullets / particles (spawn + motion)
    HudSystem.ts    binds HudState to the DOM overlay

Tuning

Everything that affects feel — speeds, fire cadence, wave density/ramp, screen-shake, particle pops, starfield — lives in src/game/constants.ts. Change a number, reload.

Lore

The Pyre (offense) and the Wardens (defense) hold humanity's last frontier against the Scourge. Toxic-green bio-glow is theirs alone; everything else is blood, fire, metal, and bone.

About

Starblight — arcade pilot shooter. Ship Shit Games.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors