Fortnite Android’e Çıkışı Üzerine Teknik Altyapı

9 Ağustos tarihinde, Samsung’daki ortaklar ile seçilen bir dizi cihaz için Fortnite’ın Android Betası’nı piyasaya sürülmüştü. Birkaç gün sonra, pek çok telefon üreticisine ait Android cihazların sahiplerine davetiyeler göndermeye başlandı. Beta etkinliği sayesinde performans, güvenlik, cihaz uyumluluğu ve Fortnite Yükleyicisi’nin Android’de Fortnite deneyimini sunma kalitesine dair pek çok şey öğrendik. Şimdi birlikte beta başlangıcı ardındaki teknik detaylardan, üzerinde çalışılan şeylerden ve Android’i yakın gelecekte görülen yerinden bahsedeceğiz.

İstatistikler

Fortnite’ın Android için piyasaya çıkmasından sonra geçen 21 günde, ilgi muazzam ölçüde yüksekti. 23 milyondan fazla oyuncu Android betasına katıldı, 15 milyondan fazla oyuncu uygulamayı yükledi. Android için hâlâ davetlilere açık aşamada olsa da, oyunculara davetleri iOS betasında yapılan benzer bir şekilde keserek oyunu herkese açılacak.

Donanım,Optimizasyon

Teknoloji Alanındaki Gelişmelere Giriş

Platformlar arası oynanışı desteklerken, aynı oyunu tüm platformlar için piyasaya sürmek kolay olmasa gerek. Çoğunlukla, bir oyunu mobil cihazlara uygun hale getirmeye çalışırken, içeriği ve hatta dizaynı bile, platformun performans sınırlamaları dahiline sığdırabilmek için basitleştirmek gerekir. Örneğin, cisimleri kameraya yaklaştırarak çizim taleplerinin sayısını azaltabilirsiniz. Fortnite’ta, Android oyuncuları PC ve konsollarda oynayan arkadaşlarıyla aynı maçta olabiliyorlar. Bu yüzden oynanışa etki eden hiçbir şeyi oyundan kaldırılamazdı.

Android’de Piyasaya Çıkış Hikâyesi

2018 Ocak ayından bu yana önemli bir ekiple Fortnite Battle Royale’in Android sürümü üzerinde çok sıkı çalışılıyor. Her ne kadar Android’de Fortnite’ı mümkün kılmak için yapılan çalışmaların büyük kısmını görselleştirme performansına, dengeliliğine ve bellek kullanımına ayırılmış olsa da, Android cihazların donanım, işletim sistemi sürümleri ve sürücü çeşitleri aşmak zorunda olunan en büyük sorundu.

İş ortaklarıyla birlikte çalışmak bu anlamda Fortnite’ı Android’e getirmek için son derece önemliydi. Onların bilgileri, uzmanlıkları ve çalışkanlıkları olmadan, bunların hiçbiri mümkün olamazdı.

Ek olarak, Fortnite’ı denemek ve optimize etmek için ARM, Qualcomm, Imagination Technologies, Razer, HiSilicon ve pek çok başka firmanın da aralarında olduğu birçok başka ortağımızla da birlikte çalışma fırsatı bulundu.

Cihaz Desteği

Android ekosistemi pek çok farklı üreticinin imzasını taşıyan telefonlardan oluşur. Tüm telefonlar bir Yongada Sistem devresi üzerine tasarlanır. Bu devre tümleşik olarak bir işlemci ve grafik işlemci yapılandırması içerir. Şu anda desteklenen cihazların %71’ine güç veren, Adreno grafik işlemcili Qualcomm Snapdragon ve ARM Mali grafik işlemcili Samsung Exynos, MediaTek MT serisi, HiSilicon Kirin gibi yaygın olarak kullanılan pek çok Tek Yongada Sistem ailesi vardır. Her cihaz Android’in hafifçe değiştirilmiş bir sürümü yüklü olarak gelir ve pek çok üretici zamanlayıcı ve güç yönetimi gibi yazılımları özelleştirmeyi tercih eder. Aynı grafik işlemciye sahip cihazlar da farklı grafik sürücüleri yüklü olarak gelir. Özetle, aynı donanım altyapısını paylaşan cihazlar farklı performans niteliklerine sahip olabilir ve farklı yazılım hatalarına maruz kalabilir.

