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.
Choose where to keep the files
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:\AAEmuCLIENT_ROOT
The folder containing the unpacked ArcheAge client. ZoneHost will also be placed here.
C:\Games\ArcheAgeWhat runs on your PC
| MySQL | Stores accounts and characters. | 127.0.0.1:3306 |
|---|---|---|
| Login | Accepts the client login and shows the character list. | 127.0.0.1:1237 |
| World | Runs the game rules and connects Login to the zones. | 127.0.0.1:1239 |
| ZoneHost | Loads the actual map zones. | Connects to World on :1240 |
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.
| Item | Put it here | Download |
|---|---|---|
| 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.sqlite3 | Used by World and ZoneHost. You will also make a renamed copy for the server. | MEGA ↗ |
| Multilingual compact.sqlite3 | Used only by the game client. Do not use it as the server database. | MEGA ↗ |
| AAEmu.ZoneHost.exe | <CLIENT_ROOT>\Bin64 | MEGA ↗ |
| AAEmu Zone Manager | Any folder | MEGA ↗ |
Also install
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-
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
- Rename the original
game_pakfile togame_pak-. - Keep unpacked contents in
<CLIENT_ROOT>\game\. - Point
ClientData.Sourcestogame_pak-.
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
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.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.
aaemu_login and aaemu_gameImport
SQL\aaemu_login.sql into aaemu_login. Import SQL\aaemu_game.sql into aaemu_game.Run
SQL\examples\test-user.sql against aaemu_login. This creates username test with password test.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.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.Configure Login, Game, and World
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"
}
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 }
}
AAEmu.World.exe must contain the same GameContentRoot and ZoneGameDataRoot paths.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.sqlite3AAEmu.Game.exe separately.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.
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 address | 127.0.0.1:1240 |
| First zone to load | Gweonid · 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.
Fix common startup problems
| Problem | Check |
|---|---|
| Login or World cannot see DB | MySQL is running and passwords match Config.Local.json. |
| Cannot find Game content root | GameContentRoot is filled in project and built World configs. |
| Missing account_attributes | Run both 2026-07-30 SQL update scripts manually. |
| Missing compact.sqlite3 | Copy renamed game_decrypted DB into Game Data and built World Data. |
| World cannot see client data | ClientData.json points to the renamed game_pak- file. |
| Empty world | Zone is started and the selected map matches the race. |
| Zone Manager will not start | ZoneHost exe and x2game-dev_dedicate.dll are both in Bin64. |
| Zone behaves incorrectly | The full dedicated.cfg is installed. |