Android

System Android

Od jakiegoś czasu zajmujemy…

Android

Od jakiegoś czasu zajmujemy się z narzeczoną tworzeniem amatorskiej gry na telefony z systemem Android inspirowanej tytułami takimi jak Gothic (interakcje bohatera z postaciami niezależnymi, sposób budowy modelu świata) czy Baldur’s Gate 2 (oprawa graficzna). Z założenia rozgrywka ma opierać się przede wszystkim na dialogach i eksploracji umiarkowanie fantastycznego świata. Na ten moment robimy to przede wszystkim w celach edukacyjnych (narzeczona uczy się grafiki 3D, ja jestem programistą i mam okazję eksperymentować z różnymi konceptami dotyczącymi architektury projektu), a dla mnie to też spełnienie marzenia z dzieciństwa. Mimo to staramy się zbierać opinie innych, ponieważ pomagają nam one odpowiednio kierować pracami i ulepszać grę.

Od strony kod większość gry powstaje w czystym Kotlinie, do integracji z platformą użyty jest LibGdx, ale sama gra nie jest pisana w LibGdx ani od niego zależna – jest on zintegrowany w formie modułu implementującego interfejsy definiowane przez grę i mógłby być wymieniony na dowolną bibliotekę oferującą ten sam zestaw funkcji bez potrzeby ingerencji w kod samej gry.

Jeśli ktokolwiek jest zainteresowany to chciałem opisać kilka rozwiązań technicznych, może ktoś kto też w wolnym czasie tworzy gry będzie w stanie z tego skorzystać.

Renderowanie świata

W naszym pierwszym podejściu do tematu próbowaliśmy z rysowanymi grafikami w rzucie top-down (zrzut ekranu)- efekt był jednak daleki od zadowalającego, w związku z czym postanowiliśmy spróbować ze wstępnie renderowanymi grafikami w rzucie izometrycznym. Z początku oparliśmy grę na pojedynczych, reużywalnych obiektach i zacząłem pisać edytor map (wideo), jednak i to rozwiązanie nie przypadło nam do gustu, ponieważ wygląd świata za bardzo podkreślał strukturę kafelków.

Na ten moment przygotowujemy całość mapy w Blenderze. Miejsca, w których mają nastąpić kolizje zaznaczamy czarnymi wielokątami umieszczonymi w osobnej kolekcji, wo osobnych kolekcjach przechowujemy też tło (teren, niskie rośliny) i obiekty pierwszego planu (takie, które mogą zasłonić gracza). Oto jak wygląda prototyp przykładowej sceny (zrzut ekranu).

Rendering poszczególnych kafelków i składanie ich w mapę następuje automatycznie przy pomocy stworzonego w tym celu skryptu w Pythonie – iteruje on po wszystkich kafelkach, odpowiednio konfiguruje kamerę i trzykrotnie zmienia widoczność poszczególnych warstw aby osobno wyrenderować mapę kolizji, tło i pierwszy plan. Dla przykładowego kafelka efekty końcowy wygląda następująco (zrzut ekranu). Następnie przy uruchomieniu gra upraszcza mapę kolizji z formy graficznej do zbioru współrzędnych kafelków, które są zablokowane (w przyszłości ten etap mógłby się odbywać poza aplikacją, na przykład podczas budowania).

Po uruchomieniu gry otrzymujemy taki efekt (zrzut ekranu).

#gamedev #indiegamedev #blender #libgdx #kotlin #gothic #hilmar #android

Zmieniłem aplikację do...

Niech mi ktoś wyjasni czemu...

Archiwa
  • styczeń 2023 (17)
  • grudzień 2022 (9)
  • listopad 2022 (13)
  • październik 2022 (28)
  • wrzesień 2022 (35)
  • sierpień 2022 (8)
  • październik 2021 (11)
  • wrzesień 2021 (34)
  • sierpień 2021 (20)
  • lipiec 2021 (20)
  • czerwiec 2021 (28)
  • maj 2021 (20)
  • kwiecień 2021 (28)
  • marzec 2021 (23)
  • luty 2021 (20)
  • styczeń 2021 (34)
  • grudzień 2020 (31)
  • listopad 2020 (26)
  • październik 2020 (41)
  • wrzesień 2020 (27)
  • sierpień 2020 (21)
  • lipiec 2020 (35)
  • czerwiec 2020 (18)
  • maj 2020 (35)
  • kwiecień 2020 (23)
  • marzec 2020 (15)
  • luty 2020 (38)
  • styczeń 2020 (36)
  • grudzień 2019 (37)
  • listopad 2019 (30)
  • październik 2019 (43)
  • wrzesień 2019 (54)
  • sierpień 2019 (26)
  • lipiec 2019 (37)
  • czerwiec 2019 (47)
  • maj 2019 (64)
  • kwiecień 2019 (43)
  • marzec 2019 (20)
Może to Cię zainteresuje:
kapcie antypoślizgowe dla dzieci