Skip to main content
Version: 2026.3

Networking Nodes

These nodes allow to interact with the networking and multiplayer systems, including object synchronization.

Get Nodes

Get current network time Node

🔍 Reflectis > Get > Reflectis Networking: Get current network time

This Node retrieves the current network time synchronized across all clients.

  • ⬆️ Output:
    • NetworkedTime (double), the current network time as a double value.

Get Current Shard Open State Node

🔍 Reflectis > Get > Reflectis Networking: Get Current Shard Open State

This Node retrieves whether the current shard is open for new players to join.

  • ⬆️ Output:
    • Is Open (bool), a boolean indicating whether the shard is open.

Get Local Player ID Node

🔍 Reflectis > Get > Reflectis Networking: Get Local Player ID

This Node retrieves the session ID of the local player.

  • ⬆️ Output:
    • PlayerId (string), the session identifier of the local player.

Flow Nodes

Set Current Shard Open State Node

🔍 Reflectis > Flow > Reflectis Networking: Set Current Shard Open State

This Node sets whether the current shard is open or closed for new players.

  • ⬇️ Input:
    • Open (bool), a boolean that determines whether the shard should be open (true) or closed (false) (default: false).

IsMaster Node

🔍 Reflectis > Flow > Reflectis Network: IsMaster

This Node acts as a switch that differentiates execution based on whether the local player is the master client or not.

The control output flows are:

  • True, executed if the local player is the master client
  • False, executed if the local player is not the master client.

Object Synchronization

To synchronize variables in multiplayer, we need to proceed with these steps in the graph editor:

  • Click "Edit Graph" on the "Script Machine" component to open the Graph editor and start editing the nodes on the graph to obtain the desired behavior

    VisualScripting

  • When embedded to the object and placed on the scene, the visual scripted behavior will start as "Not Networked"

  • To be able to network the variable of the object to all the users, the Synced Object is needed. Without it the interactions made with the graph editor will be visible only to the client and not the rest of the server.

    VisualScripting

It's important that the parameters "Automatic Setup" and "Is Networked" are ticked, and a new ID must be assigned each time it's assigned to a different object (please refer to section Initialization ID).

The "Ownership Request Type" parameter determines what type of request will be made on that object:

  • "Request" - where you request ownership of the object
  • "Takeover" - where you take ownership regardless, automatically.
  • "Fixed" - where the ownership is predetermined and cannot be changed.

Moreover, you have to tick the "Sync Transform" parameter, if it's necessary for the position, rotation and scale information of the object, to which the script is attached, to be shared with the server and synchronized with the same object, displayed by other users.

How to add variables

When at least one variable is added to the variables list, the "Add Synced Variables" button will become available. When pressed, the variables present in the list will appear under the "List of variables" field. From that list it's possible to assign the 'Synced' and 'Not Synced' values to the variables, depending on the necessity.

Variables can be also created from the "Variables" field in the inspector. You need to click on the "+" button to generate a new variable and then assign a name, type and value to each one.

VisualScripting

There are 6 types of variables that can be synchronized:

  • "Int" is an integer number
  • "Float" is a decimal number
  • "Bool" is true of false
  • "String" is a text
  • "Vector3" is a vector X, Y and Z
  • "Vector2" is a vector X and Y.

VisualScripting

Warning

It's important that after adding the variables, you press on the "Not synced" button next to each individual variable to change it to "synced", if you want to synchronize it, so that it's seen updated in multiplayer.

Ownership Flow Nodes

Is Owned Locally Node

🔍 Reflectis > Flow > Reflectis Synced Object: Is Owned Locally

This Node checks if the local player owns the specified synced object. Executes the True flow if owned locally, otherwise the False flow.

  • ⬇️ Input:
    • SyncedObject (SyncedObject), the synced object to check. If left empty, it defaults to the component on the same GameObject.

The control output flows are:

  • True, executed if the local player owns the object
  • False, executed if the local player does not own the object.

Ownership

Try Get Ownership Node

🔍 Reflectis > Flow > Reflectis Synced Object: Try Get Ownership

