Come funzionano i giochi multiplayer online?
Per giochi multiplayer online, presumo che ti riferisci ad un gioco in rete, dove ci sono uno o più nodi/computer collegati tra loro.
Struttura di base
Nel gioco, ci sono generalmente due tipi di nodi:
- Server: Ospita il gioco e risponde alle richieste
- Client: Si connette al server e invia le richieste
Di che tipo di richieste stiamo parlando? Possono essere qualsiasi tipo di dati. Per esempio, in una partita a Starcraft, avete spostato un marine, chiamiamolo Bob, alle ipotetiche coordinate (20, 10). Il vostro client invia una richiesta al server per spostare quel marine a (20, 10).
A questo punto, il client e il server possono avere due stati diversi a seconda che il codice di rete (netcode) sia basato su un'infrastruttura server autoritativa o non autoritativa.
In un approccio server autoritativo, il server ha l'ultima parola se la richiesta è registrata e valida o ignorata e abbandonata. Se la risposta è valida, aggiornerà il mittente, cioè voi, e tutti gli altri client connessi sulla richiesta.
In un server non autoritativo, il client non deve aspettare la risposta del server per continuare a giocare.
Scenario del mondo reale
Torniamo al gioco di Starcraft. Poiché avete dato l'ordine a Bob di dirigersi verso (20, 10), il vostro avversario, l'altro cliente, deve essere informato della vostra azione e spostare Bob sul suo schermo. Se Starcraft, dovesse adottare l'approccio del server non autoritario e la tua richiesta non raggiungesse mai il tuo avversario, questo significherebbe che la versione di Bob del tuo avversario potrebbe non essere nella stessa coordinata della tua versione di Bob! Cosa succede se lì aveva emesso un comando per spostare il suo sciame di zergling pochi secondi prima alle stesse coordinate? Chi ha ora lo stato corretto del gioco?
Così sembrava che avere un server autorevole risolvesse tutti i problemi; aspettate, non è così. Più specificamente con la precisione e la latenza. Questi due fattori sono le maggiori sfide nella costruzione di un gioco multiplayer online.
Precisione: Quanto sono omogenei i client e quante poche richieste/risposte vengono abbandonate o perse.
Latenza: Il tempo impiegato da una richiesta per raggiungere il server e la sua risposta per tornare a voi.
Entrambi questi problemi hanno origine dall'inaffidabilità di internet. Per maggiori dettagli, leggete Affidabilità (rete di computer).
Per garantire la precisione, bisogna assicurarsi che tutte le richieste e le risposte siano in ordine e che nessuna di esse venga persa da uno dei client; anche lo stato di ogni client deve essere lo stesso, il che significa che quando uno dei client è in uno stato diverso (ad esempio qualcuno ha una connessione intermittente), ogni altro client deve raggiungere quello stato prima che qualcuno possa fare qualsiasi cambiamento. Questo è il caso comune del `lag` in Starcraft.
Per garantire la latenza, bisogna assicurarsi che il client non senta alcun punto di ritardo tra la richiesta del vostro client e la risposta del server. A parte ridurre il numero di collegamenti che il vostro client connette al server o ospitare il server sul vostro client (cioè zero salti di rete client-server), non ci sono altri modi per migliorare questo aspetto.
Al momento non esiste una soluzione che possa garantire una precisione perfetta e nessuna latenza (a meno che non si parli di giochi single player) e quindi si deve fare un compromesso. Se garantire una bassa latenza ma una bassa precisione o un'alta precisione ma un'alta latenza.
Votate se questo risponde alle vostre domande :)
Articoli simili
- Come funzionano i giochi online multiplayer? Le coordinate di ogni oggetto nel gioco vengono costantemente trasmesse in rete?
- Come giocare online a giochi multiplayer locali su PC
- Come giocare a giochi multiplayer locali online
- Quali sono alcuni grandi giochi multiplayer da giocare online con i tuoi figli?