README.md
Aurora Flux
Cel-shaded arcade aurora racing game built with Three.js, TypeScript, Vite, and Bun.
Quick start
| 1 | bun install |
| 2 | bun run dev |
Then open http://127.0.0.1:5173/.
Scripts
bun run dev— start the Vite dev serverbun run build— typecheck and produce a production buildbun run lint— run ESLintbun run check-types— run TypeScript checksbun run verify:race— verify deterministic checkpoints, laps, ranking, and wrong-way statenode tools/capture-screenshots.mjs— run the Playwright browser harness against the dev server
Structure
apps/game— the game app (Three.js + Vite)packages/typescript-config— sharedtsconfigbasepackages/eslint-config— shared ESLint flat configspec/— game vision, architecture, milestones, acceptance criteriatasks/current.md— current milestone and objectivesAGENTS.md— operating rules for AI agents working on this codebase
Status
The repository contains the Aurora Flux release candidate through M13:
- Three-lap aurora circuit with countdown, checkpoints, finish, and restart
- Three procedural AI opponents with racing lines, drafting, overtaking, avoidance, recovery, personality, and position tracking
- Procedural rider animation with finish celebration
- Responsive race HUD with mobile verification and accessible field labels
- Procedural Web Audio engine, ambient bed, event cues, and dynamic mixing
- Ear-safer filtered and compressed engine mix with browser gain assertions
- Adaptive quality tiers with particle scaling and runtime performance telemetry
- Finalized transient impact feedback and release-candidate verification
- Procedural hazards (including dark matter storms), landmarks, riders, HUD, minimap, results, and Web Audio
- Adaptive quality scaling and browser screenshot verification
- Phase 2 visual foundation with procedural Aurora Ribbon flow, radial speed lines, bounded boost/impact chromatic pulses, and pooled instanced FX
- Phase 2 horizon pass with layered procedural nebula depth and deterministic landmark anchors that scale down by quality tier
- Normalized analyzer bands feeding bounded track, aurora, color-grade, and rival-trail presentation without changing audio output or race state
No downloaded assets are used. Meshes, shaders, UI, and sound are generated by the codebase.
Phase 2 visual decisions and vocabulary live in CONTEXT.md and
docs/adr/0001-phase-2-visual-architecture.md.
Verification
With the dev server running, use:
text
| 1 | bun run check-types |
| 2 | bun run lint |
| 3 | bun run build |
| 4 | bun run verify:race |
| 5 | node tools/capture-screenshots.mjs |
License
MIT