Puede que no tenga la mejor manera de explicarlo, pero lo intentaré.
Creo que la mejor manera de entender cómo hacerlo más eficiente es entender Voxels. Minecraft está basado en vóxel, solo usa cubos en lugar de esferas, etc., etc.
Básicamente, un vóxel es una forma 3D que puede tener un volumen cambiado dinámicamente y cuando el volumen cambia, también lo hace la forma. Un trozo es un conjunto de vóxeles X por X por X. Entonces, por ejemplo, puede tener un fragmento que tiene 16x16x16 vóxeles y luego puede tener un número X de fragmentos. Tendrás una distancia establecida, que si el jugador está más lejos que N de cualquier fragmento, no los incluyas en tus cálculos. Esto es similar a las distancias de recorte, pero también debería aplicarse a cada fragmento. De esta manera, puedes tenerlo para que siempre puedas tener a tu jugador en el Chunk central de, por ejemplo, un conjunto de Chunks 3x3.
Entonces, lo que tendrías es una clase para manejar los Voxels individuales. Lo llamaremos Voxel_cl. Y luego tendrías una clase para manejar la porción de vóxeles, llamada Chunk_cl. Y luego tendrías una clase mundial que genera todos los fragmentos que generarían los vóxeles, llamados World_cl.
Entonces, en lugar de una gran variedad de todo, tendrías una matriz de 9 Chunks en cualquier momento y en la clase de trozos, tendrías una matriz de 4096 voxels.
Tenga en cuenta que esta es una explicación bastante simple. Actualmente estoy trabajando en algo usando voxels, así que pensé que incluiría mi entrada = -)
Para obtener más información sobre voxels, consulte http://en.wikipedia.org/wiki/Marching_cubes