A list of common terms and concepts used in coherence.
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.
The KV Database, also know as a key-value store, provides a simple persistence layer for the players. The KV Database matches a short key (identifier) to a specific value (data payload) held in a simple, unstructured database. There are no limits to the total number of key/value pairs as long as the total size stays under 256KB.
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.
Also known as CoherenceBridge. The Bridge 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 Bridge 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.
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:
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.
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.