Ich arbeite an einem vernetzten Multiplayer-Spiel, zunächst für iOS.
Selbst mit TCP_NODELAY gibt es große Latenzschwankungen. Ich kann mir des Grundes nicht sicher sein, aber ich wäre nicht überrascht, wenn der Paketverlust aufgrund flockiger Verbindungen erneut auftreten würde.
Nachdem ich im Gegensatz zu TCP (mit dem ich viel Erfahrung habe) keine echte Serverarbeit mit UDP geleistet habe, frage ich mich, ob der Versuch einer UDP-basierten Architektur signifikante Vorteile bringt.
Client-Pakete bestehen normalerweise nur aus wenigen Bytes und werden nur selten gesendet, außer beim Verschieben, wenn der Player möglicherweise 2-8 Befehle / s ausgibt. Serverpakete sind etwas größer und werden meist als Antwort auf einen Clientbefehl gesendet.
Verbindungen müssen zuverlässig und bestellt sein.
ZUSÄTZLICHE INFORMATION
Sehr früh habe ich einige Erkundungstests mit TCP im Vergleich zu UDP durchgeführt. Ich würde Verbindungen herstellen Phone -> 3G -> External static IP of router -> Wifi -> Development computer
und Phone -> Wifi -> Router -> Wifi -> Development computer
.
Was ich verbessern wollte, war hauptsächlich die sehr ungleichmäßige Verzögerung, die man beim Bewegen auf der Karte mit einer nicht lokalen Verbindung erleben würde.
Natürlich kann das Starten von Animationen helfen, aber es gibt (seltene, aber gültige) Gründe, warum ein Verschiebungsbefehl abgelehnt werden kann, die der Client nicht vorhersagen kann. Darüber hinaus sind viele Daten vor dem Client verborgen, was wiederum nur sehr wenig Raum für prädiktive Antworten bietet.
Wie auch immer, meine Ergebnisse waren, dass UDP und TCP beim Senden von Daten fast die gleiche durchschnittliche Latenzzeit hatten.
Was ich nicht gesehen habe, war die tatsächliche Verbreitung - zum Beispiel die maximale TCP-Latenz angesichts des Paketverlusts. Ich hätte einen Paketwiederherstellungsmechanismus in UDP durchführen müssen, um herauszufinden, ob UDP es besser machen könnte.
Also noch einmal die Ergebnisse , die ich mit TCP heute sehen , ist , dass in der Regel funktioniert es gut, dann plötzlich eine Verlangsamung und ein Platzen der Bewegung wie alle anderen gepufferten Pakete sind mehr oder weniger zur gleichen Zeit ausgeführt.