🧰 TypeScript Binding — Setup
This guide shows how to install the TypeScript binding and choose a transport. Vulfram runs in different environments via transports:
- WASM for browsers
- Bun FFI for Bun
- N-API for Node.js
Install
npm / pnpm / yarn
bash
npm i @vulfram/engine @vulfram/transport-wasm
For Node.js or Bun, use the corresponding transport package instead:
bash
npm i @vulfram/engine @vulfram/transport-napi
bash
npm i @vulfram/engine @vulfram/transport-bun
Workspace (monorepo)
If you are working inside the Vulfram monorepo, use workspace dependencies:
json
{
"dependencies": {
"@vulfram/engine": "workspace:*",
"@vulfram/transport-wasm": "workspace:*"
}
}
Pick a Transport
Browser (WASM)
ts
import { initEngine } from '@vulfram/engine';
import { initWasmTransport, transportWasm } from '@vulfram/transport-wasm';
await initWasmTransport();
initEngine({ transport: transportWasm });
Node.js (N-API)
ts
import { initEngine } from '@vulfram/engine';
import { transportNapi } from '@vulfram/transport-napi';
initEngine({ transport: transportNapi });
Bun (FFI)
ts
import { initEngine } from '@vulfram/engine';
import { transportBunFfi } from '@vulfram/transport-bun';
initEngine({ transport: transportBunFfi });
Minimal Project Skeleton (WASM)
ts
import {
initEngine,
createWorld,
createWindow,
tick,
} from '@vulfram/engine';
import { initWasmTransport, transportWasm } from '@vulfram/transport-wasm';
const WORLD_ID = 1;
await initWasmTransport();
initEngine({ transport: transportWasm });
createWorld(WORLD_ID);
createWindow(WORLD_ID, {
title: 'Vulfram WASM',
size: [960, 540],
position: [0, 0],
resizable: true,
canvasId: 'vulfram-canvas',
});
let last = performance.now();
function frame(now: number) {
const dt = now - last;
last = now;
tick(now, dt);
requestAnimationFrame(frame);
}
requestAnimationFrame(frame);
Runtime Notes
- Call
initEngineonce per process. - Call
tickonce per frame; this drives event processing and command flushing. - Always call
createWorldbefore callingcreateWindowor any entity/resource APIs.
Documentation Vulfram Core