Juegos 3D en Java: Blender y JMonkeyEngine

2
57583

Juegos
3D en Java: Blender y
JMonkeyEngine

Cuando
empecé con el mundo del desarrollo informático,
de
modo autodidacta, lo primero en lo que pensé fue en hacer
juegos como este amagoa marcianitos (1993).
 Más adelante hasta gané un concurso con
el juegode barcos (1994). Y desde
siempre me llamó la atención OpenGL.

Se
pierde perspectiva pero antes había muy poca
información
sobre estas cosas y era realmente difícil introducirte en
estas tecnologías de
un modo auto-didacta. Internet estaba en su nacimiento… por
lo menos para un estudiante/empleado
de a pie en España.

Los
caminos laborales me alejaron de todos estos temas pero
por casualidades del destino me puse muy pronto a trabajar en Java.
Encontré
esto hace no mucho de aquella época
¿Cuántos
pueden presumir de estar con esto
desde el principio?

Cualquiera
ahora se reirá por la pregunta pero mira la fecha
y la respuesta (y mi inglés). No era algo evidente.

Java
desde el principio me entusiasmo pero tampoco tenía muy
claro que fuera el entorno más adecuado para hacer juegos,
sobre todo pensando
en el rendimiento. También es verdad que la
tecnología avanza y que lo que era
un problema hace un tiempo es algo insignificante ahora (siempre que no
estés
en la picorota del todo).

Me he
vuelto a plantear el tema de los juegos o mejor dicho,
ver si podemos dar vida a los comics que tanto me gusta de Jorge Crespo
Cano https://www.adictosaltrabajo.com/comic.php
… aunque ya os contaremos un poquito más sobre
ello que puede ser divertido.

Dado
que nuestro entorno laboral circula principalmente en
torno a Java, pues voy a retomar la investigación sobre este
mundillo en Java.

Cuando
investigue sobre OpenGL e hice algunos ejemplos
llegue a una conclusión que es la de partida: La
programación me parecía mucho
más sencilla que la construcción de los
escenarios, personajes y guión. Seguro
que cuando te metes más la programación se
complica sobre todo por temas de
rendimiento: Colisiones, decenas de objetos relacionándose,
leyes de la física,
etc… pero eso lo veo más asequible a mi perfil…
por lo menos a nivel amateur.

Entones,
los primeros problemas que habrá que solucionar
será como conseguir que los escenarios y personajes entren
en nuestro universo
de programación y luego ver qué hacemos con ellos.

Investigando
un poquito he decidido un camino: Utilizar el
motor de juegos JmonkeyEngine como base de los desarrollos Java y el
programa
gratuito de diseño y animación 3D Blender para
construir los escenarios y
personajes (o reciclar alguno a efectos de prueba).

Por
tanto, en este tutorial voy a compartir con vosotros
estos primeros pasitos y descubrir cómo conseguir que lo que
pintas en Blender
acabe cargado dentro de tu programa basado en JmonkeyEngine.

Francamente
pensaba que me iba a costar más pero ha ido todo
bastante bien o con problemas solucionables de un modo intuitivo.

Bueno,
vamos a dar los primeros pasos con Blender, a
exportar un escenario y cargarlo en JavaMonkeyEngine.

Pues
nada, nos descargamos Blender: http://www.blender.org/

Tampoco
es tan grande.

Como
casi todos los programas, con 4 oks lo instalamos.

Definimos
opciones por defecto.

Y te
pide tener instalado python en tu sistema.

De
todos modos lo arrancamos.

Y
funciona aunque asumimos que cosas podrían fallar.

Nos ha
abierto en Web de python directamente.

Pues
damos a descargar e instalar.

La
instalación es igual de sencilla y nos dejará
fallar
Blender 3D.

No me
voy a poner a pintar nada de momento así que buscamos
algunos dibujos que ya existan y legamos a este enlace:

http://www.blender3dclub.com/index.php?name=Downloads&req=viewdownload&cid=1

Si os
fijáis, tienen muñecos de la guerra de las
galaxias y
otras cosas. Me los bajo.

Abrimos
Blender y cargamos el fichero descargado (una vez
descomprimido). Es aspecto es alucinante y sin tener ni idea tiene toda
la
pinta de que el guerrero tiene puntos de articulación
perfectamente definidos y
que el arma que tiene en la mano será renderizada con el
dibujo de la
izquierda.

Pulsamos
render y alucino

Bueno,
parece que vamos por buen camino así que nos vamos a
poner con la programación. Me bajo la última
versión de NetBeans. Me vales con
la versión más simple.

Descargamos
e instalamos la versión 6.7 de NetBeans. Creamos
un nuevo proyecto.

Le
vamos a llamar EscenasBlender.

Ahora,
tenemos que añadir los jar necesarios para que JmonkeyEngine
funcione.

Bueno,
antes nos bajamos JmonkeyEngine o más conocido como
JME desde http://jmonkeyengine.org/

