How to approach forests in a strategy game

A really simple solution to spawning and killing trees is, instead of actually spawning or destroying a tree, simply “reset” it. Essentially, under the hood, trees always exist (they never spawn and never de-spawn). “Growing” animates the tree growing, “chopping” animates the tree being chopped down, and “dying” animates the tree falling. When the tree is chopped down or dies, instead of destroying it, you simply reset its state back to “growing”. This will put it back in the ground and make it grow again. Of course, you don’t want a tree to grow right after it’s destroyed, so you would temporally disable it, or make the spawn have a delay in it. For performance, you could set the mesh’s visibility to false so it doesn’t render when under the ground (although, occlusion culling may do this for you).

The benefit of this is that the positions of the trees never actually change, so you don’t have to worry about positioning new trees (however, this is a downside if you want new trees to have new positions). This will also allow you to spawn the meshes any way you want (foliage tool, blueprint, etc.) since the trees are only spawned once when the level is loaded.


If you store a set of boxes across the level, you can manually cull groups of trees based on which box the character is overlapping. You still have to take into account the camera view, but this is a start (possibly use WasActor/ComponentRecentlyRendered on “landmarks”?)