A Simulation Server or a Simulator is a version of the Game Client without the graphics ("headless client") optimized and configured to perform a server-side simulation of the Game World. When we say something is simulated on the server, we mean it is simulated on one or several Simulators.
Simulators can also be independent from the game code. A Simulator could be a standalone application written in any language, including C#, Go or C++ , for instance. We will post more information about how to achieve this here in the future. For now, if you would like to create a Simulator outside of Unity, please contact our developer relations team.
A Simulator can have various uses, including:
Server-side simulation of game logic that cannot be tampered with
Offloading processing from Game Clients
Splitting up a large Game World with many Entities between them
Here are some examples of things a Simulator could be taking care of:
Running all the important game logic
Running NPC AI
Simulating the player character (by receiving only inputs from the Clients through Input Queues)
Although it is possible to upload many Simulator binaries with different versions of the coherence SDK and your game logic, currently our cloud services support associating one running Simulator per World or Room. This will be extended in the near future.
See Room Simulators and World Simulators.