How to efficiently render 10,000 or more soldiers?

From the render side, it has to be this and only this way:

  • If each unit has at least a hundred or more triangles, they should be rendered as instanced mesh.

  • If at any point units get so small that any of its triangles starts covering less than about 30 screen pixels, geometry has to be simplified and this unit needs to be rendered with lower resolution instanced mesh.

  • If at any point you need so low geometry resolution, that your unit starts containing less than a hundred triangles, a group of several units needs to be merged into a single mesh.

Any deviation from these rules are substandard.

To achieve that, you can use instanced static mesh component, hierarchical instanced static mesh component or niagara, or your custom component.
Unless for some reason you need functionality of instanced static mesh component beyond that of rendering(collision queries), niagara is preferable.

Coding a system to maintain yourself within 3 rules mentioned on top is on you, irrespectively of if you are going to use ISM, HISM or Niagara.

1 Like