atakneira

Yeni üye
20 Tem 2023
5
0
0
(34) İstanbul Avrupa
Acemiyim.

1 yılda kısa çalışmalarla yalnızca basit mekanikleri yapmayı becerebiliyorum. Unreal Engine pazaryerindeki modellemeleri kullanıyorum. 

Pazaryerinden satın aldığım bir şehir var. Bu şehir zaten hali hazırda optimize edilmiş bir şehir. Yani benim tekrar optimize etmeme gerek yok. Ancak bu şehir içine blueprintler yerleştirmeye başladığım an fps düşüşleri yaşamaya başlıyorum. Diyelim ki 10 tane yaya ekledim. Bunlar fps'yi 50 den bir anda 30'a indiriyor. E sadece yaya olmayacak, başka çeşitli aktörler de ekliyorum. Atıyorum 30 kadar aktör ekledim [karakterin envanterine alabileceği şehrin bazı yerlerine yerleştirilmiş blueprint objeler ve gerçekten karmaşık kodları yok]. Pat fps 30'dan 25'e düşüyor. Biraz daha bir şeyler eklediğimde 15'leri görmeye başlıyorum. 

Bunu biraz olsun düzeltmek için spawn sistemi kurayım dedim. Belli bir yarıçapta aktörler yumurtluyor ve fps de yine düşüş görüyorum. E kardeşim o zaman spawn sistemini neden kullanayım? Bu spawn sistemi optimizasyonu yükseltmek içinse aktörler yumurtladığında fps düşecekse o zaman neden kullanayım?

Ben bu optimizasyon olayını hiç anlamadım. Lütfen lod ayarlarını araştır gibi tavsiyeler vermeyin çok rica ediyorum. Zaten modelleme bilmiyorum. Aldığım hazır modellemelerde hep optimize edilmiş versiyonlar. Benim lod ayarlarından daha ziyade blueprintleri optimize etmem gerekli. Ama youtube'da gerçekten ciddi bir araştırma yaptım ve adam gibi blueprint optimizasyon u anlatan videolar göremedim. 

Blueprintleri nasıl optimize edebilirim? Yardım ve destek. Dalgasız, alaysız nokta atışı tavsiyelerinize ihtiyacım var. 100 FPS demiyorum. Ama hiç olmazsa 30fps stabil kalabilecek bir oyunum olsun istiyorum.

Edit: Harita default iken 50-70 arası fps alıyorum. Ne zamanki blueprintleri haritaya dizmeye başladığımda fps muhteşem hızlarda düşüyor. İnanın kodları çok basit. Yayaların yürümesi için AI MOVE TO komutu var mesela. Bu ne kadar fps yi düşürebilir ki? Diğer aktörleri de bunun gibi düşünün. Hepsi basit kodlamalar.
 
Blueprint optimizasyonu diye bir olay yok aslında.Delay eklemeyebilirsin vesaire gibi ufak tefek şeyler.Ama senin kodların o kadar basitse iş yine lod gibi gözüküyor.Yani blueprint evet ama sonuçta içinde skeletal mesh var öyle değil mi? Eğer yüksek poligonluysa fps düşecektir.Bir diğer aklıma gelen kullandığın haritanın optimizasyonu tam sınırda gibi sanki.Draw call olarak sınırda tutmuşlar sen herhangi bir şey eklediğinde sınırı aşıyor gibi geldi. 

İlk olarak meshlerin hepsine bak.Blueprint içinde kullandığın skeletal meshler dahil olmak üzere.
İkinci olarak draw call sayısına dikkat et gerekirse haritada sadeleştirmeye gidebilirsin.
Son olarak spawn sistemi olarak actor spawn kullanmaktansa level streaming kullanabilirsin.
 
Keşke her şey o kadar basit olsaydı da şak diye cevap verebilseydik ama ne yazık ki bu işler o kadar kolay değil. "Bana uçak nasıl uçar, tekniğini anlatın ama ayrıntılara girmeyin" der gibisin. Ben yine de bir kaç noktadan bahsedeyim belki faydası olur.
   1. Eğer aldığın FPS değerleri editör de ise o değerler çok ta önemli değil. Önemli olan production built yaptığında paketlenmiş halde aldığın FPS ler. Özellikle BP ler söz konusu olduğunda bu işleri çok değiştirir zaten.
   2. Marketplace ten aldığın  her şeyin optimizasyona ihtiyacı vardır. Genel de oyun için değilde prezentasyon için ayarlanırlar ve oyun olarak kullanıldıklarında bir sürü optimizasyon yapmak gerekir. Aslında her durumda her şeye optimizasyon gerekir. Eğer saf halinde 120 130 fps almıyorsan bir şeyler yapman gerekiyordur zaten. 40 50 gibi rakamlar çok sınırda değerler.
   3. Sorunu bulmak için neyin sıkıntı yarattığını kendin bulman gerekiyor. Bunun kolay bir cevabı yok maalesef. Bir materyal her şeyi batırıyor da olabilir. Bir Delay nod u da herşeyi batırabilir. Sorun nerde tespit etmek gerekiyor. Bu çok uzun bir konu ve burda anlatılamaz ama başlangıç olarak bazı şeyleri açıp kapatarak test etmen gerekebilir.
   4. Sorunun BP lerden olduğunu hiç zannetmem. BP ler paketlendiklerinde kendileri optimize ediliyor sistem tarafından. Tabi arada saçma bir döngü ya da gereksiz delay gibi şeyler yoksa. Market assetlerinde böyle hata yapmazlar genelde.
   5. Şunu bunu araştır demeyin demişsin ama, console commands, profiler optimization, LOD vb konuları yanına unreal koyarak google da aratmak ve öğrenmek ile işe başlayabilirsin.
   6. Eğer bir şehir le uğraşıyorsan World partition ı mutlaka kurup kullanmaya başlamalısın. Tabi onu da öğrenmen gerekecek.
 
