Multiplayer packets - Server info

Research related to Arcanum and it's game engine.
Arronax's Best Friend
Zombie
User avatar
Arronax's Best Friend
ArcanumAlive Developer
Zombie
Posts: 418
Joined: Wed Jul 08, 2009 5:04 am
Location: Abyss

Multiplayer packets - Server info

Postby Crypton » Mon Jul 27, 2009 12:41 pm

After a bit of researching, I’ve found almost complete structure of server info packet, this packet is broadcasted by server at port 31434 via UDP packet and its size is always 332 bytes.

This is arcanum packet header:
Code: Select all
struct MM_ARCANUM_PACKET
{
WORD Type; // for server info packet, its 0×0219
WORD Size; // size of whole packet, including header
DWORD ReplyType; // Type of reply packet
};


After header, there are data, in this case its server info:
Code: Select all
struct MM_ARCANUM_SERVER_INFO
{
char GameName[23];
char ModuleName[23];
WORD Unknown1;
DWORD GameType; // Check below
DWORD MinLevel;
DWORD MaxLevel;
DWORD MaxPlayers;
DWORD PlayerCount; // Number of players connected to server
sockaddr_in ServerAddress; // Socket address
DWORD UpTime; // How long is server running
DWORD Unknown2; // Ping ?
DWORD GameFlags; // Check below
MM_ARCANUM_SERVER_PLAYER_INFO PlayerTable[8];
};


Definition of player info struct:
Code: Select all
struct MM_ARCANUM_SERVER_PLAYER_INFO {
DWORD Unknown; // Maybe its index or id
char PlayerName[24];
};


Game types:
Code: Select all
0 = ”Free for all”
1 = ”Cooperative”
2 = ”Roleplay”


Game flags:
Code: Select all
0×00000001 = IsPlayerKilling
0×00000002 = FriendlyFire
0×00000004 = PrivateChat
0×00000008 = IsPasswordProtected
0×00000010 = AutoJoin
0×00000020 = AutoEquip
0×00000040 = KeySharing


If you find what means that unknown values, please let me know, I’ll update this post and credit you as well!

Thanks!

Return to Research

Who is online

Users browsing this forum: No registered users and 1 guest