Ide JMonkey

24 respostas
S

fala ae pessoal,

não sei se esse é o fórum certo pra postar duvidas sobre esse tipo de ide...mas não achei outro forum que se encaixace mais nesse perfil...

estou iniciando em jmonkey pq quero fazer meu TCC (um jogo) com essa api...

1° Eu quero fazer meu jogo rodar no browser do usuario.No meu jogo o usuario poderá adicionar objetos na cena, então eu quero saber se tem como o meu programa apontar para esse novo objeto dentro do meu servidor e baixa-lo na cena...tem como fazer isso? E qual o melhor metodo pra eu utilizar no meu jogo na web, applet ou javaFX?

2° baixei a api do JMonkey, entrei na pasta lib e importei todas os .jar de todas as pastas lá (fiz os imports pelo netBeans), ae fui tentar aplicar um codigo exemplo que achei no proprio site JMonkey, o codigo é esse:

import com.jme.app.*;

import com.jme.scene.shape.Sphere;
import com.jme.math.Vector3f;
import com.jme.bounding.BoundingBox;
import com.jme.image.Texture;
import com.jme.scene.state.TextureState;
import com.jme.util.TextureManager;


public class Main extends SimpleGame
{ 

    public static void main(String[] args)
    {

            Main app = new Main();
            app.setConfigShowMode(ConfigShowMode.AlwaysShow);
            app.start();

     
    }

    public Sphere sfera ()
    {
        Sphere s = new Sphere("Sphere", 30, 30, 25);
        s.setLocalTranslation(new Vector3f(0,0,-40));
        s.setModelBound(new BoundingBox());
        s.updateModelBound();

        return s;
    }


    protected void simpleInitGame()
    {
     
    }   

}

O netBeans não mostra nenhum erro de sintaxe e na hora que eu executo a classe da esse erro aqui:

run:
11/11/2009 14:39:16 com.jme.app.BaseGame start
INFO: Application started.
11/11/2009 14:39:16 com.jme.system.PropertiesGameSettings <init>
INFO: PropertiesGameSettings created
11/11/2009 14:39:16 com.jme.system.PropertiesGameSettings load
WARNING: Could not load properties. Creating a new one.
11/11/2009 14:39:16 com.jme.app.AbstractGame getAttributes
SEVERE:

Native library not set - go to
http://www.jmonkeyengine.com/wiki/doku.php?id=no_lwjgl_in_java.library.path
for details.
java.lang.UnsatisfiedLinkError: no lwjgl in java.library.path
        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1705)
        at java.lang.Runtime.loadLibrary0(Runtime.java:840)
        at java.lang.System.loadLibrary(System.java:1066)
        at org.lwjgl.Sys$1.run(Sys.java:72)
        at java.security.AccessController.doPrivileged(Native Method)
        at org.lwjgl.Sys.doLoadLibrary(Sys.java:65)
        at org.lwjgl.Sys.loadLibrary(Sys.java:81)
        at org.lwjgl.Sys.<clinit>(Sys.java:98)
        at org.lwjgl.opengl.Display.<clinit>(Display.java:129)
        at com.jme.system.lwjgl.LWJGLPropertiesDialog$ModesRetriever.run(LWJGLPropertiesDialog.java:682)
        at com.jme.app.AbstractGame.getAttributes(AbstractGame.java:252)
        at com.jme.app.BaseGame.start(BaseGame.java:67)
        at visão3d.Main.main(Main.java:32)

será que tem que fazer mais alguma coisa alem de adicionar ao projeto os .jar da api?

alguem pode me ajudar a resolver esse problema ae?

se alguem souber alguma apostila pra eu aprender a fazer jogos legais com JMonkey eu agradeço..

obrigado pela atenção!

24 Respostas

V

Sim, o LWJGL possui algumas bibliotecas nativas (.dll, no caso do Windows). E elas também precisam ser importadas.
Não sei como fazer isso no netbeans.

M

então, no próprio stack trace tem a dica de como importar as bibliotecas http://www.jmonkeyengine.com/wiki/doku.php?id=no_lwjgl_in_java.library.path

S

eu olhei lah e segui os passos:

cliquei com o lado direito no meu projeto, fui em propriedades, executar, opções da VM e coloquei lah no campo:

depois dei ok

e o problema continua o mesmo…

alguem pode me ajudar?

N

Olá,

