aslain.dev
0%
01 Hizmetler 02 Hakkımda 03 Projeler 04 Stack 05 Blog 06 İletişim
← Tüm makaleler Metin2

Metin2 Skills bearbeiten: Schaden und Dauer einstellen

Metin2 Skills bearbeiten gehört zu den Aufgaben, die das Balance-Gefühl eines Servers am unmittelbarsten bestimmen: wie viel Schaden eine Fähigkeit anrichtet, wie viele Sekunden ihr Effekt anhält und wie lange man wartet, bis man sie wieder einsetzen kann. Nichts davon lebt in einem magischen Editor — all das wird durch Polynom-Ausdrücke (Formeln) gesteuert, die in der serverseitigen Tabelle skill_proto und in den clientseitigen skill_table-Daten gespeichert sind. In dieser Anleitung gehe ich beide Strukturen durch, die darin enthaltenen Variablen und wie du Schaden und Dauer einstellst, ohne die Kurve zu zerstören.

Der Unterschied zwischen skill_proto und skill_table

Die beiden Quellen zu verwechseln ist der häufigste Fehler, also trennen wir zuerst ihre Rollen:

  • skill_proto: eine MySQL-Tabelle in der player-Datenbank. Sie enthält das tatsächliche Verhalten der Fähigkeit — Schadensformel, Dauer, SP-Kosten, Cooldown, Voraussetzungs-Skill, Maximalstufe. Die Berechnung erfolgt serverseitig auf Basis dieser Tabelle.
  • skill_table (Client): die Fähigkeits-Definitionsdatei im Client. Sie trägt visuelle/verhaltensbezogene Metadaten wie Symbol, Name, Animation und Zieltyp. Sie bestimmt keinen Schaden; sie sagt dem Spieler nur, was angezeigt werden soll.

Die Regel ist einfach: Balance (Schaden, Dauer, Cooldown) lebt in skill_proto; das Aussehen lebt in skill_table. Sind die beiden inkonsistent, zeigt der Client eine Sache, während der Server eine andere berechnet, und die Spieler beschweren sich, dass „der Schaden falsch ist".

Die skill_proto-Spalten kennenlernen

Die Tabelle ist breit, aber beim Einstellen fasst du immer dieselben paar Spalten an. Die kritischsten:

  • dwVnum — die eindeutige Nummer der Fähigkeit (z. B. Dreifachschlag, Geistpfeil usw.).
  • bMaxLevel und bLevelStep — in wie vielen Stufen der Skill steigt und welche Obergrenze er erreicht.
  • szPointOn + szPointPoly — worauf der Effekt angewendet wird (z. B. HP) und die Hauptformel für Schaden/Effekt.
  • szSPCostPoly — die Manakosten pro Einsatz.
  • szDurationPoly — bei zeitlich begrenzten Effekten (Gift, Betäubung, Buff) die Dauer in Sekunden.
  • szCooldownPoly — der Cooldown in Sekunden.
  • szMasterBonusPolyPoint — der Bonus, der auf Meister- / Großmeister-Rängen hinzukommt.

Die meisten Fähigkeiten haben auch Spalten szPointOn2/szPointPoly2 und szPointOn3/szPointPoly3 für einen zweiten und dritten Effekt — zum Beispiel ein Angriff, der sowohl Schaden als auch eine Verlangsamung anwendet.

Polynom-Variablen: Was lässt die Formeln skalieren?

Die Werte in diesen Spalten sind keine reinen Zahlen, sondern kurze mathematische Ausdrücke, die der Server zur Laufzeit auflöst. Einen Wert zu ändern, ohne die definierten Variablen zu kennen, heißt blind zu segeln. Die am häufigsten verwendeten:

  • k — der Stufen-Koeffizient des Skills; ein Verhältnis, das mit steigender Skillstufe wächst. Der Hauptmultiplikator, der den Schaden mit dem Rang skalieren lässt.
  • lv — die Stufe des Charakters, der den Zauber wirkt.
  • iq, str, dex, con — die Kernattribute des Charakters; welches Attribut je Klasse dominiert, wird hier entschieden.
  • atk — der Angriffswert (Waffe + Boni).

Eine beispielhafte Schadensformel sieht so aus:

szPointPoly = 1.5 * k + 2.0 * atk + 0.5 * str

Hier stärkt das Erhöhen von k die Fähigkeit mit steigender Stufe; das Erhöhen des atk-Multiplikators steigert den ausrüstungsabhängigen Burst; und der str-Multiplikator belohnt die Attributverteilung. Willst du einen Wert grob halbieren, halbiere den Multiplikator — füge keine feste Obergrenze hinzu, denn Obergrenzen zerstören das Spiel auf hoher Stufe.

Schaden, Dauer und Cooldown ausbalancieren

