There is one background thread for the whole world. I have optimized the calculations so it takes about 1 - 3 seconds on my intel i5. I am aware that there will be a hitch once the instances are created, but I would like to have the loading screen not freeze up for the entire time the world is being generated (especially for slower devices). As for memory I have two structs. One which holds a TArray<FBox> and a TArray<FPartitionedTiles> (FPartitionedTiles is just an array for holding tile info) and then the other for holding the tile Transforms and material switch (TArray<FTransform> and a TArray<int32>)