Main contributions
- Directed a team of 15+ designers, engineers, artists and audio to deliver a demo showcased at USC Games Expo 2026
- Ran weekly engineering and design meetings, assigning tasks on Notion and working with my Producer to make sure we meet milestones
- As the lead engineer and designer, I worked on multiple systems including
- A dynamic camera system inspired by Brothers Tale of Two Sons. Tracking multiple targets to keep in frame, with tools to change distances and angles
- AI behavior tree with custom C++ and Blueprint behavior tasks and services for our NPC companion
- All gameplay mechanics of our main character in C++ and BP: movement, branch walking, lily pad jumping and more. Including all technical animation in Unreal
- A dynamic interaction system in C++ that serves as the skeleton for any interactable in the game
- Audio implementation with FMOD and Unreal Engine
- Designed, developed and implemented an interactive river rescue sequence with multiple quick-time events
Experience and design goals
- Make the player feel like a kid: evoke the feeling fo being small, vulnerable, playful, and childlike through mechanics.
- Make the player feel protected: creating a NPC companion that feels genuinely caring fo the player and the one leading the journey
- Make the player curious about the world: Don’t explain the world and the narrative. Hint at it, let the player piece things together.
All this following some specific design constraints that I wanted from the start. 1) No dialogue or direct VO. Have movement, animation and simple audio cues move the story forward and 2) simple accesible gameplay. Movement plus two buttons for actions is all we need. I want this to be playable by little kids.
My mains inspirations come from Famito Ueda games (ICO, Shadow of the Colossus, The last Guardian) and games like Limbo and Inside from Playdead Games.
The AI Companion
Created an AI companion designed to act as a protector and caretaker. Because of that it has very particular set of behaviors to make the player feel the NPC as such. This include some procedural animation like the Guardian and Kid looking at each other.

Leading the way
One core idea is that this is the Guardian’s mission. Meaning the Guardians knows the way, not you. Is like you are in a hiking walk with your parent. The Guardian will have a specific place to go and will lead the way, if the player is too far away, it will stop, look at the player, call and wait for them to come close before continuing.
Rescue from danger
Little kids can’t swim. If the player goes into a body of water, they will begin to drown, and the Guardian will drop whatever its doing and come to its rescue. Literally picking him up and putting him in the closest position on land.
Crossing the river
In that same context, the player cannot cross the river so they can ask the Guardian to carry them if they are close enough to the water. The Guardian will pick them up and start walking to the other side of the river using the navmesh
Destroying obstacles
If the player finds a breakable obstacle in the way, they can tell Guardian to come and destroy that obstacle for them
Feeling like a child
I asked myself: what does a little kid would like to do on a forest? Jump and move around. I created platforming mechanics that moves the gameplay forward and also makes the player feel like a playful kid.
Walking on branches
Using splines, math and a way to enter and exit through jumping the player can walking on specific branches with its own animation state. This way they can get to places the Guardian can’t and it feels playful.
Lily pad jumping
The way the player can cross small water ponds is to jump across some lily pads. We use splines to easy design the path of the lily pads and places the meshes dynamically, then we override the normal jumping behavior to give it a specific target, the player when jumping will immediately go to the next lily pad.
Dynamic Camera System
Inspired by Brothers Tale of Two Sons, I wanted to create a dynamic top-down camera system with two main features: 1) track multiple targets and zoom in/out to make sure they are in frame, 2) change angles and distance when needed so it adapts to the level.
This little video tells you what I wanted to accomplish. A camera that follows and moves around with the level and the characters themselves.
Tracking multiple targets
The main problem to solve was how to track multiple targets in a 3D and zoom in/out in a way that keeps targets in frame regardless of camera angles. That means solving two issues, WHERE to look at and HOW FAR away from it. For the first one we created an array of Actors (targets) and we find the average position between them.
The second one was trickier. First we get maxDist which would be the distance from the farthe away target from the tracking position. The idea is that i that if we can make it so the farther away target is visible, then the others should be too. Since the target will looking directly at that position, we can make a triangle to define H as the height from the camera to the ground making sure at least that distance is visible.


Now that we have H, we can get the armLength. Because of how a camera boom works in Unreal the pitch angle is not FROM the camera but from the point its looking at. So can use some trigonometry to get that armLength as well
Now, if you are an engineer and you know your 3D math I know what you are thinking: this is not precise because the terrain is not even. But is close enough and it works specially when we change angles of the camera.
Changing camera angles
I prototype a lot of different approaches so that the camera would turn around or change angles and distance depending on the level in a “procedural” way. One of those approaches was with a spline, pretty much a camera in a spline rail which gave results like this.
Unfortunately, that didn’t exactly work, and it was a little complicated to use. Because of that I result to specific trigger box that will trigger a change in the camera over an X number of seconds. Each of those triggers had a “reverse” trigger so if the player will go back, the camera would return as well. This ended to be more than enough of what I needed.









