rdInst Tutorial 11.1 – Introduction to rdECS
Last Updated: 19th January 2026
Tutorial created using rdInst version 1.53
The rdECS system is the final layer to rdInst and it’s rendering system. rdECS allows you to move large amounts of Entities around your levels without impacting performance by large factors.
The system is all built into the same set of threads that handle the streaming, in-sight populating, and proxy swapping routines, allowing most work to be done in a series of short thread calls, minimizing both game thread time and number of cores used. The actual ECS movement is all handled from a single call in a single thread – this means it can all be executed without needing mutex locks to any of the navigation/height/avoidance/paths etc and all data can be stored contiguously in memory and accessed linearly. It’s not slow either – using dedicated movement classes to handle everything needed all at once along with carefully calculated time slicing, it’s possible to handle well over 1 million entities in a 2-5 milliseconds in a background thread (depending on how they’re dispersed) on medium hardware.
Currently (version 1.53) there is a Chase Movement class only. This movement class handles entities chasing the player/players, movement towards the players, avoidance, and landscape pinning. 1000 Entities takes around 20us to process in the background thread on medium hardware. Rendering is currently ISMs only (will support Niagara meshes and meshlets in the future) so varies depending on gfx card.
Full support for VAT (Vertex Animated Textures) is build in, allowing fully animated ISMs off to the horizon and Proxy swapping is fully supported, allowing these VATs to swap to full Characters, synchronizing anim frames/speed etc when close to players or when a projectile is going to hit. These support pooled actors too.
The option to retain Proxy Actors when swapped out (in a dormant state) is there if you need the same actor references for any reason (e.g. GAS ASCs) – swapping back to the same Actor reference, ready to use with your systems.
You can also tell a Proxy to remain as a proxy once swapped in (use sparingly) rather than swap back to the VAT/ISM.
The next type of Movement classes that will be developed are aimed at open world type movement – city crowds, vehicle traversal and a full wild-life system. These will be using a different type of State system, but more will be revealed once ready to release.
The Entities are described in a DataAsset – things such as the StaticMesh/VAT, animations, Proxy Class, preferred movement types etc are set in these. Create one for each type of Entity you’re wanting.
The animations are sorted into groups which each of the Movement Classes handles. For instance, the Chase Movement class has two sets of animations, Idle and Chase – each set has four different animations inside, chosen randomly at spawn time.
Spawning the Entities is easy, just add an rdECSspawnActor to your level and resize to fit the area you’re wanting – then call the rdInst Subsystems Spawn Routines, passing in the Entity DataAsset/s and a few other parameters.