- Mesaj
- 1.536
- Çözümler
- 56
- Beğeni
- 2.928
- Puan
- 1.839
- Ticaret Puanı
- 0
10x daha iyi. Ama yine de mobil oyun havası var. uygun bir font lazım.
10x daha iyi. Ama yine de mobil oyun havası var. uygun bir font lazım.
10x daha iyi. Ama yine de mobil oyun havası var. uygun bir font lazım.
Güncelleme sonrası ilk aklıma arial geldiği için direkt onu çalıştırmıştım. Şimdi yorumu görünce tahomayı denedim, biraz daha düzgün oldu.orjinal halinde tahoma kullanıyor bence onun dışında başka font pek hoş durmuyor

| Bozulmuş hali | Sonra |
Ne kadar kullanışlı olur emin değilim ama şöyle bir fikir geldi aklıma. Bu tarz moblarin fazla olduğu durumlarda belirli bir radius içindeki moblari gruplayip tek bir text olarak göstermek. Mesela köylerdeki moblara da bu tarife uygulanabilir, tek tek hepsinin ismini yazdırmak yerine grup olduklarından sadece o ismi yazdirmak. Tabi sadece bir fikir tartışmaya açık. Mobların kendi isimleri tabi yine üstlerine tıklayınca görünecek.Güncelleme:
Eğer zaman içinde farklı yerlerde farklı sorunlar görmezsem text render güncellemesi tamamlanmıştır demektir.
Aklıma gelebilecek bütün noktaları test ettim.
Yere düşen itemlerin isimleri, chat konuşmaları, questler, tooltip textleri, affectlerin infosu, UI nesneleri vs.. eğer kritik nokta diyebileceğiniz yerler varsa belirtebilirsiniz, onları da kontrol ederim. Ama aklıma başka bir şey gelmedi.
Buna ek olarak; textler için optimizasyon iyileştirmesi uygulandı.
26158 eklentisini görüntüle
Üstteki görselde 500 adet köpek var ve FPS fotoğrafta görüldüğü gibi 34'dür.
Optimizasyon öncesi değerler:
300 Köpek : 33 FPS
Optimizasyon sonrası değerler:
300 Köpek : 56 FPS
600 Köpek : 34 FPS
Yani sadece textlerden yaklaşık %70 FPS kârımız var.. Tabi bu sonuçları hala olumsuz etkileyen faktörler var.
Bu sadece text öğelerini kapsayan bir optimizasyondur. Bunun haricinde diğer alanlara da aynı işlemleri yapmam gerekecek.
Mesela; şu an 30 adet metin taşı attığımda FPS 35'e düşüyor. Çünkü metin taşı köpekten farklı olarak = efekt + model + text demek.
Bu durumda da sadece text optimizasyonu yetersiz kalıyor ve her halükarda efekt ve model renderları tarafından eziliyor.
Genel olarak hepsini optimize ettiğimde bu değerlerin daha da yükseleceğini düşünüyorum.
Biraz meşakkatli bir yöntem ama işe yarayabilir. Aslında metin2 varsayılanda da tam olarak dediğin mantıkta çalışıyor.Ne kadar kullanışlı olur emin değilim ama şöyle bir fikir geldi aklıma. Bu tarz moblarin fazla olduğu durumlarda belirli bir radius içindeki moblari gruplayip tek bir text olarak göstermek. Mesela köylerdeki moblara da bu tarife uygulanabilir, tek tek hepsinin ismini yazdırmak yerine grup olduklarından sadece o ismi yazdirmak. Tabi sadece bir fikir tartışmaya açık. Mobların kendi isimleri tabi yine üstlerine tıklayınca görünecek.
atlas oluşturma işlemi texturelar içinde uygulanabilir, mevcut halinde her bir mesh materyalini tek tek renderlıyor(ek olarak aynı olsa bile yeniden renderlıyor). 512x512 zemin/terrain ya da materyal texturelarınıda 2048x2048 atlaslar üzerinden yönetebilirsiniz.Şuanki yapıda eski render mantığında olduğu gibi her gördüğü pixeli doğrudan çizmek yerine o an işleme alınan textlerin tamamını 2048x2048 boyutunda(değiştirilebilir) atlas dokusu içerisine kodlayıp shadera gönderiyor. Bu da beraberinde ciddi performans kayıplarının önüne geçiyor.
Materyallerde dediğin sorunu daha önceden çözmüştüm, şu an aynı olan materyaller dediğin gibi tekrar tekrar rendera(shadera) gitmiyor artık. Yeni bir nesne gibi, tekrar tekrar doku ataması vb. toplara girmiyor. Bunun "oha" dedirtecek bir etkisi olmadı elbette ancak sayısal değerlere bakmadan da gözle görülür etkisi oldu diyebilirim. Materyaller için motor seviyesinde bir batch render uygulamak biraz zor geldi çünkü değişken bir yapıya sahip, farklı vertex structlarını falan kullanıyor ve dediğin gibi materyal type'ına göre materyali işleme mantığı değişiyor vs vs. Text render,effect render falan sonuçta sabit bir nesne üzerine kurulu ama materyaller öyle değil maalesef. Buna en uygun iyileştirme instanced render olacaktır diye düşünüyorum.atlas oluşturma işlemi texturelar içinde uygulanabilir, mevcut halinde her bir mesh materyalini tek tek renderlıyor(ek olarak aynı olsa bile yeniden renderlıyor). 512x512 zemin/terrain ya da materyal texturelarınıda 2048x2048 atlaslar üzerinden yönetebilirsiniz.
efekt'e dönecek olursak benim gördüğüm kadarıyla ana sorun partiküller, yine buradada diğer her yerde olduğu gibi partikülleride tek tek renderlıyor, renderlama mantığınıLinkleri görebilmek için giriş yap veya kayıt ol.mantığında düzenlenirse baya faydası olacaktır, her bir partikül yerine her partikül setini renderlar ve yük altığında %20-30 gibi bir fps kazancı sağlar.
çok fazla düzenlenmesi gereken şey var hepsine tek tek girmeye gerek yok temel olarak hepsindeki ortak sıkıntı render çağrılarının her bir hedef için tek tek yapılması bu mantıkta renderlanan hedefleriLinkleri görebilmek için giriş yap veya kayıt ol.ile düzenlediği taktirde render kısmındaki sorunun büyük bir kısmı kalkar, geri kalanıda shader üstünden gpu'ya taşıma ki zaten zor kısmıda bitmiş.

