-TuRKuaZ- 1
-TuRKuaZ-
farkmt2official 1
farkmt2official
Sevdamsın 1
Sevdamsın
mavzermete 1
mavzermete
xranzei 1
xranzei
Best Studio 1
Best Studio
Bvural41 1
Bvural41
Hikaye Ekle

[FIX] Metin2 client memory leak & cpu kullanımı problemleri

  • Konuyu başlatan Konuyu başlatan lalaker1
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 32
  • Görüntüleme Görüntüleme 22K
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

HERAKLES Otomatik Avlı kalıcı sunucu. 19 Haziran'da açılıyor. Atius & Wizard güvencesiyle hemen kayıt ol, ön kayıt ödülleri aktif. HEMEN TIKLA!

Metin2 client memory leak (ram kullanımı) & cpu kullanımı problemleri nasıl çözülür

Client Kaynak Kodlarından

[Birinci Çözüm]

Dosya GameLib\MapOutdoorUpdate.cpp :

arat
Kod:
__CollectCollisionShadowReceiver(v3Player, v3Light);

sil veya yorum satırı yap
Kod:
//__CollectCollisionShadowReceiver(v3Player, v3Light);

GYx8dab.png


[İkinci Çözüm]

Dosya UserInterface\PythonCharacterManager.cpp :

arat
Kod:
if (pkInstEach->IsForceVisible())
{
    dwForceVisibleInstCount++;
    continue;
}

sil veya yorum satırı yap
Kod:
/*if (pkInstEach->IsForceVisible())
{
    dwForceVisibleInstCount++;
    continue;
}*/

nFJPfab.png


 
Son düzenleme:

En Çok Reaksiyon Alan Mesajlar

Dostum benim hiçbir küçük düşürme gibi bir niyetim yok senin mantığına göre o vec zaten temizleniyor. O zaman __CollectCollisionPCBlocker bunun da silinmesi gerekiyor saçma oluyor yani

küçük düşürmekten ziyade 3 gram bilgi sahibi olmadan tartışmaya çalışarak kendin küçük düşüyorsun. memory leak demek sadece açılan dinamik hafızanın silinmemesi değil, artık verilerinde hafızada bir şekilde unutulması leak'e yol açıyor. konuda verilen ilk düzenlemenin asıl sebebi ve çözümü zaten senelerdir elimde mevcut basitçe özet geçiyim belki daha açıklayıcı olur. metin2 de loading de yapılan her düzenleme ve önlem tamamen ilk loading'e dayalı olarak yapıldığından geliştiriciler map değişimlerinde yapılan loadinglerde gerekli şeyleri silmeyi düşünememiş malesef bundan dolayıda aktif kullanılmayan bazı veriler map değişiminde kalıntı olarak leak yaratıyor. şöyle ki atmış olduğun resimdeki kod map outdoor da ki update fonksiyonunda çalışıyor burda mantık yeni veriler ile güncellemeden önce eskisini kaldırmak yani map değişimlerine herhangi bir etkisi yok kısaca konudaki düzenlemenin amacı map değişimlerindeki bahsi geçen silinmeyen alanların kullanılmasını engellemek.
Teşekkürler @lalaker1 bu aralar bu tür fixlerle uğraştığınızın farkındayım acaba bu sorunu da fixleyebilir misiniz ?

MDE uzantılı bir efekt kullanırken oyun penceresini aşağı alıyorsunuz 3-4 dk bekleyip tekrar yukarı aldığınızda mde efekti çok hızlı bir şekilde oynamaya başlıyor sanki oyunu aşağıya alınca o efekt duruyor yukarı alınca 3-4 dakika boyunca durmanın acısını çıkartır gibi hızlıca oynamaya başlıyor ve o 3-4 dk boyunca hareket edebileceği kadar sayıya gelince tekrar eski hızına geri dönüyor bunu çözebilen olmadı sanırım henüz çözebilirseniz çok minnettar kalacağım teşekkürler :)
Teşekkürler Lala. Bu düzenlemeleri neden yaptığını kısaca açıklayabilir misin. 2.düzenlemedeki continue den dolayı obje silinmiyor gibi kısa kısa açıklama yeterli olacaktır

Üşeniyorum herkes kendisi anlasın xD
Bende zaten şu şekilde yaptım. İkinci çözümü önceden bulmuştum zaten. Birinci çözümü ise oyunda memory'de alan oluşturan fonksiyonu bulup onu geriye doğru izledim ve sürekli ram kullanımı artmasına neden olan şeye ulaşmış oldum. Sonra source üzerinden baktım tam olarak ne diye, o da gerekli bir şey gibi gözükmedi, devredışı bırakıp denedim ve sorun kalmamıştı.

En basitinden balık efekti olsun animasyonlu silah efektleri olsun tr'nin +15 silahlarının etrafında gidip gelen efekt olsun bunlar hep aynı şeye maruz kalıyor

Bir ara boş iken canım da isteyince bakarım, bilgi için teşekkürler.
Dostum benim hiçbir küçük düşürme gibi bir niyetim yok senin mantığına göre o vec zaten temizleniyor. O zaman __CollectCollisionPCBlocker bunun da silinmesi gerekiyor saçma oluyor yani

Dediğim gibi ben asm üzerinden oluşturulan ve silinmeyen fonksiyonu buldum, source ile detaylı incelemedim. Fonksiyon içinde çağırılan başka fonksiyonlarda var, onların içinde de olabilir.

Bu ise ilk fark ettiğim zaman yaptığım test. Hiçbir şey yapılmamasına rağmen ram kullanımı artıyordu ve çözümü uygulayınca bu durdu.
Öğeyi görmek için üye olmalısınız.
Metin2 client memory leak (ram kullanımı) & cpu kullanımı problemleri nasıl çözülür

Client Kaynak Kodlarından


[Birinci Çözüm]

Dosya GameLib\MapOutdoorUpdate.cpp :

arat
Kod:
__CollectCollisionShadowReceiver(v3Player, v3Light);

sil veya yorum satırı yap
Kod:
//__CollectCollisionShadowReceiver(v3Player, v3Light);

GYx8dab.png


[İkinci Çözüm]

Dosya UserInterface\PythonCharacterManager.cpp :

arat
Kod:
if (pkInstEach->IsForceVisible())
{
    dwForceVisibleInstCount++;
    continue;
}

sil veya yorum satırı yap
Kod:
/*if (pkInstEach->IsForceVisible())
{
    dwForceVisibleInstCount++;
    continue;
}*/

nFJPfab.png


teşekkürler
 
Metin2 client memory leak (ram kullanımı) & cpu kullanımı problemleri nasıl çözülür

Client Kaynak Kodlarından

[Birinci Çözüm]

Dosya GameLib\MapOutdoorUpdate.cpp :

arat
Kod:
__CollectCollisionShadowReceiver(v3Player, v3Light);

sil veya yorum satırı yap
Kod:
//__CollectCollisionShadowReceiver(v3Player, v3Light);

GYx8dab.png


[İkinci Çözüm]

Dosya UserInterface\PythonCharacterManager.cpp :

arat
Kod:
if (pkInstEach->IsForceVisible())
{
    dwForceVisibleInstCount++;
    continue;
}

sil veya yorum satırı yap
Kod:
/*if (pkInstEach->IsForceVisible())
{
    dwForceVisibleInstCount++;
    continue;
}*/

nFJPfab.png


Hmm tam olarak hangi işlevde kullanılan şeyleri sildin
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst