Given HISMs/ISMs are great ways to optimize a dense level by reducing draw calls and number-of-actors, I’d like to share a [temporary] approach we’re considering when dealing with building a dense city level with interiors and underground areas.
Eventually we will do an engine upgrade to 5.5+ to take advantage of CellTransformers, but meanwhile we’d like to have some solution to hit performance targets. At a medium level, consider the following approach:
- Level artist use nested LevelInstances (containing SM actors) to compose and set-deck the city (streets, props, buildings, rooms, etc.)
- Assign these LIs into an editor private DataLayer (which will eventually get stripped from the cook)
- During cook/manually trigger an auto-packer to convert SM actors into PLAs
- Collect all actors in nested LIs
- Duplicate all collected actors (because this workflow should be non-destructive)
- Split into cells/buckets by world partition grid
- Split into static vs non-static actors
- Static actors: Create 1 PLA per cell and assign it into a public DataLayer (so it’ll be included with the cook)
- Non-static actors: put into a separate public DataLayer so we can inspect it
As far as I understand, this is essentially what CellTransformer solves. But given where our project is at/engine version, I’d like to hear what folks from Epic and the community think about such an approach.
Thanks!
Joe