czwartek, 12 czerwca 2014

[libgdx] Dobry, Zły i Brzydki sposób na rozpoczęcie pracy

Na rozpoczęcie pracy z frameworkiem libgdx jest kilka sposobów. Jak łatwo się domyślić jedne są lepsze inne są gorsze. Postaram się przedstawić je oraz doradzić co należy zrobić aby zacząć bezproblemowo pisać gry.

Co to jest libgdx?

Jest to framework do tworzenia gier oraz wizualizacji w Javie (Scali, Clojure, Python). Wspiera aktualnie kilka różnych platform takich jak: Windows, Linux, Mac OS X, Android, iOS (poprzez RoboVM) oraz HTML5 (poprzez GWT). Możliwe jest uruchomienie stworzonych gier na konsoli Ouya.

LibGDX opiera się na idei napisania kodu raz i wdrożenia go na wielu platformach bez żadnych zmian (a przy najmniej zasadniczych). Właśnie ta cecha daje najwięcej przyjemności w pracy z frameworkiem. Większość czasu można uruchamiać grę na swoim PC (system jest nieistotny dzięki LWJGL). Dopiero gdy mamy już jakąś większą funkcjonalność testować ją na urządzeniu.

Aby dowiedzieć się więcej proponuję zerknąć na: http://github.com/libgdx/libgdx/wiki/Introduction

Kto używa libgdx?

Nie obędzie się także bez bezwstydnej auto promocji (w końcu to mój blog) ale napisałem już jedną grę za pomocą libgdx pt.: Powstanie Styczniowe - Gra Strategiczna. Jeżeli interesują was gry strategiczne czasu rzeczywistego i chcielibyście pobawić się w powstanie, gra jest dostępna na Google Play:

https://play.google.com/store/apps/details?id=pl.fundacjasensua.powstaniestyczniowegra.prototyp

Gra jest darmowa, bez reklam. Zrobiona dla Fundacji Innowacyjnej Edukacji Społecznej Sensu@, którą także po promuje :-) Jeżeli szukacie innych przykładów proponuję przejrzenie listy przykładów dostępnej tutaj.

Sposób #1 - Dobry

LibGDX dostarcza narzędzie do generowania struktury projektów o nazwie gdx-setup.jar.

Jest to narzędzie graficzne i konsolowe pozwalające wybrać na jakie platformy projekt chcemy tworzyć, gdzie będzie jego lokalizacja na dysku oraz jakie rozszerzenia libgdx możemy użyć np.: Bullet, Box2dlights itp.

Aby utworzyć projekt z linii poleceń:

java -jar gdx-setup.jar --dir sciezka_do_katalogu --name nazwa_projektu --package pakiet.dla.gry --mainClass NazwaDlaGlownejKlasy --sdkLocation lokalizacjaSDKAndroid
  • dir - katalog do którego ma zostać zapisany tworzony projekt, ścieżka
    może być bezpośrednia lub względna.
  • name - nazwa projektu, libgdx ma swoją konwencję zalecającą aby była to nazwa składająca się z małych liter, kolejne słowa rozdzielone myślnikami.
  • package - chyba nie wymaga tłumaczenia, pakiet w którym będzie znajdować się nasza gra
  • mainClass - nazwa klasy implementującej ApplicationListener
  • sdkLocation - lokalizacja Android SDK, jeżeli korzystacie z Intelij IDEA, można pominąć ten argument, środowisko Intelij skorzysta ze zmiennej środowiskowej ANDROID_HOME

Dostarczana jest nam pełna struktura projektu, wraz ze wszystkimi plikami konfiguracyjnymi dla systemu budowania Gradle. Tak! Dobrze przeczytaliście, koniec z trzymaniem bibliotek i innych zależności na repozytorium z kodem.

Dzięki zastosowaniu Gradle, możliwe jest korzystanie z dowolnego IDE: Eclipse, Netbeans czy wspomniany już wielokrotnie Intelij. Ułatwiona jest kompilacja projektu z linii poleceń. Zasadniczo same zalety ;-)

Możliwe jest wykorzystywanie systemu Maven ponieważ wszystkie biblioteki wchodzące w skład frameworka libGDX znajdują się na repozytorim maven. Strukturę projektu utworzyć będziecie musieli sobie sami.

Jeżeli nie jesteście przyzwyczajeni do pracy z Gradle, tym bardziej problemem może być tworzenie gry z jego pomocą proponuję zajrzeć do instrukcji tutaj.

Sposób #2 - Zły

LibGDX przed przejściem na Gradle, korzystało z prostszego systemu tworzącego odpowiednią strukturę katalogów. Narzędzie także nazywało się gdx-setup.jar i jest aktualnie dostępne na osobnym repozytorium kodu: https://github.com/libgdx/libgdx-old-setup-ui

Tak samo jak w przypadku sposobu #1 narzędzie tworzy trzy katalogi:

  • core
  • desktop
  • android

Przy konfiguracji środowiska należy pamiętać, że wszystkie tekstury i pliki potrzebne dla naszej gry powinny znajdować się w katalogu assets w projekcie androidowym.

Nie jest to do końca sposób zły, nie mniej nie mamy tyle korzyści co przy korzystaniu z Gradle. Problematyczne może być zaimportowanie projektu do IDE innego niż Eclipse.

Sposób #3 - Brzydki

LibGDX to nic innego jak zbiór bibliotek w postaci archiwów jar. Nic nie stoi na przeszkodzie aby stworzyć zwykły projekt w eclipse. Dodać odpowiednie pliki jar do projektu i rozpocząć pracę. Tracimy jednak pewną modularność jaką zapewniały dwa poprzednie sposoby.

Brak komentarzy: