Najlepsza odpowiedź brzmi: to zależy .
Nie musisz ograniczać żadnego z nich
Aktualizacje : Jeśli twoje aktualizacje nie są ograniczone do górnego limitu, logika gry powinna zależeć od czasu delta , aby uniknąć szybszego lub wolniejszego uruchamiania gry w zależności od komputera, na którym jest uruchomiona. Jest to bardzo popularne podejście stosowane w wielu grach, ale nie tylko.
Renderowanie : jeśli renderowanie nie jest ograniczone do górnej granicy, bufor ramki może być prezentowany w stanie niekompletnym lub błędnym, powodując artefakty rozdzierania . Właśnie dlatego wiele gier wykorzystuje synchronizację pionową (v-sync)
Możesz ograniczyć jedno i drugie
Aktualizacje : Niektóre gry wykorzystują ustalone czasy dla niektórych lub wszystkich swoich systemów rozgrywki. To podejście działa tak, jak opisano. Liczba aktualizacji na sekundę jest ograniczona do górnej granicy, aby zapewnić, że rzeczy nie poruszają się zbyt szybko na najwyższym poziomie. Eliminuje to potrzebę synchronizacji delta. Niektóre aplikacje są lepsze ze stałymi krokami czasowymi, niektóre z czasem delta. Wybór podejścia zależy całkowicie od tego, co dokładnie próbujesz osiągnąć. Książka online GameProgrammingPatterns zawiera rozdział poświęcony pętlom gry, które dotyczą obu architektur.
Renderowanie : Liczba klatek na sekundę powinna być ustawiona na górną granicę, aby uniknąć wyżej wspomnianego problemu z rozrywaniem, jednak aplikacja nie powinna próbować tego robić ręcznie z pewną blokadą procesora. Zamiast tego włącz synchronizację pionową i pozwól, aby sprzęt podkładowy zsynchronizował się z częstotliwością odświeżania monitora. W ten sposób twoja gra będzie kompatybilna z przyszłymi monitorami, które mogą działać na znacznie wyższej częstotliwości niż obecnie powszechne 60 Hz. Warto również zauważyć, że wielu graczy, szczególnie tych, którzy biorą udział w testach porównawczych, nadal woli biegać bez synchronizacji pionowej, aby umożliwić najwyższą możliwą częstotliwość klatek. Dlatego rozsądnie jest zezwolić na włączenie lub wyłączenie tej funkcji w czasie wykonywania.
Czego nie powinieneś ograniczać
Jeśli gra wykorzystuje podejście oparte na sondowaniu do wprowadzania danych przez użytkownika, np .: wywołuje pewnego getInput()
rodzaju aktualizację stanów kontrolera podczas etapu aktualizacji, jest to lepsze, jeśli nie ograniczone. Lub jeśli jest ograniczony, ustaw bardzo wysoką górną granicę. Im częściej pytasz o dane wejściowe użytkownika i reagujesz na nie, tym bardziej responsywna i płynna będzie gra. Tak zwane gry 60 Hz, o których dziś słyszymy, nie aktualizują AI i wszystkich stanów świata w tym tempie, niektóre nawet nie renderują tak szybko, ale sprawdzają dane wejściowe kontrolera co najmniej 60 razy na sekundę i odpowiednio aktualizują awatar gracza. To prawda, że dotyczy to tylko szybkich gier akcji.