Basic Normcore Tutorial
Mandy He, March 2022 (Edited May 2022)
This is a tutorial to insert simple multiplayer functionality into your VR game!
Learn more about Normcore at their website or here.
This tutorial essentially follows and expands on this 8 minute youtube video by Jack - Unity Blockchain and XR Tutorials which I highly suggest you watch and follow first and look back here if you run into any issues or questions.
There are plenty of tutorials around that can help you get a VR game set up in Unity using the XR Interaction Toolkit, so this tutorial will mainly focus on integrating Normcore and assumes you have already set up your project with the XR Interaction Toolkit: (Note: 0:00-3:52 of the youtube tutorial linked above gets you set up with the XR Interaction Toolkit in Unity.)
(Download a custom Unity Template for VR that will save you from having to set up XR Interaction Toolkit manually each time)
EDIT: Note that Normcore also works with OVR. See section below for difference bewteen OVR and XR Interaction Toolkit
Software: Unity 2019+, XR Interaction Toolkit, Normcore
Hardware: Quest 2 Headset, Windows or Mac + headset charging cable
Step 1: Create a Normcore account
Head to their website and click "get started" to sign up.
Once you have signed up you should be brought to the page pictured below. Click on Download.
Then come back to this page and click on Create an application.
Note: In the tutorial, he downloads it into his file system, but I just clicked on a pop up that opened Unity's Package Manger. If your Package Manager pops up, click download in the bottom-right. Then, with the project you want to import Normcore into open, go to Window->Package Manager and then in the top toolbar-esque thing, go to "Packages: My Assets" and then click import in the bottom right corner.
Once imported, go to your assets and click on Normal > Examples >VR Player.
Then, drag the Realtime + VR player prefab into your Hierarchy and copy the app key into the correct spot.
Next, depending on if you are using OVR or XR Toolkit, drag in the controls/objects to their respective places from the hierarchy window.
XR Toolkit Setup
Now your are finished and ready to build your project!
Mac users need to connect their headset to their Mac with the headset's charging cable and build to their Oculus with a .apk.
Note: In the headset, if you can see two black mittens in place of your hands, you have succeeded.
How do I invite other people into my game?
If they have the .apk built onto their headset, they just need to enter the game.
In other words, as long as you have put in the Normcore project ID into the appropriate place, people who enter the game will automatically be in a multiplayer game.
Why can't I see my avatar?
Try rebuilding and/or exiting and re-entering your project/game. I didn't see the mittens at first either.
Why is multiplayer not working?
If you have taken off your headset for some time and then put the headset back on, sometimes you are disconnected from the server. Exit and re-enter the game. Try rebuilding onto your headset as well.
Should I use Photon Pun or Normcore?
This was definitely a question that I had too. On one hand, Photon Pun has quite a bit more documentation and tutorials to get you started. However, I chose Normcore in the end because it genuinely was multiplayer and collaboration straight out of the box. It can genuinely take you 8 minutes to get a multiplayer VR chat set up using Normcore since it comes with audio and a default avatar that matches your voice-to-mouth movements. You can also have the audio feature with Photon Pun voice add-on, but it is an add-on rather than built-in like Normcore. If your app could be used between two remote users or if you need simple multiplayer functionality fast, definitely try Normcore.