Project Links
Feature
Pet AI - Behaviour is based on player action, providing fun interaction.
Real Hand Interaction - Utilizes Meta Interaction SDK to recognize real hand input.
Space Identification - Uses Meta Utility SDK to recognize areas and generate NavMesh.
Animation - Provides full and natural animation on the pet.
SFX - Programmed perfectly to match pet behavior.
Technical Overview
Finite State Machine
The dragon AI depends on a finite state machine. It changes behaviour based on user input. The states follow the following user journey below.

Real Hand Interaction
This project utilises real-world interaction to create a natural experience of interacting with pets. Meta SDK supports this technology and we build patting and fetch ball interaction upon this fundamental structure.

Room Scanning
This project uses the spatial data in the Meta Quest device. We ask for user permission to use the data to build colliders and navmeshes around the room.

Pet Animation
Through a structured state machine, we create an animation controller below that switches animation states based on pet behaviours.

What I learn
Through this project, I gained valuable hands-on experience in integrating Meta SDK features, such as room scanning, distance grabbing, real hand interactions, and dynamic nav mesh generation. By building and analyzing Meta’s samples, I deepened my understanding of how these technologies work and successfully applied them to our project.
I enhanced my skills in interactive gameplay programming by implementing patting and feeding interactions, as well as developing a debug tool to efficiently monitor log messages within the headset. Working closely with our designer, I also contributed to the animation system, designing the animation graph, setting up controllers in Unity, and synchronizing animations with pet behavior. Additionally, I integrated sound effects to enhance immersion.
Beyond programming, I took on responsibilities in asset management, ensuring that all textures and models were correctly loaded, rendered properly, and maintained their intended scale. My role as a QA tester strengthened my ability to systematically build, test, and refine our project with each update, allowing our team to showcase a polished and functional prototype on time.
Most importantly, this project reinforced the significance of good teamwork. By dividing tasks effectively, maintaining clear communication, and continuously providing feedback, we ensured smooth collaboration. My ability to integrate contributions from different team members and iterate based on testing feedback was essential in delivering a cohesive and high-quality experience.

