Mir 2, Swappy'yi kullanarak oluşturma performansını iyileştirir

Mir 2: Return of the King, Actoz Soft tarafından yetkilendirilmiş ve HK ZHILI YAOAN LIMITED tarafından Unity Engine kullanılarak geliştirilmiş yüksek kaliteli bir Legend IP mobil oyunudur.

Bu oyun, Koreli fantastik MMORPG'nin temsilcisi olan "Mir 2"nin verdiği hisleri mükemmel bir şekilde yeniden oluşturmakla kalmaz, ekipman toplama, büyük ölçekli kum saldırısı ve diğer temel oyun içerikleri gibi en popüler oyun içeriklerinin çoğunu da sunar.

Oyun, kare hızının kararlılığını artırmak, sorunsuz bir şekilde oluşturma sağlamak ve Android Vitals'ı (Yavaş Oturum metriği) önemli ölçüde artırmak için Android Frame Pacing API'yi (Swappy) kullandı.

Android Vitals'da Yavaş Oturum özelliği kullanıma sunuldu

Yavaş Oturum, Google Play Console'daki bir Android vitals metriğidir. Yavaş oturumlarda karelerin% 25'inden fazlası yavaştır. Aşağıdaki durumlarda kareler yavaş olarak kabul edilir:

1) 20 fps'de, önceki kareden sonraki 50 ms içinde sunulmaz. 2) 30 fps'de, önceki kareden sonraki 34 ms içinde sunulmaz.

Play zamanla kullanıcıları telefonlarında 20 FPS'ye ulaşamayan oyunlardan uzaklaştırmaya başlayacaktır.

Bir karenin ekranda geliştiricinin hedefinden daha uzun süre gösterilmesinin veya oluşturulmasının birçok nedeni vardır. Oyun CPU veya GPU'ya bağlı olabilir, aşırı ısınma nedeniyle termal durum kısıtlanmış olabilir ya da oyun kare hızı ile cihazın ekran yenileme hızı arasında uyuşmazlık olabilir.

Swappy nedir?

Swappy olarak da bilinen Android Frame Pacing kitaplığı, AGDK kitaplıklarının bir parçasıdır. Swappy, OpenGL ve Vulkan oyunlarının Android'de sorunsuz oluşturma ve doğru kare hızına ulaşmasına yardımcı olur.

Kitaplık, cihaz tarafından destekleniyorsa birden fazla yenileme hızını işler. Bu da oyuna kare sunma konusunda daha fazla esneklik sağlar. Örneğin, 60 Hz ve 90 Hz yenileme hızını destekleyen bir cihazda, saniyede 60 kare üretemeyen bir oyunun sorunsuz kalması için kare hızı 30 FPS yerine 45 FPS'ye düşürülebilir. Kitaplık, beklenen oyun kare hızını algılar ve kare sunum sürelerini buna göre otomatik olarak ayarlar.

Kare Hızı Kitaplığı, gereksiz ekran güncellemelerini önlediği için pil ömrünü de artırır. Örneğin, bir oyun 60 FPS'de oluşturuluyorsa ancak ekran 120 Hz'de güncelleniyorsa ekran her kare için iki kez güncellenir. Kare Hızı Ayarlama kitaplığı, yenileme hızını cihaz tarafından desteklenen ve hedef kare hızına en yakın değere ayarlayarak bu sorunu önler.

Mir 2, Swappy ile oluşturma performansını nasıl iyileştirdi?

Mir 2 (미르2: 왕의 귀환), kararsız oluşturma performansıyla ilgili bir sorun yaşıyordu. Bu sorun, Google Play'in% 20 eşiğinden çok daha yüksek olan 20 FPS kare hızı eşiğinde% 40 Yavaş Oturum deneyimine yol açıyordu.

Şekil 1. Swappy entegre edilmeden önce yavaş oturum metriği.

Mir 2 (미르2: 왕의 귀환), yüksek kaliteli grafiklere sahip bir oyundur. Bazı cihazlar, sabit FPS değerini koruma konusunda zorluklarla karşılaşmaktadır. Kare hızı dağılımı, birçok oturumun 20 FPS'den daha düşük FPS'de çalıştığını gösteriyor.

Şekil 2. Swappy entegre edilmeden önce oyunun FPS dağılımı.
Her grup, karelerinin% 75'inin grup etiketinden daha hızlı olduğu oturumların yüzdesini temsil eder.

Görüntü iş yükü, uygulama iş yükünden daha uzun sürdüğünde kuyruğa ek kareler eklenir. Bu durum, tekrar takılmalara neden olur ve arabelleğe alma nedeniyle ek bir kare gecikmesine yol açabilir.

Şekil 3. Uzun B karesi, A ve B olmak üzere 2 kare için yanlış ilerleme hızı sağlar.

Swappy kitaplığı, geri basıncın oluşmasına izin vermek yerine uygulamaya bekleme süreleri ekleyerek görüntüleme ardışık düzeninin yetişmesine olanak tanıyan senkronizasyon çitleri (EGL_KHR_fence_sync ve VkFence) kullanarak bu sorunu çözer. A çerçevesi hâlâ fazladan bir kare gösteriyor ancak B çerçevesi artık doğru şekilde gösteriliyor.

Şekil 4. C ve D çerçeveleri sunulmayı bekliyor.

Mir 2, Unity'nin yerleşik Optimize Frame Pacing özelliğinden yararlanarak Swappy kitaplığını kolayca entegre etti. Bu işlem, oluşturma performansında önemli bir iyileşme sağladı. Özellikle de Yavaş Oturum metriği %40'tan %10'a düştü.

Şekil 5. Swappy entegrasyonundan sonra yavaş oturum iyileştirmesi

Swappy'yi entegre ettikten sonra Mir2 için yavaş oturumların sayısı önemli ölçüde azaldı.

Şekil 6. Swappy entegre edildikten sonra oyunun FPS dağılımı.
Her grup, karelerinin% 75'inin grup etiketinden daha hızlı olduğu oturumların yüzdesini temsil eder.

Swappy'yi kullanmaya başlama

Swappy'yi yerel oyun motorlarında kullanma

Android Frame Pacing kitaplığını oyununuza entegre etmek için aşağıdaki kılavuzlara göz atın:

Swappy'yi Unity oyun motorunda kullanma

Unity, Android Frame Pacing'i motoruna entegre etmiştir. Bu özelliği Unity'de etkinleştirmek için Proje Ayarları > Oynatıcı > Android için Ayarlar > Çözünürlük ve Sunum bölümünde Optimize Edilmiş Kare Hızı onay kutusunu işaretleyin:

Şekil 7. Unity Engine'de kare hızını etkinleştirin.

Alternatif olarak, Unity'nin kare hızında daha az varyasyon olması için kareleri eşit şekilde dağıtmasına ve daha akıcı bir oyun deneyimi oluşturmasına izin vermek üzere mantık kodunuzda Optimize Edilmiş Kare Hızı seçeneğini programatik olarak etkinleştirebilirsiniz.

Swappy'yi Unreal oyun motorunda kullanma

Unreal 4.25 ve sonraki sürümler, Android Game Development Kit'in bir parçası olan Android Frame Pacing Library'yi entegre eder. Mobil kare hızlandırma makalesinde, Android kare hızlandırma kitaplığının nasıl etkinleştirileceği ve kare hızlandırmanın C++ kodundan nasıl kontrol edileceği açıklanmaktadır.

Daha fazla bilgi için Yavaş Oturumlar ve Swappy hakkında bilgi edinebilirsiniz.