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
ConnectionType
when connecting viaCoherence.Network.Connect
.COHERENCE_SIMULATOR
preprocessor define.--coherence-simulation-server
command-line argument.Toggling on Simulator in the sample connection dialog.
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 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?