PUN 2 Matchmaking Add-on
This download includes QuickStart, DelayStart, and Custom Matchmaking add-ons for the Photon PUN 2 plugin.
For this lesson, I will teach you how to create a delay start matchmaking system using the Photon 2 plugin in Unity. In the last video, I showed you how to create a quick start matchmaking system which is where the players can click one button that will connect them to a photon room and load them into the multiplayer scene. This is mostly used in games where the players can join an ongoing game. A delay start system is where the players can click one button which will connect them to a photon room but instead of loading the multiplayer scene it will instead load a waiting room scene. Once the minimum players have joined a timer will start and once the timer runs out all the players in the room will be loaded into the multiplayer scene at the exact same time. This is a better system for games that need to be played from beginning to ends such as Rainbow Six Siege, PUBG, and Fortnite.
Menu Scene in Unity
To get started we will first create the menu scene in Unity. This scene needs to have three buttons. one for showing before we have connected to the Photon servers, one for starting the search for a room, and the last for canceling the search. Once you have created the menu scene we will then code two scripts for this scene. One will be the lobby controller and the other will be the room controller.
Coding the Delay Start Matchmaking in C#
In the lobby controller script, we need to automatically sync the scene loading. we will need to create a function to pair to the start button. This function will first try to join an existing room. If it fails to join we will then try to create our own room. If we fail to create a room we will then just keep trying to create a room. We will also need to create a function for our cancel button. In our room controller script, we will need to load the waiting room scene when the player successfully joins a photon room.
After this save your scripts and go back to Unity. Inside Unity and the menu scene, you will need to add these script to the scene. You will then need to set the variables of these scripts and pair the public functions to the different buttons in the scene.
Waiting Room Scene in Unity
The next thing we need to do is create the waiting room scene. This scene needs to have a cancel button, a player count text display, and a timer text display. Once you have created this scene we will then need to create one script for this scene which will be our waiting room controller.
Coding the Countdown and Waiting Room
In this script, we will first update the displays for the player count and the timer. We will then need to update the displays whenever a new player joins the room or when a player leaves the room. We will then need to count down the timer in the update function if there are enough players in the scene. if the timer gets down to zero then we will load the master client into the multiplayer scene which because of automatically syncing the scenes will in turn load all the other players into the same scene.
Once you have all this you can then save all your scripts and go back to Unity. Inside Unity, you need to add this script to your waiting room scene. You will then want to set the variables in the inspector and pair the function to the cancel button.
After this, the last thing you need to have is your multiplayer scene which we created in our quick start tutorial. If you followed along with this tutorial you should now have a working delay start matchmaking system for your multiplayer games.