Najbardziej udane silniki konkurencyjna gra jak id Tech
, GoldSrc
, Source
i takie pozwalają na ograniczenia framerate.
Możesz grać z 30, z 60, z 99, z 72, z 68 itd. Krótko mówiąc, możesz je ograniczyć i kontrolować ten limit.
Zastanawiałem się, jak mogę ograniczyć ilość klatek na sekundę?
Nie interesuje się kodem, ale teorią.
frame-rate
joltmode
źródło
źródło
Odpowiedzi:
Teoria brzmi: Sprawdź, kiedy ostatnio renderowałeś ramkę, a jeśli nie jest jeszcze czas, aby narysować kolejną ramkę, nie rób tego i poczekaj, aż będzie.
źródło
Załóżmy, że chcesz ograniczyć liczbę klatek na sekundę do 60 klatek na sekundę, co oznacza, że każda klatka ma czas renderowania 1 / 60s = 16,67 ms (w zaokrągleniu)
Aby ograniczyć liczbę klatek na sekundę, wystarczy sprawdzić czas na początku pętli gry, a następnie porównać go z czasem na końcu pętli gry: jeśli różnica jest mniejsza niż 16,67 ms, należy zatrzymać się na ten czas.
Jednym ze sposobów na to jest użycie:
Ponieważ jednak
sleep(x)
daje wątek przez minimumx
milisekundy, nie wiesz na pewno, czy odzyskasz kontrolę w czasie.Lepszym sposobem byłoby użycie:
Daje to wątek i zwraca kontrolę jak najszybciej.
Innym rozwiązaniem jest po prostu zajęta pętla oczekiwania, co daje najlepszą kontrolę, ale niepotrzebnie wykorzystuje procesor.
Pamiętaj, że harmonogram systemu operacyjnego może zawsze odebrać kontrolę nad twoim wątkiem, więc przygotuj się na pewne wahania.
źródło