Yüksek sistem gereksinimlerine sahip Beta sürümünü deneyen Fortnite oyuncularının %92’den çoğunun Android 8 (Oreo) veya daha yeni bir sürüm, yaklaşık %8’inin Android 7 (Nougat) ve %0,5’ten az bir kısmınınsa 2015 veya öncesinde çıkmış bir Android sürümü kullandığını görüyoruz. En az 2 yıllık cihazlarda yeni Android sürümlerinin kullanımında inanılmaz bir düşüş mevcut. Bu cihazlar için üreticilerin özelleştirilmiş güncellemeler yayınlaması ve pek çok durumda dünya çapında çeşitli servis sağlayıcılarla birlikte çalışarak güncellemelerini geliştirip kullanıcılara sunmaları gerekiyor.

Bunun yanında Adreno 54x ve Mali G72 gibi bir dizi grafik işlemci profilleri bulunuyor. Bu grafik işlemci profilleri cihazdaki donanıma en uygun performans profilini seçmenin yanı sıra telefondaki donanıma uygun iyileştirmeleri ve çözümleri etkinleştirebilmeyi sağlıyor. Son olarak, Samsung Galaxy Note 9 Adreno ve Google Pixel 2 XL gibi cihaza özel profiller de var. Bu son cihaz profili katmanı gerekli yerlerde cihaza özel daha fazla çözüm ve iyileştirme sunabilmeyi sağlıyor. Hangi cihaz profilinin kullanılacağını belirlemek için Fortnite açılırken cihaz modeli, işletim sistemi sürümü ve grafik sürücüsü sürümü gibi özellikleri inceleniyor.

Görüntü Oluşturma Performansı

Görüntü oluşturma esnasında işlemci kullanımı, stabil bir kare hızı elde etmemizin önündeki en büyük engeldi. Android üzerinde grafik sürücüsünde harcanılan işlemci süresi PC, konsol ve iOS platformlarına oranla çok daha fazla. Galaxy S9’un Adreno sürümü gibi Android cihazlar kare başına 1500’den fazla çizim talebini cevaplayabilirken eski cihazlar bunun çok daha azını yapabiliyor. Desteklenilen orta segment cihazlar ortalama 600, düşük özellikli cihazlar ise yaklaşık 400 çizim talebi cevaplayabilmeliler.

Kare başına oluşturulacak nesne sayısını bu sene başında iOS’a geliştirme yaparken zaten oyun deneyimini etkilemeyecek en düşük seviyeye indirmiş olunduğundan başka özellikler üzerine yoğunlaşıldı. Çizim taleplerini dinamik olarak, örneklenen çizim taleplerine harmanlama denendi. Bazı kazanımlar elde edebilebilmeye rağmen sağladığı avantaj, oluşturduğu karmaşık kod yapısına değmezdi.

OpenGL görüntü oluşturucu üzerinde yaptığımız iyileştirmeler bize ufak kazanımlar sağlasa da en büyük kazanımlardan biri olan öykünmüş tekdüzen arabellekler, bellek optimizasyonlarımızın bir parçası olarak ortaya çıktı. Sabit arabellekler olarak da bilinen bu özellik, aslında UE4’ün yıllardır desteklediği ve tekdüzen arabellekleri desteklemeyen OpenGL ES2 cihazlarda kullanılan bir kod yoluydu. Nasıl işlediğine bir bakalım. Gölgelendirici derlemesi süresinde gölgelendirici için gereken tüm değişmezleri tespit ediliyor ve onları gölgelendiricinin okuyacağı bir diziye paketleniyor. Aynı zamanda oyun motoruna değişmezleri tekdüzen arabelleklerin neresinden çekeceğini ve değişmezler dizisinde nereye yerleştireceğini gösteren bir eşleme tablosu sunuluyor. İşleyiş esnasında tekdüzen arabellekleri işlemcinin erişilebilir belleğinde tutuyor, eşleme tablosu kullanarak geçici bir arabelleğe kopyalıyor ve tek bir glUniform4fv fonksiyon çağrısıyla tüm değişmezleri yükleniyor.

Sürücünün de kendi içinde benzer bir işlem yapıyor olması ve bizim uygulamanın iş yükü göz önünde bulundurulduğunda daha hızlı çalışıyor olması da ihtimal dahilinde. Aynı zamanda daha az kaynak oluşturup başlanılan için sürücü bu arabelleklerin sayımını yapmaya ve yaşam süresini düzenlemeye daha az zaman harcıyor olabilir. Her ne şekilde olursa olsun, bu kod yolu sürücüde harcanılan süreyi bazı durumlarda %10-15 oranında azalttı.

Vulkan

