Game Engine Advice

I’m sure people ask this all the time, and I’m sure I know the answer given the website I’m on, but can anyone please let me know if I’m in the right place or not.

I’m a Java Developer and I would like to build a top-down 3D city simulation game. I want to focus on the population and have each individual make decisions as they go about their lives, so I can see this being a very CPU intensive game.

I want to be able to interact with objects in a very OO driven style, as I would if I was developing any other Java Application. I want to be able to detect distances for decision making. I’m okay with updating positions for movement and dealing with pathing. What I don’t want is to be bogged down with visuals by having to deal with polygons and vertices. I just want to plop down objects, interact with them programatically, and be able to deal with animation as states.

From what I’ve read and the couple tutorials I’ve done, it seems like JME3 is a good engine for me. Is there a reason I should look into some of the other engines like Unity or UE4? Or anything else?

Thank you so much for being a positive contributor to the JME3 community by taking the time to answer my questions. :stuck_out_tongue:

hmmmm…“convince me to use jME3”? Well jME3 wont do this for you, it’ll help you with some things, like Audio, Rendering Pipeline, Effects and many others things. There is no magic, jME3 will do what you ask it for. Think in jME3 as a beautiful assistant that will be with you in your journey.

Why you wont need to deal with polygons and vertices if everything on a game is made of?

I think you misunderstood me.

I don’t want you to convince me to use JME3, I simply understand that different game engines have different strengths and want to know if I interpreted the strengths of JME3 correctly.

There’s a lot more to a game than the way it looks. I don’t want to spend time getting hair to flow just right, or getting facial expressions as realistic as possible. I want to spend time making sure my citizens of my city choose a place to work correctly, and that they understand how to get to work and how long it will take them to get there. I want to spend time making sure some of my citizens enjoy the new nightclub that was just built down town while others use it as a reason to move out to the suburbs.

As I understand it, I can construct some models and some animations, import them in to JME3 and then plop them down via my game mechanics. I’ve seen that JME3 will handle field of view and camera manipulation for me, and it seems like I can simply position models, associate Java Objects with my models, and update positions and states of my models via Java Object manipulation.

All I’m asking is are the things I want considered strengths of JME3 or are they weaknesses that another game engine may focus more specifically on?

There are many built in features on jME3 that will let you focused on business logic other then on rendering. It’s hard to direct answer your question, because every body on this forum choose jME3 for their own reason.

Watch the video bellow and you’ll see some features built-in jME3, but I can’t tell you if this is a strenghness or weaknesses compared to others engines

And you want your game to be in Java? If so you don’t have much alternatives. JME or Libgdx.

Unity and UE4 have more an artist approach, and offer some scriptting for the game logic. That’s far from OO and classic java application. Though they have many other advantages. One being developed by teams of professional, as their day job.
You will feel more guided in the game dev process, though you may feel that you are constrained to use their paradigm and their game structure.

Now JME compared to Libgdx. I think we have a more slick API, and more graphic features. They have better support for multiple platforms like Android iOS and Webgl. You’ll have to make your choice by yourself there.

The main power of jME, is freedom to implement game as you like, but it’s also a cons if you don’t know how to start.
The asset pipeline is less friendly than with other commercial gamedev framework, but similar to other OSS gamedev framework.

My advice: Start coding your game play, with basic shape (cube, sphere, plan). then take care of the visual later. (the opposite flow of Unity, UE4,…)

1 Like

I’ll make it even simpler: want to target Android? Go Libgdx.
Want to target desktop? Go JME.

While both engines can target both systems pretty well, they were built from the ground up specifically with these target in mind.

With that said, the first thing you should do is run all the tutorials. Yes, all of them. You’ll end up having an understanding of what you can do and the effort required. You’ll also be able to decide by yourself what you want to do.

You can use hairless models or even sprites if you want! This game was (and still is) awesome even without 3d.

By the sounds of things you’re interested in writing the simulation bit of it all and wondering about performance etc. At the end of the day I don’t think the graphics engine makes that much difference to you unless there is something you’ve not told us about :wink:

Before even venturing into the graphics engine side of things, why don’t you just try and write a “vanilla” Java project that does the simulation and see how far you get with it. Java is pretty powerful after all but this is more about how well you can write a multi-threaded application to avoid performance issues. You will probably find that you can reach a certain population number before issues start occurring.

Later on when you think you’ve got something working ok and you start pushing the limits and realise you might need more power you can have a look at the following.

There is something called OpenCL which lets you write code and then compile and run it on the graphics card. This way you can leverage all of the cores on the GPU which is way more than the CPU. I’ve been wondering if it’s possible to still leverage JME’s capabilities but use LWJGL’s bindings for OpenCL. Maybe one day if my priorities change and I have more time I will give it a go :smile:

Meanwhile, feel free to have a look at this link.
http://wiki.lwjgl.org/wiki/OpenCL_in_LWJGL

As far as Java is concerned, I have tried straight JOGL/LWJGL, JPCT, LibGDX, and JME, and if you’re going 3d and want to actually get something done I really can’t see any reason to use anything but JME. I don’t want to seem like I’m bashing others efforts, but really JME really has the best documentation/support/features (ignoring straight opengl).

My only concern with that would be how detailed you want this city and its populace to be, which I guess would be the only reason to go for Unity or Unreal or w/e but then goodbye java.

1 Like

I think what you should ask is : why you guys had choose Jmonkey ?
The answer maybe different for each one, and may be different for you.
For me, its simple, its the only game engine multiplataform (java), with free code available to look and extend ( more possibilities ) and its easy to use.
Now, about if Jm3 will be good for your or not, it depends on how good java dev you are, I think jMonkey is not “artist” friendly that gives you ready up game templates to work, and not even easy for java beguiners, but it has more flexibility in exchange.

Lets explain my choice:

I’m around 2times more efficient in programming logic in java than in C/C++ due to better error handling and librarys
I want to target Linux and Mac as well
I know I wont be able to get AAA grafic’s and using a engine that supports all state of the art is quite some work, I mostly need simpler features that are for a good enough grafic.
I used decided to use java also, because due to the past years it allowed me to grow a set of knowledge, that easily got me a job in a java business programming enviroment.
I decided against pur opengl, as while allowing more features, you have to do so many workaround to actually get shit to work as you expect.

Currently the main weakness I see with jme is no offical deferred lighting, and a kinda rough asset pipeline. (there is work on that currently)
With a selfwritten engine I would have more assetimporter problems however.

Maybe this old thread from '12 offers some more information on the topic: link

My own reason for JME was quite simple: I already know Java and did not want to learn a new language beside learning how to make a game. That’s it…