Move to a column-based chunk system
We should consider chunks to be discrete columns. Within each column, we can do homogeneous chunk optimisations, but iterating through active chunks should be done in 2D.
This allows us to:
-
Have distinct load and unload events for chunk columns, which makes the spawning and despawning of NPCs and other entities simpler
-
Have dynamic world base heights (as shown in the image below) that allow us to have arbitrarily high terrain
-
Not have to iterate through every active 3D chunk when determining visibility
-
Better integrate worldsim with worldgen