Brazil's biggest MU Online portal — since 2003
Tutorial Intermediate Tutoriais

How to Configure EXP Rates per Level on MU Online Server

Learn to configure differentiated EXP rates per level range on your MU Online server using .ini files and SQL Server commands.

VI ViciadosMU Team · Updated on 3 jul 2026 · ⏱ 12 min read

Configuring EXP rates in a granular way — different for level ranges, maps, or time periods — is one of the most impactful adjustments to the gameplay experience on your MU Online private server. This guide covers the complete process for MuServer Season 6 (the most common in private servers), with references for Season 2/3 and Season 12+.

Understanding the EXP Architecture in MuServer

Before editing any file, it is essential to understand how GameServer calculates the EXP awarded to a character:

  1. The killed monster has a base EXP value defined in the database
  2. GameServer applies the global multiplier (ExpRate) configured in the .ini
  3. The result is compared against the per-level experience table to determine if a level up occurred
  4. Additional bonuses (VIP, events, items) are added on top

Knowing this chain, you can intervene at any point to adjust progression.

Step 1: Locate and Edit GameServer.ini

The main GameServer configuration file is located at:

GameServer/GameServer.ini

Open it with Notepad++ or any plain-text editor. Locate the [GameServer] or [Exp] section depending on your version:

[GameServer]
ExpRate=10
MasterExpRate=5
MasterLevel=400
MaxLevel=400

Parameter meanings:

ParameterFunctionTypical value
ExpRateGlobal EXP multiplier (1 = normal, 10 = 10x)5–100
MasterExpRateEXP multiplier for Master Level (above the base max level)3–50
MasterLevelLevel at which the Master Level system activates400
MaxLevelMaximum level a regular character can reach400
Dica: For servers focused on slow progression and longevity, use ExpRate between 5 and 20. For short-duration or fun servers, values between 100 and 9999 are common.

Step 2: Configure Differentiated EXP per Level Range via SQL

The most powerful approach to controlling the progression curve is to directly adjust the experience-per-level table in the database. This allows the first levels to be very fast while gradually making higher levels more time-consuming.

Connect to SQL Server Management Studio and run on the MuOnline database:

-- Check the current structure of the level experience table
USE MuOnline;
SELECT TOP 20 Level, Experience
FROM LevelExperience
ORDER BY Level ASC;

To reduce the EXP required at levels 1 to 150 (accelerated early phase):

-- Reduce EXP required at the first 150 levels by 50%
UPDATE MuOnline.dbo.LevelExperience
SET Experience = Experience * 0.5
WHERE Level BETWEEN 1 AND 150;

To make levels 151 to 300 demand more effort (intermediate phase):

-- Increase EXP required at levels 151-300 by 20%
UPDATE MuOnline.dbo.LevelExperience
SET Experience = Experience * 1.2
WHERE Level BETWEEN 151 AND 300;

To make levels 301 to max significantly more challenging (advanced phase):

-- Double the EXP required for levels above 300
UPDATE MuOnline.dbo.LevelExperience
SET Experience = Experience * 2.0
WHERE Level > 300;
Atenção: Always back up the table before any bulk UPDATE. Run: SELECT * INTO LevelExperience_backup FROM LevelExperience before starting modifications. If something goes wrong, restore with: UPDATE le SET le.Experience = bkp.Experience FROM LevelExperience le JOIN LevelExperience_backup bkp ON le.Level = bkp.Level.

Step 3: Configure EXP per Monster Individually

Each monster's EXP is defined in the Monster table (or MonsterAttr depending on the version). To view and adjust:

-- List the 20 monsters with the most EXP
USE MuOnline;
SELECT TOP 20 Number, Name, Experience
FROM Monster
ORDER BY Experience DESC;

-- Increase EXP of all Tarkan monsters by 30%
-- (assuming Tarkan IDs range from 45 to 62 in your version)
UPDATE MuOnline.dbo.Monster
SET Experience = Experience * 1.3
WHERE Number BETWEEN 45 AND 62;

To identify monster ID ranges per map, check the file:

GameServer/Data/Maps/MapName.bmd

Or use this query:

-- Query monsters of a specific map via spawn table
SELECT m.Number, m.Name, m.Experience, s.MapNumber
FROM Monster m
JOIN MonsterSetBase s ON m.Number = s.Type
WHERE s.MapNumber = 9  -- 9 = Tarkan in most S6 versions
ORDER BY m.Experience DESC;

Step 4: Configure EXP per Event (Blood Castle, Devil Square)

Events grant EXP bonuses that can be configured in separate .ini files or via database tables. In standard Season 6:

Blood Castle — edit GameServer/Data/Events/BloodCastle.ini:

[BloodCastle]
ExpBonus=200
; Bonus in % added to EXP during the event
; 200 = characters earn 200% more EXP inside Blood Castle

Devil Square — edit GameServer/Data/Events/DevilSquare.ini:

[DevilSquare]
ExpBonus=150
ExpBonusPerRound=50
; ExpBonus: base bonus
; ExpBonusPerRound: extra bonus per completed round (cumulative)
Nota: In versions where events are SQL-controlled (common in Season 12+), the parameters are found in the EventConfig or EventSchedule table. Run SELECT * FROM EventConfig WHERE EventType IN ('BloodCastle', 'DevilSquare') to locate the correct fields in your version.

