Work in progress

Godot documentation is being updated to reflect the latest changes in version 4.0. Some documentation pages may still state outdated information. This banner will tell you if you're reading one of such pages.

The contents of this page are up to date. If you can still find outdated information, please open an issue.

MultiplayerSynchronizer

Inherits: Node < Object

Synchronizes properties from the multiplayer authority to the remote peers.

Description

By default, MultiplayerSynchronizer synchronizes configured properties to all peers.

Visibility can be handled directly with set_visibility_for or as-needed with add_visibility_filter and update_visibility.

MultiplayerSpawners will handle nodes according to visibility of synchronizers as long as the node at root_path was spawned by one.

Internally, MultiplayerSynchronizer uses MultiplayerAPI.object_configuration_add to notify synchronization start passing the Node at root_path as the object and itself as the configuration, and uses MultiplayerAPI.object_configuration_remove to notify synchronization end in a similar way.

Properties

bool

public_visibility

true

SceneReplicationConfig

replication_config

float

replication_interval

0.0

NodePath

root_path

NodePath("..")

VisibilityUpdateMode

visibility_update_mode

0

Methods

void

add_visibility_filter ( Callable filter )

bool

get_visibility_for ( int peer ) const

void

remove_visibility_filter ( Callable filter )

void

set_visibility_for ( int peer, bool visible )

void

update_visibility ( int for_peer=0 )


Signals

synchronized ( )

Emitted when a new synchronization state is received by this synchronizer after the variables have been updated.


visibility_changed ( int for_peer )

Emitted when visibility of for_peer is updated. See update_visibility.


Enumerations

enum VisibilityUpdateMode:

VisibilityUpdateMode VISIBILITY_PROCESS_IDLE = 0

Visibility filters are updated every idle process frame.

VisibilityUpdateMode VISIBILITY_PROCESS_PHYSICS = 1

Visibility filters are updated every physics process frame.

VisibilityUpdateMode VISIBILITY_PROCESS_NONE = 2

Visibility filters are not updated automatically, and must be updated manually by calling update_visibility.


Property Descriptions

bool public_visibility = true

  • void set_visibility_public ( bool value )

  • bool is_visibility_public ( )

Whether synchronization should be visible to all peers by default. See set_visibility_for and add_visibility_filter for ways of configuring fine-grained visibility options.


SceneReplicationConfig replication_config

Resource containing which properties to synchronize.


float replication_interval = 0.0

  • void set_replication_interval ( float value )

  • float get_replication_interval ( )

Time interval between synchronizes. When set to 0.0 (the default), synchronizes happen every network process frame.


NodePath root_path = NodePath("..")

Node path that replicated properties are relative to.

If root_path was spawned by a MultiplayerSpawner, the node will be also be spawned and despawned based on this synchronizer visibility options.


VisibilityUpdateMode visibility_update_mode = 0

Specifies when visibility filters are updated (see VisibilityUpdateMode for options).


Method Descriptions

void add_visibility_filter ( Callable filter )

Adds a peer visibility filter for this synchronizer.

filter should take a peer ID int and return a bool.


bool get_visibility_for ( int peer ) const

Queries the current visibility for peer peer.


void remove_visibility_filter ( Callable filter )

Removes a peer visibility filter from this synchronizer.


void set_visibility_for ( int peer, bool visible )

Sets the visibility of peer to visible. If peer is 0, the value of public_visibility will be updated instead.


void update_visibility ( int for_peer=0 )

Updates the visibility of peer according to visibility filters. If peer is 0 (the default), all peers' visibilties are updated.