B.net Index Server — 2
When a player clicked "Join Game," their client did not connect directly to Blizzard’s main servers. Instead, it queried the Index Server 2, received a list of available games, and then initiated a direct P2P connection with the host player’s machine. The Index Server facilitated the handshake but was not involved in the actual gameplay data stream. To appreciate version 2, we must acknowledge its predecessor. The original Index Server (v1) was designed for Diablo I and early StarCraft . It was rudimentary: it could only handle a limited number of concurrent UDP packets and lacked security against spoofed game entries.
| Offset | Type | Value | Description | |--------|-----------|-----------------------|--------------------------------| | 0 | BYTE | 0xFF | Protocol identifier | | 1 | BYTE | 0x50 | SID_GETGAMELIST (command 0x50) | | 2 | WORD (LE) | Packet length (often 8) | Header size + data | | 4 | DWORD (LE)| Session token (from auth) | Prevents unauthenticated queries | | 8 | WORD (LE) | Game flags (e.g., 0x01 = ladder) | Filtration mask | | 10 | BYTE | Number of players filter (0 = any) | Optional constraint | | 11 | BYTE | Reserved (0x00) | | B.net Index Server 2
However, the protocol lives on. Open-source projects like (Player vs. Player Gaming Network) have re-implemented the entire B.net Index Server 2 specification. Community-run private servers for Diablo II , Warcraft III (pre-Reforged), and StarCraft use PVPGN’s bncsutil and BNetDb to emulate the Index Server behavior completely. Technical Deep Dive: The Index Server 2 Protocol Header For developers and modders, the raw packet structure is worth documenting. A typical SID_GETGAMELIST request to B.net Index Server 2 is 12 bytes: When a player clicked "Join Game," their client
Tip: Use
cpwith--parentsto preserve directory structure when copying files.For example:
This will create the same directory structure inside
/path/to/destinationas the source path, such as/path/to/source/file.It’s especially handy for copying files from deeply nested directories while keeping their paths intact like for backups or deployments.