This Node requests ownership of the specified synced object, based on the Ownership Request Type configured on the SyncedObject component.

  • ⬇️ Input:
    • SyncedObject (SyncedObject), the synced object to request ownership on. If left empty, it defaults to the component on the same GameObject.

Ownership

Release Ownership Node

🔍 Reflectis > Flow > Reflectis Synced Object: Release Ownership

This Node releases ownership of the specified synced object. If the local player is not the current owner, nothing will happen.

  • ⬇️ Input:
    • SyncedObject (SyncedObject), the synced object to release ownership on. If left empty, it defaults to the component on the same GameObject.

Ownership

Event Nodes

On Other Player Entered

🔍 Events > Reflectis > Reflectis Networking: On Other Player Entered

This event triggers when another player enters the current shard.

  • ⬆️ Output:
    • UserId (int), the identification number of the player that entered
    • SessionId (string), the session identifier of the player that entered.

On Other Player Left

🔍 Events > Reflectis > Reflectis Networking: On Other Player Left

This event triggers when another player leaves the current shard.

  • ⬆️ Output:
    • UserId (int), the identification number of the player that left
    • SessionId (string), the session identifier of the player that left.

Synced Object Events

In order for the synchronized variables to actually be displayed by other users, it's necessary to use events in the "Synced Object" script, as explained above.

On Owner Changed

🔍 Events > Reflectis > Reflectis Synced Object: On Owner Changed

Is called when the user becomes the owner of the object. In the example below, the event is only called when the ownership request is successful, in which case it can execute the "Set Local Position" instruction on the object.

  • ⬇️ Input:
    • SyncedObjectRef (SyncedObject), reference to the Synced Object to monitor. If left empty, it defaults to the component on the same GameObject.

SyncedObjects

On Owner Request Failed

🔍 Events > Reflectis > Reflectis Synced Object: On Owner Request Failed

Is called when the ownership request fails, due to external problems, such as at the server or roles.

  • ⬇️ Input:
    • SyncedObjectRef (SyncedObject), reference to the Synced Object to monitor. If left empty, it defaults to the component on the same GameObject.

SyncedObjects

On Owner Lost

🔍 Events > Reflectis > Reflectis Synced Object: On Owner Lost

Is called when the user loses ownership, because it has been assigned to another user.

  • ⬇️ Input:
    • SyncedObjectRef (SyncedObject), reference to the Synced Object to monitor. If left empty, it defaults to the component on the same GameObject.

SyncedObjects

Synced Variable Events

Regarding synced variables, there are 3 event nodes which can be called in the node graph:

On Synced Variable Changed

🔍 Events > Reflectis > Reflectis Synced Variables: On Synced Variable Changed

Is called when the value of the variable, with the same name written in "Variable Name", has been changed. In addition, the variable will be synchronized only because of this event, otherwise the change will occur only locally.

Note

If a change to a variable is called, but the value remains the same, then this event will not be called.

  • ⬇️ Input:

    • VariableName (string), the name of the synced variable to monitor.
  • ⬆️ Output:

    • Value (object), the new value of the synced variable.

VisualScripting

On Synced Variable Changed Init

🔍 Events > Reflectis > Reflectis Synced Variables: On Synced Variable Changed Init

Is called at scene initialization, only if actual changes of the recalled variable in "Variable Name" have occurred. This node is called only if the user isn't the creator of the room and enters later, and is used to call back any instructions executed at the time of the variable change. (e.g. starting a sound or changing a score).

  • ⬇️ Input:

    • VariableName (string), the name of the synced variable to monitor.
  • ⬆️ Output:

    • Value (object), the value of the synced variable at the time of the last change.

VisualScripting

On Synced Variable Init

🔍 Events > Reflectis > Reflectis Synced Variables: On Synced Variable Init

Is called at scene initialization for each user entering the room. This node shows the value of the variable specified in the variable name field when entering the room, and shows if that variable has been changed at least once from the starting values in the scene.

  • ⬇️ Input:

    • VariableName (string), the name of the synced variable to monitor.
  • ⬆️ Output:

    • Value (object), the current value of the synced variable upon entering the room
    • IsChanged (bool), whether the variable has been changed at least once from its initial value.

VisualScripting