fcozsargin

Yeni üye
12 Ağu 2022
15
0
0
(16) Bursa
unreal engine'de projeyi build aldıktan sonra exe'yi açtığımda ram kullanımı 15-16 gb'a kadar çıkıyor ve bir kaç saniyede 1-2 gb'a düşüyor. ancak bu sebeple uygulamayı örneğin 16 gb bir bilgisayarda açamıyor ve out of memory hatası veriyor. bu sorunu nasıl çözebilirim. buna ne sebep olabilir. 40-50 kadar materyalim var hepsini ui butonlarını tıklamaya göre meshlere set ediyor. bunun için set material düğümünü kullanıyorum. sebebin büyük ihtimalle bu olduğunu düşünüyorum. açılırken hepsinin bir anda ram'e yüklenmesini nasıl önleyebilirim?
 
Oyun ilk açıldığında kullanıcı önüne direkt 200 tane şey çıkarma.
Mesela o meshleri set ettiğin ekran sonradan bir button aracılığıyla açılmalı ve öyle yüklenmelidir yapılan işlemlere göre.Aklıma başka bir şey gelmiyor şuan.Belki de yöntemi yanlış yaptın görmemiz lazım.
 
Asset audit diye bir menü var content browser da. Kullandığın her türlü assetin size ını düşür. Özellikle de gereksiz olanları. Ayrıca "hard reference" olarak kullandığın her şey oyunda sonra da gözükse önce de gözükse begin play de yüklenir. Bundan kaçınmanın yolu hard references yani normal yöntemlerin yerine "soft references" kullanmaktır. Soft Object Ptr kullanarak ve bu assetleri "late loading" ( begin play de değil ihtiyaç olduğunda yüklemek) yaparak ilk açılıştaki yüklenmeden kurtarabilirsin. Araştırman gereken konular:
Async loading
TSoftObjectPtr
Asset Manager
 
Tam olarak anlamadım açılışta ne yaptığını. Ama birkaç saniyede 1-2GB ta düşüyorsa bana sanki bir döngü içinde çok fazla bilgiyi işlemci-ram arasında kullanıyor. Fonksiyon bitince ram e attığı local değişken verilerini siliyor. Aklıma bu geldi yanılıyor olabilirim. Bir de ne bu kadar veri kaplayabilir onu bilmiyorum. Son zamanlarda birkaç test yapıyordum. 100 bin içi dolu widget 600MB kaplamıştı, 10 milyon vektör, 1 milyon obje bile o 1 GB tan fazla yer kaplamamıştı. Meshler ve textrure ler çok yer kaplıyor onları biliyorum.  

Açılışta ağır bir fonksiyon kullanıyorsan onu bir süreye yaymaya çalışabilirsin 3-5 saniyede yüklesin hepsini tek bir frame yerine. Ergin hocanın dediği gibi async loading e de bakabilirsin o da c++ gerektirecek.