Ola Macacada! Um Hello World com JMonkey Engine

Seguindo a onda de tutoriais do JMonkey, aqui vou mostrar como criar um "Hello World" com JMonkey. Lembrando que estou traduzindo isto da wiki oficial do JMonkey então se tu consegues ler em inglês, ja pode continuar os outros tutoriais que estão bem mais avançados. Caso você não tenha um ambiente configurado clique aqui para aprender.
Hello World
import com.jme.app.SimpleGame;
import com.jme.scene.shape.Box;
import com.jme.math.Vector3f;
/**
* Started Date: Jul 20, 2004<br><br>
* Simple HelloWorld program for jME
* @author Jack Lindamood
*/
public class HelloWorld extends SimpleGame{
public static void main(String[] args) {
//Create Object
HelloWorld app = new HelloWorld();
//Signal to show properties dialog
app.setConfigShowMode(ConfigShowMode.AlwaysShow);
app.start();
//Start the program
}
protected void simpleInitGame() {
// Make a box
Box b = new Box("Mybox", new Vector3f(0,0,0), new Vector3f(1,1,1));
rootNode.attachChild(b);
//Put it in the scene graph
}
}
Bem curto né? Nosso programa começa na seguinte parte:
public class HelloWorld extends SimpleGame{
SimpleGame faz um monte de inicializações para nós sem nos preocuparmos. Se você quiser, pode olhar o código da mesma, mas por enquanto entenda que ela cria a parte básica necessária para renderizar. É uma ótima classe para prototificar ou testar alguma coisa.
app.setConfigShowMode(ConfigShowMode.AlwaysShow);
Você conheçe a imagem do macaco que aparece na primeira vez que o programa, e que ela serve para selecionar a resolução?
Bem, este comando faz isto aparecer, como o nome diz,a cada vez que rodar o programa vai aparecer a properties dialog. Você nunca vera esta janela se substituir pelo seguinte código.
ConfigShowMode.NeverShow
Não é dificil =)...
app.start();
A função start() é um laço de repetição while. Primeiro, ele inicializa o sistema da jME. Depois, o laço faz duas coisas por repetição: primeiro, ele avisa tudo no seu game que precisa se movimentar, e segundo, ele renderiza tudo. Basicamente, ele faz o jogo funcionar.
protected void simpleInitGame() {
// Make a box
Box b = new Box("Mybox", new Vector3f(0,0,0), new Vector3f(1,1,1));
rootNode.attachChild(b); // Put it in the scene graph
}
A função simpleInitGame() é abstrata no SimpleGame, então você é forçado a implementa-la cada vez que estender a SimpleGame. Olhando o código nós podemos ver que duas coisas acontecem. Primeiro, eu fiz uma box(é o que tu vê na tela).Segundo, eu adicionei a box no root da minha cena gráfica. O objeto rootNode é da classe Node que é criada pelo SimpleGame para você. Você ira adicionar tudo nele ou em seus filhos. Eu coloquei 3 parametros em b: uma String e dois objetos Vector3f. Todo Node, Box, Circulo, Pessoa ou qualquer coisa em sua cena gráfica precisa de um nome. Normalmente você coloca um nome especifico para cada objeto. Eu chamei este de "My box", mas você poderia chamar de qualquer coisa. Os próximos dois parâmetros especificam os cantos da box. Ela tem um canto na origem e outro no x=1, y=1, z=1. Basicamente, é uma unidade de cubo. Ok, eu criei uma box, mas eu tenho que dizer que quero que ela também seja renderizada. É por isto que eu adicionei ela no objeto rootNode. A sua scene graph basicamente parece com isto:
| rootNode |
| My box |
O objeto rootNode é o pai e "My box" é filha do mesmo. Assim, quando a SimpleGame tenta desenhar o rootNode ela vai tentar desenhar a "My box" também. E é isto! No próximo tutorial, iremos para algo mais complexo.
Duvidas, sugestões, críticas? Comente =)
Avante Macacada. JMonkey Engine! Como configurar?

Na minha faculdade temos um grupo de estudos de games. Como tem um pessoal que ainda não sabe como configurar o JMonkey e nosso objetivo é estuda-la. Ai vai um tutorial do que você precisa para começar a fuçar no JMonkey.
O que é JMonkey Engine?
jME (jMonkey Engine) é uma API gráfica de grande performance. Ela é inteiramente escrita em Java e de código aberto sobre a licença BSD. Ou seja você é livre para alterar e distribuir.
Alguns exemplos do jME retirados do site oficial.






