Bir Warcraft 3 benzeri oyunda engellerle yol bulma


10

Döşeme tabanlı bir haritada arama yapmayı * düşünün. Basit bir ileri kod: Bu hücrenin içinde bir birim varsa, erişilemez, bu tamam.

Ancak harita çözünürlüğü sorunu var. Warcraft 3'e baktığımda canavarlar ve yapılar farklı yarıçaplara sahip ve çok yakın yürüyebilirsin, bu daha çok vektör tabanlı gibi, bu nasıl uygulandı?

Ayrıca, Warcraft 3 gibi hareketli engeller çarpışma algılamasını yol bulma algoritmasıyla birleştirmek için standart çözüm nedir?


"Vektör tabanlı" ne demektir?
jcora

Yanıtlar:


7

WC3 geliştiricileri tarafından ne tür bir yaklaşım kullanıldığından emin değilim, ancak Hiyerarşik Açıklamalı A * 'ya benziyor. WC3Editor'da tanımlanan birim yarıçapı, 3B model ölçeklendirmesi için olduğu gibi kullanıldı, ancak yol bulma için gerçek birim boyutu ayrıktı, belki unitSize = (int) (unitRadius / 10) gibi bir şeydi. Vektör tabanlı değildi, kesinlikle.

Diyelim ki yüksek çözünürlüklü düğüm ızgarası yapan birçok yol düğümü var. Bir hortlak gibi basit birimin boyutu 2'dir, bu yüzden bir ızgaraya bir yere yerleştirmek için birbirine yakın 4 serbest yol düğümüne ihtiyacımız vardır. Bir ölüm şövalye kahramanı, toplam 9 yol düğümü alarak 3 boyutuyla biraz daha büyüktür. Şimdi arada 2 düğümlü boşluk bırakarak 2 ziggurat yerleştiriyoruz ve diğer tarafa bir hortlak ve ölüm şövalyesi gönderiyoruz. Ghoul iki ziggurat arasında geçebilecekken, ölüm şövalyesinin hareket etmesi gerekecek. Nasıl Belirlenebilir?

Bir düğümün belirli bir boyuttaki bir birimi barındırabildiğini görmek için, her bir düğüme izin verilen maksimum birim boyutunu tanımlayan özel bir boşluk değeri atayalım. Temel olarak, bir düğüm için birkaç sınırlayıcı kontrolün yapıldığı ve mümkün olan en büyük sınırların düğümün temizlenmesi olarak hatırlandığı anlamına gelir. Dolayısıyla, bir düğümün üzerine bir ölüm şövalyesi yerleştirmek istediğimizde, düğümün açıklığını ölüm şövalyesinin büyüklüğü ile karşılaştırmak kadar basit hale gelir. Tabii ki, düğümler için rekabet eden birkaç birim olduğunda işler çok daha karmaşık hale gelecek, ancak bu başka bir hikaye.

Daha fazla ayrıntı için bu makaleye göz atmak isteyebilirsiniz:

http://harablog.wordpress.com/2009/01/29/clearance-based-pathfinding/


4

AKA navigasyon ağlarının yol bölgelerini oluşturmak için mozaiklemeyi kullanır. Bu makalede , kavram tam diyagramlarla açıklanmaktadır.

Yol bulma yaklaşımınız olarak A * 'yı koruyabilirsiniz, ancak ağınız artık bir ızgara (4 bağlantılı grafik) değil, çokgen bölgeleriniz arasındaki keyfi bağlantıyı temsil eden bir grafiktir. Bu nedenle algoritmanızı uygun olacak şekilde uyarlamanız gerekir.

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.