EU4 günlüklerinde bu hafta 1.28 “Spain” yamasındaki ordu yapay zekasında yapılan değişikliklerden, geliştirmelerden ve bu konuda modculara gelen yeni yeteneklerden bahsediliyor.
Bugünkü geliştirici günlüğüne hoş geldiniz, benim adım Michael ve bir yıldan uzun bir süredir EU4 ekibinde programcı olarak bulunuyorum.
Birçoğunuz son yamalardan sonra yapay zekânın özellikle de kendi topraklarını koruma ve hangi kaleleri kuşatacağını seçme konusunda istenmeyen şeyler yaptığını söylemiştiniz. O yüzden gelecek Spain yamasında ordu yapay zekâsının o yönlerini biraz geliştirmeye karar verdik. Bu geliştirici günlüğünde yaptığımız bazı değişiklikleri anlatacağım. Gömülü bir şekilde kodlanmış yapay zekâ davranışlarını düzeltmenin yanında modcuların da ordu yapay zekâsının bazı kısımlarını etkileyebilme yeteneği ekledik. Günlüğün sonunda bunun üzerinden kısaca geçeceğim.
Öncelikle şu ana kadar yapılan değişikliklerden ve geliştirilen şeylerden bahsedeceğim. Yama üzerinde hala çalışmakta olduğumuz için bunlar da değişebilir.
Deniz aşırı istilalara giden orduların seçimi artık ülkeye olan tehditleri de göz önüne alıyor ve gerekirse daha küçük bir kuvvet seçiliyor. Yine de yapay zekâ başka türlü kazanacağını düşünmüyorsa hala tüm gücüyle istila etmeye çalışabilir. Gereken güç hesaplamaları geliştirildi ve ne kadar asker gerektiğini konusunda artık daha doğru olmalı.
Orduların bölgelere atanması daha önceden sadece yılda bir kez yapılırdı, rastgele bir şekilde daha uzun sürme olasılığı da vardı. Rastgele ordu atamalarının yanında anavatana olan tehdidin ciddi bir şekilde değişip değişmediği de hesaplanıyor (kuşatmalar, anavatana doğru yol alan birçok düşman askeri vs.).
Anavatan sayılan bölgeler tehdit altındaysa bu bölgeler ordu atamalarında daha da yüksek bir önceliğe sahip olacak. Yeteri kadar asker varsa tehdit altında olmadığında bile ülkenin anavatanı bölge konusunda daha yüksek bir önceliğe sahip olmaya devam ediyor. Bu bölgelerin şehir seviyesinde ise ordular artık nereyi kuşatma, nereleri savunma ve savaş hedefleri konusunda kendi ülkelerine yakın olan şehirleri tercih ediyor.
Daha güçlü bir ordudan kaçan kuvvetler hala güvenli bir yer bulmaya çalışacak ama askeri geçiş izinleri ve uzun yürüyüşler daha düşük bir önceliğe sahip, yeteri kadar güvenliyse de en yüksek önceliği anavatan alacak. Yapay zekâ orduları artık bulundukları yeri koruma konusunda daha istekli olacak, özellikle de çok üstün bir kuvvetle karşı karşıya kaldıklarında ve süregelen savaşı kazanma şansları olmadığında. Daha önceden oyuncular bu orduları askeri geçişlerin kolaylığı nedeniyle dünya etrafında kovalamak zorunda kalıyordu.
Kodlanabilen Ordu Yapay Zekâsı
EU4 ordu yapay zekasının temel kısmı şehirlerin hesaplanmasıdır, orduların nereye ve ne zaman gideceğini belirler. Zaten şu anda bu hesaplamanın sonucu değiştiren birçok kod tanımlamaları var ama gelecek yamayla birlikte bu hesaplamayı istediğiniz “tetikleyiciyi” ile değiştirebilecek veya tamamen üzerine yazabileceksiniz. Common/ai_army klasöründe bazı basit şeyleri yapan kod dosyaları olacak ama istediğiniz kadar da ekleyebileceksiniz.
Bu basit örneğe bakalım:
province = { war = { active = { is_at_war = yes } eval_multiply = { modifier = { factor = 0.1 is_in_capital_area = yes } } } }Şimdilik en üst seviye kapsam (scope) her zaman “province (şehir)”, daha sonra başka seçenekler ekleyebiliriz. İkinci seviyeye istediğiniz ismi koyabilirsiniz, uygulamak istediğiniz farklı değiştirmeleri ayırmak için kullanılır. Event ihtimalleri gibi bunlar da 1’den başlıyor. İlginç kapsamlar ise “active”, “eval_multiply” ve burada gösterilmeyen “eval_add” ve “eval_overwrite”. Bunlarla birlikte şehir puanı hesaplamalarında yapılan değiştirmeleri kontrol edebilirsiniz. Yukarıdaki örnekteki kod ülke savaşta olduğunda uygulanır.
Şehir hesaplamaları oyundaki tüm ordular için oldukça sık yapıldığı için bu “active” tetiği her şehir hesaplamasında kontrol edilmeyecek (şehir hesaplamaları bir günde yüzlerce kez olabilir).
Bu tetik aşağıdaki şeylerden biri gerçekleştiğinde değerlendirilir:
- Bir şehrin kontrolünü kazandığınızda veya kaybettiğinizde
- Bir savaş başladığında veya bittiğinde
Puanı üç şekilde değiştirebilirsiniz: çarpabilirsiniz, bir sayıyla toplayabilirsiniz veya doğrudan üzerine yazabilirsiniz. Puan negatif ve 1.0’dan küçük olabilir bu nedenle ters işlemler de mümkün.
Orduların en düşük puana sahip şehirleri tercih ettiğini unutmayın.
Orduları bu şekilde oldukça fazla kontrol edebilseniz de daha öncelikli olan gömülü kodlanmış şeyler de var ve ordular hala oyun kurallarına uymak zorunda (parçalanmış geri çekilmeler vs.). Yine de güzel bir seçenek ve modlarda nasıl kullanılacağını da görmeyi merakla bekliyorum. Yapay zeka davranışını bozmak baya mümkün, bu yüzden özellikle de “eval_overwrite” ile dikkatli olmanızı öneriyorum.
Kodunuzda hata ayıklama için yapay zekâ haritasını kullanabilirsiniz. Bu haritada seçtiğiniz ordu için yapılan tüm şehir hesaplamalarını görebilirsiniz. Bu haritayı açmak için konsolda “mapmode aieval” yazmanız gerekmekiyor.
Bugünlük bu kadar! Gelecek hafta daha ismini açıklamadığımız Immersion Pack’teki yeni özelliklere göz atacağız.