Wpis z mikrobloga

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
S.....7 - Od jakiegoś czasu zajmujemy się z narzeczoną tworzeniem amatorskiej gry na ...

źródło: comment_1586773415HWXgQ5HmHqbbENUi6oPy00.jpg

Pobierz
  • 17
@Gorion103: Właśnie z PoE braliśmy trochę inspiracji, ale zdajemy sobie też sprawę z tego, że ze względu na pracę we dwie osoby i brak mocnego komputera do renderingu nie będziemy w stanie skorzystać z wielu rozwiązań ani uzyskać zbliżonego jakościowo efektu. Niemniej z chęcią zaznajomię się z materiałem i może uda mi się coś zaczerpnąć.

P.S. Efekt zaszumienia zrzutu ekranu z gry w poście wynika z ustawień renderera - na bieżąco
@11_01_010_1010_00_10: Dzięki zarówno za miłe słowo jak i za uwagę. Nie wykluczam wersji na inne platformy, na ten moment wszystko mam napisane tak, że kod samego silnika gry i skrypty rozgrywki nie są zależne dosłownie od żadnej biblioteki (dependency inversion z dobrych praktyk programowania obiektowego), więc ewentualny port nie powinien być problemem, zwłaszcza że nawet biblioteka, której używam aktualnie wspiera wiele systemów.

Na ten moment moja logika była taka:
Po pierwsze
To nie jest "uwaga" xd

Gdyby projekt miał nabierać kształtów i zyskiwać jakieś zainteresowanie to wydawało mi się, że łatwiej będzie walczyć ze słabą konkurencją na mobilkach niż z bardzo rozbudowanymi grami na PC.


@Sulejman7: mobile i PC to zupełnie inny model biznesowy, jeżeli chciałbyś na tym jeszcze zarobić. Projektując i wydając pod PC trzeba się skupić na ilości kopii, w mobile na retencji. Dodatkowo w mobile jeżeli chodzi o zarobki,
@11_01_010_1010_00_10:

To nie jest "uwaga" xd


Spoko, pisząc 'uwaga' miałem na myśli zauważenie czegoś/zwrócenie na coś uwagi :D

Projektując i wydając pod PC trzeba się skupić na ilości kopii, w mobile na retencji. Dodatkowo w mobile jeżeli chodzi o zarobki, mikrotransakcje mają o wiele większy potencjał od reklam (szczególnie w tego typu grze, jak Twoja, a nie np. hypercasualu), a fakt czy rozgrywka jest projektowana pod mikrotransakcje, czy nie, ma ogromny
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).


@Sulejman7: O, czyli szykuje się świetna gra z rozbudowanym silnikiem umożliwiającym interakcję ze wszystkim, tylko że z prymitywnym silnikiem, który uniemożliwia interakcję z czymkolwiek XD

Z założenia rozgrywka ma opierać się przede wszystkim na dialogach i
@multikonto69:

szykuje się świetna gra


Tak jak pisałem w trzecim zdaniu posta gra powstaje przede wszystkim w celach edukacyjnych, jest to projekt hobbystyczny, nie aspiruje do miana świetnej gry.

rozbudowanym silnikiem umożliwiającym interakcję ze wszystkim


Nie ma mowy o żadnych rozbudowanych interakcjach. Mają być one proste właśnie ze względu na prymitywny silnik. W zasadzie można to potraktować jak grę tekstową z warstwą graficzną pozwalająca na eksplorację świata gry - może zabrakło
@Sulejman7: Powiem tak, jak dla mnie wydawanie tego na mobile to kompletna strata czasu. Rozumiem, że to projekt hobbystyczny, ale macie świetny art. Jeżeli robicie grę desktopową (a wasza taką jest pełną gębą), to możecie później się zastanowić nad portem na mobilki, ale nie odwrotnie.

Projekty wydany na desktopy może wam przynieść jakieś pieniądze, natomiast na mobilkach nie przyniesie wam niczego prócz doświadczenia. Temat wyczerpał już @11_01_010_1010_00_10 - zupełnie różne rynki,
@Finsky: @11_01_010_1010_00_10:

Stwierdziłem, że skoro więcej niż jedna osoba w komentarzach uważa, że może to być wygodniejsze na komputerze to najbliższa wersja będzie dostępna na obu platformach i spróbujemy zebrać opinie na temat tego która wersja jest wygodniejsza i zdecydujemy którą wersję warto rozwijać. Jako, że jest to aplikacja Javova na LibGdx to dosyć szybko udało się uruchomić na komputerze. Duża ilość szumu na zrzucie ekranu to kwestia szybkich renderów
S.....7 - @Finsky: @1101010101000_10: 

Stwierdziłem, że skoro więcej niż jedna oso...

źródło: comment_1586900916QxylpdiivhocXJaAMBDU9M.jpg

Pobierz
@Finsky:
Swoją drogą daleki byłbym od deprecjonowania możliwości zdobycia doświadczenia. Ja na przykład realizując hobbystyczne projekty gier nauczyłem się programować, podczas rekrutacji do swojej pierwszej pracy jako programista prezentowałem na rozmowie stworzoną przez siebie grę (podobne założenia tylko jeszcze prostsza implementacja niż w pierwszej wersji obecnego projektu) i na pewno doświadczenie z pisania gier pomogło mi w życiu zawodowym.

Teraz liczymy na podobny efekt w przypadku narzeczonej i grafiki 3D. Dużo
@Sulejman7: Nie no, zgadzam się, nie deprecjonuję w ogóle wartości nauki, może źle to ująłem. Chodzi mi o to, że ten screen który macie prezentuje fajną jakość. Na mobilkach prawie nikt w to nie zagra, na Steamie za to możecie mieć nawet małe grono fanów bez większego wysiłku.

Ogólnie proponuję to wrzucić na reddit z dopiskiem, że jest to mobilka, sprawdzisz reakcje większej grupy ludzi.
@Finsky: pod wpływem tych dyskusji myślałem jeszcze o tym co sprawia, że gry tworzą wokół siebie społeczności i wydaje mi się, że tego typu gra kierowana siłą rzeczy dla graczy bardziej wkręconych, niekoniecznie casual mogłaby się promować łatwym moddingiem. Sam tak zaczynałem - tak bardzo spodobał mi się Gothic, że zacząłem robić modyfikacje i dzięki temu nauczyłem się programować. Bez problemu bylibyśmy w stanie udostępnić graczom możliwość tworzenia własnych dialogów, bądź