Getting started
There is no install command yet. There is a clone.
ignifx is 0.0.0 and unpublished, so the honest path today is the repository itself: four playable templates and two examples, two commands from a clone (pnpm install then pnpm build). The scaffolder below is real code — it simply has nothing to install from until 0.1 ships.
IGX-0701
Check your browser first
There is no WebGL fallback, by decision (ADR-0001). Without WebGPU, createApp rejects with IGX-0701 and a template shows the fallback panel in its index.html.
WebGPU (Chrome/Edge 113+, Safari 26+, Firefox 141+ Windows / 145+ Apple Silicon); Electron needs --enable-unsafe-webgpu (handled by @ignifx/electron)
The skill ships a probe you can run in a page: node scripts/check-webgpu.mjs under skills/ignifx/scripts/. On Linux and on older integrated GPUs, expect to enable WebGPU explicitly; the engine reports what the adapter said through app.platform.webgpu.
Node 24 · pnpm 11
The path that works today
Node 24 comes from .nvmrc; pnpm 11.17.0 comes from packageManager, so corepack or a matching pnpm is all the setup there is. pnpm build is not optional in a fresh clone: the templates depend on @ignifx/vite-plugin through workspace:*, and Vite cannot load a template's vite.config.ts until that package has a dist/.
git clone https://github.com/astrum-forge/ignifx.gitcd ignifxnvm use # Node 24, from .nvmrcpnpm installpnpm build # required: a template imports @ignifx/* from the workspace# One template in a dev server on http://localhost:5173pnpm --filter ignifx-template-2d-topdown dev| Template | What it is | Dev command |
|---|---|---|
2d-topdown | A top-down 2D game: a tilemap with a collision layer, a Y-sorted layer of props and a character, a dead-zoned camera follow, and a trigger zone that plays a sound. | pnpm --filter ignifx-template-2d-topdown dev |
2d-sidescroller | A pixel-perfect 2D side-scroller: three parallax bands, a tilemap with slopes and one-way platforms, collectible coins, and a reference platformer controller. | pnpm --filter ignifx-template-2d-sidescroller dev |
3d-third-person | A third-person 3D game: a character on a CharacterController, an orbit camera that will not clip through a wall, an Animator state machine on a rigged model, a navmesh-driven companion, pushable crates, a loading screen and a pause menu. | pnpm --filter ignifx-template-3d-third-person dev |
3d-first-person | A first-person 3D game: a character whose body owns the yaw and whose head owns the pitch, pointer lock on the first click, crouch, a crosshair ray that lights the pedestal it lands on, a view model with a prop welded to the rig's hand node, a loading screen and a pause menu. | pnpm --filter ignifx-template-3d-first-person dev |
Verified on 2026-09-06 by running exactly these commands in a throw-away clone: pnpm install --frozen-lockfile took 5 s against a warm store, pnpm build built 21 workspace tasks in 12.6 s, and the dev server answered http://localhost:5173/ with 200 after 178 ms. Skipping pnpm build fails with Failed to resolve entry for package "@ignifx/vite-plugin".
Add pnpm --filter ignifx-template-2d-topdown build for a production bundle, and dev:desktop / build:desktop / dist:desktop for the Electron variant of any template. pnpm dev from the root runs every package's dev task at once.
when 0.1 ships
The scaffolder, for later
create-ignifx copies a template into a new directory and rewrites its workspace dependency ranges. It is written, tested and documented — it just cannot resolve @ignifx/cli from a registry yet.
# Not possible yet: no @ignifx package is published.npx @ignifx/cli my-game --template 2d-topdownnpx @ignifx/cli my-game --template 3d-third-person --desktopcd my-game && pnpm install && pnpm dev--desktop also copies the template's Electron variant; without it the scaffold is browser-only and the Electron dependencies are stripped, so a browser game never downloads a runtime it does not run. The CLI's README has the full flag list.
notes
What to expect from the machine
- Headless is real.
createApp({ headless: true })plusapp.step(dt)runs the whole engine on Node 24 with no GPU, which is how the test suites drive it. - A 2D template ships a physics engine. Rapier inlines its WebAssembly as base64, which is most of the 2D templates' entry chunk; the 3D templates are a third of the size because Havok's
.wasmis copied as a file instead. - Electron needs a flag.
--enable-unsafe-webgpuis set for you by@ignifx/electron; packaging for macOS, Windows or Linux still needs that operating system or a CI runner for it. - Audio starts locked. In a browser
app.audio.stateis"locked"until a user gesture; plays made before then are queued, not lost.