Mir 2, Frame Pacing kitaplığını kullanarak oluşturma performansını iyileştirir

Mir 2: Return of the King

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

Bu oyun, Kore fantastik MMORPG'sinin temsilcisi olan Mir 2'nin duygularını 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 kitaplığını (Swappy) kullandı.

Android vitals'da yavaş oturumlar özelliği kullanıma sunuldu

Yavaş Oturumlar, 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 karekten 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 hedef kare süresinden 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ınıyor olabilir (termal kısıtlamaya neden olur) ya da oyun kare hızıyla cihazın ekran yenileme hızında uyuşmazlık olabilir.

Frame Pacing kitaplığı 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, kare hızlandırma kitaplığıyla oluşturma performansını nasıl iyileştirdi?

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

Şekil 1. Kare ilerleme hızlandırma kitaplığını entegre etmeden ö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. Frame Pacing kitaplığı 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ış
adım hızına neden oluyor.

Çerçeve Hızı Kitaplığı, geri basıncın oluşmasına izin vermek yerine uygulamaya bekleme süreleri ekleyerek senkronizasyon çitleri (EGL_KHR_fence_sync ve VkFence) kullanarak bu sorunu çözer. Bu bekleme süreleri, görüntüleme ardışık düzeninin yetişmesine olanak tanır. 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 Frame Pacing 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. Kare Hızı Kitaplığı entegre edildikten sonra Yavaş Oturum iyileştirmesi

Mir2, kitaplığı entegre ettikten sonra yavaş oturumların sayısını önemli ölçüde azalttı.

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

Frame Pacing kitaplığını kullanmaya başlama

Yerel oyun motorlarında Frame Pacing kitaplığını kullanma

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

Unity oyun motorunda Frame Pacing kitaplığını kullanma

Unity, Android Frame Pacing kitaplığını motoruna entegre etti. 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.

Unreal oyun motorunda Frame Pacing kitaplığını kullanma

Unreal 4.25 ve sonraki sürümler, Android Game Development Kit'in bir parçası olan Android Frame Pacing kitaplığını 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.