jme_engine

De uns tempos pra cá andei repensando algumas coisas sobre a área e está acontecendo, aos poucos, a minha saída da área de desenvolvimento de jogos. OK, você não precisa se preocupar com o futuro do blog, já que eu ainda estou aqui e vou continuar, mas de forma mais comedida. Como andei repensando algumas coisas, eu decidi sair da aula de desenho por uns tempos e decidi fazer o que deveria ter feito a muito tempo: baixar uma engine free e poderosa para Java e tentar voltar a estudar, pra criar algum tech-demo xing-ling e ir evoluindo com o tempo!

Mas peraí…Java? Usa C++ que é o que o mercado está pedindo! A frase anterior pode ser a opinião da maioria dos leitores, mas como eu sou preguiçoso, demoraria mais tempo pra estudar a linguagem e depois estudar uma engine. Então eu decidi eliminar a primeira etapa e ir direto pra segunda, mesmo sabendo que podem existir engines mais poderosas do mercado. E tem outra: nem esta engine eu vou conseguir usar com todos os recursos, já que eu tenho uma placa Geforce4 MX, e a mesma não tem Pixel Shader e muitos recursos atuais. Então vou com que eu tenho disponível mesmo, já que meu objetivo é apenas mostrar que posso ser um bom programador de jogos. E quero logo sair da área de sistemas comerciais em Visual Basic e com isso eu preciso me mexer!



Hora de parar com a ladainha costumeira dos posts e vamos ao que interessa: dicas pra engine jMonkeyEngine. O maior problema desta engine é que a documentação não é tão abundante e mesmo no wiki oficial alguns códigos-fonte estão desatualizados. Ontem eu baixei a ferramenta e consegui acionar ela no Eclipse, mesmo não precisando do Ant e de passar por tutoriais complicados de instalar e executar. O problema é que o log do console ficou bastante ativo nos testes iniciais (talvez por causa que eu não tenha colocado todos os recursos ou eu não sabia ainda como desativar isso…), pode ser que eu tenha esquecido alguma configuração necessária, o que pode deixar um tutorial meio vago. Mas vamos lá: com o Eclipse aberto (estou usando o Eclipse 3.5) e a engine já baixada e descompactada em algum lugar do teu sistema operacional (eu estou no ambiente Windows, e baixei a versão Stable) crie um projeto qualquer. Então clique com o botão direito do mouse em cima dele e vá em Properties. Vá em Build Path pra adicionar no classpath os arquivos .jar necessários, que estão na pasta lib. Adicione todos eles pra garantir:

jmonkeyengine_eclipse_01

Agora vamos adicionar os arquivos da LWJGL, uma biblioteca adicional que usa a OpenGL do sistema operacional, e necessária pra engine rodar. Vá na pasta interna Lib –> LWJGL e adicione os Jars que estão lá:

jmonkeyengine_eclipse_02

Agora vamos ao nosso primeiro Helloword. Como base deste primeiro programa eu usei este tutorial do Luis Zeni, e nele ele explica cada comando do HelloWord. Eu apenas expliquei direto nos comentários, já que em teoria muitos programadores gostam de ir direto ao ponto, e o objetivo do tutorial é fazer a engine rodar no Eclipse:

import com.jme.app.SimpleGame;
import com.jme.math.Vector3f;
import com.jme.scene.shape.Box;

/**
 * Estudo da engine jMonkeyEngine para o site GamedevBR
 * @author Rodrigo Flausino
 */
public class HelloWord extends SimpleGame {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// Criando um objeto da aplicação
		HelloWord aplicacao = new HelloWord();
		/* Setando configurações pra aparecer a
		janela de configuração */
		aplicacao.setConfigShowMode(ConfigShowMode.AlwaysShow);
		// Iniciando jogo
		aplicacao.start();
	}

	@Override
	protected void simpleInitGame() {
		/* Criando uma caixa simples e
		 * posicionando no cenário*/
		Box caixa = new Box("Caixa", new Vector3f(0, 0, 0),
				new Vector3f(1, 1, 1));
		// Colocando a caixa dentro do plano 3D
		rootNode.attachChild(caixa);
	}
}

Tendo este programa na IDE, vamos executar a mesma. Na primeira vez ele irá avisar no console que está faltando as bibliotecas nativas:

Native library not set – go to http://www.jmonkeyengine.com/wiki/doku.php?id=no_lwjgl_in_java.library.path for details.

Pra sanar esse erro é necessário colocar argumentos dentro das configurações de Run do Eclipse. Então clique com o botão direito em cima da classe e vá em Run As –> Run Configurations, pra setar a configuração necessária pro programa achar as DLLs do LWJGL:

jmonkeyengine_eclipse_03

Vá em Arguments e coloque a seguinte linha dentro do quadro VM, pro Eclipse achar as DLLs que estão na pasta NATIVE dentro do LWJGL:

-Djava.library.path=”rotadapasta_onde_voce_descompactou\jME2_0_1-Stable\lib\lib\lwjgl\native\windows”

Esta linha será responsável por achar a configuração. Como não estou usando Ant (na verdade desconheço o seu funcionamento, por nunca precisar dele na época que eu programava profissionalmente em Java) talvez seja necessário setar essa linha em todas as classes que você for fazer pra aprender (caso separe tudo em várias classes diferentes com várias técnicas diferentes).

Ao rodar, ele irá mostrar uma pequena janela de configurações, onde o usuário pode colocar 800×600 e “escolher” a API de OpenGL que ele irá utilizar. Eu usei a LWJGL já que ela é a padrão do wiki e não consegui usar a JOGL sozinha. Mas pra quem quer aprender de começo acredito que a LWJGL dê conta do recado. Depois quer você escolher a configuração na tela você poderá ver o código acima funcionando:

jmonkeyengine_eclipse_04

Com o programa rodando ele irá mostrar um pequeno cubo. Se você mexer o mouse vai estranhar que o cubo está se movendo de forma invertida. Só depois de algum tempo eu percebi que na verdade você estava mexendo na câmera, e não o cubo (que está estático no cenário). Então eu achei aqui os movimentos padrões de câmera da classe SimpleGame, que tem alguns movimentos pré-setados como W, que move pra frente, T pra mostrar o Wireframe e L, que acende/apaga a iluminação (e outros comandos). É interessante usar isso pra se aproximar do cubo, rotacionar a câmera, e testar os seus objetos que você for colocando no plano 3D. Mas nem todos os movimentos funcionam, e ainda não sei como setar os movimentos e definir outras configurações de entrada de comandos do teclado.

Por fim, este foi um tutorial básico da engine. Eu deveria estudar ela mais antes de ter comentado sobre ela aqui, mas decidi acelerar o processo já que eu ando relaxando com o blog e posso me forçar a estudar, além de dar dicas pra vocês sobre programação de engines durante as próximas semanas.







Apoie o Select Game pela tag da Epic Store


Se você curte o Fortnite, gostou deste artigo e/ou usa a Epic Store, apoie a gente, para continuarmos com o nosso trabalho! Use a tag RODRIGOFGLIMA dentro do Fortnite ou na loja da Epic Store.

Apoie um criador Select Game





Paganini Mixer