Europa Universalis IV’te Teknoloji Borcu

Europa Universalis IV geliştirici günlüklerinde bu hafta oyunun “teknoloji borcuna” dair bilgiler veriliyor.

Herkese merhabalar. Bu günlükte “teknoloji borcu” olarak adlandırılan oyun kodu geliştirmelerinden bahsedeceğiz. DDRJake’in de daha önceleri dile getirdiği üzere teknololoji borcu EU4 ekibinin Spain yaması sonrasında çıkarılan destek yaması 1.28.3’ün çıkışı sonrası önemli odak alanlarından birisi oldu. Geliştiricilerimiz bir yandan henüz duyurmadığımız devasa eklenti üzerinde planlar yaparken, biz programcılar olarak EU4’ün kod yapısını toplamaya koyulduk.

tidying_up.jpg
Microsoft kesinlikle Netflix ile bir ortaklığa gitmeli, böyle bir dizi olsa sabahtan akşama kadar izlerdim.

Şakayı bir kenara bırakırsak, geçmişte teknoloji borcu üzerinde çok şey anlatsak da özellikle programlamayla ilgisi olmayan kişiler için biraz kafa karıştırıcı bir tabir olduğunu farkettik.

EU4 GamesCon 2012’de duyurulduğunda esasında oyunun geliştirilişi 1 yıl kadar önce başlamıştı. Bu da EU4’ün kodlanmasına 8 yıl önce başlandığı anlamına geliyor. Pek tabi ki dönemin geliştiricileri oyunu tamamen baştan kodlamamışlar, oyunda EU3’ten bugün hala kullanmakta olduğumuz bazı kodlar yer alıyor. Bu kodların hangi kodlar olabileceğini tahmin etmek size kalmış durumda.

Tahmin edersiniz ki teknoloji her geçen gün ilerliyor ve yazılım mühendisliği bu işin bir istisnası değil. 10 yıl içerisinde geliştiricilik esasları hem endüstrinin yeni yollar keşfetmesi hem de oyunları çalıştıran yazılım ve donanım ekipmanlarının güncellenmesi itibariyle büyük bir değişim gösterdi.

10 yıl önces SSD’ler bu kadar yaygın değildi, 1080p nispeten yeniydi, DirectX 10 tanıtımları öfkeyle karşılanmıştı ve insanlar Windows Vista’dan nefret ettikleri için 32 bit XP kullanmaya devam ediyordu.

Bu durum EU4’ün bu zamana kadar 2000’lerden veya 2010’lardan kalma teknolojiler kullandığı anlamına gelmiyor. Zaman içerisinde mühendislerimiz oyunu yazılım itibariyle güncel tutmak için ellerinden geleni yaptı, ancak ne yazık ki bazı şeyler aralardaki boşluklardan sızmış durumda ve bu sızıntıların tamamına teknoloji borcu adı veriyoruz.

Bu zamana kadar yaptığımız değişikliklerden bazıları şu şekilde:

64 bit’e Geçiş

Daha önceki bir günlükte bahsettiğimiz üzere 32 bit EU4’ün geliştirilişi başladığında mantıklı bir karardı, ancak bugün standart 64 bit.

Bu değişiklikle birlikte EU4 32 bit uyumluluğu kaldıran önümüzdeki MacOS yamasıyla da çalıştırılabilecek ve daha fazla RAM kullanabilecek. Oyunun bellek kullanımını arttırmaya yönelik herhangi bir plan olmasa da, oyuna çok sayıda bölge ve ülke ekleyen modların daha rahat çalıştırılabileceğini söyleyebiliriz.

Rendering

Oyunlarımızın en öne çıkan özelliğinin grafikler olmadığını herkes biliyor. Europa Universalis masa oyunu özüne sadık bir biçimde harita üzerinde askerler (ve bazen filler) gösteriyordu. Öte yandan Imperator: Rome’a baktığınızda EU4’ün çıkışından beri grafik tasarımcılarımızın bazı yeni şeyler öğrendiğini farkedeceksiniz.

2xnk41.jpg

Boromir her ne kadar haklı olsa da, yaptıkları bazı geliştirmeleri EU4’te gerçekleştirmeyi başardık. Bunların en önemlisi bölgelerin renklendirilmesinin GPU’da yapılması, eskiden oyunlarınızdaki üzücü bordergore sınırlar CPU’nuz üzerinden yansıtılıyordu.

capture.PNG
Bakalım betadan alınan bu görselle mevcut oyun arasında 7 farkı bulabilecek misiniz?

Çökme Raporları

Bizim oyunlarımız asla çökmez, sadece taktiksel çıkışta bulunur. Bu olay yaşandığında tam olarak neden ve nasıl yaşandığını bilmek istiyoruz, bu durum QA çalışanlarımızın yaşananı tekrardan uygulayıp çökmeye sebep olan kod parçasını izole edebilmesini ve sorunun giderilebilmesini sağlıyor.

