@irtio/runtime
v4.6.0
Published
irtio room runtime: RoomCore, worker_threads host, in-process test harness
Readme
@irtio/runtime
Execute irtio room definitions in a custom host or an in-process harness. The runtime applies client input, runs handlers, encodes state updates, and saves and restores rooms.
npm install @irtio/runtime @irtio/server @irtio/schemaFor game development, use irtio dev to run a room
and @irtio/testing to test it with real SDK clients.
Run a room with the low-level harness
This TypeScript example creates a room and advances one server tick:
import { defineSchema, singleton, u32 } from '@irtio/schema';
import { defineRoom } from '@irtio/server';
import { createRoomHarness } from '@irtio/runtime/test';
const schema = defineSchema({ counter: singleton({ ticks: u32 }) });
const definition = defineRoom(schema, {
mode: 'tick',
tickRate: 20,
tick(state) {
state.counter.ticks += 1;
},
});
const harness = createRoomHarness(definition);
try {
harness.tick();
console.log(harness.state.counter.ticks); // 1
} finally {
harness.stop();
}The low-level harness uses a fake clock and protocol clients. Its tick() and run(ms) methods
are synchronous. This differs from the async methods in @irtio/testing.
Entry points
| Import | Use |
| --- | --- |
| @irtio/runtime | RoomCore, host contracts, snapshots, migrations, and inspection |
| @irtio/runtime/test | createRoomHarness, FakeClock, and test-host helpers |
| @irtio/runtime/worker | Node worker host and typed worker messages |
A custom host supplies the RoomHost contract, including time, scheduling, frame delivery, and
room lifecycle operations. Keep credentials and transport admission checks at your host boundary.
Initialize the appropriate physics engine before constructing a room that uses it.
See the server room API for the behavior room handlers expect and hibernation for persistence and restoration rules.
