Crowd Rendering
Overview
The animated crowd is our solution to handle rendering massive scales of players in an experience in a performant way. Instead of using a full "Unreal Actor" per player in the world, we replace distant actors with a highly optimized "animated crowd member", and swap out players between real actors (LoD 0) and the crowd as they move closer or further away.
Limitations of the crowd
Crowd members do not have a real skeletal mesh in the world like a full actor would. This means you cannot add things to the Skeletal Mesh such as collisions, attached UI, sound emitters etc. This means if your project is configured to use 30 full actors and 10k crowd members, things like collision checks, raycasts etc. would only be possible on the closest 30 players. This should be considered whenever designing gameplay features that rely on players having a full actor representation.
Configuration of these settings can be found in the Animated Crowd details.
Constituent parts
The crowd system has two main parts to it; animation and rendering.
Animation is taken care of by the Animated Crowd system and supports basic animation blueprint (ABP) functionality as well as more simply the ability to assign specific animations to specific characters. Full details on configuring the animation system and features / constraints can be found here. Irrespective of crowd rendering technique, the system used to drive animations is shared by both.
Rendering on the other hand, taking the animations and getting triangles on screen, can be one of two systems (or both, concurrently).
Non-MML rendering system
The original crowd rendering system worked with Unreal skeletal meshes directly, rather than MML. This system is still in place for rendering non-MML avatars and can also be used for rendering things like gameplay character attachments that use Unreal static meshes. The non-MML rendering system handles many standard Unreal rendering features such as different materials per mesh*, custom per-instance and per-mesh material data and custom depth/stencil passes, however in contrast to the MML rendering path, mesh streaming and automatic mesh levels of detail are not available.
(*up to 128 unique materials per crowd)
MML rendering system
More recently a second rendering system has also been developed to support MML rendering. This MML rendering system can be used to render crowd avatars, as well as non-crowd MML objects in the world. This system is designed for avatar interoperability across different worlds, and therefore adopts a standardized material setup that all avatars must use.
The MML Crowd Rendering system supports rendering thousands of unique MML player avatars at once. It uses automatic level of details to render arbitrary numbers of player avatars with a fixed triangle and texture budget, changing the level of detail of each avatar to best use the available budget.
For further details on how to use and configure the system, see these sections:
Last updated
Was this helpful?