playersettingmodule.py deki ilgili yeri düzenle
def SetGeneralMotions(mode, folder):
chrmgr.SetPathName(folder)
chrmgr.RegisterMotionMode(mode)
chrmgr.RegisterCacheMotionData(mode, chr.MOTION_WAIT, "wait.msa")
chrmgr.RegisterCacheMotionData(mode, chr.MOTION_WALK, "walk.msa")
chrmgr.RegisterCacheMotionData(mode, chr.MOTION_RUN, "run.msa")
chrmgr.RegisterCacheMotionData(mode, chr.MOTION_DAMAGE, "damage.msa", 50)
chrmgr.RegisterCacheMotionData(mode, chr.MOTION_DAMAGE, "damage_1.msa", 50)
chrmgr.RegisterCacheMotionData(mode, chr.MOTION_DAMAGE_BACK, "damage_2.msa", 50)
chrmgr.RegisterCacheMotionData(mode, chr.MOTION_DAMAGE_BACK, "damage_3.msa", 50)
# chrmgr.RegisterCacheMotionData(mode, chr.MOTION_DAMAGE_FLYING, "damage_flying.msa")
chrmgr.RegisterCacheMotionData(mode, chr.MOTION_STAND_UP, "falling_stand.msa")
chrmgr.RegisterCacheMotionData(mode, chr.MOTION_DAMAGE_FLYING_BACK, "back_damage_flying.msa")
chrmgr.RegisterCacheMotionData(mode, chr.MOTION_STAND_UP_BACK, "back_falling_stand.msa")
chrmgr.RegisterCacheMotionData(mode, chr.MOTION_DEAD, "dead.msa")
chrmgr.RegisterCacheMotionData(mode, chr.MOTION_DIG, "dig.msa")
//Ben böyle kullanıyorum
# chrmgr.RegisterCacheMotionData(mode, chr.MOTION_DAMAGE_FLYING, "damage_flying.msa")
chrmgr.RegisterCacheMotionData(mode, chr.MOTION_STAND_UP, "falling_stand.msa")
chrmgr.RegisterCacheMotionData(mode, chr.MOTION_DAMAGE_FLYING_BACK, "back_damage_flying.msa")
chrmgr.RegisterCacheMotionData(mode, chr.MOTION_STAND_UP_BACK, "back_falling_stand.msa")
ilgili yerleri yorumlayın
bunlar vs sırasında kullanılan animasyonlar altta özellikelrini yazdım isteidğini kullanın istemediğinizi kullanmayın.
chrmgr.RegisterCacheMotionData(mode, chr.MOTION_DAMAGE_FLYING, "damage_flying.msa")
bu özellik karakteri yerden kaldırmaz.Yani oyuncu otoya aldımı hemide vslik sunucuysa bi yakaladı mı yerden kaldırmıyor.
chrmgr.RegisterCacheMotionData(mode, chr.MOTION_STAND_UP, "falling_stand.msa")
bu özellik yere düşme animasyonu bu kalsın.
chrmgr.RegisterCacheMotionData(mode, chr.MOTION_STAND_UP_BACK, "back_falling_stand.msa")
bu özellik fena değil ama karakterde kayma yapıyor.yani oyuncu zeminin üstünde kayıyor.
chrmgr.RegisterCacheMotionData(mode, chr.MOTION_STAND_UP_BACK, "back_falling_stand.msa")
bu özellik de oyuncualrı anlık donduruyor bunu kaldırmayabilirsiniz çok etki etmiyor vsye güzellik katıyor.
(bunu eklemedim ama isteyen olursa)
ikinci olarak vs sırasında zaten karakterler birbirlerinin içinden geçiyor gözüküyor çok problem oalcağını zannetmiyorum.
bu sebeple karakter içinden geçmeyide eklersek iyice kaymaları azaltmış olacağız.
gamelib
ActorInstanceCollisionDetection.cpp
BOOL CActorInstance::TestActorCollision(CActorInstance & rVictim)
{
ekle
if (rVictim.IsPC())
return false;
bazı arkadaşlar ya sv açmadıkları için yada oyuncu şikayetleriyle iglilenmedikleri için konu yanlış gibi geliyor fakat şu ana kadar paylaşılan konular karakter kaymasını çözmedi
vs sırasında eklenilen özellikler olabilir fakat randımanlı çalışmıyor.
bazı arkdaşlar videodaki gibi server seviyor.
bunun okçuyla yada savaşçıyla alakası yok hepsinde aynı.Dediğim gibi az sv açmış yada oyuncu şikayetleriyle ilgilenmemiş kişi anlamaz.
Metin2 Karakter Kayması Sorunu ve Düzenlemesi
Metin2 özel sunucularında karşılaşılan karakter kayması, oyun deneyimini ciddi anlamda etkileyen bir sorundur.
Bu durum genellikle oyun içinde karakterin beklenmedik hareketler yapması, animasyonların düzgün çalışmayışı ya da oyun içi koordinat sistemlerinde sapmalar şeklinde kendini gösterir. Özellikle PvP sistemlerinde bu durum ciddi avantaj veya dezavantajlar yaratabilir. Bu nedenle karakter kaymasıyla ilgili düzeltmeler, Metin2 geliştirme sürecinde öncelikli konulardan biridir.
Karakter Kaymasının Nedenleri
Karakter kayması, genellikle client-server senkronizasyonu eksikliklerinden kaynaklanır. Örneğin, oyun içi bir hareket sırasında sunucuya gönderilen koordinat bilgisi ile oyuncunun kendi bilgisayarında hesaplanan koordinat farklı olabilir. Bu fark zamanla birikerek karakterin yer değiştirmesine veya aniden başka bir konuma atlamasına sebep olur.
Diğer yaygın nedenler arasında C++ sistem tarafında yapılan hatalı modifikasyonlar, game core dosyalarındaki eksiklikler veya auth-server ile game-server arasındaki veri aktarımındaki gecikmeler yer alır. Ayrıca client src üzerinde yapılan değişiklikler, karakter modeli ve animasyon dosyalarında meydana gelen tutarsızlıklar da bu soruna neden olabilir.
Düzeltme Yöntemleri
Karakter kayması sorununun çözümü için birkaç temel adım atılmalıdır.
Öncelikle server src üzerindeki movement ve position fonksiyonları incelenmelidir. Bu fonksiyonlarda zamanlayıcı (timer) veya koordinat doğrulama (validation) eksiklikleri varsa mutlaka düzeltilmelidir. Aynı zamanda db-core tarafında karakter pozisyonunun doğru şekilde veritabanına yazılması sağlanmalıdır.
Client tarafında ise uiscript ve py root dosyalarında yer alan pozisyon güncelleme fonksiyonları gözden geçirilmelidir. Python GUI üzerinden alınan girdilerin doğru şekilde server'a iletildiğinden emin olunmalıdır. Bu süreçte pack dosyalarında bulunan animasyon ve model tanımlarının da uyumlu olması gerekir.
Martysama gibi gelişmiş Metin2 development ortamları kullanılıyorsa, bu sistemlerde sunucu ile istemci arasında senkronizasyon sağlayan yapılar mevcuttur. Bu yapılar doğru şekilde yapılandırıldığında karakter kayması büyük ölçüde engellenebilir.
Kodlama ve Test Süreci
Karakter hareket sistemi, C++ tabanlı bir sistem olduğu için detaylı test süreçleri gereklidir. Kodlarda yapılan her değişiklikten sonra compile işlemi yapılmadan önce dikkatlice kontrol edilmelidir. Özellikle source edit sırasında pozisyon verileriyle ilgili fonksiyonlar değiştiriliyorsa, bu değişikliklerin tüm sunucu katmanlarında (auth, game, db) uyumlu çalıştığından emin olunmalıdır.
Test aşamasında, farklı coğrafi bölgelerden bağlantı kurulan sunucularda karakter kayması gözlemlenmelidir. Gecikme (latency) değerlerinin yüksek olduğu durumlarda bile karakterin doğru şekilde yerleştirildiği kontrol edilmelidir. Bu testler, Metin2 lobby gibi platformlar üzerinden topluluk yardımıyla da yapılabilir.
Sonuç
Karakter kayması, Metin2 özel sunucularında kullanıcı memnuniyetini doğrudan etkileyen bir problemdir. Doğru C++ sistem yönetimi, core yapılarının sağlamlığı ve iyi bir client-server senkronizasyonu ile bu sorunun üstesinden kolayca gelinebilir. Geliştiricilerin bu konuda dikkatli ve titiz davranması, oyun deneyiminin kalitesini artırmak açısından hayati öneme sahiptir.
Character Sliding Issue and Its Correction in Metin2
Character sliding in Metin2 private servers is a problem that significantly affects the gaming experience.
This issue usually manifests itself as unexpected movements of the character, malfunctioning animations, or shifts in in-game coordinate systems. Especially in PvP systems, this can cause serious advantages or disadvantages. Therefore, corrections related to character sliding are among the top priorities in the Metin2 development process.
Causes of Character Sliding
Character sliding typically stems from client-server synchronization issues. For example, during an in-game movement, the coordinate information sent to the server may differ from the coordinate calculated on the player's own computer. This difference accumulates over time, causing the character to shift its position or suddenly jump to another location.
Other common causes include incorrect modifications in the C++ system, missing elements in game core files, or delays in data transmission between the auth-server and game-server. Additionally, changes made to client src, as well as inconsistencies in character model and animation files, can also cause this issue.
Correction Methods
Several fundamental steps should be taken to resolve the character sliding issue.
Firstly, the movement and position functions within the server src must be examined. If there are any timer or coordinate validation deficiencies in these functions, they must be corrected immediately. Also, the character position must be correctly written to the database in the db-core side.
On the client side, the position update functions located in uiscript and py root files should be reviewed. It must be ensured that inputs taken via Python GUI are properly transmitted to the server. In this process, the animation and model definitions found in pack files must also be compatible.
If advanced Metin2 development environments such as Martysama are used, synchronization mechanisms between server and client exist in these systems. When configured correctly, character sliding can largely be prevented.
Coding and Testing Process
Since the character movement system is based on C++, detailed testing processes are required. Every change made in the code must be carefully reviewed before performing the compile operation. Especially if functions related to position data are modified during source edit, it must be ensured that these changes work compatibly across all server layers (auth, game, db).
During the testing phase, character sliding should be observed on servers connected from different geographical regions. It should be verified that the character is correctly positioned even under high latency conditions. These tests can also be conducted with community support through platforms like Metin2 lobby.
Conclusion
Character sliding is a problem that directly affects user satisfaction in Metin2 private servers. Proper C++ system management, robustness of core structures, and good client-server synchronization can easily overcome this issue. Careful and meticulous behavior by developers regarding this matter is vital for improving the quality of the gaming experience.