Nos lo
descargamos. Curiosamente está en code.google.com.
Estoy demasiado acostumbrado a bajarme todo de sourceforge.net.

Ocupa
unos 20 Megas.

Yo os
recomiendo leeros la guía/tutorial. Es muy cortito y
os aclarará muchas cosas.

http://wiki.jmonkeyengine.org/doku.php

Si
habéis jugado alguna vez con OpenGL es bastante intuitivo
lo que dice.

Yo he
hecho una pequeña chapucilla práctica en NetBeans
para
analizar el código. He descomprimido en el directorio de
trabajo el directorio
de pruebas que hay dentro del jar de JME. Se llama jmetest.

De
este modo, ya estoy en órbita y al pulsar el
botón play
en NetBeans me va a cantar lo que le falta. Podéis ver que
algunos ejemplos
tienen dependencias rotas. Pues nada, buscamos por internet y nos
bajamos lo
que haga falta.

Lo
primero que nos falta son las librerías de JOGL/SWT. Pues
a por ellas y las copiamos en un directorio cualquiera. No
olvidéis incluir los
jar dentro del apartado de librerías de puesto proyecto.

Realmente
lo que tenéis que incluir es lo que está dentro
del directorio. Yo he incluido todos los jar por si las moscas y no da
problemas.

También
echa de menos las librerías de SWT. Pues también
nos
las bajamos: http://www.eclipse.org/swt/

Tarda
poco en bajar

Bueno,
os dejo aquí todas las que he puesto para que me
funcione.

Ahora
al arrancar la clase TestChooser todo nos funciona y
nos permite seleccionar el ejemplo que queremos ver.

 

Para
sorpresa y desgracia vuelve a fallar. JMonkeyEngine se
basa en la librería lwjgl que utiliza librerías
nativas (dlls en Windows) para
mejorar el rendimiento.

Tenemos
que decirle donde están para que funcione:

Vamos
a las propiedades de nuestro proyecto en NetBeans

 

Y le
pasamos un argumento a la máquina virtual para evitar
el error: java.lang.UnsatisfiedLinkError:
no lwjgl in java.library.path

Salvado
este problemilla, estamos en órbita viendo los
ejemplos.

Vemos
el resultado

Veréis
que con el ratón y distintas teclas podéis mover
la
escena (viene en el manual)

Por
ejemplo: Al pulsar T, nos quedamos solo con la estructura
de alambres 3d.

Ya
solo nos queda el pegamento. Lo que tenemos en Blender
llevarlos a JME.

Navegando
por internet he encontrado documentación
específica de cómo hacerlo desde Blender, la
herramienta gratuita: Blender –
JME Exporter

http://jmonkeyengine.googlecode.com/svn/branches/blenderjme/src/blenderjme/exporter.html

Tiene
un tutorial muy majo que os recomiendo visitar.

Realmente
solo hay que bajarse el ZIP y seguir las
instrucciones.

Tenemos
que tirar en el directorio de scripts de Blender el
contenido de nuestro Zip descargado.

En
vista mi trayecto es el siguiente:

C:\Program Files\Blender
Foundation\Blender\.blender\scripts

Si nos
vamos a las opciones de exportación nos ha salido una
nueva para JMonkeyEngine.

Elegimos
os objetos a exportar

Y
comprobamos que se ha generado el fichero.

Ahora
vamos a hacer una pequeña chapuzilla para tener el programa
cargador de la escena en nuestro entorno.

Creo
un paquete llamado miXmlWorld

Creo
una clase llamada XmlWorld

Desde
 el tutorial copiamos y pegamos en nuestro NetBeans el
ejemplo de código.

http://www.jmonkeyengine.com/wiki/doku.php?id=blenderjme_basics_tutorial

Solo
tenemos que tener la precaución de pasar ahora un argumento
con el trayecto de la escena exportada que siempre tiene el formato
algo-jme.xml.

El ojo
que usaba como ejemplo no me ha funcionado. He probado
a pintar figuras simples y si lo hace bien. Tendré que
investigar las
restricciones y problemas pero ya estamos en órbita.

Bueno,
deciros que ya está la base montada para profundizar
en los conceptos. Ya tenemos otro juguete en el que tirar miles de
horas.

Encontrareis
en las noticias otros productos interesantes
como visores y editores de escenas: http://jmonkeyengine.org/

Esto
tiene buena pinta paro ya para otros tutoriales.

Seguiremos
investigando para ver como es el mejor modo de
combinar estas técnicas. Solo recordaros que
podéis colaborar.

Empezamos
hoy un camino al que ya os adelanto que vamos al
dedicar recursos… y mucha ilusión.

 

2 Comentarios

  1. Srs.
    A mi me pasa lo mismo que a DARKFALCON (pantalla negra), alguien tendrá la solución???? No importa lo simple que sea la figura. Saludos y que barbaro estes sitio, muchas gracias!!!

Dejar respuesta

Please enter your comment!
Please enter your name here