Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

MultiplayerPeer

Eredita: PacketPeer < RefCounted < Object

Ereditato da: ENetMultiplayerPeer, MultiplayerPeerExtension, OfflineMultiplayerPeer, WebRTCMultiplayerPeer, WebSocketMultiplayerPeer

Classe astratta per PacketPeer specializzati utilizzati da MultiplayerAPI.

Descrizione

Gestisce la connessione con uno o più peer remoti che agiscono come server o client e assegna ID univoci a ciascuno di essi. Vedi anche MultiplayerAPI.

Nota: Il protocollo della MultiplayerAPI è un dettaglio di implementazione e non è pensato per essere utilizzato da server non Godot. Potrebbe cambiare senza preavviso.

Nota: Quando si esporta su Android, assicurarsi di abilitare l'autorizzazione INTERNET nella preimpostazione d'esportazione Android prima di esportare il progetto o di utilizzare la distribuzione con un clic. Altrimenti, qualsiasi tipo di comunicazione di rete sarà bloccata da Android.

Tutorial

Proprietà

bool

refuse_new_connections

false

int

transfer_channel

0

TransferMode

transfer_mode

2

Metodi

void

close()

void

disconnect_peer(peer: int, force: bool = false)

int

generate_unique_id() const

ConnectionStatus

get_connection_status() const

int

get_packet_channel() const

TransferMode

get_packet_mode() const

int

get_packet_peer() const

int

get_unique_id() const

bool

is_server_relay_supported() const

void

poll()

void

set_target_peer(id: int)


Segnali

peer_connected(id: int) 🔗

Emesso quando un peer remoto si connette.


peer_disconnected(id: int) 🔗

Emesso quando un peer remoto si è disconnesso.


Enumerazioni

enum ConnectionStatus: 🔗

ConnectionStatus CONNECTION_DISCONNECTED = 0

Il MultiplayerPeer è disconnesso.

ConnectionStatus CONNECTION_CONNECTING = 1

Il MultiplayerPeer si sta attualmente connettendo a un server.

ConnectionStatus CONNECTION_CONNECTED = 2

Questo MultiplayerPeer è connesso.


enum TransferMode: 🔗

TransferMode TRANSFER_MODE_UNRELIABLE = 0

I pacchetti non sono confermati, non sono effettuati tentativi di reinvio per i pacchetti persi. I pacchetti possono arrivare in qualsiasi ordine. Potenzialmente più veloce di TRANSFER_MODE_UNRELIABLE_ORDERED. Utilizzare per dati non critici e considerare sempre se l'ordine è importante.

TransferMode TRANSFER_MODE_UNRELIABLE_ORDERED = 1

I pacchetti non sono confermati, non sono effettuati tentativi di reinvio per i pacchetti persi. I pacchetti sono ricevuti nell'ordine in cui sono stati inviati. Potenzialmente più veloce di TRANSFER_MODE_RELIABLE. Utilizzare per dati non critici o dati che sarebbero comunque obsoleti se ricevuti in ritardo a causa dei tentativi di reinvio, ad esempio dati di movimento e di posizione.

TransferMode TRANSFER_MODE_RELIABLE = 2

I pacchetti devono essere ricevuti e devono essere effettuati tentativi di reinvio finché i pacchetti non sono confermati. I pacchetti devono essere ricevuti nell'ordine in cui sono stati inviati. È la modalità di trasferimento più affidabile, ma potenzialmente la più lenta a causa del sovraccarico. Utilizzare per dati critici che devono essere trasmessi e arrivare in ordine, ad esempio un'abilità attivata o un messaggio in chat. Considerare attentamente se le informazioni sono davvero critiche e utilizzare con moderazione.


Costanti

TARGET_PEER_BROADCAST = 0 🔗

I pacchetti sono inviati a tutti i peer connessi.

TARGET_PEER_SERVER = 1 🔗

I pacchetti sono inviati al peer remoto che funge da server.


Descrizioni delle proprietà

bool refuse_new_connections = false 🔗

  • void set_refuse_new_connections(value: bool)

  • bool is_refusing_new_connections()

Se true, questo MultiplayerPeer rifiuta nuove connessioni.


int transfer_channel = 0 🔗

  • void set_transfer_channel(value: int)

  • int get_transfer_channel()

Il canale da usare per inviare pacchetti. Molte API di rete come ENet e WebRTC consentono la creazione di più canali indipendenti che si comportano, in un certo senso, come connessioni separate. Ciò significa che i dati affidabili bloccheranno solo la consegna di altri pacchetti su quel canale e l'ordinamento sarà solo in base al canale su cui il pacchetto viene inviato. Usare canali diversi per inviare aggiornamenti diversi e indipendenti di stato è un modo comune per ottimizzare l'utilizzo della rete e ridurre la latenza nei giochi molto dinamici.

Nota: Il canale predefinito (0) funziona in realtà come 3 canali separati (uno per ogni TransferMode) in modo che TRANSFER_MODE_RELIABLE e TRANSFER_MODE_UNRELIABLE_ORDERED non interagiscano tra loro per impostazione predefinita. Fai riferimento alla documentazione specifica dell'API di rete (ad esempio ENet o WebRTC) per imparare come impostare correttamente i canali.


TransferMode transfer_mode = 2 🔗

Il modo in cui inviare pacchetti al peer di destinazione. Vedi il metodo set_target_peer().


Descrizioni dei metodi

void close() 🔗

Chiude immediatamente il peer multigiocatore tornando allo stato CONNECTION_DISCONNECTED. I peer connessi verranno eliminati senza emettere peer_disconnected.


void disconnect_peer(peer: int, force: bool = false) 🔗

Disconnette il peer fornito da questo host. Se force è true il segnale peer_disconnected non verrà emesso per questo peer.


int generate_unique_id() const 🔗

Restituisce un numero intero generato a caso che può essere utilizzato come ID univoco di rete.


ConnectionStatus get_connection_status() const 🔗

Restituisce lo stato attuale della connessione.


int get_packet_channel() const 🔗

Restituisce il canale su cui è stato ricevuto il prossimo pacchetto disponibile. Vedi PacketPeer.get_available_packet_count().


TransferMode get_packet_mode() const 🔗

Restituisce la modalità di trasferimento utilizzata dal peer remoto per inviare il prossimo pacchetto disponibile. Vedi PacketPeer.get_available_packet_count().


int get_packet_peer() const 🔗

Restituisce l'ID del MultiplayerPeer che ha inviato il prossimo pacchetto disponibile. Vedi PacketPeer.get_available_packet_count().


int get_unique_id() const 🔗

Restituisce l'ID di questo MultiplayerPeer.


bool is_server_relay_supported() const 🔗

Restituisce true se il server può fungere da ripetitore nella configurazione attuale. Ovvero, se la MultiplayerAPI di livello superiore deve notificare ai client connessi la presenza di altri peer, e implementare un protocollo di ripetizione per consentirne la comunicazione.


void poll() 🔗

Attende fino a 1 secondo per ricevere un nuovo evento di rete.


void set_target_peer(id: int) 🔗

Imposta il peer a cui verranno inviati i pacchetti.

L'id può essere uno dei seguenti: TARGET_PEER_BROADCAST per inviare a tutti i peer connessi, TARGET_PEER_SERVER per inviare al peer che funge da server, un ID peer valido per inviare a quel peer specifico, un ID peer negativo da inviare a tutti i peer tranne quello. Come predefinito, il peer di destinazione è TARGET_PEER_BROADCAST.