
Hytale dünyasında NPC'lerin nasıl düşündüğünü, savaştığını ve hatta hissettiğini hiç merak etiniz mi? Bu yazımızda, oyunun kalbinde yatan "Roller" sistemini, JSON tabanlı davranış yapılarını ve mod yapımcılarının sınırları nasıl zorlayabileceğini teknik detaylarla inceliyoruz.
🎭 Roller (Roles): NPC'lerin Kalbi
Hytale'de her NPC bir "Role" (Rol) sahibidir. Bu rol, o karakterin genel davranışını ve dünyadaki uyaranlara nasıl tepki vereceğini belirler. En güzel yanı ise, bir NPC'nin tüm davranış setini değiştirmek için sadece rolünü değiştirmenin yeterli olmasıdır!
Geliştirici ekibi, yeni NPC'ler oluşturmayı hızlı ve verimli hale getirmek için özelleştirilebilir değerlere sahip bir dizi şablon sunuyor. Bir rol, davranışın yanı sıra NPC'nin nasıl hareket edeceğini, taşıdığı eşyaları ve dış görünüşünü de belirler.
📚 Dokümantasyon ve Eğitim Serisi
Eğer NPC sistemine daha derinlemesine dalmak isterseniz, topluluk dostlarımız HytaleModding harika kaynaklar sunuyor. Ayrıca geliştiriciler bu konuyu 6 partlık bir video serisiyle de detaylandırdı.
Video eğitim serisine de buradan ulaşabilirsiniz:
Part 1
Part 2
Part 3
Part 4
Part 5
Part 6
Teknik Bakış: Instruction Lists (Talimat Listeleri)
Bu davranışlar teknik tarafta "instruction lists" (talimat listeleri) olarak adlandırılan bir yapıyla temsil edilir. Bu yapı, oyun dünyasındaki karar ağaçlarına (decision trees) benzer ancak daha basitleştirilmiş bir mantığa sahiptir.
Her talimat şunlardan oluşur:
- Sensor (Sensör): Oyun durumunu sorgulayan ve talimatın çalışıp çalışmayacağına karar veren birim.
- Action/Motion: NPC'nin gerçekleştireceği eylem veya hareket.
Klasik Davranış Ağaçlarından Farkı Ne?
Normal davranış ağaçlarında (Behavior Trees), bir düğüm (node) türüne göre farklı semantikler izleyebilir. Ancak Hytale, işleri basitleştirmek ve hata ayıklamayı kolaylaştırmak için her zaman Fallback Selector Node (Yedek Seçici Düğüm) mantığını kullanır.
Bu ne demek?
- Talimatlar yukarıdan aşağıya doğru sırayla değerlendirilir.
- Eşleşen (koşulu sağlayan) ilk talimat çalıştırılır.
- Özel bir bayrak (flag) kullanılmadığı sürece, liste taranmaya devam etmez.
Bu yöntem, NPC mantığının akışını takip etmeyi inanılmaz derecede kolaylaştırır. Karmaşık ağaçlarda kaybolmak yerine, "Bu çalıştı mı? Hayır. O zaman sıradakine bak." mantığıyla ilerlersiniz.
💡 İpucu: Şu anda davranışları oluşturmak için 150'den fazla farklı element türü bulunuyor ve bunların tamamı JSON formatında yapılandırılıyor!
Örnek: Koyun Davranışını Değiştirmek
Bir koyunun Template_Animal_Neutral (Tarafsız Hayvan Şablonu) davranışından, Template_Predator (Yırtıcı Şablonu) yardımıyla nasıl agresif bir hale geldiğine bakalım.

Aşağıdaki örnekte, koyunun size olan sevgisinden saldırganlığa geçişini görebilirsiniz:

Bu değişimin videolarına aşağıdan göz atabilirsiniz:
Hatta basit şablonlarla ona rastgele bir silah verip "Zor Ölüm (Die Hard) Koyun" modu bile yapabilirsiniz!

⚔️ Combat Action Evaluator (Savaş Aksiyon Değerlendiricisi)
Basit saldırıların ötesine geçen ve zeki kararlar verebilen bir karakter yaratmak istediğinizde, "instruction lists" bazen yetersiz kalabilir. İşte burada Combat Action Evaluator devreye giriyor.
Bu sistem, NPC'nin anlık durumuna, çevresine ve düşmanlarına göre akıllı kararlar vermesini sağlayan yardımcı bir çerçevedir. Her saldırı için "HP düşükken", "Düşman yakınken" veya "Oyuncu gizlice yaklaşırken" gibi koşullar belirlenir.
Bu sistem NPC'lere bir miktar "belirsizlik" (fuzziness) katarak savaş karşılaşmalarını daha ilginç ve öngörülemez hale getirir.
İskelet Praetorian Örneği
İskelet Praetorian; bloklama, düşük sağlıkta summon (çağırma) yapma ve şarj olma gibi yetenekler arasında zekice seçimler yapabilir. Aşağıda summon yeteneği için konfigürasyonun bir parçasını görebilirsiniz:

