Şeytan Kulesi Küçük bir hata

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

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
Selamın Aleyküm;


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);                 }
değiştir..


Şeytan Kulesi Küçük Bir Hata - Metin2 PvP Sistemleri ve Geliştirme Açısından Değerlendirme


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.
 

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

Benzer konular

Geri
Üst Alt