So I’ve used Unity before [very basic, without any coding]. I’ve been learning Java in school, however, and Unity doesn’t work with Java, nor do I have any wish to program a 3-D game from scratch nor learn another computer language at the moment. So I am considering JMonkeyEngine and am wondering what the differences are and the pros and cons of each?
First step, go to the forum for any engine you plan on evaluating. See how active it is.
Second step, read documentation, see how easy or complicated it is.
Third, if they offer pay for services, you can bet your going to need them somehow. Can you afford to pay?
Here is the main difference IMO. There will be coding with JME, even for the most basic game. JME is a more “developer oriented” game engine.
In Unity you would be using C# if I’m not mistaken. It is pretty much same as Java.
In Unity You Would Be Using C# If I’m Not Mistaken. It Is Pretty Much Same As Java. (corrected that for you)
Here are some general parallels:
jME is completely open source so you can always go and check the engine code and say, copy it over to your project if it needs changing, Unity is a locked down black box that will give you no option to fix anything (which can become a major problem in larger projects, or so i’m told)
jME has little in terms of premade content, the default filters (bloom, shadows, etc) are very lacking so you mostly have to make stuff yourself if you want some level of quality (or rely on random people to contribute), Unity has an integrated store with loads and loads of premade stuff that is readily available (though may be costly)
Unity forces you to use their stupid GUI editor and manage stuff more or less exactly as it was intended by them, in jME you can do whatever the f*** you want (which can be a double edged sword, but I digress) which is why it’s so fun to use for programmers
Unity can effortlessly export your project to anything that remotely resembles a computer, jME doesn’t even support consoles of any kind (Win/Mac/Linux/Android only) which is a major problem if you want to actually make a living out of this
jME of course has a small community which tries its best but there’s no way to match the support Unity and its forums can offer; with so many magnitudes more people using it it’s far more likely any obscure error you’ll come across will have already been solved on some forum post somewhere, saving you a lot of debugging time
if you find a random article on the internet about some cool feature to implement it has a 60% chance of being demonstrated in Unity, and a 0% chance of being readily made for jME
if looking for commercial projects jME is 100% free in every way, Unity $25 a month if you want your product to look even half legit
Unity has support for compute and geometry shaders, jME does not
if people ask you what your game is written in, they will be a 100 times more impressed when you say jME, which is pretty satisfying so we have that going for us which is nice
jME supports geometry shaders and OpenCL which is more powerful than compute shaders.
Not counting those who turn off their computer with horror at the sight of the word “Java”.
Yea, i’ve had more than a few testers poo poo Spoxel just because it’s written in java. I’ve yet to run into a performance issue that has been caused because of “java”.
Java 9 + jLink. “It’s written in Java but pre-built into a self-contained high-performance runtime image that can perform neck-to-neck with AAA engines.”
JME + Java already do half of that; Java 9 + jLink get you the other half.
Never heard about JLink, I’m still hiding behind launch4j. Does JME runs on Java 9?
JLink is a tool provided by JDK 9 that lets you bundle the VM itself + only the JDK modules that your project uses into a self-contained runtime image. The end result is a stripped-down version of the JDK + your project that you can run as if it were a natively built executable on your platform of choice. I’m guessing your launch4j setup already gives you something very close to that though. JLink can do some pre-processing of class files to do some “link time” optimizations that I don’t think other tools do, but I don’t know how much of an effect those have in practice.
Oracle’s experiments with GraalVM extend on that idea further and let you do AOT native compilation and other fun stuff like that - but that’s all a bit experimental right now and GraalVM is not very mature yet (Linux only atm unless you buy a commercial license - which still lacks Windows support).
jMB already works on java 10+ only, so jME works good as well
Oh yeah, I knew I was forgetting something. I’m running JME on Java 9 on Linux without issues. Java 9 tightened way down on reflection (cross-module reflection is a minefield), but as long as JME continues to be packaged as jars and not modules all should be fine (and of course, if modularized properly the reflective bits should still work).
The engine itself is mature and capable. In the end all of the implementations in it will most likely be rewritten by yourself because that’s life, not a fault of an engine.
Unity has an asset store, but I’ve never come across a problem because I write my own stuff - that’s just how I roll. Most will anyway in their own game.
In the end, use whatever is the most fun for you. That will be huuugely more important in the years to come.
In any engine, glsl will be a steady diet, again - all engines are running the same instructions - so a non-comparison.
Moral of the story: enjoy yourself
Doesn’t Unity use hlsl? Though one could say the difference is hardly worth mentioning ¯\_(ツ)_/¯
Hey can you point me in the direction of an example for it? I’ve been searching for literally years now.
I agree with your points, especially
this, really love being presented with a page with simple code as a starting point so I can see how my program is running. Not a fan of being presented with an empty 3d scene. Feels like I’m still in Blender. I like adding my filters and so on with code, notdrop down lists and so on - that sort of thing.
One point I’d make though
Whilst I suppose you’re right in a sense, so many more people on Unity, it sort of works the other way quality wise.
I’ve never looked for support with Unity but on this forum I don’t think I’ve ever not had multiple responses within 12 hours of posting. One problem I had with a shadow filter was a bug and nehon fixed it the same week. The quality of the support I’ve found here is unmatched in my experience.
Have you looked at TestGeometryShader yet. I’ve never tried it so I’m just going by the name… but it sounds right.
Couldn’t agree more!