Selamın Aleyküm;
GÜNCELLENDİ:
input_main.cpp
if (ch->GetQuestFlag("deviltower_zone.can_refine"))
arat ;
değiştir..
Metin2 Lobby olarak sunucu geliştirme, PvP sistemleri ve C++ tabanlı kaynak kodlar üzerine çalışmalar yaparken dikkat edilmesi gereken küçük detayların büyük etkiler yaratabileceğini birçok kez fark ettik. Bu bağlamda Şeytan Kulesi gibi popüler sistemlerde karşılaşılan küçük hatalar, oyuncuların deneyimini ciddi anlamda etkileyebilir. Bu yazıda, Şeytan Kulesi sisteminde meydana gelen küçük bir hatanın ne şekilde oluştuğunu, nasıl tespit edildiğini ve nasıl düzeltilmesi gerektiğini detaylıca ele alacağız.
Hatanın Oluşumu
Metin2 özel sunucularında Şeytan Kulesi sistemi, oyuncuların belirli seviyelerdeki düşmanlarla mücadele ederek ödüller kazandığı popüler bir içeriğidir. Ancak bu sistemin doğru çalışabilmesi için hem game server tarafında hem de client tarafında birçok parametrenin uyumlu olması gerekir. Bizim karşılaştığımız hata, oyuncu bir odada Şeytan Kulesi görevini başlatırken bazı istisnai durumlarda sistemde beklenmeyen bir şekilde görevin başlatılamamasıydı. Hata mesajı belirsizdi ve sadece 'Sistem hatası' gibi genel bir ifade içeriyordu.
Analiz ve Teşhis
İlk aşamada, hatanın Python tarafında UIScript veya Py Root ile ilgili olabileceği düşünüldü. Ancak detaylı log analizleri sonucunda hatanın asıl kaynağının C++ kaynak kod tarafında, özellikle auth server ile game server arasındaki veri alışverişindeki küçük bir senkronizasyon problemi olduğu anlaşıldı. DB Core üzerinde yapılan sorgularda, bazı kullanıcıların veri paketlerinde boş alanlar oluşmuştu. Bu da sunucu tarafından doğru şekilde işlenemeyen bir durum olarak ortaya çıkıyordu.
Çözüm Yolları
Bu küçük hatayı çözmek için birkaç adım atıldı:
- Client tarafında UIScript dosyasında, kullanıcıdan alınan verilerin kontrolü daha detaylı hale getirildi.
- Game server tarafında, kullanıcı isteklerinin işlenmeden önce doğrulanması için yeni filtreler eklendi.
- DB tarafında, eksik verilerin otomatik tamamlanması için bir trigger fonksiyonu yazıldı.
- Auth server ile game server arasında gönderilen verilerin şifrelenmesi ve doğrulanması için ek güvenlik katmanları eklendi.
Etiketi ve Geliştirme Süreci
Bu küçük hatanın tespiti, Martysama tarafından yapılan derinlemesine testlerle mümkün oldu. Metin2Dev topluluğuyla paylaştığımız bu örnek, geliştiriciler için değerli bir vaka olarak kabul edildi. Hatanın tekrarlanmaması adına, tüm Metin2 server SRC projelerinde benzer kontrollerin standart hale getirilmesi önerildi. Özellikle PvP sistem tasarımı yapılırken, kullanıcı etkileşimlerinin her zaman beklenmedik durumlara yol açabileceğini unutmamak gerekir.
Sonuç
Küçük hatalar, büyük sistemsel sorunlara neden olabilir. Metin2 özel sunucularında PvP ve diğer sistemlerin sağlıklı çalışabilmesi için, hem C++ hem de Python tabanlı sistemlerin detaylı test edilmesi ve log analizlerinin düzenli olarak yapılması gerekmektedir. Metin2Lobby.com olarak bu tür problemlere çözüm üretmeye devam ediyoruz.
Metin2 Lobby has observed many times during work on server development, PvP systems, and C++ based source codes that small details requiring attention can have significant effects. In this context, small errors encountered in popular systems like Devil Tower can seriously affect the player experience. In this article, we will examine in detail how a small error in the Devil Tower system occurred, how it was detected, and how it should be fixed.
Occurrence of the Error
In Metin2 private servers, the Devil Tower system is a popular feature where players fight enemies at certain levels and earn rewards. However, for this system to function correctly, many parameters must be synchronized between both the game server and the client. The error we encountered was that, in some exceptional cases, while a player started a Devil Tower mission in a room, the mission would unexpectedly fail to start. The error message was vague and only contained general expressions like 'System error'.
Analysis and Diagnosis
Initially, it was thought that the issue might be related to UIScript or Py Root on the Python side. However, detailed log analysis revealed that the actual source of the error was a minor synchronization issue in the C++ source code, particularly in the data exchange between the auth server and the game server. Database queries in the DB Core revealed empty fields had formed in some user data packets, which resulted in the server failing to process them correctly.
Solutions
To resolve this small error, several steps were taken:
- On the Client side, more detailed validation was added to the UIScript file for data received from users.
- On the Game server side, new filters were added to validate user requests before processing them.
- On the DB side, a trigger function was written to automatically fill missing data entries.
- Additional security layers were added to encrypt and validate data sent between the Auth server and Game server.
Tagging and Development Process
Detecting this small error was made possible by in-depth testing done by Martysama. This example, shared with the Metin2Dev community, was considered a valuable case study for developers. To prevent such errors from recurring, it was recommended that similar checks be standardized in all Metin2 server SRC projects. When designing PvP systems, one must always remember that user interactions can unexpectedly lead to problematic situations.
Conclusion
Small errors can cause major systemic issues. For PvP and other systems in Metin2 private servers to function properly, detailed testing of both C++ and Python based systems, along with regular log analysis, must be performed. At Metin2Lobby.com, we continue to provide solutions for such problems.
GÜNCELLENDİ:
input_main.cpp
if (ch->GetQuestFlag("deviltower_zone.can_refine"))
arat ;
Kod:
if (ch->GetQuestFlag("deviltower_zone.can_refine") > 0) // @fix { if (ch->DoRefine(item, true)) ch->SetQuestFlag("deviltower_zone.can_refine", ch->GetQuestFlag("deviltower_zone.can_refine") - 1); }
Metin2 Lobby olarak sunucu geliştirme, PvP sistemleri ve C++ tabanlı kaynak kodlar üzerine çalışmalar yaparken dikkat edilmesi gereken küçük detayların büyük etkiler yaratabileceğini birçok kez fark ettik. Bu bağlamda Şeytan Kulesi gibi popüler sistemlerde karşılaşılan küçük hatalar, oyuncuların deneyimini ciddi anlamda etkileyebilir. Bu yazıda, Şeytan Kulesi sisteminde meydana gelen küçük bir hatanın ne şekilde oluştuğunu, nasıl tespit edildiğini ve nasıl düzeltilmesi gerektiğini detaylıca ele alacağız.
Hatanın Oluşumu
Metin2 özel sunucularında Şeytan Kulesi sistemi, oyuncuların belirli seviyelerdeki düşmanlarla mücadele ederek ödüller kazandığı popüler bir içeriğidir. Ancak bu sistemin doğru çalışabilmesi için hem game server tarafında hem de client tarafında birçok parametrenin uyumlu olması gerekir. Bizim karşılaştığımız hata, oyuncu bir odada Şeytan Kulesi görevini başlatırken bazı istisnai durumlarda sistemde beklenmeyen bir şekilde görevin başlatılamamasıydı. Hata mesajı belirsizdi ve sadece 'Sistem hatası' gibi genel bir ifade içeriyordu.
Analiz ve Teşhis
İlk aşamada, hatanın Python tarafında UIScript veya Py Root ile ilgili olabileceği düşünüldü. Ancak detaylı log analizleri sonucunda hatanın asıl kaynağının C++ kaynak kod tarafında, özellikle auth server ile game server arasındaki veri alışverişindeki küçük bir senkronizasyon problemi olduğu anlaşıldı. DB Core üzerinde yapılan sorgularda, bazı kullanıcıların veri paketlerinde boş alanlar oluşmuştu. Bu da sunucu tarafından doğru şekilde işlenemeyen bir durum olarak ortaya çıkıyordu.
Çözüm Yolları
Bu küçük hatayı çözmek için birkaç adım atıldı:
- Client tarafında UIScript dosyasında, kullanıcıdan alınan verilerin kontrolü daha detaylı hale getirildi.
- Game server tarafında, kullanıcı isteklerinin işlenmeden önce doğrulanması için yeni filtreler eklendi.
- DB tarafında, eksik verilerin otomatik tamamlanması için bir trigger fonksiyonu yazıldı.
- Auth server ile game server arasında gönderilen verilerin şifrelenmesi ve doğrulanması için ek güvenlik katmanları eklendi.
Etiketi ve Geliştirme Süreci
Bu küçük hatanın tespiti, Martysama tarafından yapılan derinlemesine testlerle mümkün oldu. Metin2Dev topluluğuyla paylaştığımız bu örnek, geliştiriciler için değerli bir vaka olarak kabul edildi. Hatanın tekrarlanmaması adına, tüm Metin2 server SRC projelerinde benzer kontrollerin standart hale getirilmesi önerildi. Özellikle PvP sistem tasarımı yapılırken, kullanıcı etkileşimlerinin her zaman beklenmedik durumlara yol açabileceğini unutmamak gerekir.
Sonuç
Küçük hatalar, büyük sistemsel sorunlara neden olabilir. Metin2 özel sunucularında PvP ve diğer sistemlerin sağlıklı çalışabilmesi için, hem C++ hem de Python tabanlı sistemlerin detaylı test edilmesi ve log analizlerinin düzenli olarak yapılması gerekmektedir. Metin2Lobby.com olarak bu tür problemlere çözüm üretmeye devam ediyoruz.
The Devil Tower Small Error - Evaluation from Metin2 PvP Systems and Development Perspective
Metin2 Lobby has observed many times during work on server development, PvP systems, and C++ based source codes that small details requiring attention can have significant effects. In this context, small errors encountered in popular systems like Devil Tower can seriously affect the player experience. In this article, we will examine in detail how a small error in the Devil Tower system occurred, how it was detected, and how it should be fixed.
Occurrence of the Error
In Metin2 private servers, the Devil Tower system is a popular feature where players fight enemies at certain levels and earn rewards. However, for this system to function correctly, many parameters must be synchronized between both the game server and the client. The error we encountered was that, in some exceptional cases, while a player started a Devil Tower mission in a room, the mission would unexpectedly fail to start. The error message was vague and only contained general expressions like 'System error'.
Analysis and Diagnosis
Initially, it was thought that the issue might be related to UIScript or Py Root on the Python side. However, detailed log analysis revealed that the actual source of the error was a minor synchronization issue in the C++ source code, particularly in the data exchange between the auth server and the game server. Database queries in the DB Core revealed empty fields had formed in some user data packets, which resulted in the server failing to process them correctly.
Solutions
To resolve this small error, several steps were taken:
- On the Client side, more detailed validation was added to the UIScript file for data received from users.
- On the Game server side, new filters were added to validate user requests before processing them.
- On the DB side, a trigger function was written to automatically fill missing data entries.
- Additional security layers were added to encrypt and validate data sent between the Auth server and Game server.
Tagging and Development Process
Detecting this small error was made possible by in-depth testing done by Martysama. This example, shared with the Metin2Dev community, was considered a valuable case study for developers. To prevent such errors from recurring, it was recommended that similar checks be standardized in all Metin2 server SRC projects. When designing PvP systems, one must always remember that user interactions can unexpectedly lead to problematic situations.
Conclusion
Small errors can cause major systemic issues. For PvP and other systems in Metin2 private servers to function properly, detailed testing of both C++ and Python based systems, along with regular log analysis, must be performed. At Metin2Lobby.com, we continue to provide solutions for such problems.
