2009-12-12 5 views
6

Ich habe die Anfänge eines kleinen Multiplayer-Spiels, das ich in Python als Lernübung schreibe. Derzeit läuft der Server mit 10 fps, während die Clients mit der von ihnen gewünschten Geschwindigkeit laufen. Dies funktioniert gut, um Bandbreite zu sparen, aber wenn der Client dem Server nicht mitteilt, wann seine Eingabe erfolgt ist, werden alle Eingaben in Intervalle von 100 ms quantisiert. Wie kann ich die Zeit zwischen Client und Server synchronisieren, damit ich diese Korrekturen vornehmen kann? Eine große Hürde hier ist, dass ich Ping-Zeiten ermitteln und kompensieren muss.Synchronisieren der Zeit zwischen einem einfachen Python-Socket-basierten Server und Clients

+0

Die Antwort, die die meisten anderen Spieleentwickler haben, ist, dass (im Grunde genommen) Sie nie eine gute Synchronisation bekommen werden. Große Spiele wie wow und kin simulieren die meisten Aktionen auf der Client-Seite und pushen Updates in beide Richtungen. –

Antwort

1

Ich zufällig zufällig auf excruciatingly fine blog post auf wie verteilte Netzwerk Physik im Allgemeinen (ohne traditionelle Client-Vorhersage) zu tun. Ich empfehle es sehr, zusammen mit den GDC Folien, die Fiedler vor ein paar Jahren vorgestellt hat. Viel Glück!

+0

Danke, ich erinnere mich an diese Blogbeiträge von vor langer Zeit, als die Serie unvollständig war. Das letzte zum Thema Networking ist großartig und sollte viel helfen! – Alex

0

Dies ist eine sehr interessante Frage. Leider gibt es keine einfache Antwort. Sie müssen nur das Problem gut verstehen und sich für eine Lösung entscheiden, die gut genug ist für Ihre Anwendung.

Mein erster Instinkt war, dass die Network Time Protocol (NTP) zum Einstellen der Maschinenuhren von NTP-Servern dieses Problem adressiert hätte. Eines der dort angesprochenen Probleme betrifft Jitter Buffers, woraus sich packet delay variation ergibt. Dies wird in RFC 3393; IP Packet Delay Variation Metric for IP Performance Metrics (IPPM) ausgearbeitet.

+0

Ich werde in NTP schauen, das kann tatsächlich einen Einblick in meine Situation geben. – Alex

Verwandte Themen