A list of common terms and concepts used in coherence.
A coherence term for the process of generating network code for your GameObjects. See code generation.
A CoherenceSync representing a Client connected to the Replication Server. Required to send Client Messages.
The process of generating code specific to the game engine that takes care of network synchronization and other network-specific code. This is done using a CLI tool called Protocol Code Generator that takes the Schema file and generates code for various engines (e.g. C# for Unity).
The backend of the coherence Developer Portal.
CoherenceInput is a Component that enables a Simulator to take control of the simulation of another Client's objects based on the Client's inputs. Each object can only accept inputs from one specific Client, called the object’s Input Authority. You should use CoherenceInput when a) you want a centralized simulation of all inputs b) Clients have low processing power c) determinism is important for your project.
CoherenceSync is a component that should be attached to every networked GameObject. It may be your player, an NPC or an inanimate object such as a ball, a projectile or a banana. Anything that needs to be synchronized over the network and turned into an Entity.
The coherence software development kit plugin for Unity, allowing your Unity project to make use of coherence for multiplayer.
Allows for sending an instruction to an Entity that may be running on a different machine.'
Dashboard is the front-end of the coherence Developer Portal that is used for managing your coherence projects.
A common game optimization technique for saving resources spent on rendering or syncing GameObjects not in the immediate vicinity of the player/camera. Commonly, several LODs are applied in a gradual manner so the transitions seem smooth. In coherence, Archetypes let you group Components together and create distinct "levels of detail". Each such level must have a distance threshold, and a list of Components that should be present at that distance.
Used for filtering Entities that receive updates via CoherenceSync by distance and relevance, as an optimization measure (latency, compute). LiveQuery area is shaped like a box, and the distance is measured from middle to edges. Also, see TagQuery.
LODs data can be added to any Prefab with the CoherenceSync component. It contains a list of the various levels of detail (LODs) that this particular Prefab can have. See Level of Detail.
Also known as CoherenceMonoBridge. The MonoBridge is a system that makes sure every GameObject is linked to its networked representation. It essentially interfaces between the GameObject world and the coherence SDK code running "under the hood". When you place a GameObject in your scene, the MonoBridge detects it and makes sure all the synchronization can be done via the CoherenceSync component.
Multi-Room Simulators are Room Simulators which are able to simulate multiple Game Rooms at the same time.
The business entity that uses coherence for its project(s).
It is a separate application whose only job is to write the persitent objects to the disk. After say a crash the Persistance Client would read the file from the disk and send it to the Replication Server. The save frequency is set to 30 seconds by default.
Either a game project or other project, connected to an Organization.
A lean and performant server that keeps the state of the World and replicates it efficiently between various Simulators and Game Clients. The Replication Server usually runs in the coherence Cloud, but developers can start it locally from the command line or the Unity Editor.
Short-lived multiplayer environments for dozens of players. Perfect for quick session-based matches. See Worlds.
The Schema is a file that defines which data types in your project are synced over the network. Schema specifies all the relevant data to be communicated to the Replication Server like name, hitpoints, level, speed, etc. It has two primary uses:
As a basis for code generation, creating various structs and methods that can be used in your project to communicate with the Replication Server.
As a description for the Replication Server, telling it how the data in your project looks like – to receive, store, and send this data to its Clients.
The logic of your game running on the Server. Responsible for simulating a subset of the Game World (e.g. physics, collision detection, AI pathfinding). Connects to Replication Server through which the state gets replicated to Clients.
A string of text that uniquely identifies an uploaded Simulator, making it easy to differentiate between various World or Room Simulators during deployment. The Simulator slug should be descriptive for ease of use purposes, although coherence supports any string value.
State authority, when given to a Simulator or a Client, means they can change the state of Entities in the game. In server-authoritative games state authority is given to a Simulator for anti-tampering reasons, but for casual projects it can lie with Clients that create the Entities. However, coherence allows for flexibility as well - for example, state authority can be configured so it can be transferred to other Clients or Simulators, and reassigned continuously in the course of the game. Additionally, see Input Authority.
What the Replication Server is doing by determining the state of the game and then syncing it to all the connected Clients.
In addition to the LiveQuery, coherence also supports filtering objects by tag. This is useful when you have some special objects that should always be visible regardless of World position. Also, see LiveQuery.