Roadmap
This is an evidence-based summary of ROADMAP.md, which is the source of truth: every status there is backed by tests, smoke runs, or a released artifact — never by a stub. Documented ≠ implemented is a roadmap principle: planned features are listed here, never stubbed in code.
Last reviewed against ROADMAP.md: 2026-10-28
Shipped
All verified by the deterministic test suite, CI, or a released npm artifact:
| Milestone | What landed | Status |
|---|---|---|
| MVP 0 – 1F | Foundation: pnpm monorepo, strict TypeScript, renderer contract, PixiJS adapter, Game lifecycle + frame loop, SceneManager, DOM-free InputState, AssetManager, Transform2D/Sprite2D, GameObject layer, audio contract, scene-ownership hardening. | done |
| R5 – Gamepad & touch | Multi-touch contacts in core InputState via Pointer Events, DOM-free GamepadState with an injectable polling source (@g2w/input-gamepad). 41 deterministic tests. | done |
| E3 – Adapter lifecycle hardening | Failure-safe init/attach rollback, concurrent and repeated lifecycle calls, terminal disposal, listener cleanup for all imperative adapters. | done |
| E4 – Effect runtime | G2WGame: the game lifecycle orchestrated by a managed Effect runtime with LIFO finalizers and idempotent disposal. Core stays Effect-free; the frame hot path never allocates an Effect. | done |
| R1 – Texture ownership | PixiRenderer.dispose() destroys stage display objects only — never textures. One framework-wide, non-destructive texture lifetime, pinned by hazard tests. | done |
| R2 – Game objects | GameObject + GameObjectCollection in core: claimed, snapshot-iterated update/destroy registry driven by the existing loop. No ECS, no scene graph — deliberately minimal. | done |
| R3 – Logical resolution & resize | Explicit logical width/height, runtime resize(), pointer mapping under CSS scaling. Fixed logical resolution with proportional display scaling. | done |
| R4 – Audio | AudioManager contract in core + @g2w/audio-web Web Audio backend with an explicit autoplay policy (suspended-context play() throws; resume() needs a user gesture). | done |
| R11 – Anchors & z-ordering | Normalized Anchor2D and zIndex on Sprite2D, applied through view.sync(); stable sort for equal z values. | done |
| R6 – Renderer audit & backends | Backend preference + actual-backend reporting (R6-1), a shared renderer conformance suite (R6-2), and per-backend feature verification: 12/12 features on WebGL, Canvas, and WebGPU in a real browser (R6-3). | done |
| DevTools MVP | @g2w/devtools: a read-only runtime overlay (scenes, objects, transforms, FPS, watched input, logs). Dev-only, excluded from production builds. | done |
| R7 – create-g2w CLI | Zero-dependency scaffold CLI with a TypeScript + Vite template, deterministic tests, and local git init only. | done |
| R10 – npm publishing | All eight packages published to npm at 0.1.0 (2026-10-28) via OIDC trusted publishing, --provenance, and the protected npm-release environment. Tagged v0.1.0. | done |
npm view @g2w/core version returns 0.1.0, and the v0.1.0 releaseexists on GitHub. Per-milestone test counts and smoke results are in the full roadmap.In progress
| Work | Scope | Status |
|---|---|---|
| R6 – Dependency & supply-chain maintenance | Ongoing: weekly Dependabot updates, pnpm audit gates in release review, install-lifecycle-script review for every new dependency. | in progress |
Exploratory
Directions under consideration — they may change shape or be dropped. Neither has started; each lists the gate that must pass first.
| Direction | Shape | Status |
|---|---|---|
| R8 – Three.js adapter for 3D | A third renderer adapter proving the renderer contract generalizes beyond 2D. Gate: core contracts frozen for one release cycle without a breaking 2D change. | exploratory |
| R9 – Integrations (React, Vue) | Thin bindings embedding g2w in common stacks, one package each, public entry points only. | exploratory |
Candidate work — not yet committed
These areas have no committed milestone or priority. They are listed so their absence is explicit, not accidental:
- Physics and collision
- Camera support
- Tilemaps
- A full animation system (tweening, keyframes, skeletal)
- Sprite batching helpers and texture atlases
- Manifest-based bulk asset loading
- Action mapping / input rebinding
- Scene stacks and transition effects
- Performance benchmarks
Risks and open questions
- Pre-1.0 API — The packages are published at 0.1.0, but public contracts may still change; nothing is semver-stable yet.
- PixiJS shared cache — No supported way to prove exclusive texture ownership; the non-destructive policy (R1) trades memory for safety — textures live until page unload unless explicitly unloaded.
- AI-agent skills content — Dependency-provided agent skills are reviewed on each PixiJS update.
Proposing changes
Open an issue describing the proposed milestone with objective, scope, dependencies, and acceptance criteria. Roadmap changes are made by the maintainers after discussion — see CONTRIBUTING.md.
Next steps
Compare g2w with other frameworks in Framework Comparison, or read the full ROADMAP.mdwith per-milestone evidence.