Tworzenie gry strategicznej typu Dune 2.


Poprzedni wpis (5) | Następny wpis (7)

Wpis 6 (27.09.2016)

Temat: Komunikacja między Modułami

W dzisiejszym odcinku nakreślę całokształt algorytmu silnika gry. Postaram się ująć wszystkie niezbędne aspekty gry w jedną całość. Wówczas opracowanie reszty prototypów funkcji oraz implementacji będzie dużo prostsze. Przede wszystim skupię się na bardziej szczegółowym opisie roli Modułów oraz ich wzajemnej interakcji.

1. Inicjalizacja modułu logicznego

Od jakich czynności zaczyna się praca silnika gry? Otóż na początku moduł logiczny tworzy nową mapę lub wczytuje mapę z pliku (lub zapisany stan gry). Funkcja czytająca wczytuje informacje o wszystkich elementach mapy, również struktury budynków, jednostek i dodatkowych elementów jak pociski, wybuchy itp. rzeczy wchodzących w skład mapy. Należy wczytać ich położenie oraz aktualny stan. Sposób przechowywania tych rzeczy w pliku zależy od formatu pliku, który pozostanie do opracowania.

2. Inicjalizacja modułu graficznego

Bezpośrednio po tym zostaje zainicjowany moduł graficzny. Najpierw wczytuje grafikę bieżącej scenerii do pamięci, a następnie tworzy obraz mapy na podstawie struktury mapy. Na obraz mapy składa się statyczny teren oraz wszystkie elementy animowane, jak budynki, jednostki i dodatkowe efekty graficzne. Moduł graficzny przygotowuje najpierw teren statyczny na podstawie terenu na mapie i go zapamiętuje.

3. Cykl życia obiektów modułu logicznego

Po zainicjowaniu modułów, silnik działa w ten sposób, że co pewien ustalony cykl wywoływane są funkcje obsługi obiektów, które aktualizują status obiektów (budynków, jednostek itp.). Wówczas budynki są reperowane, modernizowane, badź prowadzone są badania itd.

4. Współpraca modułu graficznego i modułu interfejsu użytkownika

Jednocześnie moduł interfejsu oraz graficzny również pracują, aktualizując swój status co jednostkę czasu. Moduł graficzny jednakowóż nie zajmuje się wyświetleniem! Tym zajmuje się moduł interfejsu użytkownika, który pobiera widoczny obszar mapy od modułu graficznego i go wyświetla bądź aktualizuje. Kiedy użytkownik przesunął widoczny obszar, moduł interfejsu pobiera obraz tego obszaru z modułu graficznego - wysyła prośbę o przesłanie lub wygenerowanie tego obszaru.

Reasumując moduł graficzny zajmuje się rysowaniem, ale nie wysyła komunikatów o aktualizacji jakiegoś obiektu do interfejsu użytkownika. Dopiero interfejs użytkownika pyta się o taką aktualizację, prosząc o jej dokonanie.

5. Praca modułu interfejsu użytkownika

Moduł intefejsu zajmuje się również wyświetlaniem panelu użytkownika oraz pobieraniem sygnałów z myszy i klawiatury, które konwertuje do odpowiednich wydarzeń, np. naciśnięcia przycisku budowy budynku itp.

Jeśli przykładowo użytkownik kliknie na mapie by zaznaczyć jednostkę, to jest rolą modułu logicznego, by sprawdzić, czy tam gdzie użytkownik kliknął  znajduje się jakaś jednostka (bo tylko moduł logiczny to wie). Jeśli się znajduje, jednostka zostaje zaznaczona, co odzwierciedlone zostanie też na mapie podczas aktualizacji obrazu mapy.

Robert Szacki e-mail: robert.szacki(małpa)gmail.com