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サーバーを新規実装として追加し、実機検証を通じてプロトコルの確定仕様に合わせ込んだ。

Civ4 Internet Lobbyの構成(既存部分と新規追加部分)上流の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が新規実装して組み合わせている。