Step 5: Implement Time-Based EXP (Happy Hour)

To create periods of increased EXP (e.g., weekends with 2x EXP), the cleanest approach is to use a scheduled database script in SQL Server Agent.

Create the EXP control stored procedure:

USE MuOnline;
GO

CREATE PROCEDURE sp_SetExpRate
    @NewRate INT
AS
BEGIN
    -- Update configuration variable at runtime
    -- (works on GameServers that query this table dynamically)
    UPDATE ServerConfig
    SET Value = CAST(@NewRate AS VARCHAR(10))
    WHERE ConfigKey = 'ExpRate';

    -- Log the change
    INSERT INTO AdminLog (Action, Value, ExecutedAt)
    VALUES ('ExpRateChange', CAST(@NewRate AS VARCHAR(10)), GETDATE());
END;
GO

-- Activate double EXP every Friday at 8 PM
EXEC sp_SetExpRate @NewRate = 20;  -- If base is 10, this doubles the rate

-- Return to normal Monday at midnight
EXEC sp_SetExpRate @NewRate = 10;
Dica: If your GameServer reads ExpRate from .ini only on startup, the method above will not work without restarting the server. In those cases, use the in-game GM command /setexp 20 (available in some packs) or create a .bat script that edits the .ini and automatically restarts GameServer.exe via Windows Task Scheduler.

Batch script for automatic ExpRate switching:

@echo off
REM Script: toggle_exp.bat
REM Path: C:\MuServer\scripts\toggle_exp.bat

SET INIFILE=C:\MuServer\GameServer\GameServer.ini
SET NEWRATE=%1

REM Replace ExpRate value in ini using PowerShell
powershell -Command "(Get-Content '%INIFILE%') -replace 'ExpRate=\d+', 'ExpRate=%NEWRATE%' | Set-Content '%INIFILE%'"

REM Restart GameServer (adjust process name as needed)
taskkill /F /IM GameServer.exe
timeout /T 3
start "" "C:\MuServer\GameServer\GameServer.exe"

echo ExpRate changed to %NEWRATE% on %DATE% %TIME%

To schedule: Windows Task Scheduler → New Task → Action: toggle_exp.bat 20 (to increase) and toggle_exp.bat 10 (to revert).

Step 6: Verify and Test Your Configuration

After applying changes, follow this checklist:

  1. Restart GameServer.exe to load the new GameServer.ini
  2. Connect with a GM (Game Master) account to the server
  3. Use the command /addexp 1000000 (or your pack's equivalent) to test that EXP is being applied correctly
  4. Check GameServer logs in GameServer/Logs/ for configuration errors
  5. Test with a level 1 character and verify that progression in the early levels matches expectations
-- Diagnostic query: check a character's current EXP
SELECT Name, Level, Experience, Resets
FROM MuOnline.dbo.Character
WHERE Name = 'CharacterName';
Atenção: Never modify the LevelExperience table while characters are online. Characters with accumulated EXP close to a level-up threshold may behave unexpectedly if the threshold changes while their session is active. Perform database maintenance with the server offline or during low-activity windows.

Common Troubleshooting

Problem: ExpRate changed in .ini but no effect after restart Solution: Check if another configuration file is overriding it — some packs use GameServer.cfg or Config.ini in subdirectories. Run: findstr /S /I "ExpRate" C:\MuServer\GameServer\*.ini *.cfg to locate all files containing the parameter.

Problem: Characters receive no EXP on any map Solution: Verify ExpRate is not set to 0. Also check that the DataServer service is running — without DataServer, GameServer cannot write EXP progression.

Problem: Event EXP (Blood Castle) seems identical to normal EXP Solution: The BloodCastle.ini file may not be loading. Confirm the exact path — some packs use GameServer/Data/Events/bc_config.ini or read values directly from a SQL table named EventPrize or BCConfig.

Perguntas frequentes

Can I have different EXP rates per map?

Yes. In GameServer/Data/Maps/ each map has a configuration file where you can set a local EXP multiplier that overrides the global rate defined in GameServer.ini. Combine the ExpMultiplier parameter in the map file with the base rate to create distinct progression curves per region.

What happens if I accidentally set ExpRate=0?

The server treats ExpRate=0 as a null rate and no character gains experience. Always keep a minimum value of 1. After fixing the value, restart GameServer to apply the change — .ini changes only take effect on process initialization.

How do I reset a character's accumulated EXP via SQL?

Execute: UPDATE MuOnline.dbo.Character SET Experience = 0, Level = 1 WHERE Name = 'CharName'. Make sure the character is offline before running the command to avoid data conflicts between the database and the active GameServer session.

What is the difference between ExpRate in .ini and the LevelExperience table in the database?

ExpRate is the global multiplier applied on top of each monster's base EXP. The LevelExperience table (or its equivalent in your version) defines how much total EXP is required to advance from one level to the next. Both work together: increase ExpRate so players level faster, and adjust LevelExperience to control the total required per level.

VI

ViciadosMU Team

Equipe editorial do ViciadosMU — portal de MU Online no ar desde 2003.

Keep reading

Related articles