Saat ini saya sedang mengerjakan dunia tanpa batas, sebagian besar terinspirasi oleh minecraft.
Sebuah Chunk terdiri dari 16x16x16 blok. Blok (kubus) adalah 1x1x1.
Ini berjalan sangat lancar dengan ViewRange 12 Potongan (12x16) di komputer saya. Baik.
Ketika saya mengubah tinggi Chunk ke 256, ini menjadi - jelas - laggy yang luar biasa.
Jadi pada dasarnya yang ingin saya lakukan adalah menumpuk potongan. Itu berarti duniaku bisa [∞, 16, ∞] Bongkahan besar.
Pertanyaannya sekarang bagaimana cara menghasilkan bongkahan dengan cepat?
Saat ini saya menghasilkan tidak ada potongan melingkar di sekitar posisi saya (dekat ke jauh). Karena saya belum menumpuk, ini tidak terlalu rumit.
Sebagai catatan penting di sini: Saya juga ingin memiliki bioma, dengan tinggi min / maks berbeda. Jadi di Biome Flatlands , lapisan tertinggi dengan balok adalah 8 (8x16) - di Pegunungan Biome lapisan tertinggi dengan balok adalah 14 (14x16). Seperti contohnya.
Apa yang bisa saya lakukan adalah memuat 1 Chunk di atas dan di bawah saya misalnya.
Tetapi di sini masalahnya adalah, bahwa transisi di antara bioma yang berbeda dapat lebih besar dari satu potongan pada y.
Pemuatan chunk saya saat ini sedang beraksi
Untuk kelengkapan di sini "algoritma" pemuatan potongan saya saat ini
private IEnumerator UpdateChunks(){
for (int i = 1; i < VIEW_RANGE; i += ChunkWidth) {
float vr = i;
for (float x = transform.position.x - vr; x < transform.position.x + vr; x += ChunkWidth) {
for (float z = transform.position.z - vr; z < transform.position.z + vr; z += ChunkWidth) {
_pos.Set(x, 0, z); // no y, yet
_pos.x = Mathf.Floor(_pos.x/ChunkWidth)*ChunkWidth;
_pos.z = Mathf.Floor(_pos.z/ChunkWidth)*ChunkWidth;
Chunk chunk = Chunk.FindChunk(_pos);
// If Chunk is already created, continue
if (chunk != null)
continue;
// Create a new Chunk..
chunk = (Chunk) Instantiate(ChunkFab, _pos, Quaternion.identity);
}
}
// Skip to next frame
yield return 0;
}
}