Szukaj…


Wersje

Wersja Data wydania
1.9.3 2016-05-16
1.9.5 2016-12-11

Instalacja lub konfiguracja

LibGDX ma dość prostą konfigurację, za pomocą prostego programu Java. Możesz pobrać plik tutaj . Po uruchomieniu aplikacja będzie wyglądać mniej więcej tak: Przykład generatora projektów LibGDX
Uwaga: Ten zrzut ekranu został zrobiony w systemie Linux i pokazuje ścieżkę inną niż instalacja systemu Windows. Jednak formularz jest taki sam w każdym systemie operacyjnym zgodnym z tą aplikacją instalacyjną

Pola wprowadzania

W polu wejściowym „Nazwa” znajduje się nazwa gry dla twojego projektu. Pole wejściowe „Pakiet” jest pakietem do twojej klasy głównej. Pole wejściowe „Klasa gry” jest główną klasą, która jest wywoływana podczas uruchamiania gry. Pole wejściowe „Miejsce docelowe” jest miejscem docelowym, w którym ma zostać wygenerowany projekt. Pole wejściowe „Andriod SDK”, ścieżka do miejsca, w którym znajduje się twój system Android SDK. To pole wprowadzania jest całkowicie opcjonalne, więc jeśli nie chcesz wdrażać aplikacji na Androidzie, nie musisz się tym martwić.


Podprojekty

Podprojekty to tylko platformy, na których mają zostać wdrożone. Ta część jest dość oczywista. Jeśli nie chcesz na przykład wdrażać go w HTML, po prostu odznacz pole wyboru.


Rozszerzenia

Rozszerzenia są oficjalnymi rozszerzeniami LibGDX. Oto tabela z opisem każdego z nich:

Nazwa rozszerzenia Opis
Pocisk Bullet to biblioteka do wykrywania kolizji 3D i sztywnej bryły dynamiki ciała.
Freetype Freetype pozwala używać czcionek .ttf zamiast czcionek bitmapowych
Przybory Pozwala zaimplementować dane wyjściowe narzędzi LibGDX.
Kontrolery Umożliwia implementację kontrolerów takich jak kontrolery XBox 360.
Box2d Biblioteka fizyki dla gier 2d.
Box2dlights Pozwala w łatwy sposób dodać miękkie dynamiczne światła do gry fizyki.
Ashley Mały szkielet bytu
Ai Struktura sztucznej inteligencji.

Możesz dodać rozszerzenia stron trzecich, ale ich szczegóły lub nazwy nie będą tutaj wyświetlane.


zaawansowane

W sekcji Zaawansowane możesz ustawić kilka ustawień i wygenerować dodatkowe pliki projektów dla Eclipse i IDEA IDE.

Nazwa ustawienia Opis
Maven Mirror URL Zastępuje Maven Central podanym adresem URL Maven
POMYSŁ Generuje pliki projektów Intellij IDEA
Zaćmienie Generuje pliki projektu Eclipse
Tryb offline Nie wymuszaj zależności pobierania

Pokolenie

Po poprawieniu wszystkich ustawień możesz nacisnąć przycisk „Generuj”. Może to potrwać kilka sekund, ale wygeneruje podstawowe pliki i Gradle potrzebne do twojego projektu. Kiedy już to zrobisz, czas zaimportować projekt do IDE.

LibGDX Hello World

Podstawy

Wygenerowane projekty zawierają już zaimplementowaną podstawową aplikację podobną do Hello World.

Głównym projektem jest projekt podstawowy, który zawiera cały kod niezależny od platformy. Jest to obowiązkowe, ale w oparciu o ustawienia generowania możesz mieć kilka kolejnych projektów dla każdej wybranej platformy.

Przykład

Otwórz com.mygdx.game.MyGdxGame.java w core projekcie. Zobaczysz następujący kod:

public class MyGdxGame extends ApplicationAdapter {
    SpriteBatch batch;
    Texture img;
    
    @Override
    public void create () {
        batch = new SpriteBatch();
        img = new Texture("badlogic.jpg");
    }

    @Override
    public void render () {
        Gdx.gl.glClearColor(1, 0, 0, 1);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
        batch.begin();
        batch.draw(img, 0, 0);
        batch.end();
    }
    
    @Override
    public void dispose () {
        batch.dispose();
        img.dispose();
    }
} 

Chociaż jest to twój główny projekt, nie wykonasz go bezpośrednio, zawsze musisz uruchomić program uruchamiający specyficzny dla platformy, dla komputerów nazywa się on com.mygdx.game.desktop.DesktopLauncher.java w projekcie desktop .

