Skocz do zawartości

Pętla gry


Utermiko

Rekomendowane odpowiedzi

Wydaje mi się, że ten dział będzie odpowiedni.

 

Otóż chodzi mi o to, która pętla gry jest wg. was bardziej optymalna?

Z góry mówię, że czytałem już to: http://www.koonsolo.com/news/dewitters-gameloop/.

 

Wszystko przedstawiam w pseudo kodzie.

 

1) Pętla ze stałą ilością aktualizacji, która redukuje fps'y jeśli mamy za mało mocy.

const int FRAMES_PER_SECOND = 60;
const int SKIP_TICKS = 1000 / FRAMES_PER_SECOND;

int next_game_tick = GetTickCount();
int current_time = GetTickCount();

int sleep_time = 0;

bool game_is_running = true;

while( game_is_running )
{
    current_time = GetTickCount();
    if (current_time >= next_game_tick)
    {
        next_game_tick += SKIP_TICKS;
        update();
        if(current_time < next_game_tick) render();    
    }    
}

 

2) Pętla w której obiekty poruszają się na podstawie czasu ostatniej klatki, czyli z użyciem delta time

    int prev_frame_tick;
    int curr_frame_tick = GetTickCount();

    bool game_is_running = true;
    while( game_is_running ) {
        prev_frame_tick = curr_frame_tick;
        curr_frame_tick = GetTickCount();

        update( curr_frame_tick - prev_frame_tick );
        render();
    }

 

(pewnie gdzieś walnąłem błąd w kodzie bo szybko przepisywałem :P)

 

Z góry dzięki za pomoc.

 

@EDIT Jeszcze znalazłem: http://gamedev.stackexchange.com/questions...iable-time-step.

Chyba lepszym wyborem będzie opcja pierwsza, ale czekam na inne opinie.

Odnośnik do komentarza
Udostępnij na innych stronach

To co podałeś to bazowy przykład, pętla gry jest znacznie, znacznie bardziej skomplikowana. Np: Update fizyki robisz co jakiś fixed time, masz jeszcze update eventów, sieci, sceny, zasobów itp itd lista leci. Część z nich ma update co klatkę, część co fixed time, część co zmienną deltę zależną od różnych parametrów gry. Najlepiej po prostu co klatkę obliczać deltę jak w drugim przykładzie, trzymać tą wartość i przekazywać do podsystemów, jak będą potrzebowały robić update co fixed time to delta do tego wystarczy.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...