Vulkan, yüksek performans ve donanıma alt düzeyde erişim için tasarlanmış yepyeni bir Android görüntü API’ıdır. 2016’da Samsung’la ortak çalışarak Android üzerinde yüksek performanslı bir görüntü API’ı ile neler yapılabileceğini gösteren ProtoStar adında bir demo oluşturuldu. Fortnite, kare başına pek çok nesne çizimi gerektirdiğinden Vulkan ile tabiatları uyuşuyor gibi görünüyor. Fakat maalesef iş bununla bitmedi.

Vulkan desteği henüz Android’de bir gereksinim olmadığından tüm ekosistemde kullanılıyor olduğunu varsayarak ona bel bağlayamayız. Sadece nispeten güncel donanımları hedefliyor olunduğundan bu durum ilerleyişe mani olmadı fakat bu sefer de eski Vulkan sürücülerinde bir takım hatalara ve performans sorunlarına rastlandı. OpenGL, pek çok cihazda Vulkan’a nazaran daha hızlı ve stabil çalışıyordu. Sektörün OpenGL sürücülerini iyileştirip geliştirmek için on yıldır çalışıyor olduğunu düşünürsek aslında bu durum o kadar da şaşırtıcı değil. Vulkan daha karmaşık bir API ve OpenGL ile aynı olgunluğa ulaşması biraz vakit alacak.

Samsung S9+ (Adreno) ve Note 9 (Adreno) için Vulkan desteği sunuldu. Samsung mühendisleriyle yakın çalışarak UE4’ün Vulkan desteğinin OpenGL’den ortalama %20 daha hızlı olmasını sağlandı.

Bellek

Bellek, hâlâ üzerinde uğraşılan bir sorun. Sadece tam teşekküllü bir konsol oyununu mobil cihazlar için sunmakla kalmıyor, oyuna sürekli yeni içerik ekleniyor. Hal böyle olunca da devamlı bellek iyileştirmeleri üzerine çalışılıyor. Android, diğer platformlara nazaran benzersiz zorluklara sahip.

Hedef edinebilecek bellek sınırı belli değil. Her cihaz farklı miktarda belleğe, arka planda çalışan farklı tür uygulamalara ve bir uygulama yüksek bellek kullandığında ne zaman sonlandıracağına dair farklı olabilecek kurallara sahip. Bu bellek sınırını sorgulayacak bir API yok. Referans veri elde etmek için bellek testlerinden birinde maça girildi ve işletim sistemi programı sonlandırana kadar ayrılan bellek yükseltildi. Yeniden başlatılan cihazlarda herhangi bir uygulama açmadan yapılan bu testte Samsung Galaxy S8 (Mali) 4GB belleğinin 3GB’ını ayırabildi, sonrasındaysa uygulama kapandı. Google Pixel 2 üzerinde ise 3,6GB belleğin sadece 1,8GB’ı ayrılabildi.

Sistem, özellikle de grafik sürücüsü çok fazla bellek ayırıyordu. UE4 işletim sisteminden talep edilen tüm belleği, grafik işlemci için ayrılan belleği de yaklaşık olarak hesaplayarak takip ediliyor fakat sürücünün ayırdığı belleğin detaylarını tam olarak görülemiyor. Yapılan denemelerin sonucunda sürücünün Fortnite için ayırdığı belleğin çoğunun gölgelendiriciler için olduğunu görüldü.

Fortnite’ta çok çeşit gölgelendiricler var. Sıradan bir oyun oturumunda oyun motoru yaklaşık 2.000 adet gölgelendirici programı kullanıyor. Sürücü, bu gölgelendirici programların her biri için meta veri tutuyor gibi görünüyor ve bu da belleğe hatırı sayılır derecede bir yük bindiriyor. Fortnite’ta öykünmüş tekdüzen arabellekleri kullanarak 400MB’tan fazla bellek tasarruf edildi.

Gelecek – Sonraki Adımlar

Adroid Performansı

Şu anda oyunun desteklenen mevcut cihazlarda iyi bir şekilde çalışmasını sağlamaya ve hem görsel kaliteyi, hem de dengeliliği geliştirmeye olanak tanıyacak kadar çok bellek kurtarmaya çalışılıyor. Sonra başka uyumluluk sorunları üzerinde çalışılacak. Örneğin ses sorununu 5.40 yamasında çözülmüş ve daha fazla cihaza destek vermek için geniş bir alan açılmıştı. Ayrıca kullanıcılara cihaz üzerinde ayarlamalar yapabilecekleri daha detaylı bir kontrol şansı vermeyi ve kaliteyle performans arasında seçim yapma olanağı sağlanacak.

