Hi. I've been looking around for a game engine to work with in my spare time… I'm not interested in a career in game development, I just want to do it as a hobby as I have in the past. I still haven't even decided on a language yet but Java is appealing because of how versatile it is. I know my fair share of languages but I'm not entirely proficient in any one of them, and I think Java would be something useful to focus on.
Anyway… I came across a pretty negative review of jME and I'd like if some of you jME gurus could break it down and give your own opinions/rebuttals/comments. Whoever wrote this seems to know what he's talking about, but it was written in 08.
I would assume that the glowing reviews come from people who have either not used another game engine, or who are so desperate for anything Java, that they're willing to put up with any crap, as long as they can (slowly) render a model to the screen.
I've used it, and it does not hold up to engines like Ogre3D, or OpenSceneGraph, or even Torque Game Engine. Some problems:
1) There is no way to get skinned animation into the engine. The developers apparently have a COLLADA exporter script that they use internally, but have not released. Regular COLLDA animations are not recognized by the importer.
2) The other importers are all crappy. It seems par for the course that they only support a single mesh, or a single texture, or no animation, or all three.
3) The internal data structures in jME show no understanding of rendering hardware. Colors are expanded to 16 bytes. Vertices are stored with one vertex buffer per channel, not as interleaved data. Each separate subset of a mesh is stored as a totally separate mesh, with separate buffers. The list goes on.
4) Originally, jME didn't even support instancing of meshes. Each tree in a forest would have its own multiple vertex buffers. To support instancing, they added a special "instancing node" which gets passed the regular mesh scene graph node. This example shows that the implementation is made by people who haven't done scene graphs before, and there are lots more.
5) The community likes patting itself on the back, but more importantly, it doesn't make any distinction between "good" or "bad." Even if code is totally broken and doesn't do anything near what it's supposed to do, you'll be hard pressed to get a "oh, that's bad" out of them. And even some basic things, like matrices and quaternions, have bugs in them.
6) The design of the scene graph is taken from Dave Eberly's "Wild Magic" books -- version 2. Dave himself is up to version 4. However, where Dave has good implementation (even if I don't like his design), jME hasn't, and it hasn't kept up to date with the many improvements that have happend in versions 3 and 4.
So, it may be true that jME is the best open engine that is out there for Java. That means that 3D games using an open Java engine are in a pretty poor state. You'll be better off wrapping something real, even if you have to write your own JNI bindings. (The Multiverse people wrapping Ogre3D come to mind as an alternative)
If your goal is just a good game engine, and you don't require Java, run as far away as you can -- it's not worth the time spent trying to understand how limited this engine is. Or prepare to spend significant effort to bring it up to snuff -- which probably is easier than starting your own from scratch, if that's the alternative.