Ostatnio miałem do czynienia z niektórymi problemami z drganiami dotyczącymi liczby klatek na sekundę w mojej grze i wydaje się, że najlepszym rozwiązaniem byłoby to zaproponowane przez Glenna Fiedlera (Gaffer o grach) w klasycznej wersji Napraw swój timestep! artykuł.
Teraz - używam już ustalonego przedziału czasu dla mojej aktualizacji. Problem polega na tym, że nie wykonuję sugerowanej interpolacji do renderowania. Rezultatem jest to, że podwajam lub pomijam klatki, jeśli mój współczynnik renderowania nie odpowiada mojemu współczynnikowi aktualizacji. Mogą być zauważalne wizualnie.
Chciałbym więc dodać interpolację do mojej gry - i interesuje mnie, w jaki sposób inni ustrukturyzowali swoje dane i kod do obsługi tego.
Oczywiście będę musiał przechowywać (gdzie? / Jak?) Dwie kopie informacji o stanie gry odpowiednie dla mojego renderera, aby mogły się między nimi interpolować.
Dodatkowo - wydaje się, że to dobre miejsce na dodawanie wątków. Wyobrażam sobie, że wątek aktualizacji mógłby działać na trzeciej kopii stanu gry, pozostawiając pozostałe dwie kopie jako tylko do odczytu dla wątku renderowania. (Czy to dobry pomysł?)
Wydaje się, że ma dwa lub trzy wersje stanie w grze może wprowadzić wydajność i - znacznie ważniejsze - niezawodność i produktywność programistów problemów, w porównaniu do posiadania tylko jednej wersji. Dlatego szczególnie interesują mnie metody łagodzenia tych problemów.
Myślę, że na szczególną uwagę zasługuje problem z dodawaniem i usuwaniem obiektów ze stanu gry.
Wreszcie wydaje się, że jakiś stan albo nie jest bezpośrednio potrzebny do renderowania, albo byłoby zbyt trudne do śledzenia różnych wersji (np. Silnika fizyki innej firmy, który przechowuje pojedynczy stan) - więc chciałbym wiedzieć, jak to zrobić ludzie przetwarzali tego rodzaju dane w takim systemie.