Why don't many of you use JMonkey Engine?

Jmonkey engine http://jmonkeyengine.com/ is an astonishing piece of software. That would save you guys/gals lots of trouble and debugging.

In my opinion it is the flagship Java game engine.

Also, I recently switched from my own proprietary engine to JMonkeyEngine. I’ll try to patch over the code from my own proprietary engine to JMonkeyEngine though.

So, why don’t many or all of you use it?

Do you happen to not know about JMonkeyEngine?

Do you not know it was this good? http://jmonkeyengine.com/engine/

Leave your comments below.

If you use jMonkeyEngine you may as well just use Unity.

Before making my current project in LWJGL I did use JMonkey. With JMonkey it was easier and faster to code, also my game looked better. But…

I just did’t feel I quite had control or understood how it was working. I wanted to explore graphics from the ground up and solve the problems and understand how my own code worked.

Maybe I should have got a grounding first before Jmonkey, but now I have a little Idea about what I’m doing I wouldn’t want to go back to it!

Devil’s advocate: If you use Unity you may as well just use C++.

Cas :slight_smile:

I don’t get it. ???
Isn’t C++ a (huge) step in the opposite direction?

Then again, if I am not mistaken, Unity uses C# for all of its scripting. And in my experience, C# is VERY similar to Java.

My point was, you don’t choose to use an alternative technology just because it’s similar. Stick with what you know. This is a Java game development board. Saying “you may as well use Unity” because it does the same thing as JMonkeyEngine does is not really a relevant reason to not use JMonkeyEngine.

Cas :slight_smile:

The part about the board is quite important:
The JMonkeyEngine3 Community sits at the jmonkey forums.
(right at the very moment I went to that link I saw ags1 has posted something. There he went :slight_smile: once he (or she?) was here)

I was leaning more towards questioning why you’d choose Java over Unity if you were going to use jME.

I guess izs just because most people here make 2D games, because the scope of a 3D game is just so much greater.
If I would consider making a 3D game, I would try out jme.

Because Unity sucks hard.

Hi

At first, admit that your knowledge of JOGL is still at least a bit useful when using JMonkeyEngine 3. Secondly, in my humble opinion, JMonkeyEngine 3 is really better than JMonkeyEngine 2 but some users complained about the need of rewriting all build-in shaders because they weren’t working as is on all targeted machines and “once bitten, twice shy”: some of those who wasted tons of time and suffered a lot with JMonkeyEngine 2 don’t want to give JMonkeyEngine 3 a chance. Keep in mind that a developer can waste a lot of time by using the wrong tool(s) or tools neither mature nor reliable enough. The main thing that saves developers lots of trouble and debugging is a real understanding of what happens under the hood. Whatever the tool is, if you don’t understand it, you won’t succeed.

It’s not an opinion, it is a fact. JMonkeyEngine is the defacto flagship in the category “3D Java engine”. However, there is no consensus in this domain, that’s why there are still some credible alternatives to this engine. As far as I know, there were plans to add a nice 3D API in LibGDX some months ago. As LibGDX is very famous, if it succeeds in 3D, it will harm JMonkeyEngine.

Please contribute. I don’t know whether it is what you meant.

We have different needs. Therefore, we choose different solutions. When I start a new relationship with a woman, I don’t wonder why everyone isn’t jealous, we have different preferences, there’s nothing wrong. For example, people who aren’t interested in looking at the source code of an engine to use it and who aren’t bothered by relying mainly on EgonOlsen when they need help use JPCT (and/or JPCT-AE). I don’t use JMonkeyEngine 3 despite its excellent integrated game development environment based on Netbeans RCP, its nice asset pipeline and shader based architecture, its excellent documentation, tutorials, … for the following reasons:

  • I wasted tons of time on JMonkeyEngine 2 and I don’t want to do it again
  • almost no JMonkeyEngine users are interested in my JogAmp backends and its core developers mainly see them as useless craps or a fallback (except one of them who is trying to port NEWT to iOS)
  • JMonkeyEngine 3 is shader based and has a separate renderer for the fixed pipeline but the latter would need some more attention and I still want to support OpenGL 1.2
  • JMonkeyEngine is nice for games but not very well for applications
  • JMonkeyEngine 3 doesn’t support key framed animations and this feature was already a bit broken in JMonkeyEngine 2 (I fixed it in another engine with Stranger’s and Riven’s help)
  • using JMonkeyEngine 3 without Netbeans is possible but not documented
  • JMonkeyEngine 3 doesn’t support Maven, I still have to manually commit new versions of GlueGen, JOAL and JOGL
  • JMonkeyEngine doesn’t use JOGL 2.0 under Android
  • JMonkeyEngine claims to support several bindings of OpenGL since its second version but the JOGL backends are often considered as second class citizens
  • JMonkeyEngine 3 doesn’t release the native memory used by direct NIO buffers when they become useless which leads to OutOfMemoryError
  • JMonkeyEngine 3 supports only a very few 3D formats (Ogre3D and WaveFront OBJ), even fewer than JMonkeyEngine 2

