Ich muss die Bewegung mehrerer Spieler über das Internet synchronisieren und versuche herauszufinden, wie dies am sichersten ist.
Das Spiel basiert auf Kacheln, Sie können sich nur in 4 Richtungen bewegen und jede Bewegung bewegt das Sprite 32px (natürlich im Laufe der Zeit). Wenn ich diese Verschiebungsaktion einfach an den Server senden würde, der sie an alle Spieler sendet, während die Walk-Taste gedrückt bleibt, um weiterzulaufen, muss ich diesen nächsten Befehl ausführen und an den Server senden. und für alle Kunden, rechtzeitig, oder die Bewegung wird nicht mehr reibungslos sein. Ich habe das in anderen Spielen gesehen und es kann ziemlich schnell hässlich werden, auch ohne Verzögerung. Ich frage mich also, ob dies überhaupt eine praktikable Option ist. Dies scheint jedoch eine sehr gute Methode für Einzelspieler zu sein, da es einfach und unkompliziert ist (nehmen Sie einfach die nächste Bewegungsaktion rechtzeitig vor und fügen Sie sie einer Liste hinzu) und Sie einfach Mausbewegungen hinzufügen können (Klicken auf eine Kachel). Um einer Warteschlange einen Pfad hinzuzufügen, wird dieser ausgeführt.
Das andere, was mir in den Sinn kam, war das Senden der Information, dass sich jemand in eine Richtung bewegt hat, und erneut, sobald er angehalten oder die Richtung geändert hat, zusammen mit der Position, damit das Sprite an der richtigen Position erscheint, oder besser gesagt, dass Die Position kann festgelegt werden, wenn sie falsch ist. Dies sollte (hoffentlich) nur dann zu Problemen führen, wenn jemand wirklich zurückbleibt. In diesem Fall ist dies zu erwarten. Damit dies funktioniert, würde ich allerdings eine Art Warteschlange benötigen, in der eingehende Richtungsänderungen und andere Dinge gespeichert werden, damit das Sprite weiß, wohin es gehen soll, nachdem die aktuelle Bewegung zur nächsten Kachel abgeschlossen ist. Das könnte tatsächlich funktionieren, klingt aber irgendwie zu kompliziert. Obwohl dies möglicherweise der einzige Weg ist, ohne das Risiko eines Stotterns. Wenn auf der Client-Seite ein Stopp oder eine Richtungsänderung eingeht, wird ' s wird in einer Warteschlange gespeichert und das Zeichen bewegt sich weiter zu den angegebenen Koordinaten, bevor es stoppt oder die Richtung ändert. Wenn der neue Befehl zu spät kommt, wird es natürlich auch stottern ...
Es fällt mir schwer, mich für eine Methode zu entscheiden, und ich konnte noch keine Beispiele dafür finden. Mein Hauptproblem ist es, die Kachelbewegung reibungslos zu halten, weshalb andere Themen zur Synchronisation pixelbasierter Bewegungen nicht allzu viel helfen.
Was ist der "Standard" Weg, dies zu tun?