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.
Checking the stable version of the documentation...
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à
|
||
|
||
|
Metodi
void |
close() |
void |
disconnect_peer(peer: int, force: bool = false) |
generate_unique_id() const |
|
get_connection_status() const |
|
get_packet_channel() const |
|
get_packet_mode() const |
|
get_packet_peer() const |
|
get_unique_id() const |
|
is_server_relay_supported() const |
|
void |
poll() |
void |
set_target_peer(id: int) |
Segnali
Emesso quando un peer remoto si connette.
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 🔗
Se true, questo MultiplayerPeer rifiuta nuove connessioni.
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 🔗
void set_transfer_mode(value: TransferMode)
TransferMode get_transfer_mode()
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().
Restituisce l'ID del MultiplayerPeer che ha inviato il prossimo pacchetto disponibile. Vedi PacketPeer.get_available_packet_count().
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.