Multiplayer Information
The 8.1.0 Blocksmith Builder update includes several major improvements to the multiplayer system. Each section explains a multiplayer setting and how to use it to improve syncing or performance. Also explore the test experience that shows each option and how to use it in the Web Builder!
Multiplayer Processing Options
Multiplayer Terms
Scene Objects
- Scene objects are created for every player at the start of a multiplayer scene. Changes on those objects can happen either for every player, such as synced looped animations. Or they can happen locally for specific player, using non-synced events or physics. To have events and physics changes occur for all players, the object state needs to be synced with the other players through communication calls including the state changes.
Host
- One of the players (typically the first to join a multiplayer match) has a special technical role: they gain the host role, where the system takes on additional multiplayer communication and syncing tasks through them.
Players
- Players, including character models, position changes, and interactions, are created for each multiplayer user. Each player sees remote instances of the other players moving around in the scene, and can interact with them and each other. In order to do that, each player’s state and position is sent to their remote counterparts through communication calls.
Spawned Objects
- Spawned objects are created for one of the players e.g. when the player shoots a bullet or triggers an effect. From that communication calls are sent to the other players with the command to create a remote counterpart object for each player. In this case the original spawn normally controls the remote spawns at the other players through communication calls.
Multiplayer Event Triggers
Interaction Triggers
Interaction triggers are generally triggered for one player only (by that player) while system and custom triggers are triggered for each player and the creator can choose with the options below where to process the event.
- For example: On InteractionStart/End, OnLookAtStart/End, On Received Input
System Triggers
- For example: On Awake, On Update, On Periodic Interval
Custom Triggers
- For example: On Hit Target, On RaycastHit, On TriggerEnter/Exit, On Animation Finish, On Sound Finish
General Notes
-
Using “Each Client” as event processing option and/or unchecking multiplayer sync on an object highly reduces communication traffic, so use that in cases where performance is more important than accuracy of object states and positions.
-
Automatic should handle certain cases better as in the past, like the lag when a player spawned a spawner which spawns effects.
-
When turning off sync, automatic uses the "each client" workflow automatically.
-
The option to process on the host/master comes into play for quiz games for example, where multiple players click on a correct value at the same time and we need to track and process the second click after the first click (to get the correct sum, etc.).
-
The option to process on each client can be used for a player to always move the camera towards the player position which should run on each client separately.