W święta podobno się nie programuje, więc wziąłem się chwilowo za coś innego :) Postanowiłem więc zrealizować pomysł na artykuł, który przyszedł mi do głowy kilka dni temu – głównie pod wpływem kilku pytań o podobnej tematyce, jakie przewinęły się na forum Warsztatu.
Tak powstał tekst o nieco tajemniczym tytule Pętla czasu rzeczywistego, który w rzeczywistości jest prostym omówieniem prawidłowego sposobu konstrukcji głównej pętli gry i uaktualniania jej stanu zależnie od czasu – tak, by gra działała tak samo niezależnie od wydajności sprzętu. Sprawy to dość proste, ale ważne i najwyraźniej zbyt często pomijane. Myślę więc, że taki artykuł ma niezerową szansę, żeby komuś się przydać :)
Jak zwykle kawał dobrej roboty.
Artykul jest ciekawy. Szczegolnie dla takich nubkow jak ja, ale nie moge zrozumiec jednej rzeczy.
Czemu tylko, gdy _nie_ zachodzi zdarzenie uaktualniamy stan gry itd? Nie mozna zrezygnowac z tego else:
Jezeli zaszlo zdarzenie to je obsluz, a nastepnie uaktualnij stan.
Jaka jest roznica?
zerlo – a jeśli zdarzeniem jest zamknięcie aplikacji, zmiana jakiś parametrów wyświetlania to po co wykonywać dalszą część?
Tak btw. Fajny tutorial, na pewno komuś się przyda.
zerlo: Z dwóch powodów:
1. Najczęściej zdarzenia w ogóle nie zachodzą. Zostaw np. myszkę i klawiaturę, to okno gry nie dostanie właściwie żadnych komunikatów i nie będzie się odświeżało, a gra będzie stała w miejscu. A czas płynie.
2. Jeżeli byśmy odrysowywali ekran tylko po obsłużeniu jakiegoś zdarzenia, to kolejne klatki pojawiałyby się tylko po kliknięciach albo wciśnięciach klawiszy. Gdzie tu płynność? Rysować trzeba cały czas.
Nie chodzilo mi o “tylko po obsluzeniu”. Mialem na mysli nie przerywanie danego kroku petli (nie wiem jak to nazwac) po obsluzeniu. Czyli o usuniecie “else” po warunku.
if (ZaszloZdarzenie()) ObsluzZdarzenie();
UaktualnijStanGry();
Rysuj();
Ale chyba Toudi to wyjasnil. Dzieki.
Bo jak dostaniesz dwa komunikaty pod rząd, to zamiast dwa razy rysować, obsłużasz dwa komunikaty i dopiero rysujesz.
Brakuje mi jednej opcji dotyczącej artykułów – “Wersja do druku”