Scripting: Client vs Simulator
When scripting Simulators, we need mechanisms to tell them apart.
Am I a Simulator ?
Ask Coherence.SimulatorUtility.IsSimulator.
using Coherence;
using UnityEngine;
public class SimulatorClass : MonoBehaviour
{
    public void Awake()
    {
        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 Coherence;
using Coherence.Connection;
using Coherence.Toolkit;
using UnityEngine;
public class ConnectAsSimulator : MonoBehaviour
{
    void Start()
    {
        var endpoint = new EndpointData
        {
            region = EndpointData.LocalRegion,
            host = "127.0.0.1",
            port = 32001,
            schemaId = RuntimeSettings.instance.SchemaID,
        };
        var bridge = FindAnyObjectByType<CoherenceBridge>();
        bridge.Connect(endpoint, ConnectionType.Simulator);
    }
}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.

Connecting Simulators automatically to RS: AutoSimulatorConnection Component
coherence includes an auto-connect MonoBehaviour out of the box for Room- and World-based Simulators. The Component its called AutoSimulatorConnection.

When you add the Component, it will parse the connection data passed with Command-line arguments to connect to the given Replication Server automatically. This will also work for Simulators you upload to the coherence Cloud.
Was this helpful?

