Boş alanda verimli yol bulma


12

Uzayda bir oyunum var ve yol bulma gerektiren hareket emirleri vermek istiyorum. Şimdi, benim anlayışım A * ve benzeri çoğunlukla yol bulma düğümleri olmayan boş alan için değil, ağaçlar için geçerlidir. Şu anda sabit AABB olarak ifade edilen bazı engellerim var - yani sınırsız "arazi" engeli yok. Buna ek olarak, çoğu engelin küpler veya küreler olarak makul bir şekilde tahmin edilebilir olmasını bekliyorum.

Bu yüzden çok daha basit bir yol bulma algoritması kullanmayı düşünüyorum - yani, mevcut konumdan hedef konuma bir ışın verin ve sonra mekansal bölümlemeyi nispeten hızlı bir şekilde kullanarak engellerin bir listesini alabilirim. Bu kadar emin olmadığım, sipariş edilen birimin engellerin etrafında hareket ettiği parçanın nasıl belirleneceğidir.

Şimdiye kadar düşündüğüm şey, sadece potansiyel alanları kullanacağım, yani tüm birimler birbirlerinden uzakta güçlü bir itici kuvvet ve istenen noktaya doğru ılımlı bir kuvvet hissedecekler. Bu ayrıca grup emirleri vermek için başka bir kuruluşa karşı orta düzey bir kuvvet sipariş edebilmem gibi bir avantaja sahiptir. Ancak bu, en uygun çözümü elde edemeyeceği açıktır.

Potansiyel alanlar parametrelerim göz önüne alındığında makul bir yaklaşıma ulaşacak mı yoksa başka bir çözüme mi ihtiyacım var?

Yanıtlar:


7

Potansiyel alanlar işe yarayabilse de, birimlerinizin çevredeki engeller tarafından yakalanacağı en düşük yollarla ve "yerel minimumlarla" ilgili sorunlarınız olacağını düşünüyorum. A * 3D açık alan ortamları için uygundur. Bu, ihtiyaçlarınızı karşılayan bir gezinme ağı oluşturma sorunu haline gelir. Gezinti düğümleri için Octrees gibi yapıları bile kullanabilirsiniz. Her oktantın maksimum boyutu ne kadar küçük olursa, yol da o kadar düzgün olur. Yüz yüze oyunlardan bu makaleye göz atın (şimdi geçersiz, geri dönüş bağlantısı eklendi). A * yol optimizasyonu (görüş kısayolları gibi) ve yönlendirme davranışları ile birleştiğinde, gitmeye hazır olacaksınız! Yol düğümleri için bir oktree kullanımına örnek olarak aşağıdaki resme bakın:


Bu daha büyük haritalara nasıl ölçeklenecek? Her boyutta iki kat daha büyük bir haritaya sahip olsaydım, sorunlu olan düğüm sayısının sekiz katına ihtiyacım olurdu.
DeadMG

Şart değil. Aramanız yaklaşana kadar düğüm boyutunu büyük tutabilirsiniz. Bu, ilgilenmediğiniz düğümleri oldukça büyük ve sayıca az tutmanızı sağlar.
MichaelHouse

Boş alan navigasyon kafeslerinin güzel bir özelliği yolculuk maliyeti eşitliğidir; Eğer A * JPS kullanmak mümkün olabilir
Will

@Will: Biraz Googling yaptım, ancak ortaya çıkan tek yol bulma algoritmasını gerçekten anlamadım. Bunun üzerine bir cevap göndermek ister misiniz?
DeadMG

@DeadMG bu kesin bir açıklamadır: harablog.wordpress.com/2011/09/07/jump-point-search <br/> A * uygulayabiliyorsanız, JPS'yi oldukça basit bir şekilde uyarlayabilirsiniz . Önce A * yapın ve optimizasyon olarak JPS ekleyin.
Will
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.