leonscottkfm

Unreal MVP
31 May 2015
1,539
5
219
63
28
(34) İstanbul Avrupa
store.steampowered.com
Üst düzey kaliteli bir zombie paketi satın aldım çok üst düzey değil sadece üst düzey.
Meshlerin Cast Shadowlarını kapattım.

Sadece yürüme,vurma,hasar alma gibi tipik basit animasyonlara sahipler. 20 tane npc spawn etsem FPS 60 tan 30 a düşüyor. Buna nasıl bir optimizasyon uygulayabilirim ?
Mesela ben Left 4 Dead 2 de ki gibi 50 tane Npc spawn etmek istersem ne yapmalıyım ? Bu FPS düşüşünün sebebi grafikler midir?

Bu içeriği görmek için üçüncü parti çerezlerine izin vermeniz gerekli.
Daha fazla detay için çerezler sayfasını ziyaret edin.

Video burada.

Bu da Cast Shadow açık hali...

Bu içeriği görmek için üçüncü parti çerezlerine izin vermeniz gerekli.
Daha fazla detay için çerezler sayfasını ziyaret edin.
 
Mesh LOD'ları ile ve materiallere uygulayacağın LOD sayesinde büyük bir performans kazancı yaşarsın.

UE4 Skeletal Mesh lod diye youtube'de aratırsan bulursan örnek videolar.

UE4 material mip bias diye aratırsanda material lodaları ile ilgili örnekler bulabilirsin.


Tabi bu sadece görsel optimizasyon. Ama büyük faydası olur.
 
2.Videoya da bakar mısın gölgeleri falan o kadar kapatmama rağmen gram performans artışı sağlanmıyor :D LOD diye aratırım ama LOD yapmak için modelleme bilmek gerekmiyor mu ? Yani hem low detay modelleyeceğim hem orta hem yüksek öyle değil mi ?
 
Teşekkür ederim. Peki başka bir sorum olacak...

Bakmadığım yönde NPC spawnlanmasını istiyorum bunun için ne yapabilirim ? Mesela ben ön tarafa bakıyorsam arkamda spawnlanacak , arkamı dönersem ilk başta baktığım konumda spawnlanacak gibi...
 
Nasıl?

Şöyle anladım.

Bir yere bakıyorsun ve o sırada arkanda  spawn oluyor ve arkana dönüyorsun arkanda bir tane daha spawn oluyor. Doğru mu?


Şunu izlemen iyi olur optimizasyon için.

Bu içeriği görmek için üçüncü parti çerezlerine izin vermeniz gerekli.
Daha fazla detay için çerezler sayfasını ziyaret edin.
 
FVector  BackwardVector = GetForwadVector()*-1.0f;  // Cephemize bakan yönün tersini alıyorum. Bu bizim arkamıza bakan vektör oluyor

FRotator SpawnDirectionRotator = BackwardVector.Rotator();  // Aldığım Vektörü Rotator a çeviriyorum. Böylesi daha anlaşılır çünkü.

float DirectionVariation = FMath::FRandRange(-30.0f, 30.0f);   // Tam arka istikametimden kaç derece sağa ya da sola hedefleyim. Burada ben -30 +30 dedim. Rastgele bir açı verilecek. Sen kafana göre takılabilirsin

float DistanceVariation = FMath::FrandRange(300.0f, 2000.0f); // Tam arka istikametimde kaç cm gerimde olsun. Buda bir random. 300 ila 2000 dedim ben. Sen kafana göre takılabilirsin.

FRotator SpawnDirection(0.0f, SpawnDirectionRotator.Yaw+DirectionVariation, 0.0f); // Bana geri vektörümün sadece Yaw ı lazım. Diğerleri önemli değil. Bu yüzden diğerlerini sıfırlıyorum.

FVector SpawnLocation = GetActorLocation() + SpawnDirection().Vector()*DistanceVariation; // Yeni Spawn lokasyonu benim bulduğum yerden SpawnDirection istikametinde DistanceVariation uzaklıkta bir yer olacak. ( Dikkat rotator u tekrar vektör e çevirdim. Çünkü burada bana vektör lazım.)

// Test etmedim ama mantık aşağı yukarı böyle olabilir. Bu yazdıklarımın hepsi Blueprint te fazlasıyla var zaten.
 
Screenshot_1.png


6 seviyeye kadar LOD oluşturabilirsin, görsel olarak max kaç LOD seni kurtarıyorsa ona göre ayarla.

ayrıca https://docs.unrealengine.com/udk/Three/CrowdSystem.html bu crowd systemi bizzat uygulamışlığım yok ancak UE3 ten beri var diye biliyorum.  aynı animBP yi ve tree yi kullanan birçok agent spawnlayabilirsin ki performans olarak baya az enerji harcarlar bu sistemde. olayı çözersen bir rehber de hazırla hatta forumda diğerlerine de faydası olur, öyle ya da böyle önemli bir konu aslında.