Ara

Unreal Engine’da Takılmalara Karşı Büyük Av: Geliştiricilere Kilit İpuçları!

Geçtiğimiz günlerde Florida'nın Orlando kentinde düzenlenen Unreal Fest 2025'te, Kıdemli Unreal Engine Yazılım Mühendisi Ari Arnbjörnsson, PC oyuncularının korkulu rüyası takılma (stuttering) sorununa adanmış bir sunum gerçekleştirdi. Son yıllarda çıkan birçok yeni Unreal Engine oyununun PC platformunda takılma ve donmalarla boğuştuğuna defalarca şahit olduk. Peki Epic Games bu sorunlara karşı neler yapıyor?

Arnbjörnsson'un 'Büyük Takılma Avı' (The Great Hitch Hunt) başlıklı sunumu, bu sorunu ele alırken geliştiricilere yönelik en iyi uygulama önerilerini de beraberinde getirdi. Bir cadı avcısı kostümüyle sahneye çıkan Arnbjörnsson, diğer geliştiricileri 'takılmaları avlamaya' teşvik etti.

Arnbjörnsson, takılma ve donmaların yedi ana nedenini belirledi. Bunlardan ilki olan 'Seviye Akışı' (Level Streaming), oyun dünyasının bölümlerinin yüklenmesi veya kaldırılmasıyla ilgili bir dizi takılmayı içeriyor. Mühendise göre, yaygın bir neden statik geometri için statik mesh aktörlerinin yanlış kullanılması. Birçok geliştirici ve seviye tasarımcısı, masalar, kitaplar, çatal-bıçak takımı gibi birçok statik mesh aktörünü oyuna dahil ediyor. Bu durum küçük oyunlar için sorun olmasa da, büyük veya AAA kalitesindeki dünyalar için hafıza yükü ve çöp toplayıcı tarafından taranma gerekliliği nedeniyle felaket olabilir.

Arnbjörnsson, bunun yerine örneklendirilmiş statik mesh'ler (ISM) veya hiyerarşik örneklendirilmiş statik mesh'ler (HISMs) kullanılmasını öneriyor. Paketlenmiş seviye aktörleri özelliği de birçok statik mesh'i daha az aktörde birleştirerek yükü azaltmak için kullanılabilir. Mühendis ayrıca, statik mesh aktörlerini çalışma zamanında örneklendirilmiş mesh'lere dönüştüren deneysel Unreal Engine 5.5 Cell Transformers özelliği ve Unreal Engine 5.6 ile gelen deneysel akış performansı iyileştirmeleri gibi Epic'in seviye akışı takılmalarını iyileştirmek için yaptığı çalışmaları da paylaştı. Bu deneysel özellikler varsayılan olarak etkin değil ancak hazır olduklarında aktif hale gelecek.

Takılmaların ikinci ana nedeni 'Fizik' olarak belirlendi. İçerik ekipleri genellikle fizik optimizasyonunu göz ardı ediyor. Unreal Engine 5'in Nanite teknolojisi, geliştiricilerin karmaşık mesh'leri zahmetsizce kullanabileceği yanılgısını yarattı ancak durum böyle değil. Mümkün olduğunca karmaşık fizik şekilleri yerine, basit çarpışma şekilleri (en hızlıdan en yavaşa doğru: küreler, kapsüller, kutular ve en son çeyrek poligonlar) kullanılmalı. Etkileşimde bulunulamayan uzak nesneler tamamen devre dışı bırakılmalıdır. Chaos Visual Debugger, fizik kaynaklı performans sorunlarını gidermek için ek bir yardımcı araç olarak öne çıkıyor.

Epic'in bu alandaki çalışmaları hakkında Arnbjörnsson, Unreal Engine 5.5/5.6'da bulunan ve hala deneysel aşamada olan Async Physics Initialization'a dikkat çekti. Bu özellik, fizik hesaplamalarını oyun iş parçacığından ayırıyor ancak mühendis henüz hazır olmadan bu özelliği kullanmamayı tavsiye etti. Ayrıca, bu özelliğin fizik sahnesi büyüdükçe sorunu daha da kötüleştirebileceği konusunda uyardı. Fizik sahnesinin boyutunu yönetmek, geliştiriciler için öncelikli bir konu olmaya devam ediyor. Epic, daha iyi çoklu iş parçacığı ve diğer optimizasyonlarla Chaos fiziğini sürekli olarak geliştiriyor.

