tldr below.
Jesusemora performance optimizations are not limited to a platform.
From what I heard, mobile is different. Buuuut,.. I don't know.
Jesusemora Gridmap is not a voxel, it just draws the meshes on the screen, this means each mesh has its own transform, it just makes it easier for the artist to make the level.
I never think it was voxel, I treat them like tilemap, and yes I used it to simply line them up. Hopefully, there are wacky optimization under the hood if I used it instead of regular MeshInstance.
I plan on optimizing it by doing a manual culling. I have an assumption that Godot will automatically not render thing outside of the screen, that's why I never bothered. I will still render as minimal of meshes as possible.
Jesusemora I suppose you are using area3D with meshInstances? and not rigidbodies, or, worse, moving static bodies?
Yes it's Area3D with MeshInstances. Wouldn't rigidbodies be heavier?
Jesusemora something this simple you don't need collisions.
I need them, it's easier/faster to make and with not much CPU impact. And that's before I reduced my physics fps to 10. If I remove the terrain, the game will run 60fps in a potato so it's fine. With Area3D, the only math I have to do is predicting character landing on the moving platforms. Time is money and I didn't get paid enough.
I felt like you underestimate how Crossy Road make their game play smoothly (not the performance but how it plays), which is what I did in the beginning when thinking that tile based movement is enough. Or maybe you are thinking about something else, if yes then I apologize for the assumption.
Jesusemora polygons (triangles) must NEVER be smaller than 1 pixel. this is why your meshes should be optimized and why we have LOD.
Jesusemora 1 - make sure the triangles are not smaller than 1 pixel on screen.
WOWOWOWOWOWOWOW
THIS could be my ticket to Victory.
This part would have really small triangle wouldn't it? Maybe it's this one!! These small triangle only exist on my terrain. Especially with that camera angle.
I will pass it to my artist and see what he can do about it. I WILL WHIP HIM IF I HAVE TO.
I hope this will fix our performance.
Jesusemora there are many optimizations that were made in godot 4.
We started with Godot 4 but had issues with shared array buffer. We are having hard time implementing the game to our client's app. When we moved from Godot 4 to Godot 3, we actually see performance improvement, but with a little buggy rendering.
Yes
Jesusemora 5 - it would also be a good idea to use gles3. gles2 is very old.
My boss said he got even worse performance with gles3.
Jesusemora 6 - make sure textures are set to VRAM compressed and I think you have to use ETC compression (read the docs). don't use the textures in lossless mode for 3D.
We use lossless, and will continue to do so. VRAM compressed just messes with the texture color. It added grey bits too. It supposed to have kinda pixel art like style, color need to be sharp and accurate, and vram compression ruins it.
Jesusemora and when it goes out of the screen, don't remove it, instead, transport it back to the start to be reused. you can keep these meshes in memory, it will be cheaper than creating them again.
I did this for the car and platforms. Our result is,... performance doesn't improve at all. I'm assuming because it's a CPU and Memory thing. And we have many extra CPUs in our pocket.
==================================================
tldr: the change that makes sense in our case is the tiny triangle. I will post an update when we implemented it.
(It would probably take really long time, our 3D artist can't use blender, they use qubicle/magica voxel)
Thank you for your reply, it gives my life meaning something I could try.