Obecnie pracuję nad odgórną strzelanką zombie w czasie rzeczywistym. Piszę to w Javie, używając JBox2D jako mojego silnika fizyki. W tym tygodniu kodowałem sieć i jestem teraz gotowy do synchronizacji fizyki.
Planuję użyć predykcyjnego modelu klient / serwer autorytatywny, w którym klient może się swobodnie poruszać, o ile serwer zaakceptuje go później. Wiąże się to z wysłaniem przez klienta pakietów zawierających dane o ruchu do serwera oraz obliczeniem opóźnienia i ponownym symulowaniem świata ze starszego stanu.
Mój problem polega na tym, że mój obecny silnik fizyki, JBox2D (w zasadzie port Box2D), nie obsługuje cofania świata i najwyraźniej nie jest tak łatwo serializować światowe dane. Mam 2 rozwiązania, mogę albo zmodyfikować / rozszerzyć mój obecny silnik fizyki, albo napisać własny.
Powody, dla których napisałem własny silnik fizyki -
- Mogę usunąć niepotrzebne funkcje. W odgórnej grze potrzebuję tylko mechaniki kolizji i sił manipulacyjnych. Nie dotyczy to grawitacji.
- Mogę lepiej zrozumieć kod i [najprawdopodobniej] łatwiej byłoby zaimplementować funkcje przywracania
Powody rozszerzenia / modyfikacji JBox2D
- Pisanie własnego silnika fizyki wymagałoby dużo pracy, co może być kłopotliwe
- JBox2D ma bardzo wspierającą społeczność, która może mi pomóc z moim twórcą
- JBox2D ma specyficzne optymalizacje, takie jak wykrywanie kolizji, co czyni go użytecznym
- Niektóre prace zostały już wykonane, ale udostępniono niewiele kodu
Jakie są twoje opinie? To moja pierwsza gra i nie jestem profesjonalnym twórcą gier. Jeśli ktoś może podać linki do pracy już wykonanej w tym obszarze (najlepiej używając JBox2D / Box2D / Java).
strictfp
wszędzie, co poważnie wpłynie na wydajność. W przeciwnym razie serwer i klient mogą nie uzyskać dokładnie takich samych wyników. Poleciłbym zamiast tego użyć stałego punktu.