Tutorial1

jMonkeyEngine 3 Tutorial (1) - Hello SimpleApplication

Pré-requisitos: Este tutorial assume que você tenha baixado o SDK da JMonkeyEngine.

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.

Você deveria ver uma janela simples exibindo um cubo 3D.
Pressione as teclas WASD keys e mova para navegar ao redor.
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.)
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 {
  // seu código...
}

[[/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ê!

Você inicia todo jogo JME3 do método main(), como toda aplicação Java padrão:

  1. Instancie sua classe baseada em SimpleApplication
  2. Chame o método start() da aplicação para iniciar a engine de jogo.
    public static void main(String[] args){
        HelloJME3 app = new HelloJME3(); // instantiate the game
        app.start();                     // start the game!
    }

Este código abre sua janela de aplicação. Vamos aprender a por alguma coisa para a janela em seguinda.

Entendendo a Terminologia

O que você quer fazer Como você diz isso na terminologia JME3
Você quer criar um cubo. Eu crio uma geometria (Geometry) com uma forma de caixa (Box) 1x1x1
Você quer usar uma cor azul. Eu crio um Material com uma propriedade cor (Color) azul
Você quer colorir o cubo azul. Eu coloco o Material da geometria caixa (Box Geometry)
Você quer adicionar o cubo para a cena. Eu anexo a geometria caixa (Box Geometry) para o nó raíz (rootNode)
Você quer que o cubo apareça no centro. Eu crio a caixa (Box) na origem = em Vector3f.ZERO.

Se você não esta familiar com o vocabulário, leia mais sobre o Grafo de Cena aqui.

Inicialize a Cena

Olhe no resto da amostra de código. O método simpleInitApp() é automaticamente chamado uma vez no início quando a aplicação inicia. Todo jogo JME3 deve ter este método. No mpetodo simpleInitApp(), você carrega objetos do jogo antes que o jogo inicie.

    public void simpleInitApp() {
       // seu código de inicialização...
    }

O código de inicialização de um cubo azul parece como se segue:

    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
    }

Um jogo JME típico tem o seguinte processo de inicialização:

  1. Você inicializa os objetos do jogo:
    1. Você cria ou carrega objetos e posiciona eles.
    2. Você faz objetos aparecerem na cena por anexálos ao nó raiz (rootNode).
    3. Exemplos: Carregar o jogador, terreno, céu, inimigos, obstáculos, …, e colocá-los nas suas posições de início.
  2. Você inicializa variáveis
    1. Você cria variáveis para rastrear o estado de jogo.
    2. Você configura as variáveis para os valores de início delas.
    3. Exemplos: Coloque a pontuação para 0, coloque a saúde para 100%, …
  3. Você inicializa as teclas e ações do mouse.
    1. As seguintes ligações de entrada já estão pré-configuradas:
    2. W,A,S,D keys – Mova ao redir da cena
    3. Movimento do mouse e teclas seta - Vire a câmera
    4. Escape (Esc) - Sai do jogo
    5. Defina suas próprias teclas adicionais e ações de clique do mouse
    6. Exemplos: CLique para aturar, pressione a Barra de Espaço para pular, …

Conclusão

Você têm aprendido que uma SimpleApplication é um bom ponto de início porque ela fornece você com:

  • Um método simpleInitApp() onde você cria objetos.
  • Um nó raiz (rootNode) onde você anexa objetos para fazê-los aparecer na cena.
  • Configurações de entrada padrão úteis que você pode usar para navegação na cena.

Quando desenvolvendo uma aplicação de jogo, você irá querer:

  • Inicializar a cena de jogo
  • Dispara ações de jogo
  • Responder a entrada do usuário.

Agora os próximos tutoriais lhe ensinarão a como realizar estas tarefas com a jMonkeyEngine 3.

Continue com o tutorial Hello Node, onde você aprende mais detalhes sobre como inicializar o mundo do jogo, também conhecido como o grafo de cena.

Veja também:

Instalar a JMoneyEngine
SimpleApplication da Linha de comando
Criar um projeto JME3.

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-Share Alike 2.5 License.