Eu nunca usei o JMonkeyEngine, mas eu uso um outro framework de jogos que usa o lwjgl, e ocorria um problema igual ao seu, no meu caso a solução foi simples, vou descreve-la aqui, talvez te ajude em algo.

Bom, eu uso o eclipse, mas creio que o netbeans tenha as configurações iguais :D,

primeiro eu criei uma pasta qualquer(no casso com o nome dll) e coloquei o arquivo lwjgl.dll nesta pasta, depois fui nas configurações de execução do programa e no espaço de argumentos para a VM doloquei o seguinte parametro = -Djava.library.path=dll.

[]s

L

Se você ainda não viu, mas acho dificil: http://leandron.wordpress.com/2008/09/21/configurando-o-netbeans-para-utilizar-jmonkey-engine/

Já segui esse tutorial quando comecei com JME.

S

consegui pessoal…

eu coloquei o caminho absoluto das dll no opções VM desse jeito:

-Djava.library.path=“C:\Java\APIs java\jME2_0_1-Stable\lib\lib\lwjgl\native\windows;C:\Java\APIs java\jME2_0_1-Stable\lib\lib\jogl\native\windows_amd64;C:\Java\APIs java\jME2_0_1-Stable\lib\lib\jogl\native\windows_i586”

funcionou beleza!

o problema é que eu não estava pondo o caminho absoluto.

com esse meu codigo apareceu um formulario com algumas opções de configuracoes do lwjgl ae eu dei ok e apareceu um cubo cinza que se movimentava com o movimento do rato e talz…mas acho que conforme for aprendendo vou aprender a tirar essa opção do lwjgl do inicio hehehhehe

vlw pela ajuda pessoal

e alguem sabe se tem como eu caarregar um objeto que esteja no meu servidor na minha cena 3d (por ex: pra carregar um novo personagem na cena, eu passo o caminho www.meusite.com.br/modelagens/novopersonagem.obj ou algum outro metodo parecido) ? e qual o melhor jeito de colocar o meu jogo pela web, via applets ou javaFX?

N

sarkozy:

e alguem sabe se tem como eu caarregar um objeto que esteja no meu servidor na minha cena 3d (por ex: pra carregar um novo personagem na cena, eu passo o caminho www.meusite.com.br/modelagens/novopersonagem.obj ou algum outro metodo parecido) ? e qual o melhor jeito de colocar o meu jogo pela web, via applets ou javaFX?

Não entendi qual o propósito de carregar um objeto do servidor, mas você poderia criar um arquivo XML ou outra coisa que descreve-se este seu objeto, quanto a disponibilizar pela web, existe o Web Start, mas acho meio ruim disponibilizar uma aplicação assim pela web, porque você não cria seu jogo como um client?

[]s

S

eu queriia fazer um jogo pela net commo se fosse uma aplicação VRML/X3D…

entao se eu iniciasse uma applet carregando de uma vez todos os objetos da cena isso ficaria mto pesado… entao eu gostaria que conforme o usuario for interagindo com o jogo o meu jogo faz um link com meu serv e baixa o novo objeto na cena…isso pq esse jogo teria mtas modificações ao longo do tempo…

não sei se isso é possivel…por isso estou perguntando…vc acha então que eh melhor eu fazer um sistema apenas desktop?

a ideia eh disponibilizar o jogo para download na internet sim!

vlw

N

Sim, eu acho que seria melhor fazer um client(Seu jogo desktop) que se comunica com o servidor, ai você mandava as atualizações do servidor para o client todo vez que fosse necessário é assim que os jogos massivos onlines funcionam.

[]s

S

ummm entendi.,…

acho que vou fazer do jeito que vc falou mesmo…fica mais pratico…

valew pelas orientações!

S

eu ia postar umas duvidas minhas no site jmonkey, ae eu fui em criar conta, mas sempre tah daando aviso que a senha tem q ser uma mmistura de letras minusculas com maiusculas…eu ateh fiz minha senha com letras minusculas e maiusculas mas da o mesmo erro sempre e eu n sei o que é…

entao, se alguem aqui mesmo puder me ajudar numas duvidas que eu tenho…

1° tenho que criar no meu jogo paredes e chão com piso laminado (brilhante, que reflete o ambiente)…minha ideia eh criar varios cubos e colocar texturas nesses cubos para representar as paredes e o chão…mas eu n achei lah no site um artigo que mostre como eu coloco texturas em um cubo e nem como eu simulo reflexos em uma textura…alguem aqui sabe fazer isso?

