2012-03-11 6 views
7

Ahora mismo soy desarrollador de C#/Java, y he estado pasándolo muy bien en XNA con C# .NET.
Pero quiero probar el desarrollo de 3D en Java, ya que es portátil y todavía no he probado OpenGL.Dónde encontrar un marco similar a XNA en Java

me encontré con un problema en el que había muchas posibilidades aquí:

  • jMonkeyEngine
  • Avatrix3D
  • Ardor3D
  • Java3D - No he mirado en realidad en gran medida, parece interesante, pero Preferiría ver lo que dicen las personas primero. Si esto es realmente lo que he estado buscando, sería increíble. La desventaja es que creo que el nivel de soporte es muy bajo.

Miré principalmente a JME, que resultó ser más un motor que un framework (que se me ocurrió a través del nombre, aunque me dijeron que no).

Básicamente lo que yo quiero de una específicamente framerwork:

  • prestación Bastante automática (ver XNA, quizás un poco más de lo que hacen, pero en torno a que)
  • Incluido matemáticas vector, lo que hicieron en JME con nodos está bien
  • Preferiblemente fácil de puerto con la aplicación (a diferencia de XNA, donde el usuario final tiene que instalar .NET y XNA)
  • No Unnecessa Implementaciones de lo que no será necesariamente genérico: esto probablemente requiera una explicación, lo que quiero decir es que, lo que odio en JME es que ya tienen un montón de implementaciones de física pesada, como su clase de viñetas y simple Actualización de Física. No siempre hacen lo que tú quieres, y no es muy fácil implementar el tuyo. En XNA, dejan todo ese tema completamente abierto.
  • Enfoque de POO verdadero. De Verdad. En XNA, considero que es un verdadero enfoque OOP ya que tiene UNA clase de controlador, que contiene todos los GameComponent s. Esto también es lo que hace que sea tan fácil construir su propia biblioteca para la gestión de entrada personal y tal. La física también se vuelve mucho más simple de manejar.

Tenga en cuenta que no he estado mirando a JME durante mucho tiempo, por lo que PUEDO estar equivocado al respecto. Si lo estoy, dígalo y tal vez proporcione ejemplos de cómo puede implementar las cosas que solicito en la parte superior.

En caso contrario por favor me dan ideas á lo que podría ser como tal, es decir, un marco y no unmotor.

Además, vale la pena señalar que ya hice una pregunta similar here. Así es como terminé investigando a JME. También busqué Java3D en mi lista de tareas pendientes.
Esta pregunta es diferente ya que pido específicamente un marco en lugar de un motor .(Para mí la diferencia es que un motor intentará tener todo listo para el juego, mientras que un marco simplemente hace que sea más fácil hacer el motor real que se adapte a sus necesidades).

Editar: después de leer las 2 respuestas, voy a buscar en Java3D aunque parezca tener muy poco soporte, ya que no quiero la pesadez de JME si no voy a usar y considerar la piratería de trozos de un producto como algo incorrecto (me refiero a que está bien hacerlo si es necesario, pero preferiría buscar otras soluciones primero). Si eso tampoco funciona, analizaré jogamp y LWJGL, posiblemente construyendo mi propio marco (parece un proyecto interesante). Si no lo construyo, me limitaré a XNA (aunque perderé la posibilidad de instalar cualquiera de mis creaciones en la máquina de Linux abajo :()

Respuesta

2

Un par de ideas, pero saltando a la caza: no existe tal marco para Java, puedes dejar de mirar, o estar muy decepcionado.

XNA es una importante inversión de Microsoft, su alcance y herramientas son sorprendentes. Y no es de extrañar: XNA es parte de la estrategia XBox de Microsoft Y su estrategia móvil al mismo tiempo. Tiene muchos recursos detrás. Nadie en el lado de Java ha hecho una inversión similar, porque ningún jugador importante tenía interés en empujar a Java como una plataforma de juego (esto podría cambiar con Android y JavaFX, pero no contaría con la respiración).

Lo que tenemos aquí en Javaland es un montón de pequeñas bibliotecas, comunidades y proyectos. Más entusiasmo e ideas, menos madurez. Menos herramientas, más polinización cruzada. Mi favorito actual es PlayN, que es una biblioteca realmente genial, multiplataforma que te permite construir un juego para Android y escritorio, y luego compilarlo en Javascript y jugar en cualquier navegador moderno sin ningún complemento.

En cuanto a la parte técnica, dos notas:

  • Objeto a llamar "un controlador a ellos descarta todos" un verdadero enfoque orientado a objetos (y probablemente no llamar a nada "el verdadero enfoque OO"); ciertamente es una opción de diseño que tiene buenos lados, pero tiene sus compensaciones. Existen otros métodos para proporcionar dependencias además de pegarlas en algún objeto central.

  • JME no es - AFAIR: cableado a cualquier motor de física específico, está construido con la suposición de que todo debería poder intercambiarse. Puede hacerse de una manera diferente a como lo hace XNA, pero es bueno.

+0

Tenga en cuenta que JME, de hecho, hace lo mismo (un controlador para gobernarlos todos) en términos de representación real: rootNode. ¿Realmente no hay marcos que admitan las 5 funciones que he solicitado? Creo que piratear trozos gigantes de algún producto es algo horrible de hacer, así que voy a investigar Java3D y si eso no funciona, tal vez haga lo propio con LWJGL/JOGL o simplemente me quede en mi.NET world XD –

+2

No tengo nada en contra de los controladores individuales, realmente; muchos de mis mejores amigos son solteros. Simplemente estaba en contra de considerarlos (o cualquier otra cosa para el caso) "la única técnica verdadera OOP" :) En cuanto a tus dudas, bueno - mira por ti mismo. XNA no es su proyecto de código abierto promedio. Es una gran plataforma que solo podría ser entregada por un gran proveedor con grandes recursos. Ningún proveedor de Java consideró que fuera una buena idea invertir para construir una plataforma de juegos Java, así que tenemos muchas cosas geniales de código abierto, simplemente no hay madurez a la que estés acostumbrado. Por cierto, Java3D tiene un nivel tan bajo que te hará llorar. – fdreger

+0

Y sí, otorgarle alguna otra respuesta antes de verificar los hechos detrás de los míos, dolió :-) – fdreger

1

Creo que jMonkeyEngine es probablemente su mejor opción.

Está diseñado como un motor de juego bastante completo, pero no hay nada que te impida usarlo como marco y simplemente escoger y elegir los bits que necesitas. También es de código abierto, por lo que si quieres hacer algo un poco diferente entonces siempre es posible hackearlo de la manera que desee :-)

Por ejemplo, si no le gustan las funciones de gráfico de escena jMonkeyEngine de nivel superior, puede usar LWJGL (que utiliza jME internamente para renderizar) y dibujar usando OpenGL directamente.

Cuestiones relacionadas