Çok eski bir web tarayıcısı kullanıyorsunuz. Bu veya diğer siteleri görüntülemekte sorunlar yaşayabilirsiniz.. Tarayıcınızı güncellemeli veya alternatif bir tarayıcı kullanmalısınız.
ÇözüldüBellek yönetimini kontrol etmek için yapılan referans zımbırtısı
Bu konu çözüme ulaştırılmıştır. Çözüm için konuya yazılan tüm yorumları okumayı unutmayın. Eğer konudaki yorumlar sorununuzu çözmediyse yeni bir konu açabilirsiniz.
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Merhaba. Yanlış analiz etmediysem oyunda zırh değişikliği yapıldığında (Sadece zırh değil, tüm modellemeler.) o zırh belirli bir süre hafızada tutulur. Ardından ayarlanan zaman ne kadar ise o zaman geçtiğinde zırh arkaplanda bellekten silinir ve hiç giyilmemiş gibi olur. Bu kontroller ResourceManager.cpp, Resource ve Ref.h dosyalarından kontrol ediliyor. Tekrardan giyilmek istediğinde ilk defa giyiyormuş gibi lag oluşur. ReferansObject.cpp Release bloğunda OnSelfDestruct(); kaldırırsak kayıtlı referansları sildirmemiş oluruz. Böylelikle istediğiniz zırhı, istediğiniz kadar, istediğiniz vakit sonrası değiştirin lag oluşmaz. Referans sayısı sürekli bellekte tutulur. Farklı zırh giyimlerinden sonra zamanla bellek artışında ufak ufak artışlar gözükür. Bu oyuncunun performansını önemli derecede etkiler mi? Bir oyuncu 20 çeşit farklı zırh giyemeyeceğinden dolayı performansa çok da etkisi olacağını sanmıyorum. Şayet düşük GB rame sahip oyuncular dışında.
Client tarafında pack okuma dışında tam anlamıyla çalışan pek fazla bir cache olayı yok. Senin pencerenden yorumlamak gerekirse;
Client, server ile bağlantısı olmayan şeyleri (ağaçlar, zemin, binalar vs.) sürekli ve sürekli render ederek çalışır. Hatta buna itemler,npcler,moblar vs. de dahildir. Bunların server ile tek bağlantısı, kimlikleri ve özellikleridir. (vnum, attr vs.) Bunlar haricinde dokuları, modelleri, hareketleri gibi tüm özellikler clientta kesintisiz bir render döngüsünde çalışır. Bunları söylememin amacı, soruna bakış açını iyi bir noktaya çevirmek aslında.
Yani kısaca ekranda gördüğün her nesne, hatta her pixel sadece...
Metin2 zaten kendi başına bellek sızıntılarından ibaret bir yapıya sahip. Buna ek olarak bahsettiğin şey bu sızıntıların arasına bir yenisini daha eklemek oluyor.
Metin2 zaten kendi başına bellek sızıntılarından ibaret bir yapıya sahip. Buna ek olarak bahsettiğin şey bu sızıntıların arasına bir yenisini daha eklemek oluyor.
Client tarafında pack okuma dışında tam anlamıyla çalışan pek fazla bir cache olayı yok. Senin pencerenden yorumlamak gerekirse;
Client, server ile bağlantısı olmayan şeyleri (ağaçlar, zemin, binalar vs.) sürekli ve sürekli render ederek çalışır. Hatta buna itemler,npcler,moblar vs. de dahildir. Bunların server ile tek bağlantısı, kimlikleri ve özellikleridir. (vnum, attr vs.) Bunlar haricinde dokuları, modelleri, hareketleri gibi tüm özellikler clientta kesintisiz bir render döngüsünde çalışır. Bunları söylememin amacı, soruna bakış açını iyi bir noktaya çevirmek aslında.
Yani kısaca ekranda gördüğün her nesne, hatta her pixel sadece clientın yönetimiyle çalışır. Aşağıdaki yazdıklarım da burasıyla bağlantılı olacak.
Sanıyorum ki daha önce yaşadığın soruna ithafen böyle bir konu açtın, eğer öyleyse;
İtemler tak-çıkar yapıldığında ortaya çıkan donmanın,takılmanın pek çok nedeni olabilir fakat konuda bahsettiğin gibi Destroy işlemini pasife çekerek çözülebilecek bir neden olduğunu sanmıyorum.
Ve şahsen bunun nedenlerinin biri de bahsettiğim Render döngülerinden birinin olabileceği yönünde. Tabiki emin değilim, fakat ihtimaller çok.
Çünkü yanlış hatırlamıyorsam bu sorunu hem grafik güncellemesinden sonra yaşamaya başlamıştın, hem de zırh değişirken bellek kullanımının 50-60 MB oynadığını söylemiştin. Buna pek şeyin sebep olabileceği gibi, yanlış çalışan veya bir şekilde kesintiye uğrayan/çakışan Render döngüsü de şişme yaparak neden olabilir. Çünkü döngü hem anlık kilitleniyor, hem de saniyeler içinde yüzlerce kez tetiklenmeye devam ediyor.. Normale döndüğünde ise her şey eski haline geliyor. Bu da olası bir ihtimal.
Metin2'nin Render kodlarındaki (dx8 veya dx9) bağımlı kodlarının hepsi olmasa da çok büyük bir kısmı bambaşka .cpplerde olsalar bile ortak pipeline kullanıyor.
MapOutdoorWater.cpp (sadece su dokusunu çizen ve işleyen dosyadır.. ) dosyasında yapacağın yanlış bir render işlemi karakterlerin veya haritanın görünümlerini olumsuz etkileyebilir.
Ve eğer sebep buysa, bu pek çok renderi kontrol etmen gerekebileceği anlamına gelir. Ve tabi render içindeki matematiksel işlemler ve nesne işlemleri vb. bu kontrole dahildir.
Sonuç olarak konuda bahsettiğin yöntem vb. şeylerin uygulanması uygulama ve kod açısından pek mantıklı bir hareket değildir, bunun yerine sorunun kendisini tespit etmek daha sağlıklı olacaktır. Dediğim gibi, bu sorunun pek çok sebebi olabilir. Tüm bunların yanı sıra srcdeki motion kodlarıyla bile alakalı olabilir. Ancak bunu tespit etmenin tek yolu; her ne kadar uzun sürse de mevcut kodları ve bağlamlarını orjinalleriyle karşılaştırmak.
m_pCacheMap.clear(); Deaktif Edip
Burayı Artıkdıkmı Lag azalır Ama uzun süre kaldıgında oyunda bellek Artar
int g_iLoadingDelayTime = 1;
const long c_Deleting_Wait_Time = 3600000 * 4;
const long c_DeletingCountPerFrame = 1;
const long c_Reference_Decrease_Wait_Time = 3600000 * 4;
Client tarafında pack okuma dışında tam anlamıyla çalışan pek fazla bir cache olayı yok. Senin pencerenden yorumlamak gerekirse;
Client, server ile bağlantısı olmayan şeyleri (ağaçlar, zemin, binalar vs.) sürekli ve sürekli render ederek çalışır. Hatta buna itemler,npcler,moblar vs. de dahildir. Bunların server ile tek bağlantısı, kimlikleri ve özellikleridir. (vnum, attr vs.) Bunlar haricinde dokuları, modelleri, hareketleri gibi tüm özellikler clientta kesintisiz bir render döngüsünde çalışır. Bunları söylememin amacı, soruna bakış açını iyi bir noktaya çevirmek aslında.
Yani kısaca ekranda gördüğün her nesne, hatta her pixel sadece clientın yönetimiyle çalışır. Aşağıdaki yazdıklarım da burasıyla bağlantılı olacak.
Sanıyorum ki daha önce yaşadığın soruna ithafen böyle bir konu açtın, eğer öyleyse;
İtemler tak-çıkar yapıldığında ortaya çıkan donmanın,takılmanın pek çok nedeni olabilir fakat konuda bahsettiğin gibi Destroy işlemini pasife çekerek çözülebilecek bir neden olduğunu sanmıyorum.
Ve şahsen bunun nedenlerinin biri de bahsettiğim Render döngülerinden birinin olabileceği yönünde. Tabiki emin değilim, fakat ihtimaller çok.
Çünkü yanlış hatırlamıyorsam bu sorunu hem grafik güncellemesinden sonra yaşamaya başlamıştın, hem de zırh değişirken bellek kullanımının 50-60 MB oynadığını söylemiştin. Buna pek şeyin sebep olabileceği gibi, yanlış çalışan veya bir şekilde kesintiye uğrayan/çakışan Render döngüsü de şişme yaparak neden olabilir. Çünkü döngü hem anlık kilitleniyor, hem de saniyeler içinde yüzlerce kez tetiklenmeye devam ediyor.. Normale döndüğünde ise her şey eski haline geliyor. Bu da olası bir ihtimal.
Metin2'nin Render kodlarındaki (dx8 veya dx9) bağımlı kodlarının hepsi olmasa da çok büyük bir kısmı bambaşka .cpplerde olsalar bile ortak pipeline kullanıyor.
MapOutdoorWater.cpp (sadece su dokusunu çizen ve işleyen dosyadır.. ) dosyasında yapacağın yanlış bir render işlemi karakterlerin veya haritanın görünümlerini olumsuz etkileyebilir.
Ve eğer sebep buysa, bu pek çok renderi kontrol etmen gerekebileceği anlamına gelir. Ve tabi render içindeki matematiksel işlemler ve nesne işlemleri vb. bu kontrole dahildir.
Sonuç olarak konuda bahsettiğin yöntem vb. şeylerin uygulanması uygulama ve kod açısından pek mantıklı bir hareket değildir, bunun yerine sorunun kendisini tespit etmek daha sağlıklı olacaktır. Dediğim gibi, bu sorunun pek çok sebebi olabilir. Tüm bunların yanı sıra srcdeki motion kodlarıyla bile alakalı olabilir. Ancak bunu tespit etmenin tek yolu; her ne kadar uzun sürse de mevcut kodları ve bağlamlarını orjinalleriyle karşılaştırmak.
Evet aslında sorunumun tam çözümü değil hatta alakası bile yok. İlk giyişteki donma problemini bu bahsettiğim şey çözmez. Ben sadece o konudan bağımsız fikir almak istemiştim. Ben aylardır bence yanlış yere bakıyorum işinin ehli bir adam bu sorunu 1 gününü ayırsa yapabilir. Ücreti dahilinde bile yaptıramıyorum. Directx9 sonrası mı oldu? Asıl merak ettiğim şey bu. Tüm hepsini geri saramam maalesef. Dediğiniz gibi tüm render fonksiyonlarını kontrol etmem gerekecek. Açıkçası hevesim de kalmadı bir kaç ay ara vermek istiyorum. Yine uzun uzun yazıp zahmet etmişsiniz teşekkür ederim.
Evet aslında sorunumun tam çözümü değil hatta alakası bile yok. İlk giyişteki donma problemini bu bahsettiğim şey çözmez. Ben sadece o konudan bağımsız fikir almak istemiştim. Ben aylardır bence yanlış yere bakıyorum işinin ehli bir adam bu sorunu 1 gününü ayırsa yapabilir. Ücreti dahilinde bile yaptıramıyorum. Directx9 sonrası mı oldu? Asıl merak ettiğim şey bu. Tüm hepsini geri saramam maalesef. Dediğiniz gibi tüm render fonksiyonlarını kontrol etmem gerekecek. Açıkçası hevesim de kalmadı bir kaç ay ara vermek istiyorum. Yine uzun uzun yazıp zahmet etmişsiniz teşekkür ederim.