Biblioteki C++
Budowa szkieletu gry
[lekcja] Rozdział 2. W niniejszym rozdziale opisano jak powinien być skonstruowany szkielet gry.Budowa szkieletu gry choć z pozoru brzmi prozaicznie to nie jest tak oczywista jak mogłoby się wydawać. Jeżeli do tej pory pisałeś tylko aplikacje konsolowe bądź aplikacje typowo okienkowe to z pewnością niniejszy rozdział będzie dla Ciebie dobrym materiałem do pozyskania nowej wiedzy, a tym samym dobrą metodą na zdobycie nowego doświadczenia.
Każda gra niezależnie od swojego gatunku i rozmiaru projektu zbudowana jest u podstaw tak samo. Każda gra posiada główną pętlę, w której wykonują się różne zdarzenia takie jak np.:
W związku z tym, że w grze występuje mnóstwo zdarzeń, które mogą zachodzić jednocześnie (np. animowanie kilku postaci naraz) - podejście stosowania pętli znane Ci z tworzenia konsolowego oprogramowania w wielu przypadkach nie będzie możliwe do zastosowania. Pisząc grę nie będziesz mógł zrealizować systemu animacji poszczególnych postaci za pomocą pętli - co więcej niemożliwym też będzie zrealizowanie ruchu wybranego obiektu na scenie przy pomocy pętli. Oznacza to, że koniecznym jest odrzucenie dotychczasowej metodologii wytwarzania oprogramowania i otworzenie się na nową wiedzę, która niewątpliwie będzie Ci niezbędna do stworzenia własnej gry.
Budowa typowego szkieletu gry
Skoro już wiesz jakie problemy napotykają początkujący programiści gier, zobaczmy teraz jak wygląda uniwersalny i sprawdzony w praktyce szkielet gry:
bool bIsRunning = true;
while( bIsRunning )
{
if( )
bIsRunning = false;
}
Jak wynika z powyższego kodu szkieletem całej gry jest w praktyce nieskończona pętla, w której umieszczane będą pozostałe elementy gry takie jak renderowanie sceny, przemieszczanie obiektów czy też ich animacje. Nieskończona pętla zostanie przerwana w chwili gdy zostanie spełniony określony warunek, którym zazwyczaj jest chęć wyjścia z aplikacji.
Budowa szkieletu gry w bibliotece SFML
Na zakończenie zamieszczę jeszcze kompletny kod aplikacji, który demonstruje wygląd typowego szkieletu gry zrealizowanego w bibliotece SFML:
#include <SFML/Graphics.hpp>
int main()
{
sf::RenderWindow oknoAplikacji( sf::VideoMode( 800, 600, 32 ), "Wytwarzanie Gier 2D, C++ | http://cpp0x.pl" );
while( oknoAplikacji.IsOpened() )
{
sf::Event zdarzenie;
while( oknoAplikacji.GetEvent( zdarzenie ) )
{
if( zdarzenie.Type == sf::Event::Closed )
oknoAplikacji.Close();
if( zdarzenie.Type == sf::Event::KeyPressed && zdarzenie.Key.Code == sf::Key::Escape )
oknoAplikacji.Close();
}
oknoAplikacji.Display();
}
return 0;
}
Wszystkie teksty są chronione prawami autorskimi. Kopiowanie lub rozpowszechnianie treści poza niniejszym serwisem
jest zabronione.
Powyższe ograniczenie nie dotyczy autora opracowania, któremu przysługuje prawo do rozpowszechniania własnego tekstu wedle własnego uznania.