I started to use JMonkeyEngine 1 month ago in order to develop android 3D games. I performed some test on an Sony Xperia ION and also on an Asus Transformer TF101 fitted with a Tegra2 processsor. I could notice some performance issues on my Tegra 2 device. Indeed I made a test with 100 textured cubes created with the Box object and using a Directional light. The camera is scrolling over the cubes. On this devices I get only 17 FPS for 3336 vertices and 1668 triangles. There is only rendering and neither game intelligence nor input processing. I’m afraid that developing a game for a Tegra 2 with JmonkeyEngine is not possible unless I missed something.
What’s important is the number of objects you have in your scene.100 is too much for android.
If each cube is a separate geometry then 17 fps is not that bad to be honest.
You need to batch your cubes.
See GeometyBatchFactory or BatchNode.
Also, if you are making some minecraft like game (sounds like it but i can be wrong) just know that besides the fact that they looks like piled boxes, they are usually not made of boxes at all.
I’m using a lighting material with only one directional light in the scene. The texture is the Jmonkey app image which is 512x512… I’m currently performing additional tests based on tip and tricks found on the forum, especially with material paremeters such as VertexLighting and VertexColor… Maybe it will help saving som FPS!
The current SimpleAp I’m talking about is not a real game but just a test app to learn more about the way to optimize. I first experience a ver strong difference for a more serious app between a Sony xPeria ION and my Tegra 2 device I could could not believe this was only a GPU performance issue. I was convinced there is a way to optimize the code, but I’m just a newbye in 3D development.
I have experienced the same problem on my Tegra 2 device. And on the Mali 400, etc. the impact is not that big.
I can with all honesty say it is the lighting in the scene that causes the LOW fps.
You can try to batch the objects but that will not be enough.
If you have a light in the scene and you are using the Lighting Material the fps will drastically drop for every object in the scene that is effected by the light.
For all static scenes and light I will definitely BAKE the light into the textures with a tool like Blender3D.
I had time to make some additional tests and I came to the same conclusion as you: lighting is extremely penalizing. And the more I get close to one object, the more I have FPS drop!. I think the best solution is to use unshaded material with baked light and shadows for the fixed object (background) and keep the light for active objets only. I have to look around the way to gain performances and I still go on investigating: I could not manage to use the shadow map parameter in the material editor and I did not find any tutorial explaining how to deal with the SDK material editor.
Thanks to you all for your support: it’s nice to know that I’m not the only one having experienced this kind of issue