Client vs. simulator logic
When scripting simulators, we need mechanisms to tell them apart.
Am I a simulator?
Ask Coherence.SimulatorUtility.IsSimulator.
using Coherence;
if (SimulatorUtility.IsSimulator)
{
// I'm a simulator!
}There are a few ways you can tell coherence if the instance should behave as a simulator:
Specifying a
ConnectionTypewhen connecting viaCoherence.Network.Connect.COHERENCE_SIMULATORpreprocessor define.--coherence-simulation-servercommand-line argument.Toggling on Simulator in the sample connection dialog.
Connect and ConnectionType
Connect and ConnectionTypeThe Connect method on Coherence.Network accepts a ConnectionType parameter.
using Network = Coherence.Network;
using ConnectionType =Coherence.Connection.ConnectionType;
public class ConnectAsSimulator : MonoBehaviour
{
void Start()
{
if (Network.Connect("127.0.0.1:32001", ConnectionType.Simulator))
{
// Connection successful
}
else
{
// Connection failed
}
}
}COHERENCE_SIMULATOR
#if COHERENCE_SIMULATOR
// simulator-specific code
#endifWhenever the project compiles with the COHERENCE_SIMULATOR preprocessor define, coherence understands that the game will act as a simulator.

Command-line argument
Launching the game with --coherence-simulation-server will let coherence know that the loaded instance must act as a simulator.
Server-side simulation
You can define who simulates the object in the CoherenceSync inspector.

Auto-reconnect
The sample UI provided includes auto-reconnect behaviour out of the box for simulators. The root GameObject has an AutoReconnect component attached to it.

If you need a different solution, take a look at its implementation use plug your own.
Last updated
Was this helpful?

