Client Alt Tarafa alınca, Ekran Kararması Ve Effect Birikmesi Sorunu Fix

  • Konbuyu başlatan Konbuyu başlatan Admin
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 0
  • Görüntüleme Görüntüleme 54

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
Merhaba Değerli Turkmmo Üyeleri,


Hepimizin başına gelmiştir, oyun ekranını alta alında Clientte yaşanan effect birikmesi sonucu ekran kararması yaşanıyor ve clienti kapatıp açmamız gerekiyordu.

:D Tarafımdan kodlanmıştır. :D
Tamamen Edepli bir paylaşımdır. İyi kullanımlar dilerim.

UserInterface: PythonApplication.cpp:


Kod:
Arat: m_kEftMgr.Update(); 2 tane kod var ikisinde sil Arat: DWORD t7=ELTimer_GetMSec(); Altına Ekle: m_kEftMgr.Update();

EterGrnLib: ModelInstanceUpdate.cpp:

Kod:
Arat: GrannySetModelClock(m_pgrnModelInstance, GetLocalTime()); Üstüne Ekle: GrannyFreeCompletedModelControls(m_pgrnModelInstance);


image.png


Not: Marty 5.4 Sonrası için bu fix'i eklemenize gerek yoktur.

İyi kullanımlar Dilerim.
Client Alt Tarafa Alındığında Ekran Kararma ve Effect Birikmesi Sorunu Fix

Metin2 özel sunucularında geliştirme yaparken karşılaşılan yaygın sorunlardan birisi, client alt tarafa alındığında ekranın kararması ve efektlerin birikerek performansı düşürmesidir. Bu durum, oyuncu deneyimini ciddi şekilde etkileyebilir. Bu yazıda, Metin2 client üzerinde yaşanan bu problemi nasıl çözeceğimizi detaylı olarak ele alacağız. Ayrıca, C++ sistem ve client src düzenlemeleriyle nasıl optimize edilebileceğini de inceleyeceğiz.

Sorunun Tanımı
Client alt tarafa alındığında, yani oyun penceresi minimize edildiğinde ya da başka bir uygulamaya geçildiğinde, bazı efektler doğru şekilde temizlenmez. Bu da ekranda karanlık bir efekt kalıntısı oluşmasına ve zamanla efekt birikimine neden olur. Özellikle yoğun savaş sahnelerinden sonra bu sorun daha belirgin hale gelir.

Nedenleri
Bu sorun genellikle şu sebeplerden dolayı ortaya çıkar:
- Render efektlerinin doğru şekilde temizlenmemesi
- Minimize edilme durumunda efekt yönetiminin yapılmaması
- Python GUI ve UIScript üzerinden çalışan arayüzlerde hatalı veri akışı
- Game server programming sırasında render loop içinde eksik temizleme fonksiyonları

Fix Uygulaması
Bu sorunu çözmek için öncelikle client tarafında bazı değişiklikler yapılması gerekir. Aşağıdaki adımlar, client src üzerinde yapılmalıdır:

1. WndBase.cpp dosyasında bulunan OnSize veya OnMinimize fonksiyonlarına özel bir temizleme işlemi ekleyin. Bu işlem, minimize edildiğinde tüm efekt nesnelerini temizler.

2. EffectManager.cpp dosyasında, ClearAllEffects() fonksiyonuna çağrı ekleyin. Böylece minimize durumunda efektlerin tamamı silinir.

3. Render döngüsünde, pencere aktif değilse effect rendering kısmını pasifleştirmek büyük katkı sağlar.

Python GUI Tarafında Düzenlemeler
Metin2 özel sunucularında py root üzerinde çalışan arayüzlerde, pencere durumu takibi için window manager üzerinden özel bir kontrol sistemi kurulabilir. Örneğin, pencere minimize edildiğinde efekt render işlemlerini durduracak bir fonksiyon yazılabilir.

Test ve Doğrulama
Yaptığınız değişikliklerden sonra client'ı derleyin ve test edin. Pencereyi alt tarafa alıp tekrar açtığınızda ekranın kararmadığı ve efekt birikimi olmadığını gözlemleyin. Bu fix, hem PvP sistemler hem de genel oyun performansı için oldukça faydalıdır.

Dilerseniz, bu konuyla ilgili C++ kaynak kod örnekleri ve martysama forumlarında paylaşılan çözümleri de inceleyebilirsiniz. Metin2Lobby olarak sizlere en güncel ve güvenilir çözümleri sunmaya devam ediyoruz.


Fix for Screen Darkening and Effect Accumulation When Client is Minimized

One of the common issues encountered during development of Metin2 private servers is screen darkening and effect accumulation when the client is minimized. This issue can significantly affect player experience. In this article, we will detail how to resolve this issue on the Metin2 client. Additionally, we'll examine how to optimize using C++ system and client src modifications.

Problem Description
When the client is minimized or switched to another application, some effects are not properly cleared. This causes a darkened visual artifact to remain on screen and gradually accumulate more effects over time. This issue becomes especially noticeable after intense battle scenes.

Causes
This issue generally occurs due to the following reasons:
- Incorrect cleanup of render effects
- Lack of proper effect management when minimized
- Faulty data flow in interfaces working via Python GUI and UIScript
- Missing cleanup functions within render loops during game server programming

Applying the Fix
To solve this issue, certain changes must be made on the client side. The following steps should be applied to your client src:

1. Add a custom cleanup function inside the OnSize or OnMinimize functions in WndBase.cpp. This cleans up all effect objects when minimized.

2. Add a call to ClearAllEffects() function in EffectManager.cpp so that all effects are deleted upon minimization.

3. Disabling effect rendering in the render loop when the window is inactive can greatly help.

Modifications on Python GUI Side
In Metin2 private servers, where interfaces run on py root, a custom control system can be implemented via window manager to monitor window status. For example, a function can be written to pause effect rendering when the window is minimized.

Testing and Validation
After making these changes, compile and test the client. When minimizing and restoring the window, ensure that the screen does not darken and no effects accumulate. This fix is highly beneficial for both PvP systems and overall game performance.

If you wish, you can also review C++ source code examples related to this topic and solutions shared on martysama forums. We continue to provide the most current and reliable solutions at Metin2Lobby.
 

Şuan Bu Konuyu Görüntüleyen Kullanıcılar (Toplam : 0, Üye : 0, Misafir : 0)

Benzer konular

Geri
Üst Alt