Where to find a structure similar to XNA in Java

I am now a C # / Java developer, and I had a great time on XNA with C # .NET.
But I want to try 3d in Java, as it is portable, and I have not tried OpenGL yet.

I ran into a problem where there were many possibilities:

  • jMonkeyEngine
  • Avatrix3d
  • Ardor3d
  • Java3D - I didn’t really look heavily, it seems interesting, but I would rather see what people really say, If this is actually what I was looking for, it would be awesome. The downside is that I think the level of support is very low.

I mainly looked at JME, which turned out to be more of an engine than a framework (which happened to me through a name, although I was told that this is not so).

Basically, what I would like to get from a specific work with the frame:

  • Pretty automatic rendering (see XNA, maybe a little more than theirs, but around that)
  • The included vector math, what they did in JME with nodes is fine [/ li>
  • It is advisable to easily port the application (unlike XNA, where the end user must install .NET and XNA)
  • There are no unnecessary implementations of what will not necessarily be common: it probably needs an explanation, I mean that I hate JME, it is that they already have a bunch of complex physics implementations, such as their bullet class and simplePhysicsUpdate . They do not always necessarily do what you want, and it is not very easy to implement on their own. In XNA, they leave all of these items completely open.
  • The true OOP approach. Indeed. In XNA, I believe this is a true OOP approach, since you have one controller class that contains all GameComponents. It also makes it easier to create your own library for managing personal data, etc. Physics also becomes much easier to handle.

Please note that I have not watched JME for a long time, so I CAN make a mistake in this. If so, tell me about this and perhaps provide examples of how he can implement what I ask from above.

Otherwise, please give me ideas on what might be the case, that is, the frame, not the engine.

In addition, it is worth noting that I asked a similar question here . This is how I ended up in JME. I am also browsing Java3D in the task list.
This question is different because I am asking specifically the structure, not the engine. (for me, the difference is that the engine will try to have all the finished games, while the structure just makes it easy to create a real engine that suits yours ).

Edit : after reading 2 answers, I'm going to learn Java3D, although it seems to have very little support, since I don't want JME severity if I am not going to use it, and think about cracking pieces of the product a little wrong (I have in mind that this is normal if necessary, but I would prefer to explore other solutions first). If this does not work either, I will consider jogamp and LWJGL, possibly creating my own infrastructure from them (this seems like an interesting project). If I do not build it, I will just stick to XNA (although I will lose the ability to install any of my creations on the Linux machine below :()

+7
source share
2 answers

A few thoughts, but transition to persecution: for Java there is no such structure, you can stop looking - or be very disappointed.

XNA is a major investment from Microsoft, its scope and tools are amazing. And no wonder: XNA is part of the Microsoft XBox strategy and their mobile strategy at the same time. There are many resources behind this. No one on the Java side has ever made such an investment because no major player is interested in promoting Java as a gaming platform (this could change with Android and JavaFX, but I would not hold my breath).

What we have here in Javaland is many small libraries, communities, and projects. More excitement and ideas, less maturity. Less tools, more cross-pollination. My current favorite is PlayN, which is a really cool cross-platform platform library that allows you to create a game for Android and the desktop, and then compile it into Javascript and play in any modern browser without any plugins.

Regarding the technical side, two notes:

  • I object to calling the "one controller to manage them all", the true OO approach (and probably calling something called the "true OO approach"); it is definitely a design choice that has good sides, but it has its trade-offs. There are other ways to provide dependencies, in addition to attaching to some central object.

  • No JME - AFAIR - is rigidly connected to any specific physical engine, it is built with the assumption that everything should be replaced. It can be done differently than XNA, but it is good.

+2
source

I think jMonkeyEngine is probably the best choice.

It is designed as a fairly full-featured game engine, but you have nothing to stop using as a frame and just pick and choose the bits you need. It also opens the source code, so if you want to do something different, then you can always hack it the way you want :-)

For example, if you don't like the higher level jMonkeyEngine scene graph functions, you can simply use LWJGL (which jME uses internally for rendering) and draw using OpenGL directly.

+1
source

All Articles