public class DesktopLauncher {
    public static void main (String[] arg) {
        LwjglApplicationConfiguration config = new LwjglApplicationConfiguration();
        new LwjglApplication(new MyGdxGame(), config);
    }
} 

W tej klasie możesz ustawić ustawienia specyficzne dla platformy.


Uruchamianie gry

Eclipse i Intellij używają dwóch różnych metod, aby uruchomić projekt. Znajdź IDE, którego używasz poniżej.

Uruchamianie za pomocą Eclipse

Korzystając z Eclipse, możesz uruchomić aplikację, uruchamiając tę klasę jako aplikację Java (kliknij prawym przyciskiem myszy projekt -> Uruchom jako -> Aplikacja Java). Zobaczysz następujące okno:

Uruchamianie Hello world na komputerze

Uruchamianie za pomocą Intellij Idea

W Intellij konieczne będzie skonfigurowanie uruchomienia. Aby to zrobić, musisz kliknąć przycisk w prawym górnym rogu, który wygląda jak marchewka skierowana w dół:

Marchewka

Następnie kliknij przycisk „Edytuj konfiguracje ...”. Zostanie wyświetlony ekran wszystkich bieżących konfiguracji uruchamiania. Kliknij „+” w lewym górnym rogu tego okna i wybierz opcję „Aplikacja”. Stamtąd wybierz plik „DesktopLauncher” dla opcji „Klasa główna”, ustaw „Użyj ścieżki klas modułu” na opcję podstawową i ustaw „Katalog roboczy” na folder zasobów w folderze podstawowym. Produkt końcowy powinien wyglądać mniej więcej tak:

Uruchom przykład konfiguracji

Po wykonaniu tej czynności możesz wybrać nazwę konfiguracji uruchamiania i kliknąć „Zastosuj”, a następnie „OK”. Po zakończeniu możesz kliknąć zieloną ikonę uruchamiania w prawym górnym rogu:

Uruchom ikonę

Co dzieje się w klasie MyGdxGame?

Najpierw create jest metoda create , która zainicjuje wsad rysujący na ekranie. Następnie metoda ładuje badlogic.jpg do pamięci.

Następnie metoda render jest wywoływana wielokrotnie, aż aplikacja zostanie zatrzymana. Ta metoda resetuje kolor tła do czerwonego i rysuje obraz na ekranie. Jak widać, zawsze musisz rozpocząć i zakończyć rysunek partii. Wreszcie, gdy aplikacja ma się zatrzymać, wywoływana jest metoda dispose , która zwolni miejsce w pamięci używane przez teksturę i wsad.

(Dobrze wiedzieć, że usuwanie może się zdarzyć również w czasie wykonywania na innych platformach, np. Android, ponieważ Android może zwolnić miejsce w pamięci, gdy aplikacje są w tle, ale jest to bardziej zaawansowany temat)



Uwaga: Jeśli wystąpi błąd działania, taki jak poniżej, sprawdź to pytanie, aby uzyskać odpowiedź!

Nie znaleziono pliku: badlogic.jpg (wewnętrzny)

Ogólny przegląd LibGDX

LibGDX to darmowa biblioteka do tworzenia gier typu open source opracowana w Javie. Jego celem jest umożliwienie użytkownikom opracowywania gier na wiele platform, które działają na komputerach, urządzeniach z Androidem, iOS i przeglądarkach internetowych. Napisz kod raz, wdróż go na dowolnej z głównych platform.

Dodanie obsługi kodu specyficznego dla platformy

LibGDX został zaprojektowany w taki sposób, że możesz napisać ten sam kod i wdrożyć go na kilku różnych platformach. Są jednak chwile, kiedy chcesz uzyskać dostęp do kodu specyficznego dla platformy. Na przykład, jeśli masz tabele wyników i osiągnięcia w grze, możesz chcieć skorzystać z narzędzi specyficznych dla platformy (takich jak Gry Google Play) oprócz przechowywania ich lokalnie. Lub chcesz użyć bazy danych lub czegoś zupełnie innego.

Nie możesz dodać tego rodzaju kodu do modułu podstawowego. Pierwszym krokiem jest stworzenie interfejsu. Utwórz go w module podstawowym. Ten pierwszy to narzędzie do zarządzania innymi interfejsami:

public interface PlatformWrapper{
    //here you can also add other things you need that are platform specific.
    //If you want to create your own file saver for an instance, a JSON based database,
    //achievements, leaderboards, in app purchases and anything else you need platform specific code for.
    SQLWrapper getSQLSaver();//This one will be used in this example
    AchievementWrapper getAchievementHandler();//this line is here as an example
}

