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_SIMULATORpreprocessor define.--coherence-simulation-servercommand-line argument.
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 room and world based simulators. The root GameObject has AutoReconnect components attached to it.

Last updated
Was this helpful?

