Fortnite, adalarının desteklenen tüm platformlarda çalışmasına yardımcı olmak için belirli bellek kısıtlamaları uygular.
Fortnite İçin Unreal Editor’de (UEFN), kapsamlı bellek özelliklerini kullanarak daha büyük ve zengin deneyimler sunabilirsin. Bundan tam olarak yararlanmak için bellek kullanımının UEFN’de nasıl hesaplandığını anlamak yararlı olacaktır.
World Partition
Büyük bir ada deneyimi oluşturmanın sırrı World Partition özelliğinde saklıdır. Bu özellik, dünyayı ızgara halinde böler ve yalnızca gerekli hücreleri akışa dahil eder.
World Partition, hücreleri yükleyip boşaltan Akış ve öğelerdeki ayrıntı miktarını gruplayan ve kamera uzaklaştığında azaltan Hiyerarşik Ayrıntı Seviyesi (HLOD) işlevlerini kullanır.
World Partition, Akış ve Hiyerarşik Ayrıntı Seviyeleri hakkında daha fazla bilgi için Akış ve Hiyerarşik Ayrıntı Seviyeleri bölümüne bakabilirsin.
Bellek Nasıl Hesaplanır?
UEFN, bellek kullanımını
Büyük adalarda hızlı sonuçlar.
Aynı ada sürümünde, Fortnite derlemesinde ve cihazında hesaplamayı her çalıştırdığında elde edilen tutarlı sayılar.
Daha fazla öğe türü ve SceneGraph için geniş destek.
UEFN’deki bellek hesaplama sistemi yalnızca Düzenleme zamanında çalışır ve Oynama zamanında bellek kullanımını değerlendirmek için kullanılamaz. Bir adanın temel bellek kullanımının makul bir eşiği aşmadığını doğrulamak için kullanılır.
Ancak özel çalışma zamanı mantığı yüksek bellek kullanımına neden olabilir, bu da oyuncuların adayı oynama yeteneğini sınırlayarak sorunlara neden olabilir. Oyuncularının kararlılık veya performans sorunları yaşamasına neden olmamak için, Mekânsal Profil Oluşturucu’yu kullanarak adanın belleği nasıl kullandığını ve Oynama zamanında nasıl performans gösterdiğini daha iyi anlamanı öneriyoruz.
Oturum Dizilimi
Oturumunu yüklediğinde gösterge panelinde bir Geçerli Bellek Kullanımı çubuğu görürsün.
Çubuk, adandaki bellek kullanımı hakkında fikir vermek için maksimum 100.000 bellek birimi gösterir.
Akış etkinleştirildiğinde, bellek artık adadaki tüm öğelerin kullandığı toplam bellek yerine oyuncunun adadaki konumuna göre hesaplanır. Bir bellek hesaplaması yapmak, her akış hücresi için en doğru bellek tüketim değerlerini verecektir.
Bazı öğeler oyuncunun pozisyonundan bağımsız olarak bellekte kalır ve haritanın neresinde olursa olsun bellek tüketimine eklenir. Çoğu öğe, akışa girip çıktıkça yüklenir ve kaldırılır, çubuk bunu yansıtacak şekilde güncellenir.
Bölümün referans aldığı tüm öğeler (cihazlar, manzaralar, özel örgüler ve dokular vb. dahil) toplam bellek kullanımına dahil edilir.
Bölümündeki herhangi bir alan 100.000 bellek birimini aşarsa adanı yayınlayamayacağına dikkat et.
Bir UEFN kullanıcısı olarak, adanı yayınlamadığın sürece 100.000’lik termometre sınırını aşabilirsin. Bir konsolda seninle ortak çalışan kişilerin, oturumdan atılmalarına neden olacak bir donanım tabanlı kullanılabilir bellek sınırına ulaşabileceklerini aklından çıkarma. Bu kişiler, sorun çözülene kadar yeniden bağlanamaz.
İçerik Değişiklikleri Yapma
Bellek kullanımını doğru şekilde hesaplamak için sistemin güncel işlenmiş verileri içermelidir. Canlı Düzenleme veya Telefon Aracı ile içerik değişiklikleri yaptıktan sonra, Düzenleme Modu göstergesi Güncel olsa bile bir Değişiklikleri Gönder istemi görürsün çünkü Canlı Düzenleme, bellek hesaplamaları için kullanılan işlenmiş verileri yenilemez.
Değişiklikler gönderilene kadar kullanım çubuğu güncellenmeye devam eder ancak eskimiş bir değer gösterir. İçerik değişikliklerinin maliyeti yansıtılmaz.
Bellek Hesaplamasını Başlatma
Adanın başarıyla yayınlanabilmesi için, desteklenen tüm donanım platformlarında çalışabilmesi gereklidir.
Yayınlamadan önce, projenin bellek sınırlarını aşmadığından emin olman çok önemlidir. Proje açılır menüsünden Bellek Hesaplamasını Başlat seçeneğine git.
Bu işlem, her hücrede kullanılan bellek miktarını hesaplar.
Bir iletişim kutusunda Özel Sürümü Yükle düğmesine basman istenir. Düğmeye tıkla ve ilerleme çubuğunu takip et.
Dilersen proje sürümün için bir açıklama ekleyebilirsin.
Ekranın alt kısmında beliren bir açılır iletişim kutusunda Bellek hesaplamasının devam ettiği belirtilir.
Yükleme tamamlandığında açılır iletişim kutusu değişerek Hesaplamanın başladığını belirtir.
İstemcide bellek hesaplaması sonucu gösterilir. Devam Et düğmesine basıldığında oyuncu karakterinin kontrolü geri verilir.
İşlem tamamlandığında, oyuncu karakteri hesaplama başlamadan önceki orijinal konumuna geri ışınlanır ve şu iki durumdan biri gösterilir:
Projende Akış etkinse etrafta uçup farklı bölgelerin kapladığı alan miktarını görebilirsin.
Akış etkinse geçiş sırasında Kullanılan Bellek çubuğu değişir. Bu yöntemi bölümünde sınırın üzerinde olabilecek alanları belirlemek için kullanabilirsin.
Adan sınırı aşıyorsa yayınlamadan önce yerel bellek sorunlarını çözmen gerekir.
Adam bellek sınırını aştı. Ne Yapabilirim?
Sınıra ulaştığında bellekten tasarruf etmek için birçok strateji vardır. Aşağıdakileri çeşitli kombinasyonlarla dene:
Bellek hesaplamasından sonra, adanda en fazla bellek kullanan ilk 100 öğenin listesini açabilirsin. Pencere > Mesaj Günlüğü > Bellek Testi Sonuçları kısmına git.
Aşağıdaki tabloda her terim tanımlanmaktadır:
Terim Açıklama Kaynak
Bu genellikle İçerik Tarayıcısı’ndaki bir öğenin adıdır. Bazı kaynaklar “Fortnite Öğesi” olarak gösterilebilir. Bu ad projende yazılmamış ancak yine de adanın bellek kullanımını artıran kaynaklara verdiğimiz bir addır.
Tür
Bu, kaynağın/öğenin türüdür. Doku, Materyal, Bölüm ve daha birçok örneği sayılabilir.
# Aktör Referansları
Kaynağa doğrudan veya dolaylı olarak referans veren aktörlerin sayısı.
# Paket Referansları
Kaynağa referans veren işlenmiş paketlerin sayısı. Bu sayı genellikle bir kaynağa birden fazla World Partition hücresi tarafından referans veriliyorsa artar.
Boyut
Kaynağın boyutu. Belirli bir kaynağın örneklenen konumdaki Geçerli Bellek Kullanımı çubuğuna yaptığı katkı miktarıdır.
Mümkün olan durumlarda dokuları akışa al. Bunun anlamı, dokuları akışa uygun olacak şekilde (ikinin üssü boyutlar) yazmak ve mipmap’ler oluşturulacak şekilde yapılandırmaktır. Dokular akışa alınamıyorsa, ne kadar uzakta kullanıldığından bağımsız olarak her zaman maksimum bellek miktarını kullanır. Daha fazla bilgiyi Dokuları Yeniden Boyutlandırma bölümünde bulabilirsin.
World Partition panelinde Akışı AÇ. Bu, büyük adalar için şart olsa da daha küçük adalar da özellikle içerik çok yoğunlaştığında akıştan yararlanabilir.
Akış açıkken mümkünse aktörlerde Mekânsal Olarak Yüklü ayarının etkin olduğundan emin ol. Bu ayar etkin değilse aktörler ana bölüm paketine dönüştürülür ve her zaman yüklenir. Bu durum özellikle Manzara akış proxy’si aktörleri için geçerlidir çünkü bunlar genellikle isteğe bağlı olarak akışa almak istediğin çok sayıda çarpışma verisi içerebilir.
Adanın içeriğini dengeli bir şekilde dağıt. Çok fazla sayıda aktörün küçük bir alanda yoğunlaştırılması, içeriğin akışına izin vermeyecek ve bellek bütçeni aşmaya katkıda bulunacaktır.
Adanın kullandığı cihaz sayısını azalt. Cihazlar, yerleştirebileceğin en yüksek maliyetli aktörlerdendir. Ancak aynı cihazın örneklerini yerleştirmek çok daha düşük bir bellek maliyetine yol açar.
Proje Boyutu penceresine göz at. Diskte fazla bellek kullanan bazı objeler görürsen bunlar büyük ihtimalle çalışma zamanında da fazla bellek kullanıyordur. Proje boyutunu kontrol etmek için Proje açılır menüsüne tıkla ve Proje Boyutu bölümünü seç.
Başta yalnızca uzaktan görülebilen öğelerdeki olmak üzere tüm özel öğe ayrıntı seviyelerinin kalite seviyesini düşür.
Öğeleri birden çok kez yeniden kullan. 100 ağaçtan oluşan bir ormanda 100 ayrı ağaç kullanmak yerine 5 farklı ağaç türü kullanıp bunları çoğaltarak etrafa yay. Bu, bellek kullanımında çok büyük fark yaratır.
Hiyerarşik Ayrıntı Seviyeleri kullanıyorsan bunları proje sürecinde ve yalnızca uzaktan görülebilecek objeler için oluşturduğundan emin ol.
Adaların aynı anda görüntülenmesi amaçlanmayan yapılandırmalara bölünebiliyorsa Veri Katmanlarından yararlan. Örneğin, oyuncu bir mabede girmeden erişilemeyen bir yer altı zindanı.
Özel içeriğinin örgü karmaşıklığını azalt. Yüksek poligonlu örgüler daha yüksek bellek maliyetine neden olur. İçerik Tarayıcısı’nda örgüyü çift tıklayıp düzenle ve Nanite Ayarları altında Üçgen Yüzdesini Koru değerini ayarla. Daha düşük bir değer kullanmak örgü karmaşıklığını azaltacak ve aktörün bellek maliyetini düşürecektir.
Diğer Sorunları Giderme
Düzgün bir doğrulama yapabilmek için, içerik üreticilerinin akışı etkinleştirmiş olması ve ayrıca dokular için mipmap oluşturması beklenir. Daha önce dokularından herhangi birinde MipGenSettings seçeneği Mipmap Yok olarak ayarlanmışsa adan yayın için gönderildiğinde bu durum işaretlenmiyordu. Ancak artık projende Mipmap Yok olarak ayarlanmış MipGenSettings varsa projen doğrulamayı geçemeyecek.
Akış ve mipmap’ler için bu gerekliliğin aşağıdaki istisnaları olduğunu unutma:
Bu kural yalnızca 1 milyondan fazla doku hücresine sahip dokular için geçerlidir. Dolayısıyla, örneğin bir dokunun boyutları çarpıldığında 1.048.576’dan az oluyorsa, MipGenSettings ayarı Mipmap Yok olsa bile doğrulamadan geçecektir.
Kullanıcı arayüzü grubundaki dokularda akışın etkinleştirilmiş olması gerekmez.