Bu kılavuzda, sorunsuz bir kullanıcı deneyimi için Android cihazlarda oyun performansını analiz etme ve optimize etme süreci açıklanmaktadır. Performans darboğazlarını belirleme, CPU ve GPU sorunlarını ayırt etme ve optimizasyon sonuçlarını doğrulama konularını kapsar.
Bir oyun ne kadar eğlenceli veya ilgi çekici olursa olsun mobil cihazlarda iyi çalışmıyorsa oyuncular oyundan keyif almaz ve oyun başarılı olmaz. Eğlenceli oyunlarda bile saniyedeki kare sayısının (FPS) düşük olması veya cihazın aşırı ısınması gibi sorunlar yaşanabilir. Bu sorunlar, oyuncuları mutsuz eder. Bu nedenle, oyun performansını iyileştirmek çok önemlidir ve nasıl optimize edeceğinizi anlamanız gerekir.
Performans optimizasyonu süreci aşağıdaki adımları içerir:
Genel oyun performansını ölçme. Anormallikleri belirlemek için performanstaki düşüşü sahne bazında ölçün.
CPU ve GPU sınırlı kontrolü. Temel nedenin CPU'ya bağlı mı yoksa GPU'ya bağlı mı olduğunu belirleyin.
Araçlar: Unreal Insight, Unity Profiler, Perfetto ve performans ölçümü araçları.
CPU optimizasyonu. Belirlenen performans sorunlarını düzeltin.
Araçlar: Unreal Insight, Unity Profiler, Perfetto ve Simpleperf.
GPU optimizasyonu Belirlenen performans sorunlarını düzeltin.
Araçlar: RenderDoc, Arm mobile studio, AGI, tedarikçiye özel araç.
A/B testi Uygulanan optimizasyonların etkinliğini titizlikle doğrulamak için A/B testi yapın.
Araçlar: Unreal Insight, Unity Profiler, Perfetto ve performans ölçüm araçları, CPU veya GPU frekans kilidi ve RenderDoc.
Bu yinelemeli süreç (1-5), hedeflenen FPS ve termal parametreler başarıyla elde edilene kadar devam eder.
Ön koşullar
Android destekli bir cihazda test etmeye hazır bir oyun derlemeniz olmalıdır.
Aşağıdaki araçları yükleyin:
Kapsamlı oyun performansını analiz etme
Oyunun genel performansını kontrol etmeli ve sahne tabanlı performans düşüşlerini veya anormallikleri belirlemelisiniz. Oyununuzu optimize etmeden önce mevcut performansını kontrol edin. Oyunlar birçok kullanıcı arayüzü ve sahne içerdiğinden, sahne başına performans düşüşünü ve CPU veya GPU kullanımını izlemek için yüksek CPU ya da GPU kullanımına sahip sahneleri veya beklenmedik şekilde performans gösteren düzenleri analiz edin.
- Performans düşüşünü ölçün: Oyunun genel performansını ölçmek için performans ölçüm araçlarını kullanın. Bozulma veya anormalliklerin olduğu belirli alanları belirlemek için performansı sahne bazında ölçün.
- Sorunlu sahneleri belirleme: CPU veya GPU kullanımının yüksek olduğu ya da ekran düzenlerinin beklenen performansı vermediği sahneleri bulmak için verileri analiz edin.
- İzleme verilerini toplama: Belirlenen sorunlu sahneler için ayrıntılı performans verileri toplamak üzere izleme araçlarını kullanın.
CPU veya GPU darboğazlarını belirleme
Oyun hedef FPS'ye ulaşmıyorsa CPU'ya mı yoksa GPU'ya mı bağlı olduğunu belirleyin. Cihaz oyun oynarken ısınsa veya çok fazla güç kullansa bile optimizasyon fırsatlarını bulmak için CPU ve GPU davranışını analiz etmek çok önemlidir. Sistemin CPU'ya bağlı mı yoksa GPU'ya bağlı mı olduğunu öğrenmek için çeşitli yöntemler kullanabilirsiniz.
İz verilerini analiz edin: İz verilerini analiz etmek için tercih ettiğiniz aracı kullanın:
- Unreal Insight (Unreal Engine): İzlemeyi analiz ederek
GameThread,RenderThreadveRHIThreadiçin zamanlamayı görün.GameThreadveyaRenderThread, kare süresi sınırını (örneğin, 30 FPS için 33,3 ms) aşarsa oyun CPU'ya bağlıdır.RHIThreaduzun süreli yürütme sergiliyorsa veya kare süresinin büyük bir bölümünü oluşturuyorsa oyun GPU'ya bağlıdır.
Şekil 2. GameThread, RenderThread ve RHIThread ile Unreal insight izleme (büyütmek için tıklayın). - Unity Profiler (Unity): Ana iş parçacığı,
Gfx.WaitForPresentOnGfxThreadgibi işaretçilerde önemli ölçüde zaman harcarken oluşturma iş parçacığıGfx.PresentFrameveya<GraphicsAPIName>.WaitForLastPresentgösteriyorsa oyun GPU'ya bağlıdır.
Şekil 3. Unity Profiler için GPU sınırlı örneği (büyütmek için tıklayın). - Perfetto: CPU çekirdek atamalarını ve iş parçacığı yürütme ayrıntılarını analiz edin. Bu analiz, iş parçacığı yürütme bilgilerinin ayrıntılı bir şekilde incelenmesiyle performans darboğazlarının belirlenmesini kolaylaştırır.
CPU yükü: İzleme,
GameThreadveRenderThreadüzerindeki iş yükünün VSync ile birlikte RHI iş parçacığınınQueuePresentbölümündeki gecikmelerden sorumlu olduğunu gösteriyor. Bu da CPU'ya bağlı bir senaryo olduğunu gösteriyor.
Şekil 4. CPU yürütme ayrıntılarını içeren Perfetto izleri (büyütmek için tıklayın). GPU ek yükü: GPU tamamlama süresi, kare süresi sınırını (ör. 25 ms) aşıyorsa oyun GPU'ya bağlıdır. İzleme, GPU tamamlanmasının 25 ms'yi aştığını gösteriyor. Bu da GPU'nun sınırlı olduğu bir senaryoyu ifade ediyor.
Şekil 5. GPU ek yüküyle ilgili Perfetto izleri ayrıntıları (büyütmek için tıklayın).
- Unreal Insight (Unreal Engine): İzlemeyi analiz ederek
Unreal Engine stat komutlarını kullanma:
stat unit: Game, Draw ve RHI iş parçacıklarına ayrılan süreyi karşılaştırın. Oyun ve çizim süreleri düşük olmasına rağmen RHI süresi sürekli olarak kare süresi sınırını aşıyorsa oyun GPU'ya bağlıdır. Örneğin, gerekli FPS 30 ise (kare başına 33,33 ms'ye eşdeğer) ve hem Game hem de Draw iş parçacıkları sürekli olarak 10-15 ms aralığında kalmasına rağmen RHI sürekli olarak 30 ms'yi aşıyorsa bu durum, GPU'nun sınırlı olduğu bir senaryoyu işaret eder.
Şekil 6. Stat birimi, GPU'ya bağlı koşulların tahmin edilmesini kolaylaştırır. stat VulkanRHI: Sıraya gönderme ve sıraya sunma sürelerini kontrol edin.
Şekil 7. Stat VulkanRHI, GPU ile sınırlı koşulların tahmin edilmesini kolaylaştırır (büyütmek için tıklayın). stat slow: Engelleri belirlemek için Oyun, Oluşturma ve RHI ileti dizilerine ayrılan süreyi inceleyin.
Performans metriklerini kontrol edin: Kapsamlı oyun performansı analizi sonuçlarını kullanın. Android'de:
- CPU sınırlı: GPU kullanımı ve FPS düşükken CPU (normalleştirilmiş) kullanımı %15'ten yüksek.
- GPU sınırlı: GPU kullanımı %90'dan fazla.
Genellikle, FPS ve GPU kullanımı düşükken CPU kullanımı %15'i aşıyorsa durum CPU sınırlı olarak kabul edilebilir.
Şekil 8. CPU ve GPU kullanımını içeren performans metrikleri.
CPU performansını optimize etme
Analiz, oyunun CPU ile sınırlı olduğunu gösteriyorsa darboğaza neden olan belirli iş parçacıklarını veya API'leri belirlemek için daha ayrıntılı bir inceleme yapın.
Ayrıntılı bilgi için Android'de CPU ve GPU Optimizasyonu İpuçları başlıklı makaleyi inceleyin.
GPU performansını optimize etme
Analiz, oyunun GPU ile sınırlı olduğunu gösteriyorsa oluşturma işlem hattını ve çekim çağrılarını analiz etmek için kare hata ayıklayıcıları kullanarak daha ayrıntılı bir inceleme yapın.
Ayrıntılı bilgi için Android'de CPU ve GPU Optimizasyonu İpuçları başlıklı makaleyi inceleyin.
Optimizasyonun etkinliğini doğrulama
- A/B testi yapın: Uygulanan optimizasyonlarla bir derleme oluşturun.
- Performansı ölçme: Optimize edilmiş derlemenin performansını ölçmek için ilk analizdeki araçları ve yöntemleri kullanın.
- Sonuçları karşılaştırın: Belirlenen darboğazların çözüldüğünü ve FPS ile termal hedeflerin karşılandığını doğrulamak için yeni performans verilerini ilk verilerle karşılaştırın.
- Tekrar etme: Performans elde edilene kadar analiz ve optimizasyon adımlarını tekrarlayın.