Metin2 skill düzenleme, bir sunucunun denge hissini doğrudan belirleyen işlerin başında gelir: bir yeteneğin vurduğu hasar, etkisinin kaç saniye sürdüğü ve tekrar kullanılana kadar geçen bekleme süresi. Bütün bunlar sihirli bir editörde değil, sunucudaki skill_proto tablosunda ve istemci tarafındaki skill_table verisinde tanımlı polinom (formül) ifadeleriyle yönetilir. Bu rehberde bu iki yapıyı, içlerindeki değişkenleri ve hasar/süre ayarlarını bozmadan nasıl dengeleyeceğinizi anlatıyorum.
skill_proto ve skill_table arasındaki fark
İki kaynağı karıştırmak en sık yapılan hatadır, o yüzden önce rolleri ayıralım:
- skill_proto:
playerveritabanındaki MySQL tablosudur. Yeteneğin gerçek davranışını burası tutar — hasar formülü, süre, SP maliyeti, cooldown, ön koşul skilli, maksimum seviye. Hesaplama sunucu tarafında bu tabloya göre yapılır. - skill_table (istemci): client içindeki yetenek tanım dosyasıdır. İkon, isim, animasyon, hedefleme tipi gibi görsel/davranışsal meta veriyi taşır. Hasarı belirlemez; sadece oyuncuya neyin gösterileceğini söyler.
Kural basit: denge (hasar, süre, cooldown) skill_proto'da; görünüm skill_table'da. İkisi tutarsız olursa client bir şey gösterir, sunucu başka bir şey hesaplar ve oyuncular "hasar yanlış" diye şikayet eder.
skill_proto sütunlarını tanımak
Tablo geniştir ama ayar yaparken sürekli aynı birkaç sütuna dokunursunuz. En kritik olanlar:
dwVnum— yeteneğin benzersiz numarası (örn. Üç Katlı Vuruş, Ruh Oku vb.).bMaxLevelvebLevelStep— yeteneğin kaç basamakta hangi tavana çıktığı.szPointOn+szPointPoly— etkinin neye uygulandığı (örn.HP) ve asıl hasar/etki formülü.szSPCostPoly— kullanım başına mana maliyeti.szDurationPoly— süreli etkilerde (zehir, sersemletme, buff) etkinin saniye cinsinden süresi.szCooldownPoly— saniye cinsinden bekleme süresi.szMasterBonusPolyPoint— M1/Grand Master seviyelerinde eklenen bonus.
Çoğu yetenekte ikinci ve üçüncü bir etki için szPointOn2/szPointPoly2 ve szPointOn3/szPointPoly3 sütunları da bulunur — örneğin hem hasar hem yavaşlatma uygulayan bir saldırı.
Polinom değişkenleri: formüller neye göre büyür?
Bu sütunlardaki değerler düz sayı değil, sunucunun çalışma anında çözdüğü kısa matematik ifadeleridir. İçlerinde tanımlı değişkenleri bilmeden değer değiştirmek körlemesine ilerlemektir. En çok kullanılanlar:
k— yeteneğin seviye katsayısı; skill yükseldikçe artan oran. Hasarın seviyeyle ölçeklenmesini sağlayan ana çarpan.lv— büyüyü atan karakterin seviyesi.iq,str,dex,con— karakterin ana statları; sınıfa göre hangi statın baskın olduğu burada belirlenir.atk— saldırı değeri (silah + bonuslar).
Örnek bir hasar formülü şuna benzer:
szPointPoly = 1.5 * k + 2.0 * atk + 0.5 * str
Burada k'yı büyütmek yeteneği seviye atladıkça güçlendirir; atk çarpanını büyütmek ekipmana bağlı patlamayı artırır; str çarpanı ise stat dağılımını ödüllendirir. Bir değeri kabaca yarıya indirmek istiyorsanız çarpanı yarıya indirin, sabit bir tavan eklemeyin — tavanlar üst seviyede oyunu bozar.
Hasar, süre ve cooldown'u dengelemek
Pratikte ayar yaparken üç eksen birbirini etkiler. Tek başına hasarı artırmak yerine üçlüyü birlikte düşünün:
- Hasar (
szPointPoly): PvP odaklı sunucularda küçük çarpan değişimleri bile büyük fark yaratır.kçarpanını %10 oynatıp test edin; doğrudan iki katına çıkarmayın. - Süre (
szDurationPoly): Sersemletme/uyutma gibi kontrol etkilerinde süreyi uzatmak hasardan daha güçlüdür. PvP'de 3 saniyelik bir stun, %20 fazla hasardan fena halde ağır basar. - Cooldown (
szCooldownPoly): Bir yetenek çok güçlüyse hasarı kırpmak yerine cooldown'u uzatmak çoğu zaman daha temiz bir çözümdür; "burst" gücünü korur, spam'i engeller.
Süreli bir etkinin örnek formülü:
szDurationPoly = 2.0 + 1.0 * k -- saniye
szCooldownPoly = 16.0 - 4.0 * k -- yükseldikçe daha kısa bekleme
Cooldown'da seviyeyle azalan bir ifade kullanmak (negatif katsayı) yeteneği üst seviyede daha akıcı hissettirir; ancak değerin asla negatife düşmemesine dikkat edin.
Değişiklikleri güvenle uygulamak ve test etmek
skill_proto sunucu açılışında çekirdek (game core) tarafından belleğe alınır. Yani tabloyu canlı düzenleseniz bile değişiklik anında yansımaz. İzlenecek güvenli akış:
- Her zaman önce yedek alın:
mysqldump player skill_proto > skill_proto_yedek.sql - Değişikliği UPDATE ile, hangi yeteneğe dokunduğunuzu netleştirerek yapın:
UPDATE skill_proto
SET szPointPoly = '1.3 * k + 2.0 * atk + 0.5 * str'
WHERE dwVnum = 1;
- Çekirdeği yeniden başlatın (ya da sunucunuzun skill reload mekanizmasını kullanın) ki yeni değerler belleğe alınsın.
- Test karakterinde her seviye basamağında (1, M1, P, G) hasarı ve süreyi ölçün; tek bir seviyede çalışıyor görünmesi tüm eğrinin dengeli olduğu anlamına gelmez.
İstemci tarafında ikon ya da isim değiştiyse skill_table'ı da güncelleyip client'ı paketlemeyi unutmayın; yoksa oyuncular eski bilgiyi görür. Bir tek yeteneği değiştirip canlıya almadan önce kapalı bir test sunucusunda denemek, "dengeleme yaması sonrası herkes ağladı" senaryosunu önler.
Sık yapılan hatalar
- Formülü düz sayıyla değiştirmek:
500yazarsanız yetenek her seviyede aynı vurur; seviye eğrisi kaybolur. - Değişken adını yanlış yazmak: tanımlı olmayan bir değişken formülü sıfırlar; yetenek "0 hasar" verir.
- skill_proto'yu unutup sadece client'ta oynamak: görsel değişir, hasar değişmez.
- Yedeksiz çalışmak: tek bir yanlış UPDATE bütün sınıfı kullanılmaz hale getirebilir.
Sık Sorulan Sorular
Hasar değişikliği için sunucuyu yeniden başlatmam şart mı?
Genellikle evet. skill_proto açılışta belleğe alındığı için, çekirdeği yeniden başlatmadan (ya da varsa skill reload komutunu kullanmadan) UPDATE'ler oyunda görünmez.
k değişkeni tam olarak neyi ifade ediyor?
k, yeteneğin mevcut seviyesine bağlı bir katsayıdır; skill yükseldikçe artar ve hasarın/sürenin seviyeyle ölçeklenmesini sağlar. Sabit güç için statları, seviyeyle büyüyen güç için k çarpanını ayarlayın.
Bir yeteneği PvP'de zayıflatmak istiyorum, neyi değiştireyim?
Önce cooldown'u (szCooldownPoly) uzatmayı deneyin; bu burst gücünü korurken spam'i keser. Yetmezse k çarpanını küçük adımlarla düşürün ve her değişiklikten sonra ölçün.
Skill dengesi sunucunuzu yapan da bozan da olabilir. Eğer skill_proto formüllerini güvenle düzenleyecek, PvP dengesini test eden ve sürümler arası değişiklik tutan bir kurulum istiyorsanız, benimle iletişime geçin — birlikte sunucunuza özgü temiz bir denge planı çıkaralım.