Autor Wątek: Pętla bez lagów w logice.  (Przeczytany 1202 razy)

Offline taki_sobie

  • Użytkownik

# Czerwiec 27, 2012, 07:50:17
Zwykła pętla gry zwykle opiera się na przetworzeniu zdarzeń, logice i renderowaniu.

W moim przypadku jest pewna obawa w sytuacji, gdy dochodzi do lagów. Wtedy rośnie delta_time i zdarza się, że niektóre kolizje typu box to box nie zostają wykryte.

Chciałbym zrobić tak, że logika przetwarza się raz bądź kilka razy, aktualizując status gry. Natomiast gdy zostanie trochę czasu to jest on przeznaczany na renderowanie. Po prostu wolałbym, aby user widział czarny ekran niż lagi w których dzieją się dziwactwa.

Nie wiem jaki postawić warunek pozwalający ocenić czy już można renderować.

Dzięki za uwagę.

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

# Czerwiec 27, 2012, 09:31:42
float delta = getTimeDelta();
if(delta > 0.1) delta = 0.1; // jeżeli tak mocno lagujemy, to coś jest nie tak
if(delta < 0) delta = 0; // tutaj definitywnie było by coś nie tak

while(delta > MIN_LOGIC_STEP)
{
  doLogic( MIN_LOGIC_STEP );
  delta -= MIN_LOGIC_STEP;
}

if(delta>0)
  doLogic(delta);

EDIT: Dodatkowo możesz chcieć dla szybko poruszających się obiektów robić dokładniejsze kolizje (czasem nie ma po co dusić całego systemu dla kilku elementów).

Offline taki_sobie

  • Użytkownik

# Czerwiec 27, 2012, 15:33:58
Dzięki.