GameSpy終了後の仕組み

オープンソースプロジェクトである pylobby は、Civilization IV のマルチプレイ・ロビー機能が依存していた GameSpy SDK のマスターサーバー群を、ゼロから再実装したものである。GameSpy は2010年代にオンラインサービス事業を終了しており、公式のロビーサーバー(gpcm.gamespy.com 等)はすでに存在しない。Civ4 クライアント側のプロトコル実装は変更できないため、クライアントが「GameSpy のサーバーだ」と信じて話しかけてくる相手を、自前サーバー上に用意するというアプローチを取っている。具体的には、Civ4 クライアントの hosts ファイルで gpcm.gamespy.com 等のホスト名を自前サーバーの IP に向け、そこで pylobby をベースにしたサーバー実装(本プロジェクト「Civ4 Internet Lobby」)を稼働させている。

GameSpy終了後のなりすまし構成かつてCiv4クライアントは実在するGameSpyのマスターサーバー群と通信していたが、GameSpyサービス終了後はhostsファイルでホスト名を自前サーバーのIPに向けることで、クライアントを改造せずにCiv4 Internet Lobbyへ通信させている。かつて現在(Civ4 Internet Lobby)Civ4 クライアントGameSpy マスターサーバー群(gpcm.gamespy.com 等)2010年代にサービス終了・現存せずCiv4 クライアント(無改造)hosts ファイルで書き換えgpcm.gamespy.com → 自前サーバーCiv4 Internet LobbyGameSpyになりすまして応答
クライアント側の実装は変更せず、通信先だけをhostsファイルで自前サーバーへ差し替えている。

Civ4 Internet Lobbyの構成

pylobby は GameSpy Presence(ログイン)とサーバーブラウザ(部屋一覧)を実装したものだが、NAT 越え(NATNEG)機能は含まれていなかった。Civ4 Internet Lobbyでは pylobby のコードをベースに、NATNEG サーバーを新規実装として追加し、実機検証を通じてプロトコルの確定仕様に合わせ込んだ。

pylobbyの構成(既存部分と新規追加部分)上流のpylobbyが実装していたGameSpy PresenceとServerBrowserに、Civ4 Internet Lobbyが新規実装したNATNEGを組み合わせて構成している。既存(pylobbyベース)GameSpy Presence(ログイン)ServerBrowser(部屋一覧)+NATNEG(NAT越え)Civ4 Internet Lobbyで新規実装Civ4 Internet Lobby(ログイン + 部屋一覧 + NAT越え)
ログインと部屋一覧はpylobbyの流れを汲み、NAT越え(NATNEG)をCiv4 Internet Lobbyが新規実装して組み合わせている。