Reasons to use jmonkey over a C++ or python-based engine? (to win an arguement!) Help me win!

Hi Forum (I really need your help on this one :D),

My friend, who is making models in blender for me, has for some reason decided that jmonkey is rubbish, and we need to switch game engine. In true 3D artist style , he has suggested that we use blender game engine instead. I resonded by saying that it would be impractical to make our planned multiplayer game in BGE and he still wants a change in engine. His arguments are:

  • Jmonkey dosnt have GLSL texture support and the models he makes in blender look scrap once used in jmonkey
  • Java is impractical for a 3D game 'cause its a bit slower than C++ and has the scrappy JVM (Millions of people run Mincraft Ok?)
  • Other game engines have more features

    He would have me using panda3D: or the cafu engine:

    My arguments against this are:
  • I already know alot of java and learn more everyday, I dont want to abandon java completely to learn python or C++
  • If we used Blender and made the graphics awesome, the game would run slower on old computers than it does with java, so we just make slightly worse graphics with jmonkey
  • jmonkey has a bigger community than panda or cafu, and panda and cafu don’t have normen da vinci!
  • jmonkey has super awesome features like the terrain editor and the SDK
  • jmonkey is perfect for making a multiplayer game like we plan and so is Java!

    I am sure my blender using freind will read this so please contribute some better ideas so I can stay with Jmonkey!

    live long, and prosper.

How about just demanufacturing his arguments? :wink: Java is faster than C++ cause you have the JIT compiling it for the platform its being run on not for some least common denominator platform like C++. “GLSL texture support” is a term he made up. All game engines use GLSL to display materials, just as jME3 does. Expecting some 3d editor specific material to map to a games materials is pretty naive though, tell him to do properly uv-mapped models with color, normal and diffuse maps. As for features… Which free game engine specifically he means there? Interested to see that one ^^

Thanks you normen! You made my day!

I will put these arguments to him!

Live long, and prosper! :smiley:

Well, I guess he just wants to try out several different game engines before making a decision, I think he would only go with Jmonkey if i can definately confinve him that it is better

  • Java is very easy in coding and its easier to avoid “problems”, then in C++. Jme3 is based on opengl libraries for all platforms, i mean it is same fast as C/C++, becouse libraries(wich Java use) for opengl are writed in C / etc.

    summing up Jme3 give easy way to create awesome games + its very fast.

    in addition Jme3 can do everything what Unity can do.

    BTW: My friend know an old and very clever person that said: “good Java code is same fast as C++ code”. Many “newbies” belive rumors that Java is slow. They dont do statistics/etc. So when he tell you “Java is slow” and you belive him, then you will continue this rumor.

    Java take some memory for start and sometimes you can look at memory of process, and see that Java take much more of it. But its becouse of garbage cleaner, wich clean unused objects when it is needed. In C++ you must free objects yourself, or use some specyfic methods.

    And much more of such technical things that give people fake view of situation

Again thanks for the response!

I cant see how he could possibyly say that we should still use another game engine now. And i think the model-related issues he describes are due to the ogre exporter.

Live long, and prosper


As said, if he’s able to make proper game models the engine is able to import them.

Someone on the panda forums told me this

“On fairly low end (Athlon xp @1.6GHz, 1GB ram, GF6200) the samples run at 60fps. My own project (per pixel lights, normal gloss and glow mapping, shadows, 3 lights, 10-20k triangles terrain, one or two 7-8k animated characters, post-process bloom) runs at 1024x768 at about 24-30fps… but then again with some advanced shader-hocus-pocus it can drop to 0.3 fps.

I wanted to compare that with JmonkeyEngine, but most of the demos on their page did not run at all (terrain test runs @50-70fps, the demo with shooting a ball at a brick wall @ 1-20fps).”

Also, he uses blender 2.6 which is not officially suported and animations do not porperly work. Will there be support for thid anytime soon?

@javagame said:
Well, I guess he just wants to try out several different game engines before making a decision, I think he would only go with Jmonkey if i can definately confinve him that it is better

Fair enough.
You should consider pros and cons of any engines you can use.

Now some questions....
- Who's the developer? you? so why don't YOU choose the engine? making a multiplayer game + learning a new language in the meantime is a bad idea IMO. There are plenty of pitfalls to fall in when making a game, don't hinder your project with a bad language knowledge.
You know java? that's one hell of a good reason to use a java engine...

- I'm curious about "models looks like crap", do they look better in other engines?

- About blender 2.6, animation structure are the same that in 2.5. The animation issues are known, and are worked on.

- About "java is slower C++" that was true like 10 years ago, but now it's completely wrong. C++ and Java performances are on the same level.
1 Like

But animations did not import to jmonkey at all from 2.6 OR 2.5 (or so I believed)

They do but not everything is supported and there are still glitches.

Anyway the Ogre way is still valid.

The latest OgreXML exporter for Blender 2.6 will often complain like “root bone has translation transform” or “armature has transform”. If you see these messages, then definitely the animation won’t import correctly. You need to reset the transforms.

Regarding GLSL … First he complains that jME3 doesn’t use it (it does), but then pushes forward Panda3D which actually doesn’t use it?

I agree that materials are difficult to import into jME3, the best way is to use the material editor in the SDK to set them up correctly. If the model is created properly (no procedural textures or UV coordinates) it will work.

Comparing FPS doesn’t work unless you’re comparing apples to apples. I don’t see him comparing the brick wall test in Panda3D or Ogre3D to the brick test on jME3 so saying fps is low here is meaningless. jME3 is however targeted toward high-end machines so you may need to lower the quality settings for it to work on lower-end. For example, using lightmapping, vertex lighting, LOD, or OpenGL1 mode.

Going off of what @nehon mentioned, as long as you’ve decided on a target platform, the choice of engine should be by and large up to the programmer(s). Of course, that also means it’s largely up to you to make sure your tools of choice can accommodate an art pipeline your artist(s) can easily work with.

If for some reason the models he’s making are not working correctly in jME3, do the work, investigate.

  • Do they work differently in other engines? If so, why?
  • Are any errors thrown?
  • Are you sure his models are standards compliant? (you can do a lot of things in Blender that’s not meant for games)
  • Have you tried both art pipelines? (OgreXML & Blender Loader)

Yes, the blender loader loaded the models really bad as all of the models were reflecting light asif the specular was turned up to 100% on jmonkey. Now we use obj and ogre.

Don’t go into technical details with a person like that, just say Java 3D IS THE FUTURE BAAABYYYY!!! And then do some cheering, fist-pumping etc.

Keep repeating and he’ll probably change his mind.

The thing I most enjoy in Java is:

  • All libraries have good or excellent documentation
  • You only create a memory leak if you mess things up a lot (i.e. trying to avoid memory leak thinking in C++)
  • High produtivity since there is already good libraries for anyhting you need (really really anything)
  • Platform independent (as long is runs JVM)
  • Good fast OP Garbage Collector
  • Really mature IDE’s and excellent debbuging tools
  • No structural programming (i.e. using C in a C++ game)

About languages benchmarks :

Java 7 : 1.76

GNU C++ : 1.21

GNU C : 1.03

Fastest language is Fortran Intel ( 1.00 )

@normen said:
Java is faster than C++

Really? I've heard that Java is slow. Someone said that Java is fast on benchmarks but slow in practice.

Lol, how you compare languages, you can only compare execution time or binaries…? Also was that code JIT’ed? I think this table is very misleading.