Dead Still / PERSONAL EXPLORATION
Ghosts cannot be seen. Only photographed.
A Victorian spirit-photography game for the Rive Halloween Challenge. Aim, focus, expose and develop a glass plate, and the dead come up last.
ANIMATION BY
Piyush KachaMY ROLE
Direction · Game design · Art direction
Dead Still
An interactive photography game

Step inside the studio.
Best with a mouse and keyboard. Sound on for the full experience. The game loads when you press play.
RML · Luau · WGSL
Written as code through the Rive CLI
3 sittings
A guided first plate, a restless child, a twist
20 tests
The game's rules, checked on every build
BEHIND THE MOTION
A camera that sees the dead.
You are J. Ashworth, a spirit photographer in 1889. The dead never show through the lens, only on the plate: you frame the sitter, turn the brass focus ring, hold the lens open while the plate drinks the light, then rock the developing tray under the red lamp until the spirit comes up. Frost on the ground glass is your only clue to where they stand, and a restless child needs the magnesium flash.
Built in code, inside a Rive file.
The whole game is text. The scene, the characters' bones and skinned photo meshes, their timelines, and the HUD's data binding and state machine are RML. The rules are Luau scripts. The studio is drawn on Rive's GPU Canvas with WGSL shaders: a lit 3D set, depth of field, a real long-exposure plate, frost and the darkroom. The characters are Rive artboards drawn as textures and lit in 3D.
Directed, and credited.
I directed this project: the concept, the story, the cast and every decision. It is written as code through the Rive CLI and checked in the Rive Editor. The character art is AI-generated (OpenAI ImageGen through Codex); the props are CC0 models from Poly Haven, and the sounds are CC0.
For the developers: animation handoff details
The game uses the Game artboard and Main state machine with GPU Canvas enabled and a dedicated WebGL context. The signed export matches the published game, including the image and keyboard fixes. It loads only after Play Dead Still is selected. Rendering and audio stop while paused, offscreen, or in a hidden tab; closing the game releases the runtime. Pixel density is capped at 1.5 for high-density displays.
| Animation | Artboard | State machine / view model | Controls / timelines |
|---|---|---|---|
| Dead Still | Game | Main | Internal interaction / autoplay |
UP NEXT
Granny AI