VIMP SDK documentation
VIMP is a P2P engine for real-time multiplayer 2D games: a browser host runs the authoritative simulation, PixiJS clients connect over WebRTC, and a game is a plugin package the engine loads at runtime. These pages describe the contract a game plugin implements and the tools around it.
Sections
| Page | Covers |
|---|---|
| overview.md | The model: what you provide, version numbers, what a room does with your game, thread constraints, latency hiding, key invariants |
| scaffolding.md | The npm create vimp-game scaffolder: flags, what the minimal game contains, the check loop (check:contract → core:test → sim → dev) |
| standalone.md | Standalone SDK (vimp-engine/standalone): a playable match in one tab without sign-in or lobby — options, container, assets, how solo differs from play |
| plugin-api.md | Engine ↔ game plugin contracts: GameManifest, HostPlugin, ClientPlugin, Wasm ABI, versioning |
| game-config.md | Game configuration: engine host defaults, the game half of the host config, the client config, the auth form, sounds, ports and opcodes, system messages |
| snapshot.md | Ports, the binary snapshot frame and its schema, the input format, the meta-data formats (auth, panel, stats, chat, vote), RTT and kicks |
| core.md | The Rust engine core (vimp-engine-core): generic traits and macros, snapshot framing, the Wasm glue a game crate fills in |
| host-meta.md | The meta layer of the host: calls into the game core, the participant registry, the engine-owned gameplay rules, managers and modules |
| client-api.md | The client for game authors: the shared PixiJS instance, dispatcher and render loop, game-facing components, ClientCore, parts and providers, sound, input |
| maps-and-assets.md | Map JSON format (levels, ramps, scaling, respawns), images, sound pipeline, baked assets |
| packaging.md | Packaging and build of a game plugin: layout, package.json, manifest generation, the two Vite builds, wasm-pack, asset scripts, dist/, plugin docs |
| debugging.md | The debugging loop: vimp-contract, the headless runner (npm run sim), scenarios, invariant checks, core dumps, prediction divergence, the recorder |
| pitfalls.md | The silent-contract checklist and the table of vimp-contract rules |
| submitting.md | Publishing a game to npm and submitting it to the platform: requirements, moderation, updates, removal |
Writing a game plugin with an LLM? The AI meta-layer is a thin reading order, an authoring workflow and an interview questionnaire over the pages above — not a second copy of the contract.
Where to start
- I want to start a new game plugin → scaffolding.md
- I want to understand how it works → overview.md, then plugin-api.md
- I want to run my game without a server → standalone.md
- I want to configure the game → game-config.md, snapshot.md
- I want to write the client side → client-api.md, then maps-and-assets.md
- I want to build and package a plugin → packaging.md
- Something is silently broken in a match → debugging.md, pitfalls.md
- I want to publish my game → submitting.md