B.net - Index Server 2

The is the secondary iteration of this discovery service. Its primary job was simple but vital: maintain a real-time list of active game lobbies (for titles like Diablo II , Warcraft III , and StarCraft ) and direct connecting clients to the correct IP addresses of the game hosts.

Today, its bones form the foundation of every private server and nostalgia-driven revival. For network programmers, it’s a blueprint. For gamers, it’s a memory. And for history, it’s proof that sometimes the simplest servers leave the longest legacy. B.net Index Server 2

In the sprawling ecosystem of Blizzard Entertainment’s online gaming platform, few components are as critical—yet as misunderstood—as the B.net Index Server 2 . For years, dedicated gamers, network engineers, and modding communities have whispered about this term in forums and technical deep-dives. But what exactly is it? Is it a physical server? A protocol? Or a relic of a bygone era? The is the secondary iteration of this discovery service

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: For network programmers, it’s a blueprint

When Blizzard released StarCraft: Remastered and Warcraft III: Reforged , they migrated all legacy titles to a modern, centralized matchmaking infrastructure. The old UDP-based Index Servers were decommissioned around 2018–2020. Attempts to connect a patched Diablo II 1.13 client to useast.battle.net will fail—because the Index Server 2 no longer exists at those addresses.

For enthusiasts: running your own Index Server 2 is surprisingly accessible. With a Linux VPS, 256MB of RAM, and PVPGN compiled with --enable-war3 and --enable-d2cs , you can host game listings for a hundred concurrent players. The B.net Index Server 2 was never glamorous. It didn’t render 3D graphics or manage inventories. It simply answered one question: “Where are the games?” But in answering that question reliably for over a decade, it enabled the golden age of online PC gaming—the era of dial-up StarCraft matches, LAN-style Diablo II Baal runs, and Warcraft III custom maps hosted from basement routers.

| 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) | |