Inspiration
We really wanted to test our skills in VR Development. One of us had prior work experience working with Meta's SDK while the other had done Research Assistant work with VR involving Meta's SDK. We were both intrigued in trying to put our limited knowledge to the test. So being that we both love escape rooms, we wanted to create one, while also integrating multiplayer using Photon Fusion 2. We also wanted to give a twist to the typical escape room experience by involving enemies that can cause the game to end.
What it does
We created a multiplayer VR Escape Room game that forces players to work together to solve puzzles all while fending off enemy ghosts that will attack the players and then hide behind cover. The ghosts will attack the players and then run off to cover. Once a ghost "kills" a player, the game is over. Currently, our one puzzle involves finding 3 coins to place on a desk in order to win.
How we built it
The game was built using the Unity game engine as well as the C# coding language. We used the Photon Fusion 2 SDK in order to integrate Multiplayer into our game. We also used free Unity Assets from the Unity store. The main sections of the game was the multiplayer, syncing interaction across objects, enemies, puzzles and Photon Voice integration. To begin, the multiplayer, as mentioned before used Photon's SDK. We implemented, joining and creating lobbies by referencing various tutorials, documentation and samples given by Photon. Moving on, syncing integration was a tedious task, as we will talk about later. To perform appropriate syncing, we used photon's premade networking scripts and objects, such as network transform, network rigidbody3D, network Objects. The enemies are network objects to allow for seamless tracking on both the host and clients. Each enemy is a NavMesh Agent, meaning they have pre-determined paths to avoid static objects and track players. They use a state-machine to move between states. Our puzzles were limited as much of our time was dedicated to correcting interaction and various aspects of player syncing and multiplayer. Currently, our puzzle objects are from the " VR Beginner: The Escape Room " package provided by Unity. Finally, our proximity chat, is established using Photon's Voice SDK.
Challenges we ran into
We ran into many challenges, I mean MANY haha. However, this did not stop us.
Firstly, our biggest challenge all throughout the Hackathon was attempting to integrate Meta's Interaction SDK with syncing network objects from Photon Fusion in order for both the client and host to see objects being updated in real time. After tremendous efforts we found that the best method was to entirely use Photon's network scripts and objects for all elements that involved syncing them over a network. While we used Meta's Interaction SDK for local interaction, for example menu browsing.
Furthermore, another large challenge was learning about managing a session through a host/client server. There are many in's and out's that one needs to pay close attention in order to properly manage a server. For example, one challenge was deciphering input authority vs state authority and when the proper time to use either was.
Accomplishments that we're proud of
We are extremely proud to have a working final product, many hackathons unfortunately finish with few participants submitting a product and hence we are happy to be one of those few. After the amount of challenges we had handling networked interactions, we are estatic to be able to demonstrate a working prototype. Also, of course, we are thrilled to have multiplayer working, and being able to handle up to 20 players worldwide.
What we learned
Through this process, we got to learn so much! From Multiplayer to the different capabilities of Meta's SDK. On the multiplayer side, we familiarized ourselves with Host/Client Server creation, player and object spawning and despawning, Voice chat, syncing objects on all connected players, player naming and updating UI elements across the server and much more. On Unity's side, we learned about creating smart enemies using finite-state-machines, aswell as path-finding using Navigation Meshes. And finally on Meta's side we gained knowledge about the capabilities of pass-through, the interaction SDK and the easy to use pre-made scripts that allow seamlessly integrating the Oculus into Unity.
What's next for Spooky Multiplayer Escape Room
Adding more puzzles, Creating a virtual room where players work together to solve puzzles and using the passthrough scene for players to get specific hints for solving the puzzles. Also incorporating more multiplayer elements, such as avatar tracking.
Log in or sign up for Devpost to join the conversation.