pegasusearl sorry for playing doctor house, I always assume the worst, and works most of the time. It's nice meeting someone who knows what they are doing.
pegasusearl Jesusemora performance optimizations are not limited to a platform.
From what I heard, mobile is different. Buuuut,.. I don't know.
yes, there are optimizations specifically for mobile, but what I'm giving you is something very general to 3D. Most of what I've written I read in sites like polycount or experienced first hand.
I've also read the docs and skimmed through them again for this post, there are notes on top of notes when it comes to old hardware and mobile, and we should probably listen to them.
pegasusearl 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've always been distrustful of it. there is a guy who made mini-levels of his game and he ported his game to mobile, I haven't played it but was tempted to just to see how well it could run.
pegasusearl 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.
there are many layers to this. what godot doesn't cull are animations, which you don't seem to have many of, but I've seen improvements in performance by disabling AnimationPlayer
s.
pegasusearl Yes it's Area3D with MeshInstances. Wouldn't rigidbodies be heavier?
you are doing it right then.
pegasusearl 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 find that physics tends to be the bottleneck in games. disabling all physics tends to improve FPS. and if you need physics there's also servers, which are very fast.
but if it's not giving you trouble, you can keep them the way they are.
pegasusearl 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.
No need to apologize, I am the one assuming things.
pegasusearl 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 don't think it will instantly fix your fps, but it will certainly help.
pegasusearl We started with Godot 4 but had issues with shared array buffer.
yeah, I think they are removing it in 4.3?
pegasusearl 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.
from the docs:
Lossless Compression: This is the most common compression mode for 2D assets. It shows assets without any kind of artifacting, and disk compression is decent. It will use considerably more amount of video memory than VRAM Compression, though. This is also the recommended setting for pixel art.
VRAM Compression: This is the most common compression mode for 3D assets. Size on disk is reduced and video memory usage is also decreased considerably (usually by a factor between 4 and 6). This mode should be avoided for 2D as it exhibits noticeable artifacts.
also this for gles2:
Mipmaps
When pixels become smaller than the screen, mipmaps kick in. This helps reduce the grainy effect when shrinking the textures. Keep in mind that, in older hardware (GLES2, mainly mobile), there are some requirements to use mipmaps:
Keep in mind the above when making phone games and applications, want to aim for full compatibility, and need mipmaps.
When doing 3D, mipmap should be turned on, as this also improves performance (smaller versions of the texture are used for objects further away).
also, when using 3D the textures are set to sRGB, so the colors are changed. this is more a problem with the textures if they were made in linear color or with a color profile.
you can also change the colors from an environment
node, like the color correction.
pegasusearl 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.
how many materials are in the scene? and are the objects individual nodes?
having too many materials could cause performance issues, as each material will need a turn to send its uniforms to the gpu.
and the problem with removing objects is they exist in video memory as static, removing them means deleting them from memory and then sending them again, and static memory is not supposed to be touched often.
so pack as many meshes as you can into single materials with "mini-mega-textures". for example, your car has a car texture that is, say, 32x32 pixels in size, and you have 3 other cars with their own textures. well, instead of using 4 materials, use 1 material with a texture that is 64x64 pixels, and either use 4 meshes, or 1 single mesh and shift UVs.
and then pack as many of the textures into one big texture.
the artists can also reuse parts with this method, resulting in many variants of an object using a single texture.