|
From: Bernardo I. <be...@de...> - 2002-05-26 18:37:10
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On Saturday 25 May 2002 16:46, Duca wrote: > > Il problema e' che quando c'e' un lag notevole la cosa puo' avvenire > >di frequente. Nel gioco si spara a ripetizione ed e' possibile che > >un giocatore frammenti un asteroide due o tre volte prima di scoprire > >che l'aveva gia' fatto un altro. > Hai ragione, ma questo problema si presenta in qualsiasi > configurazione sceglieremo, anche con un server centrale che dirama a > tutti i giocatori l'informazione. Inoltre servirebbe all'interno dei > client una logica aggiuntiva per tutelare i client con lag elevato. > Faccio come hai fatto te l'esempio di 2 (A e B) che sparano allo > stesso asteroide, A colpisce l'asteroid ma ha un lag elevato, anche B > colipisce l'asteroide ma ha un lag minore, il server distribuisce > l'informazione "B colpito sprite xx" a tutti i giocatori, quindi > arriva l'informazione A colpisce asteroide e si scopre che A ha > colpito prima di B. Ci sono 2 problemi A deve essere tutelato > dall'informazione ERRATA del server e TUTTI i giocatori devono essere > riportati ad una diversa configurazione degli sprite! Io copierei quello che fa Quake: il server e' l'unico che ha ragione: se vede prima lo sparo di A, allora l'asteroide e' stato colpito da A e i punti vanno ad A. Sia A che B possono aggiornare lo schermo e il proprio punteggio anche subito, ma prima o poi gli arrivera' un pacchetto dal server contenente la situazione reale e allora B si vedra' scalare i punti e vedra' gli asteroidi in una posizione diversa ;-) > Credo che questa cosa vada cmq prevista se supponiamo di avere un lag > variabile. cmq dovremmo raggruppare i player con lag simile, se ciò > non è possibile credo sia opportuno memorizzare per ogni client un > albero di informazioni relativi agli asteroidi, chi li ha distrutti, > quanti punti ha preso etc per eventualmente annullare un azione > errata. Questa situazione avviene raramente e solo quando il lag e' elevato, non credo sia un problema grave... Provo a fare un'affermazione. Non ho le prove, ma voglio vedere se qualcuno riesce a smentirmi: "L'unico modo per avere uno stato consistente del gioco per tutti i giocatori in un dato momento e' avere un unico nodo (il server) che mantiene i valori ufficiali per tutte le variabili del gioco. In caso di lag, i client possono fare elaborazioni speculative al solo scopo di aumentare la fluidita', ma devono rimettere tutto a posto appena gli viene comunicato un nuovo stato dal server." - -- // Bernardo Innocenti - Develer S.r.l., R&D dept. \X/ http://www.develer.com/ -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.7 (GNU/Linux) iD8DBQE88SukltU4TfxqZsoRAjgbAJwIkfW3oriw+TIQj0oX9Rp3hTgYbQCfe7QI ae9klBQ1tIHJLkBNPXPT1ZM= =O/TX -----END PGP SIGNATURE----- |