Davranış Ağaçları :: Bir Kene Daha Uzun Süren Eylemler


19

Davranış Ağaçları'nda anladığım kadarıyla, her Davranış birkaç iterasyonda yapılabilecek kısa bir hedefe yönelik Eylem olmalıdır.

Örneğin, aşağıda bir Davranış Ağacı görüntüsü verilmiştir:

resim açıklamasını buraya girin

Şimdi Düşmana Sürme davranışının ağaçta birkaç tekrardan fazla sürdüğünü varsayalım . Böylece her geçişte Düşmana Sürücü denir çünkü şimdi koşuyor .

Sorun şu ki, eğer yakınlarda bir düşman varsa Evade Enemy'yi aramak istiyorum . Ve Düşmana Sürücü her zaman çağrıldığında, asla Düşman Düşmanı'nı arama şansım olmaz ( Muhtemelen Düşmandan Kaçın olarak adlandırılmalıdır ).

  • Halihazırda hangi İşlem yapılıyor olursa olsun , Tree EACH geçişini geçmeli miyim?
  • Bunu doğru şekilde mi yapıyorum?
  • Böyle bir davranışla başa çıkmanın doğru yolu nedir?

Başlangıçta Stackoverflow üzerinde sordu. Burada bu soruyu sormak için daha uygun bir yer olacağını düşündüm.


1
Burada verilen cevap yardımcı oluyor mu? gamedev.stackexchange.com/questions/51693/…
Tetrad

Bu da benim sorum. Bu soruyu yorum olarak gönderecektim ama bunun ayrı bir soru olması gerektiğini düşündüm.
Bedava Lancer

Yanıtlar:


16

Önceki cevabımda verdiğim resme bakın :

resim açıklamasını buraya girin

Düğüm 1'in 'Kaçış Düşmanı' ve düğüm 2'nin 'Chase Düşmanı' olduğunu hayal ediyorsanız, ikinci yinelemede ('2' ve 'B' hariç her şey yeşil olduğunda bile ikinci yinelemede olduğunu göreceksiniz. başlar), 'Düşmandan Kaçış' önce kontrol edilir. Sadece 'Kaçak Düşman' başarısız olduğunda, yakınında hiç düşman olmadığından, 'Düşman kovalamaca' tekrar etkinleştirilir. 'Düşman kovalamaca' tekrar ziyaret edildiğinde, 'koşma' durumunda olduğunu fark eder ve doğrudan 'B'ye atlar.

Bu, ağaç her kontrol edildiğinde, her zaman soldan sağa doğru hareket edeceği anlamına gelir. Bir düğüm çalışıyor olarak işaretlenmiş olsa bile, önce yüksek öncelikli düğümler hala kontrol edilir.

Düğümlerinizi sağdan sola işlemek istediğinizden emin değilsiniz, ancak onları bu şekilde düzenlenmiş gibi görünüyorsunuz (yani kaçış düşmanı altında, düşmanı bulun, sürücünün sağ tarafında ters yönde bulunur). Daha fazla açıklamaya ihtiyacınız varsa, sohbette veya konuyla ilgili mevcut sorularınızdan birinde sormalısınız.


2
Harika bir açıklama için teşekkürler. Davranış Ağaçlarının özyinelemeli doğasını anlamakta zorlanıyordum. Son sorunun yorumunda sizden soracaktım ama yorumları uzun bir KG'ye dönüştürmek istemedim. Son bir soru olsa da, şimdi hepsi mantıklı. Çalışma durumlarını işlemede Seçiciler ve Sıralar arasında bir fark var mı? Görünüşe göre Seçici (Düğüm 0) önce Düğüm 1'i kontrol ederken, "Düğüm 2" dizisi Düğüm A'yı ikinci yinelemede kontrol etmedi.
Bedava Lancer

4
Güzel soru, sanırım anlıyorsun. Düğüm 2, düğüm A'yı tamamladığından düğüm A'yı kontrol etmedi. Düğüm 2 'Çalışıyor' olarak işaretlendiğinde, B düğümünün o anda çalışan düğüm olduğunu not eder. Bir düğüm çalışıyorsa, önceki düğümlerin tekrar kontrol edilmesi gerekmediği anlamına gelebilir.
MichaelHouse

Kök Seçiciyi (0) ilk yinelemeden sonra "ÇALIŞIYOR" olarak ayarlandıktan sonra "HAZIR" olarak sıfırlıyor musunuz?
Ücretsiz Lancer

Çalışan düğümün yalnızca üst öğesinin çalışmaya ayarlandığına inanıyorum. Düğümün (1) tekrar ayrıştırılması gerektiğinden, kök çalıştırmak yerine hazır olarak ayarlanmalıdır.
MichaelHouse

3
Bu bir seçenek. Aslında istediğiniz sıklıkta veya seyrek olarak güncelleyebilirsiniz. İsterseniz her 300 ms'de veya her karede. Veya sabit bir güncellemenin yanı sıra herhangi bir etkinlikle başa çıkmak için tetiklenmiş bir güncellemeniz olabilir. Bu tür yapıların çoğunda olduğu gibi davranış ağaçları da kesin olarak tanımlanmamıştır. Oyununuz için mümkün olan en iyi şekilde kullanılmalıdır. Her kareyi değerlendirmek çok boşa giderse, bunu yapmayın. Ayrıca, bir ağacı değerlendirmek için harcanan süreyi sınırlayabilir ve isterseniz bir sonraki kareyi alabilirsiniz. Birçok seçenek var.
MichaelHouse
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.