A character-driven puzzle game in Unreal Engine 5. I handle art assets, character modelling, rigging, animation and gameplay programming.
Good Boy (working title) is a puzzle-solving dog simulator. You wake as a dog in a streamer's bedroom with human intent and animal tools — no hands, only paws, weight, teeth and bark — and the only way out is to solve the room before she notices. Every locked drawer and high shelf becomes a problem of physics and timing, and the streamer who owns the room is both the obstacle and the clock.
The game runs on a repeating daily cycle: free exploration in the morning, supervision before the broadcast, real risk while she is live, then consequences and a reset at night. Hidden values track suspicion, affection and dream stability, and pushing too far ejects you from the loop.
It is a solo project, so it covers the whole path from modelling, rigging and animation through to gameplay code in C++ and Blueprint.
The central technical problem is that a long-bodied quadruped does not fit Unreal's upright, capsule-based character model. The controller is a bespoke C++ layer over Character Movement, built around that mismatch.
Locomotion is driven by Motion Matching rather than a hand-built state machine. Control Rig foot IK with per-foot locking removes the sliding that Motion Matching leaves during low-speed turns, and lets the front and rear feet find the floor independently on slopes and steps. Because secondary collision volumes do not push the root capsule, head clipping is handled with predictive sweeps before each move.
Development is documented in a 36-week log, grouped into eleven phases. The target is a ten-minute vertical slice: one room, one heroine, a handful of polished dog interactions and a single complete loop that ends on a narrative beat.
The slice is playable start to finish and runs nine to twelve minutes. In the first playtest, testers understood being a dog immediately and reacted well to the moment of slipping past the heroine while she is distracted. The main finding is that suspicion needs a readable in-world signal, so being caught does not feel arbitrary, and that is the next design problem.