01Problem
What if team chat behaved like a real office: heard only by the people in the room when it happens, and gone unless someone writes it on the whiteboard?
02What I built
A browser-based, RPG-style 2D office. Characters walk a tile map, enter rooms and chat, but a conversation is visible only to whoever is present when it happens. Walk into a busy room and your screen stays empty.
03How it works
- Engine from scratch. Pure TypeScript and Canvas 2D: Tiled map loader, collision, depth sorting, camera, A* tap-to-walk, touch d-pad, integer scaling.
- Social rules as mechanics. Per-room chat with the forgetting rule, whiteboards, desk notes and coworker bots that sit, type visibly before speaking and make procedural ambient typing sounds.
04Results and scale
- Engine, forgetting mechanic and bot liveliness complete; 23 headless end-to-end checks; multiplayer not started.
- Code is MIT. Graphics use LimeZu's Modern Interiors pack, which is not redistributed; the free pack is licensed for non-commercial use only.
05Stack
- TypeScript
- Canvas 2D
- Vite
- Tiled
- Web Audio
06Gallery
Graphics: LimeZu Modern Interiors, free version, licensed for non-commercial use and not redistributed with the code. Screens captured from a local build.
