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.

ENetMultiplayerPeer

Eredita: MultiplayerPeer < PacketPeer < RefCounted < Object

Un'implementazione MultiplayerPeer che utilizza la libreria ENet.

Descrizione

Un'implementazione di MultiplayerPeer che dovrebbe essere passata a MultiplayerAPI.multiplayer_peer dopo essere stata inizializzata come client, server o mesh. Gli eventi possono quindi essere gestiti connettendosi ai segnali MultiplayerAPI. Vedi ENetConnection per maggiori informazioni sul wrapper della libreria ENet.

Nota: ENet utilizza solo UDP, non TCP. Quando si inoltra la porta del server per rendere il server accessibile su Internet pubblico, è necessario inoltrare la porta del server solo in UDP. È possibile utilizzare la classe UPNP per tentare di inoltrare automaticamente la porta del server all'avvio del server.

Tutorial

Proprietà

ENetConnection

host

Metodi

Error

add_mesh_peer(peer_id: int, host: ENetConnection)

Error

create_client(address: String, port: int, channel_count: int = 0, in_bandwidth: int = 0, out_bandwidth: int = 0, local_port: int = 0)

Error

create_mesh(unique_id: int)

Error

create_server(port: int, max_clients: int = 32, max_channels: int = 0, in_bandwidth: int = 0, out_bandwidth: int = 0)

ENetPacketPeer

get_peer(id: int) const

void

set_bind_ip(ip: String)


Descrizioni delle proprietà

ENetConnection host 🔗

L'ENetConnection sottostante creato dopo create_client() e create_server().


Descrizioni dei metodi

Error add_mesh_peer(peer_id: int, host: ENetConnection) 🔗

Aggiunge un nuovo peer remoto con il peer_id connesso all'host.

Nota: L'host deve avere esattamente un peer nello stato ENetPacketPeer.STATE_CONNECTED.


Error create_client(address: String, port: int, channel_count: int = 0, in_bandwidth: int = 0, out_bandwidth: int = 0, local_port: int = 0) 🔗

Crea un client che si connette a un server all'indirizzo address usando la porta port. L'indirizzo specificato deve essere un nome di dominio completamente qualificato (ad esempio "www.example.com") o un indirizzo IP in formato IPv4 o IPv6 (ad esempio "192.168.1.1"). port è la porta su cui il server è in ascolto. Il parametro channel_count può essere usato per specificare il numero di canali ENet assegnati per la connessione. I parametri in_bandwidth e out_bandwidth possono essere usati per limitare la larghezza di banda in entrata e in uscita al numero specificato di byte al secondo. Il valore predefinito 0 indica una larghezza di banda illimitata. Nota che ENet eliminerà strategicamente i pacchetti su lati specifici di una connessione tra peer per garantire che la larghezza di banda del peer non sia superata. I parametri di larghezza di banda definiscono anche la dimensione della finestra di una connessione che limita la quantità di pacchetti affidabili che possono essere in transito in un determinato momento. Restituisce @GlobalScope.OK se è stato creato un client, @GlobalScope.ERR_ALREADY_IN_USE se questa istanza di ENetMultiplayerPeer ha già una connessione aperta (nel qual caso è necessario chiamare prima MultiplayerPeer.close()), o @GlobalScope.ERR_CANT_CREATE se il client non può essere creato. Se local_port è specificato, il client ascolterà anche la porta specificata, il che è utile per alcune tecniche di attraversamento NAT.


Error create_mesh(unique_id: int) 🔗

Inizializza questo MultiplayerPeer in modalità mesh. unique_id verrà utilizzato come ID univoco della rete peer locale una volta assegnato come MultiplayerAPI.multiplayer_peer. Nella configurazione mesh sarà necessario impostare manualmente ogni nuovo peer utilizzando ENetConnection prima di chiamare add_mesh_peer(). Sebbene questa tecnica sia più avanzata, consente maggiore controllo sul processo di connessione (ad esempio quando si ha a che fare con NAT punch-through) e una migliore distribuzione del carico di rete (che altrimenti sarebbe più faticoso per il server).


Error create_server(port: int, max_clients: int = 32, max_channels: int = 0, in_bandwidth: int = 0, out_bandwidth: int = 0) 🔗

Crea un server che ascolta le connessioni tramite la porta port. La porta deve essere una porta disponibile e inutilizzata tra 0 e 65535. Nota che le porte inferiori a 1024 sono privilegiate e potrebbero richiedere autorizzazioni elevate a seconda della piattaforma. Per cambiare l'interfaccia su cui ascolta il server, usa set_bind_ip(). L'IP predefinito è il carattere jolly "*", che ascolta su tutte le interfacce disponibili. max_clients è il numero massimo di client consentiti contemporaneamente, può essere usato qualsiasi numero fino a 4095, anche se il numero raggiungibile di client simultanei potrebbe essere molto inferiore e dipendere dall'applicazione. Per ulteriori dettagli sui parametri della larghezza di banda, vedi create_client(). Restituisce @GlobalScope.OK se è stato creato un server, @GlobalScope.ERR_ALREADY_IN_USE se questa istanza di ENetMultiplayerPeer ha già una connessione aperta (nel qual caso è necessario chiamare prima MultiplayerPeer.close()) o @GlobalScope.ERR_CANT_CREATE se non è stato possibile creare il server.


ENetPacketPeer get_peer(id: int) const 🔗

Restituisce il ENetPacketPeer associato all'id fornito.


void set_bind_ip(ip: String) 🔗

L'indirizzo IP utilizzato durante la creazione di un server. Questo è impostato sul carattere jolly "*" per impostazione predefinita, che si collega a tutte le interfacce disponibili. L'IP specificato deve essere nel formato IPv4 o IPv6, ad esempio: "192.168.1.1".