2012-04-12 14 views
7

Sto facendo un piccolo gioco usando node.js per il server e un file .js incorporato in un canvas HTML5 per i client. I giocatori hanno ciascuno e si oppongono possono muoversi con i tasti freccia.Domande sull'aggiornamento del mio gioco node.js

Ora ho fatto 2 modi diversi di aggiornare il gioco, uno stava inviando la nuova posizione del giocatore ogni volta che cambia. Ha funzionato, ma il mio server ha dovuto elaborare circa 60 coppie di x/secondo al secondo (il tasso di aggiornamento del client è 30/sec e c'erano 2 giocatori in movimento non-stop). Il secondo metodo era di inviare solo nuova posizione e velocità/direzione dell'oggetto del giocatore quando cambiavano la loro velocità di direzione, quindi in sostanza sugli altri client il movimento del giocatore è stato interpolato usando la direzione/velocità dall'ultimo aggiornamento. Il mio server ha dovuto elaborare pochissimi pacchetti x/y7speed/direction, tuttavia i miei clienti hanno avuto un piccolo ritardo quando sono arrivati ​​i pacchetti poiché la posizione interpolata era spesso un po 'distante dalla posizione effettiva scritta nel pacchetto.

Ora le mie domande sono: quale metodo consiglieresti? E come dovrei fare il mio ritardo di compensazione per entrambi i metodi?

risposta

3

Se si dispone di bassa latenza, interpolare dalla posizione in cui l'oggetto viene tracciato nella nuova posizione. A bassa latenza non rappresenta molta differenza.

Se si dispone di una latenza elevata, è possibile implementare un tipo di EPIC. http://www.mindcontrol.org/~hplus/epic/

È anche possibile controllare come è fatto in Browser-Quest. https://github.com/mozilla/BrowserQuest

Buona fortuna!

+0

l'articolo sembra un buon punto di partenza per risolvere il problema, ma non ho ancora capito niente dalla soluzione :)) – mihai

+0

@mihai L'origine della libreria EPIC è chiara se si capisce il C++. Solo due file con commenti (Extrapolator.h ed Extrapolator.cpp) Se non si parla fluentemente di C++, posso fare uno sforzo per spiegarlo o per implementarlo. – rromeroar

+0

nah va bene. Non ho guardato il codice sorgente, basta leggere l'articolo che hai indicato. La descrizione dell'algoritmo è piuttosto breve e stavo avendo problemi a capirlo, ma sono sicuro che abbia senso. – mihai

Problemi correlati