Windows 10/11 · Local server

Set up the AAEmu 10.x client and server.

Follow the steps in order. First collect the files, then configure the database and server, build it, and finally start each program. Your progress is saved in this browser.

.NET 10MySQL 8ArcheAge CN 10.0.2.13AAEmu r575
Step 2 of 9

Choose where to keep the files

Use any drive and any folder you want. The C: paths below are examples only. The server and client do not need to be on the same drive.

Enter your actual folders. Changing either path updates the commands and JSON examples throughout this guide.

The guide uses <SERVER_ROOT> and <CLIENT_ROOT> as placeholders. Replace them with your own paths whenever you edit a command or configuration file.

SERVER_ROOT

The folder containing the AAEmu Login, World, Scripts, and SQL folders.

C:\AAEmu

CLIENT_ROOT

The folder containing the unpacked ArcheAge client. ZoneHost will also be placed here.

C:\Games\ArcheAge

What runs on your PC

MySQLStores accounts and characters.127.0.0.1:3306
LoginAccepts the client login and shows the character list.127.0.0.1:1237
WorldRuns the game rules and connects Login to the zones.127.0.0.1:1239
ZoneHostLoads the actual map zones.Connects to World on :1240
Step 1 of 9

Download all required files

Do not start configuring anything yet. Download every item first so you do not have to stop halfway through the setup.

ItemPut it hereDownload
AAEmu repository
Use branch client_version/zone-10.0.2_r575. Clone it or download that branch as a ZIP.
Extract it anywhere you want. That folder becomes <SERVER_ROOT>.GitHub ↗
ArcheAge CN client
10.0.2.13 / r575
Extract it anywhere with enough space. That folder becomes <CLIENT_ROOT>.Drive ↗ MEGA ↗
game_decrypted.sqlite3Used by World and ZoneHost. You will also make a renamed copy for the server.MEGA ↗
Multilingual compact.sqlite3Used only by the game client. Do not use it as the server database.MEGA ↗
AAEmu.ZoneHost.exe<CLIENT_ROOT>\Bin64MEGA ↗
AAEmu Zone ManagerAny folderMEGA ↗

Also install

Step 3 of 9

Put each file in the correct folder

When this step is finished, your client folder should match the layout below. The game\ folder must contain the unpacked game data.

Client + zone layout

<CLIENT_ROOT>\Bin64\archeage.exe
<CLIENT_ROOT>\Bin64\AAEmu.ZoneHost.exe
<CLIENT_ROOT>\Bin64\x2game-dev_dedicate.dll
<CLIENT_ROOT>\game\
<CLIENT_ROOT>\game\config\dedicated.cfg
<CLIENT_ROOT>\game\db\game_decrypted.sqlite3
<CLIENT_ROOT>\game\db\compact.sqlite3
<CLIENT_ROOT>\game_pak-
The two SQLite files are not interchangeable. Zone Manager must use game_decrypted.sqlite3. The multilingual compact.sqlite3 is only for the playable client.

Create the server database copy

Copy game_decrypted.sqlite3 to the server folder and rename the copy to compact.sqlite3. Do not rename or remove the original client-side file.

<CLIENT_ROOT>\game\db\game_decrypted.sqlite3
→ <SERVER_ROOT>\AAEmu.Game\Data\compact.sqlite3

Unpacked game data

  1. Rename the original game_pak file to game_pak-.
  2. Keep unpacked contents in <CLIENT_ROOT>\game\.
  3. Point ClientData.Sources to game_pak-.
Step 4 of 9

Configure the zone host

Open <CLIENT_ROOT>\game\config\dedicated.cfg and replace its entire contents with the configuration below. Save it as plain text.

sys_dedicated_server = 1
e_render = 0
r_Driver = "Null"
r_Width = 64
r_Height = 64
world_serveraddr = "127.0.0.1"
world_serverport = 1240
log_Verbosity = 3
db_location = "game/db/game_decrypted.sqlite3"
locale = "en_us"
bot_account = Test
cl_account=Test
cl_shadow = 1234
cl_account_id = 1
cl_serveraddr = 127.0.0.1
auth_serveraddr = 127.0.0.1
auth_serverport=1237
editor_serveraddr = 127.0.0.1
editor_server_branch_addr = 127.0.0.1
--world_serveraddr = 127.0.0.1
cl_serverport = 1239
e_cbuffer = 0
e_render = 0
e_time_of_day_engine_update = 0
e_phys_foliage = 0
e_vegetation_min_size = 1
e_vegetation_create_collision_only = 1
e_stream_cgf = 1
--prefab_cache_xml = 0
prefab_use_mmf = 1
p_notify_epsilon_living = 0.05
ca_thread = 0
ca_UnloadAnim = 0
min_time_step = 0
log_includeMemory = 1
sys_console_draw_always = 0
Optional language change: use the multilingual client database, then set locale = en_us or locale = ru in C:\ArcheAge\Documents\system.cfg. The 10.x client requires this file to be decrypted before editing and re-encrypted afterward.
Step 5 of 9

Create the MySQL databases

Complete this step once. Use MySQL Workbench or the MySQL command line, and keep the MySQL root password nearby for the next step.

Create databases
aaemu_login and aaemu_game
Import base schemas
Import SQL\aaemu_login.sql into aaemu_login. Import SQL\aaemu_game.sql into aaemu_game.
Create the test account
Run SQL\examples\test-user.sql against aaemu_login. This creates username test with password test.
Apply game updates manually
Run 2026-07-30_aaemu_game_account_attributes.sql and 2026-07-30_zz_aaemu_game_account_attribute_starts.sql from SQL\updates\ against aaemu_game.
Important: the base aaemu_game.sql file does not contain every required update. Run the update files manually. If World later reports a missing account_attributes table, these updates were skipped.
Step 6 of 9

