Overview
GameServer runs game logic and holds the per-server identity configuration
One GameServer process runs one game world. It handles combat, items, monsters, events, PK, trade, guilds, duels, and every other piece of live gameplay. Each GameServer talks to a shared DataServer (persistence), JoinServer (auth), and ConnectServer (server list heartbeats).
Role
Owns one
ServerCodeand one TCP port for game clientsRoutes all saves and loads through DataServer
Validates every login through JoinServer
Reports user counts and liveness to ConnectServer
Loads its full game content (items, monsters, events, skills) from the shared
Data/root
File Location
GameServer/
├── GameServer.exe
├── zlibwapi.dll
└── Data/
├── GameServerInfo - Common.dat
├── GameServerInfo - Character.dat
├── GameServerInfo - Command.dat
├── GameServerInfo - Event.dat
├── GameServerInfo - Skill.dat
└── GameServerInfo - Custom.datTwo distinct config roots feed the process:
GameServer/Data/
Per-server identity. One copy per GameServer instance.
The 6 .dat files above.
Data/ at release root
Shared game content. One copy per installation, read by every GameServer.
Items, monsters, events, skills, plugins, quests, shops, messages. Documented in the Data section.
Running multiple GameServers on the same machine means multiple GameServer/Data/ folders (one per instance) but they all share the single root-level Data/ folder.
Configuration Files (per-server identity)
Server identity, connections, logs, anti-hack, rates, PK, trade, guild, create character
Per-class stats and growth
Chat command costs, cooldowns, and limits
Enable flags and schedules for every event
Buff and skill numerical parameters
Chaos mix announce, custom attack, custom messages, custom guild warehouse
Chaos Machine recipes live in the ChaosMix plugin XMLs, not in a .dat file.
Shared game content (Item/, Monster/, Event/, Skill/, Plugins/, Shop/, etc.) is documented under its own pages.
Startup Order
Dependencies
DataServer reachable at
DataServerAddress:DataServerPortwith a working SQL Server backendJoinServer reachable at
JoinServerAddress:JoinServerPortConnectServer reachable at
ConnectServerAddress:ConnectServerPort(UDP)Shared
Data/folder present at the release root with every file the process expects to loadWritable working directory for logs
Cross-File Dependencies
The 6 .dat files are not independent. Keys in one often gate or feed behavior defined in another.
Common.dat EnableCastleSiege
Whether Event.dat's Castle Siege schedule runs
Common.dat WriteChaosMixLog
Whether ChaosMix plugin mixes produce audit entries
Common.dat MaxLevelUp / PlusStatPoint / <CLASS>LevelUpPoint
Character.dat per-class stat growth curves
Common.dat Create Character Settings
Character.dat class availability (overlaps by class)
Command.dat reset command caps
Common.dat ServerMinReset / ServerMaxReset
Custom.dat Announce Chaos Mix
ChaosMix plugin outputs + Common.dat log toggle
Event.dat Castle Siege
GuildManager on DataServer + EnableCastleSiege flag
Treat a config change as a pair: edit the primary key, then audit every file that depends on it.
Multi-Server Deployments
Each additional GameServer:
Gets its own
GameServer/Data/folder with a uniqueServerCodeandServerPortShares the single release-level
Data/folder (identical game content)Uses a unique
LicenseKey(one per instance)Appears in ConnectServer's
ServerList.xmlunder a<Server>entry with the matchingCode
Logs
Chat, trade, command, connect, hack, cash shop, and chaos mix logs each have their own enable flag in Common.dat Log Settings. Logs land in the GameServer working directory. Chaos mix outcomes themselves are driven by the ChaosMix plugin.
Common Issues
Stuck at "Loading files..." -
LicenseKeyis empty, invalid, or the license service is unreachableListens on port but no one can log in - JoinServer connection failed. Check
JoinServerAddress:JoinServerPortand JS'sAllowableIpList.txtPlayers can log in but character load times out - DataServer connection failed. Check
DataServerAddress:DataServerPortand DS'sAllowableIpList.txtServer does not appear in the client's server list - UDP heartbeat not reaching ConnectServer, or this GameServer's
Codeis missing from ConnectServer'sServerList.xmlTwo GameServers claim the same slot - duplicate
ServerCodein Common.datPort in use at startup - another GameServer instance is still running, or
ServerPortcollides with another process
Last updated