@nanogram/ng-game-core
v0.1.0
Published
Renderer-agnostic engine kernel — the stable contract every Nanogram game imports. Never imports a renderer (`test/renderer-free.test.ts` enforces it).
Readme
ng-game-core
Renderer-agnostic engine kernel — the stable contract every Nanogram game imports. Never
imports a renderer (test/renderer-free.test.ts enforces it).
- Import:
@nanogram/ng-game-core(dev dep / built ESM); or destructured offwindow.NGEnginein a bundled scaffold. - Depends on: nothing. Adapters and kits depend on this; the direction is downward only.
- Barrel:
src/index.ts— the export list is snapshot-tested (test/exports.test.ts); changing it is a deliberate contract edit.
Subsystems — one interface doc each, in docs/
| Module | Doc | Covers |
|---|---|---|
| kernel | core.md | manifest, runtime rt, ticker, events, surface, save, grp, telemetry, ng, utils |
| camera | camera.md | CameraRig — follow/shake/punch/oscillation |
| input | input.md | input, thumbstick, action buttons, gestures |
| audio | audio.md | playSound/playMusic, buses, pause-aware |
| ui | ui.md | DOM HUD, safe-area, rows |
| ecs | ecs.md | ECS namespace — registry/entities/views |
Using it
A game never runs its own loop — a scaffold template does (see scaffold/scaffold.md).
The engine is bundled onto window.NGEngine; game code destructures what it needs and drives
it from rt.onFrame. Determinism is load-bearing: seeded rt.random(), never Math.random().
