Ctrl+K

Installation

1. Database Setup

# Create the game and login databases
mysql -u root -p -e "CREATE DATABASE l2jevo CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
mysql -u root -p -e "CREATE DATABASE l2jlamedb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"

# Import schemas
mysql -u root -p l2jevo   < dist/sql/full_install.sql
mysql -u root -p l2jlamedb < dist/sql/lamedb/full_install.sql

2. Configuration

Edit the following files before building. All files are TOML — see the Configuration page for the full format reference.

config/main/Server.toml

[server]
GameserverHostname = "*"
GameserverPort     = 7777
LoginHost          = "127.0.0.1"
LoginPort          = 9014

[database]
Driver   = "org.mariadb.jdbc.Driver"
URL      = "jdbc:mariadb://127.0.0.1/l2jevo"
Login    = "l2juser"
Password = "yourpassword"
MaximumPoolSize = 10

config/main/Rates.toml

[xp]
RateXp            = 1.0
RateSp            = 1.0

[drop]
RateDropItems     = 1.0
RateDropAdena     = 1.0
RateSpoilDrop     = 1.0

3. Build

# Build Core first
cd L2JEvolution.HighFive
ant

# Build Engine (depends on Core bin/)
cd ../L2JEvolution.Engine
ant

# Build GeoEngine (optional — if using L2D geodata)
cd ../L2JEvolution.GeoEngine
ant
Engine's build.xml references ../L2JEvolution.HighFive/bin on the Ant classpath. Core must be compiled before Engine. Ant will fail with package l2r does not exist otherwise.

4. Start the Server

Option A — DarkRiseLauncher.exe (Windows, recommended)

The dist/ folder contains DarkRiseLauncher.exe — a GUI launcher that manages Java path, JVM flags, DB checks and starts both LoginServer and GameServer with one click.

Before first run, edit dist/launcher_config.json:

{
  "JavaPath":        "C:\\Program Files\\Java\\jdk-25.0.2\\bin\\java.exe",
  "JavaParams":      "-Xms512m -Xmx6G",
  "LoginServerPath": "C:\\server\\login",
  "GameServerPath":  "C:\\server\\game",
  "LibsPath":        "C:\\server\\libs",
  "MySqlBinPath":    "C:\\xampp\\mysql\\bin",
  "MySqlHost":       "localhost",
  "MySqlPort":       3306,
  "LoginDbName":     "l2jevo",
  "LoginDbUser":     "root",
  "LoginDbPassword": "",
  "GameDbName":      "l2jevo",
  "GameDbUser":      "root",
  "GameDbPassword":  ""
}

Then double-click DarkRiseLauncher.exe and use the Start buttons in the GUI.

Option B — Shell scripts

# Linux
./loginserver.sh
./gameserver.sh

# Windows
loginserver.bat
gameserver.bat

Option C — Directly via Java

# LoginServer
java -Xms256m -Xmx512m -cp "bin/*;lib/*" l2r.loginserver.L2LoginServer

# GameServer
java -Xms2g -Xmx6g -XX:+UseZGC -XX:+ZGenerational ^
     -XX:ZAllocationSpikeTolerance=5 ^
     -cp "bin/*;lib/*" l2r.gameserver.GameServer

5. Verify Startup

Expected log output on successful startup:

INFO  TomlConfigLoader     - Loaded TOML config: Server.toml (12 keys)
INFO  L2DatabaseFactory    - Connection pool initialised (pool size: 10)
INFO  GameServer           - Loading items...
INFO  GameServer           - Loading NPCs...
INFO  GameServer           - GameServer started on port 7777
If you see Failed to load TOML config, the working directory is wrong. The JVM must be launched from the folder that contains config/.