Configure Login, Game, and World

The examples use the MySQL username root and password root. Replace the password in both JSON files if yours is different. Keep SecretKey the same in Login and Game.

Login · AAEmu.Login\Config.Local.json

{
  "SecretKey": "test", "AutoAccount": true, "SkipHostResolve": true,
  "InternalNetwork": { "Host": "*", "Port": 1234 },
  "Network": { "Host": "*", "NumConnections": 10, "Port": 1237 },
  "Connections": { "MySQLProvider": {
    "Database": "aaemu_login", "Host": "localhost",
    "Password": "root", "Port": 3306, "User": "root"
  }},
  "GameServers": [{ "Id": 1, "Name": "AAEmu.Game", "Host": "127.0.0.1", "Port": 1239, "Hidden": false }]
}

Game · AAEmu.Game\Config.Local.json

{
  "Id": 1, "AdditionalesId": [], "SecretKey": "test",
  "Network": { "Host": "*", "Port": 1239, "NumConnections": 10 },
  "StreamNetwork": { "Host": "*", "Port": 1250 },
  "WebApiNetwork": { "Host": "*", "Port": 1280 },
  "LoginNetwork": { "Host": "127.0.0.1", "Port": 1234 },
  "Connections": { "MySQLProvider": {
    "Host": "127.0.0.1", "Port": 3306, "User": "root",
    "Password": "root", "Database": "aaemu_game"
  }},
  "CharacterNameRegex": "^[a-zA-Z0-9а-яА-Я]{1,18}$",
  "MaxConcurencyThreadPool": 8, "HeightMapsEnable": true,
  "DebugInfo": true, "DebugInfoLevel": 100, "DefaultLanguage": "en_us"
}
Next, open AAEmu.Game\Configurations\ClientData.json. Set ClientData.Sources to the full path of your renamed file: <CLIENT_ROOT>\game_pak-.

World · AAEmu.WorldServer\AAEmu.World\Config.json

{
  "ZoneNetwork": { "Host": "*", "Port": 1240 },
  "GameBridge": { "Enabled": false, "Host": "*", "Port": 1241 },
  "ClientNetwork": { "Enabled": false, "Host": "*", "Port": 1239 },
  "PublicNetwork": { "Host": "127.0.0.1", "Port": 1239 },
  "GameContentRoot": "<SERVER_ROOT_JSON>\\AAEmu.Game\\bin\\Debug\\net10.0",
  "ZoneGameDataRoot": "<CLIENT_ROOT_JSON>\\game",
  "NpcSpawnerActivate": { "Enabled": true, "PrewarmOnZoneLoaded": false,
    "X": 10322.5, "Y": 16014.4, "Z": 356.6, "Radius": 1024 }
}
Check this again after building. The build can copy a blank World configuration into the output folder. The copy beside AAEmu.World.exe must contain the same GameContentRoot and ZoneGameDataRoot paths.
Step 7 of 9

Build the Login and World servers

Open PowerShell, move to the server root, and run both build scripts. Wait for the first build to finish before starting the second.

Set-Location "<SERVER_ROOT>"
.\Scripts\BuildLoginServer.bat
.\Scripts\BuildWorldServer.bat

Confirm both files exist

<SERVER_ROOT>\AAEmu.Game\Data\compact.sqlite3
<SERVER_ROOT>\AAEmu.WorldServer\AAEmu.World\bin\Debug\net10.0\Data\compact.sqlite3
On this branch, World includes the game logic. Do not start AAEmu.Game.exe separately.
Step 8 of 9

Start the server and client

Use a separate window for Login, World, and Zone Manager. Do not close an earlier program when starting the next one.

1MySQL
2Login :1237
3World :1239
4Zone :1240
5Client

Login

Set-Location "<SERVER_ROOT>\Scripts"
.\StartLoginServer.bat

Wait until port 1237 is ready.

World

Set-Location "<SERVER_ROOT>\Scripts"
.\StartWorldServer.bat

Wait for Server started.

Zone Manager

Host executable<CLIENT_ROOT>\Bin64\AAEmu.ZoneHost.exe
Working folder<CLIENT_ROOT>\Bin64\
Database file<CLIENT_ROOT>\game\db\game_decrypted.sqlite3
World address127.0.0.1:1240
First zone to loadGweonid · w_gweonid_forest_1

Start the zone and wait until Zone Manager reports ZoneLoaded. Then use the launcher supplied with the client package and set its login address to 127.0.0.1:1237.

Step 9 of 9

Fix common startup problems

ProblemCheck
Login or World cannot see DBMySQL is running and passwords match Config.Local.json.
Cannot find Game content rootGameContentRoot is filled in project and built World configs.
Missing account_attributesRun both 2026-07-30 SQL update scripts manually.
Missing compact.sqlite3Copy renamed game_decrypted DB into Game Data and built World Data.
World cannot see client dataClientData.json points to the renamed game_pak- file.
Empty worldZone is started and the selected map matches the race.
Zone Manager will not startZoneHost exe and x2game-dev_dedicate.dll are both in Bin64.
Zone behaves incorrectlyThe full dedicated.cfg is installed.

Ready checklist

Path setup

Where did you install everything?

For privacy, a website cannot read the full Windows path of a selected file. Select each key file to verify it, then paste its folder path from the File Explorer address bar.

1. Find the game client

Choose archeage.exe from the client’s Bin64 folder.

No file selected

2. Find the AAEmu repository

Choose BuildWorldServer.bat from the repository’s Scripts folder.

No file selected

These paths are stored only in your browser.