Overview
The Challenge
A shooter with no guns. Every system — scoring, defence, survival — has to hang off one action: getting a rival's face cleanly inside the viewfinder.
The Approach
Light as a mechanic. The flash is your shot, your weapon and the thing that gives away your position, inside a maze generated fresh for every match.
The Build
Godot 4.7 and GDScript — around 100 scripts and 19,000 lines. Procedural maps, characters and AI, host-authoritative netcode and proximity voice. Built solo.
The core
The camera is everything
Raise the camera to your eye and you see only what is in the frame — and you can only walk. A photo counts when the target's face is inside the viewfinder box, close enough and in clear view, so position and timing beat reflexes. The flash is both the shot and the weapon: it blinds and dazes rivals, stuns some monsters, and lights you up for everyone else. Film is limited, and holding a hand over your face to spoil someone else's shot is the only defence you have — except at a terminal, where both hands are busy.
Game modes
Three ways to compete, one to survive
Payday is a heist played with a camera: face shots steal the points a rival is carrying, and nothing is safe until you upload it at a terminal that moves every minute. Full Set is a race to hold a photo of every rival while everyone erases yours. Battle Royale gives you three lives and kills the lights from the outside in, until the last photographer is standing. Ghost Hunter drops the rivals altogether.
Ghost Hunter
Fifteen things that each break a different rule
Go in alone or with three others and photograph what is hunting you. Every night deals a different mix, so no two runs play alike. The Phantom shows up only on film. The Stalker cannot move while you look at it. The Screamer hunts by ear and must never be flashed. The Shadow Lurker moves only while your light is off. Above them all is THE OWNER, who walks the halls when the dread meter tops out and whom the flash does nothing to — hide in a locker and hold your breath.
The cast
Ten paparazzi, built in code
Every photographer has a name — Magpie, Vulture, Jackal, Weasel — a hat or helmet, and a habit: cautious, normal or reckless. The characters, monsters and props are built and animated in code rather than imported as models, which is how a solo project ends up with a cast this size.
Under the hood
One developer, 19,000 lines
Shutters runs on Godot 4.7, written entirely in GDScript. Every match builds a new maze from a seed, sized to the number of players, with rooms, corridors, lockers and terminals — and online players all get the same seed. The host is authoritative and decides every shot, which keeps cheating out. Bots play the objective, cover up when a lens turns on them, and go for whoever is standing at the terminal. In Ghost Hunter a director paces the night, sending threats when things go quiet and holding hunts back after a beating.