Ağa bağlı büyük bir dünyada varlık yolu bulma ve hareket etme ile nasıl başa çıkılır?


12

resim açıklamasını buraya girinYukarıdaki görüntüyü 32x32 kutulara bölünmüş fayanslar göz önüne alındığında, yakındaki oyunculara 'aggro' olarak işaretlenmiş bir varlığım var. Bu canavarı ideal olarak oyuncuyu kovalamak istiyorum (ve oyuncuyu bir süre kovalamaya devam ediyorum). Şu anda, benim tek hareketim uzak varlıklar için basit bir enterpolatörüm ve bu çalışıyor, çünkü hareket güncellemeleri arasındaki boşluklar oldukça küçük.

Müşteriye canavarın bulunduğu pozisyona geçmek istediğini söyleyemem, çünkü bu varlığın olması gerekenden çok daha hızlı hareket etmesine neden olur (bu muhtemelen enterpolasyon işbirliği için biraz matematik kullanarak çözülebilir. -etkin) ancak daha da önemlisi gerçekçi görünmüyor ve duvarları kesebilir! Önlenebilir eğer sunucudaki tüm hareketi simüle etmek istemiyorum ... Her ne kadar ben olabilir ama yine de kırpma sorunu çözmek olmaz sanırım. Çözümün bazı yol bulma ve istemcinin periyodik düğüm güncellemelerini göndermesi ve hareketi simüle etmelerine izin vermesinden şüpheleniyorum ama emin değilim.

Teşekkürler!

Yanıtlar:


9

Basit bir başlangıç ​​için direksiyon davranışlarını uygulayabilirsiniz . Özellikle davranışları araştırın . resim açıklamasını buraya girin

Karakterler aramaya ek olarak engellerden uzaklaşmak için kaçınma kullanmalıdır .

resim açıklamasını buraya girin

Bu yönleri çalıştırdıktan sonra, daha akıllı bir takip uygulayabilirsiniz. Buna yol bulma da dahildir. Düşmanlar artık düşmanlarına yönelmek yerine, onları hedeflerine götüren yoldaki her düğüme doğru yönelecekler .

Düşman "yeterince yakın" hale geldiğinde, tamamen yönlendirme davranışlarına geçebilirsiniz. Yol bulma işleminden daha ucuz olduklarından ve yakın mesafeden iyi sonuçlar elde edeceksiniz.

Direksiyon ayrıca düşmanlar için maksimum dönüş hızlarını ve maksimum hızları tanımlamanıza olanak tanır.

Yönlendirme, istemcide hâlâ yolda olduklarından emin olmak için düzenli olarak yapılan güncellemelerle yönetilebilir.


Bu, sunucudaki yönlendirme davranışını simüle etmek mi anlamına gelir yoksa mantığı yol boyunca mantıksal olarak 'yapıştırabilir miyim? Büyük bir hassasiyete ihtiyacım yok.
Vaughan Hilts

Direksiyon simüle edilmeli (çok ağır değil). Ancak, ara noktalara yönlendirme simülasyon olmadan güncellenebilir. Müşterinin "mevcut" yol noktası aralığında olduğundan ve "sonraki" olarak doğru yol noktasına doğru yönlendirildiğinden emin olun. Varlık yoldan çıkarılır ve aniden güncellenirse, bu durum biraz çatırtı içerir.
MichaelHouse

Harika Yanıt için +1. Birkaç saatimi kurtardığın için teşekkürler.
Md Mahbubur Rahman

1

Müşteriye canavarın bulunduğu pozisyona geçmek istediğini söyleyemem, çünkü bu varlığın olması gerekenden çok daha hızlı hareket etmesine neden olur (bu muhtemelen enterpolasyon işbirliği için biraz matematik kullanarak çözülebilir. -efficent)

Aslında bunu yapmak basit. Hareket yönü hedef konum eksi geçerli konum olacaktır. Tek yapmanız gereken o vektörü gerçekte istediğiniz hareket hızına indirgemek. Her kareyi tekrarlayın.

ama daha da önemlisi gerçekçi görünmüyor ve duvarları kesebilir! Önlenebilirse, sunucudaki tüm hareketi simüle etmek istemiyorum ...

Sunucudaki hareketi simüle etmeniz gerekir. Tüm oyuncuların aynı davranışı gördüğünü başka nasıl bileceksiniz?

Bazı temel yol bulmaya ihtiyacınız olacak. A * standarttır. Hedefe giden bir yolu hesaplayabilirsiniz ve ardından bu yolu takip etmek, hareket vektörlerini yukarıdaki gibi ayarlamanızdır. (Veya Byte56'nın cevabındaki gibi direksiyon davranışlarını kullanabilirsiniz, bu da bazı ekstralar ile aynıdır.)

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.