1karm
A browser horror scene in Three.js — a zombie girl loops the many-armed vocabulary of the Thousand-Hand Guan Yin dance in a dark, rain-soaked forest.
1karm is a real-time 3D scene that runs in the browser. A creepy zombie girl endlessly loops the visual vocabulary of the Thousand-Hand Guan Yin dance (one body, many arms) inside a dark, rainy forest. Visitors see only the scene. A hidden admin panel swaps scene presets, tunes the weather live, swaps the dancer and moves her on a grid, with an editor mode, autosave and export/import. It's built on Three.js and Svelte 5, with quality tiers for phones, post effects, seeded lightning and a Playwright QA suite that drives the real admin panel.
- TypeScript
- Three.js
- three-vrm
- Svelte 5
- Vite
- Vitest
- Playwright
- glTF Transform
- Blender
- Apache
1karm is an original horror homage to the visual vocabulary of the Thousand-Hand Guan Yin dance, performed by the China Disabled People's Performing Art Troupe (choreography by Zhang Jigang). Every pose is authored here. A zombie girl dances in a loop in a dark, rainy forest. The "thousand hands" come from echo layers of her own arms, so the scene reads as one body with many arms.
The scene
- Presets: haunted forest, a void stage and a fog-bound graveyard, all loaded as data rather than code.
- Weather director: wind, rain with splashes and ripples, ground mist, and seeded Poisson lightning that lights the scene through the post pipeline.
- Post FX: bloom, grain, vignette and chromatic aberration, plus a half-resolution depth pre-pass so fog sheets fade softly against geometry.
- Possession: a tunable undead layer that drives how wrong the dancer looks, from human to fully possessed.
The hidden admin
Visitors only ever see the scene. Behind a hotkey sits a Svelte 5 glass panel, loaded as a lazy chunk, whose controls are generated from the scene's own module registry. It swaps presets and dancers, tunes the weather live and changes quality tiers. An editor mode adds a transform gizmo, snapping and a capture camera. Settings autosave, and presets export and import with version-keyed migrations.
Built to be checked
Quality tiers cap the pixel ratio, shadows and particle counts so phones stay smooth. Playwright scripts drive the real admin panel, the editor, weather, hero swaps and possession, and check for leaks across repeated preset swaps. A Vitest suite covers the rig maps and pose maths. All models and textures are CC0 (Quaternius, Kenney, Poly Haven) and listed in generated credits.
Straight from the source
The project's own README.
Rendered in place — every link, image, and code block carried over from the repo. The page below is what a contributor would see opening the project for the first time.
1karm
A browser 3D scene: a creepy zombie girl endlessly loops the visual vocabulary of the Thousand-Hand Guan Yin dance (one body, many arms) inside a dark rainy forest. Visitors see only the scene. A hidden admin modal (Ctrl+Alt+Shift+A; on phones, the faint lower-left button) swaps scene presets, tunes weather live, swaps the dancer, and moves her on a grid.
Inspired by the visual vocabulary of the dance performed by the China Disabled People's Performing Art Troupe (choreography Zhang Jigang). This is an original horror homage; all poses are authored here.
- Live: https://1karm.gamingworld.uk
- Tasks:
just --list(the only task interface). Gates:just check. Screenshots:just shot. - Docs:
docs/PLAN.md,docs/ARCH.md,docs/ENV.md,docs/DECISIONS.md,docs/STATE.md,docs/handoffs/. - Credits:
CREDITS.md(generated fromassets/manifest.json).
Build something like this
Want a tool like this for your shop?
We've shipped this kind of thing before. Twenty-minute intro call, no slides.