MultiplayerAPI

High-level multiplayer API.

This class implements most of the logic behind the high-level multiplayer API. See also NetworkedMultiplayerPeer. By default, SceneTree has a reference to this class that is used to provide multiplayer capabilities (i.e. RPC/RSET) across the whole scene. It is possible to override the MultiplayerAPI instance used by specific Nodes by setting the Node.customMultiplayer property, effectively allowing to run both client and server in the same scene. Note: The high-level multiplayer API protocol is an implementation detail and isn't meant to be used by non-Godot servers. It may change without notice.

Members

Aliases

BaseClasses
alias BaseClasses = AliasSeq!(typeof(_GODOT_base), typeof(_GODOT_base).BaseClasses)
Undocumented in source.

Enums

Constants
enum Constants
RPCMode
enum RPCMode

Functions

_addPeer
void _addPeer(long id)
_connectedToServer
void _connectedToServer()
_connectionFailed
void _connectionFailed()
_delPeer
void _delPeer(long id)
_serverDisconnected
void _serverDisconnected()
clear
void clear()

Clears the current MultiplayerAPI network state (you shouldn't call this unless you know what you are doing).

getNetworkConnectedPeers
PoolIntArray getNetworkConnectedPeers()

Returns the peer IDs of all connected peers of this MultiplayerAPI's networkPeer.

getNetworkPeer
Ref!NetworkedMultiplayerPeer getNetworkPeer()
getNetworkUniqueId
long getNetworkUniqueId()

Returns the unique peer ID of this MultiplayerAPI's networkPeer.

getRootNode
Node getRootNode()
getRpcSenderId
long getRpcSenderId()

Returns the sender's peer ID for the RPC currently being executed. Note: If not inside an RPC this method will return 0.

hasNetworkPeer
bool hasNetworkPeer()

Returns true if there is a networkPeer set.

isNetworkServer
bool isNetworkServer()

Returns true if this MultiplayerAPI's networkPeer is in server mode (listening for connections).

isObjectDecodingAllowed
bool isObjectDecodingAllowed()
isRefusingNewNetworkConnections
bool isRefusingNewNetworkConnections()
opAssign
typeof(null) opAssign(typeof(null) n)
opEquals
bool opEquals(MultiplayerAPI other)
opEquals
bool opEquals(typeof(null) n)
poll
void poll()

Method used for polling the MultiplayerAPI. You only need to worry about this if you are using Node.customMultiplayer override or you set SceneTree.multiplayerPoll to false. By default, SceneTree will poll its MultiplayerAPI for you. Note: This method results in RPCs and RSETs being called, so they will be executed in the same context of this function (e.g. _process, physics, Thread).

sendBytes
GodotError sendBytes(PoolByteArray bytes, long id, long mode)

Sends the given raw bytes to a specific peer identified by id (see NetworkedMultiplayerPeer.setTargetPeer). Default ID is 0, i.e. broadcast to all peers.

setAllowObjectDecoding
void setAllowObjectDecoding(bool enable)
setNetworkPeer
void setNetworkPeer(NetworkedMultiplayerPeer peer)
setRefuseNewNetworkConnections
void setRefuseNewNetworkConnections(bool refuse)
setRootNode
void setRootNode(Node node)
toHash
size_t toHash()

Mixins

__anonymous
mixin baseCasts
Undocumented in source.

Properties

allowObjectDecoding
bool allowObjectDecoding [@property getter]
bool allowObjectDecoding [@property setter]

If true (or if the networkPeer has PacketPeer.allowObjectDecoding set to true), the MultiplayerAPI will allow encoding and decoding of object during RPCs/RSETs. Warning: Deserialized objects can contain code which gets executed. Do not use this option if the serialized object comes from untrusted sources to avoid potential security threats such as remote code execution.

networkPeer
NetworkedMultiplayerPeer networkPeer [@property getter]
NetworkedMultiplayerPeer networkPeer [@property setter]

The peer object to handle the RPC system (effectively enabling networking when set). Depending on the peer itself, the MultiplayerAPI will become a network server (check with isNetworkServer) and will set root node's network mode to master, or it will become a regular peer with root node set to puppet. All child nodes are set to inherit the network mode by default. Handling of networking-related events (connection, disconnection, new clients) is done by connecting to MultiplayerAPI's signals.

refuseNewNetworkConnections
bool refuseNewNetworkConnections [@property getter]
bool refuseNewNetworkConnections [@property setter]

If true, the MultiplayerAPI's networkPeer refuses new incoming connections.

rootNode
Node rootNode [@property getter]
Node rootNode [@property setter]

The root node to use for RPCs. Instead of an absolute path, a relative path will be used to find the node upon which the RPC should be executed. This effectively allows to have different branches of the scene tree to be managed by different MultiplayerAPI, allowing for example to run both client and server in the same scene.

Static functions

_new
MultiplayerAPI _new()

Construct a new instance of MultiplayerAPI. Note: use memnew!MultiplayerAPI instead.

Static variables

_classBindingInitialized
bool _classBindingInitialized;
Undocumented in source.

Structs

GDNativeClassBinding
struct GDNativeClassBinding
Undocumented in source.

Unions

__anonymous
union __anonymous
Undocumented in source.

Variables

_GODOT_internal_name
enum string _GODOT_internal_name;
Undocumented in source.

Mixed In Members

From mixin baseCasts

as
inout(To) as()
Undocumented in source. Be warned that the author may not have intended to support it.
as
inout(To) as()
Undocumented in source. Be warned that the author may not have intended to support it.
as
inout(ToRef) as()
Undocumented in source. Be warned that the author may not have intended to support it.
opCast
template opCast(To)
Undocumented in source.
opCast
template opCast(To)
Undocumented in source.
opCast
template opCast(ToRef)
Undocumented in source.
opCast
void* opCast()
Undocumented in source. Be warned that the author may not have intended to support it.
opCast
godot_object opCast()
Undocumented in source. Be warned that the author may not have intended to support it.
opCast
bool opCast()
Undocumented in source. Be warned that the author may not have intended to support it.

Meta