Metin2 EXP settings are one of the most decisive balances that define a server's character: if the experience curve is too steep, players stall on the very first maps and quit; if it's too flat, there's no sense of achievement and the content is gone in a day. In this guide I break the experience system into its parts — the exp.csv level table, the base exp in mob_proto, the level-gap penalty and the server rate — and explain how to design a level curve that is both playable and sustainable.
What is exp.csv and how is it read?
Sitting in the server's data directory, exp.csv holds the experience required to advance to the next level, one entry per level. The game core loads this table into memory at startup; once a character accumulates enough exp, it levels up and looks at the next row. The file is a simple, single-column list where the line number corresponds to the level:
1500
4000
9000
20000
36000
...
Here the first line is the exp needed to go from level 1 to level 2, the second line is for level 2 to 3, and so on. The length of the table effectively defines the level cap as well: when there are no rows left, the character can no longer level up. So if you want to raise the cap, you need to both add new rows to exp.csv and make sure the PLAYER_MAX_LEVEL-style constant in the source allows it.
Designing the level curve
A good curve isn't a pile of numbers — it's a story about pacing. The classic Metin2 curve is exponential: each level is noticeably more expensive than the last. That lets the early levels flow fast while the final levels become a genuine goal. When I design a curve I keep a few principles in mind:
- A gentle start: the first 30 levels should pass in minutes so a new player can warm up to the systems and not bounce off early.
- Tier walls: deliberately stiffening the curve at certain levels (for example the thresholds where new maps open) nudges players toward fresh content.
- No sudden jumps: if one level costs five times the previous one, the player feels they've hit a wall. Keep the growth ratio gradual.
Rather than writing the curve by hand, generating it with a formula is far more consistent. A simple exponential model can be built like this:
# Generating exp.csv with Python (example model)
base = 1500
for level in range(1, 105):
needed = int(base * (level ** 2.6))
print(needed)
By changing the exponent (2.6 here) and the base, you tune how steep the curve is. Writing the generated output straight into exp.csv and trying it on a test server is far faster than balancing the numbers by eye.
mob_proto: the real source of experience
The level table answers the question "how much exp is needed"; the answer to "where does that exp come from" lives in mob_proto. Each monster's row carries an exp column, which is the base experience it grants on death. The curve and mob exp must complement each other: pair an expensive curve with low mob exp and the game turns into a grind; do the opposite and players hit max level within hours.
In practice you pull one of two levers: either keep the curve (exp.csv) fixed and scale mob exp, or leave mob exp alone and soften the curve. Changing both at once makes the balance hard to track; tuning a single variable at a time is far more predictable.
The level-gap penalty: why a level-1 mob gives no exp to a level 99
An invisible but crucial part of EXP tuning is the level-gap penalty the game core applies when computing rewards. When a monster dies, the core scales the experience it gives by the level difference between the attacking character and the monster. Kill a mob far below your level and you receive only a small fraction of its base exp; this mechanism prevents "powerleveling" at low-level spots and keeps the economy from breaking.
This behaviour is implemented in the server source, inside the reward function, via a ratio table. On private servers, softening this curve (giving reasonable exp even across wide level gaps) is a common modification — but you have to be careful: remove the penalty entirely and you open the door for high-level players to fly their low-level friends up in minutes. That makes your entire leveling pace meaningless.
The server rate (EXP rate) and config
What players mean when they talk about an "x1, x5, x50 server" is the global multiplier applied on top of base experience. Official behaviour is x1; private servers usually apply this multiplier in the source via a variable at reward time (e.g. a g_iExpRate derivative) or through configuration. Applying the multiplier is technically easy; the real work is choosing the right rate:
- Low rate (x1–x5): for long-lived, "classic" servers that keep players slow but engaged. The content lasts for months.
- Mid rate (x10–x50): the most popular bracket. It reduces the grind while still leaving a sense of progression.
- High rate (x100+): for fast, PvP-focused servers. Here leveling stops being an obstacle and becomes a formality; all the balance shifts to items and PvP.
Treat the multiplier as a strategic, not just a numerical, decision: the rate has to reflect the experience your server promises. Lowering the rate after launch angers the community, so trying it with real players on a test server beforehand and committing early is the healthiest approach.
Party, premium and temporary bonuses
A few more layers stack on top of base exp and the multiplier. The core gives players hunting in a party a small bonus based on member count and distributes the experience among members, encouraging group play. Premium accounts and items like experience rings add a separate percentage. On top of that come the temporary exp events you run during periods like weekends.
The trap here is bonus stacking: when x50 rate + premium + ring + a weekend event pile up, the effective rate can climb far above what you designed. When planning the curve, account for the highest bonus scenario too; otherwise the server you designed to be "slow" can be finished in an hour on event days.
Frequently Asked Questions
I edited exp.csv but nothing changed in-game, why?
The game core only reads this table at startup. After saving the file you have to restart the relevant core/channel. Also make sure the file is in the correct data directory and that each line contains a single valid number; a broken line can render everything after that point meaningless.
Can I raise the level cap just by adding rows to exp.csv?
Not on its own. Adding rows to exp.csv extends the table, but the maximum level is also bounded by a constant in the source. If the two don't match, the character gets stuck at a certain level. To genuinely raise the cap you may need to update the source as well.
Does a high-rate server attract more players?
It draws attention at first, but it doesn't retain players on its own. A very high rate makes leveling meaningless and players quickly reach the "nothing left to do" point. Sustainability comes from balancing the rate against the amount of content — systems, PvP, events.
Want to set up a balanced experience curve for your server? From exp.csv design to mob_proto scaling and tuning the level-gap penalty, we can plan the whole exp system together. Get in touch and let's talk about your server's pacing.