SWAT 4 マルチプレイを行う方法(覚え書き)

公募Co-opのレポート内に一緒に書こうとしていたのだが、長くなったので別にして掲載。

SWAT 4はマッチングにGamespyを利用していたが既に無くなっているので、現在では望みの接続形態に応じていろいろな作業が必要になったりする。しかしこれに関してはハッキリとしない箇所が多々あり、私自身も最初は上手く行かずにいろいろと調べたりはしてみたのだが、正反対の主張があったりと混乱気味なのが実際。とりあえず同様に上手く行かないという人の為に現時点での情報をいろいろと書いてみる。

まずは基本。4はDirect IP接続に対応しているので、Dedicated Serverとして建てられている一般公開サーバーのアドレスや、フレンドが既にサーバーを建てている状態でそのIPアドレスを聞いていて、それを打ち込んで接続する分にはクライアント側では何の改造もしなくて良い。ただしサーバーが使用しているポートがデフォルトの10480では無いケースでは、ポート番号も指定しないとならない。(例 xxx.xxx.xxx.xxx:10481)。ホスト側だと基本中の基本だがパブリックIPアドレスでないとサーバーを建てて公開は出来ないので、それを貰えないネット環境の人はサーバー役にはなれない。

マスターサーバーを運営していたgamespyが消滅しているから、ゲームがデフォルトの状態ではサーバーブラウザを使う事が出来ないのは大きな制限となる。そこで有志が代わってマスターサーバーを運営しており、その中ではSWAT4 Stats Trackerが有名。こちらの頁でMaster Server Patchを配布している。導入は簡単で該当する Engine.dll をダウンロードして、それをオリジナルの物と差し替えれば良いだけ(オリジナルは退避させて保存させておく)。ファイル名は皆同じだが、本編とTSSでは中身が違うので注意。またGold Editiionならば一番下の欄となり、単体で両方のCDを持っているなら上の3つからとなる。これは何をしているのかと言うと、この中にgamespyのマスターサーバー名が書かれているので、それを自分達の運営しているサーバーの物へと書き換えてアクセス先を変更している。これによりサーバーブラウザが使える状態になり、このStats Trackerに登録されているサーバーについては一覧に表示される様になる。現在のサーバー状況はゲームを起動していなくても、サイトのServersの頁から閲覧やJoinが可能。パブリックのサーバーに参加してマルチプレイをやりたいのならばここまででOKだし問題もまず無いはずである。

問題はここからで、どうやったらサーバーを公開出来るのかについて、言わば自分のサーバーに他人が接続出来ないというトラブルが多い。これはDedicated Serverを常設して公開したいという場合もあるが、より一般的にはフレンド同士でのマルチプレイにて問題発生という障害がメインとなっている。
  
1.自分の建てているサーバーにフレンドが接続出来ない(ゲームが素の状態)
マスターサーバー変更Mod類は無し。サーバーの起動には成功。しかしフレンドが接続に失敗する。接続にはDirect IPを用いているというケース。まずは上でも書いたがサーバー役はパブリックのIPアドレスでないとならない。あとは接続時にポート番号を同時に指定してみる。Listen Serverだとポート番号を調べる方法が(私には)解らないので、10480~10483を順に試す。

これで駄目なケースの原因はおそらくサーバー役のPCでのポートの開放が上手く行っていない。ユーザーのネットワーク環境(接続形態, ルーターの有無や種類, ファイアウォールの設定, プロバイダ側での規制等)によってはポートの開放が必要となるので、それを実行しておかないとならない。SWAT4の使用するポートはTCP/UDP両方で10480-10483の範囲(Mod類を使用していると更に追加されるケースもあり、10489辺りまで範囲を拡げておくという手もある)。

だがやはり環境にもよるのだがどうやっても開放に失敗するという件も良く聞かれる。なおポート開放の手段は他のゲームでも共通なので、他のゲームでは開放が上手く行っているならこのゲームでだけ失敗するという事はほぼ無いはずで、そのケースでは別の原因を考えないとならない。フレンド同士のプレイならば、手っ取り早いのはホスト役を交換してみて皆が接続出来る人が居ればその人をホストにして開始するというのが解決策としては楽。

