What are your thoughts on the JMonkeyEngine and is it worth me getting? Been having a look at it recently but debating on whether i should download it or not.
I’ve written a couple of games using JMonkeyEngine (https://www.youtube.com/watch?v=uxIgyGygJNs&t=42s and https://www.youtube.com/watch?v=GjimNDGTkJQ), and IMHO it’s probably the easiest 3D engine to use (in Java at least). Since it’s all in Java and not a wrapper around C code, there’s no manual memory management like some other engines seem to have. There’s some very good tutorials at https://jmonkeyengine.github.io/wiki/jme3.html#tutorials-for-beginners .
JMonkeyEngine is an engine which acts as a huge library - just use what you want and don’t use things that you don’t like. It requires Java knowledge at decent level - you make game by writing real code, there are no blocks or chunks to drag, drop and script.
Stock materials should fit to any small project, but you have the possibility to write your own shaders or even make your own rendering pipeline (like I did).
You should try it.
Yeah i know what it’s for thanks. I’ve used lwjgl and done things like an obj loader and messed around with rendering terrain and things like that and also used shaders. Still struggling on what library’s and tools to use to make my games.
Well, decide on a game first! Then think about what technology you need to realise it.
My stuff’s simple enough to do in plain LWJGL but if I were starting again today, I’d probably go for libgdx.
Being risk-averse, and very thoroughly grounded in my appreciation of my skills and talents, I’ve avoided JMonkeyEngine because 3D = world of pain.
Cas
Amen to that. Something like JMonkeyEngine (or LibGDX) make basic 3D deceivingly simple, but as your game needs more features, what would be relatively simple in a 2D game becomes exponentially more complicated. And then there’s needing 3D models for everything… And then, when it does work, it’s dog slow because of all the 3D!
I’ve just gone the other extreme and started an ASCII roguelike, and it’s like a breath of fresh air. Need a sprite? Just choose a letter.
So find 3D artists, build your own team… It is possible without spending a penny. There are nine people behind Skullstone’s production, not only programmer, but 2D/3D artists, sound designer, composer etc. It is not so hard when you are not alone.
Game becomes slow? So maybe it needs some optimizations, it is not as easy as putting 10000 objects on scene’s graph and letting GPU to render all of them There s a lot of things that needs to be done properly, JME is doing most of them for you.
Its pretty tough to recommend anything but Unity to a small indie in 2017.
Maybe Unreal Engine… sure.
Just pretend C# is Java : p
I’ve tried to use Unity and Unreal engine before and it’s always come back to Java.
I hated Unity for years, especially when I wasnt skilled at it.
Lots of programmers get stubborn, especially when they are young and make their own engines. Not that there is no value to having made one yourself, for understanding sake.
Hi
It’s not entirely true. Actually, it’s not a wrapper but it uses several bindings to benefit of hardware acceleration and there is a little bit manual memory management if you don’t want to lack of memory on the native heap as the direct NIO buffers aren’t allocated on the Java heap:
What feature of JMonkeyEngine is that? I’ve obviously not used all aspects of JME, but I’ve never come across that class.
Years ago i did go deep into jMonkeyEngine, with a bit different attitude than others. I took the sources and refactored it heavily, specifically for tasks that i needed, threw away stuff i didn’t need and added stuff that was missing.
What i couldn’t implement myself was shadow mapping. It was just too much effort to get it right. Then i thought about how i would spend all my time implementing new graphics algorithms to no end.
After some time i tried Unity. Its very frustrating to depend on the editor even for the smallest things. I know there has to be a way to do something, but in Unity its some checkbox hidden somewhere. Then if i want to change some default behaviors i have to completely re-implement stuff, or to add some very hacky solutions on top of the engine.
When i worked with jMonkey, i read solutions and whitepapers from the net, read the GPU gems and implemented my own shader stuff. Working with Unity devolves into reading and searching its forums. Then comes the frustration, when the best solution that you find is some hacked trash, that you know for certain will lead to bugs or slow game or glitches. Or you will have to manually tweak objects in the editor, otherwise it won’t work the way you need it. But you can’t really dismiss the engine, since either you write your own complete solution or you nerf your game and leave that problematic feature out.
Its completely possible to do the second, to adapt features until it becomes manageable. Good game designers do that. But i get very frustrated, since i know that it would be easy to add that feature given access to source code of the engine. But if i have access to the source code, then why would i use it as it is, or use the editor at all, when i can just refactor the source?
The paid solutions you can get for Unity is another story. There are some well-advertised networking servers for Unity. There is one in Java, fine. Well it works on top of Netty.io. I can (i already did) make my own networking server with netty.io. They repackaged netty.io into a product, added various client libraries, advertising and support.
In the end i come back to Java and jMonkey and open source. jMonkey got lots of new features in meantime and Java itself got new features and new libraries. Github and the BSD licence is a wonderful thing.