Download server files
You must be registered to see links
Some theory first
-----------------
The server communication structure is shown on the picture. Digits are the port numbers servers are listening on, and arrows show the direction of connections.
Servers and their functions:
----------------------------
GroupServer: this baby plays the central role for the server operation. Disassembling of it revealed that it is responsible for authorizing the client, creating characters, map handling, etc. Think of it as the dispatcher and syncronizer between the Game and Gate Servers.
GameServer: it runs one or more maps. What is a map? A map is the part of the game world where your char can move without teleporting. If you are teleporting to another continent, you're changing maps. Maps are stored under the 'resource' directory of the server. See directory names there like 'garner', 'magicsea' and so on? Those are maps. Well, running even one map requires TONS of memory. Typically, running 'garner' map which in fact is Ascaron continent takes about 1GB of RAM on my machine. So, running all the continents and locations would require some serious hardware, I guess
Or, maybe there exists some tweak for amount of RAM used, I don't know yet, since all the config files are in bloody chinese.
GateServer: this is some proxy between the client, GroupServer and GameServer. This is the only piece of software the client is communicating with. There can be more than one GateServer, but in this example we'll use only one.
AccountServer: pretty straightforward. Simply checks if a certain user can be authorized to login or not.
Databases:
----------
AccountServer: contains all the users allowed to login. Passwords are plain md5 hashes.
GameDB: main game DB. Contains all the chars, their stats, items, friends, guilds etc.
How to get this all to work:
----------------------------
In this example I'll show how to run just one map, 'garner', which is Ascaron. If you try to teleport to magicsea, it won't take you there, because this map is not running on the server. Well, you can try to run magicsea and deepblue maps on the same GameServer, but it will be a memory hog. You've been warned.
First of all, unpack the archive somewhere on your hardisk.
IMPORTAT NOTE: this archive doesn't contain some files under 'resource' folder that were present in the original archive because the filenames of them are in chinese and I wasn't able to extract those files from the original archive. But those files are necessary scripts for server operation and you should get them from the original archive somehow.
Restore the database backups to your MSSQL server. The backups are in DB folder of the archive. I won't go into the details, since operating MSSQL is beyond of the scope of this guide.
Having both databases restored, you should edit some config files. I'll show them here entirely, with the appropriate comments. You don't have to copy them from here. The archive already contains all the config files edited.
AccountServer.cfg
-----------------
Code:
[net]
listen_port = 1978 // the port AccountServer should listen on for GroupServer connection
listen_ip = 127.0.0.1 // the inerface AccountServer should listen on for GroupServer connection
[db]
dbserver = (local) // ip address of the MSSQL server running the AccountServer DB.
// // can be (local) which means 127.0.0.1 I suppose
db = AccountServer // DB name
userid =
passwd =
//userid = account
//passwd = uCcnL+k0BUrE40Wr8VHg9A==
//passwd = cathy_way
[bill]
enable_bill = 0 // some kind of billing, not used for now
bill_server1 = 10.10.1.107
bill_server2 = 10.10.1.108
[tom]
enable_tom = 0 // not used now either
[gs]
GroupServerAndor = GroupServerAndor // looks like GroupServers are enumerated here
// // we'll use only one for now
enable_ping = 0 // dunno
GateServer.cfg
--------------
Code:
[Main]
Name = knight_gate01 // the name of the GateServer. not really important
Version = 133 // the version of the server it should report to the client
// // 133 means 1.33, 102 means 1.02 and so on
[GroupServer]
IP = 127.0.0.1 // ip address where GroupServer is running, in our case it's our local address
Port = 1975 // port on which GroupServer is running
EnablePing = 180 // time interval to send KeepAlive packets to GroupServr
[ToClient]
IP = 0.0.0.0 // interface GateServer should listen on for the client connection
Port = 1973 // port number GateServer should listen on for the client connection
CommEncrypt = 1 //
EnablePing = 60 // time interval to send KeepAlive packets to the client
Єм