Civ4 Internet lobbyについての案内です。
Civ4 Internet lobbyとは
Civilization IV のマルチプレイは、当初GameSpyのオンラインサービスを介して行われていました。GameSpyのサービスは終了していますが、有志によってプロトコル互換のロビーサーバーが実装され、現在もマルチプレイを続けられています。 このサイトで扱うCiv4 Internet lobbyはpylobbyをベースに自宅・外出先など異なるネットワーク環境にいるプレイヤー同士でも安定して対戦できるよう手を加えたバージョンです。pylobby(civ4-mp/pylobby)はPython で書かれたオープンソースのロビーサーバーです。 できること ロビーへのログイン、部屋の一覧・作成・参加 異なるネットワーク環境にいるプレイヤー同士のマッチング(NAT越え) 対戦の開始からターン進行までの一連の流れ ゲームポート(UDP 2056)開放が不要に 以前のCiv4のlobbyはNAT越え機能にバグがあり、ホスト⇔参加者が直接つながれなかったため、ルーターでゲームポート(UDP 2056)開放(ルーターの設定で外から内側へ転送)をしておく必要がありました。 Civ4 Internet lobbyではNAT越え機能のバグを直し、実際にゲームポート(UDP 2056)転送設定を外した状態でテストしたところ、お互いのアドレスを教え合うだけで自動的に穴が開いて直接つながることを確認できました。そのためCiv4 Internet lobbyではゲームポート(UDP 2056)開放はもう不要です。 NAT越え機能とは 多くの家庭用ルーターは「内側から外へ出ていく通信」は自由に通しますが、「外から内側への通信」は原則ブロックします(これがNAT)。そのままだと、ホストと参加者がお互いのPCに直接データを送り合うゲーム通信は届きません。 そこで、間に立つサーバー(Civ4 Internet lobbyのNATNEG機能)が両者に「相手はこのアドレスにいますよ」と教えます。それを合図に両者が同時に相手へパケットを送ると、ちょうど内側から外へ通信した直後の一瞬だけルーターの扉が開くタイミングが重なり、そこにお互いの通信がすれ違いで通り抜けます。この「一瞬だけ開く扉を両側から同時に通す」やり方がNAT越え(ホールパンチング)で、ルーターの設定で外から内側へ転送しなくても、この機能だけで直接通信が成立します。