Come funzionano i giochi online multiplayer? Le coordinate di ogni oggetto nel gioco vengono costantemente trasmesse in rete?
Dipende dal gioco. Ma raramente un gioco trasmetterà "ogni oggetto nel gioco" attraverso i server. Questo perché molti oggetti non si muovono nemmeno, come un albero o una casa, e queste cose rimangono lato client sul computer della persona. Tuttavia, forse in Battlefield, dove gli edifici vengono distrutti, il server deve inviare queste informazioni quando l'edificio viene rotto.
In Counter Strike, la maggior parte delle azioni fatte dai giocatori devono essere trasmesse ai server e trasmesse a tutti gli altri, come la posizione, la direzione verso cui si è rivolti e il tiro. Ma non hanno bisogno di inviare le coordinate di ogni oggetto nel gioco. Sicuramente non inviano dettagli cosmetici come il sangue. Ecco perché in Counter Strike, puoi sparare a qualcuno e vedere il sangue sul tuo lato, ma poi il server ti dice che non hai fatto danni. Questo perché:
1. Loro ti sparano e vedono sul loro computer che ti hanno sparato e il sangue è schizzato
2. 0.01 secondi dopo, tu gli spari e vedi sul tuo computer che gli hai sparato e il sangue è schizzato
3. Il server riceve i due eventi e determina che #1 è successo prima di #2
4. Il server dice a te e al tuo avversario che sei morto prima ancora di sparare.
In un RPG forse la direzione verso cui è rivolto il tuo personaggio non è così importante, quindi forse il server la ignora e aggiorna solo la posizione. Esempi sono certi MMO e Diablo 2 (forse Diablo 3, non ne sono sicuro), in cui puoi far girare il tuo personaggio in cerchio ma i tuoi amici ti vedono solo fermo.
Il più delle volte il server avrà un "refresh rate" che è la frequenza con cui aggiorna le informazioni dei giocatori. Più veloce è meglio è, specialmente in un gioco come Starcraft o Counter-strike dove ogni momento è importante. Per esempio in CS ci sono server a 64 tick e 128 tick. tick significa il numero di volte al secondo che le informazioni vengono aggiornate.
La possibilità di "desync" è probabilmente aumentata da: troppe informazioni elaborate sul client prima di confermare con il server, un tick rate troppo basso, e/o una latenza troppo alta. Per esempio, se il vostro client mostra che vi siete spostati di 10 passi a destra prima di aspettare che il server confermi che l'avete effettivamente fatto, allora sul vostro schermo pensate di esservi spostati di 10 passi a destra. Poi riceve un aggiornamento dal server che dice che in realtà siete morti 5 secondi fa. E boom lo schermo salta e tu fai tipo "wtf". Succedeva spesso in Diablo 2. In Counter Strike sai immediatamente quando sei disconnesso perché non sei più in grado di muoverti; il tuo computer si aggiorna costantemente su dove il server dice che ti trovi.
Articoli simili
- Qual è la più alta statistica di un Pokemon (qualsiasi statistica, ogni gen, ogni oggetto, ogni trasformazione, ogni abilità)?
- Perché le repliche del telefilm "Cold Case" non vengono mai trasmesse?
- Come funzionano i giochi multiplayer online?
- Perché i video girati con il Moto G Stylus vengono costantemente zoomati leggermente dentro e fuori e rimessi a fuoco? Qualcuno ha una soluzione?