Poprzednie: Instalacja JME3, Następne: Hello Node

+

W tym tutorialu zakładamy, że już pobrałeś oraz odpowiednio ustawiłeś jMonkeyEngine3 w swoim środowisku programistycznym.

+

Tak więc jesteś gotowy na stworzenie pierwszej w gry w jMonkeyEngine3 ! Możesz korzystać z tych wprowadzających tutoriali pracując w praktycznie dowolnym środowisku programistycznym (IDE), takim jak jMonkeyEngine SDK, NetBeans, Eclipse, lub po prostu uruchamiać wszystko z wiersza poleceń.

+

Czas na SimpleApplication

Stwórzmy pakiet jme3test.helloworld oraz plik HelloJME3.java.

+

W środowisku NetBeans, klikamy prawym przyciskiem myszy na Source Packages :

  • Wybieramy New… > Java Class aby stworzyć nowy plik.

  • Wprowadzamy nazwę klasy: HelloJME3

  • Wprowadzamy wartość dla package: jme3test.helloworld

  • Klikamy Finish.

Przykładowy kod źródłowy

Jak widzimy stworzony został plik HelloJME3.java. Skopiuj poniższy kod do niego:

package jme3test.helloworld;
import com.jme3.app.SimpleApplication;
import com.jme3.material.Material;
import com.jme3.math.Vector3f;
import com.jme3.scene.Geometry;
import com.jme3.scene.shape.Box;
import com.jme3.math.ColorRGBA;
/** Przykład 1 - zaczynamy prace z najprostsza aplikacja.
 * Wyswietlamy trojwymiarowy szescian i spogladamy na niego z wszystkich stron
 * poprzez ruch mysza lub klawisze WSAD. */
public class HelloJME3 extends SimpleApplication {
    public static void main(String[] args){
        HelloJME3 app = new HelloJME3();
        app.start();
    }
    @Override
    public void simpleInitApp() {
        Box b = new Box(Vector3f.ZERO, 1, 1, 1);
        Geometry geom = new Geometry("Box", b);
        Material mat = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
        mat.setColor("Color", ColorRGBA.Blue);
        geom.setMaterial(mat);
        rootNode.attachChild(geom);
    }
}----
Zbuduj i uruchom klasę HelloJME3. Jeżeli ukaże się jakiekolwiek okno dialogowe, potwierdź domyślne ustawienia.


.  Zobaczysz okno, w którym wyświetlany jest sześcian.
.  Możesz nawigować w oknie za pomocą klawiszy WASD oraz myszy.
.  Naciśnij klawisz Escape, aby wyłączyć aplikację.

Gratulacje, coś w końcu działa. Jak jednak to zrobiłeś?



== Jak to wszystko zrozumieć?

Poniżej przedstawione są podstawowe zasady, którymi rządzą się gry wykonane w JME3:



=== Start gry

Zauważ, że klasa HelloJME3.java class rozszerza `com.jme3.app.SimpleApplication`, która z kolei jest podklasą `com.jme3.app.Application`. Każda gra wykonana w JME3 jest egzemplarzem `com.jme3.app.Application` (pośrednio lub bezpośrednio). +
+

Aby uruchomić grę, musisz na początku stworzyć egzemplarz odpowiedniej klasy, następnie wywołać jego metodę `start()`:


[source,java]

HelloJME3 app = new HelloJME3(); app.start();

*Porada:* Jeżeli jesteś zaawansowanym programistą języka Java możesz stworzyć kopię `SimpleApplication`  i używać jej jako szablonu dla własnych klas.



=== Inicjalizacja sceny

Ta prosta “gra składa się tylko z sześcianu. Poniżej zaprezentowany jest kod, który odpowiada za jego stworzenie, wypozycjonowanie, nadanie koloru oraz samo podpięcie do sceny. (Tymi wszystkimi szczegółami zajmiemy się nieco później.)


[source,java]
    public void simpleInitApp() {
        Box b = new Box(Vector3f.ZERO, 1, 1, 1); // tworzy ksztalt szescianu
        Geometry geom = new Geometry("Box", b);  // tworzy geometrie szescianu z ksztaltu
        Material mat = new Material(assetManager,
         "Common/MatDefs/Misc/Unshaded.j3md"); // tworzy material
        mat.setColor("Color", ColorRGBA.Blue); // ustawia kolor materialu
        geom.setMaterial(mat);                   // przypisuje material do szescianu
        rootNode.attachChild(geom);              // podpina szescian do sceny
    }----
Metoda `simpleInitApp()` jest automatycznie wywoływana raz, kiedy uruchamiana jest gra. W tej metodzie tworzysz lub wczytujesz obiekty zanim zacznie się gra! Tak wygląda standardowy proces:
  1. Przygotowanie obiektów gry:

    • Stwórz lub wczytaj wszystkie obiekty i rozmieść je odpowiednio.

    • Aby geometria (jak przykładowo pudełko) ukazała się na scenie, podepnij ją do rootNode.

    • Przykłady: Wczytaj gracza, teren, niebo, wrogów, przeszkodzy i umieść je w odpowiednich miejsach.

  2. Przygotowanie zmiennych gry:

    • Zmienne w grze “śledzą stan gry. Należy ustawić poprawne wartości początkowe.

    • Przykłady: Ustaw wynik na 0, a zdrowie na 100% i tak dalej.

  3. Przygotowanie nawigacji:

    • Poniższe klawisze są ustawione domyślnie:

      • W,A,S,D – Poruszanie się

      • Mysz i strzałki – Zmiana pozycji kamery

      • Escape - Opuszczanie aplikacji

W JME3 kluczowym obiektem jest rootNode. Wszystko co jest podpięte do rootNode pojawia się na scenie. Innymi słowy: Obiekt który został stworzony, ale nie jest podpięty do rootNode, pozostaje niewidoczny.

Podumowanie

Te kilka linijek kodu, nie nothing but display a static object in 3-D, but they already allow you to navigate around in 3D. Dowiedziałeś się również, że SimpleApplication jest naprawdę dobrym miejscem na start ponieważ masz już:

  • metodę simpleInitApp() służąca inicjalizacji obiektów gry

  • rootNode where you attach geometries to make them appear in the scene

  • domyślne ustawienia nawigacyjne

W prawdziwej grze, musisz:

  1. Initialize the game world,

  2. Trigger actions in the event loop,

  3. Respond to user input.

W kolejnych tutorialach dowiesz się, jak te zadania mogą zostać wykonane w jMonkeyEngine!

+

Przejdź do lekcji Hello Node , gdzie na początku pokażemy Ci więcej szczegółów how to initialize the game world, also known as the scene graph.


<tags><tag target="beginner" /><tag target="intro" /><tag target="documentation" /><tag target="init" /><tag target="Polish" /></tags>