Boned meshes - draw call optimisation

Problem

On mobile we tend to be quite draw call limited, especially on Android.

Android GLES draw call submission can be an expensive CPU operation in comparison to iOS Metal.

  • We budgeted for 300 draw calls in total.

  • We have up to 80 characters on the screen, with multiple materials and realtime shadows.

  • We also have Environments, UI and VFX particle effects to render.

  • Draw call counts add up quickly.

The Tower ( gun turret ) assets in the game were made as individual pieces and intentionally not combined.

We wanted to animate the assembly of the pieces into a whole Tower; or explode them apart again into smaller pieces, and bounce them on the environment.

  • 5 Towers are visible in the game at all times. Each Tower is constructed from 15 pieces.

  • If each piece was rendered as a single draw call, the Towers would cost 75 draw calls in total, plus draw calls for shadow geometry.

  • This was a good chunk of our draw call budget. We needed to significantly reduce the number of draw calls for the Towers.