How does the performance of JME compare to other engines?

jme is a faultless masterpiece that blows other so called next-gen engines out the window

anyone who says otherwise is a heretic

Shall I ready the guillotine ?

As Empire suggests, game objects are the real meat of the game. Spatials are just the visualization of that.

Treating them the same is akin to having your text fields have direct database connections. Sometimes convenient for one-off quick things but otherwise unmanageable in the mid-long run.

1 Like

Heads will roll

My two cents : for 7 years I use jMonkeyEngine with (most of the time) Model/View/Controller pattern.

The game logic is stored in the Model (a model package), which contains both data and real-time code (the algorithm that run even if the player is not touching anything. i.e. physic, AI…). One best practice is to never use any jMonkey dependency in that package. Potentially, you could still use pure mathematic classes like Vector2f, 3f, etc.

Then you give your Model to a View, which create Spatials representing your game objects.

I use the Controller only for model/view connection and refreshing, and to manage user inputs. Others choose to delegate more game logic to the Controller, making the Model more pure data. Your choice.

In a word, Model is the game logic, blind and independant, Controller knows everything (and may take decisions), View observes Model and draw it.

That said, there are some usecases where you will want to take shortcuts. For exemple, when the View runs an animation, the gun holded by your character will change position. Your Model will probably be unable to read the animation file and predict the position of the gun. So, to fire the bullet from the muzzle correct location, it will have to consume a data from the View, which creates an unwanted dependancy.

Remember that a pattern is not an absolute rule. Most of time it’s better to respect it but it must help you, not bother you.

That was more like three cents… sorry ^^ Hope it helps.

Edit : of course, there are many other pattern to use. Check Entity System (and the @pspeed implementation Zay-ES) for something very efficient in game dev. It worth the headache !

6 Likes

And coming back to “threading”. Rendering on a GPU is essentially a single threaded process viewed from the CPU side. You prepare the scene and tell the GPU to render it, rinse and repeat. Theres not much about that which could be done in multiple threads. Then as others said, nobody keeps you from doing things that are not related to the rendering process in other threads.

1 Like