Tworzenie gier w Javie - Wstęp

Tym kursem chciałbym zainteresować Cię tworzeniem gier w języku Java. Mam ku temu dwa powody.

Po pierwsze, tworzenie gier może sprawiać dużo frajdy. Dużo satysfakcji daje zobaczyć, jak elementy wykreowanego przez nas świata ożywają na ekranie, niezależnie od tego, czy napisaliśmy pasjansa czy trójwymiarową grę przygodową.

Po drugie, tworzenie gier to nie lada wyzwanie. Musimy obsłużyć wczytywanie i wyświetlanie grafiki, obsługę animacji, wykrywanie kolizji, obsługę klawiatury i myszki, zaprojektować interfejs użytkownika, odtwarzać dźwięki i muzykę, a do tego wszystkiego jeszcze mieć na względzie, że nasza gra musi działać płynnie, więc powinna być zoptymalizowana. To wszystko sprawia, że tworzenie gier to świetny trening dla programisty, szczególnie, gdy dopiero rozpoczynasz swoją przygodę z programowaniem. Ja ucząc się programować pisałem właśnie gry.

Ten kurs przedstawia podstawy tworzenia gier w języku Java. Biblioteką, z której będziemy korzystać, jest LibGDX. Jest to wygodne narzędzie umożliwiające:

  • wyświetlanie obrazków i animacji,
  • obsługę myszki i klawiatury,
  • odtwarzanie dźwięków,
  • i wiele więcej.

LibGDX może służyć zarówno do prostych projektów, jak i tych bardziej skomplikowanych. Próg wejścia do wykorzystywania tej biblioteki nie jest wysoki, więc z podstawowymi informacjami będziesz mógł zacząć pisać proste gry. W tym kursie nacisk postawiłem na przykłady, więc będziemy uczyli się nowych zagadnień, które następnie wykorzystamy w akcji do napisania prostych gier.

Będę wdzięczny za wszelkie uwagi i sugestie dotyczące tego kursu.

Spis treści

  1. Wstęp
    1. Założenia
    2. Docelowe platformy
    3. Przykłady
  2. Tworzenie szkieletu aplikacji LibGDX
    1. Generowanie aplikacji używającej LibGDX
    2. Import i uruchomienie projektu w IntelliJ IDEA
    3. Uruchamianie aplikacji za pomocą Gradle
    4. Generowanie uruchamialnego JARa
    5. Docelowa wersja Java
  3. Analiza pierwszej aplikacji
    1. Klasa bazowa – ApplicationAdapter
    2. Metoda create i tworzone w niej obiekty
    3. Metoda render
    4. Metoda dispose
    5. Ustawienia okna gry
  4. Ustawienie rozmiaru okna
  5. Wyświetlanie tekstur
    1. Pozycjonowanie tekstur w oknie
    2. Rysowanie fragmentów tekstury za pomocą TextureRegion
  6. Pętla gry, upływ czasu i ruch obiektów
    1. Ruch zależny od FPS
    2. Ruch zależny od upływu czasu
  7. Obsługa myszy i klawiatury
    1. Sprawdzanie naciśniętych klawiszy na klawiaturze
    2. Obsługa pozycji i przycisków myszki
  8. Tworzymy grę Puzzle
    1. Założenia gry
    2. Różne fazy tworzenia gry w osobnych branchach
    3. Wstępny projekt
    4. Wczytywanie obrazu i ustawienia okna
    5. Podzielenie obrazka na elementy
    6. Losowanie pozycji elementów układanki
    7. Rysowanie pól elementów
    8. Przesuwanie elementów układanki za pomocą myszki
      1. Łapanie elementu
      2. Przesuwanie elementu
      3. Upuszczanie elementu
      4. Rysowanie przesuwanego elementu
    9. Sprawdzanie, czy element układanki jest na swoim miejscu
      1. Docelowe miejsce elementu
      2. Sprawdzanie miejsca upuszczenia elementu
    10. Ćwiczenia
    11. Pełny kod źródłowy gry Puzzle
  9. Tworzymy grę Hello Snake!
    1. Założenia gry
    2. Różne fazy tworzenia gry w osobnych branchach
    3. Wstępny projekt
    4. Ustawienie rozmiaru okna
    5. Podstawowa wersja klasy Snake
    6. Zmiana kierunku poruszania się węża
    7. Obsługa wychodzenia poza krawędzie okna
    8. Wyświetlanie jedzenia węża w losowym miejscu okna gry
    9. Zjadanie jedzenia
    10. Wykrywanie kolizji
    11. Ponowne uruchamianie gry
    12. Zadania
    13. Pełny kod źródłowy gry Hello Snake!
      1. HelloSnake.java
      2. Snake.java
      3. Cherry.java
      4. DesktopLauncher.java
  10. Klasa Actor i wykrywanie kolizji
    1. Pierwsze użycie klasy Actor
    2. Cechy obiektów typu Actor
    3. Ruch pod określonym kątem
    4. Wykrywanie kolizji
      1. Wykrywanie kolizji pomiędzy prostokątnymi obszarami
      2. Złożone kolizje

