MultiplayerAPI¶
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¶
|
||
|
||
Métodos¶
void |
clear ( ) |
get_network_connected_peers ( ) const |
|
get_network_unique_id ( ) const |
|
get_rpc_sender_id ( ) const |
|
has_network_peer ( ) const |
|
is_network_server ( ) const |
|
void |
poll ( ) |
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.
network_peer_packet ( int id, PoolByteArray packet )
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 |
|
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.
NetworkedMultiplayerPeer network_peer
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 |
|
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.
Node root_node
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).
PoolIntArray get_network_connected_peers ( ) const
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).
Error send_bytes ( PoolByteArray bytes, int id=0, TransferMode mode=2 )
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.