Puppy In Home

About

Puppy in Home is a virtual reality (VR) game that blends puzzle solving with emotional storytelling, wherein players unlock pathways that lead into a maze resembling scenes from a typical home. Players reveal fragments of everyday life at each rotation and gradually uncover the final mystery.​

Project Info

  • Role: Gameplay Programmer
  • Team Size: 5
  • Time Frame: 3 months
  • Engine: Unity

Project Links

GitHub Repository

Feature

Maze Ball - A full mechanical replica of the classic Maze Ball, brought to life in VR

Narrative - A heartwarming story about the bond between a puppy and its owner

Toon Shader - A stylised, cartoon-inspired visual aesthetic

Level Design - Thoughtfully crafted puzzles and intuitive visual navigation

Technical Overview

The MazeBall

To deliver the best possible experience to players, I carefully designed and implemented the MazeBall. Due to its complex structure, I layered it with four distinct colliders, each serving a different role. I refined this structure through multiple iterations of playtesting and ultimately arrived at the final solution:

  • Outer Sphere: Detects interaction (HandInteractable)
  • Inner Sphere: Uses inverted normals to prevent the tiny ball inside from falling out of the MazeBall
  • Puzzles: Models with mesh colliders that allow the tiny ball to roll over them
  • Air Wall: Invisible walls that prevent the ball from falling out of bounds
  • MazeballGIF

    Room Rotation

    To enhance the rotational experience, I added multiple effects during transitions.

    The transition system calculates the required rotation direction and smoothly lerps from the current rotation to the target. During this process, I apply global volume effects such as vignette and lens distortion by dynamically lerping the intensity values through code.

    Feature Image 1 Feature Image 2

    Stage Management

    Our project currently includes four levels and eight transition animations, making scene management a significant task.

    I use a state machine to manage the current stage, ensuring each level's starting position is automatically configured. I also use Timeline to control object activation during transitions. To maintain immersion, I carefully adjust the screen distance and turn off lighting when necessary.

    Feature Image 1 Feature Image 2

    What I learn

    The first thing I learned is that building a VR project requires a different approach. Coming from my previous AR project, where I relied heavily on hand tracking, I realised its limitations in precision. Initially, I implemented hand tracking, but it turned out to be unreliable and disrupted the immersion of the game. It brought more frustration than the satisfaction of using real hands. Ultimately, I chose to use controller-synthesised hands, which provide the illusion of hands while maintaining the precision of a controller.

    The second major takeaway was the importance of leveraging the unique interactions that VR technology offers. Our team spent a significant amount of time discussing what the main interactive component of our game should be. We asked ourselves: Why VR? Many game concepts can be executed without VR, but the tactile experience of feeling the MazeBall and interacting with its physics using real hand movements is truly unique. Moving forward, I will always consider this when designing future VR projects.

    Feature Image 1