I am constructing landscape and other environment object with static meshes.
The meshes can be fairly big, I subdivide them into convexes in Blender. It can be 300-500 convexes.
Question: is this okay for performance? Should I stick to less convex shapes? Or perhaps should I use more static meshes with less convex hulls?
You can probably just delete collisions and re-do them in engine if they are “that” bad.
Really it depends entirely on the complexity of the environment.
The collision hulls aren’t necessarily a problem at all - until you start moving stuff with Sweep on them and causing queries.
If you have 3000 actors that do this at the same time, then even a single additional convex hull is going to be a problem (though arguably the problem is never the hulls but the rather incorrect usage of the 3000 actors querying for collision).
So, you may be able to get away with really complex hulls all packed into a single mesh if the rest of your game isn’t going to look at things to often.
However for best practice purposes:
Yes it’s bad.
You should have only UCB as the setup for the landscape collision IF you can get away with it.
That’s because Collision Boxes are slightly more performant, and while you’ll require more of them, they provide an easier query to the detection system - essentially enabling any old potatoe to run your game.
Mind you, again, this is mostly academic. (and even a potatoe is capable of running with many UCX in 2025)
The only thing you really MUST NOT do - ever - is to use “Complex as simple” and call it a day.
Unless you are part of the Wild Card team, in which case whatever was written here doesn’t apply to you because “you know best” and 20 years later you still have issues with people able to mesh and cheat away on your latest iteration of your failed game