2° qual o arquivo de modelos vcs me indicam para importar na minha cena, .md5, .3ds ou qual outro?

se o melhor for md5, como eu importo modelos .md5 para a minha cena? eu já baixei e importei o arquivo MD5Importer-jME2.0-v1.3.jar no meu projeto mas qual é o codigo que eu transformo esse arquivo.md5 em um nodo para adicionar na minha cena?Eu não acho em lugar nenhum…

vlw

V

Geralmente, usa-se shaders para esse tipo de efeito.

O que você achar mais modelos que te atendem. O JMonkey tem um arquivo de modelo próprio. O 3ds não é animado. E é possível achar alguma coisa em MD5 na internet. Tem vários MD2 também, e são mais simples por não serem esqueletais. Seu trabalho exige que o modelo seja esqueletal?

S

[editado]

procurei por shaders e não achei codigos que me ajudassem…

vc poderia me mostrar (pode ser algum link onde tenha isso) um codigo que ponha textura em um cubo e que torne essa textura “laminada” ?

peguei o ultimo codigo desse link: http://www.jmonkeyengine.com/wiki/doku.php?id=model_loading&s.É para carregar modelagens .3ds.Parece que funciona bem (ainda nao testei , mas esse n tem erros de sintaxe).

Importando modelagens no jmonkey, as texturas jah vem junto? ou eu teria que por as texturas em separado?

pra esse meu jogo eu não preciso de esqueletos não… soh de modelagens mesmo … mas ppara jogos futuros eu vou precisar de movimentos bem complexos dos personagens … ae nesse caso eu teria que usar MD5?

vlw

V

O Shader é um programa que roda na placa de vídeo que pode, por exemplo, gerar o efeito de luminosidade. Se seu projeto é mais simples, você pode é xunxar, e fazer como alguns jogos antigo (e novos também) fazem. Crie uma textura iluminada, como se a luz estivesse na frente de uma janela. E aplique essa textura manualmente. Não é dinâmico, é menos realista, mas quebra um galhão.

É difícil achar documentação de boa qualidade sobre shaders na internet. Geralmente, é melhor comprar um livro na Amazon. Se alguém aí conhecer um link, poste aqui, pq eu também gostaria de conhecer.

L

Pequena ajuda: http://http.developer.nvidia.com/CgTutorial/cg_tutorial_chapter01.html

V

Bem bacana o tutorial…

Mas a CG não é exclusiva das placas NVidia? Eu tenho aqueles livros da MS, sobre shaders. Desde a versão 1.0. Mas tratam da linguagem da MS pro DirectX, a HLSL.

V

Interessante, estava lendo o tutorial aqui, diz que funciona para ATI também. Eu fiquei meio por fora da CG depois que comecei no HLSL, talvez seja hora de voltar a estuda-la. Sempre me pareceu mais simples.

L

Cg was developed in close collaboration with Microsoft Corporation and is compatible with both the OpenGL API and Microsoft’s High-Level Shading Language (HLSL) for DirectX 9.0.

Vini, você poderia me enviar esses pdfs?

V

Que pdfs? Eu tenho os livros mesmo.

Então, quando eu ouvi falar da cg a primeira vez, era realmente compatível. Mas só funcionava em placas NVidia. Havia até uma briga dela com outra linguagem da ATI, que não me recordo o nome. Mas pelo visto a NVIDIA venceu a briga. Não o que não me surpreende, por sinal.

S

bom…continuo aqui nos meu estudos e testes no jmonkey hehehehhehe

ae eu tive uma ideia… dentro do 3d studio max tem como criar texturas que simulam reflexo facilmente… entao se eu importar essa modelagem.3ds junto com essa textura dentro do meu projeto, acho que a funcionalidade de reflexos da textura não se perderia… ainda não testei pq n sei mexer no 3d studio max e nem achei modelagem com uma textura dessas na internet… essa semana vou ver com um amigo que mexe com 3ds e vou fazer os testes… mas o que vcs acham disso? funcionaria legal?

S

