Oyuncu olmayan karakter (NPC) davranışları birçok oyunda kritik bir rol oynar. Yoldaşlardan boss’lara, tüccarlardan muhafızlara kadar NPC’lerin çevrelerindeki dünyayla etkileşim şekli ilgi çekici ve sürükleyici bir oyun deneyimi sağlar. İlk bakışta bu davranışlar korkutucu görünebilir, ancak gerçekte çoğu NPC katı bir mantıksal kurallar setine uyar. NPC’leri oluştururken bu kuralları anlamak çok önemlidir. Bu sayfada NPC’lerin dünyayla nasıl etkileşime girdiğini ve kendi benzersiz deneyimlerini yaratmak için onların davranışlarını nasıl görselleştirebileceğini ve değiştirebileceğini öğreneceksin.
Karakter Çıkma Yeri cihazı, birçok NPC ve Yapay Zekâ etkileşimini hayata geçirir. Cihaz hakkında daha fazla bilgi edinmek için Karakter Çıkma Yeri Cihazı, NPC Karakter Tanımı, Özel NPC Davranışı Oluştur sayfası ve Karakter Çıkma Yerini Animasyonlarla Kullanma bölümlerine bak.
Mantık Kuralları
Çoğu NPC rastgele bir şekilde hareket etmez ve bir sonraki eylemini durumuna göre seçer. Bir NPC’nin durumunu, NPC’nin belirli bir andaki dünyasının anlık bir görüntüsü olarak anlayabilirsin. NPC’nin gerçekleştirdiği eylemler, oyuncuların gerçekleştirdiği eylemler ve NPC’nin biliyor olabileceği diğer tüm değişkenler, NPC’nin durumunu oluşturur. NPC’ler, bir durumdan diğerine ne zaman geçiş yapacaklarına karar vermek için mantıksal kurallar kullanır ve mevcut durumlarına bağlı olarak birçok farklı kurala sahip olabilirler.
Sonlu Durum Makineleri
Durumları görselleştirmenin yaygın bir yolu Sonlu Durum Makinesi (FSM) kullanmaktır. Sonlu durum makinesi, bir NPC’nin içinde bulunabileceği farklı durumları ve durumdan duruma yaptığı geçişleri tanımlar. Düğümler farklı durumları temsil eder, bunların aralarındaki oklar ise bir durumdan diğerine geçiş için gereken koşulları tanımlar. Temel bir FSM diyagramı şöyle görünebilir:
Burada FSM’nin üç durumu vardır ve FSM 1. Durum’dan başlar. Belirli koşullara ulaşıldığında NPC bir durumdan diğerine atlar ve koşullar değiştikçe durum atlamaya devam eder.
Örneğin, basit bir savaş sıhhiyecisi karakterine dair FSM’yi ele alalım. Yakınlarda yaralı takım arkadaşları varsa sıhhiyeci takım arkadaşlarını iyileştirir. Yakınlarda düşmanlar varsa sıhhiyeci düşmanlara saldırır. Aksi halde boşta kalır. Bu karaktere dair temel bir FSM aşağıdaki gibi görünebilir:
FSM’ler, karakterlerin işleyiş şeklini görselleştirmene ve anlamana yardımcı olur ve karakterlerin olaylara ve etraflarındaki dünyaya tepki verme biçimlerini haritalandırmana yardım eder.
Muhafız Örneği Sonlu Durum Makinesi
Oyun içi bir örnek için muhafız NPC’ye bakalım. Muhafız NPC’ler muhafız çıkma yeri cihazından çıkarılabilir veya muhafız türünde bir NPC Karakter Tanımı ile oluşturulabilir. Muhafız türünde bir NPC, muhafızın içinde bulunabileceği farklı aktif durumlara karşılık gelen belirli bir mantık kuralları setine uyar:
Beklemede
Devriye
Şüpheli
Tetikte
Saldırıyor
Bir muhafız çıktığında ya boştadır ya da devriye seçeneği etkinse devriye gezmeye başlar. Muhafız bir hedef tespit ettiğinde şüphe ölçeri doldurmaya başlar. Ölçer dolu ise muhafız tetikte olma aşamasına girer, aksi halde devriye görevine geri döner. Muhafız tetikteyken sürekli olarak hedefine doğru ilerleyecek ve menzil içindeyse ona saldıracaktır. Hedef avlanırsa veya muhafızdan kaçarsa muhafız devriye görevine geri döner. Muhafızın mantığını aşağıdaki FSM ile görselleştirebilirsin:
Bu FSM, muhafız davranışına ilişkin üst düzey bir genel bakış sağlar, ancak bir muhafızın gerçekleştirdiği çok daha fazla kural ve eylem olabilir. NPC'ler aynı anda birden fazla şey konusunda eylemde bulunuyor olabilir ve bunları deneyimlerine eklerken çevresel faktörleri dikkate alman önemlidir.
NPC Durumları ve Verse
UEFN’deki NPC’ler Yapay Zekâ modülünden devralır ve durumlarını doğrudan kontrol etmek için kullanabileceğin işlevler kullanıma sunar. Örneğin, navigatable arayüz, bir NPC’yi bir alana yönlendirmeni sağlarken focus_interface, bir karakteri belirli bir objeye veya aracıya odaklanmaya zorlamanı sağlar. Bu arayüzleri Verse Cihazları veya NPC Davranışları içinde kullanarak, deneyimlerini dolduracak özel NPC’ler oluşturabilirsin.
Kendi NPC davranışlarını oluşturma konusunda daha fazla bilgi için Özel NPC Davranışı Oluşturma sayfasına göz at.
Örneğin, aşağıdaki NPC davranışına bak:
using { /Fortnite.com/AI }
using { /Fortnite.com/Characters }
using { /Fortnite.com/Game }
using { /Verse.org/Simulation }
on_damaged_behavior<public> := class(npc_behavior):
# This function runs when the NPC is spawned in the world and ready to follow a behavior.
OnBegin<override>()<suspends>:void=
if:
Tüm NPC’ler, hasar almalarına olanak tanıyan damageable arayüzünü kullanır. damageable arayüzünün DamagedEvent’ine bir fonksiyon bağlaman, NPC’nin ne zaman hasar gördüğünü öğrenmeni sağlar ve buna yanıt olarak kod çalıştırmana olanak tanır. Yukarıdaki kodda, bu davranışı uygulayan bir NPC hasar gördüğünde kendisine zarar veren aracıyı alacak ve onu değişken bir InstigatingAgent’ta depolayacaktır. Ardından NPC’nin navigatable arayüzünü kullanarak başlatıcıyı bir NavigationTarget olarak ayarlayacak ve onu kovalayacaktır.
Bu davranış, NPC’nin orijinal davranışının bir uzantısıdır. Bu kod muhafız türünde bir karaktere ekliyse bu karakter yine de tüm normal muhafız davranışlarını uygulayacak, ancak hasar gördüğünde doğrudan hedefine gidecektir. Aynı durum vahşi hayvan türündeki ve özel türdeki karakterler için de geçerlidir. NPC davranış kodları, NPC işlevselliğini genişleten ve deneyimlerine uyacak kendi özel NPC’lerini oluşturmana olanak tanıyan güçlü bir araçtır. Kendi özel NPC davranış kodlarını oluşturma konusunda daha fazla bilgi için Özel NPC Davranışı Oluşturma bölümüne bak.
NPC Türleri
Farklı NPC türleri, farklı temel davranışlar uygular; bu NPC türlerinden oluşturacağın özel NPC’ler ise bu davranışları devralacaktır. Farklı temel NPC türleri ve bunların ilişkili davranışları hakkında daha fazla bilgi için NPC Türleri bölümüne bak.
Dünyada Gezinme
NPC’ler dünyada dolaşırken hedeflerine ulaşmak için izleyecekleri en iyi rota hakkında seçimler yapmaları gerekir. Muhafız bir duvarın üzerinden mi geçmeli yoksa onu parçalamalı mıdır? Suyu yüzerek mi geçmeli yoksa suyun etrafından mı dolaşmalıdır? NPC’ler bu kararları dünyanın navigasyon örgüsüne göre verir. NPC’ler, yol bulma kararları vermek ve çevrelerindeki dünya güncellendikçe seçimlerini güncellemek için navigasyon örgüsünü kullanır. Navigasyon örgüsünü kullanma ve görselleştirme hakkında daha fazla bilgi için Navigasyon Örgüsü sayfasına bakabilirsin.