Harika cevaplar için teşekkür ederim. En azından kısmende olsa neye bakacağımı ve nereden başlayacağımı biliyorum artık. İnsanlar her şey google de var diyor. Ama öyle bir durum ki şu an google de hiçbir şey bulamıyorsun. Her şeyi aradığın ve hiçbir şey bulamadığın bir yer gibi. Bu şekilde adım adım söyleyen yok. Sadece yabancı kaynaklar bu konuda faydalı -burda da dilden kaybediyorum chatgpt bir yere kadar- 

alkdmn drawcell ve level streaming'e hiç bakmadım. Bunları mutlaka deneyeceğim. Ayrıca console commands, profiler optimization bunlara da gireceğim. Ama lodlardan uzak duracağım. Binlerce mesh var. Her birinin lod ayarlarını yapmam mümkün değil. Bu kısımda elimde olanla yetinmek durumundayım. 1000 tane mesh in içine girip lod ayarları yapacaksam muhtemelen sadece bu kısım aylar alır. 

En azından bir başlangıç noktası oluşturmuş durumdayım bu cevaplarla. Ama yine de optimizasyon konusunda başarılı olabileceğimi sanmıyorum. 
 
Hocam hemen bakacağım. Merge actors'u daha önce duymuştum -fısıltı gibi-. Hatta 1000'den fazla mesh var. Ama ben modelling sekmesinde mergeyi genelde başka bir amaç için kullanmıştım. Merge actors olayına giriyorum şimdi:)
 
Sadece ek bilgi olsun diye söylüyorum: LOD leri toplu olarak edit leyebileceğin sistemler de mevcut. Örneğin property matrix gibi. Yani illa tek tek yapmak zorunda değilsin. Ama meseleyi daha komplex hale getirmeyeyim.
(HLOD sistemi de var o da ayrı konu. Eğer performans istiyorsan eninde sonunda öğrenmek zorunda kalacaksın.)
 
Tüm oyun projesi bittikten sonra Lod olayına gireceğim hocam. Bu dediklerinizin hepsini aldım. Çünkü ortaya çıkacak ürünüm için istiyorum ki optimizasyondan daha ziyade ürünün mekanikleri, hikayesi cart curt gibi şeylere eleştiriler gelsin. Hobi olarak yapıyorum. Ama lod kısmı canımı en çok sıkan kısım ve lodlarla uğraşırken gerçekten eğlenmiyorum  :). Biri bana lod deyince resmen beynim sansür uygulamaya başlıyor karşı tarafa. Çünkü lod kısmı gerçekten zevk vermiyor. Ne güzel enemy danger ayarlıyorum. Trigger'e girince asansör çağırıyorum, ai ile diyalog başlatıyorum falan süper olaylar. Ama lod dediğinizde bir irkilme geliyor bana  :).
 
FPS sorunuyla ben de ara ara uğraşırım, fakat geçenlerde çok ciddi bir FPS sıkıntıyla karşılaşmıştım. Cidden uzman olanlara gösterdiğimde onlar bile bulamamıştı. Sorun çok gaip bir şekilde landscape'deydi. Materyali değiştirdiğim gibi sorun önemli ölçüde düzelmişti.
Peki nasıl buldum? Console'a yazdığım komutlar sayesinde. İnce detayına kadar indiğinde sorunu buluyorsun.

Bunları deneyebilirsin:
stat gpu
stat unit
stat game
stat rhi
ctrl + shift + ,  

bunların yanına -off koyarak kapatabilirsin
 
Hocam işlemcim 
i5-10300h
8gb ram

Kullandığım cihaz laptop. Daha yüksek özelliklere sahip monster'ım var. Ama monster'ı bilerek kullanmıyorum. Oyunu yukarıdaki özelliklere sahip olan bir bilgisayarda yapınca minimum aynı özelliklere sahip olan oyuncularında rahatlıkla oynayabileceğine dair kafamda yalan yanlış bilgi var. Yani bu bilgisayarın özellikleri kötü. Ama bu kötü özelliklerde bile oyun minimum 30fps verirse beni kurtarmış olur diye düşünüyorum. 

Şu an merge actors olayını deniyorum ve poligon sayılarını azaltmakla uğraşıyorum. Poligon sayılarından daha ziyade merge actors sanki daha çok işime yarıyor gibi. Yine de binlerce mesh var ve gerçekten neyin optimizasyonu sıkıntıya soktuğunu muhtemelen projenin sonunda yapacağım testlerle ortaya çıkaracağım. Projeyle ilgilenirken optimizasyon da öğreneyim dediğimde bu sefer proje kalıyor. En sona attım. Ama hala çözülmüş değil. Çünkü poligon sayılarından daha ziyade map'ta yer alan bp'ler oyunu kastırıyor. Basit ama çok fazla bp'de yer alıyor map'imde :D

Mesela bir tramvaya sahibim şehrin içinden geçen. Bu bir spline izliyor ve iki durak arasında gidip geliyor. Sürekli aynı hareketi yapıyor. Sonra 30 tane yaya var sadece AI MOVE TO komutuyla yürüyen. Bunun haricinde evlerde yaşayan uyuyup uyanan ve evde dolanan insanlar var. Ayrıca map'in her yerinde karakterin envanterine koyabileceği 50'den fazla actor var. Buna ek olarak binlerce static mesh, gece gündüz döngüsüne sahip bir sky vs vs... Bütün bunlar artık 10 fps'ye düşürüyor...