outra coisa... eu preciso por no meu jogo um menu com algumas opções no canto esquerdo ..... ae eu procurei e vi que teria que usar o FengGUI...Eu baixei os .jar (link http://www.fenggui.org/doku.php) e comecei a implementar uma aplicação em cima desse codigo: http://www.jmonkeyengine.com/wiki/doku.php?id=simple_fenggui_jme_app

mas alguns componentes o netbeans diz que n reconhece mesmo eu fazendo os importis de todas as jar.... meu codigo :

// todos estes imports funcionam beleza

import org.fenggui.ComboBox;
import org.fenggui.TextEditor;
import org.fenggui.composite.Window;
import org.fenggui.event.ISelectionChangedListener;
import org.fenggui.event.SelectionChangedEvent;
import org.fenggui.layout.StaticLayout;

public class Main

{
        

    FengJMEInputHandler input;  
    org.fenggui.Display disp;

public static void main(String[] args) throws Exception 
{
        // aqui importos os sons, as moodelagens e tudo mais...


}

 protected void initGUI()
	{
		// Grab a display using an LWJGL binding
		//	   (obviously, since jME uses LWJGL)

// aqui o new org.fenggui.render.lwjgl.LWJGLBinding() nao eh reconhecido:

		disp = new org.fenggui.Display(new org.fenggui.render.lwjgl.LWJGLBinding()); 

		input = new FengJMEInputHandler(disp); 

		//	 Create a dialog and set it to some location on the screen
		Window frame = new Window();
		disp.addWidget(frame);
		frame.setX(20);
		frame.setY(350);
		frame.setSize(200, 100);
		frame.setShrinkable(false);
		//frame.setExpandable(true);
		frame.setTitle("Pick a color");
		frame.getContentContainer().setLayoutManager(new StaticLayout());

		// Create a combobox with some random values in it
		//   we'll change these values to something more useful later on.
		ComboBox  list = new ComboBox ();
		frame.addWidget(list);
		list.setSize(150, list.getMinHeight());
		list.setShrinkable(false);
		list.setX(25);
		list.setY(25);
		list.addItem("White");
		list.addItem("Green");
		list.addItem("Blue");
		list.addItem("Red");

		list.addSelectionChangedListener(new CBListener()); // aqui o new CBListener() não é reconhecido

		//try to add TextArea here but get OpenGLException

		TextEditor ta = new TextEditor(false); // aqui ele nao aceita o false no construtor
		disp.addWidget(ta);
		ta.setText("Hallo Text");
		ta.setX(40);
		ta.setY(50);
		//ta.setSize(100, ta.getAppearance().getFont().get)
		ta.setSizeToMinSize();

		// Update the display with the newly added components
		disp.layout();

                 
	}

eh isso ae...n entendo os erros pq eu importei todos os .jar e tb criei a clsse FengJMEInputHandler retirada desse link: http://www.jmonkeyengine.com/wiki/doku.php/fengjmeinputhandler

mas tem uns erros tb que eu n sei o que eh... basicamente os erros dessa classe estao relacionados ao KEY:

//aqui ele nao entende o letter por exemplo:

Key key = mapKeyEvent();
			if(evt.getTriggerPressed()) {
				keyHandled = disp.fireKeyPressedEvent(character, key);
				// Bug workaround see note after code
				if (key == Key.LETTER || key == Key.DIGIT)
					keyHandled = disp.fireKeyTypedEvent(character);
			} else
				keyHandled = disp.fireKeyReleasedEvent(character, key);

alguem aqui saberia me ajudar nisso? alguem jah teve experiencia com formularios em jmonkey?

preciso muito criar um menu no meu jogo...se alguem puder me dar uma ajuda ae eu agradeçoo....flw

S

consegui fazer o menu do meu jogo utilizando swing mesmo … o negocio foi usar o LWJGLCanvas que da pra colocar as cenas 3d nele e adicionar ao seu formulario swing…

eu peguei o codigo desse link http://code.google.com/p/jmonkeyengine/source/browse/trunk/src/jmetest/util/JMESwingTest.java e estou implementando meu codigo por cima…ta funcionando perfeitamente…

flw

V

Só de curiosidade, está fazendo um jogo do que?

S

de construção de casas… tipo the sims, mas a ideia é meio diferente… eh pro meu tcc… quando estiver pronto eu posto o link pra vcs fazerem o download pra ve se fico bom heheheheh

Criado 11 de novembro de 2009
Ultima resposta 16 de nov. de 2009
Respostas 24
Participantes 5