Przeczytałem: Jak zaprojektować system powtórek Ale tak naprawdę nie odpowiada na moje pytanie.
Moja gra jest zbudowana z „widokiem” gry klienta jako oddzielnego programu od „modelu” i „kontrolera” serwera. (trochę jak MMO lub dowolna gra wieloosobowa zbudowana w ten sposób). Strona serwera jest zawsze „prawdą” gry, akceptuje tylko żądania akcji jako dane wejściowe od klientów oraz zdarzenia wyjściowe i komunikaty „bieżącego stanu”.
Model gry i zasady są w pełni deterministyczne z ustalonym cyklem aktualizacji „tykania”, więc po stronie serwera mogę rejestrować zarówno zdarzenia wysyłane do widoków klienta, jak i żądania akcji. Oba są powiązane z określonym numerem cyklu.
Pytanie brzmi: w takim przypadku, aby skonfigurować system odtwarzania, czy powinienem użyć danych wejściowych, żądań akcji użytkownika (jak tam sugerowano) lub zdarzeń?
Wydaje mi się, że oba dałyby dokładnie taką samą moc wyjściową. Jedyne różnice, które widzę to:
- Zdarzenia dają rzeczywisty wynik, podczas gdy żądania akcji muszą być przetwarzane w celu podania zdarzeń.
- Żądania akcji mogą wymagać znacznie mniej danych do zarejestrowania.
Czy są jeszcze inne rzeczy do rozważenia?
Oba działają, choć należy wziąć pod uwagę kilka rzeczy.
Najpierw pamiętaj, że musisz zapisać informacje o czasie. W przypadku gier z dowolną zmienną liczbą klatek na sekundę może to być szczególnie trudne; musisz upewnić się, że dane powtórki mogą zawierać dokładnie takie same informacje o czasie, jak gra pierwotnie używana do symulacji.
Musisz także uwzględnić poprawki w zachowaniu gry. Jeśli zarejestrujesz dane wejściowe, a następnie poprawisz dowolną część sposobu, w jaki dane wejściowe są obsługiwane, jak fizyka rozwiązuje itp., Twoje nagranie staje się nieważne. Nawet jeśli nagrywasz wydarzenia z gry, a jakakolwiek część ich interpretacji zmienia się, utkniesz.
Jeśli chcesz tylko odtworzyć, dobrym rozwiązaniem jest zapisanie konkretnej listy pozycji i obrotów dla podmiotu gracza wraz z informacjami o taktowaniu. Wyłącz jak najwięcej fizyki i innej logiki rozgrywki podczas odtwarzania. To, jak łatwe lub wykonalne, zależy od liczby innych obiektów, które należy zsynchronizować.
źródło