Zakodowałem aplikację Bomberman, która używa połączenia typu peer-to-peer. Problem polega na tym, że po pewnym czasie gra nie jest już zsynchronizowana.Zestaw do gier Peer to Peer
Przyjrzałem się przykładowemu kodowi dla GKTanks i użyłem ich modelu. Nie ma relacji klient/serwer między równorzędnymi, więc nie użyłem jej w mojej grze. Obaj rówieśnicy utrzymują gamestat, który aktualizują na podstawie otrzymanych danych.
Mam NSTimer, który jest używany do uruchamiania gameloop w każdej klatce. NSTimery nie są zsynchronizowane, więc czasami gamestaty stają się różne: gracze zbierają powerup w przybliżeniu w tym samym czasie i obaj dostają powerup, ponieważ przesłanie danych zajmuje trochę czasu.
Byłbym wdzięczny za każdy pomysł, aby aplikacja działała. Zastanawiam się nad przepisaniem kodu na serwer klienta, ale nie jestem pewien, czy to dobry pomysł ... jeszcze
Dziękuję!
EDYCJA: Zmieniłem kod tak, aby losowy gracz został wybrany jako gospodarz. Za każdym razem, gdy gracz umieszcza bombę, pyta serwer, gdzie ją umieścić. Serwer zwraca pozycję gracza (jak widać na serwerze), a następnie informuje gracza, gdzie umieścić bombę.
Dla ulepszeń serwer sprawdza, czy gracz podniósł powerup, a jeśli to zrobił, wysyła pakiet informujący go.
Kolejny problem pojawił się teraz. Opóźnienie między urządzeniami jest wysokie (korzystam z połączenia Bluetooth). Potrzeba około 0,2 sekundy, aby umieścić bombę po tym, jak klient stuknął przycisk, aby ją umieścić.
Wysyłam wszystkie dane niezawodnie. Czy robię to dobrze?