5 Stimmen

Spielkit Peer to Peer

Ich habe eine Bomberman-Anwendung programmiert, die eine Gamekit-Peer-to-Peer-Verbindung verwendet. Das Problem ist, dass nach einer Weile das Spiel nicht mehr synchronisiert ist.

Ich habe mir den Beispielcode für GKTanks angesehen und ihr Modell verwendet. Es gibt keine Client/Server-Beziehung zwischen den Peers, also habe ich keine in meinem Spiel verwendet. Beide Peers verwalten einen Spielstand, den sie anhand der empfangenen Daten aktualisieren.

Ich habe einen NSTimer, der für die Ausführung des Gameloops bei jedem Frame verwendet wird. Die NSTimers sind nicht synchron, so dass manchmal die Gamestates unterschiedlich werden, z.B. wenn Spieler ein Powerup ungefähr zur gleichen Zeit abholen und beide das Powerup bekommen, weil es eine Weile dauert, Daten zu senden.

Ich würde mich über jede Idee freuen, wie man die App zum Laufen bringt. Ich denke daran, den Code umzuschreiben, um Client-Server zu verwenden, aber ich bin nicht sicher, ob es eine gute Idee ist... noch

Ich danke Ihnen!

EDIT: Ich habe den Code so geändert, dass ein zufälliger Spieler als Gastgeber ausgewählt wird. Jedes Mal, wenn ein Spieler eine Bombe platziert, fragt er den Server, wo er sie platzieren soll. Der Server gibt die Position des Spielers zurück (wie auf dem Server zu sehen) und sagt dem Spieler dann, wo er die Bombe platzieren soll.

Bei Powerups prüft der Server, ob ein Spieler ein Powerup aufgesammelt hat, und wenn ja, sendet er ein Paket, das ihn darüber informiert.

Jetzt ist ein weiteres Problem aufgetreten. Die Latenzzeit zwischen den Geräten ist hoch (ich verwende eine Bluetooth-Verbindung). Es dauert etwa 0,2 Sekunden, um eine Bombe zu platzieren, nachdem der Kunde auf die Schaltfläche getippt hat, um sie zu platzieren.

Ich sende alle Daten zuverlässig. Mache ich das richtig?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X