Metin2 - Şeytan Kulesi Lag Sorunu Çözümü [HOW TO FIX GOTO LAG]
Öncelikle varlıkların ve senkronizasyonlarının m2 üzerinde nasıl çalıştığını anlamamız gerekiyor. Oyun çekirdeği, karakterin yakınındaki tüm varlıkları içeren bir 'görünüm listesine' sahiptir ve karakterinizi her hareket ettirdiğinizde bu listeyi işleyerek güncel tutar Bu liste, içinde meydana gelen çeşitli değişikliklerin, karakter ekleme, çıkarma veya güncelleme paketleri aracılığıyla müşteriye gönderilmesiyle sürekli olarak güncel tutulur.
Şimdi CHARACTER::Show'un içine bakarak bu kod parçasını bulabiliriz:
Kod:
if (bChangeTree) { if (GetSectree()) GetSectree()->RemoveEntity(this); ViewCleanup(); }
CHARACTER::Show, koordinatlarla kullanılırken goto komutu tarafından kullanılan yolla aynı olan, yükleme sayfası olmayan warp yoludur. Komutu kullanan oyuncunun gerçekten sectree'yi değiştirip değiştirmediğini kontrol eder, bu durumda CEntity::ViewCleanup kullanarak görünümü temizler.
Şimdi bu sonuncunun içine bakıyoruz:
Kod:
void CEntity::ViewCleanup() { ENTITY_MAP::iterator it = m_map_view.begin(); while (it != m_map_view.end()) { LPENTITY entity = it->first; ++it; entity->ViewRemove(this, false); } m_map_view.clear(); }
Gördüğünüz gibi, ikinci argüman olarak false geçerek ViewRemove kullanıyor, bunun ne anlama geldiğine bir göz atalım.
Kod:
oid CEntity::ViewRemove(LPENTITY entity, bool recursive) { ENTITY_MAP::iterator it = m_map_view.find(entity); if (it == m_map_view.end()) return; m_map_view.erase(it); if (!entity->m_bIsObserver) entity->EncodeRemovePacket(this); if (recursive) entity->ViewRemove(this, false); }
İkinci argüman (bool recursive), varlığın "Görünümden kaldırılması" işleminin fonksiyonu çağıran kişi üzerinde bile tekrarlanıp tekrarlanmayacağını belirler. CHARACTER::Show'un bu özel durumunda, ViewCleanup false değerini geçtiğinden, EncodeRemovePacket'in remove entity paketini yalnızca hedef varlığa göndereceği, çağırana göndermeyeceği anlamına gelir; bu da CHARACTER::Show'u kullandıktan sonra görünüm aralığınızın sıfırlanmayacağı gerçeğine çevrilebilir.
Buraya kadar korkunç bir şey yok. Evet, sunucu beni dışarı taşırken yakınımdaki varlıkları kaldırmayacak. Ancak bunun sonucunda istemci tarafında çok daha korkunç bir şey olur. CPythonCharacterManager, varlıkları yöneten, onları canlı tutan veya oyun çekirdeği güncelleme paketleri gönderdiğinde onları yok eden sınıftır.
Bu sınıfın içine bakarak, ana karakterden gerçekten uzak olduğu sonucuna varılan herhangi bir varlığı otomatik olarak yok etmek için kullanılan bir kontrol bulabiliriz.
Buraya kadar korkunç bir şey yok. Evet, sunucu beni dışarı taşırken yakınımdaki varlıkları kaldırmayacak. Ancak bunun sonucunda istemci tarafında çok daha korkunç bir şey olur. CPythonCharacterManager, varlıkları yöneten, onları canlı tutan veya oyun çekirdeği güncelleme paketleri gönderdiğinde onları yok eden sınıftır.
Bu sınıfın içine bakarak, ana karakterden gerçekten uzak olduğu sonucuna varılan herhangi bir varlığı otomatik olarak yok etmek için kullanılan bir kontrol bulabiliriz.
Kod:
int nDistance = int(pkInstEach->NEW_GetDistanceFromDestInstance(*pkInstMain)); if (nDistance > CHAR_STAGE_VIEW_BOUND + 10) { __DeleteBlendOutInstance(pkInstEach); m_kAliveInstMap.erase(c); dwDeadInstCount++; }
Bu kontrolün yararlı olması gerekiyor, evet, kameradan gerçekten uzakta olan bir varlığı işlemek için kaynak israf etmemeye yardımcı olacaktır. Ancak bu kontrol, zindan deneyimini gerçekten kötü hale getiren FPS düşüşünün ortak sorumlusudur.
CNetworkActorManager'ın Güncelleme çağrısı içinde ne yaptığını görelim.
Thank you ikarus
Metin2 Şeytan Kulesi Lag Sorunu ve Çözüm Yöntemleri
Metin2 oyununda Şeytan Kulesi gibi yoğun NPC trafiği ve savaş sahneleri barındıran haritalarda yaşanan lag sorunları, hem oyuncuların hem de sunucu yöneticilerinin karşılaştığı ciddi problemlerdir. Bu tür alanlarda FPS düşmesi, giriş çıkış gecikmeleri ve kilitlenmeler oldukça sık rastlanan durumlardır. Bu yazıda Metin2Lobby olarak Metin2 özel sunucularında Şeytan Kulesi lag sorununa yönelik teknik çözümler sunuyoruz.
Lag Oluşum Nedenleri
Lag oluşumunda birçok faktör rol oynar. Özellikle NPC yoğunluğu, canavar AI sistemleri, savaş animasyonları, particle efektleri ve sunucu tıklama gibi unsurlar bir araya geldiğinde Şeytan Kulesi gibi alanlarda ciddi performans düşüşleri meydana gelir. Bu durumda client-side ve server-side optimizasyonlar yapılmalıdır.
Client-Side Çözüm Önerileri
Oyuncular için önerilen ilk adımlar şunlardır:
- Grafik ayarlarını düşürmek: Parçacık efektleri, gölge kalitesi ve ekran parlaklığı gibi ayarlarda değişiklik yapmak faydalı olabilir.
- GameSpeed ayarlarını düzenlemek: C++ sistem üzerinden speed hack veya delay gibi değerler optimize edilebilir.
- Python GUI tarafında render performansını artırmak: Py Root dosyalarında UIScript ile yapılan ekran render işlemleri optimize edilebilir.
Server-Side Geliştirme ve Optimizasyonlar
Sunucu tarafında yapılan optimizasyonlar daha etkilidir. C++ kaynak kod üzerinde şu geliştirmeler yapılabilir:
- AI thread sayısını azaltarak işlemci yükünü düşürmek.
- NPC spawn sistemini optimize etmek; NPC sayısını veya spawn frekansını ayarlamak.
- Network buffer ayarlarını yükselterek veri akışını dengelemek.
- Auth ve game server senkronizasyonunu optimize etmek.
Martysama ve Metin2Dev Katkıları
Topluluk tarafından geliştirilen Martysama ve benzeri script sistemleri ile client tarafında lag azaltıcı modüller eklenebilir. Ayrıca Metin2Dev topluluğu üzerinden source edit konularında destek alınabilir. Metin2 development sürecinde pack dosyaları da doğru yapılandırıldığında performans artışı gözlemlenebilir.
Sonuç
Metin2 özel sunucularında Şeytan Kulesi gibi yoğun alanlarda lag sorunları tamamen ortadan kaldırılamasa da, client ve server tarafında yapılan teknik düzenlemelerle ciddi oranda azaltılabilmektedir. Game Core ve DB Core yapıları optimize edildiğinde kullanıcı deneyimi ciddi anlamda artar. Metin2Lobby olarak bu tür teknik sorunlara çözüm üretmeye devam ediyoruz.
Metin2 Devil Tower Lag Issue and Solutions
Metin2 features such as the Devil Tower, which contains dense NPC traffic and combat scenes, often lead to significant lag issues. These areas frequently cause FPS drops, entry delays, and freezes for both players and server administrators. In this article, Metin2Lobby provides technical solutions for Metin2 private servers facing Devil Tower lag.
Reasons Behind Lag Formation
Various factors contribute to lag. In particular, NPC density, monster AI systems, combat animations, particle effects, and server tick rates can combine to cause significant performance drops in areas like the Devil Tower. In such cases, client-side and server-side optimizations are required.
Client-Side Solution Suggestions
The first recommended steps for players include:
- Reducing graphics settings: Adjustments to particle effects, shadow quality, and screen brightness can be helpful.
- Adjusting GameSpeed settings: Values such as speed hacks or delays can be optimized via C++ systems.
- Enhancing render performance on Python GUI: Screen rendering operations done via UIScript in Py Root files can be optimized.
Server-Side Development and Optimizations
Optimizations on the server side tend to be more effective. On the C++ source code, the following improvements can be made:
- Reducing AI threads to decrease CPU load.
- Optimizing the NPC spawn system; adjusting NPC numbers or spawn frequency.
- Increasing network buffer settings to balance data flow.
- Optimizing auth and game server synchronization.
Contributions from Martysama and Metin2Dev
Scripts like Martysama, developed by the community, can add lag-reducing modules on the client side. Additionally, support for source edits can be obtained through the Metin2Dev community. When pack files are correctly configured during the Metin2 development process, performance improvements can be observed.
Conclusion
While lag issues in intense areas like the Devil Tower on Metin2 private servers cannot be completely eliminated, they can be significantly reduced through technical adjustments on both the client and server sides. When Game Core and DB Core structures are optimized, user experience improves notably. Metin2Lobby continues to provide solutions for such technical challenges.
Kod:
void CNetworkActorManager::__OLD_Update() { __UpdateMainActor(); CPythonCharacterManager& rkChrMgr = __GetCharacterManager(); std::map<DWORD, SNetworkActorData>::iterator i; for (i = m_kNetActorDict.begin(); i != m_kNetActorDict.end(); ++i) { SNetworkActorData& rkNetActorData = i->second; rkNetActorData.UpdatePosition(); CInstanceBase* pkInstFind = rkChrMgr.GetInstancePtr(rkNetActorData.m_dwVID); if (!pkInstFind) { if (__IsVisibleActor(rkNetActorData)) __AppendCharacterManagerActor(rkNetActorData); } } }
Ziyaretçiler için gizlenmiş link,görmek için üye olmalısınız!
Giriş yap veya üye ol.
Ziyaretçiler için gizlenmiş link,görmek için üye olmalısınız!
Giriş yap veya üye ol.
Thank you ikarus
Metin2 Şeytan Kulesi Lag Sorunu ve Çözüm Yöntemleri
Metin2 oyununda Şeytan Kulesi gibi yoğun NPC trafiği ve savaş sahneleri barındıran haritalarda yaşanan lag sorunları, hem oyuncuların hem de sunucu yöneticilerinin karşılaştığı ciddi problemlerdir. Bu tür alanlarda FPS düşmesi, giriş çıkış gecikmeleri ve kilitlenmeler oldukça sık rastlanan durumlardır. Bu yazıda Metin2Lobby olarak Metin2 özel sunucularında Şeytan Kulesi lag sorununa yönelik teknik çözümler sunuyoruz.
Lag Oluşum Nedenleri
Lag oluşumunda birçok faktör rol oynar. Özellikle NPC yoğunluğu, canavar AI sistemleri, savaş animasyonları, particle efektleri ve sunucu tıklama gibi unsurlar bir araya geldiğinde Şeytan Kulesi gibi alanlarda ciddi performans düşüşleri meydana gelir. Bu durumda client-side ve server-side optimizasyonlar yapılmalıdır.
Client-Side Çözüm Önerileri
Oyuncular için önerilen ilk adımlar şunlardır:
- Grafik ayarlarını düşürmek: Parçacık efektleri, gölge kalitesi ve ekran parlaklığı gibi ayarlarda değişiklik yapmak faydalı olabilir.
- GameSpeed ayarlarını düzenlemek: C++ sistem üzerinden speed hack veya delay gibi değerler optimize edilebilir.
- Python GUI tarafında render performansını artırmak: Py Root dosyalarında UIScript ile yapılan ekran render işlemleri optimize edilebilir.
Server-Side Geliştirme ve Optimizasyonlar
Sunucu tarafında yapılan optimizasyonlar daha etkilidir. C++ kaynak kod üzerinde şu geliştirmeler yapılabilir:
- AI thread sayısını azaltarak işlemci yükünü düşürmek.
- NPC spawn sistemini optimize etmek; NPC sayısını veya spawn frekansını ayarlamak.
- Network buffer ayarlarını yükselterek veri akışını dengelemek.
- Auth ve game server senkronizasyonunu optimize etmek.
Martysama ve Metin2Dev Katkıları
Topluluk tarafından geliştirilen Martysama ve benzeri script sistemleri ile client tarafında lag azaltıcı modüller eklenebilir. Ayrıca Metin2Dev topluluğu üzerinden source edit konularında destek alınabilir. Metin2 development sürecinde pack dosyaları da doğru yapılandırıldığında performans artışı gözlemlenebilir.
Sonuç
Metin2 özel sunucularında Şeytan Kulesi gibi yoğun alanlarda lag sorunları tamamen ortadan kaldırılamasa da, client ve server tarafında yapılan teknik düzenlemelerle ciddi oranda azaltılabilmektedir. Game Core ve DB Core yapıları optimize edildiğinde kullanıcı deneyimi ciddi anlamda artar. Metin2Lobby olarak bu tür teknik sorunlara çözüm üretmeye devam ediyoruz.
Metin2 Devil Tower Lag Issue and Solutions
Metin2 features such as the Devil Tower, which contains dense NPC traffic and combat scenes, often lead to significant lag issues. These areas frequently cause FPS drops, entry delays, and freezes for both players and server administrators. In this article, Metin2Lobby provides technical solutions for Metin2 private servers facing Devil Tower lag.
Reasons Behind Lag Formation
Various factors contribute to lag. In particular, NPC density, monster AI systems, combat animations, particle effects, and server tick rates can combine to cause significant performance drops in areas like the Devil Tower. In such cases, client-side and server-side optimizations are required.
Client-Side Solution Suggestions
The first recommended steps for players include:
- Reducing graphics settings: Adjustments to particle effects, shadow quality, and screen brightness can be helpful.
- Adjusting GameSpeed settings: Values such as speed hacks or delays can be optimized via C++ systems.
- Enhancing render performance on Python GUI: Screen rendering operations done via UIScript in Py Root files can be optimized.
Server-Side Development and Optimizations
Optimizations on the server side tend to be more effective. On the C++ source code, the following improvements can be made:
- Reducing AI threads to decrease CPU load.
- Optimizing the NPC spawn system; adjusting NPC numbers or spawn frequency.
- Increasing network buffer settings to balance data flow.
- Optimizing auth and game server synchronization.
Contributions from Martysama and Metin2Dev
Scripts like Martysama, developed by the community, can add lag-reducing modules on the client side. Additionally, support for source edits can be obtained through the Metin2Dev community. When pack files are correctly configured during the Metin2 development process, performance improvements can be observed.
Conclusion
While lag issues in intense areas like the Devil Tower on Metin2 private servers cannot be completely eliminated, they can be significantly reduced through technical adjustments on both the client and server sides. When Game Core and DB Core structures are optimized, user experience improves notably. Metin2Lobby continues to provide solutions for such technical challenges.
