Aaron Petrek
Game Developer
Summary
Project Specifications
-
Multiplayer shared space VR
-
Meta Quest 2
-
Developed in Unity 2019
-
Mirror Networking
Project Goals
-
Gain software development experience in game development industry
-
Learn about VR gameplay mechanics
Shared VR painting experience for location-based VR centers. Contract work for the GRID, a location-based VR center. Starting with Google’s open source Tilt Brush, I was tasked to create a multiplayer VR experience.
My contributions
-
Developed paint stroke replication system using Mirror Networking for multiplayer gameplay
-
Created model file format and developed system for saving collections of player paint strokes between game sessions
-
Developed first and third person spectator system for non-VR players, creating additional player and non-player interaction
Game Summary
The Mad Scientists at the GRID are at it again. This time, we’ve taken the award winning VR painting program from Google and transformed it into a must-see multiplayer experience. Work together with friends to create a mind bending, mystical playground or play a game of VR Pictionary with the ultimate drawing tool at your fingertips. — The GRID
Game
MetaBrush is built on top of Open Brush, an open source version of Tilt Brush created by Google. In addition to the features included in Open Brush, MetaBrush adds multiplayer gameplay. This allows for a collaborative experience built for location-based VR entertainment. In addition to players being able to create together, their experience is shared with others via a spectating system where friends and family can watch VR players from both a third and first person perspective.
Initial Release
For initial release to meet the minimum goal of the project I implemented the following requirements:
Development
Before starting development of adding multiplayer gameplay I first needed to get acquainted with the tech stack and large code base that makes up Open Brush.
Although Open Brush is cross platform, the Meta Quest 2 was the target platform for MetaBrush. Before working on MetaBrush all of my pervious experience was using SteamVR and the Valve Index. I figured out a development and testing pipeline using the Quest 2 that streamlined the development process.
MetaBrush uses Mirror Networking for its netcode. This was a networking library I was not familiar with, however, I found it very easy to use. Having experience creating multiplayer mechanics in Unreal, I found the learning curve for Mirror smooth.
Using the documentation available online and Open Brush's projects Github page, I was able to get a good understanding of how to add new features and the overall flow of the various commands and tools built into Open Brush. There were several multiplayer features I added to make MetaBrush a viable product for location-based VR entertainment. Development was performed in an iterative approach. The initial goal was to create a bare minimum product that could be used as a multiplayer experience for location-based VR, then add additional features to enhance the player experience.
Additional Features
After the initial multiplayer implementation was functional I added additional features. The two largest notable features were:
Replicate paint strokes
-
Replicate player's paint strokes to all other players in the same game session
-
When new players join a game session, populate their scene with all current strokes in that game session
Replicate player visuals
-
Create visuals to represent players from a third person perspective
-
Replicate player's headset and controller transforms to other players
Spectator Display
Spectator displays are non-VR versions of MetaBrush. This allows the game session to be viewed on non-VR devices. Each spectator application can view players from a third person or first person perspective.
Stroke Model Files
System for creating and saving a collection of strokes as a model to be used in separate game sessions. This file was independent from the sketch file that saves the entire scene and all strokes from all players. Players can choose these models from a database to populate their shared scene.
Project Reflection
MetaBrush was my first contractual assignment working on a game related project and was a great learning experience. I greatly enhanced my skill of quickly getting acquainted with a large code base and tech stack. The experience I gained from developing for the Quest 2 allowed me to complete additional VR projects. Compared to previous employment developing software I really enjoyed the faster pace of this project throughout its development life cycle.