Responsible for user authentication and session creation. Has cross-shard capabilities.
Communication Protocols
In the sections below, the table column "Structure" is denoted in a similar format used by the server source. Minus the opcode, which is type c anyways.
Type
|
Description
|
c
|
Char
|
w
|
Word / Short
|
d
|
DWord / Int
|
q
|
QWord / Long
|
b
|
Byte Array
|
s
|
NUL-terminated C String
|
[]
|
Array
|
()
|
Conditional, based on config
|
Game Server
TCP Port 2104. AuthServer and DBServer communicate through this port.
Incoming Packets
Opcode
|
Structure
|
DBServer Function
|
AuthServer Function
|
AS_PLAY_OK
|
dd
|
authSendPlayOK
|
ServerPlayOk
|
AS_PLAY_FAIL
|
cd
|
authSendPlayFail
|
ServerPlayFail
|
AS_PLAY_GAME
|
d
|
authSendPlayGame
|
ServerPlayGame
|
AS_QUIT_GAME
|
dwd
|
authSendQuitGame
|
ServerPlayQuit
|
AS_KICK_ACCOUNT
|
dw
|
authSendKickAccount
|
ServerKickAccount
|
AS_SERVER_USERNUM
|
ww
|
-
|
ServerGetUserNum
|
AS_BAN_USER
|
dw
|
authSendBanAccount
|
ServerBanUser
|
AS_VERSION
|
d
|
authSendVersion
|
ServerVersion
|
AS_PING
|
d
|
authSendPing
|
ServerPing
|
AS_WRITE_USERDATA
|
db
|
authSendUserData
|
ServerWriteUserData
|
AS_SET_CONNECT
|
d
|
authSendSetConnect
|
ServerSetActive
|
AS_PLAY_USER_LIST
|
dsddddd
|
authSendCurrentPlayers
|
ServerPlayUserList
|
AS_SET_SERVER_ID
|
cw
|
-
|
SetServerId
|
AS_SERVER_USER_NUM_BY_QUEUE_LEVEL
|
-
|
-
|
ServerUserNumByQueueLevel
|
AS_FINISHED_QUEUE
|
d
|
-
|
FinishedQueue
|
AS_SET_LOGIN_FREQUENCY
|
-
|
-
|
SetLoginFrequency
|
AS_QUEUE_SIZES
|
c[cdd]
|
-
|
QueueSizes
|
AS_READ_USERDATA
|
d
|
-
|
ServerReadUserData
|
AS_WRITE_GAMEDATA
|
db
|
authSendUserData
|
ServerWriteGameData
|
AS_READ_GAMEDATA
|
d
|
authSendGameDataReq
|
ServerReadGameData
|
AS_SHARD_TRANSFER
|
dd
|
authSendShardTransfer
|
ServerShardTransfer
|
Outgoing Packets
Opcode
|
Structure
|
AuthServer Function
|
DBServer Function
|
SQ_ABOUT_TO_PLAY
|
dsdddd
|
AccountDB::AboutToPlay
|
handleAboutToPlay
|
SQ_KICK_ACCOUNT
|
dcs
|
AccountDB::KickAccount
|
handleKickAccount
|
SQ_SERVER_NUM
|
|
RequestUserCounts
|
handleNumOnline
|
SQ_VERSION
|
sd(d)
|
CSocketServer::OnCreate
|
handleVersion
|
SQ_PING
|
d
|
ServerPing
|
handlePing
|
SQ_COMPLETE_USERLIST
|
d
|
ServerPlayUserList
|
handleCompleteUserList
|
SQ_USER_DATA
|
db
|
ServerReadUserData
|
-
|
SQ_GAME_DATA
|
db
|
ServerReadGameData
|
handleRecvGameData
|
Game Client
TCP Port 2106. AuthServer and Game communicate through this port.
Incoming Packets
Opcode
|
Structure
|
Game Function
|
AuthServer Function
|
AQ_LOGIN
|
dbdw(c)
|
-
|
LoginPacket
|
AQ_SERVER_LIST
|
ddc(c[d])
|
-
|
-
|
AQ_ABOUT_TO_PLAY
|
ddc
|
acSendAboutToPlay
|
SelectServerPacket
|
AQ_LOGOUT
|
dd
|
acSendLogout
|
LogoutPacket
|
AQ_LOGIN_MD5
|
dbdw(c)
|
acSendLoginMD5
|
LoginPacketMd5Key
|
AQ_SERVER_LIST_EXT
|
ddc(c[d])
|
acSendServerList
|
ServerListExtPacket
|
AQ_LOGIN_MD5_MD5
|
dbdw(c)
|
acSendLoginMD5
|
-
|
Outgoing Packets
Opcode
|
Description
|
Structure
|
AuthServer Function
|
Game Function
|
AC_PROTOCOL_VER
|
Exchange common protocol version with client
|
dddbdb
|
CSocketServerEx::OnCreate
|
acGetProtocolVer
|
AC_LOGIN_FAIL
|
Reject client authentication
|
c
|
(more than 1)
|
acGetLoginFail
|
AC_BLOCKED_ACCOUNT
|
Account banned for X until Y
|
dd
|
LoginPacketSecure
|
acGetBlockedAccount
|
AC_LOGIN_OK
|
Allow client authentication
|
dddddddddddd(dd)
|
AccountDB::RegAccount
|
acGetLoginOK
|
AC_SEND_SERVERLIST
|
Send list of shards
|
c[cddccwwcc(cs)]
|
CServerList::MakeServerListPacket
|
acGetSendServerList
|
AC_SEND_SERVER_FAIL
|
Something unexpected happened
|
c
|
ServerListExtPacket
|
acGetSendServerFail
|
AC_PLAY_FAIL
|
Server selected, but down possibly?
|
c
|
(more than 1)
|
acGetPlayFail
|
AC_PLAY_OK
|
Server selected, continue
|
ddc
|
ServerPlayOk
|
acGetPlayOK
|
AC_ACCOUNT_KICKED
|
Account kicked for X
|
c
|
AccountDB::KickAccount
|
acGetAccountKicked
|
AC_BLOCKED_ACCOUNT_WITH_MSG
|
Account permabanned for X
|
s
|
LoginPacketSecure
|
acGetBlockedAccountWithMsg
|
AC_SC_CHECK_REQ
|
-
|
-
|
-
|
|
AC_QUEUE_SIZE
|
Queue length and wait time
|
c[ccdd]
|
CServerList::MakeQueueSizePacket
|
acGetQueueSize
|
AC_HANDOFF_TO_QUEUE
|
Wait in server queue
|
ddc
|
ServerPlayOk
|
acGetHandoffToQueue
|
AC_POSITION_IN_QUEUE
|
-
|
-
|
-
|
|
GM Tools
TCP Port 2108. Used for internal administration?
Incoming Packets
Opcode
|
Structure
|
AuthServer Function
|
IA_SERVER_VERSION
|
d
|
GetConnectSessionKey
|
IA_IP_KIND
|
-
|
-
|
IA_IP_USE
|
dcdd
|
GetIPAcquireSuccess
|
IA_IP_START_OK
|
dcddd
|
StartIPCharge
|
IA_IP_START_FAIL
|
dcddds
|
StartIPChargeFail
|
IA_IP_USE_FAIL
|
dc
|
GetIPAcquireFail
|
IA_IP_SESSIONKEY
|
-
|
-
|
IA_IP_INSTANTLOGIN_OK
|
-
|
-
|
IA_IP_INSTANTLOGIN_FAIL
|
-
|
-
|
IA_IP_KICK
|
dddsd
|
GetIPKick
|
IA_IP_READY_FAIL
|
dc
|
ReadyIPFail
|
IA_IP_READY_OK
|
dcddd
|
ReadyIPOK
|
IA_IP_SET_STARTTIME_OK
|
-
|
-
|
IA_IP_SET_STARTTIME_FAIL
|
d
|
SetStartTimeFail
|
Outgoing Packets
Opcode
|
Structure
|
AuthServer Function
|
AI_SERVER_VERSION
|
sc
|
CIPSocket::OnCreate
|
AI_IP_KIND
|
-
|
-
|
AI_IP_ACQUIRE
|
sddd
|
CIPSessionDB::AcquireSessionRequest
|
AI_IP_RELEASE
|
ddddd
|
CIPSessionDB::ReleaseSessionRequest
|
AI_IP_START_CHARGE
|
dddcdd
|
CIPSessionDB::StartIPCharge
|
AI_IP_STOP_CHARGE
|
ddddcddsd
|
CIPSessionDB::StopIPCharge
|
AI_IP_INSTANT_START_GAME
|
-
|
-
|
AI_IP_INSTANT_STOP_GAME
|
-
|
-
|
AI_IP_KICKED
|
-
|
-
|
AI_IP_READY_GAME
|
dddcdd
|
CIPSessionDB::ReadyToIPCharge
|
AI_IP_SET_START_TIME
|
dddcdd
|
CIPSessionDB::ConfirmIPCharge
|