Did You See It?
Did You See It? is a short battle of wits with a plan-based AI. It's a prototype I made in September 2026 with the help of Codex CLI. It runs in my own C engine, drawn by an early prototype of Renderboy. I made all the art and did the sound design myself; the player model is based on a design by durb.
Play it in your browser, with a keyboard or a touchscreen.
The story is told through intro pages and dialogs. The camera controls are limited in a very specific way that means part of each room is always out of view.
Details
- Story and pacing. The story arrives through intro pages and in-game dialogs. It's a bit handholdy, but it does what it needs to. You cross four areas joined by airlocks, which act as checkpoints, then a library passage and a final pump room. Normal and Hard change how many camera flashes you can carry and how far the monster is able to reach to kill you.
- Sound. A custom 32-voice mixer with positional stereo, distance falloff and muffling through walls. Rooms are separate levels with their own local coordinate systems, but all have a "global location", and so sound is part of the gameplay: the monster hears the noise you make, and the game teaches you to stop and listen before you enter a room. The music changes with each area and grinds to a halt with procedural pitching when the monster arrives.
- UI. A bitmap font with word wrap, paged dialog boxes, a camera battery meter, the difficulty menu and a death screen that replays the last 45 seconds. On phones and tablets the game shows its own movement pad and buttons.
- Three platforms. The same C code runs on Windows, on real DOS machines with a Sound Blaster 16, and in the browser through Emscripten.
Expand spoilers: the map is a drawing
The game's entire map is generated from this drawing, which I edit in Aseprite to add new areas. Each pixel is one tile.
To create many levels from the rooms on the map, I use a "rolling flood fill" algorithm which works sort of like the flood fill in a drawing program and fills open space, stopping at doors and walls.
Expand spoilers: how the monster thinks
The monster, called the Stalker in the code, follows one rule: its body can't move into any tile your camera can see. Everything clever it does comes from working around this.
- It plans backwards. It starts from the outcome it wants, its hand on you, and searches backwards through "dependencies": where its body and arms need to be, which rooms need to be dark, which doors need to be open and where the crates need to be. If the only way to you crosses a lit room you can see, the plan becomes "turn that light off first" or, as a last resort, "wait".
- It has goals in priority order. Cower, Charge, Catch, Hide, Herd, Trap and Locate. It re-chooses every tick within a fixed amount of planning work, so it never stalls the game.
- It uses the environment. It turns off lights, reaches under closed doors with a three-jointed arm, opens doors slowly while you're watching and quickly when you're not, and pushes crates into your path. It actually has no animations, and instead moves with simple IK. In other words, the door reach you see above is a fully procedural animation.
- It sets traps. It waits beyond a door it saw you use, makes noise from the far side of a dead end to herd you, and peeks round door frames.
- It listens. Doors and crates give away your position from a long way off. Moving quietly matters.
- It learns from your flash. A flash from your camera makes it cower. If it's cornered when that wears off, it charges. Flash it in a doorway twice and it learns to sit on the other side of the room instead.
Fighting back
Crates are your best defence. Set one down where a door swings and the door shuts itself. Now the monster has to move the crate before it can get in, making noise as it does.
Watch it think
Play with the debug map to skip the intro and see every room, with you in white and the monster in red, labelled with map coordinates.
Technologies
Credits
- Player model design by durb.
- Metal Sheet Bang by Razzvio (CC BY 3.0) and Sword Stab Body Hit by -GeorgeDiamond- (CC BY 4.0), from Freesound.

