Gunakan salah satu algoritma partisi ruang umum, seperti pohon Quadtree, Octree, BSP, atau bahkan Sistem Grid sederhana. Masing-masing memiliki pro dan kontra sendiri untuk setiap skenario tertentu. Anda dapat membaca lebih lanjut tentang mereka di buku-buku ini .
Secara umum (atau begitulah yang saya dengar, saya tidak terlalu terbiasa dengan alasan di balik ini) Quadtree atau Octree lebih cocok untuk lingkungan luar, sedangkan pohon BSP lebih cocok untuk adegan dalam ruangan. Dan pilihan antara menggunakan Quadtree atau Octree tergantung pada seberapa datar dunia Anda. Jika ada sedikit variasi dalam sumbu Y menggunakan Oktree akan sia-sia. Oktree pada dasarnya adalah Quadtree dengan dimensi tambahan.
Akhirnya, jangan abaikan kesederhanaan solusi Grid. Banyak orang mengabaikan bahwa kisi-kisi sederhana kadang-kadang cukup (dan bahkan lebih efisien) untuk masalah mereka, dan langsung beralih ke solusi yang lebih kompleks.
Menggunakan kisi hanya terdiri dari membagi dunia menjadi wilayah yang berjarak sama dan menyimpan entitas di wilayah yang sesuai di dunia. Kemudian, diberi posisi, menemukan entitas yang berdekatan akan menjadi masalah iterasi pada wilayah yang memotong jari-jari pencarian Anda.
Katakanlah dunia Anda berkisar dari (-1000, -1000) hingga (1000, 1000) di pesawat XZ. Misalnya Anda dapat membaginya menjadi 10x10 kisi, seperti:
var grid = new List<Entity>[10, 10];
Kemudian Anda akan menempatkan entitas ke sel yang sesuai di kisi. Misalnya entitas dengan XZ (-1000, -1000) akan jatuh pada sel (0,0) sedangkan entitas dengan XZ (1000, 1000) akan jatuh pada sel (9, 9). Kemudian diberi posisi dan jari-jari di dunia, Anda bisa menentukan sel mana yang berpotongan dengan "lingkaran" ini dan beralih hanya di atasnya, dengan ganda sederhana untuk.
Bagaimanapun, teliti semua alternatif dan pilih salah satu yang tampaknya lebih cocok dengan gim Anda. Saya akui bahwa saya masih belum cukup berpengetahuan tentang masalah ini untuk memutuskan algoritma mana yang terbaik untuk Anda.
Sunting Ditemukan ini di forum lain dan mungkin membantu Anda dengan keputusan:
Kisi-kisi bekerja paling baik ketika sebagian besar objek masuk dalam kisi-kisi kotak, dan distribusinya cukup homogen. Sebaliknya, quadtrees bekerja ketika objek memiliki ukuran variabel atau dikelompokkan di area kecil.
Dengan uraian Anda yang tidak jelas tentang masalahnya, saya juga bersandar pada solusi grid (yaitu, dengan asumsi unit berukuran kecil dan terdistribusi secara homogen).