Utermiko Opublikowano 16 Lutego 2013 Udostępnij Opublikowano 16 Lutego 2013 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 Więcej opcji udostępniania...
Will Opublikowano 16 Lutego 2013 Udostępnij Opublikowano 16 Lutego 2013 Jeśli zadajesz takie pytanie to znaczy, że możesz wybrać każdą opcje ale ogólnie rzecz biorąc najlepiej mieć po prostu napisane dwie wersje do wyboru z jakiegoś defa czy jakiejś opcji runtime. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Utermiko Opublikowano 16 Lutego 2013 Autor Udostępnij Opublikowano 16 Lutego 2013 Można i tak, ale czy są jakieś sytuacje gdzie użycie opcji 2 jest niezbędne lub bardziej optymalne od opcji 1? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Will Opublikowano 16 Lutego 2013 Udostępnij Opublikowano 16 Lutego 2013 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 Więcej opcji udostępniania...
Utermiko Opublikowano 17 Lutego 2013 Autor Udostępnij Opublikowano 17 Lutego 2013 Dzięki :) Temat do zamknięcia. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
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ę