One canvas engine hosts CAD floor plans and wandering game units — position is data
Description and use
Kimetron Isle merges CAD floor‑plan editing and game unit movement into a single engine by treating coordinates as data, offering flexible collision policies and extensibility.
Problem
Canvas libraries typically treat coordinates as screen pixels, limiting their use for design data where coordinates are the data itself.
Outcome
Kimetron Isle enables a single engine to host both CAD floor plans and wandering game units by treating position as data, providing robust world‑coordinate features and collision policies.
Workflow
- Define world units (mm, m, inch, px) and origin orientation.
- Create geometry objects (walls, doors, rocks, units) with properties such as solid, canOverlap, collisionMode.
- Use built‑in snapping (grid, vertices, midpoints, centers) or inject custom snaps via snapExtra.
- Move objects programmatically with tryMove, ensuring collision policies are respected.
- Render with @kimetron/dom or adapt to React via @kimetron/react.
- Serialize or undo/redo changes as needed.
Evidence
I built two production apps (Plesfeda, Sethera Piece) on React Flow, and learned that what a canvas library does for you stops at rendering, dragging, selection, and the viewport.
Same engine in both cases. The only difference is the policy each driver declares: "a door may overlap a wall", "rocks can't move", "units can't stack" — a few lines of driver code each.
v1.0.0 is a stability commitment — additive‑only changes since 0.6.0. There are still gaps: associated dimensions, named layers, and block references are 1.x territory; Svelte/Vue adapters are "structurally possible" rather than built; collaboration and cloud storage are deliberately out of scope.
- Record date: 2026-10-16T12:56:29.755Z