In der Praxis beeinflussen sich die drei Achsen gegenseitig. Statt nur den Schaden zu erhöhen, denke das Trio zusammen:

  • Schaden (szPointPoly): Auf PvP-orientierten Servern machen schon kleine Multiplikator-Änderungen einen großen Unterschied. Verschiebe den k-Multiplikator um 10 % und teste; verdopple ihn nicht einfach.
  • Dauer (szDurationPoly): Bei Kontrolleffekten wie Betäubung/Schlaf ist das Verlängern der Dauer stärker als Schaden. Im PvP überwiegt ein 3-sekündiger Stun deutlich 20 % mehr Schaden.
  • Cooldown (szCooldownPoly): Ist eine Fähigkeit zu stark, ist das Verlängern des Cooldowns oft eine sauberere Lösung als das Kürzen des Schadens; es bewahrt den Burst und verhindert Spam.

Eine Beispielformel für einen zeitlich begrenzten Effekt:

szDurationPoly = 2.0 + 1.0 * k     -- Sekunden
szCooldownPoly = 16.0 - 4.0 * k    -- kürzere Wartezeit auf höherem Rang

Einen Ausdruck zu verwenden, der mit der Stufe beim Cooldown abnimmt (ein negativer Koeffizient), lässt die Fähigkeit auf hohem Rang flüssiger wirken; achte nur darauf, dass der Wert nie unter null fällt.

Änderungen sicher anwenden und testen

skill_proto wird beim Serverstart vom Game Core in den Speicher geladen. Selbst wenn du die Tabelle live bearbeitest, wird die Änderung also nicht sofort wirksam. Ein sicherer Ablauf:

  • Sichere immer zuerst: mysqldump player skill_proto > skill_proto_backup.sql
  • Nimm die Änderung per UPDATE vor und mache deutlich, welche Fähigkeit du anfasst:
UPDATE skill_proto
SET szPointPoly = '1.3 * k + 2.0 * atk + 0.5 * str'
WHERE dwVnum = 1;
  • Starte den Core neu (oder nutze den Skill-Reload-Mechanismus deines Servers), damit die neuen Werte in den Speicher geladen werden.
  • Miss an einem Testcharakter Schaden und Dauer auf jedem Rang (1, M1, P, G); dass es auf einem Rang funktioniert, heißt nicht, dass die gesamte Kurve ausbalanciert ist.

Hat sich clientseitig ein Symbol oder Name geändert, denke daran, auch skill_table zu aktualisieren und den Client neu zu packen; sonst sehen die Spieler die alte Info. Eine einzelne Fähigkeitsänderung auf einem geschlossenen Testserver zu probieren, bevor du live gehst, verhindert das Szenario „nach dem Balance-Patch haben alle geweint".

Häufige Fehler

  • Die Formel durch eine feste Zahl ersetzen: Schreibst du 500, trifft die Fähigkeit auf jedem Rang gleich; die Stufenkurve verschwindet.
  • Einen Variablennamen falsch schreiben: Eine undefinierte Variable setzt die Formel auf null; die Fähigkeit macht „0 Schaden".
  • skill_proto vergessen und nur den Client bearbeiten: Das Bild ändert sich, der Schaden nicht.
  • Ohne Backup arbeiten: Ein einziges falsches UPDATE kann eine ganze Klasse unbrauchbar machen.

Häufige Fragen

Muss ich für eine Schadensänderung den Server neu starten?

Meistens ja. Da skill_proto beim Start in den Speicher geladen wird, erscheinen UPDATEs nicht im Spiel, ohne den Core neu zu starten (oder einen Skill-Reload-Befehl zu nutzen, falls dein Build einen hat).

Was genau stellt die Variable k dar?

k ist ein Koeffizient, der an die aktuelle Stufe der Fähigkeit gebunden ist; er wächst mit steigender Skillstufe und lässt Schaden/Dauer mit dem Rang skalieren. Stelle Attribute für feste Stärke ein und den k-Multiplikator für Stärke, die mit der Stufe wächst.

Ich will eine Fähigkeit im PvP schwächen — was soll ich ändern?

Versuche zuerst, den Cooldown zu verlängern (szCooldownPoly); das bewahrt den Burst und schneidet den Spam weg. Reicht das nicht, senke den k-Multiplikator in kleinen Schritten und miss nach jeder Änderung.

Skill-Balance kann deinen Server ebenso aufbauen wie zerstören. Wenn du ein Setup willst, das skill_proto-Formeln sicher bearbeitet, PvP-Balance testet und Änderungen über Versionen hinweg verfolgt, nimm Kontakt mit mir auf — lass uns gemeinsam einen sauberen, auf deinen Server zugeschnittenen Balance-Plan erstellen.

Bu kategorideki tüm yazılar →

Devamı için