2009-12-12 7 views
6

Ho l'inizio di un piccolo gioco multiplayer che sto scrivendo in python come esercizio di apprendimento. Attualmente il server funziona a 10 fps, mentre i client funzionano a qualsiasi velocità. Questo funziona bene per risparmiare larghezza di banda, ma a meno che il client non dica al server quando è avvenuto il suo input, tutto l'input viene quantizzato a intervalli di 100 ms. Come posso sincronizzare l'ora tra client e server in modo da poter apportare queste correzioni? Un ostacolo importante qui è che dovrò determinare i tempi di ping e compensarli.Sincronizzazione del tempo tra server e client semplici basati su socket python

+0

La risposta che la maggior parte degli altri progettisti di giochi ha inventato è che (fondamentalmente) non si otterrà mai una buona sincronizzazione. Grandi giochi come wow e parenti simulano la maggior parte delle azioni dal lato client, e spingono gli aggiornamenti in entrambe le direzioni come è conveniente. –

risposta

1

Mi sono imbattuto casualmente su excruciatingly fine blog post su come eseguire la fisica di rete distribuita in generale (senza la previsione tradizionale del client). Lo consiglio vivamente, insieme alle diapositive GDC presentate da Fiedler un paio di anni fa. In bocca al lupo!

+0

Grazie, ricordo quei post del blog di molto tempo fa quando la serie era incompleta. L'ultimo in rete è fantastico e dovrebbe aiutare molto! – Alex

0

Questa è una domanda molto interessante. Purtroppo non c'è una risposta facile. Devi solo capire bene il problema e accontentarti di una soluzione che sia abbastanza buona per la tua applicazione.

Il mio primo istinto è stato che il Network Time Protocol (NTP) per l'impostazione degli orologi della macchina dai server NTP avrebbe risolto questo problema. Uno dei problemi affrontati riguarda lo Jitter Buffers, che riguarda lo packet delay variation. Questo è elaborato in RFC 3393; IP Packet Delay Variation Metric for IP Performance Metrics (IPPM).

+0

Analizzerò l'NTP, che potrebbe in effetti fornire alcune informazioni sulla mia situazione. – Alex

Problemi correlati