Skip to content
piyush kacha.
All work

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 Kacha

MY ROLE

Direction · Game design · Art direction

Play it on rive.to

Dead Still

An interactive photography game

Dead Still preview

Step inside the studio.

Best with a mouse and keyboard. Sound on for the full experience. The game loads when you press play.

Dead Still interactive animation

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.

Rive artboards, state machines, and controls
AnimationArtboardState machine / view modelControls / timelines
Dead StillGameMainInternal interaction / autoplay
Read the Rive handoff guide

UP NEXT

Granny AI

YOUR NEXT GOOD IDEA

Let’s make
something move.

A thoughtful interaction. A character with personality. Something you haven’t quite figured out yet. I’m in.