MultiplayerPeer¶
Inherits: PacketPeer < RefCounted < Object
Inherited By: ENetMultiplayerPeer, MultiplayerPeerExtension, WebRTCMultiplayerPeer, WebSocketMultiplayerPeer
A high-level network interface to simplify multiplayer interactions.
Description¶
Manages the connection to multiplayer peers. Assigns unique IDs to each client connected to the server. See also MultiplayerAPI.
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.
Note: When exporting to Android, make sure to enable the INTERNET
permission in the Android export preset before exporting the project or using one-click deploy. Otherwise, network communication of any kind will be blocked by Android.
Tutorials¶
Properties¶
|
||
|
||
|
Methods¶
generate_unique_id ( ) const |
|
get_connection_status ( ) const |
|
get_packet_peer ( ) const |
|
get_unique_id ( ) const |
|
void |
poll ( ) |
void |
set_target_peer ( int id ) |
Signals¶
connection_failed ( )
Emitted when a connection attempt fails.
connection_succeeded ( )
Emitted when a connection attempt succeeds.
peer_connected ( int id )
Emitted by the server when a client connects.
peer_disconnected ( int id )
Emitted by the server when a client disconnects.
server_disconnected ( )
Emitted by clients when the server disconnects.
Enumerations¶
enum ConnectionStatus:
CONNECTION_DISCONNECTED = 0 --- The ongoing connection disconnected.
CONNECTION_CONNECTING = 1 --- A connection attempt is ongoing.
CONNECTION_CONNECTED = 2 --- The connection attempt succeeded.
Constants¶
TARGET_PEER_BROADCAST = 0 --- Packets are sent to the server and then redistributed to other peers.
TARGET_PEER_SERVER = 1 --- Packets are sent to the server alone.
Property Descriptions¶
bool refuse_new_connections
Default |
|
Setter |
set_refuse_new_connections(value) |
Getter |
is_refusing_new_connections() |
If true
, this MultiplayerPeer
refuses new connections.
int transfer_channel
Default |
|
Setter |
set_transfer_channel(value) |
Getter |
get_transfer_channel() |
The channel to use to send packets. Many network APIs such as ENet and WebRTC allow the creation of multiple independent channels which behaves, in a way, like separate connections. This means that reliable data will only block delivery of other packets on that channel, and ordering will only be in respect to the channel the packet is being sent on. Using different channels to send different and independent state updates is a common way to optimize network usage and decrease latency in fast-paced games.
Note: The default channel (0
) actually works as 3 separate channels (one for each TransferMode) so that @GlobalScope.TRANSFER_MODE_RELIABLE and @GlobalScope.TRANSFER_MODE_UNRELIABLE_ORDERED does not interact with each other by default. Refer to the specific network API documentation (e.g. ENet or WebRTC) to learn how to set up channels correctly.
TransferMode transfer_mode
Default |
|
Setter |
set_transfer_mode(value) |
Getter |
get_transfer_mode() |
The manner in which to send packets to the target_peer
. See TransferMode.
Method Descriptions¶
int generate_unique_id ( ) const
Returns a randomly generated integer that can be used as a network unique ID.
ConnectionStatus get_connection_status ( ) const
Returns the current state of the connection. See ConnectionStatus.
int get_packet_peer ( ) const
Returns the ID of the MultiplayerPeer
who sent the most recent packet.
int get_unique_id ( ) const
Returns the ID of this MultiplayerPeer
.
void poll ( )
Waits up to 1 second to receive a new network event.
void set_target_peer ( int id )
Sets the peer to which packets will be sent.
The id
can be one of: TARGET_PEER_BROADCAST to send to all connected peers, TARGET_PEER_SERVER to send to the peer acting as server, a valid peer ID to send to that specific peer, a negative peer ID to send to all peers except that one. By default, the target peer is TARGET_PEER_BROADCAST.