Don't Look Away: a candle-lit horror game built in Rive by Aleksandr KhrukaloDon't Look Away: a candle-lit horror game built in Rive by Aleksandr Khrukalo

Don't Look Away: a candle-lit horror game built in Rive

Aleksandr Khrukalo

Aleksandr Khrukalo

What it is

A short horror game for the Rive Halloween Challenge, featured on the Contra homepage. Something is in the house and it only moves in the dark. Your cursor is a candle: while your light is on the Visitor, it stands still. Look at the window, the portrait or the door, and it takes a step closer, in a new pose, somewhere new. When it reaches you, the candle goes out.
Play it with the lights off: dont-look-away-nkdh1b.rive.to · Video of the game and the build: youtu.be/Pt_J1wdtQxI

How it is built

GPU Canvas (WGSL). The darkness is a fragment shader: a breathing pool of candlelight around the pointer, smoke in the light, a vignette that closes in with dread, and a tear across the picture every time it steps.
Luau scripting. One rule: it only moves while the light misses its head and body. The same script draws the Visitor and the candle in your hand.
Data binding and state machines. Its distance drives the step counter and the portrait on the wall, which slowly becomes her. The state machine runs the title, the ending and the flash of the scare.
Rive CLI and RML. The room, the words, the view model and the state machine are plain markup, checked with rive --verify and headless screenshots. The demo video was rendered by replaying a scripted pointer frame by frame.
Rive Editor. The claw marks by the door, the cobweb and the spider were drawn with the pen tool and pulled back into the source.

What this means for your product

The same approach builds interactive pieces for apps and sites: a hero animation that follows scroll or hover, an onboarding character, a loading state, or a small game. The source stays plain text, so every change is reviewable, and the state machine exposes inputs your code can drive.
Like this project

Posted Oct 2, 2026

Featured on the Contra homepage. The darkness is a WGSL shader, the Visitor moves only when your candle misses it. Rive CLI, Luau, data binding.

Likes

0

Views

3