28 marca 2018

[libGdx] Aktualny stan gry

Poniżej krótki gif, który pokazuje stopień zaawansowania prac toczących się nad grą i jednocześnie książką.

Widoczny na niej ludzik jest w pełni sterowalny, zderza się ze ścianami (oddzielna od warstwy grafiki warstwa kolizyjna) i potrafi chodzić po całej, zdefiniowanej w pliku, planszy miasta. Jeszcze nie potrafi przechodzić pomiędzy mapami  (miasto, świat , podziemia) ponieważ realizacja tego elementu jest w dalszych rozdziałach książki, a aktualnie siedzę nad okienkiem menu postaci i statystyk.



Równie małymi kroczkami, niczym bohater powyższej grafiki, zbliżam się do końca książki.

Przede mną przechodzenie między mapami, poprawienie warstwy kolizyjnej (jest przesunięta w poziomie), efekty cząsteczkowe, dodanie tekstur dnia i nocy, zapis, odczyt i pincet innych drobiazgów.

25 marca 2018

[libGdx] Małym krokami do przodu

Kolejne godziny w libGdx za mną. Udało mi się znaleźć przyczynę podwójnego ładowania ekranu gry (błąd widoczny jest w poprzednim wpisie) i teraz ludzik potrafi już samodzielnie chodzić po całej dostępnej planszy.

Uczenie się libGdx  z książki bywa jednak uciążliwe. Autor przeskakuje całe bloki kodu od tak sobie lub nagle do prawidłowego działania aplikacji potrzebny jest kod, który jest 10 stron dalej. W efekcie co chwila gra przestaje całkowicie działać. Szczęśliwie cały projektu  dostępny jest on-line, więc jeśli czegoś nie znajdę w treści książki to jest w dostępnym sieciowym zasobie. Tak czy inaczej, gdyby nie posiadane doświadczenie w programowaniu, gra zwyczajnie by nie działała.

Druga rzecz, jaka rzuciła mi się w oczy w czasie pracy z książką, to nieopisywanie w części przypadków dlaczego coś ma być wykonane w ten, a nie inny, sposób. Niektóre użyte w grze rozwiązania architektoniczne (lub programistyczne) nie są wystarczająco wytłumaczone. Odniosłem także wrażenie, iż autor pisze kod w dany sposób ponieważ robił tak do tej pory, ale nie wie właściwie dlaczego. Jako twórca książki można by z przekąsem powiedzieć Ależ to rozwiązanie jest oczywiste, powinieneś je już znać!, jednak po przerobieniu ponad 150 stron uważam, że część technik powinna być opisana trochę szerzej. Nie ma problemu ze znalezieniem odpowiedzi w internecie, ale jeśli autor używa jakiegoś elementu biblioteki to może warto wspomnieć dlaczego. Tego przynajmniej oczekiwał bym  od książki.

Mimo powyższych uwag pisanie dosyć skomplikowanej gry z książką przed oczami jest ciekawsze niż klepanie prostych, zwykle jednoklasowych, przypadków użycia libGdx. Zdecydowanie nie jest to jednak pozycja dla osób, które do tej pory nie miały wiele wspólnego z programowaniem.




20 marca 2018

Wojownik, libGdx i kolejna gra

To już ponad miesiąc od ostatniego wpisu! Patrząc na moją dotychczasową aktywność trzeba przyznać, że się opuściłem. Główną przyczyną takiego stanu rzeczy jest (powoli przechodzące) przemęczenie spowodowane pisaniem Wojownika Autostrady i nauką Angulara. Każdy ma pewien próg, powyżej którego głowa przestaje przyjmować wiadomości i potrzebuje odpoczynku.


 
Chciałbym pokazać wam statystyki użycia strony zawierającej Wojownika Autostrady (po prawej). Oczywiście największy pik zainteresowania nastąpiłwraz z pojawieniem się gry w Internecie i informacji o niej na stronie Kryształów Czasu oraz na profilu fb portalu czy tu na blogu. Z upływem czasu zainteresowanie znacząco spadło, ale jest to zrozumiałem. Po prostu ci - którzy mieli pograć - pograli :).

Podejrzewam też, że nikt nie dotarł do ostatniego - 350 - paragrafu ponieważ gra jest po prostu morderczo trudna. Nie zrobiłem niestety zapisu statystyk odwiedzin poszczególnych paragrafów, a powrót do programowania w PHP, co byłoby nieodzowne,  aby uzyskać te dane, uważam za średnie rozwiązanie. Wystarczy rzeźba w javascript.
Trzeba by (sugestia czegoja) wprowadzić tryb łatwy lub ogólnie możliwość wyboru poziomu trudności. 


A jakie mam plany?
Atakuje Androida oraz bibliotekę graficzną libGdx! I mam już pierwszy mały sukces. Poniżej zrzut z tworzonego na bazie książki prostego rpg-a. Na razie jako aplikacja desktopowa, którą docelowo będę chciał zportować do Androida. Zrzut jest statyczny (może w końcu nauczę się robić gify...) ale spieszę powiedzieć, że widoczny tam wojownik reaguje na naciśnięcie klawiszy kierunkowych i posiada animację kierunkowego ruchu.  I na razie nie wiem dlaczego mapa ładuje się podwójnie :P




Naukę libGdx i pisania gier opartych na tej bibliotece opieram o książki: Mastering LibGDX Game Development, Android Game Programming by Example oraz Killer Game Programming in Java. I wszystko oczywiście w javie. Normalnej javie :)
Generalnie czeka mnie trochę nauki, ale efekty są zachęcające.
p.s.
A moglibyście spytać dlaczego nie skorzystam z Unity? Przecież niemal 80% gier dostępnych na Androida powstałą w tym języku. Cóż nie znam C# :P I nie chce mi się go uczyć :P