Travesía

Isometric, facial-expression controlled, 3D adventure inspired by Death's Door

About

A captivating isometric 3D adventure that fuses precise timing and puzzle-solving with cutting-edge computer vision technology. In this immersive experience, your facial expressions take center stage, allowing you to conquer a world challenges.

Info

Role: Team leader/Lead programmer

Team size: 5

State: On hold

Time frame: 1.5 years

Introduction
Travesía invites you to step into the shoes of Mariana, an ordinary teenager whose life takes an extraordinary turn when she stumbles upon a necklace that once belonged to her mother. Little does she know that this seemingly ordinary heirloom holds the key to unlocking a universe of captivating adventures.

Embark on a journey alongside Mariana and her enigmatic companion, Raku, as they traverse a mesmerizing 3D world from an isometric perspective. In Travesía, combat takes center stage, challenging your precision and timing. Roll to evade enemies' relentless attacks, and master the art of striking at precise moments to avoid danger. Your skill in combat is vital to keep Mariana safe from harm.

As you delve deeper into this enchanting realm, you'll encounter intricate puzzles that stand as gateways to new worlds. Solving them is the key to unraveling the mysteries that await. Travesía empowers you with a variety of weapons, each offering a unique balance of speed and damage output. Choose your arsenal wisely, for it will be your companion in the face of adversity.

What sets Travesía apart is its innovative use of optional webcam integration. Your facial expressions become your tools for interaction. Blinking can alter the course of your adventure, and subtle facial movements aid in evading a variety of attacks. This groundbreaking feature adds a layer of immersion that makes Travesía a truly one-of-a-kind gaming experience.

In the world of Travesía, Mariana's journey is a mesmerizing fusion of combat, puzzle-solving, and the art of facial expression interaction. Get ready to uncover the hidden powers of Mariana's necklace and set forth on an adventure like no other.
What I learned...
Computer vision
OpenCV's face detection

DNN face detection algorithm and extensions.

OpenCV's facial landmarks

Facial landmarks detection.

Second procedural generation

Face position-controlled quicktime event in Travesía.