Hayır böyle bir sorun yaşamadım.Ellerine sağlık takipteyim. AMD’de specular beyaz sorunu ile karşılaştım geçenlerde, ama sadece AMD ekran kartında yapıyor böyle bir şeyi. Senin de başına geldi mi? Bazı skinler bembeyaz duruyor, bunu da specular ayarından yapıyor gibi; mesela item +9'da beyaz görünüyor.
float specularFactor = pow(dot, specularPower);
pow() saturate() vb. sonucu her zaman NaN/bozuk olur.// specularPower = clientten gelen specular olsun.
// yeni bir safeSpecularPower ile clientten gelen specularPower'ı belirli bir aralığa sıkıştır.
float safeSpecularPower = max(0.001f, specularPower); // artık NaN üretme ihtimali yok
// pow işleminde güvenli safeSpecularPower değerini kullan >>
float specularFactor = pow(dot, safeSpecularPower);
m_kChrMgr.Render();
m_pyItem.Render();
+1Full odak şekilde takip ediyorum
Video görelim böyle boş yazılar olmuyor.Güncelleme:
Önceki güncellemede bahsettiğim yeni sıralı render yapısına materyallerden sonra:
Dahil edildi.
- Gölgeler
- İtemler
- Su
- Su yansıması
Artık PythonApplication.cpp dosyasında:
gibi çağrıların pek çoğu doğrudan kullanılmıyor/kullanılamaz. Çünkü bunlar ya artık çizim yapmıyor, ya da içleri tamamen boş.C++:m_kChrMgr.Render(); m_pyItem.Render();
Efektler ise bu konu çok baş ağrıtıyor, bunun için nasıl bir yol izleyeceğimden emin değilim. Şu an için efektlerde yaptığım tek güncelleme:
Dosyalarını ve bağımlılıklarını projeden kaldırmak oldu.
- EffectUpdateDecorator.cpp
- EffectUpdateDecorator.h
Bunları kaldırmanın sonucunda ise client akıllara durgunluk veren bir değişime uğradı:
Ayrıca bu yeni yapıya şu an deneysel gözüyle bakıyorum, eğer bir noktada çıkmaza girersem yedeğe/eskiye döneceğim.
Ek;
Gereklilik doğduğu için src içinden her yerden erişilebilen bir phase yöneticisi kuruldu.
Bu yönetici sayesinde sorgulanan phase anında veya istenilen bir fonksiyon içinde mevcut kod akışı bozulmadan clientin, fonksiyonun veya shaderın davranışı değiştirilir.