# jMonkeyEngine 3 Tutorial (1) - Hello SimpleApplication

Previous: Installing JME3, Next: Hello Node

Prerequisites: This tutorial assumes that you have
.

Nesta s??rie de tutoriais, n??s assumimos que voc?? usa o SDK da jMonkeyEngine. Como um desenvolvedor Java intermedi??rio ou avan??ado, voc?? rapidamente ver?? que, em geral, voc?? pode desenvolver c??digo da jMonkeyEngine em qualquer ambiente de desenvolvimento integrado (NetBeans IDE, Eclipse, IntelliJ) ou mesmo da linha de comando.

OK, Vamos nos aprontar para criar nossa primeira aplica????o jMonkeyEngine3.

## Crie um Projeto

Na SDK da jMonkeyEngine:

1. Escolha Arquivo (File)???Novo Projeto (New Project)??? do menu principal.
2. No assistente de Novo Projeto, selecione o modelo JME3???Jogo B??sico (Basic Game). Clique em prosseguir (Next).
   1. Especifique um nome de projeto, e.g. "HelloWorldTutorial"
   2. Especifique um caminho para armazenar seu novo projeto, e.g. um diret??rio projetosjMonkey no seu diret??rio de usu??rio.
3. Clique em terminar (Finish).

Se voc?? tem perguntas, leia mais sobre Cria????o de Projeto aqui.

N??s recomendamos atravessar os passos voc?? mesmo, como descrito nos tutoriais. Alternativamente, voc?? pode criar um projeto baseado no modelo JmeTests no SDK da jMonkeyEngine. Isto criar?? um projeto que j?? cont??m as amostras jme3test.helloworld (e muitas outras). Por exemplo, voc?? pode usar o projeto JmeTests para verificar se voc?? tem a solu????o certa.

## Escreva uma aplica????o de amostra

Para este tutorial, voc?? deseja criar um pacote jme3test.helloworld no seu projeto, e criar um arquivo `HelloJME3.java` nele.

No SDK da jMonkeyEngine:

1. D?? um clique com o bot??o direito no n?? pacotes de c??digo-fonte (Source Packages) de seu projeto.
2. Escolha Novo (New)??? ???Classe Java (Java Class) para criar um novo arquivo.
3. Digite o nome da classe: `HelloJME3`
4. Digite o nome do pacote: `jme3test.helloworld`.
5. Clique em Finalizar (Finish).

O SDK cria o arquivo HelloJME3.java para voc??.

## C??digo de Amostra

Substitua os conte??dos do arquivo HelloJME3.java com o seguinte c??digo:

    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;

    /** Sample 1 - how to get started with the most simple JME 3 application.
     * Display a blue 3D cube and view from all sides by
     * moving the mouse and pressing the WASD keys. */
    public class HelloJME3 extends SimpleApplication {

        public static void main(String[] args){
            HelloJME3 app = new HelloJME3();
            app.start(); // start the game
        }

        @Override
        public void simpleInitApp() {
            Box b = new Box(Vector3f.ZERO, 1, 1, 1); // create cube shape at the origin
            Geometry geom = new Geometry("Box", b);  // create cube geometry from the shape
            Material mat = new Material(assetManager,
              "Common/MatDefs/Misc/Unshaded.j3md");  // create a simple material
            mat.setColor("Color", ColorRGBA.Blue);   // set color of material to blue
            geom.setMaterial(mat);                   // set the cube's material
            rootNode.attachChild(geom);              // make the cube appear in the scene
        }
    }

D?? um clique com o bot??o direito na classe HelloJME3 class e escolha Executar (Run). Se um di??logo de configura????es da jME3 aparecer, confirme as configura????es padr??o.

1. Voc?? deveria ver uma janela simples exibindo um cubo 3D.
2. Pressione as teclas WASD keys e mova para navegar ao redor.
3. Olhe no texto do FPS e na informa????o de contagem de objeto na esquerda-fundo. Voc?? usar?? esta informa????o durante o desenvolvimento, e voc?? remover?? ela para a libera????o. (Para ler os n??meros corretamente, considere que as 14 linhas de texto contam como 14 objetos com 914 v??rtices.)
4. Pressione Escape (Esc) para fechar a aplica????o.

