You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This project should not become "another React Snake Game".
Its strongest portfolio position:
A framework-free browser game used to demonstrate game-loop design, deterministic state, rendering lifecycle, browser performance, Worker isolation, and OffscreenCanvas experiments.
Modernization path
Legacy Vanilla JS Game
↓
Baseline + regression protection
↓
Input / Simulation / State / Render separation
↓
Fixed-timestep runtime
↓
Deterministic state + seeded RNG + replay
↓
Renderer abstraction
↓
Canvas renderer + performance telemetry
↓
Stable public release
↓
Web Worker simulation experiment
↓
OffscreenCanvas experiment
Key rule: do not jump directly to Worker or OffscreenCanvas. Worker only becomes meaningful after simulation is independent from DOM. OffscreenCanvas only becomes meaningful after rendering is behind a Canvas-compatible renderer contract.
Target architecture
flowchart TD
A["Keyboard / UI<br/>Input Adapter"] -->|Command| RT
subgraph RT["Game Runtime"]
direction TB
C["Clock → Accumulator → Simulation Step"]
C --> D["Rule / Collision"]
C --> E["Event Log"]
D --> F["Game State"]
E --> G["Replay"]
end
RT -->|RenderSnapshot| H["Renderer Contract"]
H --> I["DOM Renderer"]
H --> J["Canvas Renderer"]
J --> K["OffscreenCanvas Renderer<br/>[experimental]"]
Loading
Milestones & PR checklist
Tip: hover each line below and click Convert to issue to spin up the real issue — GitHub links it back to this tracking issue automatically. Then paste the matching body from the setup doc into the new issue, and assign its Milestone + Labels.
Why
This project should not become "another React Snake Game".
Its strongest portfolio position:
Modernization path
Key rule: do not jump directly to Worker or OffscreenCanvas. Worker only becomes meaningful after simulation is independent from DOM. OffscreenCanvas only becomes meaningful after rendering is behind a Canvas-compatible renderer contract.
Target architecture
flowchart TD A["Keyboard / UI<br/>Input Adapter"] -->|Command| RT subgraph RT["Game Runtime"] direction TB C["Clock → Accumulator → Simulation Step"] C --> D["Rule / Collision"] C --> E["Event Log"] D --> F["Game State"] E --> G["Replay"] end RT -->|RenderSnapshot| H["Renderer Contract"] H --> I["DOM Renderer"] H --> J["Canvas Renderer"] J --> K["OffscreenCanvas Renderer<br/>[experimental]"]Milestones & PR checklist
M0 — Legacy Baseline
M1 — Runtime Core
M2 — Determinism
M3 — Rendering
M4 — Performance / Public Relaunch
M5 — Worker
M6 — OffscreenCanvas
Explicit non-goals
Do not let the project expand into:
Agent / contributor handoff rules
masterbefore editing.