# Tips and recommendations

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 multi-client testing, but there are several options available to you, each with their own benefits and drawbacks.

## Building an executable

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.

## ParrelSync

[ParrelSync](https://github.com/VeriorPies/ParrelSync) is an open-source project which allows you to open multiple Unity Editor instances, all pointing to the same Unity project (using Symbolic links).

**Benefits**

* Short iteration times.
* Easy debug because it's possible to inspect GameObjects in multiple instances.

**Drawbacks**

* Requires you to have multiple Unity Editors open.

**Caveats**

* EditorPrefs are not consistently shared between Editors.
* All instances of the game must have identical schemas, so you might want to ensure you are using *Assets* [baking mode](https://docs.coherence.io/1.1/coherence-sdk-for-unity/baking-and-code-generation#bake-modes) rather than *Source Generator* so the netcode is synced across editors automatically.\
  If you do intend to use *Source Generator*, you need to remember to bake in each open Unity Editor. In that case, it might make sense to enable **Bake Automatically** *On Enter Play Mode* in coherence settings. You can change both of these from the *coherence Hub > Baking*, or in *Project Settings > coherence*.

<figure><img src="https://976449006-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F4xmLLczbgaGVeoF6vews%2Fuploads%2FVjsPdEFxm2oBE4wbxRQw%2FAssetBaking.png?alt=media&#x26;token=833e237e-1957-4772-8dc2-b4476cb5b338" alt="" width="334"><figcaption></figcaption></figure>

### Best practices

* First, install the ParrelSync package as described in the [Installation Instructions](https://github.com/VeriorPies/ParrelSync#installation).
* Open *ParrelSync* -> *Clones Manager*. Create a new clone, and open it.
* Continue development in the original Unity Editor. Never edit files in the clone Editors.
* When you need to test, ensure the netcode is [baked](https://docs.coherence.io/1.1/coherence-sdk-for-unity/baking-and-code-generation) for all editors.

## Multiplayer Play Mode

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.

[MPPM Info](https://docs-multiplayer.unity3d.com/tools/current/mppm)

**Benefits**

* Short iteration times.
* No issues with schema incompatibility.

**Drawbacks**

* Experimental.

***
