MultiplayerAPI

Inherits: Reference < Object

API multijugador de alto nivel.

Descripción

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.custom_multiplayer 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.

Propiedades

bool

allow_object_decoding

false

NetworkedMultiplayerPeer

network_peer

bool

refuse_new_network_connections

false

Node

root_node

Métodos

void

clear ( )

PoolIntArray

get_network_connected_peers ( ) const

int

get_network_unique_id ( ) const

int

get_rpc_sender_id ( ) const

bool

has_network_peer ( ) const

bool

is_network_server ( ) const

void

poll ( )

Error

send_bytes ( PoolByteArray bytes, int id=0, TransferMode mode=2 )

Señales

  • connected_to_server ( )

Emitido cuando esta MultiplayerAPI's network_peer se conectó con éxito a un servidor. Sólo se emite en los clientes.


  • connection_failed ( )

Emitido cuando esta MultiplayerAPI network_peer falla al establecer una conexión con un servidor. Sólo se emite en los clientes.


  • network_peer_connected ( int id )

Emitido cuando este MultiplayerAPI's network_peer se conecta con un nuevo par. ID es el ID del nuevo par. Los clientes son notificados cuando otros clientes se conectan al mismo servidor. Al conectarse a un servidor, un cliente también recibe esta señal para el servidor (con el ID siendo 1).


  • network_peer_disconnected ( int id )

Emitida cuando esta MultiplayerAPI network_peer se desconecta de un par. Los clientes son notificados cuando otros clientes se desconectan del mismo servidor.


Se emite cuando esta MultiplayerAPI network_peer recibe un packet con datos personalizados (ver send_bytes). ID es el ID del par que envió el paquete.


  • server_disconnected ( )

Emitida cuando esta MultiplayerAPI de network_peer se desconecta del servidor. Sólo se emite en los clientes.

Enumeraciones

enum RPCMode:

  • RPC_MODE_DISABLED = 0 --- Se utiliza con Node.rpc_config o Node.rset_config para desactivar un método o propiedad para todas las llamadas RPC, por lo que no está disponible. Por defecto para todos los métodos.

  • RPC_MODE_REMOTE = 1 --- Se utiliza con Node.rpc_config o Node.rset_config para establecer un método a ser llamado o una propiedad a ser cambiada sólo en el extremo remoto, no localmente. Análogo a la palabra clave remote. Las llamadas y los cambios de propiedad se aceptan de todos los pares remotos, sin importar si son maestros o títeres del nodo.

  • RPC_MODE_MASTER = 2 --- Se utiliza con Node.rpc_config o Node.rset_config para establecer un método a ser llamado o una propiedad a ser cambiada sólo en el maestro de la red para este nodo. Análogo a la palabra clave master. Sólo acepta llamadas o cambios de propiedades de los títeres de red del nodo, ver Node.set_network_master.

  • RPC_MODE_PUPPET = 3 --- Se utiliza con Node.rpc_config o Node.rset_config para establecer un método a ser llamado o una propiedad a ser cambiada sólo en las marionetas para este nodo. Análogo a la palabra clave puppet. Sólo acepta llamadas o cambios de propiedades del maestro de red del nodo, ver Node.set_network_master.

  • RPC_MODE_SLAVE = 3 --- Deprecated. Use RPC_MODE_PUPPET instead. Analogous to the slave keyword.

  • RPC_MODE_REMOTESYNC = 4 --- Se comporta como RPC_MODE_REMOTE pero también hace que la llamada o la propiedad cambie localmente. Análogo a la palabra clave remotesync.

  • RPC_MODE_SYNC = 4 --- Deprecated. Use RPC_MODE_REMOTESYNC instead. Analogous to the sync keyword.

  • RPC_MODE_MASTERSYNC = 5 --- Se comporta como RPC_MODE_MASTER pero también hace que la llamada o la propiedad cambie localmente. Análogo a la palabra clave mastersync.

  • RPC_MODE_PUPPETSYNC = 6 --- Se comporta como RPC_MODE_PUPPET pero también hace que la llamada o la propiedad cambie localmente. Análogo a la palabra clave puppetsync.

Descripciones de Propiedades

  • bool allow_object_decoding

Default

false

Setter

set_allow_object_decoding(value)

Getter

is_object_decoding_allowed()

If true (or if the network_peer has PacketPeer.allow_object_decoding 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.


Setter

set_network_peer(value)

Getter

get_network_peer()

El objeto paritario para manejar el sistema RPC (que permite efectivamente la conexión en red cuando se establece). Dependiendo del par en sí mismo, el MultiplayerAPI se convertirá en un servidor de red (compruébelo con is_network_server) y establecerá el modo de red del nodo raíz como maestro, o se convertirá en un par normal con el nodo raíz establecido como marioneta. Todos los nodos hijos están configurados para heredar el modo de red por defecto. El manejo de los eventos relacionados con la red (conexión, desconexión, nuevos clientes) se hace conectando a las señales de MultiplayerAPI.


  • bool refuse_new_network_connections

Default

false

Setter

set_refuse_new_network_connections(value)

Getter

is_refusing_new_network_connections()

Si true, el MultiplayerAPI's network_peer rechaza las nuevas conexiones entrantes.


Setter

set_root_node(value)

Getter

get_root_node()

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.

Descripciones de Métodos

  • void clear ( )

Borra el estado actual de la red MultiplayerAPI (no deberías llamar a esto a menos que sepas lo que estás haciendo).


Devuelve los ID de todos los pares conectados de esta MultiplayerAPI's network_peer.


  • int get_network_unique_id ( ) const

Devuelve el ID de par único de este MultiplayerAPI's network_peer.


  • int get_rpc_sender_id ( ) const

Devuelve la identificación del remitente para la RPC que se está ejecutando actualmente.

Nota: Si no está dentro de una RPC este método devolverá 0.


  • bool has_network_peer ( ) const

Devuelve true si hay un conjunto de network_peer.


  • bool is_network_server ( ) const

Devuelve true si esta MultiplayerAPI's network_peer está en modo servidor (escuchando las conexiones).


  • void poll ( )

Método utilizado para la votación del MultiplayerAPI. Sólo tienes que preocuparte por esto si utilizas la anulación de Node.custom_multiplayer o pones SceneTree.multiplayer_poll en false. De forma predeterminada, SceneTree sondeará su API multijugador por ti.

Nota: Este método hace que se llamen RPC y RSET, por lo que se ejecutarán en el mismo contexto de esta función (por ejemplo, _process, physics, Thread).


Envía los bytes en bruto dados a un par específico identificado por id (véase el NetworkedMultiplayerPeer.set_target_peer). El ID predeterminado es 0, es decir, la difusión a todos los pares.