Why we use jMonkeyEngine

Hey guys,

Some people asked us why we chose jMonkeyEngine 3 (we call it jMonkey) for our Project Aleron. Especially because we collected experience with Unity in the last months. Today we will compare jMonkey with Unity from our point of view and tell you why we chose jMonkey over Unity for this project.
We will not compare the languages C# and Java because, seriously, it makes no difference.

Choosing our Engine

As we started this project, we hadn’t heard of Unity yet and we found two engines which fulfilled our needs: jMonkeyEngine and libGDX, whereby libGDX only had “basic 3D support” back then. So there actually weren’t many alternatives.

 

While searching for engines we had the following requirements:

  • 3D Graphics – We wanted to make a 3D game. 2D was not an option.
  • Linux Support – We use Linux as our working environment.
  • Garbage Collection – We have experience with Javas Memory Management.
  • No or Very Low Costs – Students are poor 😛 .
  • Source Code – If you don’t have the full code, you are not in control. Frustrating.

Unity VS jMonkeyEngine

Today we have experience with Unity and we also had the thought “What if we had used Unity?”. So here is our personal oppinion of what Unity does best and what jMonkey does best. We will not compare networking, because we did not have an in-depth look at Unitys networking capabilities.

Things Unity does better than jMonkey:

  • Target Platforms – Unity can even target consoles!
  • Asset Management – Great management of 3D Models etc.
  • Graphical Abstraction – Unity abstracts away many things, such as graphics programming. Good for people who have no experience with it, such as us.
  • Rapid Prototyping – Rapid Prototyping is a dream with Unity. Start the game, build some things and try it out. This is handy for UI programming.

Things jMonkey does better than Unity:

  • Price Model – No royalties, no price tag. <3
  • Open Source – If jMonkey’s built in code does not function as we expect it, we can read the code in our IDE and get quick answers.
  • Development in Linux – We can use our preferred development environment. We use Git and The windows shell for git is… “special”.
  • Collaboration is possible – Unitys Editor with its Scenes and prefabs is not meant for teams. You cannot merge these files and always block team members.
  • IDE Choice – You can use any Java IDE with jMonkey. Eclipse, Netbeans, IntelliJ, etc. With Unity you are limited to MonoDevelop or Visual Studio (we don’t have Resharper). The latter has, among other things… peculiar hotkey combinations.
  • Structure – In Unity you are jumping between the Editor and your IDE. Unity also has strongly defined structures with Prefabs, Scenes, etc. In jMonkey, you are very free. We replaced the networking entirely with Kryonet and we use our own Entity System.
  • Flexibility – With jMonkey you can decide not to use AppStates or other components and use your own concepts.
    Unity enforces its scenes, prefabs and other components on developers without alternatives.
  • Same Code-Base for Client & Server – We are using the same code base for the client and the server. We send the same classes back and forth and use the same libraries.

Conclusion

Unity, in our experience, is not an engine to be used for an MMORPG. It is too specific and limited for this use case, especially in the free version.
jMonkeyEngine offers us enough freedom. We have total control over our code and can share code between client and server. They even use the same Entity System and directly synchronize parts of it!
If we were to do this in Unity, we would have to translate between a lightweight C# entity system and Unitys integrated entity system.

For this project, Unity was the wrong tool. However we might use it someday for a different project. Unity has great potential for smaller games or graphical intense single player games.
Unitys lack of a Linux Editor and its incompatability with Git are two crucial problems though.

Benjamin Justice

I am a software developer, currently working for swiss web agency Namics. As for game development, I am very interested in the graphical bits such as shaders & co. Fluent in Java and C#, I also know basic web development and maintain our website. Furthermore I enjoy making music and create songs for our games on rare occasions.

zanval has 16 posts and counting. See all posts by zanval

5 thoughts on “Why we use jMonkeyEngine

  • May 19, 2015 at 7:10 am
    Permalink

    Very insightful. I was just looking for game engines to use in developing my game and one of the caveats of using unity is i can’t publish games to android & ios in the free version (and mobile is my target platform). Have you guys looked up Godot, its open source and you can publish to android, ios and desktops, it also has dedicated 2D and 3D editors(they don’t mix things ). Otherwise cheers

    • May 19, 2015 at 11:07 am
      Permalink

      Hey Fabian, thank you for your feedback and your hint to Godot. We haven’t tried it yet, because when our Project started, Godot had no “stable” release yet. But now it looks really interesting: Linux support, Open Source, wow. If you like Unity, Unity 5 personal edition supports mobile deployment (with an ugly “Unity 5 Personal Edition” splash screen though).

  • May 20, 2015 at 8:48 am
    Permalink

    Hi, I understand your decision but I think that you unknown well two tips (I Know this game engines)

    1. Unity support Git and works very well, all my unity projects are in Git. For Windows, use “TortoisseGit” or similar graphical tools. It’s very easy and simple.

    2. Unity allow export to Mobile Platform FREE since 4.2, with some graphics limitations. Now with 5.0 all limitations has been removed.

    Regards, Good Luck and happy JMonkey develop!

    • May 21, 2015 at 11:54 am
      Permalink

      Hey GarZy, we used Unity 4.6 with a team of 6 people and for scripts, yes, using version control is simple and good. But prefabs and scenes proved to be unmergable because Unity changed a lot in these files for small changes. We heard Unity 5 improved in this matter.

      Thank you 🙂

  • May 22, 2015 at 4:10 pm
    Permalink

    Really cool and timely! I’ve been mucking about with several game engines, trying to decide which one to use for my small multiplayer idea. I like Unity’s rapid prototyping but even after a year of using it I find it difficult to understand the “right way” to code in Unity.

    I think it’s time I abandon the rapid prototyping dream and get my hands dirty with Java. Looks like I’ll be trying jMonkey today since I never really liked LibGDX. Thanks for this post. I hope Java’s design patterns aren’t too difficult to understand.

Leave a Reply