Client vs. simulator logic
When scripting simulators, we need mechanisms to tell them apart.
Am I a simulator?
Ask Coherence.SimulatorUtility.IsSimulator
.
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.
COHERENCE_SIMULATOR
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.
You can supply additional parameters to a simulator that define its area of responsibility, e.g. a sector/quadrant to simulate entities in and take authority over entities wandering into it.
You can also build a special simulator for AI, physics, etc.
Server-side simulation
You can define who simulates the object in the CoherenceSync inspector.
Automatic simulator adoption of CoherenceSync objects is work in progress and will be available in one of the future releases of coherence.
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 the simulator is invoked with the --coherence-play-region
parameter, AutoReconnect will try to reconnect to the server located in that region.
If you need a different solution, take a look at its implementation use plug your own.
Last updated