Potrei non avere il modo migliore di spiegarlo, ma ci proverò.
Penso che il modo migliore per capire come renderlo più efficiente sia capire Voxels. Minecraft è basato su voxel, usa solo cubi invece di sfere, ecc., Ecc.
Fondamentalmente un voxel è una forma 3D che può avere un volume modificato dinamicamente e quando il volume cambia, così fa la forma. Un pezzo è un insieme di voxel X per X per X. Ad esempio, puoi avere un blocco che ha 16x16x16 voxel e quindi puoi avere un numero X di blocchi. Avrai una distanza impostata, che se il giocatore è più lontano di N da qualsiasi blocco, non includerli nei tuoi calcoli. Questo è un po 'simile alle distanze di ritaglio, ma dovrebbe applicarsi anche a ciascun pezzo. In questo modo, puoi averlo in modo da poter avere sempre il tuo giocatore al centro di un gruppo di, diciamo, 3x3 set di pezzi.
Quindi quello che avresti è una classe per gestire i singoli Voxel. Lo chiameremo Voxel_cl. E poi avresti una classe per gestire il pezzo di voxel, chiamato Chunk_cl. E poi avresti qualche classe mondiale che genera tutti i blocchi che genererebbero i voxel, chiamati World_cl.
Quindi ora invece di una vasta gamma di tutto, avresti una serie di 9 blocchi in qualsiasi momento e nella classe chunk, avresti una matrice di 4096 voxel.
Questa è una spiegazione piuttosto semplice. Attualmente sto lavorando a qualcosa usando voxel, quindi ho pensato che avrei inserito il mio input = -)
Per ulteriori informazioni sui voxel, consultare http://en.wikipedia.org/wiki/Marching_cubes