Quadtree, Octree, BSP ağacı ve hatta basit bir Izgara Sistemi gibi ortak alan bölümleme algoritmalarından birini kullanın. Her bir senaryo için her birinin kendi artıları ve eksileri vardır. Bu kitaplarda onlar hakkında daha fazla bilgi edinebilirsiniz .
Genel olarak (ya da duydum, bunun arkasındaki gerekçeye çok aşina değilim), bir Quadtree veya Octree dış ortamlar için daha uygun, BSP ağacı iç mekan sahnelerine daha iyi uyuyor. Ve Quadtree veya Octree kullanmak arasındaki seçim, dünyanızın ne kadar düz olduğuna bağlıdır. Y ekseninde bir Octree kullanarak çok az değişiklik varsa israf edersiniz. Bir Octree temel olarak ek bir boyuta sahip bir Quadtree'dir.
Son olarak, Izgara çözümünün basitliğini göz ardı etmeyin. Birçok insan, problemleri için basit bir ızgaranın bazen yeterli (ve hatta daha verimli) olabileceğini görmezden gelir ve bunun yerine doğrudan daha karmaşık bir çözüme atlar.
Bir ızgara kullanmak, sadece dünyayı eşit aralıklı bölgelere bölmek ve varlıkları dünyanın uygun bölgesinde depolamaktan ibarettir. Daha sonra, bir pozisyon verildiğinde, komşu varlıkları bulmak, arama yarıçapınızla kesişen bölgeler üzerinde tekrarlama meselesi olacaktır.
Diyelim ki dünyanız XZ düzleminde (-1000, -1000) ile (1000, 1000) arasında değişiyor. Örneğin, 10x10 ızgaraya bölebilirsiniz, şöyle:
var grid = new List<Entity>[10, 10];
Sonra varlıkları ızgaradaki uygun hücrelere yerleştirirsiniz. Örneğin, XZ (-1000, -1000) olan bir varlık (0,0) hücresine, XZ (1000, 1000) olan bir varlık ise hücrenin (9, 9) üzerine düşer. Daha sonra dünyadaki bir konum ve yarıçap verildiğinde, bu "daire" ile hangi hücrelerin kesiştiğini belirleyebilir ve sadece bunların üzerinde basit bir çift ile yineleyebilirsiniz.
Her neyse, tüm alternatifleri araştırın ve oyununuza daha uygun olanı seçin. Hangi algoritmaların sizin için en iyi olacağına karar verecek konuda hala yeterince bilgili olmadığımı itiraf ediyorum.
Düzenle Bunu başka bir forumda bulduğunuzda karar vermenize yardımcı olabilir:
Izgaralar, büyük çoğunluk nesneleri ızgara karesine sığdığında ve dağıtım oldukça homojen olduğunda en iyi sonucu verir. Tersine, nesneler değişken boyutlara sahip olduğunda veya küçük alanlarda kümelendiğinde, dörtlü çalışır.
Sorunun belirsiz tanımına bakıldığında, ızgara çözümüne de yaslanıyorum (yani birimlerin küçük ve oldukça homojen bir şekilde dağıldığı varsayılarak).