İşte bu kararların oyun içindeki yansıması:
🚧 Gerçekler ve Gelecek Planları (Reality Check)
Sistem kulağa harika geliyor olabilir, ancak geliştiriciler dürüst davranıyor: Henüz her şey mükemmel değil.
Araç Eksikliği: Şu anda NPC konfigürasyonlarının çoğu metin editörlerinde, doğrudan JSON dosyalarıyla yapılıyor. Görsel bir editör ve derinlemesine hata ayıklama (debugging) araçları henüz geliştirme aşamasında.
Yol Bulma (Pathfinding) Zorlukları: Çoğu oyun, statik (değişmeyen) haritalar kullandığı için yol bulma işlemlerini önceden hesaplayabilir (pre-calculated meshes). Ancak Hytale tamamen prosedürel ve modifiye edilebilir (blokların kırılıp konulabildiği) bir dünyaya sahip.
Bu yüzden, bildiğimiz optimizasyon hilelerinin çoğu burada işe yaramıyor. Dünya her an değişebileceği için "zıplama noktaları" (jump points) önceden belirlenemiyor.
> Örneğin: Mağara raptorları şu an oyuncuyu kovalamak için boşluklardan atlayamıyor. Çünkü bir NPC'nin zıplayabileceği her ekstra blok mesafesi, her arama işleminde büyük bir performans maliyeti getiriyor.
- Teknik Borç (Technical Debt): NPC'ler şu an blokları bilinçli olarak kıramıyor (patlamalar hariç). Ayrıca NPC fiziğinin oyuncu sistemleriyle tam uyumlu hale gelmesi için ciddi bir yeniden yazım süreci gerekiyor.
Ekip, bu sorunları çözmek ve mod yapımcılarına (sizlere!) NPC oluşturmayı eğlenceli hale getirecek araçları sunmak için çalışıyor. Tüm bu çalışmaların nihai hedefi ise PvE sistemlerini sınırlarını zorlayacak Boss (Patron) karşılaşmaları yaratabilmek!
🐞 Debug Komutları ve Görselleştirmeler
NPC'lerinizi test ederken kullanabileceğiniz bazı harika debug (hata ayıklama) komutları şimdiden mevcut. Oyun içinde /npc debug set <flag> komutunu kullanarak NPC'lerin dünyayı nasıl algıladığını görebilirsiniz.
🎯 VisAiming (Nişan Alma Görselleştirmesi)
NPC'nin tam olarak nereye nişan aldığını gösterir.

🔒 VisMarkedTargets (İşaretli Hedefler)
NPC'nin o an kilitlendiği hedefleri gösterir. Genellikle savaştığı tek bir LockedTarget (Kilitli Hedef) olur.

📡 VisSensorRanges (Sensör Menzilleri)
NPC'nin duyusal yeteneklerini (görme, duyma vb.) halkalar ve görüş alanları olarak görselleştirir.


Görsel Analizi: İlk görselde Ayı uyuyor ve sadece tek bir sensörü aktif. İkinci görselde ise Ayı'nın duyma, görme ve mutlak tespit menzili aktif. Koyunlar görüş yarıçapında olsalar ("hedef işareti" almışlar), görüş konisinin (view cone) dışında kaldıkları için şu an güvendeler!
🔗 VisLeashPosition (Tasma Pozisyonu)
NPC'nin bağlı olduğu (leash) pozisyonu gösterir.

🐑 VisFlock (Sürü Görselleştirmesi)
NPC'nin ait olduğu sürüyü ve liderini işaretler.

Kaynak: Hytale - NPC Technical Rundown
📢 Forum Tartışması: Siz Ne Düşünüyorsunuz?
Hytale'in sunduğu bu derinlemesine NPC özelleştirme sistemi hakkında ne düşünüyorsunuz? JSON tabanlı bu yapı, mod yapımcıları için bir özgürlük mü yoksa karmaşıklık mı yaratacak?
Yorumlarınızı bekliyoruz! 👇