Travesía provided me with the opportunity to bridge the gap between game development and my background as a biomedical engineer. This bridge took the form of a computer vision library that enabled me to process images for facial expression analysis.

  • OpenCV for Unity: Integrated the OpenCV library for Unity, which facilitated image processing and computer vision tasks.
  • DNN Face Detection: Utilized OpenCV for Unity's deep neural network (DNN) face detection algorithm to identify and locate faces within images.
  • Facial Landmarks Detection: Employed OpenCV for Unity for facial landmarks detection, enabling the detection of key facial points, such as eyes, nose, and mouth.
  • Custom Face Analysis: Developed a custom library to analyze detected faces, determining their relative position, rotation, and orientation within the game environment.
  • Blink Detection: Created a proprietary blink detection algorithm inspired by Otsu's algorithm. This algorithm monitored eyelid activity over a period, computed histograms, and determined the point with maximum inter-group variance, effectively detecting blinks.
  • Leadership

    As the project leader of a multifaceted team consisting of 5 developers, including programmers, designers, and artists, Travesía provided me with invaluable insights and experiences in leadership and project management.

    Agile methodology

    Travesía was developed using the Agile methodology, a perfect approach for managing a project in constant evolution, fostering continuous improvement and collaboration.

  • We utilized Jira to break the project into manageable phases and analyze sprint-to-sprint development.
  • Sprints were set at a two-week duration, facilitating flexibility and adaptation.
  • Daily scrum meetings allowed team members to report their progress and plans, ensuring alignment and quick response to changes.
  • Each sprint began with task distribution, where timeframes and task complexities were collaboratively discussed with team members.
  • At the end of every sprint, a retrospective meeting enabled team members to summarize their work, share feedback, and identify areas for improvement.
  • Standarized formats

    Collaborating with multiple team members can be challenging, especially when each member has a different approach to organizing elements. Standardization plays a crucial role in ensuring a harmonious workflow.

  • The project's GitHub repository ReadMe included comprehensive guidelines for naming assets and specifying their proper location within the project.
  • We created a programming manual that defined the project's coding and naming conventions, ensuring consistency across the codebase.
  • Several manuals, either authored by me or the respective area experts, were developed for different subsystems used in the project, such as camera handling, localization, and post-processing effects.
  • The design and art teams collaborated on the official brand identity manual for Travesía. This manual outlined the game's official fonts, colors, and element alignments, ensuring a unified visual identity.
  • Version control

    Efficient version control is paramount when collaborating with multiple developers on a complex project like Travesía.

  • A robust Git repository was established on GitHub to facilitate version control. Git's flexibility and powerful branching model became our backbone for managing the project's source code.
  • Each activity and task set in Jira was seamlessly linked to dedicated branches within the repository. This allowed for a streamlined workflow and clear traceability of changes.
  • For each planned build of the game, a specific branch was created, serving as the foundation from which other branches were derived. This systematic approach ensured a well-organized development process.
  • Upon completion of an activity, a pull request was initiated by the responsible developer. To maintain code quality, a minimum of two peer team members conducted testing. Only after the approval of two peers was the code eligible for merging.
  • Thorough testing of each build's branch was conducted before finalizing the merge into the master branch of the game. This step-by-step approach helped maintain code integrity and minimized integration challenges.
  • Team activities

    Building a strong team involves more than just work. Engaging in non work-related activities fosters communication and strengthens bonds among team members.

  • Biweekly Team Gatherings: To break the monotony and promote team spirit, we organized gatherings filled with fun activities and shared experiences.
  • Virtual Game Nights: Despite the challenges posed by the COVID-19 pandemic, we found creative ways to connect and have fun. Virtual game nights became a regular feature, helping us unwind and enjoy each other's company.
  • Conventions and Learning: We attended industry conventions together to gain insights, network, and keep up with the latest trends. These events provided valuable opportunities to learn and grow as a team.
  • Team Dinners: Every six months, I invited the team to dinner, where we could relax and celebrate our achievements.
  • Preview of Travesía and one of the initial dialogues.

    Programming

    As my inaugural foray into a long-term gaming project, Travesía served as a rich learning ground for various Unity packages and complex systems.

    Localization Mastery

    Travesía marked my initiation into Unity's localization package, unlocking a world of possibilities in game development.

  • Early in the project's lifecycle, I embarked on a comprehensive localization effort, ensuring that all in-game texts and assets were made accessible in both English and Spanish.
  • To maintain organization, I thoughtfully categorized localized strings based on their respective elements, such as item names, descriptions, dialogues, and more.
  • For seamless integration, I implemented asynchronous loading of localization tables at the game's inception. Additionally, I developed a customized localization utility extension to enable real-time access to localized strings during gameplay.
  • Crafting Infinite Worlds: Procedural Maze Generation

    Within Travesía, I delved into the exciting realm of procedural generation, injecting dynamic elements to keep the game engaging and full of challenge.

  • For the heart of our procedural world-building, I engineered an in-house Depth-first Search (DFS) algorithm. This technique harnessed the power of graph theory, enabling exhaustive exploration of each branching path before skillfully backtracking.
  • To ensure a seamless gaming experience, my DFS implementation leveraged Unity's coroutine system. This innovative approach allowed for the generation of an array of paths within a single frame, maintaining a fluid frame rate of at least 30 FPS.
  • The algorithm provided flexibility with manual adjustment options, allowing for a virtually infinite range of maze configurations by specifying the number of rows and columns.
  • Once the maze structure was in place, we applied a touch of randomness. Randomly selected prefabs were strategically placed within the maze, enhancing its natural appearance and seamless integration with the game's environment.
  • As part of this system, a maze-solving algorithm was thoughtfully designed. Not only did it serve the purpose of debugging, but it also introduced an auditory element, dynamically tailoring the game's difficulty and offering players the perfect challenge.
  • Two Diverse Renderings of Travesía's Procedurally Generated Mazes.