Podejście: wyższy wskaźnik symulacji
Twoje wyczucie interfejsu użytkownika powinno być oddzielone od rzeczywistej pętli gry, podobnie jak renderowanie. Powiedz na przykład, że twój świat biegnie z prędkością 4x. Powiedzmy, że przy podstawowej (1x) prędkości Twoja gra uruchamia 30 aktualizacji na sekundę.
W trybie szybkiego przewijania będziesz mieć coś takiego:
- Światowa logika uruchamia 4 aktualizacje dla każdej aktualizacji interfejsu użytkownika i mechanizmu renderującego. Oznacza to, że musi uruchamiać 120 aktualizacji na sekundę. W ten sposób Twój model świata (dane) jest aktualizowany w tym tempie.
- Renderowanie i logika interfejsu użytkownika nadal odpytują lub robią cokolwiek przy 30 aktualizacjach na sekundę.
Innymi słowy, gra jako całość nie działa szybciej. Część symulacyjna jest.
Możesz z tego wywnioskować dwie rzeczy:
Musisz utrzymać logikę gry na tyle prostą, abyś mógł ją z łatwością uruchomić cztery razy szybciej na docelowej platformie, LUB musisz wprowadzić metody szybszej ekstrapolacji różnych aspektów gry - może to jednak skutkować modelem, który jest różni się od tego, co by było, gdybyś po prostu użył szybszej symulacji. Zatem kompromisem będzie koszt przetwarzania dla dokładności. Zobacz podejście 2 poniżej.
To oddzielenie problemów pozwala z łatwością przyspieszyć symulację świata, przy czym separacją jest model, widok i kontroler ( MVC ). Jeśli twoje dane świata (M), logika renderowania (V) i logika gry (C) są pomieszane, naprawdę nie będziesz w stanie tego zrobić, przynajmniej nie bez ogromnej migreny.
Podejście: ekstrapolacja oparta na delcie czasowej
Jak wspomniano powyżej, musisz obliczyć ruch na podstawie tego, jak daleko coś by przebyło w danym czasie. Zakłada się jednak, że fizyka gry jest z natury bardziej realistyczna w symulacji, co może nie być prawdą. Jest to raczej większy temat i znacznie bardziej złożony. Musisz zadać więcej pytań, jeśli chcesz wiedzieć. Zasadniczo będziesz robić rachunek różniczkowy, aby wszystko było dobrze. Będziesz musiał poradzić sobie z przenikaniem się kolizji i wieloma innymi zagadnieniami, o których tu nie będę mówić.
Podsumowując
To daje ogólny zarys. Twój wybór języka należy do ciebie, prawdopodobnie albo wiesz, jak to zrobić w Unity, albo nie. Czas w każdym języku wymaga szczegółowego zrozumienia tajników, sugeruję zacząć od artykułów Gaffera i przejrzeć dokumenty Unity API.