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.

Methods

int

generate_unique_id ( ) const

ConnectionStatus

get_connection_status ( ) const

int

get_packet_peer ( ) const

int

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

false

Setter

set_refuse_new_connections(value)

Getter

is_refusing_new_connections()

If true, this MultiplayerPeer refuses new connections.


  • int transfer_channel

Default

0

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.


Default

2

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.


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.