@aicolab/kolo playground
Each route below mounts a slice of @aicolab/kolo against a minimal scene so the primitives can be eyeballed in isolation, away from the source repo's /hd2d demo where they were originally tuned.
Tilt-shift cubes
/tilt-shift-cubesFull-bleed WebGPU scene wiring the engine primitives — TiltShiftDiorama recipe, AdaptiveDpr, keyboard + touch input, camera follow, physics, stats panel, error capture. Cubes on a ground plane, no avatar.
Avatar builder
/avatar-builderMounts AvatarBuilder against the in-package LPC manifest, then spawns the resulting AvatarSelection into a physics scene through LayeredAvatarAnimator. Sprite assets served by the dedicated aicolab-sprites worker through the SPRITES service binding (`pnpm sprites:dev` locally). Exercises the avatar-system subpath end to end.
Top-down squish
/topdown-squishThe avatar-system's opt-in stylised foreshortening. Build an avatar, then orbit the camera from eye-level up to straight-down: the sprite squishes toward its feet (head-dominant chibi blob instead of an edge-on sliver) while its shadow stays pinned to the feet. Curvature + engage band tunable live; off by default for every other consumer.
House interior · portal destination scene
/house-interiorA cozy tavern-room interior built as its own three.js Scene from the VoxelDungeonSet asset pack (served by the three-resources worker): modular floor/wall grid, furniture, warm flickering torch + lantern light, its own fog/atmosphere. Rendered by a standalone non-R3F harness (rendering kept separate from the scene file) so it can be eyeballed in isolation before being wired as a portal destination in /portals. Needs `pnpm three-resources:dev`.
Island · sky/water addon showcase
/islandthree r0.185's TSL-native sky/water addons (SkyMesh + Water2Mesh) hosted by a renderer we own — Preetham skydome with procedural clouds, and flow-based reflect+refract water for both the ocean and a lagoon pool on a procedural island (Water2Mesh chosen over the classic WaterMesh mirror ocean after an A/B: its refraction responds to the composed seabed, giving natural shoreline transitions). Six atmosphere presets (noon → golden hour → haze → squall → dusk → moonlit night) retarget every uniform and damp toward it, so switching plays as a timelapse. A viability probe for high-quality water/sky in the portal platform without giving up pipeline ownership.
Portal village · scene-linking prototype
/portalsStaging ground for the three.js portal system (linking scenes with seamless transitions). Avatar control + physics from /avatar-builder, but under a fixed-angle ORTHOGRAPHIC pan-follow camera (HD-2D 3/4 read) and a portal-ready village: cottages with glowing doorways and mountains with cave mouths. Each opening is registered as a portal anchor (world position + outward normal) — the attachment points for the real render-target portals + walk-through transitions to come.
Portal village · MoQ multiplayer
/portals-moqThe /portals scene with player positions synced over Media-over-QUIC via Cloudflare's relay (draft-14). Each player publishes a binary pose track + avatar-profile track on their own broadcast; membership comes from a thin capnweb roster DO (the relay has no ANNOUNCE). Remote avatars interpolate at ~120 ms, follow portal traversals between scenes, and are visible through portal surfaces. Requires an auth session; open in two browsers (two accounts) to see two players.
Portal village · DO-relay multiplayer
/portals-doThe same multiplayer village + engine as /portals-moq, but with an ALTERNATE network architecture: instead of a MoQ relay, a single Cloudflare Durable Object (PortalsRelayServer) is BOTH the roster and the pose relay — coalescing every player's dead-reckoned frame into a 20 Hz binary slot-batch fan-out (area-of-interest culled, per-tab source-excluded). Faithful adoption of the /hd2d SharedWorldDO pattern; reuses the identical engine, motion-sync and pose codec over the shared PoseTransport seam. Requires an auth session; open in two browsers (two accounts) to see two players.
Portal village · SpacetimeDB multiplayer
/portals-stdbThe same village + engine again, but the network plane is SpacetimeDB — a standalone database (local in dev, maincloud in prod), NOT Cloudflare. A `player` table IS both the roster and the pose data plane: clients subscribe to it and stream pose through an update_pose reducer; row deltas drive the shared PoseTransport seam. Identity bridges via OIDC — better-auth mints an ES256 id_token (the workers.dev replica signs ES256; SpacetimeDB rejects EdDSA) and SpacetimeDB derives a stable Identity = BLAKE3(iss|sub). Avatar/last-location still persist in the Cloudflare user-hub DO. Requires an auth session; open in two browsers (two accounts) to see two players.
Broker pattern · Morton-sharded
/brokerClient↔Worker↔DOs broker prototype on @aicolab/room-service RoomServer. Per-entity hub DOs + Morton-shard-named directory DOs; the Worker isolate brokers so two tabs interact in real time while never sharing an entity DO, and re-brokers across shard borders with no socket reconnect. Requires an auth session (real workers/auth, no placeholder).
Archipelago · world-composer demo
/archipelagoFour hand-authored island scenes + an imported glTF on one flat plane wrapped onto a sphere by the shared kolo warp, with a stylised flow ocean built on the same warp; sliders for sphere radius, island scale, warp blend; legend teleport; shadow-probe diagnostic for swappable light types. Walk far enough to circle the globe.
Spatial launcher · canonical DOM world
/spatial-launcherA mobile-first, non-Three.js projection of the exact island and landmark coordinates authored by /library-diorama. Squircle app-like destinations preserve the same spatial hierarchy while replacing continuous 3D rendering with accessible Solid/HTML navigation.
Insights · canonical world
/insights-spatial-mpTHE Insights destination (authored by the insights worker) as one canonical world: an illustrated map and a traversable HD-2D face from the same @aicolab/kolo/spatial definition — roads/bridges/physics from shared Catmull-Rom centrelines, the enterable insight-library gallery with LIVE DOM insight-note exhibits (depth-punched CSS3D through the HD-2D post pipeline), the Lantern Ferry with walk-on flush boarding to Lantern Islet, the harbour pier, and the in-world editor exporting patches toward the authored state. Multiplayer is join-gated: the island stays explorable solo; sign in and Join MP for live presence.