Założenia

Przede wszystkim musisz znać Javę na poziomie podstawowym – powinieneś być zaznajomiony z następującymi zagadnieniami: zmienne, instrukcje warunkowe, tablice, pętle, klasy, dziedziczenie, polimorfizm, oraz, w mniejszym stopniu, kolekcje, strumienie, i lambdy. Dodatkowo przyda się wiedza na temat używania linii poleceń.

Nasze projekty będziemy tworzyć korzystając z IntelliJ IDEA. Jest to aplikacja zawierająca m. in. zaawansowany edytor kodu źródłowego. Wystarczy Ci podstawowa znajomość Intellij IDEA – importowanie projektów, dodawania klas, uruchamianie aplikacji.

Do budowania naszych projektów będziemy korzystać z Gradle. Jest to alternatywa dla Mavena. Poza budowaniem projektów, służy on także do zarządzania nimi, a także do łatwego definiowania zależności projektu, bez potrzeby ich ręczne pobierania.

Dlaczego Gradle zamiast Maven? Twórcy biblioteki LibGDX rekomendują to narzędzie i wspierają. Z tego powodu my także będziemy z niego korzystać. Nie musisz mieć żadnej wiedzy na temat Gradle – będziemy go używać w minimalnym stopniu. Gdy przyjdzie czas użycia Gradle, pokażę Ci, jak z niego skorzystać.

Zgodnie z konwencją nazewniczą w programowaniu, w kodzie źródłowym przykładów będę korzystał z anglojęzycznych nazw zmiennych, klas, oraz metod. Jednakże, ewentualne komentarze w kodzie będę pisał po polsku, aby tym bardziej ułatwiały one zrozumienie pewnych zagadnień.

Jeżeli chcesz nauczyć się programować w Javie od podstaw, zajrzyj do mojego kursu Nauka programowania w Javie.

W moim artykule Podstawy linii poleceń dla użytkowników systemu Windows znajdziesz informacje o korzystaniu z linii poleceń, w tym: uruchamianie linii poleceń i wywoływanie komend, przydatne komendy, skróty, oraz ustawienia. Dowiesz się także czym są standardowe wejście i wyjście, przekierowanie komend, i wiele więcej.

Jeżeli chcesz nauczyć się korzystać z IntelliJ IDEA, to zajrzyj do mojego kursu IntelliJ IDEA w akcji.

Docelowe platformy

Czytając artykuły w Internecie na temat LibGDX często będziesz widział informacje z podziałem na rodzaj platformy, na której gra ma działać. Dla przykładu, czytając o obsłudze urządzeń takich jak mysz i klawiatura, znalazłbyś także informację o zdarzeniach dotykania przez użytkownika np. ekranu telefonu (touch events). LibGDX pozwala na tworzenie gier nie tylko desktopowych na komputery z systemem Windows, ale także na systemy MacOS, Linux, na telefony, oraz jako aplikacje webowe.

Ten kurs skupia się na podstawach tworzenia gier i jedyną platformą, na którą będziemy tworzyć gry, są komputery z systemem Windows (chociaż powinny one też działać na systemach Linux i MacOS).

Przykłady

Przykłady znajdziesz na GitHubie:

Repozytorium przykładów na GitHub

Aby uruchomić konkretny przykład, przejdź z poziomu linii poleceń do jego katalogu i wykonaj komendę gradlew desktop:run, na przykład:

D:\tworzenie-gier\rozdzial-02\pierwszy-projekt-libgdx>gradlew desktop:run

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Nie musisz podawać swojego imienia, e-mailu, ani strony www, aby opublikować komentarz. Komentarze muszą zostać zatwierdzone, aby były widoczne na stronie.