Następnie musimy utworzyć drugi interfejs, SQLWrapper. Ten również wchodzi w moduł podstawowy.

public interface SQLWrapper{
    void init(String DATABASE);
    void saveSerializable(int id, Object o);
    Object loadSerializable(int id, Object o);
    void saveString(int id, String s);
    //.... and other methods you need here. This is something that varies
    //with usage. You may not need the serializable methods, but really need a custom method for saving 
    //an entire game world. This part is entirely up to you to find what methods you need
   
    //With these three methods, always assume it is the active database in question. Unless 
    //otherwise specified, it most likely is
    String getActiveDatabase();
    void deleteDatabase();
    void deleteTable(String table);//delete the active table
}

Teraz musisz przejść do każdego projektu i stworzyć klasę do implementacji PlatformWrapper i jedną do implementacji SQLWrapper. Do każdego projektu dodajesz niezbędny kod, taki jak instancje, konstruktory i tak dalej.

Po zastąpieniu wszystkich utworzonych interfejsów upewnij się, że wszystkie mają instancję w klasie, która implementuje PlatformWrapper (i że istnieje getter). Na koniec zmieniasz konstruktor w klasie głównej. Główną klasą jest klasa, do której odwołujesz się z programu uruchamiającego. Rozszerza ApplicationAdapter, implementuje ApplicationListener lub rozszerza grę. Edytuj konstruktor i dodaj PlatformWrapper jako argument. Wewnątrz opakowania platformy znajdują się niektóre narzędzia (jeśli zostały dodane) oprócz wszystkich innych opakowań (sql, osiągnięcia lub dowolne inne dodane).

Teraz, jeśli wszystko jest poprawnie skonfigurowane, możesz zadzwonić do PlatformWrapper i uzyskać dowolny interfejs między platformami. Wywołaj dowolną metodę i (zakładając, że wykonany kod jest poprawny) zobaczysz na dowolnej platformie, robi to, co powinien zrobić z kodem specyficznym dla platformy

AssetManager

AssetManager to klasa, która pomaga zarządzać zasobami.

Po pierwsze, musisz utworzyć instancję:

AssetManager am = new AssetManager();

Po zainicjowaniu tego i zanim cokolwiek wyrenderujesz, chcesz uzyskać zasoby:

am.load("badlogic.jpg", Texture.class);//Texture.class is the class this asset is of. If it is a 
//sound asset, it doesn't go under Texture. if it is a 3D model, it doesn't go under Texture.class
//Which class added depends on the asset you load

//... other loading here ...//

//when finished, call finishLoading:
am.finishLoading();

Teraz, gdziekolwiek masz ochotę dostać badlogic.jpg :

Texture texture = am.get("badlogic.jpg");
//Ready to render! The rendering itself is in the normal way

Korzystanie z AssetManager pozwala załadować je raz do pamięci AssetManager, a następnie pobrać tyle razy, ile chcesz.

Dlaczego warto korzystać z AssetManager? (z wiki ):

AssetManager (kod) pomaga ładować i zarządzać zasobami. Jest to zalecany sposób ładowania zasobów, ze względu na następujące miłe zachowania:

  • Ładowanie większości zasobów odbywa się asynchronicznie, dzięki czemu można wyświetlić ekran ładowania reaktywnego podczas ładowania rzeczy
  • Aktywa są liczone jako referencje. Jeśli oba aktywa A i B zależą od innego aktywa C, C nie zostanie sprzedane, dopóki nie zostaną sprzedane A i B. Oznacza to również, że jeśli załadujesz zasób wiele razy, zostanie on faktycznie udostępniony i zajmie pamięć tylko raz!
  • Jedno miejsce do przechowywania wszystkich zasobów.
  • Pozwala na transparentne wdrożenie takich rzeczy jak pamięci podręczne (patrz FileHandleResolver poniżej)

Wykres sceny 2D

Kiedy zaczynasz korzystać z Java lub Androida, szybko dowiadujesz się, że (0,0) znajduje się w lewym górnym rogu. Jednak w LibGDX (0,0) jest domyślnie w lewym dolnym rogu.

Za pomocą aparatu ortograficznego możesz uzyskać (0, 0), aby znajdować się w lewym górnym rogu. Chociaż domyślnie (0, 0) znajduje się w lewym dolnym rogu. Jest to ważne, aby wiedzieć, ponieważ zmienia również, który narożnik tekstur ma współrzędne X i Y.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow