Blog Tworzę grę o piratach #3 - Szkielet UI
Post
Anuluj

Tworzę grę o piratach #3 - Szkielet UI

Wrzucam kolejny status z tworzonej gierki w silniku Defold i języku programowania Lua. Standardowo jest wideo, tym razem udzielam w nim głosu, a techniczne rozwinięcie poniżej.

Jakie biblioteki dodałem?

  • Monarch - Biblioteka do zarządzania ekranami z przejściami, stworzona przez twórcę Defolda. Początkowo myślałem, że nie będzie mi potrzebna, jednak gdy wczytałem się w przykłady, dałem jej szansę. Świetnie obsługuje popupy i bardzo upraszcza natywne rozwiązania silnika.
  • Druid - Dodaje masę komponentów UI i przystępnym API. Na nagraniu wideo można zobaczyć efekty przy najeżdżaniu na przyciski, to zasługa tej biblioteki.

Jak to wygląda w mojej grze?

W zasadzie nie było tu nic trudnego w implementacji, co byłoby warte omówienia. Jedna z ciekawszych rzeczy to lekka zmiana w inputs_manager który, jak nazwa wskazuje, zajmował się obsługą kliknięć i klawiszami, otóż pozbyłem go części kompetencji. Biblioteka Druid dodaje możliwość przypisania klawiszy do konkretnych przycisków, więc akcje, takie jak atak albo przejście do menu pauzy, są teraz przypisane do przycisków lub obsługiwane przez skrypt przypisany do pliku .gui.

Jeśli chodzi o przyciski akcji, to na początku myślałem, że do obsługi tych dwóch funkcji wystarczy jeden przycisk, który zmieniałby swój stan, w zależności od sytuacji. Niestety praktyka zweryfikowała, że tak się nie da z uwagi na to, że możemy zaatakować jakiś statek, i jednocześnie zaznaczyć jakiś inny, a wtedy powinniśmy mieć przycisk ataku aktywny, tak żeby móc zaatakować ten drugi okręt. Jednocześnie powinna być możliwość zastopowania ataku na pierwszy okręt. Dwa przyciski skutecznie rozwiązały sytuację.

Podsumowanie

Szkieletem UI zająłem się teraz, bo średnio mi szło myślenie nad wyszukiwaniem ścieżek. Zrobiłem odnośnie do tego tak zwany research, no i wyszło że najlepszym sposobem będzie implementacja algorytmu HPA, czyli hierarchicznego *A. Nie ma do tego gotowych bibliotek w języku LUA, więc będzie to trzeba napisać od podstaw. Przez wakacje nie miałem do tego głowy, tak mijał czas, a ja przy grze nie robiłem nic. W końcu zająłem się tym nieszczęsnym UI, żeby był jakikolwiek progres. Teraz mam zamiar zająć się zapisywaniem i odczytywaniem stanu gry.

Do usłyszenia!

Ten post jest udostępniony na licencji CC BY-NC-ND 2.0 przez autora.