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.