2.サーバー役になって起動すると”Invalid CD key”エラーでサーバーの起動が不可能
これはMaster Server Patchを入れているケースである。SWAT4にはマルチプレイ用のキーが付いており(GOG版は除く)、このキーでGamespyが認証を行っていた。そのGamespyは存在しないのでキーの認証エラーは回避出来ない為、このパッチではそのキーの認証プロセス自体をカットしている。はずなのだが、これが発生してしまうというエラーで、私の環境でもこれが起きていた。そもそもこれはDedicated Server用のパッチであり、Listen Serverとして起動すると発生するのは仕様なのではないかという情報もあったのだが、我々の中では問題無くListen Serverを起動してStats Trackerのサーバーリストにも反映されるという人が居たのでそうでは無いはず。

より詳しく書くとこのトラブルは、ホスト設定のメニューから公開設定をInternetにすると、Listen ServerにしろDedicated Serverにしろ(ゲームを終了してDedicated Serverとして起動し直しますというメッセージが出る)、Invalidエラーで先に進まない。公開設定をLANにすればキーのチェックが入らないのでサーバー起動に成功するがこれでは意味が無いという物。

私のケースでは解決方法は以下の通りだが、これで解決するか保証は出来ない。環境はWindows7で、ゲームは当時のリテール版CDで本編&TSSをインストールしている。

まずゲームを起動してホスト画面を出してマップサイクルなど基本的な設定を済ませる。その後公開設定はInternetにしてからQuitでゲームを終了させる。解るのであれば直接 Swat4(X)DedicatedServer.ini を編集しても良い。

そしてMaster Server Patchの頁にも記載されているがホスト側での設定項目を確認。
使用する本編orTSSのSystemフォルダ内に在る SwatGUIState.ini を開いて [SwatGame.ServerSettings] 内にて bLAN=False になっているか。TSSの場合には併せて bUseStatTracking=False も確認。

Swat4DedicatedServer.ini or Swat4XDedicatedServer.ini (TSS) を開いて [Engine.GameEngine] の中に ServerActors=IpDrv.MasterServerUplink が存在しているかを確認。もしこのiniファイル自体が無い場合には、
一度 Swat4(X)DedicatedServer.exe を実行してやれば自動的に作成される。

その下のAMMod.AMServerQuery, GS1, GS2のファイルや設定変更は現バージョンでは必要なし。

ポートの開放を行う。これが必須なのかは不明だが私の環境では行わないと駄目だった。そして直接 Swat4(X)DedicatedServer.exe を実行する。この方法ならばゲーム画面上からとは違ってCDキーのチェックは入らない。

これで成功していればStats Trackerのサーバーリストに反映される(数分掛かる)。反映されないのならばポート開放が必要か、やっているなら開放に失敗している可能性が高い。そしてリスト上に出て来れば、同じくこのパッチを入れてサーバーブラウザを有効にしているフレンドや一般人の接続が可能になる。自分自身からはゲームを起動してJoinからLANで検索すればサーバーが見えるはずなので(あるいはDirect IPでローカルホストのアドレスを指定 127.0.0.1)、Dedicated Serverとは別起動したゲームからそこに入るという形になる。

3.サーバーがどうしても公開出来ない場合の接続方法
これはMaster Server Patchを入れているケースで、上記手順で起動したDedicated Serverがリストに反映されないという状態の時に、上手く行くかもしれない方法。信憑性は何とも言えない。それはこの状態でもフレンドにIPアドレスとポート番号を教えてDirect IPからポート番号も併せて指定してやれば接続出来るという情報がある。ポート番号はタスクバーのDedicated Serverのアイコンを右クリックしてServer Consoleを出せばそこに10480(デフォルト)とか表示されているはず。付記しておくと何故かこの際には公開指定をInternetでは無くLANにしておくと成功するという情報も有り、失敗するなら両方試してみた方が良さそう。

最後に仲間内で全員サーバー役になれないという状態ならば、VPNを導入してLANモードでサーバーを建ててプレイする方式に切り替えるという手もある(4は有名所のVPNならば動作報告あり)。VPNアプリ自体が正常に作動してくれないという問題が発生する恐れはあるが、VPNの性質上ポート開放関連の問題はほぼ解消されるという利点がある。