Photon Pun
Photon is a real-time multiplayer game development framework that is fast, lean and flexible. Photon consists of a server and multiple client SDKs for major platforms.
Photon Unity Networking (PUN) is really easy to setup. Import PUN into a new project and the PUN Wizard will pop up. Alternatively it's in the menu: 'Window', 'Photon Unity Networking'. PUN Wizard Register for a new (free) Photon Cloud account by entering an email or copy and paste an existing AppId from the Dashboard. Jun 19, 2019 PUN makes it very easy to make a Prefab whose properties (Position, Rotation, etc.) have to be synced across the network during a multiplayer game using the Photon View Component. An important concept to understand about using PUN is that a Prefab that should get instantiated over the network has to be inside a folder named Resources.
Photon Unity Network (PUN) is our is our take on a Unity specific, high-level solution: Matchmaking, easy to use callbacks, components to synchronize GameObjects, Remote Procedure Calls (RPCs) and similar features provide a great start. Beyond that is a solid, extensive API for more advanced control.
Full source code is available, so you can scale this package to support any type of multiplayer game you come up with.
This package is compatible with the managed Photon Cloud service, which runs Photon Servers for you. A setup window registers you (for free) in less than a minute.
Most notable features:
- Dead-easy API
- Lots of demos and an extensive PUN Basics Tutorial
- Server available as hosted service (free for development) or as 'On Premise'
- Load-balanced! Scales across servers (with no extra effort)
- Outstanding performance of the Photon Server
- Dedicated servers. No NAT punch-through needed
- Offline mode: re-use your multiplayer code in singleplayer game modes
There is an Online Documentation, which is considered a manual for PUN. This might become your primary source for information.
This is the Reference Documentation for PUN. It summarizes the most important classes in the Public API module and explains each class, method and field individually. This is generated from the source of PUN and should be used to look up details on usage and parameters.

Aside from that, there are also Demos in the PUN package itself and a PUN Basics Tutorial online, which you should check out.
Import PUN into a new, empty project. Register via the pop up 'wizard' (ALT+P) to get you a free Photon Cloud subscription (saving an initial AppId for you). Now you're ready to run and dissect the Demos.
Make sure to open and code the PUN Basics Tutorial.
-->In this tutorial, you will prepare for creating a shared experience using Photon Unity Networking (PUN). You will learn how to create a PUN app, import PUN assets into your Unity project, and connect your Unity project to the PUN app.
Objectives
- Learn how to create a PUN app
- Learn how to find and import the PUN assets
- Learn how to connect your Unity project to the PUN app
Creating and preparing the Unity project
In this section, you will create a new Unity project and get it ready for MRTK development.
First, follow the Initializing your project and deploying your first application, excluding the Build your application to your device instructions, which includes the following steps:
- Creating the Unity project and give it a suitable name, for example, MRTK Tutorials
- Creating and configuring the scene and give the scene a suitable name, for example, MultiUserCapabilities
Then follow the Changing the Spatial Awareness Display Option instructions to:
- Change the MRTK configuration profile for to the DefaultHoloLens2ConfigurationProfile
- Change the spatial awareness mesh display options to Occlusion.
Enabling additional capabilities
In the Unity menu, select Edit > Project Settings... to open the Player Settings window, then locate the Player > Publishing Settings section:
In the Publishing Settings, scroll down to the Capabilities section and double-check that the InternetClient, Microphone, SpatialPerception, and GazeInput capabilities, which you enabled during the Configuring the Unity project step above, are enabled.
Then enable the following additional capabilities:
- InternetClientServer capability
- PrivateNetworkClientServer capability
Installing inbuilt Unity packages
In the Unity menu, select Window > Package Manager to open the Package Manager window, then select AR Foundation and click the Install button to install the package:
Note
You are installing the AR Foundation package because it is required by the Azure Spatial Anchors SDK you will import in the next section.
Importing the tutorial assets
Add AzurespatialAnchors SDK V2.7.1 into your unity project, to add the packages please follow this tutorial
Download and import the following Unity custom packages in the order they are listed:
After you have imported the tutorial assets your Project window should look similar to this:
Tip
For a reminder on how to import a Unity custom package, you can refer to the Importing the tutorial assets instructions.
Note
After importing the MultiUserCapabilities tutorial assets package, you will see several CS0246 errors in the Console window stating that the type or namespace is missing. This is expected and will be resolved in the next section when you import the PUN assets.
Importing the PUN assets

In the Unity menu, select Window > Asset Store to open the Asset Store window, search for and select PUN 2 - FREE from Exit Games, click the Download button to download the asset package to your Unity account.
When the download is complete, click the Import button to open the Import Unity Package window:
In the Import Unity Package window, click the All button to ensure all the assets are selected, then click the Import button to import the assets:
Once Unity has completed the import process, the Pun Wizard window will appear with the PUN Setup menu loaded, you can ignore or close this window for now:
Creating the PUN application
In this section, you will create a Photon account, if you don't already have one, and create a new PUN app.
Navigate to the Photon dashboard and sign in if you already have an account you want to use, otherwise, click the Create One link and follow the instructions to register a new account:
Once signed in, click the Create a New App button:
On the Create a New Application page, enter the following values:
- For Photon Type, select PUN
- For Name, enter a suitable name, for example, MRTK Tutorials
- For Description, optionally enter a suitable description
- For Url, leave the field empty
Then click the Create button to create the new app:
Once Photon has finished the creation process, the new PUN app will appear on your dashboard:

Connecting the Unity project to the PUN application
In this section, you will connect your Unity project to the PUN app you created in the previous section.
On the Photon dashboard, click the App ID field to reveal the app ID, then copy it to your clipboard:
In the Unity menu, select Window > Photon Unity Networking > PUN Wizard to open the Pun Wizard window, click the Setup Project button to open the PUN Setup menu, and configure it as follows:
- In the AppId or Email field, paste the PUN app ID you copied in the previous step
Then click the Setup Project button to apply the app ID:
Once Unity has finished the PUN setup process, the PUN Setup menu will display the message Done! and automatically select the PhotonServerSettings asset in the Project window, so its properties are displayed in the Inspector window:
Photon Documentation
Congratulations
Photon Pun Code
You have successfully created a PUN app and connected it to your Unity project. Your next step is to allow connections with other users so that multiple users can see each other.
