A one-button orbital survival game. Shift lanes, collect energy, and keep the reactor alive.
ORBIT SHIFT is a polished hypercasual game built with plain HTML, CSS, and JavaScript. There is no build step, runtime package, CDN, analytics script, or external asset request.
You are a bright energy spark circling a reactor on two concentric lanes. Coral shards end the run. Lime energy raises the score and combo. The orbit accelerates, waves grow denser, and mixed-lane patterns become more common while the spawn invariant preserves a possible move.
| Input | Action |
|---|---|
| Click or tap | Shift lane |
Space or any arrow key |
Shift lane |
P or Esc |
Pause or resume |
M |
Mute or unmute |
The same tap starts a run and restarts after a collision.
Serve the directory with any static server:
python -m http.server 8080Open http://localhost:8080. No installation or build is required.
- Procedural Canvas 2D reactor, orbit trails, particles, impact burst, and restrained shake
- Deterministic seeded state and math isolated from browser rendering
- Two-lane input across touch, mouse, and keyboard
- Score, combo, pause, mute, instant restart, and persistent best score
- Smooth speed, density, and mixed-wave difficulty curves
- Reduced-motion support and a graceful WebAudio fallback
- Responsive layout verified at desktop and
360 x 780mobile viewports
flowchart LR
I["Pointer / touch / keyboard"] --> S["Deterministic state.js"]
S --> R["Canvas renderer"]
S --> H["HUD and overlays"]
S --> A["WebAudio feedback"]
S --> L["localStorage best score"]
T["Node test runner"] --> S
| File | Responsibility |
|---|---|
state.js |
Seeded RNG, state transitions, collision math, scoring, spawning, difficulty |
game.js |
Animation loop, Canvas rendering, controls, audio, persistence |
styles.css |
Full-viewport responsive UI and reduced-motion presentation |
tests/state.test.js |
Deterministic behavior and edge-case suite |
The state module contains no DOM or browser APIs. Given the same seed and sequence of updates, it produces the same result, which makes the gameplay rules directly testable.
node --testThe suite currently covers 25 behaviors across lane switching, scoring and combo, difficulty progression, collision boundaries, impact timing, impossible-pattern prevention, determinism, pause/restart, and angle helpers.
The release was also exercised in headless Chromium at 1440 x 900 and 360 x 780:
- Canvas pixel output was nonblank at both sizes.
- Touch start, pause, resume, mute, game over, and restart passed.
- Score and best-score persistence passed across reload.
- Page overflow, console errors, and external network requests were absent.
This project is a public end-to-end acceptance artifact for
Sudarshan, using
Kimi-K2.7-Code through Azure Foundry.
Kimi produced the initial game, tests, and documentation through Sudarshan's durable single-action loop. The harness checkpointed provider retries, blocked unsafe commands, fed failing tests back into the model, and refused completion until verification passed. The release audit then browser-tested the result and repaired the defects it exposed.
Author: Suraj Kuncham

