NightShift at Candie's
A survival horror night-shift game where six animatronics each hunt the player by different rules: built as a fully data-driven system the client can retune without touching code.

- Client
- Fiverr (@z_angel)
- Role
- Gameplay Programmer
- Platforms
- PC
- Year
- 2026
A single-location survival horror game in the night-watchman tradition: the player sits in an office, works a bank of security cameras, and manages power, doors, and a mask while six animatronics converge on them. I handled the gameplay programming, every system between the main menu and the jumpscare.
The interesting constraint was that no two animatronics could behave the same way. Frednic tracks a gaze meter that drains when he's ignored and fills when he's watched, so both staring and looking away will kill you. Bronnie walks a fixed door route and forces the door at the end of it. Dave rolls one of three approach routes at the start of a run and is stopped by closed doors. Rena escalates through poses on one camera before committing to the window or the right door. The Ambassador occupies several cameras at once and punishes the player for dropping the monitor while she's on screen. Fredbear announces himself with a trumpet, then walks in on a timer the player has to beat with a gaze button.
Because the client needed to tune difficulty themselves, every one of those behaviours reads its numbers from a documented JSON file at startup. Roam intervals, meter drain rates, route probabilities, strike counts, gaze deadlines: all editable in a text file, with inline comments explaining what each value does. Retuning a night is a reload, not a code change.
What I built
- Built all six animatronic AIs as independent behaviour systems: gaze meters, fixed and randomised patrol routes, multi-camera occupancy with a strike system, and a timed gaze-button encounter
- Designed the data-driven config layer: every AI parameter lives in a self-documenting JSON file the client edits and reloads, with no script changes required
- Wrote the night progression system: per-night animatronic rosters, AI-level scaling that tightens every timer as levels rise, and a custom night mode with per-animatronic difficulty
- Implemented the core player loop: security camera interface, power drain, door and window controls, and the mask mechanic that fools specific animatronics
- Built the supporting game architecture as autoload singletons: game clock, night manager, door manager, camera state, and a save system covering night progress
- Handled the full front end: main menu, pause menu, save/load, jumpscare sequences, and game over flow
Gallery




Breakdown
Every animatronic reads its tuning from a single JSON file loaded at startup, with the meaning of each value documented inline next to it. The client can change how fast Bronnie walks, how hard Frednic's meter swings, or how many strikes the Ambassador allows, then reload the game to feel the difference. None of it requires opening a script.

Frednic runs on a gaze meter rather than a patrol route. Ignore him and it drains; watch him and it fills. Cross either end of the range and he comes for the office. The player cannot solve him by picking one camera and staying there, since staying safe means keeping a rhythm of watching and looking away rather than holding a single view.
The Ambassador breaks the one-animatronic-one-camera assumption the rest of the roster follows. She occupies up to three cameras at once and tracks strikes against the player for dropping the monitor while she is on screen. Early strikes brick the camera she is on; the last one ends the run.
Night progression is driven by two tables: which animatronics are active on a given night, and what AI level each one runs at. Raising a level subtracts from every interval that animatronic uses, so difficulty scales through the same numbers designers already tune. Custom night exposes those levels directly to the player.
Cross-system communication runs on Godot signals through a small set of autoload singletons: night state, game clock, door state, camera state, and saves. The mask, for instance, announces itself when raised, and only the animatronics it should fool are listening.
What the client said
very happy with the result, highly recommended
Credits
- Programming
- Bilal AhmadGameplay systems, animatronic AI, night progression, save system, and UI wiring: the work described on this page.
- Environment model
- DiscoHeadRestaurant layout and textures, from the “FNaC Semi-Accurate Map” asset.
- Input prompt icons
- Kenneykenney.nl, released under CC0.
- Character models, audio, and fonts
- Various community creatorsSupplied for the project; individual authors still to be confirmed.
- Original series
- Five Nights at Candy’s, created by Emil MackoThis is a non-commercial fan project. The characters and setting belong to their creators.
Built with
- Godot 4.6
- GDScript
- Forward+ renderer
- JSON-driven configuration
- Signal-based architecture