The Project
Three systems, eight weeks
Sunflower was a volunteer sprint with a distributed team. My scope covered three independent systems that each fed into different aspects of the game — NPC behaviour, narrative interaction, and visual style. Working across all three simultaneously required clear interfaces between systems so the rest of the team could integrate without depending on my timeline.
Deer AI behaviour tree — idle, interrupted, and flee states
System 1
Deer AI behaviour
A three-state behaviour tree — Roam, Interrupted, and Flee — responding dynamically to the player's proximity. When startled, the deer drops an antler at a waypoint tree and escapes, leaving footprints in snow for the player to follow. The interrupted state correctly returns to roaming once the player leaves range. See the full Deer AI writeup →
- Three-state behaviour tree — Roam (random forest walk), Interrupted (player detected, drop antler), Flee (escape with snow trail)
- AI Perception — sight-based detection with configurable radius; perception fires at 0.5s intervals to reduce jitter and device load
- Enumerator-driven states — clean state machine using Blueprint enumerator; states are readable and easy to extend
- Known limitation — new random flee location sometimes generates too close to the player; identified fix is to bias the random location away from player position
System 2
NPC dialogue system
A modular dialogue system designed in close collaboration with the writers on the team. Built to parse through long interaction sequences with ease, with a structure the designers could work with directly without needing to touch Blueprint code. See the full dialogue system writeup →
Cel shader — diffuse banding post-process applied to scene
System 3
Cel shader
A diffuse post-process shader isolating value bands into fixed steps to create a flat cel-shaded look. Blended at the "scene color before DOF" location to reduce shadow jitter. Later iterated into a PBR-compatible approach — see the full cel shader writeup →
Reflection
What this taught me
Working across three systems simultaneously in a volunteer jam taught me how to scope ruthlessly and communicate clearly. The deer AI post-mortem in particular — where I documented a known limitation rather than hiding it — was the most honest piece of work I did on this project.
Research Question
How should game jam production be structured to allow individual programmers to work on multiple interdependent systems without creating bottlenecks for the rest of the team?