O que preciso para usar o jME?
- JDK Java
- Uma IDE para Java
- Os .jars do jME
Não vou entrar em detalhes de como instalar a JDK creio que esta informação esteja bem difundida na web. Quanto a IDE irei usar aqui neste tutorial o Eclipse como exemplo, que na minha opinião é o melhor.
- Eclipse : baixe aqui, extraia o pacote onde você preferir, abra a pasta e execute o eclipse.
- .jars do jME: Baixe o pacote completo aqui e o extraia onde preferir.
Configurando o Eclipse + jMEngine
Configurando User Library:
- Inicie o Eclipse (Eu uso o Galileu)
- Selecione no menu Window/Preferences
- Expanda a opção “Java”
- Expanda “Build Path”
- Clique em “User Libraries”
- Clique no botão New…
- Em "Name the library", digite, “jME 2.0 Complete”, depois clique em OK
- Selecione a nova Library e clique no botão“Add JARs…”
- Vá até onde você extiu a pasta do jME (Ex: /home/zeni/jme_20)
- Clique em jME_2.0.jar e precione OK
- Selecione “Native library location: (None)”
- Clique em edite… ira abrir “Native Library Folder Configuration”
- Clique no botão "External Folder"
- Vá até onde você extraiu a jME
- Abra a pasta “lib”
- Clique na pasta “natives” e de OK
- Selecione o ome da Library novamente e clique em “Add JARs…” novamente
- Vá até o diretório (.../jme_20/lib)
- Selecione todos os .jars (use CTRL+Clique) e clique no botão OK
- Olhe se todos os .jars estão na Library
- De ok e feche a janela de Preferencias.
Para usar a Library definida em seu Projeto Java
- Crie um novo Projeto Java (New/Project)
- Clique com o botão direito em cima do Projeto
- Clique Build Path + Configure Build Path
- Clique na aba “Libraries”
- Clique no botão "Add Library"
- Selecione “User Library” e clique em Next
- Selecione “jME 2.0 Complete” e clique em Finish
- Você pode ver “jME 2.0 Complete” litada em “JRE System Library”
- Clique em Ok e Feche a Janela
Conclusão
Podemos ver que é bem simples configurar o ambiente para usarmos o jME no Eclipse. Uma vez configurado não será mais necessario reconfigurar a menos que tu troques de WorkSpace. Em um próximo tutorial pretendo mostrar como fazer um HelloWorld no JMonkey Engine. Estou me baseando na Wiki oficial da Engine então quem quizer se adiantar entre na JME wiki . Duvidas e sugestões são bem vindas. Comentem =)
Ubuntu 9.04 – I/O Error, dev fd0

Ontem, resolvi instalar o Ubuntu 9.4 no meu Desktop. "Bootei" da Usb tudo perfeito, escolhi a linguagem e quando ia carregar deu este simpático erro.
[...] end_request: I/O error, dev fd0, sector 0
[...] end_request: I/O error, dev fd0, sector 0
[...] Buffer I/O error on device fd0, logical block
Legacy Diskette A: [Disabled]
Dando uma "googlada" vi que o erro tinha a ver com o meu Drive de Disquete. Logo, fui no setup da bios para ver como estava este Drive. Estava Habilitado o Drive de Disquete. Desbilitei e tudo voltou ao normal. =) Drives de Disquete podem ser maus.
IEs4Linux

IEs4Linux é a forma mais simples de ter o Microsoft Internet Explorer rodando no Linux (ou outro SO rodando Wine).
Nenhum clique. Nenhum processo de instalação chato. Nenhuma complicação do Wine. Apenas um simples script e você terá 3 versões do IE para testar seus Sites. E é gratuito e software livre.
Na minha universidade, os usuários de Linux tem um problema com o repositório de arquivos. Ele simplesmente só funciona na Janelinha (Internet Explorer). IE4Linux é uma boa solução para acessar sites apenas para o IE. Ele utiliza o Wine para emular o IE6. Para baixar e aprender a instalar entre em: http://www.tatanka.com.br/ies4linux