Vulkan desteğini geliştirmeye devam edilecek, zaman içinde daha fazla cihaz desteklenecek. Bu da optimizasyon anlamında, hem UE4 hem de sürücüler üzerinde cihaz üreticileriyle birlikte çalışmaya devam edilmesi anlamına geliyor. Vulkan desteğini ve sürücülerini geliştirmek için yapılan zaman yatırımı, Android platformuna çıkan UE4 oyunları için oyunculara daha iyi performanslar sunmayı sağlayacak.

Daha eski ve yavaş telefonlar üzerindeki çalışmalar da sürecek ancak fazla geriye gitmek pek kullanışlı olmaz. Her yıl, son teknoloji telefonlar, bir sene öncesinin son teknoloji telefonlarından %50 daha hızlı hale geliyor. Fortnite iki yıllık telefonlarda kabul edilebilir, bir yıllık telefonlarda iyi, bu sene piyasaya çıkmış telefonlardaysa harika bir performansla çalışıyor. Bu hızla gidildiğinde, Fortnite’ın önümüzdeki yıl çıkacak telefonlarda nasıl bir performansla çalışacağını düşünsenize!

Son olarak, oyun motoru üzerinde yapılan pek çok iyileştirme UE4 4.20 sürümüyle çıktı bile. Geri kalan iyileştirmeler önümüzdeki 4.21 sürümüyle sunulacak ve gelecekte yapılacak iyileştirmeleri tüm UE4 geliştiricileri ile paylaşmaya devam edilecek.

Kötü Amaçlı Yazılımlarla Savaş!

Fortnite’ın Android için de piyasaya sürüleceği duyurulmasının öncesinde bile, “Android’de Fortnite” konulu yetkisiz internet sitelerinin ortaya çıkmıştı bile. Bu sitelerin çoğu kötü amaçlı yazılım veya dolandırıcılık faaliyetleri barındıran siteler. Bu internet sitelerinin farkına vardıkça sitelerle ve bağlı oldukları hosting (barındırma) hizmeti sağlayıcılarıyla iletişime geçerek bu içeriklerin kaldırılması için çalışılıyor, bu sitelerin tanıtımını yapan her türlü reklam veya videoya da erişimi engellemek için çalışmalar yürütülüyor. İnternet sitesi kötü amaçlı yazılım yayıyor olsun olmasın, Android’de Fortnite konulu her türlü dağıtım ve dağıtım iddiasını yetkisiz olarak değerlendiriliyor. Android’de Fortnite için tek geçerli kaynak Epic’in Fortnite Yükleyicisi üzerinden sunulan hizmettir.

Şimdiye dek, Epic pek çoğunun aynı kötü niyetli çevreler tarafından yönetildiği görülen, “Android’de Fortnite” konulu 47 yetkisiz internet sitesine yaptırım uygulattı. Bu konuda, bu siteleri kapattırmaya çalışmak veya sahtecilikle mücadele alanında çalışan (İnternet servis sağlayıcıları, tarayıcı firmaları ve antivirüs yazılımı firmaları gibi) firmalardan oluşan geniş iş ortakları ağımız sayesinde erişimi kısıtlamaya çalışmaya devam edilecek. Bu firmalar tarayıcı içinde görüntülenecek şu şekilde uyarılar tasarlayabiliyorlar: 

Kötü Amaçlı Yazılımlara Karşı Savaş
Kötü Amaçlı Yazılımlara Karşı Savaş!

Sonuç

Android’de Fortnite sektörün pek çok anlamda ilklerini temsil ediyor. Fortnite, Android’e platformlar arası desteği ve uyumluluğu tam anlamıyla sağlanmış ilk konsol ve PC oyunu olmanın yanı sıra, Google Play Store dışında çıkıp indirme rekorları kıran ilk oyun oldu. İnanılmaz bir girişim ve öğrenme süreci geçirmiş olsa da, oyunun 15 milyonun üzerinde Android kullanıcısı tarafından hızla benimsenmiş olması bu yaklaşımın doğru olduğunu ve son derece başarılı olabileceğini gösteriyor. En önemlisi de, Android’de Fortnite için yapılan tüm teknik çalışmalar, 4.21 sürümüne sahip tüm Unreal Engine geliştiricileri için de kullanılabilir olacak. Böylece tüm çalışmalardan herkes faydalanabilecek.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir