Best 3D engines for Java

It was this question on Stack Overflow, asking for the Best 3D Engine, that got me curious (and it is asked and again and again).

According to DevMaster / Java there are 21 available 3D engines out there.

I only really knew of JMonkeyEngine and Ardor3D before. I see there is Xith3D but people say it is inactive.

What are the notable 3D engines, what are their best assets, the reason to choose them etc. At some point soon I’m going to dabble with programming a basic 3D game for Java and I’d rather not get involved in a heavyweight 3D engine straight away (and risk demotivation due to overcomplication) just because it is well known when there could be a better alternative out there.

Is it worth considering JOGL even if I don’t know much OpenGL at all?

Update: Of course, the term “best” is very subjective. Best in your experience, for your requirements etc. I’m not looking to start a flame war but an objective - positive - “I use X because of Y” etc.

A best 3D engine does not exist. They all have advantages and disadvantages.

  • Size
  • Features
  • Performance
  • Platform Support
  • And more are all important

So it is not a one size fits all deal.

If you looking to make games then at the moment UDK and Unity3D are the best offerings.

Sadly 10 plus years ago when I started the AllBinary Platform most of the 3D engines either cost money or where very broken, but that is different now. I personally plan to support all major Java 3D engines as render plugins for my AllBinary Platform. So far I just have one, and plan 3 over the next 2 years. Probably Min3d, Ardor/jME, and another.

If you are looking to be part of the best 3D engines for java that are open then you listed most of them already.

Min3D, JCPT, Alien3D, jOgre and more have special capabilities as well.

So focus on learning one that you want to support or pay for in the future, and skip all the others.

Hi!

I agree with the first sentence of tberthel, your question is very subjective.

Your choice should depend on how deep you want to go on the long term. If you only want to focus on the “artistic” (graphics, game design) part of a gaming project, use a WYSIWYG editor (FPSCreator, RPGMaker, etc…) or try to make a mod of an existing game.

If you really want to program, you have several options:

  • use high level engines at first and don’t “bother” with the underlying technologies they rely on
  • use high level engines at first and try to dig a bit deeper in the underlying technologies they rely on later
  • use low level APIs at first and don’t rely on high level engines
  • use low level APIs at first and high level engines later when you feel really comfortable with the underlying technologies they rely on

Understanding low level APIs drives you more autonomous. When something does not work as expected, you can repair it. If you do not understand low level APIs, you require some help of the people who do.
Using high level engines allows to spend less time in reinventing the wheel and to create a game faster… especially when you understand how they work.
Reinventing the wheel can have a pedagogical interest, it can be helpful to understand the low level APIs and how they are used to build 3D engines and WYSIWYG editors.

As some people here know, I chose the last option, I learnt OpenGL in C during my license degree, I used it with C++ but… my hard disk decided to stop working, I lost all the source code of what could have become TUER and I decided to use my favorite language (Java of course) with JOGL. When I felt comfortable with OpenGL in Java with JOGL, I decided to save a lot of time by using an existing engine rather than going on writing my own engine.

In my humble opinion (I won’t speak about proprietary solutions), Ardor3D and JMonkeyEngine are the most interesting engines written in Java. 3DzzD can be fine for web projects too. JMonkeyEngine has the largest community, I used it several years, I improved the JOGL renderer of its second version with the help of cylab, I ported the JOGL renderer of its third version before JOGL support had been dropped by its team, this engine is not as reliable as I expected even though the third version is noticeably better (but targets OpenGL 2.0 and later), it has a nice game development environment based on Netbeans RCP. I might be wrong but its Android version is not fully functional.
Ardor3D is more professional, more reliable, it has the best support of all major OpenGL bindings (including AndroidGL), it works fine even with OpenGL 1.3 (only with the JOGL renderer because I fixed the bugs only in this one as I do not use its main competitor) but it has a smaller community, less tutorials, no GDE, it uses both the fixed and the programmable pipelines which means it would not support a forward compatible context unlike JMonkeyEngine 3.

I hope my post will be useful for you. Best regards.

Go to Google, type “java 3d engine”…and choose one from the first two results… :wink:

I’m a graphics wh*re (I like lighting, anti-aliasing and such stuff), so I’d obviously say “Just use LWJGL and build everything from scratch.”. You can’t be a master of every aspect game development. I think Gouessej nailed it pretty well. Just jump on the level that you’re interested in. If you just want to deploy content, even a game engine is to low-level/technical. Just use a game making program. The other end is low level API’s like LWJGL, entity systems, optimizations, etc, which I feel completely comfortable with, as that is what I am interested in.
Anyway, if you want to develop games, having some knowledge of the lower levels is a great thing, so no matter what you do it’ll be a good learning experience.