— PROJECT NAME
— ROLE
Technical Designer/Gameplay Programmer
— DATE
May-July, 2024
Full Project Walk-through
For this project, I designed hub rooms and minigames, programming both learning-focused games such as Nerve Board, Wire Connection, Build It, Tumor Board, and Airway Games, as well as VR familiarization games like ping pong, skeeball, UFO hunt, and wire cutting. I developed systems for tracking the player’s true facing position (waist/feet alignment) and teleportation, along with implementing a scrolling text system to enhance the VR experience. (On the right is a full gameplay walkthrough)
The primary users of this project are medical professionals, many of whom have limited experience with virtual reality. As a result, preventing motion sickness and ensuring gameplay comfort were top priorities. To address these challenges, we implemented a teleportation-based movement system using interactive teleportation points, allowing users to navigate the environment seamlessly. Additionally, we developed a system to manage user orientation and facing direction.
When the player interacts with the teleporter, the current controller provides haptic feedback to confirm the interaction, enhancing user awareness. Simultaneously, the screen fades to black during the transition to minimize motion sickness, making the experience more comfortable. By utilizing teleportation for movement (via teleport points), directing the player’s facing (as discussed on the right), and assigning interactions to the trigger buttons, we simplified the controls. This intuitive design—focused on pointing and clicking—made it easier for users to grasp the mechanics while freeing up the remaining controller buttons for non-essential but quality-enhancing functions. These included features like a teleport menu or a “return to hub point” button (explored further below).
When the player teleports to a point we dictate their facing so that they are always facing in the most optimal direction to interact with the environment. This is to prevent player’s from looking around with the stick to reduce motion sickness. However, we ran into an issue where when we altered the player’s rotation while they weren’t looking directly forward their rotation would be offset by the angle of difference from their center. To fix this we kept track of their true rotation. When the player teleported to a new location their rotation would be set to the desired rotation + the offset from their actual rotation they had at the start of the teleport, their actual rotation would then be set accordingly. This ensured that the player’s true forward (where their waist/feet are pointing) is facing the desired direction.
I was tasked with designing and programming learning minigames for this project that seamlessly combined intuitive VR mechanics with essential instructional content. The goal was to create an all-in-one program where users could engage with educational material in an enjoyable way while also practicing necessary check-up procedures. The programming challenge involved transforming traditional instructional content into interactive VR games that were not only effective in conveying information but also engaging, intuitive, and playable within a virtual environment. (on the right is a video of all of the learning games present in the project)
I developed six VR-based learning minigames for clients who provided the educational content. My goal was to transform this material into engaging and interactive experiences that maintained focus on the learning objectives.
Each minigame followed a consistent design philosophy:
Our minigames were divided up between different rooms depending on the type of learning content they contained. The user would navigate to each room through the hub. The real challenge with the rooms was visibility. We needed enough space so that all of the minigames would fit inside a room while also requiring that the player always had easy visual access to the other minigames as well as the exit. Thus, we used a hub teleporter system. When the player spawned into the room they would spawn on the hub teleporter. We ensured that this teleporter was positioned so that you could see each minigame and the exit from it, making the room easy to navigate. Additionally, all the player had to do to return to the hub teleport point is press either the A or X button (mapped to quest controllers).
The game begins by setting up the board:
answerList
and definitionList
, ensuring a unique setup each time.- When a player interacts with a wire box on the left, they “grab” its wire.
- If the grabbed wire is already active, it will reset to its original position.
- If the wire hasn’t been connected yet, it becomes the active wire, and any previously active wire is reset.
If there’s an active wire and the player points to a spot on the board, a visual line is drawn from the wire’s origin (the left-side box) to the player’s hand, showing the connection being made.
Interacting with a connector (on the right side) will:
The game features a “physical” button (pressable by the player) that triggers an answer check:
Many users of this program have little to no prior experience with virtual reality, let alone the specific controls of our project. To address this, the minigames were designed to provide a low-stakes, enjoyable way for users to familiarize themselves with both the VR environment and the project’s controls. These games, inspired by familiar real-world activities, offer a fun and accessible introduction to VR mechanics. I was responsible for both designing and programming these minigames, with the key programming challenge being the effective translation of classic real-world games into an engaging and intuitive VR experience. (on the left is a video of all of the VR familiarization games present in the project)
Similar to the learning minigames, one of our primary goals with these VR familiarization games was to help users learn—specifically, to familiarize them with essential VR mechanics they would rely on throughout the project. We began by identifying the core mechanics that would be used extensively, such as pointing and interacting, picking up and examining objects, and utilizing tools. Additionally, we considered how VR-specific factors, like eye-hand coordination, might influence the user experience.
Using these identified mechanics, we designed minigames that were simple and familiar to players while effectively reinforcing these skills. For example:
Unlike the learning minigames, the primary focus of the VR familiarization games was to make the experience fun and enjoyable for users. Since much of the project involved exploring and learning about heavy, serious topics, these games provided a space for users to relax, unwind, and focus on having fun. At the same time, the games subtly reinforced the VR mechanics they would use throughout the project.
By prioritizing fun, we created an environment that offered both a mental break and a natural way to learn. Engaging gameplay not only helped users immerse themselves in the experience but also motivated them to subconsciously practice and master key VR mechanics, ensuring they felt confident and prepared for the challenges ahead.
One of the VR familiarization minigames I created was the wire-cutting game, which was designed to teach players how to use tools effectively in a VR environment. A key mechanic we needed players to master was the precise use of tools, specifically the hemostat, which plays an important role during the check-up procedure.
To make this learning process engaging, I designed a game where players use scissors to carefully cut through wires in the correct order within a set time limit. Failing to follow the order or running out of time results in the game resetting, adding an element of challenge and urgency. The order of the cuts is determined by the colors of the lights above each wire, creating a visually intuitive guide for players while reinforcing the importance of precision and attention to detail.
The game begins by initializing the lights above the wires, setting them to their designated colors to indicate the starting state. Each of the four wires is then assigned a random starting position at the bottom of the board and a random ending position at the top, with no positions being repeated. This randomized setup ensures variety and unpredictability, keeping each round unique and engaging.
To further increase the challenge, each round includes a timer that limits the amount of time players have to complete their task. The timer starts at a set value for the first round and decreases by one second with each subsequent round, adding an escalating sense of urgency and pushing players to improve their precision and speed.
What makes this setup particularly impressive is its reusability: the function isn’t just a one-time initializer—it’s a core component of the game’s dynamic flow. After the player successfully cuts through all the wires, the function resets the board to start a new round seamlessly, with the timer adjusted for the new challenge level. This combination of thoughtful randomization, increasing difficulty, and efficient reusability makes the setup both practical and integral to sustaining player interest.
One of the unique challenges I faced while developing this game was dynamically creating colliders that tightly matched the wires (represented by line renderers) to enable precise player interactions. The wires needed to feel realistic, and their collision zones had to align perfectly with their visual appearance to ensure an immersive experience.
To overcome this, I implemented a system that dynamically generated mesh colliders for each wire after their start and end points were determined. The process involved baking a mesh directly from the line renderer, then assigning this baked mesh to the mesh collider. This approach ensured the colliders accurately conformed to the shape and position of the wires, providing players with a seamless and precise cutting mechanic.
When the player cuts a wire using the scissors, the game checks whether the color (material) of the wire matches the current light above the wires. If the colors don’t match, the game ends immediately. The game can also end if the player runs out of time.
If the colors do match, the current light advances to the next light in the sequence (there are a total of four lights). This process continues until all the lights have been matched and turned off. If the player successfully matches all four lights, they complete the round. At this point, the board resets for the next round, introducing a fresh challenge.
The hub of the project features multiple doors leading to separate rooms, each containing unique content. To indicate the contents of each room, we needed clear and concise signage. However, listing all the games in a room either occupied too much space or resulted in text that was too small to read effectively. To address this, I devised and implemented a scrolling text system, similar to displays seen on Wall Street or at airports. This solution allowed us to convey a large amount of information to players without compromising readability or visual clarity.
To accommodate the unique content needs of each scrolling text sign, I designed the script to be highly designer-friendly. By exposing key variables in the editor, I ensured that both myself and other designers could easily customize its functionality without modifying the code. This approach not only streamlined the design process but also expanded the script’s versatility across various use cases. The exposed variables allow users to:
This flexibility made the script adaptable and efficient, empowering designers to tailor it to their specific requirements with ease.
The text movement was achieved by incrementally shifting each text object to the left over time, controlled by the defined scroll speed. When a text object’s position exceeded its width (i.e., it had fully scrolled off the sign), its content was reset, and it was repositioned a specified interval behind the other text object. This created a seamless scrolling effect: as one text object passed completely across the sign, it would loop back and reappear behind the currently visible text, maintaining a continuous flow of scrolling text.
Key Learning/Takeaways
Understanding Client Needs: Successfully translated client-provided learning content into engaging and functional VR minigames, demonstrating the ability to align technical implementation with educational objectives.
Iterative Feedback Loops: Maintained clear communication with clients to ensure the final product met their expectations, refining designs based on feedback to create an optimal user experience.
Balancing Goals: Struck a balance between making games enjoyable and keeping the focus on learning outcomes, achieving client satisfaction by delivering solutions that fulfilled both educational and entertainment requirements.
Dynamic Design Solutions: Tackled technical challenges such as creating precise colliders for wire-cutting mechanics and developing reusable scripts to streamline game resets and progression.
System Scalability: Designed reusable systems, such as randomized board setups and adjustable timers, ensuring that gameplay mechanics remained dynamic and challenging over multiple rounds.
Immersive Learning: Leveraged VR mechanics to create intuitive and interactive games, such as the wire-cutting and connection board minigames, that enhanced user learning while keeping them engaged.
User-Centric Approach: Focused on making games accessible and enjoyable for players of varying skill levels by integrating familiar mechanics (e.g., matching, timed tasks) while subtly teaching VR interactions.
Adaptability: Gained experience in adapting game mechanics and visual designs to technical constraints, such as simplifying lighting effects while maintaining clarity and appeal.
Time Management: Delivered a multi-faceted project involving six minigames, each with unique mechanics, on schedule by prioritizing tasks and collaborating effectively with clients.
Scalable Creativity: Developed systems and workflows that balanced innovation with practical implementation, ensuring they could be applied to future projects with minimal modifications.