Parab??ns! Agora camos decobrir como isso funciona!

## Compreendendo o c??digo

O c??digo acima tem inicializado a cena, e iniciado a aplica????o.

### Inicie a SimpleApplication

Olhe na primeira linha. A classe HelloJME3.java estende `com.jme3.app.SimpleApplication`.

    public class HelloJME3 extends SimpleApplication {
      // your code...
    }

Todo jogo JME3 ?? uma inst??ncia de com.jme3.app.SimpleApplication. A classe SimpleApplication gerencia seu grafo de cena 3D e automaticamente desenha ele para a tela ??? isto ??, em breve, o que uma engine de jogo faz para voc??!

You start every JME3 game from the main() method, as every standard Java application:

1. Instantiate your `SimpleApplication`-based class
2. Call the application's `start()` method to start the game engine.

        public static void main(String[] args){
            HelloJME3 app = new HelloJME3(); // instantiate the game
            app.start();                     // start the game!
        }

This code opens your application window. Let's learn how you put something into the window next.

### Understanding the Terminology

What you want to do | How you say that in JME3 terminology
--- | ---
You want to create a cube. | I create a Geometry with a 1x1x1 Box shape.
You want to use a blue color. | I create a Material with a blue Color property.
You want to colorize the cube blue. | I set the Material of the Box Geometry.
You want to add the cube to the scene. | I attach the Box Geometry to the rootNode.
You want the cube to appear in the center. | I create the Box at the origin = at `Vector3f.ZERO`.

If you are unfamiliar with the vocabulary, read more about the Scene Graph here.

### Initialize the Scene

Look at rest of the code sample. The `simpleInitApp()` method is automatically called once at the beginning when the application starts. Every JME3 game must have this method. In the `simpleInitApp()` method, you load game objects before the game starts.

        public void simpleInitApp() {
           // your initialization code...
        }

The initialization code of a blue cube looks as follows:

        public void simpleInitApp() {
            Box b = new Box(Vector3f.ZERO, 1, 1, 1); // create a 2x2x2 box shape at the origin
            Geometry geom = new Geometry("Box", b);  // create a cube geometry from the box shape
            Material mat = new Material(assetManager,
              "Common/MatDefs/Misc/Unshaded.j3md");  // create a simple material
            mat.setColor("Color", ColorRGBA.Blue);   // set color of material to blue
            geom.setMaterial(mat);                   // set the cube geometry 's material
            rootNode.attachChild(geom);              // make the cube geometry appear in the scene
        }

A typical JME3 game has the following initialization process:

1. You initialize game objects:
   - You create or load objects and position them.
   - You make objects appear in the scene by attaching them to the `rootNode`.
   - Examples: Load player, terrain, sky, enemies, obstacles, ???, and place them in their start positions.
2. You initialize variables
   - You create variables to track the game state.
   - You set variables to their start values.
   - Examples: Set the `score` to 0, set `health` to 100%, ???
3. You initialize keys and mouse actions.
   - The following input bindings are pre-configured:
     - W,A,S,D keys ??? Move around in the scene
     - Mouse movement and arrow keys ??? Turn the camera
     - Escape key ??? Quit the game
   - Define your own additional keys and mouse click actions.
   - Examples: Click to shoot, press Space to jump, ???

## Conclusion

You have learned that a SimpleApplication is a good starting point because it provides you with:

- A `simpleInitApp()` method where you create objects.
- A `rootNode` where you attach objects to make them appear in the scene.
- Useful default input settings that you can use for navigation in the scene.

When developing a game application, you want to:

1. Initialize the game scene
2. Trigger game actions
3. Respond to user input.

The now following tutorials teach how you accomplish these tasks with the jMonkeyEngine 3.

Continue with the Hello Node tutorial, where you learn more details about how to initialize the game world, also known as the scene graph.

See also:

- SimpleApplication From the Commandline
- Create a JME3 project.

beginner, intro, documentation, init, simpleapplication, basegame

view online version