[{"content":"Civilization IV のマルチプレイは、GameSpyのサービス終了後、有志によるロビーサーバーの実装によって続けられています。このブログでは、その一つとなる Civ4 Internet Lobbyプロジェクトに取り組む中で分かったことや直したこと等を記録していきます。\n扱う予定のテーマ:\nGameSpyプロトコルの構造 NAT越え（NATNEG）の仕組み 運用上気づいた点 ","permalink":"https://ebios-games.com/civ4/blog/welcome-post/","summary":"\u003cp\u003eCivilization IV のマルチプレイは、GameSpyのサービス終了後、有志によるロビーサーバーの実装によって続けられています。このブログでは、その一つとなる Civ4 Internet Lobbyプロジェクトに取り組む中で分かったことや直したこと等を記録していきます。\u003c/p\u003e\n\u003cp\u003e扱う予定のテーマ:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eGameSpyプロトコルの構造\u003c/li\u003e\n\u003cli\u003eNAT越え（NATNEG）の仕組み\u003c/li\u003e\n\u003cli\u003e運用上気づいた点\u003c/li\u003e\n\u003c/ul\u003e","title":"このブログについて"},{"content":"Civilization IV のマルチプレイは、当初GameSpyのオンラインサービスを介して行われていました。GameSpyのサービスは終了していますが、有志によってプロトコル互換のロビーサーバーが実装され、現在もマルチプレイを続けられています。\nこのサイトで扱うCiv4 Internet lobbyはpylobbyをベースに自宅・外出先など異なるネットワーク環境にいるプレイヤー同士でも安定して対戦できるよう手を加えたバージョンです。pylobby（civ4-mp/pylobby）はPython で書かれたオープンソースのロビーサーバーです。\nできること ロビーへのログイン、部屋の一覧・作成・参加 異なるネットワーク環境にいるプレイヤー同士のマッチング（NAT越え） 対戦の開始からターン進行までの一連の流れ ゲームポート(UDP 2056)開放が不要に 以前のCiv4のlobbyはNAT越え機能にバグがあり、ホスト⇔参加者が直接つながれなかったため、ルーターでゲームポート(UDP 2056)開放（ルーターの設定で外から内側へ転送）をしておく必要がありました。\nCiv4 Internet lobbyではNAT越え機能のバグを直し、実際にゲームポート(UDP 2056)転送設定を外した状態でテストしたところ、お互いのアドレスを教え合うだけで自動的に穴が開いて直接つながることを確認できました。そのためCiv4 Internet lobbyではゲームポート(UDP 2056)開放はもう不要です。\nNAT越え機能とは 多くの家庭用ルーターは「内側から外へ出ていく通信」は自由に通しますが、「外から内側への通信」は原則ブロックします（これがNAT）。そのままだと、ホストと参加者がお互いのPCに直接データを送り合うゲーム通信は届きません。\nそこで、間に立つサーバー（Civ4 Internet lobbyのNATNEG機能）が両者に「相手はこのアドレスにいますよ」と教えます。それを合図に両者が同時に相手へパケットを送ると、ちょうど内側から外へ通信した直後の一瞬だけルーターの扉が開くタイミングが重なり、そこにお互いの通信がすれ違いで通り抜けます。この「一瞬だけ開く扉を両側から同時に通す」やり方がNAT越え（ホールパンチング）で、ルーターの設定で外から内側へ転送しなくても、この機能だけで直接通信が成立します。\n","permalink":"https://ebios-games.com/civ4/guide/about/","summary":"\u003cp\u003eCivilization IV のマルチプレイは、当初GameSpyのオンラインサービスを介して行われていました。GameSpyのサービスは終了していますが、有志によってプロトコル互換のロビーサーバーが実装され、現在もマルチプレイを続けられています。\u003c/p\u003e\n\u003cp\u003eこのサイトで扱うCiv4 Internet lobbyはpylobbyをベースに自宅・外出先など異なるネットワーク環境にいるプレイヤー同士でも安定して対戦できるよう手を加えたバージョンです。pylobby（\u003ca href=\"https://github.com/civ4-mp/pylobby\"\u003eciv4-mp/pylobby\u003c/a\u003e）はPython で書かれたオープンソースのロビーサーバーです。\u003c/p\u003e\n\u003ch2 id=\"できること\"\u003eできること\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eロビーへのログイン、部屋の一覧・作成・参加\u003c/li\u003e\n\u003cli\u003e異なるネットワーク環境にいるプレイヤー同士のマッチング（NAT越え）\u003c/li\u003e\n\u003cli\u003e対戦の開始からターン進行までの一連の流れ\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"ゲームポートudp-2056開放が不要に\"\u003eゲームポート(UDP 2056)開放が不要に\u003c/h2\u003e\n\u003cp\u003e以前のCiv4のlobbyは\u003cstrong\u003eNAT越え機能\u003c/strong\u003eにバグがあり、ホスト⇔参加者が直接つながれなかったため、ルーターでゲームポート(UDP 2056)開放（ルーターの設定で外から内側へ転送）をしておく必要がありました。\u003c/p\u003e\n\u003cp\u003eCiv4 Internet lobbyでは\u003cstrong\u003eNAT越え機能\u003c/strong\u003eのバグを直し、実際にゲームポート(UDP 2056)転送設定を外した状態でテストしたところ、お互いのアドレスを教え合うだけで自動的に穴が開いて直接つながることを確認できました。そのためCiv4 Internet lobbyではゲームポート(UDP 2056)開放はもう不要です。\u003c/p\u003e\n\u003ch2 id=\"nat越え機能とは\"\u003eNAT越え機能とは\u003c/h2\u003e\n\u003cp\u003e多くの家庭用ルーターは「内側から外へ出ていく通信」は自由に通しますが、「外から内側への通信」は原則ブロックします（これがNAT）。そのままだと、ホストと参加者がお互いのPCに直接データを送り合うゲーム通信は届きません。\u003c/p\u003e\n\u003cp\u003eそこで、間に立つサーバー（Civ4 Internet lobbyのNATNEG機能）が両者に「相手はこのアドレスにいますよ」と教えます。それを合図に両者が同時に相手へパケットを送ると、ちょうど内側から外へ通信した直後の一瞬だけルーターの扉が開くタイミングが重なり、そこにお互いの通信がすれ違いで通り抜けます。この「一瞬だけ開く扉を両側から同時に通す」やり方がNAT越え（ホールパンチング）で、ルーターの設定で外から内側へ転送しなくても、この機能だけで直接通信が成立します。\u003c/p\u003e","title":"Civ4 Internet lobbyとは"},{"content":"GameSpy終了後の仕組み オープンソースプロジェクトである pylobby は、Civilization IV のマルチプレイ・ロビー機能が依存していた GameSpy SDK のマスターサーバー群を、ゼロから再実装したものである。GameSpy は2010年代にオンラインサービス事業を終了しており、公式のロビーサーバー（gpcm.gamespy.com 等）はすでに存在しない。Civ4 クライアント側のプロトコル実装は変更できないため、クライアントが「GameSpy のサーバーだ」と信じて話しかけてくる相手を、自前サーバー上に用意するというアプローチを取っている。具体的には、Civ4 クライアントの hosts ファイルで gpcm.gamespy.com 等のホスト名を自前サーバーの IP に向け、そこで pylobby をベースにしたサーバー実装(本プロジェクト「Civ4 Internet Lobby」)を稼働させている。\nGameSpy終了後のなりすまし構成かつて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 サーバーを新規実装として追加し、実機検証を通じてプロトコルの確定仕様に合わせ込んだ。\npylobbyの構成(既存部分と新規追加部分)上流の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が新規実装して組み合わせている。 ","permalink":"https://ebios-games.com/civ4/blog/pylobby-origins/","summary":"\u003ch2 id=\"gamespy終了後の仕組み\"\u003eGameSpy終了後の仕組み\u003c/h2\u003e\n\u003cp\u003eオープンソースプロジェクトである \u003ccode\u003epylobby\u003c/code\u003e は、\u003cstrong\u003eCivilization IV のマルチプレイ・ロビー機能が依存していた GameSpy SDK のマスターサーバー群を、ゼロから再実装したもの\u003c/strong\u003eである。GameSpy は2010年代にオンラインサービス事業を終了しており、公式のロビーサーバー（\u003ccode\u003egpcm.gamespy.com\u003c/code\u003e 等）はすでに存在しない。Civ4 クライアント側のプロトコル実装は変更できないため、\u003cstrong\u003eクライアントが「GameSpy のサーバーだ」と信じて話しかけてくる相手を、自前サーバー上に用意する\u003c/strong\u003eというアプローチを取っている。具体的には、Civ4 クライアントの \u003ccode\u003ehosts\u003c/code\u003e ファイルで \u003ccode\u003egpcm.gamespy.com\u003c/code\u003e 等のホスト名を自前サーバーの IP に向け、そこで \u003ccode\u003epylobby\u003c/code\u003e をベースにしたサーバー実装(本プロジェクト「Civ4 Internet Lobby」)を稼働させている。\u003c/p\u003e\n\u003cfigure\u003e\u003csvg viewBox=\"0 0 680 300\" role=\"img\" aria-labelledby=\"fig1-title fig1-desc\" xmlns=\"http://www.w3.org/2000/svg\" style=\"width:100%;height:auto;font-family:sans-serif;\"\u003e\u003ctitle id=\"fig1-title\"\u003eGameSpy終了後のなりすまし構成\u003c/title\u003e\u003cdesc id=\"fig1-desc\"\u003eかつてCiv4クライアントは実在するGameSpyのマスターサーバー群と通信していたが、GameSpyサービス終了後はhostsファイルでホスト名を自前サーバーのIPに向けることで、クライアントを改造せずにCiv4 Internet Lobbyへ通信させている。\u003c/desc\u003e\u003cdefs\u003e\u003cmarker id=\"arrow-hist\" viewBox=\"0 0 10 10\" refX=\"9\" refY=\"5\" markerWidth=\"6\" markerHeight=\"6\" orient=\"auto\"\u003e\u003cpath d=\"M0,0 L10,5 L0,10 z\" fill=\"currentColor\"/\u003e\u003c/marker\u003e\u003c/defs\u003e\u003ctext x=\"170\" y=\"26\" font-size=\"15\" font-weight=\"600\" text-anchor=\"middle\" fill=\"currentColor\"\u003eかつて\u003c/text\u003e\u003ctext x=\"510\" y=\"26\" font-size=\"15\" font-weight=\"600\" text-anchor=\"middle\" fill=\"currentColor\"\u003e現在(Civ4 Internet Lobby)\u003c/text\u003e\u003crect x=\"60\" y=\"45\" width=\"220\" height=\"50\" rx=\"6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"/\u003e\u003ctext x=\"170\" y=\"75\" font-size=\"13\" text-anchor=\"middle\" fill=\"currentColor\"\u003eCiv4 クライアント\u003c/text\u003e\u003cline x1=\"170\" y1=\"95\" x2=\"170\" y2=\"150\" stroke=\"currentColor\" stroke-width=\"1.5\" marker-end=\"url(#arrow-hist)\"/\u003e\u003crect x=\"40\" y=\"152\" width=\"260\" height=\"80\" rx=\"6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-dasharray=\"6 4\" opacity=\"0.55\"/\u003e\u003ctext x=\"170\" y=\"182\" font-size=\"13\" text-anchor=\"middle\" fill=\"currentColor\" opacity=\"0.55\"\u003eGameSpy マスターサーバー群\u003c/text\u003e\u003ctext x=\"170\" y=\"200\" font-size=\"11\" text-anchor=\"middle\" fill=\"currentColor\" opacity=\"0.55\"\u003e(gpcm.gamespy.com 等)\u003c/text\u003e\u003ctext x=\"170\" y=\"252\" font-size=\"11\" text-anchor=\"middle\" fill=\"currentColor\" font-style=\"italic\" opacity=\"0.7\"\u003e2010年代にサービス終了・現存せず\u003c/text\u003e\u003crect x=\"400\" y=\"45\" width=\"220\" height=\"50\" rx=\"6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"/\u003e\u003ctext x=\"510\" y=\"75\" font-size=\"13\" text-anchor=\"middle\" fill=\"currentColor\"\u003eCiv4 クライアント(無改造)\u003c/text\u003e\u003cline x1=\"510\" y1=\"95\" x2=\"510\" y2=\"132\" stroke=\"currentColor\" stroke-width=\"1.5\" marker-end=\"url(#arrow-hist)\"/\u003e\u003crect x=\"400\" y=\"134\" width=\"220\" height=\"52\" rx=\"6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"/\u003e\u003ctext x=\"510\" y=\"156\" font-size=\"12\" text-anchor=\"middle\" fill=\"currentColor\"\u003ehosts ファイルで書き換え\u003c/text\u003e\u003ctext x=\"510\" y=\"174\" font-size=\"11\" text-anchor=\"middle\" fill=\"currentColor\"\u003egpcm.gamespy.com → 自前サーバー\u003c/text\u003e\u003cline x1=\"510\" y1=\"186\" x2=\"510\" y2=\"222\" stroke=\"currentColor\" stroke-width=\"1.5\" marker-end=\"url(#arrow-hist)\"/\u003e\u003crect x=\"400\" y=\"224\" width=\"220\" height=\"56\" rx=\"6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\"/\u003e\u003ctext x=\"510\" y=\"248\" font-size=\"13\" font-weight=\"600\" text-anchor=\"middle\" fill=\"currentColor\"\u003eCiv4 Internet Lobby\u003c/text\u003e\u003ctext x=\"510\" y=\"266\" font-size=\"11\" text-anchor=\"middle\" fill=\"currentColor\"\u003eGameSpyになりすまして応答\u003c/text\u003e\u003c/svg\u003e\u003cfigcaption\u003eクライアント側の実装は変更せず、通信先だけをhostsファイルで自前サーバーへ差し替えている。\u003c/figcaption\u003e\u003c/figure\u003e\n\u003ch2 id=\"civ4-internet-lobbyの構成\"\u003eCiv4 Internet Lobbyの構成\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003epylobby\u003c/code\u003e は GameSpy Presence（ログイン）とサーバーブラウザ（部屋一覧）を実装したものだが、\u003cstrong\u003eNAT 越え（NATNEG）機能は含まれていなかった\u003c/strong\u003e。Civ4 Internet Lobbyでは \u003ccode\u003epylobby\u003c/code\u003e のコードをベースに、NATNEG サーバーを新規実装として追加し、実機検証を通じてプロトコルの確定仕様に合わせ込んだ。\u003c/p\u003e","title":"Civ4 Internet Lobbyの成り立ち"},{"content":"Civ4 Internet lobby目次 はじめに・事前準備 hostsファイルの書き換え(必須) ロビーへの接続・参加手順 よくあるトラブルと対処 付録: Linux版(Wine・Steam Proton)での参加 1. はじめに・事前準備 このページは、Civ4 Internet lobby(pylobbyをベースにしたロビーサーバー)を使ってCivilization IVのマルチプレイに参加したい方向けの手順書です。Civ4 Internet lobby自体の概要はCiv4 Internet lobbyとはを参照してください。\n参加する前に、以下を確認・用意してください。\nCivilization IV: Beyond the Sword 本体(拡張版が必要です。無印版のみでは参加できません。Colonizationをお使いの場合も接続できます)\nバージョン3.19であること\nメインメニューまたはタイトル画面でバージョンを確認できます。3.19より古い場合は、公式パッチを適用してアップデートしてください。マルチプレイは参加者全員が同じバージョンでないと接続できません。\nhostsファイルを編集できる管理者権限\nこのページはWindowsでの参加を前提に説明します。Linux(Wine・Steam Proton)でも参加可能ですが、手順が一部異なるため末尾の付録(5章)にまとめています。\nSteam版を利用している場合の注意 Steam版はデフォルトで最新のリリースパッケージに追従する設定になっており、これがマルチプレイ用の3.19と一致しないことがあります。日本語化パッチを適用済みの場合は、多くのケースでそのままロビーに接続できます。接続できない場合は、Steamのライブラリで「Sid Meier\u0026rsquo;s Civilization IV: Beyond the Sword」を右クリック→「プロパティ」→「ベータ」タブから、案内役の指示に従ってベータブランチを切り替えてください。\n2. hostsファイルの書き換え(必須) Civilization IVは、マルチプレイのログインやマッチングの際に、あらかじめプログラム内に組み込まれた「GameSpy」というサービスのドメイン名にアクセスしようとします。GameSpyのサービス自体はすでに終了しているため、そのままでは接続できません。そこで、Windowsのhostsファイルを書き換えて、これらのドメイン名へのアクセス先をCiv4 Internet lobbyのサーバーに向ける必要があります(Linuxをお使いの場合は付録(5章)を参照してください)。\n2-1. hostsファイルを開く C:\\Windows\\System32\\drivers\\etc\\hosts をコピーし、同じフォルダにhosts.bakなど別名で保存しておく(念のためのバックアップ。編集に失敗した場合はここから復元できます) メモ帳を管理者として実行する(スタートメニューでメモ帳を検索→右クリック→「管理者として実行」) メモ帳の「ファイル」→「開く」から、以下の場所を開く C:\\Windows\\System32\\drivers\\etc\\hosts ファイルの種類が「テキスト文書」のままだとhostsファイル(拡張子なし)が表示されないことがあるので、ファイル選択ダイアログの右下を「すべてのファイル」に変更してください。\n下記2-2の内容を、ファイルの末尾に貼り付けて保存する 管理者権限で開いていない場合、編集後の保存時に「アクセスが拒否されました」というエラーになります。\n2-2. 追記する内容 以下の内容をそのまま、対象のhostsファイルの末尾に追記してください。**motd.gamespy.comの行だけは127.0.0.1のままにしてください(書き換えないでください)**。civ4(無印)・BTS(海外版)・BTS日本語版・Colonization(海外版)・Colonization日本語版の5エディション分をまとめて登録しているため、普段使わないエディションの行があっても問題ありません(削除する必要もありません)。\n127.0.0.1 motd.gamespy.com 133.88.118.124 gmtest.master.gamespy.com 133.88.118.124 peerchat.gamespy.com 133.88.118.124 gpcm.gamespy.com 133.88.118.124 gpsp.gamespy.com 133.88.118.124 gamestats.gamespy.com 133.88.118.124 master.gamespy.com 133.88.118.124 natneg1.gamespy.com 133.88.118.124 natneg2.gamespy.com 133.88.118.124 natneg3.gamespy.com 133.88.118.124 civ4.available.gamespy.com 133.88.118.124 civ4.ms1.gamespy.com 133.88.118.124 civ4.ms2.gamespy.com 133.88.118.124 civ4.ms3.gamespy.com 133.88.118.124 civ4.ms4.gamespy.com 133.88.118.124 civ4.ms5.gamespy.com 133.88.118.124 civ4.ms6.gamespy.com 133.88.118.124 civ4.ms7.gamespy.com 133.88.118.124 civ4.ms8.gamespy.com 133.88.118.124 civ4.ms9.gamespy.com 133.88.118.124 civ4.ms18.gamespy.com 133.88.118.124 civ4.master.gamespy.com 133.88.118.124 civ4.natneg1.gamespy.com 133.88.118.124 civ4.natneg2.gamespy.com 133.88.118.124 civ4.natneg3.gamespy.com 133.88.118.124 civ4bts.available.gamespy.com 133.88.118.124 civ4bts.ms1.gamespy.com 133.88.118.124 civ4bts.ms2.gamespy.com 133.88.118.124 civ4bts.ms3.gamespy.com 133.88.118.124 civ4bts.ms4.gamespy.com 133.88.118.124 civ4bts.ms5.gamespy.com 133.88.118.124 civ4bts.ms6.gamespy.com 133.88.118.124 civ4bts.ms7.gamespy.com 133.88.118.124 civ4bts.ms8.gamespy.com 133.88.118.124 civ4bts.ms9.gamespy.com 133.88.118.124 civ4bts.master.gamespy.com 133.88.118.124 civ4bts.natneg1.gamespy.com 133.88.118.124 civ4bts.natneg2.gamespy.com 133.88.118.124 civ4bts.natneg3.gamespy.com 133.88.118.124 civ4btsjp.available.gamespy.com 133.88.118.124 civ4btsjp.ms1.gamespy.com 133.88.118.124 civ4btsjp.ms2.gamespy.com 133.88.118.124 civ4btsjp.ms3.gamespy.com 133.88.118.124 civ4btsjp.ms4.gamespy.com 133.88.118.124 civ4btsjp.ms5.gamespy.com 133.88.118.124 civ4btsjp.ms6.gamespy.com 133.88.118.124 civ4btsjp.ms7.gamespy.com 133.88.118.124 civ4btsjp.ms8.gamespy.com 133.88.118.124 civ4btsjp.ms9.gamespy.com 133.88.118.124 civ4btsjp.master.gamespy.com 133.88.118.124 civ4btsjp.natneg1.gamespy.com 133.88.118.124 civ4btsjp.natneg2.gamespy.com 133.88.118.124 civ4btsjp.natneg3.gamespy.com 133.88.118.124 civ4colpc.available.gamespy.com 133.88.118.124 civ4colpc.ms1.gamespy.com 133.88.118.124 civ4colpc.ms2.gamespy.com 133.88.118.124 civ4colpc.ms3.gamespy.com 133.88.118.124 civ4colpc.ms4.gamespy.com 133.88.118.124 civ4colpc.ms5.gamespy.com 133.88.118.124 civ4colpc.ms6.gamespy.com 133.88.118.124 civ4colpc.ms7.gamespy.com 133.88.118.124 civ4colpc.ms8.gamespy.com 133.88.118.124 civ4colpc.ms9.gamespy.com 133.88.118.124 civ4colpc.ms11.gamespy.com 133.88.118.124 civ4colpc.master.gamespy.com 133.88.118.124 civ4colpc.natneg1.gamespy.com 133.88.118.124 civ4colpc.natneg2.gamespy.com 133.88.118.124 civ4colpc.natneg3.gamespy.com 133.88.118.124 civ4coljp.available.gamespy.com 133.88.118.124 civ4coljp.ms1.gamespy.com 133.88.118.124 civ4coljp.ms2.gamespy.com 133.88.118.124 civ4coljp.ms3.gamespy.com 133.88.118.124 civ4coljp.ms4.gamespy.com 133.88.118.124 civ4coljp.ms5.gamespy.com 133.88.118.124 civ4coljp.ms6.gamespy.com 133.88.118.124 civ4coljp.ms7.gamespy.com 133.88.118.124 civ4coljp.ms8.gamespy.com 133.88.118.124 civ4coljp.ms9.gamespy.com 133.88.118.124 civ4coljp.ms11.gamespy.com 133.88.118.124 civ4coljp.master.gamespy.com 133.88.118.124 civ4coljp.natneg1.gamespy.com 133.88.118.124 civ4coljp.natneg2.gamespy.com 133.88.118.124 civ4coljp.natneg3.gamespy.com 書き換えたら保存します。\n2-3. DNSキャッシュのクリア(通称「フラッシュ」) hostsファイルを保存しただけでは、Windowsが古い名前解決の結果を覚えたままになっていることがあります。これをクリアする作業を、コミュニティ内では通称「フラッシュ」と呼んでいます。hostsファイルの書き換えと必ずセットで行ってください。\nスタートメニューで「コマンドプロンプト」を検索し、こちらも管理者として実行する 以下のコマンドを入力してEnterを押す ipconfig /flushdns 「DNS リゾルバー キャッシュは正常にフラッシュされました。」と表示されれば完了 反映がうまくいかない場合は、PCを再起動すると確実です。\n2-4. 設定できているか確認する コマンドプロンプト(管理者権限は不要)で以下を実行します。\nping civ4btsjp.ms5.gamespy.com 追記した133.88.118.124が以下の様に返ってくれば設定は正しく反映されています。\nciv4btsjp.ms5.gamespy.com [133.88.118.124]に ping を送信しています 別の値やエラー(NXDOMAINなど)が返る場合は、hostsファイルの内容とフラッシュ作業(2-2・2-3)を見直してください。\n2-5. Civ4クライアントを再起動する hostsファイルを書き換えたら、必ずCivilization IVをいったん終了し、起動し直してください。 起動したままの状態では変更が反映されません。\n3. ロビーへの接続・参加手順 hostsファイルの設定が終わったら、Civilization IVを起動して以下の手順でロビーに参加します。\nCivilization IVを起動する メインメニューから「マルチプレイヤー」→「インターネットゲーム」を選ぶ 「ログイン」画面が表示されるので、アカウントを作成(初回のみ)またはログインする ロビーに接続すると、開催中の部屋の一覧が表示される 参加したい部屋を選んで「参加」を押すか、自分で部屋を作る場合は「ゲームを作成」を選ぶ 部屋の中でプレイヤーが揃ったらホストがゲームを開始する 参加時にホストと自分のネットワーク環境が異なっていても(自宅・外出先などバラバラでも)、ロビー側でNAT越えの処理を行うため、通常は各プレイヤー側でのポート開放などの追加設定は必要ありません。\n4. よくあるトラブルと対処 ロビーにログインできない・ログイン画面にすら行けない hostsファイルの追記内容とDNSキャッシュのクリア(2章)を再確認する 2-4の確認コマンドで、意図したアドレスが返ってきているか確認する Linux(Wine・Steam Proton)で参加している場合は、付録(5章)の手順(特にWineプレフィックス内のhosts)も確認する ウイルス対策ソフトやファイアウォールが通信をブロックしていないか確認する hostsを直したのに反映されない Civilization IVを再起動したか確認してください(起動中には反映されません。2-5) ロビー入室直後にフリーズする hostsのmotd.gamespy.comの行が127.0.0.1になっているか確認してください(誤って他のアドレスに書き換えると、この症状が起きます) ロビーの処理が途中で連鎖的に失敗する お使いのエディションのms1〜ms9(civ4btsjp.ms1.gamespy.comなど)がhostsに登録されているか確認してください。2-2の内容を部分的にではなく、まとめて貼り直すと確実です 部屋に参加しようとすると「交信しています」のまま固まる 主に、それまでホスト役としてしか使ったことのない環境で初めて参加者側になった場合に起きやすい症状です 原因はnatneg1〜natneg3(お使いのエディション名を付けたもの。例: civ4btsjp.natneg1.gamespy.com)がhostsに登録されていないことです Windowsの場合、以下のコマンドで該当行があるか確認できます ping civ4btsjp.natneg1.gamespy.com 追記した133.88.118.124が以下の様に返ってくれば設定は正しく反映されています。\nciv4btsjp.natneg1.gamespy.com [133.88.118.124]に ping を送信しています NXDOMAINなどが返る場合は該当行が抜けています。2-2の内容を部分的に追記するのではなく、まとめて貼り直してください\n「サーバー接続不能: ゲーム検索サーバーと接続できませんでした」と表示される、またはログイン後にエラーも無く画面が固まる サーバー側の設定に起因する可能性があります。稼働状況・お知らせを確認してください 部屋を作成したがメンバーが参加できない 失敗する場合は稼働状況・お知らせを確認してください Windowsのhostsファイルの編集に失敗した・内容がおかしくなった 2-1で作成したhosts.bakから復元してください 上記で解決しない場合 このページの手順で解決しない場合は、Civ4掲示板で質問してください。\n5. 付録: Linux版(Wine・Steam Proton)での参加 このページの本文はWindowsでの参加を前提に説明していますが、Linux上でも(Wine単体、またはSteam版をProtonで動かす形で)参加できます。基本的な流れは2〜4章と同じで、hostsファイルの編集方法のみ以下のように読み替えてください。\n5-1. hostsファイルの書き換え Linuxネイティブ版、または通常の/etc/hostsのみで動くWine環境の場合は、/etc/hostsを編集します。\nsudo cp -a /etc/hosts /etc/hosts.bak.$(date +%Y%m%d_%H%M%S) # バックアップ 2-2. 追記する内容を追記します。\nsudo tee -a /etc/hosts # 2-2の内容を貼り付けてCtrl+D Steam版をProton経由で動かしている場合、Civ4はWine内部の独自のhostsファイルを見るため、**/etc/hostsの変更だけでは反映されません**。以下のWineプレフィックス内のhostsも同様に書き換えてください(Beyond the SwordのSteam App IDは8800)。\nPFX=~/.local/share/Steam/steamapps/compatdata/8800/pfx/drive_c/windows/system32/drivers/etc/hosts cp -a \u0026#34;$PFX\u0026#34; \u0026#34;$PFX.bak.$(date +%Y%m%d_%H%M%S)\u0026#34; # バックアップ grep gamespy /etc/hosts \u0026gt;\u0026gt; \u0026#34;$PFX\u0026#34; (このファイルが存在しない場合は、WineがLinux側の名前解決に委譲しているため、この作業は不要です)\n5-2. DNSキャッシュのクリア sudo resolvectl flush-caches 2\u0026gt;/dev/null || true 5-3. 設定できているか確認する getent hosts civ4btsjp.ms5.gamespy.com 追記した133.88.118.124が返ってくれば設定は正しく反映されています。\n5-4. Civ4クライアントを再起動する Windows版と同様、hostsファイルを書き換えたら必ずCivilization IVをいったん終了し、起動し直してください。\n以降のロビーへの接続手順(3章)、トラブルシューティング(4章。Wineプレフィックスのhostsが未反映のケースを含む)は共通です。\n","permalink":"https://ebios-games.com/civ4/guide/join/","summary":"\u003ch2 id=\"civ4-internet-lobby目次\"\u003eCiv4 Internet lobby目次\u003c/h2\u003e\n\u003col\u003e\n\u003cli\u003e\u003ca href=\"#1-%E3%81%AF%E3%81%98%E3%82%81%E3%81%AB%E4%BA%8B%E5%89%8D%E6%BA%96%E5%82%99\"\u003eはじめに・事前準備\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#2-hosts%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E6%9B%B8%E3%81%8D%E6%8F%9B%E3%81%88%E5%BF%85%E9%A0%88\"\u003ehostsファイルの書き換え(必須)\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#3-%E3%83%AD%E3%83%93%E3%83%BC%E3%81%B8%E3%81%AE%E6%8E%A5%E7%B6%9A%E5%8F%82%E5%8A%A0%E6%89%8B%E9%A0%86\"\u003eロビーへの接続・参加手順\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#4-%E3%82%88%E3%81%8F%E3%81%82%E3%82%8B%E3%83%88%E3%83%A9%E3%83%96%E3%83%AB%E3%81%A8%E5%AF%BE%E5%87%A6\"\u003eよくあるトラブルと対処\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#5-%E4%BB%98%E9%8C%B2-linux%E7%89%88winesteam-proton%E3%81%A7%E3%81%AE%E5%8F%82%E5%8A%A0\"\u003e付録: Linux版(Wine・Steam Proton)での参加\u003c/a\u003e\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch2 id=\"1-はじめに事前準備\"\u003e1. はじめに・事前準備\u003c/h2\u003e\n\u003cp\u003eこのページは、Civ4 Internet lobby(pylobbyをベースにしたロビーサーバー)を使ってCivilization IVのマルチプレイに参加したい方向けの手順書です。Civ4 Internet lobby自体の概要は\u003ca href=\"../about/\"\u003eCiv4 Internet lobbyとは\u003c/a\u003eを参照してください。\u003c/p\u003e\n\u003cp\u003e参加する前に、以下を確認・用意してください。\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eCivilization IV: Beyond the Sword 本体\u003c/strong\u003e(拡張版が必要です。無印版のみでは参加できません。Colonizationをお使いの場合も接続できます)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eバージョン3.19であること\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eメインメニューまたはタイトル画面でバージョンを確認できます。3.19より古い場合は、公式パッチを適用してアップデートしてください。マルチプレイは参加者全員が同じバージョンでないと接続できません。\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003ehostsファイルを編集できる管理者権限\u003c/strong\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eこのページはWindowsでの参加を前提に説明します。Linux(Wine・Steam Proton)でも参加可能ですが、手順が一部異なるため末尾の\u003ca href=\"#5-%E4%BB%98%E9%8C%B2-linux%E7%89%88winesteam-proton%E3%81%A7%E3%81%AE%E5%8F%82%E5%8A%A0\"\u003e付録(5章)\u003c/a\u003eにまとめています。\u003c/p\u003e\n\u003ch3 id=\"steam版を利用している場合の注意\"\u003eSteam版を利用している場合の注意\u003c/h3\u003e\n\u003cp\u003eSteam版はデフォルトで最新のリリースパッケージに追従する設定になっており、これがマルチプレイ用の3.19と一致しないことがあります。日本語化パッチを適用済みの場合は、多くのケースでそのままロビーに接続できます。接続できない場合は、Steamのライブラリで「Sid Meier\u0026rsquo;s Civilization IV: Beyond the Sword」を右クリック→「プロパティ」→「ベータ」タブから、案内役の指示に従ってベータブランチを切り替えてください。\u003c/p\u003e\n\u003ch2 id=\"2-hostsファイルの書き換え必須\"\u003e2. hostsファイルの書き換え(必須)\u003c/h2\u003e\n\u003cp\u003eCivilization IVは、マルチプレイのログインやマッチングの際に、あらかじめプログラム内に組み込まれた「GameSpy」というサービスのドメイン名にアクセスしようとします。GameSpyのサービス自体はすでに終了しているため、そのままでは接続できません。そこで、Windowsの\u003ccode\u003ehosts\u003c/code\u003eファイルを書き換えて、これらのドメイン名へのアクセス先をCiv4 Internet lobbyのサーバーに向ける必要があります(Linuxをお使いの場合は\u003ca href=\"#5-%E4%BB%98%E9%8C%B2-linux%E7%89%88winesteam-proton%E3%81%A7%E3%81%AE%E5%8F%82%E5%8A%A0\"\u003e付録(5章)\u003c/a\u003eを参照してください)。\u003c/p\u003e\n\u003ch3 id=\"2-1-hostsファイルを開く\"\u003e2-1. hostsファイルを開く\u003c/h3\u003e\n\u003col\u003e\n\u003cli\u003e\u003ccode\u003eC:\\Windows\\System32\\drivers\\etc\\hosts\u003c/code\u003e をコピーし、同じフォルダに\u003ccode\u003ehosts.bak\u003c/code\u003eなど別名で保存しておく(念のためのバックアップ。編集に失敗した場合はここから復元できます)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eメモ帳\u003c/code\u003eを\u003cstrong\u003e管理者として実行\u003c/strong\u003eする(スタートメニューでメモ帳を検索→右クリック→「管理者として実行」)\u003c/li\u003e\n\u003cli\u003eメモ帳の「ファイル」→「開く」から、以下の場所を開く\u003c/li\u003e\n\u003c/ol\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-plain\" data-lang=\"plain\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eC:\\Windows\\System32\\drivers\\etc\\hosts\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eファイルの種類が「テキスト文書」のままだと\u003ccode\u003ehosts\u003c/code\u003eファイル(拡張子なし)が表示されないことがあるので、ファイル選択ダイアログの右下を「すべてのファイル」に変更してください。\u003c/p\u003e\n\u003col start=\"4\"\u003e\n\u003cli\u003e下記2-2の内容を、ファイルの末尾に貼り付けて保存する\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e管理者権限で開いていない場合、編集後の保存時に「アクセスが拒否されました」というエラーになります。\u003c/p\u003e\n\u003ch3 id=\"2-2-追記する内容\"\u003e2-2. 追記する内容\u003c/h3\u003e\n\u003cp\u003e以下の内容をそのまま、対象のhostsファイルの末尾に追記してください。**\u003ccode\u003emotd.gamespy.com\u003c/code\u003eの行だけは\u003ccode\u003e127.0.0.1\u003c/code\u003eのままにしてください(書き換えないでください)**。civ4(無印)・BTS(海外版)・BTS日本語版・Colonization(海外版)・Colonization日本語版の5エディション分をまとめて登録しているため、普段使わないエディションの行があっても問題ありません(削除する必要もありません)。\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-plain\" data-lang=\"plain\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e127.0.0.1 motd.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 gmtest.master.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 peerchat.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 gpcm.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 gpsp.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 gamestats.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 master.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 natneg1.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 natneg2.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 natneg3.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4.available.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4.ms1.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4.ms2.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4.ms3.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4.ms4.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4.ms5.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4.ms6.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4.ms7.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4.ms8.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4.ms9.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4.ms18.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4.master.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4.natneg1.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4.natneg2.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4.natneg3.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4bts.available.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4bts.ms1.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4bts.ms2.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4bts.ms3.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4bts.ms4.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4bts.ms5.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4bts.ms6.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4bts.ms7.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4bts.ms8.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4bts.ms9.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4bts.master.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4bts.natneg1.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4bts.natneg2.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4bts.natneg3.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4btsjp.available.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4btsjp.ms1.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4btsjp.ms2.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4btsjp.ms3.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4btsjp.ms4.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4btsjp.ms5.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4btsjp.ms6.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4btsjp.ms7.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4btsjp.ms8.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4btsjp.ms9.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4btsjp.master.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4btsjp.natneg1.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4btsjp.natneg2.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4btsjp.natneg3.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4colpc.available.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4colpc.ms1.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4colpc.ms2.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4colpc.ms3.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4colpc.ms4.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4colpc.ms5.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4colpc.ms6.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4colpc.ms7.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4colpc.ms8.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4colpc.ms9.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4colpc.ms11.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4colpc.master.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4colpc.natneg1.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4colpc.natneg2.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4colpc.natneg3.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4coljp.available.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4coljp.ms1.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4coljp.ms2.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4coljp.ms3.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4coljp.ms4.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4coljp.ms5.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4coljp.ms6.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4coljp.ms7.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4coljp.ms8.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4coljp.ms9.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4coljp.ms11.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4coljp.master.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4coljp.natneg1.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4coljp.natneg2.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e133.88.118.124 civ4coljp.natneg3.gamespy.com\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e書き換えたら保存します。\u003c/p\u003e","title":"参加方法"},{"content":"システムは独立した2つのプロセス(civgs-login・civgs-gamebrowser)と、別途起動が必要なIRCサーバー(civgs-ircd)から成ります。2つのプロセスは互いに独立して動作しており、共有しているのはコードだけで、プロセス間通信は一切行いません。civgs-ircdが起動していないと、Civ4クライアントはログイン処理を完了できずフリーズしてしまいます。\nサーバー構成 Civ4クライアント civgs-login TCP 29900・29901 civgs-gamebrowser TCP 28910 UDP 27900・27901 civgs-ircd TCP 6667 ログイン・検索 部屋一覧・NAT越え 在席確認 プロセス間通信なし (コードのみ共有) Civ4クライアントは civgs-login・civgs-gamebrowser・civgs-ircd という3つの独立したプロセスにそれぞれ接続する。civgs-loginとcivgs-gamebrowserはコードを共有するだけで、プロセス間通信は行わない。 プロセス ポート 役割 対応するGameSpyドメイン civgs-login TCP 29900 ログイン(GP presence) gpcm.gamespy.com civgs-login TCP 29901 ユーザー検索(GP search) gpsp.gamespy.com civgs-gamebrowser TCP 28910 部屋一覧(ServerBrowser) \u0026lt;エディション\u0026gt;.ms*.gamespy.com 等 civgs-gamebrowser UDP 27900 ホストのハートビート(QR) 同上 civgs-gamebrowser UDP 27901 NAT越え(NATNEG) natneg1〜3.gamespy.com civgs-ircd TCP 6667 在席確認・チャット(peerchat) peerchat.gamespy.com 通信シーケンス(部屋参加〜NAT越え) ホストが部屋を作成してから、参加者が直接通信を始めるまでの流れは次の通りです。\nホスト サーバー (civgs-gamebrowser) 参加者 部屋を作成(QR開始・UDP 27900) 部屋一覧取得(TCP 28910) 一覧を返す 参加を選択→NATNEG開始 INIT(UDP 27901) CONNECT ×2 CONNECT_ACK REPORT / REPORT_ACK 直接通信開始(UDP 2056・サーバーを介さない) 部屋参加からNAT越え(NATNEG)の4回のやり取りを経て、ホストと参加者が直接通信を始めるまでの流れ。NATNEG成立後はサーバーを経由しない。 ホストが部屋を作成すると、civgs-gamebrowserへのハートビート(QR、UDP 27900)が始まる 参加者が部屋一覧を取得する(TCP 28910) 参加者が部屋への参加を選ぶと、NAT越え(NATNEG)処理が始まる ホスト・参加者の双方からcivgs-gamebrowserへINITを送る(UDP 27901) サーバーは両者の通信先アドレスへCONNECTを能動的に送信する(それぞれ2回ずつ) 両者がサーバーへCONNECT_ACKを返す REPORT・REPORT_ACKのやり取りが完了する ホストと参加者の間で直接通信が始まる(ゲームポート、UDP 2056。以降サーバーは経由しない) 各プレイヤー側でのポート開放が不要なのは、このNAT越え処理のおかげです。\n","permalink":"https://ebios-games.com/civ4/blog/system-overview/","summary":"\u003cp\u003eシステムは独立した2つのプロセス(\u003ccode\u003ecivgs-login\u003c/code\u003e・\u003ccode\u003ecivgs-gamebrowser\u003c/code\u003e)と、別途起動が必要なIRCサーバー(\u003ccode\u003ecivgs-ircd\u003c/code\u003e)から成ります。2つのプロセスは互いに独立して動作しており、共有しているのはコードだけで、プロセス間通信は一切行いません。\u003ccode\u003ecivgs-ircd\u003c/code\u003eが起動していないと、Civ4クライアントはログイン処理を完了できずフリーズしてしまいます。\u003c/p\u003e\n\u003ch2 id=\"サーバー構成\"\u003eサーバー構成\u003c/h2\u003e\n\u003cfigure\u003e\n\u003csvg viewBox=\"0 0 680 300\" role=\"img\" aria-label=\"Civ4 Internet Lobbyのサーバー構成図。Civ4クライアントは civgs-login・civgs-gamebrowser・civgs-ircd という3つの独立したプロセスにそれぞれ接続する。civgs-loginとcivgs-gamebrowserはプロセス間通信を持たない。\" style=\"max-width:100%;height:auto;\"\u003e\n  \u003cdefs\u003e\n    \u003cmarker id=\"arrow-overview\" viewBox=\"0 0 10 10\" refX=\"9\" refY=\"5\" markerWidth=\"7\" markerHeight=\"7\" orient=\"auto\"\u003e\n      \u003cpath d=\"M0,0 L10,5 L0,10 z\" fill=\"currentColor\"/\u003e\n    \u003c/marker\u003e\n  \u003c/defs\u003e\n  \u003crect x=\"250\" y=\"20\" width=\"180\" height=\"48\" rx=\"6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"/\u003e\n  \u003ctext x=\"340\" y=\"49\" text-anchor=\"middle\" font-size=\"13\" fill=\"currentColor\"\u003eCiv4クライアント\u003c/text\u003e\n  \u003crect x=\"20\" y=\"150\" width=\"180\" height=\"70\" rx=\"6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"/\u003e\n  \u003crect x=\"250\" y=\"150\" width=\"180\" height=\"70\" rx=\"6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"/\u003e\n  \u003crect x=\"480\" y=\"150\" width=\"180\" height=\"70\" rx=\"6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"/\u003e\n  \u003ctext x=\"110\" y=\"178\" text-anchor=\"middle\" font-size=\"13\" fill=\"currentColor\"\u003ecivgs-login\u003c/text\u003e\n  \u003ctext x=\"110\" y=\"198\" text-anchor=\"middle\" font-size=\"11\" fill=\"currentColor\" opacity=\"0.75\"\u003eTCP 29900・29901\u003c/text\u003e\n  \u003ctext x=\"340\" y=\"178\" text-anchor=\"middle\" font-size=\"13\" fill=\"currentColor\"\u003ecivgs-gamebrowser\u003c/text\u003e\n  \u003ctext x=\"340\" y=\"198\" text-anchor=\"middle\" font-size=\"11\" fill=\"currentColor\" opacity=\"0.75\"\u003eTCP 28910\u003c/text\u003e\n  \u003ctext x=\"340\" y=\"212\" text-anchor=\"middle\" font-size=\"11\" fill=\"currentColor\" opacity=\"0.75\"\u003eUDP 27900・27901\u003c/text\u003e\n  \u003ctext x=\"570\" y=\"178\" text-anchor=\"middle\" font-size=\"13\" fill=\"currentColor\"\u003ecivgs-ircd\u003c/text\u003e\n  \u003ctext x=\"570\" y=\"198\" text-anchor=\"middle\" font-size=\"11\" fill=\"currentColor\" opacity=\"0.75\"\u003eTCP 6667\u003c/text\u003e\n  \u003cline x1=\"300\" y1=\"68\" x2=\"130\" y2=\"150\" stroke=\"currentColor\" stroke-width=\"1.5\" marker-end=\"url(#arrow-overview)\"/\u003e\n  \u003cline x1=\"340\" y1=\"68\" x2=\"340\" y2=\"150\" stroke=\"currentColor\" stroke-width=\"1.5\" marker-end=\"url(#arrow-overview)\"/\u003e\n  \u003cline x1=\"380\" y1=\"68\" x2=\"550\" y2=\"150\" stroke=\"currentColor\" stroke-width=\"1.5\" marker-end=\"url(#arrow-overview)\"/\u003e\n  \u003ctext x=\"200\" y=\"100\" text-anchor=\"middle\" font-size=\"11\" fill=\"currentColor\"\u003eログイン・検索\u003c/text\u003e\n  \u003ctext x=\"362\" y=\"100\" text-anchor=\"start\" font-size=\"11\" fill=\"currentColor\"\u003e部屋一覧・NAT越え\u003c/text\u003e\n  \u003ctext x=\"480\" y=\"100\" text-anchor=\"middle\" font-size=\"11\" fill=\"currentColor\"\u003e在席確認\u003c/text\u003e\n  \u003cline x1=\"200\" y1=\"185\" x2=\"250\" y2=\"185\" stroke=\"currentColor\" stroke-width=\"1.2\" stroke-dasharray=\"3,3\"/\u003e\n  \u003ctext x=\"225\" y=\"238\" text-anchor=\"middle\" font-size=\"11\" fill=\"currentColor\" opacity=\"0.75\"\u003eプロセス間通信なし\u003c/text\u003e\n  \u003ctext x=\"225\" y=\"251\" text-anchor=\"middle\" font-size=\"11\" fill=\"currentColor\" opacity=\"0.75\"\u003e(コードのみ共有)\u003c/text\u003e\n\u003c/svg\u003e\n\u003cfigcaption\u003eCiv4クライアントは civgs-login・civgs-gamebrowser・civgs-ircd という3つの独立したプロセスにそれぞれ接続する。civgs-loginとcivgs-gamebrowserはコードを共有するだけで、プロセス間通信は行わない。\u003c/figcaption\u003e\n\u003c/figure\u003e\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth\u003eプロセス\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003eポート\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003e役割\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003e対応するGameSpyドメイン\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003ecivgs-login\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eTCP 29900\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eログイン(GP presence)\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003egpcm.gamespy.com\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003ecivgs-login\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eTCP 29901\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eユーザー検索(GP search)\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003egpsp.gamespy.com\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003ecivgs-gamebrowser\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eTCP 28910\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e部屋一覧(ServerBrowser)\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003e\u0026lt;エディション\u0026gt;.ms*.gamespy.com\u003c/code\u003e 等\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003ecivgs-gamebrowser\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eUDP 27900\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eホストのハートビート(QR)\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e同上\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003ecivgs-gamebrowser\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eUDP 27901\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eNAT越え(NATNEG)\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003enatneg1〜3.gamespy.com\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003ecivgs-ircd\u003c/code\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eTCP 6667\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e在席確認・チャット(peerchat)\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003epeerchat.gamespy.com\u003c/code\u003e\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2 id=\"通信シーケンス部屋参加nat越え\"\u003e通信シーケンス(部屋参加〜NAT越え)\u003c/h2\u003e\n\u003cp\u003eホストが部屋を作成してから、参加者が直接通信を始めるまでの流れは次の通りです。\u003c/p\u003e","title":"システム全体像と通信シーケンス"},{"content":" \u0026#9679; 稼働中 最終確認: 2026年9月19日 22:25（5分ごとに自動更新） サービス状態直近の自動再起動 ログイン(civgs-login) \u0026#9679; 稼働中 - ゲームブラウザ(civgs-gamebrowser) \u0026#9679; 稼働中 - IRC(civgs-ircd) \u0026#9679; 稼働中 - ","permalink":"https://ebios-games.com/civ4/guide/status/","summary":"\u003cp\u003e\n  \n    \u003cstrong style=\"color:#16a34a\"\u003e\u0026#9679; 稼働中\u003c/strong\u003e\n  \n  \u003cbr\u003e\n  \u003csmall\u003e最終確認: 2026年9月19日 22:25（5分ごとに自動更新）\u003c/small\u003e\n  \n\u003c/p\u003e\n\n\u003ctable\u003e\n  \u003cthead\u003e\n    \u003ctr\u003e\u003cth\u003eサービス\u003c/th\u003e\u003cth\u003e状態\u003c/th\u003e\u003cth\u003e直近の自動再起動\u003c/th\u003e\u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n    \n    \n      \n      \n      \u003ctr\u003e\n        \u003ctd\u003eログイン(civgs-login)\u003c/td\u003e\n        \u003ctd\u003e\n          \n            \u003cspan style=\"color:#16a34a\"\u003e\u0026#9679; 稼働中\u003c/span\u003e\n          \n        \u003c/td\u003e\n        \u003ctd\u003e-\u003c/td\u003e\n      \u003c/tr\u003e\n      \n    \n      \n      \n      \u003ctr\u003e\n        \u003ctd\u003eゲームブラウザ(civgs-gamebrowser)\u003c/td\u003e\n        \u003ctd\u003e\n          \n            \u003cspan style=\"color:#16a34a\"\u003e\u0026#9679; 稼働中\u003c/span\u003e\n          \n        \u003c/td\u003e\n        \u003ctd\u003e-\u003c/td\u003e\n      \u003c/tr\u003e\n      \n    \n      \n      \n      \u003ctr\u003e\n        \u003ctd\u003eIRC(civgs-ircd)\u003c/td\u003e\n        \u003ctd\u003e\n          \n            \u003cspan style=\"color:#16a34a\"\u003e\u0026#9679; 稼働中\u003c/span\u003e\n          \n        \u003c/td\u003e\n        \u003ctd\u003e-\u003c/td\u003e\n      \u003c/tr\u003e\n      \n    \n  \u003c/tbody\u003e\n\u003c/table\u003e\n\n\n\n\u003c!-- TODO: 実際のお知らせは運用開始後に随時更新 --\u003e","title":"稼働状況・お知らせ"},{"content":"この通信は何のためにあるのか Civ4のマルチプレイでロビーにログインする際、クライアントは裏側で複数のGameSpy系サーバーと順番に通信している。その中の1つがpeerchat.gamespy.com(TCP 6667)で、これは目に見えるチャット機能ではなく、ログイン処理の一部として必須のハンドシェイクである。クライアントは接続直後にCRYPTという拡張コマンドを送り、サーバーからの暗号チャレンジ応答(705)を待つ。この一往復が成立しないと、クライアントはロビー画面にたどり着けない。\nログイン処理内でのIRCハンドシェイクの位置づけCiv4クライアントはGameSpy Presence認証に続けてpeerchat/IRC(TCP 6667)へ接続しCRYPTコマンドを送る。705応答が返ればロビー画面へ進み、応答がなければ無応答のままフリーズする。Civ4 クライアントGameSpy Presence認証(TCP 29900・ログイン)IRCハンドシェイク(peerchat, TCP 6667)CRYPTコマンド → 705応答を待つ705応答あり→ ロビー画面へ(civgs-ircdが正常稼働)705応答なし→ 無応答のままフリーズ(標準IRCサーバー等)peerchat(TCP 6667)でのCRYPTハンドシェイクが成立しないと、クライアントはエラーも出さずに無応答のままフリーズする。 なぜ普通のIRCサーバーでは動かないのか 一般的なIRCサーバー実装(標準のminiircd本家など)は、GameSpy独自のCRYPTコマンドを理解しない。この場合に起きることは2通りある。\nそもそも接続できない場合: クライアントはログイン自体を取り消し、「サーバー接続不能: ゲーム検索サーバーと接続できませんでした」という分かりやすいエラーを表示する。 接続はできるがCRYPTに応答が返らない場合: エラーメッセージが一切出ないまま、クライアントが無応答でフリーズする。 後者が厄介なのは、原因がひと目で分からないことである。Civ4 Internet Lobbyでは、CRYPT/705応答とciv4/civ4bts/civ4btsjp用の暗号レイヤーを実装したZulan/miniircdフォークをcivgs-ircdとして稼働させることで、この問題を解決している。\n標準IRCサーバーとcivgs-ircdでのCRYPTハンドシェイクの違い標準のIRCサーバーはGameSpy独自のCRYPTコマンドに応答できず無応答のままフリーズするが、civgs-ircd(Zulanフォーク)はCRYPTコマンドに705応答を返しログイン処理が続行する。標準IRCサーバーの場合civgs-ircd(対応フォーク)の場合Civ4 クライアント標準IRCサーバーCRYPT des 1 civ4btsCRYPTを理解できない\u0026#10005;応答なし(705が返らない)無応答のままフリーズCiv4 クライアントcivgs-ircdCRYPT des 1 civ4bts705(暗号チャレンジ応答)ログイン処理を続行→ ロビー画面へ標準のIRCサーバーはGameSpy独自のCRYPTコマンドに応答できずフリーズの原因になるが、civgs-ircd(Zulanフォーク)はこれに対応しているため正常にログインできる。 「部屋に参加できない」原因ではない もう一つ、誤解されやすい点がある。このTCP 6667通信は、部屋への参加処理そのものとは無関係である。実際のパケットキャプチャでは、参加時のUDP 2056ハンドシェイクが完了してから38秒も経ってから、ようやく6667の通信が発生していることが確認できている。6667は参加とは独立した、buddy/chat presenceのための定期的なバックグラウンド処理である。\nUDP 2056の参加ハンドシェイクとTCP 6667の時間差実測では、部屋参加時のUDP 2056ハンドシェイク完了から約38秒後にTCP 6667のIRC通信が発生しており、両者は独立した処理であることを示している。時間UDP 2056参加ハンドシェイク完了TCP 6667IRC通信開始約38秒後(実測)6667の通信は参加のトリガーではない6667のIRC通信は参加のトリガーではなく、独立したバックグラウンド処理であることが実測で確認できている。 つまり、部屋に参加できない・NAT越えがうまくいかないといった症状の原因を探すときは、この6667通信は切り分けて考えてよい(NAT越えの仕組みについてはシステム全体像と通信シーケンスを参照)。逆に、ロビー画面にそもそも入れない・ログイン中にフリーズするという症状であれば、この6667のハンドシェイクが疑わしい候補になる。\nそのようなときは、稼働状況・お知らせページを確認してほしい。ログイン(civgs-login)・ゲームブラウザ(civgs-gamebrowser)と並んで「IRC(civgs-ircd)」の行があり、緑色の「● 稼働中」であれば、このハンドシェイクを処理するサーバー側の準備はできている。ここが赤色の「● 停止中」になっている場合は、サーバー側の問題(このページで解説したcivgs-ircdの停止)が原因である可能性が高い。「● 稼働中」なのにフリーズする場合は、別の原因を疑う必要がある。\n","permalink":"https://ebios-games.com/civ4/blog/peerchat-irc/","summary":"\u003ch2 id=\"この通信は何のためにあるのか\"\u003eこの通信は何のためにあるのか\u003c/h2\u003e\n\u003cp\u003eCiv4のマルチプレイでロビーにログインする際、クライアントは裏側で複数のGameSpy系サーバーと順番に通信している。その中の1つが\u003ccode\u003epeerchat.gamespy.com\u003c/code\u003e(TCP 6667)で、これは目に見えるチャット機能ではなく、\u003cstrong\u003eログイン処理の一部として必須のハンドシェイク\u003c/strong\u003eである。クライアントは接続直後に\u003ccode\u003eCRYPT\u003c/code\u003eという拡張コマンドを送り、サーバーからの暗号チャレンジ応答(\u003ccode\u003e705\u003c/code\u003e)を待つ。この一往復が成立しないと、クライアントはロビー画面にたどり着けない。\u003c/p\u003e\n\u003cfigure\u003e\u003csvg viewBox=\"0 0 680 400\" role=\"img\" aria-labelledby=\"fig1-title fig1-desc\" xmlns=\"http://www.w3.org/2000/svg\" style=\"width:100%;height:auto;font-family:sans-serif;\"\u003e\u003ctitle id=\"fig1-title\"\u003eログイン処理内でのIRCハンドシェイクの位置づけ\u003c/title\u003e\u003cdesc id=\"fig1-desc\"\u003eCiv4クライアントはGameSpy Presence認証に続けてpeerchat/IRC(TCP 6667)へ接続しCRYPTコマンドを送る。705応答が返ればロビー画面へ進み、応答がなければ無応答のままフリーズする。\u003c/desc\u003e\u003cdefs\u003e\u003cmarker id=\"arrow-login\" viewBox=\"0 0 10 10\" refX=\"9\" refY=\"5\" markerWidth=\"6\" markerHeight=\"6\" orient=\"auto\"\u003e\u003cpath d=\"M0,0 L10,5 L0,10 z\" fill=\"currentColor\"/\u003e\u003c/marker\u003e\u003c/defs\u003e\u003crect x=\"250\" y=\"15\" width=\"180\" height=\"45\" rx=\"6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"/\u003e\u003ctext x=\"340\" y=\"43\" font-size=\"13\" text-anchor=\"middle\" fill=\"currentColor\"\u003eCiv4 クライアント\u003c/text\u003e\u003cline x1=\"340\" y1=\"60\" x2=\"340\" y2=\"93\" stroke=\"currentColor\" stroke-width=\"1.5\" marker-end=\"url(#arrow-login)\"/\u003e\u003crect x=\"190\" y=\"97\" width=\"300\" height=\"55\" rx=\"6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"/\u003e\u003ctext x=\"340\" y=\"122\" font-size=\"13\" text-anchor=\"middle\" fill=\"currentColor\"\u003eGameSpy Presence認証\u003c/text\u003e\u003ctext x=\"340\" y=\"140\" font-size=\"11\" text-anchor=\"middle\" fill=\"currentColor\"\u003e(TCP 29900・ログイン)\u003c/text\u003e\u003cline x1=\"340\" y1=\"152\" x2=\"340\" y2=\"185\" stroke=\"currentColor\" stroke-width=\"1.5\" marker-end=\"url(#arrow-login)\"/\u003e\u003crect x=\"170\" y=\"189\" width=\"340\" height=\"68\" rx=\"6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"/\u003e\u003ctext x=\"340\" y=\"214\" font-size=\"14\" font-weight=\"600\" text-anchor=\"middle\" fill=\"currentColor\"\u003eIRCハンドシェイク\u003c/text\u003e\u003ctext x=\"340\" y=\"232\" font-size=\"11\" text-anchor=\"middle\" fill=\"currentColor\"\u003e(peerchat, TCP 6667)\u003c/text\u003e\u003ctext x=\"340\" y=\"250\" font-size=\"11\" text-anchor=\"middle\" fill=\"currentColor\"\u003eCRYPTコマンド → 705応答を待つ\u003c/text\u003e\u003cline x1=\"340\" y1=\"257\" x2=\"150\" y2=\"298\" stroke=\"currentColor\" stroke-width=\"1.5\" marker-end=\"url(#arrow-login)\"/\u003e\u003cline x1=\"340\" y1=\"257\" x2=\"530\" y2=\"298\" stroke=\"currentColor\" stroke-width=\"1.5\" marker-end=\"url(#arrow-login)\"/\u003e\u003crect x=\"40\" y=\"302\" width=\"220\" height=\"70\" rx=\"6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\"/\u003e\u003ctext x=\"150\" y=\"326\" font-size=\"13\" font-weight=\"600\" text-anchor=\"middle\" fill=\"currentColor\"\u003e705応答あり\u003c/text\u003e\u003ctext x=\"150\" y=\"344\" font-size=\"11\" text-anchor=\"middle\" fill=\"currentColor\"\u003e→ ロビー画面へ\u003c/text\u003e\u003ctext x=\"150\" y=\"362\" font-size=\"11\" text-anchor=\"middle\" fill=\"currentColor\"\u003e(civgs-ircdが正常稼働)\u003c/text\u003e\u003crect x=\"420\" y=\"302\" width=\"220\" height=\"70\" rx=\"6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-dasharray=\"6 4\" opacity=\"0.6\"/\u003e\u003ctext x=\"530\" y=\"326\" font-size=\"13\" font-weight=\"600\" text-anchor=\"middle\" fill=\"currentColor\" opacity=\"0.75\"\u003e705応答なし\u003c/text\u003e\u003ctext x=\"530\" y=\"344\" font-size=\"11\" text-anchor=\"middle\" fill=\"currentColor\" opacity=\"0.75\"\u003e→ 無応答のままフリーズ\u003c/text\u003e\u003ctext x=\"530\" y=\"362\" font-size=\"11\" text-anchor=\"middle\" fill=\"currentColor\" opacity=\"0.75\"\u003e(標準IRCサーバー等)\u003c/text\u003e\u003c/svg\u003e\u003cfigcaption\u003epeerchat(TCP 6667)でのCRYPTハンドシェイクが成立しないと、クライアントはエラーも出さずに無応答のままフリーズする。\u003c/figcaption\u003e\u003c/figure\u003e\n\u003ch2 id=\"なぜ普通のircサーバーでは動かないのか\"\u003eなぜ普通のIRCサーバーでは動かないのか\u003c/h2\u003e\n\u003cp\u003e一般的なIRCサーバー実装(標準の\u003ccode\u003eminiircd\u003c/code\u003e本家など)は、GameSpy独自の\u003ccode\u003eCRYPT\u003c/code\u003eコマンドを理解しない。この場合に起きることは2通りある。\u003c/p\u003e","title":"ログイン時のpeerchat/IRC通信(TCP 6667)について"},{"content":"投稿にはGitHubアカウントでのログインが必要です。\n","permalink":"https://ebios-games.com/civ4/board/","summary":"\u003cp\u003e投稿にはGitHubアカウントでのログインが必要です。\u003c/p\u003e","title":"Civ4掲示板"},{"content":"civ4 multi WIKI — 主にCiv4 マルチプレイに関する情報を掲載しています。\nX（Twitter）のコミュニティ — Civilization IV のX（Twitter）のコミュニティ\n","permalink":"https://ebios-games.com/civ4/links/example-link/","summary":"\u003cp\u003e\u003ca href=\"https://civ4multi.info/\"\u003e\u003cstrong\u003eciv4 multi WIKI\u003c/strong\u003e\u003c/a\u003e — 主にCiv4 マルチプレイに関する情報を掲載しています。\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://x.com/i/communities/1950579697840185669\"\u003e\u003cstrong\u003eX（Twitter）のコミュニティ\u003c/strong\u003e\u003c/a\u003e — Civilization IV のX（Twitter）のコミュニティ\u003c/p\u003e","title":"コミュニティ"},{"content":"深海のあっちむいてほい・Shrimp jumping・海底神殿の秘宝・深海リバーシ・海老推す🦐シューティングなど。投稿にはGitHubアカウントでのログインが必要です。\nCiv4 Internet lobbyについての掲示板はこちらに別途あります。\n","permalink":"https://ebios-games.com/board/","summary":"\u003cp\u003e深海のあっちむいてほい・Shrimp jumping・海底神殿の秘宝・深海リバーシ・海老推す🦐シューティングなど。投稿にはGitHubアカウントでのログインが必要です。\u003c/p\u003e\n\u003cp\u003eCiv4 Internet lobbyについての掲示板は\u003ca href=\"/civ4/board/\"\u003eこちら\u003c/a\u003eに別途あります。\u003c/p\u003e","title":"ゲーム掲示板"}]