Don't Look Away: Candle-Lit Horror Game with GPU ShadersDon't Look Away: Candle-Lit Horror Game with GPU Shaders
The network for creativity
Join 1.25M professional creatives like you
Connect with clients, get discovered, and run your business 100% commission-free
Creatives on Contra have earned over $150M and we are just getting started
Don't Look Away: a candle-lit horror game where the GPU shader is the game.
Something is in the house. 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. In the dark you only see two pale points. When it reaches you, the candle goes out.
Features used: Rive CLI and GPU Canvas, plus Scripting, Data Binding and State Machines.
- 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.
- Rive CLI + RML: the room, the words, the view model and the state machine are plain markup, built and checked with rive --verify, inspect and headless screenshots; the demo video was rendered by replaying a scripted pointer frame by frame.
- Luau scripting: one rule, it only moves while the light misses its head and body; it also draws the Visitor and the candle in your hand.
- Data Binding: its distance drives the step counter and the portrait on the wall, which slowly becomes her. State machine: title, ending, and the flash of the scare.
- Rive Editor: the file was opened in the editor, and the claw marks beside the door were drawn there with the pen tool and pulled back with rive pull.
Video with the agent workflow and code: https://youtu.be/Pt_J1wdtQxI
Post image
Post image
Post image
Aleksandr's avatar
Update (v2, same link): now there is a way to win. Light the three candles in the room before it reaches you, but while you hold your flame to a wick, your light is not on it. Each lit candle becomes a light of its own that freezes it too; light all three and it is gone at dawn....
Isabel's avatar
Contra logo
this is so fun and spooky!
Aleksandr's avatar
Thank you, Isabel! Best played with the lights off. Since posting I added a way to win: light the three candles in the room before it reaches you, and it is gone at dawn.
Rohan's avatar
The cursor as a candle and a Visitor that moves only when you look away is a strong mechanic. How did you do the lighting in the shader?
Aleksandr's avatar
Thanks Rohan! It is one WGSL fragment shader drawn over the whole room. The scene is black except for a pool of light around the pointer: a Gaussian-like falloff (exponent 2.2 instead of 2) plus a weak exponential tail, so the edge fades softly instead of a hard circle. The...
Rohan's avatar
Thanks for the detail. One dread value driving the vignette size, the tint and the tearing keeps the scare readable, and the Visitor only moving while the light misses it is the best rule in the entry.
Aleksandr's avatar
Thanks, that rule came first and everything else was built to make it readable. Glad it lands!
Mostafa's avatar
It's great idea I like candle part it's unique ❤️❤️🎉🎉
Aleksandr's avatar
Thank you, Mostafa! The candle was the starting point: if your light is the only thing that keeps it still, every look away becomes a choice.
Mostafa's avatar
Pardon❤️ nice job
Afnan 's avatar
Good job
Aleksandr's avatar
Thank you, Afnan! Try it with the lights off.
Aditya 's avatar
Making your cursor the candle and the monster stop only when you look at it is a great use of constraint, the shader is the game and the mood does the rest. Horror lives on what you cannot see and this takes that literally. Delightfully unsettling idea for the Rive challenge.
Aleksandr's avatar
Thank you, Aditya! That was the whole idea: the scariest part is the frame you are not looking at, so the game only lets it move there. Glad the constraint reads.
Zulker Naeen's avatar
Nice work!
Aleksandr's avatar
Thank you, Zulker! It plays best with the lights off.
Sahil 's avatar
Aleksandr's avatar
Thanks, Sahil! Give it a try and see how many steps you survive.
Juice's avatar
The candle as a cursor mechanic is such a clever idea. The tension between light and darkness makes the concept feel genuinely interactive, not just visually scary. 🔥
Aleksandr's avatar
Thank you! That was the goal: the light is your only tool, so where you point it is the whole game. Every time you check the window, you let it come closer.
Aditi's avatar
Loved this.
Aleksandr's avatar
Thank you, Aditi! Play it once with the lights off and the sound on.
TRUEFRAME logo
cursor as a candle is such a smart mechanic,, genuinely tense
Aleksandr's avatar
Thank you! Tension was the whole point: you can only watch one thing at a time, and it knows.
Back to feed
The network for creativity
Join 1.25M professional creatives like you
Connect with clients, get discovered, and run your business 100% commission-free
Creatives on Contra have earned over $150M and we are just getting started