Mühendis ekibimiz yeni ve geliştirilmiş bir çökme raporlayıcı tasarladı, bu bize daha fazla veri sağlamanın yanı sıra problemleri de daha kolay çözebilmemizi sağlıyor. İlk olarak Linux ve MacOS üzerinde de çalışıyor, böylelikle bu platformlardaki sorunları daha iyi giderebileceğiz. Ayrıca oyuncunun bulunduğu mevcut yıl, aktif modlar veya bu zamana kadar kaç 6/6/6 varisin bir av kazasına kurban gittiği gibi ekstra verilerle yaşanan sıkıntıya neyin sebep olduğunu daha kolay anlayabileceğiz.

Açılış Süresi

Oyunun açılış süresini geliştirmek uzun zamandır yapmak istediğimiz şeylerden biriydi. Her ne kadar elimizdeki en iyi çözümü sunamasak da (en iyi çözüm Windows desteğini kaldırmak, oyun Linux ve MacOS’ta çok daha hızlı açılıyor) yine de yapabileceğimiz bazı şeyler bulduk.

Bunlardan en önemlisi birçok oyunun dosyalar, modlar veya eklentiler gibi 3. parti unsurları yüklemekte kullandığı PhysFS yazılımını güncellemek oldu. Her ne kadar Unix performansının yanına yaklaşmasa da, oyununuzun Windows’ta birkaç saniye daha önce açıldığını farkedebileceksiniz.

capture_1.PNG
Tecrübeli Bizans oyuncuları hızlı yeniden başlatma süresi sebebiyle Linux veya Mac’ı önermektedir.

Genel Performans

Oyunun hızı her zaman üzerinde çalışabileceğimiz bir husus. Her gece benchmark makinelerinde oyunu çalıştırarak ortalama hızın belli bir değerin altında olduğunu sağlamaya çalışıyoruz (şu anki üst limitimiz oyun içi gün adına 80ms)

Her ne kadar performansın zaman içerisinde gelişeceğini düşünseniz de (örneğin yeni donanım itibariyle), işin özünde oyunun hızı yeni eklentilerle düşerken zaman içerisinde geliştirmelerle kabul edilebilir noktalara çıkartılıyor.

Popüler bir yaklaşımdan farklı olarak oyunun yavaşlamasına sebep olan en önemli şey yeni mekanikler değil. Oyunun yavaşlamasına sebep olan ana etken yeni bölgeler ve ülkeler.

Şu şekilde düşünün, oyundaki her 2 ülke arasında her gün bazı şeylerin hesaplanması gerekiyor (ilişkiler, yaklaşım vs). Oyundaki her 2 bölge arasında, oyunun A ile B arasındaki yolu bilmesi gerekiyor. Buna ikinci dereceden, karesel programlama diyoruz. Oyunda X sayıda bölgeniz varsa, yapılması gereken işlem X’in karesi şeklinde. Bu durum oyundaki bölge sayısını 2 katına çıkarttığınızda işlem sayısının 2 katına değil, 4 katına çıktığı anlamına geliyor. Yıllar içerisinde yaptığımız çalışmalar neticesinde EU4 2000 bölgeden bugün 4000’den fazla bölgeye çıkmayı başardı.

Ancak unutmayın ki yazılım mühendisliğinde optimizasyondan bahsederken bir şeyi %0.1 hızlı yapmanız genel olarak iyi, %1 hızlı yapmanız harika, %10 hızlandırmanız ise oyundaki devasa bir hatayı gidermeyi başardığınız anlamına geliyor. Peki hal böyleyken oyunu nasıl hızlandırdığımızdan bahsedebiliriz? Yaptığımız değişiklikler neticesinde adım adım ilerlemeler katederek.

Bugünlük bu kadar, yazılıma dair daha fazla bilgi için daha pratik ayrıntılar sunduğum bloguma sizleri beklerim.

Önümüzdeki hafta daha klasik geliştirici günlüklerine geri döneceğiz, görüşmek üzere.

Yazar: Ali Alper Duman

Yayın Direktörü @ Strategyturk

Yorumla

STRATEGYTURK

Strategyturk'te strateji oyunlarından haberleri, yama notlarını, geliştirici günlüklerini ve daha birçok içeriği Türk strateji oyuncularına Türkçe bir biçimde sunuyoruz. Aynı zamanda yeni çıkan strateji oyunlarının ve eklentilerinin incelemelerini yapıyor, bu oyunlara dair sürekli olarak içerik oluşturuyoruz.

Sosyal medya sayfalarımızı takip ederek strateji oyunlarındaki gelişmelerden haberdar olabilirsiniz.

STRATEGYTURK TWITTER

Total War: Three Kingdoms'ta Çıkış Sonrası Eklentiler, Yamalar ve Modlama #totalwarthreekingdoms https://t.co/6fsuudzQ5b
Hearts of Iron IV'te 64-bit, Kod İyileştirmeleri ve Denizlerde Denge Değişiklikleri #hoi4 https://t.co/EGZ8KAZpyl

Strategyturk Flickr