Quicker iteration during development
When developing multiplayer experiences you will need to run multiple instances of your game in order to test properly. You also need to make sure these instances can be restarted quickly, so you can iterate quickly.
coherence does not have a built-in solution for multiclient testing, but there are several options available to you, each with their own benefits and drawbacks.
ParrelSync is an open-source project which allows you to have multiple Editors open which share Assets and ProjectSettings using Symbolic links.
Benefits
Short iteration times.
Easily debuggable instances.
Drawbacks
Requires you to have multiple Editors open.
Caveats
All instances of the game must have identical schemas, which are NOT shared using ParrelSync. That means you need to bake on all open Editors. Setting Auto Bake on Enter Play Mode to true in coherence Settings will alleviate this issue.
EditorPrefs are not consistently shared between Editors.
First, install the ParrelSync package as described in the Installation Instructions.
Open ParrelSync -> Clones Manager. Create a new clone, and open it.
Continue development in the original Editor.
When you need to test, do the following for all open Editors: Bake, press play. Alternatively you can set Auto Bake on Enter Play Mode to true.
The easiest method is to simply create a new build each time you want to test anything. You can launch any number of instances of that build, and have an instance running in the Editor as well.
Benefits
Easy to distribute amongst team members.
Well-understood workflow.
Drawbacks
Long iteration time as you need to continuously make builds.
Harder to debug the executables.
Caveats
All instances of the game must have identical schemas, so remember to bake before building the executable.
Unity has an experimental package called Multiplayer Play Mode (MPPM) available for 2023.1. As this is currently experimental, we do not officially recommend it - but it does show some promise and should be mentioned. This package allows a single Editor to run several instances of a game.
Benefits
Short iteration times.
No issues with schema incompatibility.
Drawbacks
Experimental.
Now we can build the project and try out network replication locally.
This example will show you how to launch a local Replication Server and connect multiple instances.
You can run a local Replication Server from the coherence menu:
This will open a new terminal window with the Replication Server and a World created in it.
As with most features found in the menu, you can find local replication server functionality in the Coherence Hub as well. Open the Servers tab and run a Room or a World Replication Server.
Now it's time to make a standalone build and test network replication.
#protip: Go to Project Settings, Player and change the Fullscreen Mode to Windowed and enable Resizable Window. This will make it much easier to observe standalone builds side-by-side when testing networking.
Note that for this sample we are running a World on a server, so make sure that Connect Dialog Selector in your Coherence Sample UI object on scene is set to Worlds as well.
Open the Build Settings window (File > Build Settings). Click on Add Open Scenes to add the current scene to the build. Click Build and Run.
Select a folder (e.g. Builds) and click OK.
When the build is done, start another instance of the executable (or run the project in the Game Window in Unity).
Click Connect on both clients. Now try focusing one and using WASD keys. You will see the box move on the other side as well.
Congratulations, you've made your first coherence replicated experience. But this is only the beginning. Keep reading to take advantage of more advanced coherence features.
If you want to connect to the local Replication Server from another local device (such as another PC, Mac, Mobile or VR device), you can find your IPv4 address and use that as your server address in the Connect dialog. These devices need to be connected to the same network.
You can find your IPv4 address by going to your command line tool and type ipconfig
. Remember to include the port number, for example 192.168.1.185:32001
.
Make sure your firewall allows remote connections to connect to the Replication Server from other devices on your network.