Ardor3D is more appropriate in my particular case because :

  • it is generally more reliable than JMonkeyEngine even though it has less features and less documentation
  • Renanse has taken me seriously for years (whereas he refused my help to add a JOGL backend into JMonkeyEngine in 2007)
  • this is the only 3D engine in Java with an excellent support of the 2 main OpenGL bindings (no second class citizen this time)
  • its JOGL 2.0 backend is homogeneous, it supports both OpenGL and partially OpenGL-ES, you don’t need to write 3 versions of your game when you target desktop and embedded environments
  • Ardor3D 1 doesn’t force you to use shaders
  • it supports more 3D formats (Collada, WaveFront OBJ, MD2, MD3 soon?)
  • its use is possible and documented both with Eclipse and Netbeans
  • it uses Maven
  • I have added the possibility of overriding the renderer in order to use unsafe code to release the native memory of direct NIO buffers into it
  • it’s a professional engine, its source code is very clean, its design is excellent, it’s used by the NASA, even Oracle used it in Prism several years ago
  • it works very well in scientific applications (for example Energy3D), it has a nice but perfectible support of multiple screens
  • it has an excellent support of SWT and Swing
  • its hardware skinning is more mature than those of JMonkeyEngine 3
  • Renanse’s experience acquired by years of investment in JMonkeyEngine has been very useful to avoid doing the same mistakes in Ardor3D
  • there is a deep separation between its APIs that rely on AWT and the others
  • porting features from JMonkeyEngine 2 & 3 to Ardor3D is not very difficult for me
  • it almost always benefits of the latest enhancements in JOGL 2.0 before all other engines (that’s my fault ;D)

It would be better if JMonkeyEngine and Ardor3D contributors could work together on the same engine but both have become so different. I’m responsible of engine support at the JogAmp Foundation, I won’t stop maintaining JogAmp JMonkeyEngine 3 backend and enhancements for Ardor3D will be ported later to JMonkeyEngine when it is possible but Ardor3D is my flagship and I will go on investing a lot of time in adding tons of features in it. Ardor3D community really takes care of my efforts, the thread about JOGL 2.0 support has been seen more than 24000 times.

Both Ardor3D and JMonkeyEngine have their pros and cons. Just use the one that fits the best your own needs. I don’t use a tool because it is “trendy”, I use it because it helps me in getting the job done. Minecraft doesn’t use JOGL, is it the end of the world? No.

The term “good” is really subjective, it’s a matter of opinion. Personally, I use tons of APIs, I’m open minded enough to port and fix bugs in those I don’t use in my projects and which I wouldn’t recommend (for example Java3D and Xith3D) and I don’t try to convince people to use all of them (except JogAmp ;D). Comparing 2 sets of low level bindings is easier than comparing 2 high level APIs. When your API is mainly a binding of an existing one written in another language, it can’t be extremely different than another binding except in the implementation of the bridge between the strict binding and the rest of Java standard APIs whereas 2 engines can implement similar services very differently.

You’re right, some of us are on both forums.

Why? Your knowledge of a set of low level bindings is still useful when using JMonkeyEngine.

My reason is I’m not on 3D yet. Not be confused by Unity which is also good for 2D, I don’t see any 2D games made out by JME.

[quote]JMonkeyEngine 3 doesn’t support Maven
[/quote]
Better than “only support Maven”. Oh man I don’t like mvn.

isn’t obvious :o ??
(ignore the languages)
Q - why you don’t use GameMaker instead of JME ?
A - because JME will give you more freedom and more coding than a GameMaker

Q- why you use Java2D,Lwjgl,LibGdx,etc...  instead of JME 
A- because Java2D,Lwjgl,LibGdx,etc... will give you more freedom and [b]more coding[/b] than JME

so in my opinion i think that the real answer (from a programmer perspective or at least someone who want to be a programmer) is that we don’t use a full build engine simply because we want to code more and better .

JME is a good choice if you want to make a 3D game – probably a more powerful choice than LibGDX in its current state. It now ports to Android.

Re: Unity – it supports more than Unity Free, but if you have a Unity Pro license, your time would be much better spent using that to create a game.

I don’t use it because it does not work on J2ME and HTML5 via GWT would be hard to add.

I use a 3D engine that I can use on Android, J2ME, J2SE, HTML5, and Avian.

There is a problem there. I can not contribute to Unity because they don’t use Java.

That’s exactly why I invented my proprietary engine before using other people’ engine. ;D

Yep, if I could have any of my first choice engine, Unity would be one of my least favorite. Given that they all used Java.

@gouessej I’d love to publish my first JmonkeyEngine game with a JOGL backend. Any ideas on how to do that?

Yes, it’s planned for its second major version. There are already some build-in shaders in the first one but it doesn’t go as far as JMonkeyEngine 3 yet. Ardor3D JOGL backend uses some more shaders under the hood when OpenGL-ES is in use.

It should work:

appSettings.setRenderer("JOGL");
appSettings.setAudioRenderer("JOAL");