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 two ways you can tell coherence if the game build should behave as a simulator:
COHERENCE_SIMULATOR
preprocessor define.--coherence-simulation-server
command-line argument.
Connect
and ConnectionType
Connect
and ConnectionType
The 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
#endif
Whenever 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 room and world based simulators. The root GameObject has AutoReconnect components attached to it.

Last updated
Was this helpful?