Different obstacles, different tides
Low water lets a ship’s mast pass beneath a low-clearance channel. High water lets the ship cross rocks and reefs. Players must plan both where to go and when to act.
GAME DEVELOPMENT / 2024–25GAUCHO GAME LAB
A myth-inspired 3D adventure. As Puzzle Lead, I turned tides, time, and light into reusable mechanics and levels in Unity.
Explore the systems ↓
00 / OVERVIEW
My work on Odysseia focused on designing reusable puzzle systems that could grow in complexity while remaining readable to the player.
I developed the mechanics, implemented them in Unity, designed levels around their interactions, and collaborated with the art team to improve visual communication and puzzle readability.
01 / TIDES & TIME
The right route. At the right moment.
Water rises and falls with the day-night cycle. A route is no longer just a place to discover; it is a condition to create.


Low water lets a ship’s mast pass beneath a low-clearance channel. High water lets the ship cross rocks and reefs. Players must plan both where to go and when to act.
Early levels left players guessing whether the tide had peaked. We added a tidal indicator so they could judge the water level and decide when to move.
PLAYER AGENCY
I implemented time acceleration so players could deliberately advance the day-night cycle. The environment becomes something to manipulate, turning passive waiting into an active puzzle decision.
02 / THE LIGHT SYSTEM
One simple rule. Many ways to combine it.
Start with a beam and a receiver. Introduce one new operation at a time, then build depth through combinations of familiar rules.
Connect a source to a receiver.
Build a path through relay nodes.
Split white light into RGB channels.
Recombine channels into new colors.
Pass only the required channels.
Redirection turns a simple source-to-receiver connection into a routing problem. Dispersion creates branching paths, while fusion and filtering introduce dependencies between them, allowing more complex puzzles to emerge from familiar rules.


03 / MINOTAUR’S LABYRINTH
A mechanic becomes the map.
I wanted players to explore the labyrinth without either skipping most of it or following one long, prescribed route. I used three interconnected color regions to balance local puzzle solving with dependencies across the larger space.
Green light enters the red region and combines with red to produce yellow, unlocking a route.
The Minotaur’s chamber anchors the maze’s connected regions.
Each region offers focused puzzles without forcing one long, linear solution.
Solved beams remain visible, recording progress in the environment and suggesting routes still to explore.

I built this playable graybox to explore the labyrinth’s layout, light-node placement, and puzzle dependencies. It let teammates experience the intended traversal and puzzle flow before the level’s final implementation.
04 / UNDER THE HOOD
Propagate light. Decouple the reaction.
A modular, event-driven C# architecture keeps the light system independent from the gameplay objects it activates.
Receivers emit activation and deactivation events. Independent components respond by opening doors, rotating objects, or activating secondary beams.
A shared LightReceiver handles dependencies, color aggregation, activation state, and downstream propagation. FilterLightReceiver and SpecificLightReceiver derive from LightReceiver and override its virtual methods to filter color channels and activate on a target-color match, respectively.
WORKING WITH THE TEAM
Build. Review. Play. Refine.
Before implementation, I wrote proposals outlining the approach and files I planned to modify. I broke the work into steps and time estimates for approval by the Game Lead and Tech Lead, making scope and implementation decisions explicit before coding.
My pull requests were reviewed by both leads, and I addressed their feedback before merging. Working in one-week Scrum sprints, we integrated completed work into the game and used the team’s discussion to set tasks for the next sprint.
I shared the labyrinth’s playable graybox with teammates to gather feedback on layout, puzzle dependencies, and traversal flow before final implementation. I also worked with artists to improve mechanic readability and environmental cues, connecting gameplay logic, level design, and visual presentation.
WHAT THIS PROJECT TAUGHT ME
Designing reusable puzzle systems taught me to connect mechanics, level structure, and player understanding. Adding the tidal indicator showed how clear feedback helps players decide when to act. Team reviews and playable prototypes helped me communicate design decisions and refine them with others.