GMod'da navmesh ve AI node'lar: farklar ve kurulum
Navmesh mi, AI node'lar mı? GMod haritan Nextbot'lar için ne zaman .nav, klasik NPC'ler için ne zaman info_node ister ve ikisini haritayla nasıl dağıtırsın.
Navmesh ve AI node'lar, Source Engine'deki birbirinden ayrı iki navigasyon sistemidir. Nextbot'lar navmesh üzerinde (bir .nav dosyası) hareket eder, npc_combine_s ya da npc_zombie gibi klasik NPC'ler ise info_node entity'lerinden oluşan bir node graph (bir .ain dosyası) kullanır. Haritan her iki NPC türüyle de çalışacaksa ikisine de ihtiyacı vardır.
Navmesh ve AI node'ların karşılaştırması
| Özellik | Navmesh | AI node'lar |
|---|---|---|
| Dosya | maps/<mapname>.nav | maps/graphs/<mapname>.ain |
| Kim kullanır | Nextbot'lar, yani base_nextbot tabanlı NPC'ler | npc_citizen, npc_combine_s, npc_zombie gibi klasik NPC'ler |
| Yapı | yürünebilir zemini kaplayan alanlar | motorun birbirine bağladığı tekil noktalar |
| Oluşturma | oyunda nav_generate ile | Hammer'da info_node yerleştirerek |
| Düzenleme | oyunda nav_edit ile | Hammer'da, ardından yeniden derlemeyle |
İki sistem birbirinden habersizdir. Bir Nextbot kusursuz bir node graph'ı bile kullanamaz, bir npc_combine_s ise navmesh'i tamamen yok sayar.
Hangisine ne zaman ihtiyacın var
- Yalnızca oyuncular, NPC yok: Teknik olarak iki sisteme de ihtiyacın yok. Ancak birçok sunucu sonradan NPC addon'ları ekler, bu yüzden haritayı hazırlamak yine de karşılığını verir.
- Half-Life 2 NPC'leriyle çatışmalar: AI node'lara ihtiyacın var. Onlar olmadan NPC'ler nişan alabilir, ateş edebilir ve kısa mesafeleri düz bir hat üzerinde yürüyebilir, ama engellerin etrafından dolaşan bir rota planlayamaz.
- Nextbot addon'ları: Navmesh'e ihtiyacın var. Nextbot'lar hedeflerine giden yolu onun üzerinden hesaplar.
- Yayınladığın ya da sattığın haritalar: İkisini de haritayla birlikte ver. Alıcılar hangi addon'ları çalıştıracaklarını nadiren önceden bilir ve eksik navigasyon ancak canlı kullanımda ortaya çıkar.
Hammer'da AI node yerleştirme
info_nodeentity'lerini, NPC'lerin gitmesi gereken her yerde yürünebilir zemine yerleştir: koridorlara, kapıların önüne ve arkasına, köşelere, merdivenlerin başına ve sonuna.- Aradaki bağlantının açık olmasına dikkat et. Motor iki node'u yalnızca aralarındaki yol açık ve yürünebilirse ve birbirlerinden çok uzak değillerse bağlar; Valve wiki'si üst sınır olarak 720 birim verir. Dar yerlerde node'ları sık, açık alanlarda seyrek yerleştir.
- Uçan NPC'ler
info_node_airkullanır.info_node_hintile siper gibi özel noktaları işaretlersin. - Haritayı derle ve oyunda aç. Motor ilk yüklemede node graph'ı oluşturur ve
maps/graphsklasörüne.aindosyası olarak kaydeder. - Sonucu
sv_cheats 1etkinken kontrol et:ai_nodeskonsol komutu node'ları,ai_show_connectise aralarındaki bağlantıları gösterir; böylece ağdaki boşlukları fark edebilirsin.
Node'ları zemini sık bir ızgarayla kaplamak yerine bilinçli yerleştir. Motor yalnızca sınırlı sayıda node'u kaldırır ve aşırı kalabalık bir ağ, graph'ın oluşturulmasını uzatır. Bu tür üst sınırları Source Engine harita limitleri yazısı daha ayrıntılı ele alıyor.
Navmesh'i oluşturma ve düzenleme
Navmesh Hammer'da değil, çalışan oyunun içinde oluşturulur.
- Derlenmiş haritayı tek oyunculu modda aç ve
sv_cheats 1komutunu etkinleştir. nav_generateyaz. Motor, bir spawn noktasından başlayarak yürünebilir zemini tarar ve işi bitince haritayı yeniden yükler. Büyük haritalarda bu hatırı sayılır bir süre alır.- Spawn'dan yürüyerek ulaşılamayan alanlar boş kalır. Böyle bir alanda dur, zemine nişan al,
nav_mark_walkableyaz venav_generatekomutunu yeniden çalıştır. nav_edit 1mesh'i gösterir ve düzenlemene olanak tanır. Alanları silmek, bölmek, birleştirmek ve bağlamak için ayrı komutlar vardır, örneğinnav_delete,nav_split,nav_mergevenav_connect.- Sonucu
nav_saveile kaydet venav_edit 0ile düzenleme modundan çık. Dosya artıkmapsklasöründe<mapname>.navadıyla durur.
Otomatik oluşturulmuş bir mesh nadiren kusursuzdur. Özellikle kapıları, merdivenleri, dar geçitleri ve çatıları, ayrıca alanların duvarların içine ya da boşluğun üzerine taştığı yerleri kontrol et.
İki dosyayı da haritayla birlikte dağıtma
İki dosya da derleme sırasında oluşmaz ve kendiliğinden BSP'ye girmez. İkisini de açıkça eklemen gerekir:
maps/<mapname>.navmaps/graphs/<mapname>.ain
Dosya adı BSP adıyla birebir aynı olmalıdır. Haritanın adını değiştirirsen iki dosyanın adını da değiştirmen gerekir.
Sıra önemlidir. Motor, .ain dosyası BSP'den eskiyse ya da haritanın başka bir sürümü için oluşturulmuşsa node graph'ı yeniden oluşturur. Haritayı yeniden derlersen ya da BSP'yi sonradan değiştirirsen, örneğin özel içerik paketlerken, haritayı oyunda bir kez daha aç, graph'ın yeniden oluşturulmasını bekle ve bu taze .ain dosyasını dağıt. Navmesh'in ise yalnızca yürünebilir geometri değiştiğinde güncellenmesi gerekir.
Dosyaların sunuculara ve istemcilere nasıl ulaştığı FastDL ve Workshop yazısında anlatılıyor. Map Scanner bir BSP'nin yapısını, entity'lerini ve pakfile'ını kontrol eder. .nav ve .ain ayrı dosyalardır, bu yüzden onları kendi yayın öncesi kontrol listene eklemelisin.
Sık karşılaşılan sorunlar
| Belirti | Neden | Çözüm |
|---|---|---|
| Klasik NPC'ler yerinde duruyor ve yalnızca ateş ediyor | info_node entity'leri yok ya da node'lar birbirine bağlı değil | Node yerleştir, ai_nodes ve ai_show_connect ile kontrol et |
| Hiçbir NPC tepki vermiyor, vurulduğunda bile | ai_disabled 1 etkin, Sandbox'ta "Disable Thinking" seçeneği | Seçeneği kapat |
| Nextbot yerinde duruyor ya da duvarlara doğru koşuyor | .nav dosyası yok ya da bölge kapsanmıyor | nav_generate, gerekiyorsa önce nav_mark_walkable |
| Nextbot kapılarda ya da merdivenlerde takılıyor | Otomatik oluşturulmuş mesh'te hatalar | nav_edit 1 ve nav_save ile düzelt |
| Her harita açılışında "Node Graph out of Date. Rebuilding..." | Motor .ain dosyasını eski sayıyor ya da dosya hiç yok | Haritayı bir kez aç, yeni .ain dosyasını dağıt, dosya adlarını kontrol et |
"Node Graph out of Date" mesajı tek başına bir hata değildir. Motor graph'ı yeniden oluşturur, bu da yükleme süresine mal olur. Valve wiki'sine göre bu, yeni indirilmiş bir .ain dosyasında da bir kez yaşanabilir, çünkü oyun dosyayı eski sayar. Mesaj ancak her açılışta beliriyorsa bir sorun hâline gelir.
Sık sorulan sorular
Her GMod haritasının navmesh'e ihtiyacı var mı?
Hayır. Navmesh yalnızca haritada Nextbot'ların çalışması isteniyorsa gereklidir. Yayınladığın haritalarda yine de iyi bir fikirdir, çünkü birçok sunucu sonradan Nextbot addon'ları kurar.
Navmesh'i Hammer'da oluşturabilir miyim?
Hayır. Navmesh oyunda nav_generate ile hesaplanır ve nav_edit ile iyileştirilir. Hammer'da yalnızca node graph için info_node entity'lerini yerleştirirsin.
"Node Graph out of Date" neden her harita açılışında çıkıyor?
Motor kayıtlı .ain dosyasını eski sayıyor. Bu, örneğin graph oluşturulduktan sonra BSP yeniden değiştirildiğinde olur. Son hâlini almış BSP'yi oyunda bir kez aç ve bu sırada oluşan dosyayı dağıt.
Nextbot'lar AI node'larla da çalışır mı?
Hayır. Nextbot'lar yalnızca navmesh'i, klasik NPC'ler ise yalnızca node graph'ı kullanır. Her iki NPC türünü de destekleyecek bir haritanın iki dosyaya da ihtiyacı vardır.