Ardından 'Aktör Eşzamanlı Yükleme' (Actor Spawning) takılması geliyor. Birçok bileşene sahip karmaşık aktörler (iskelet mesh'leri, animasyonlar) birkaç milisaniyede yüklenebilir ve özellikle birden fazla aktör aynı anda yüklendiğinde fark edilebilir çerçeve düşüşlerine neden olabilir. Çerçeve başına yüklenen aktör sayısını sınırlamak, iskelet animasyonu gibi bileşenlerin yükleme sonrası eşzamanlı olarak çalışmasını geciktirmek ve mümkün olduğunda aktörleri yok etmek yerine yeniden kullanmak (pooling) bu sorunları çözmek için önerilen yöntemler arasında.

Arnbjörnsson, birçok geliştiricinin aktör havuzlamanın (actor pooling) standart bir Unreal Engine özelliği olarak eklenmesini talep ettiğini belirtti. Bu konu araştırılsa da, günümüzde sadece oyun geliştiricileri tarafından değil, birçok sektörde kullanılan Unreal Engine'ın her aktör türünü her proje için desteklemesi oldukça zor. Bu nedenle geliştiricilerin, aktör türüne özel özel havuzlar oluşturmaları daha uygun olacaktır.

Dördüncü neden, muhtemelen PC oyunlarındaki en yaygın takılma örneği olan 'Pipeline State Object' (PSO) derlemesidir. DirectX12, Vulkan ve Metal gibi modern düşük seviyeli API'ler, oluşturmadan önce tamamen derlenmiş gölgeler (shaders) gerektirir. Konsollar için bu bir sorun teşkil etmez çünkü hepsinin aynı donanım yapılandırması vardır. Ancak PC ve mobil cihazlarda tüm derlenmiş permütasyonları göndermek imkansızdır ve gölgeleri çalışma zamanında derlemek kaçınılmaz olarak takılmalara neden olur. Oyunlar, bir PSO önbelleği kullanarak önceden derleme yapmaya çalışsa da, bu özellikle açık dünyalar veya prosedürel içerikler için kusurlu ve zordur.

PSO ön önbelleğe alma (PSO precaching) Unreal Engine 5.3 ile tanıtıldı ve her zaman kullanılmalıdır, ancak tek başına yeterli değildir. Arnbjörnsson, geliştiricileri kendi PSO derleme stratejilerini hazırlamaya ve ayrıca oluşturduğu PSO Cache Buster eklentisi ile oyunlarını profillemeye teşvik etti. Epic, PSO ön önbelleğe almayı daha da iyileştirmek için çalışmaya devam ediyor. Artık ana Unreal Engine örnek projeleri ve Fortnite'ın tüm kod yolları yakalanmış durumda.

Beşinci neden 'Çöp Toplama' (Garbage Collection) takılmasıdır. Çok fazla kullanılmayan UObject örneği olduğunda çöp toplayıcının aşırı zaman alması ve takılmalara neden olması durumunda ortaya çıkar. Bu nedenle geliştiriciler, UObject sayısını yönetilebilir seviyede tutmalı ve takılma sivri uçlarından kaçınmak için çöp toplama işlemini stratejik olarak zamanlamalıdır. Epic'in mühendisleri, çöp toplayıcının işini birden fazla çerçeveye yaymak için şu anda deneysel olan Incremental Reachability Analysis özelliğini üzerinde çalışırken, gelecekte istemci derlemeleri için çoklu iş parçacığı güvenli artımlı GC'ye odaklanıyor.

Altıncı neden 'Eşzamanlı Yükleme Takılması' (Synchronous Loading Hitch) olarak adlandırılır ve engelleme yapan (eşzamanlı) varlıkların yüklenmesi, varlık yüklenene kadar oyun iş parçacığını durdurarak çok uzun süren takılmalara neden olduğunda meydana gelir. Bu, hiçbir koşulda izin verilmemelidir; yalnızca eşzamanlı olmayan yükleme kullanılmalıdır. Varlık doğrulayıcıları (Arnbjörnsson'un CommonValidators'ı gibi) engelleme yapan yük kullanımını tespit edebilir ve bazı stüdyolar önceden mavi taş bloklardan (blueprints) engelleme yapan yük düğümlerini tamamen kaldırdı. Epic ise, engelleme yapan yükler hakkında kullanıcıları bilgilendirmek için Unreal Engine'a uyarılar ve araçlar ekliyor. Yine de, biri gözden kaçarsa, UE5.4/5.5, takılma etkisini azaltmak için eşzamanlı kuyrukları kısmen temizleme yeteneği getirdi.

Son olarak, geliştiricilerin mavi taşlarda veya içerik betiklerinde çok fazla zamanlayıcı, çok fazla tick güncellemesi, şişirilmiş diziler veya ses/iskelet animatörlerinin sistemi aşırı yüklemesi gibi çok fazla iş yapmasıyla neden olunan 'Mavi Taş ve İçerik Takılmaları' (Blueprint and Content Hitches) bulunmaktadır. Uzak nesneleri taklit etme veya basitleştirme ve gereksiz tick ve zamanlayıcıları kapatma gibi düzeltmeler geliştirici tarafında yer alıyor. Unreal Engine üreticisi ise, geliştiricilerin performansı görselleştirmelerini ve optimize etmelerini kolaylaştırmak için bölge işaretleme ve ekran görüntüleri gibi özelliklerle Unreal Insights aracını genişletmeye devam ediyor.

Arnbjörnsson, kapanış konuşmasında, donanım ve yazılımdaki birçok gelişmeye rağmen oyun geliştirmenin hala sınırlamaları benimsemesi gerektiğini hatırlattı. Bu nedenle, en iyi sonuçları elde etmek için sıkı optimizasyon çalışması ve akıllı 'taklitçilik' hala çok önemlidir. Umuyoruz ki bu sunum, geliştiricilerin bu yaygın soruna gözlerini açmasına ve oyun deneyimlerimizi çok daha akıcı hale getirmesine yardımcı olacaktır.

Önceki Haber
Kuantum Teknolojisiyle Üretim Süreçlerine Devrim: Çip Tasarımında Yüzde 20 Verimlilik Artışı
Sıradaki Haber
PlayStation 5'in Güç Tasarrufu Modu: Performans Kaybı Endişesi ve Gizli Amaçlar

Benzer Haberler: