VPNでのマルチプレイ

 今回は「オンラインサービスが停止されてしまったゲームでマルチプレイを行う方法」というテーマで、そのガイドと実験レポートを書いてみる。


 まずは基本知識としてFPSでは、オンラインでのマルチプレイにマスターサーバーという物を用意して運営に当たるのが一般的である。公式に用意された常設のDedicated Serveや、ユーザーが現在建てているサーバーの情報をまとめるサーバーの事で、こういった現在稼働しているサーバーはその情報を定期的にマスターサーバーへと送っている。そしてゲームにJoinしたいユーザーがサーバーブラウザで一覧を検索すると、このマスターサーバーに登録されている現在の稼働サーバー情報が送られるという仕組みである。


 しかしマルチプレイ人口の減少や、マスターサーバーを運営しているゲーム会社や代理店の倒産or吸収合併による消滅により、マスターサーバーが停止されたり無くなってしまうケースが在る(と言うかいずれ何時かは無くなる運命にある)。そうなるとマルチプレイをしようと思っても「マスターサーバーが見付からない」というエラーになってしまうか、ブラウザは表示されるがサーバー一覧の取得が出来ないという状態となり、以後はマルチプレイが出来なくなってしまう事になる。(仲間内でのプレイで、Direct IPの入力画面まで行けるか、若しくはコンソールから直接打ち込めるケースでは、ホスト役のIPアドレスを打ち込んでプレイ出来る可能性は残されている)。



 そこで登場するのがVPN(バーチャルプライベートネットワーク)という概念である。これはある種のプログラムを使ってオンラインで接続されたPC間に仮想的なネットワークを構築してしまう物で、タイプや規模には様々な物が存在するが、個人レベルではP2P方式のシンプルな物がポピュラーとなっている。これによって接続された各PCは仮想的にLAN(ローカルエリアネットワーク)で接続されているのと同じ様な状態であり、同じ部屋(家)の中で繋がっている真の意味のLANと同様に、共有ファイルのフォルダを制作したりデータのやり取りが容易に行える様になる。


 つまり実際には遠く離れた場所のPC同士がインターネットを介して接続しているのだが、仮想的にLAN接続と同じなのでいろいろと便利な要素が出て来る。例えば自宅サーバーを稼働させておいて、出先からVPNで接続する事で内部のデータへのアクセスを容易にするとか、仲間同士のネットワークでお互いにファイルを共有したりして利便性をアップさせる等が可能。後は企業等が利用する際に専用線を使うよりも遥かに安価で済むというメリットもある。



 これがゲームでのマルチプレイにどういう風に関係してくるのかと言うと、大半のゲームはインターネットでのオンラインモードの他に、LANでのマルチプレイも可能になっている。そこでVPNによって仮想的に各人のPCをLAN接続状態に設定してやり、ゲームに対して真の意味でのLANで接続しているかのように見せ掛けて、オンラインサービスの終了したゲームをインターネットを通じて、インターネットモードではなくLANモードでマルチプレイをしてしまおうという話である


 だがLANに対応しているならば全て可能なのかというとそうではなく、中には問題が発生する物もある。ゲームの中にはマルチプレイ用のCDキーを入力する必要がある物が存在し、普通LANの場合には各人のキーが異なる点しかチェックされない(同じ製品を使って複数人でのLANマルチプレイが出来ない様にする為の措置)。しかしゲームの中にはLANをプレイする際にもCDキーの認証の為にマスターサーバーに接続する必要がある物も在り、このケースではマスターサーバーが無いので困った事になる。ただしこういった問題を持つゲームでは、内部のファイルを改変したりとプレイ出来るようにする方法が見付かっている事もある。


 逆にLANに対応していないゲームの場合。近年のゲームに多い個人別のアカウントでログインする必要があり、サーバー側でプレイヤーのランクやレベルを管理しているゲームだと、純粋なLANモードを実装するのが難しくなる。個人成績データの管理の為に常時データ管理サーバーとの通信が要求されてくるからだ。だがこういったゲームでもModやファイル改変でLANでのプレイを実現してしまおうとする有志もいるので、最初からLANには対応していないからと言って諦めるのは早計という面も持っている。



 なおVPNを使用した仮想LANでのマルチプレイは、途中でサポートが終了したゲームだけで行われている訳では無い。例えば昔のMS-DOSのゲームはインターネット環境が普及していなかった時代なので、TCP/IPによる接続に対応しておらずLANでプレイするしか無い物が多い。(インターネット上でのプレイを可能にするプロトコル変換サービスを提供していたマッチングサービスも既に無くなっている)。Build Engineを使用したDuke Nukem 3Dなどがそれに当たる。だがVPNを使えばインターネットを通してのマルチプレイが可能になるので、最初からLANにしか対応していないゲーム(レースゲームに比較的多い)ではそれを利用すれば良い事になる。
 
 またインターネットでのプレイに対応しているゲームで、今でもプレイ可能なのにもかかわらず、VPN環境でのマルチプレイを行っているユーザーも結構存在している。これにはいろいろと理由があって、代表的な物はポートフォワーディングが出来ないという件。(ポートフォワーディングについては長くなるので後述する)。誰かが建てているサーバーにクライアントとして入る際には問題は軽減されるのだが、ホストをやったり相互接続タイプのシステムを使用するゲーム(RPGやRTSに比較的多い)では障害が発生する。


 そのポートフォワーディングを含めて以下の様な環境にいる人達が、通常のマルチプレイを部分的or全くプレイ出来ないという理由からVPNでのプレイを行っている。言い換えると以下の理由でマルチプレイが出来ていないという人は、VPNを使えば問題がクリアされる可能性があるので検討や研究をしてみる価値はある。


*使用しているルータが安いor古いのでポートフォワーディング機能その物が無い
*機能は持っているのだが、設定の仕方が解らない(そして勉強する気も無い)
*オフィスや校内LANからのアクセスなので、セキュリティの面から管理者にポートの操作を禁止されている
*使用しているプロバイダによる制限でポートフォワーディングが出来ない
*集合住宅内やCATVでのインターネットなので、グローバルIPを持っていない
 
 その他では常設サーバーを建てたい時に固定IPが理想(または必須)なのだが、固定IPを得るのは高価だし、そもそも提供していないプロバイダもある。よって固定IPが簡単に得られるVPNで常設サーバーを運営するという人も居る。後はフレンド同士で他の目的でVPNを利用しているので、その仲間内でマルチプレイをするのにわざわざノーマルのインターネット接続に切り替えてプレイするのは面倒だからというケースも。



 ここから実践編へと移る。今回トライしてみたのはNo One Lives Forever 2。Activision Blizzardの成立によりSierraが消滅してしまい、同社の数多くのゲームのマスターサーバーも停止されてしまったので、このゲームも現在では通常のインターネット接続ではマルチプレイが出来なくなってる。ただNOLFシリーズにはまだ熱心なコミュニティが存在しており、ここではModを使用して自分達の運営するサーバーでのマルチプレイを可能にしている。試した所確かにCo-opは可能だったのだが、Dedicated Serverのためホストとして各種パラメータを変更したりが出来ないので、誰かがホストになれる形態でのCo-opを実現する為にVPNを使ってみる事にした。


 最初に選択したのはHamachi。VPNとしての利点欠点は知らないが、ゲームの世界での仮想LANマルチプレイと来たら真っ先に出て来る有名なフリーソフトである。なお仲間内でプレイする際には別にどのVPNでも良い訳だが、不特定多数のプレイヤーとマルチプレイをしたい場合には、同じVPN同士でしかプレイが出来ない制限から、必然的にゲーマーの使用者が多いHamachiの様なVPNを使ってサーバーを探したりするしかない。


 現在のソフトはアカウントを制作しないとダウンロードが出来ないが、旧版をインストールしてからアップデートしてやればちゃんと最新版になる。アカウントの有無による差は不明。しかしとりあえず結構古い1.0.3.0を使ってみたのだが、ホスト役が建てたサーバーが見えないという状況で断念。(NOLF2自体のHamachiでの動作報告はネット上に在り)。



 そしてHamachiに関する情報を探していた所、別のVPNとしてTunngleという物を発見した。これはドイツ製のVPNで現在はまだβの段階。北米ユーザーが使用者全体の1%にも満たないので無名に近いが、仮想LANでのプレイには優れているとされている。以下の掲示板に書き込んでいる人物はこのTunngleを宣伝しているので内容が完全に信頼できるのかという点と、2010/08時点の書き込みなので現在のHamachiでもそうなのかというのはあるが、Hamachiの持つ欠点について幾つかの事項を挙げている。
http://tehparadox.com/forum/f43/earn-how-play-lan-enabled-pc-games-over-internet-free-tunngle-king-1209925/


*仮想IPアドレスの値によってホストとクライアントの関係に制限が在る(サーバーが見えたり見えなかったりが発生する)
*一つのセッションに最大16人という制限が在るので、同一セッション内に多数のサーバーを用意する事が出来ない
*VistaとWindows 7ではOSの仕様の変更から問題が発生する可能性が高まっている



 しかしTunngleならば上記の様な問題は発生せず、動作確認済みのゲームも多い。NOLF2もその中に入っていたのでこちらで実験したみたが、見事に接続する事が出来た。VPNで問題となる処理負荷によるラグの発生もほとんど感じられず。今後も別のゲームでの検証が必要になるが、このソフトはかなり有望そうという印象である。公式サイトのサポート頁もかなり充実しているし、掲示板も装備しており障害対策に役立つ。またサポートの“N”で検索すると、ゲーム別の動作させる為の情報も見られるようになっている。


 使用にはメアドを登録してのアカウント作成が必要。まずは公式サイトから最新版をダウンロードしてインストール。この時点でTunngle用のネットワークアダプタが作成されるが、MSの検証を受けていないというメッセージが出たら無視して続行する。
http://www.tunngle.net/index.php?l=en


1.インストールの完了後に再起動
2.ソフト起動後にアカウントを尋ねられるので制作画面に行く
3.まだ使われていないユーザー名で登録を行う
4.登録後にメールが来るのでリンクをクリックして認証作業を完了


 後はTunngleの起動後に登録済みゲームの中から目的の物を探してロビーに集合。ここで仮想IPアドレスが与えられる。仲間内でのプレイならばそのままの状態で、ホスト役がゲームのLANサーバーを起動すれば、他のメンバーがLANのサーバー検索からそのサーバーを見る事が出来るようになる。同じロビー内に集合したプレイヤーで遊ぶのならば、チャットで打ち合わせてから開始するか、誰かがサーバーを既に起動していないかを確認して見るという形になる。


 (付記) 私の場合Tunngleのセットアップでインストーラーが終了しないという問題が発生した。初回はハングアップしたのかと思って強制終了させて再起動したが、Tunngle用のネットワークアダプタのインストールが完了しておらず、新規ハードウェアの追加から手動での登録を実施。一度アンインストールしてから2回目のチャレンジでは10分ほど放って置いたが同じく完了せず。しかしこの時は再起動でちゃんとアダプタがインストールされていた。インストール時にセキュリティ系のソフトを切っていなかったのが原因かも知れない。



 なおVPN使用時のセキュリティ面が気になる方もいると思うが、結局は普通のインターネット接続と同様で、どんな風に使うのかによってセキュリティの重要性も変わってくるとしか言えない。例えば自宅のサーバーを常時稼働させてVPNを可能にしておくのならば、侵入に対する警戒は十分に行わないとならない。或いはファイル共有を可能に設定して、VPNを稼働させっぱなしにする環境でも危険度は増える事になる。反対に短時間ゲームをプレイするのに大規模な防壁を作るのは大袈裟であり、防御を固くするほど接続の問題が発生する確率は高くなってしまう。VPNはルータによるブロックの障害を越えて接続する方式なので、PCにソフトウェアでのファイアウォールを設置してブロックするといった対応は最低限必要だろう。ただしそれが接続障害の原因になったりもするので、どの程度の防壁を用意するのかは各人次第となる。



 続いてはVPN接続でのマルチプレイを行う際の注意事項。まずゲームのバージョンを合わせるというのが基本。インターネットの接続で自分と同じバージョンのサーバーしか表示されないというゲームも多いが、LANでもフレンドが建てたサーバーが見えない際に、ネットワークの問題では無くバージョン違いというケースも考えられる。利便性の為にNo-CDを使っている場合のミスマッチも有り得るので事前の統一が重要になる。同様にModのチェックが行われない可能性もあるので、全員が無しなら無しに統一させておく。


 次にファイアウォールソフトを使用している場合、VPNのソフト自体と使用ゲームが許可されるように設定しておかないとならない。これは普通ゲームの起動時に登録機能が働くのでそこで指定してやれば良いだろう。だがゲームの側で起動exe以外にも登録要のファイルがある可能性があるので注意。同じくアンチウイルス等のセキュリティ系のソフトウェアを使っている場合は、最近は多機能なのでそちらでのチェックに引っ掛かる可能性もある。


 同じくファイアウォールにて、Windows標準では無いファイアウォールソフトを使用している場合にはアップデートを確実に行っておく。Windows側やVPNのセキュリティの仕様変更などに対応する為には、古いバージョンのファイアウォールソフトでは問題が発生する恐れがあるからだ。余談だが割と知られたトラブルとして、Ubisoftが現在オフラインのゲームでも常時接続必須というプロテクトを導入しているが、その関連プログラムであるUbisoft Game Launcherはファイアウォールソフトとの相性問題が発生している事で知られる。特に日本でも有名なZoneAlarmとの相性が悪く 、最新版にしないとゲーム起動時に認証サーバーに接続する事が出来ない。例えばこのソフトの日本語版(フリー版)は更新が停止しておりバージョンが古いので、使用していると問題が発生してしまう。(ゲームモード切り替えやシャットダウンを行っても不可。完全にアンインストールするか、全ての関連サービスを手動で止めるしか無いので、実質英語の最新版を新規に導入するしかない)。


 VPNにおいてもハードルが高いのはホストであり、クライアントとしてプレイするよりもホストに成る方が難易度が高い。よって仲間内でプレイする場合でホストのサーバーが見えない状況なら、交代でホスト役をやってみて上手く行く人がいればそれでプレイするというのが手っ取り早い(回線の太さやCPU速度の問題が無いのならば)。


 最後にプレイするゲームのVPN環境でのプレイ情報を出来るだけ集めておく。中にはLAN非対応のゲームでも可能にする方法が在ったりするので、どうしてもプレイしたい物が在るなら調べてみる価値はある。



[参考] ポートフォワーディングについて


 以下は初心者向けの簡単な説明。今後はブロードバンドルータを利用する人もより増えてくる筈だし、ゲームに限らずオンラインでの通信を行うソフトのトラブルにも関連するので、知っておいて損は無いだろう。


 個人レベルでのインターネットに接続する形態は、大きく分けてルータを介するか直結かになる。ADSLモデムを使っているとか、ルータの設定などした憶えが無いというなら直結の筈だが、ルータにはブリッジ接続モード(直結モード)もあるので、直結で繋いでいるが使っているのはルータという可能性もある。(背面を見てLANコネクタが4個付いているとかならルータとしても使える)。直結というのは一台のPCだけをインターネットに接続する環境であり、フレッツ接続ツールなどを起動させてインターネットに繋いでいるのならそれは直結である。


 しかし家の内部から複数の機器(PCやゲーム機等)をインターネットに接続させたいとなると直結では不便である。個々の機器が独立して接続していたのでは、他の機器が割り込んで接続する事が出来ない(単一の回線しか契約していないケース)。そこで交通整理役としてルータを導入する。形態としてはルータが親のような役割でインターネットへの接続を受け持つ。その他のPC等は子となり、個別にローカルのIPアドレスを貰ってルータに接続される。これなら内部の複数の端末が同時にインターネットに接続しても、ルータは各端末がどのIPアドレス(サイト)に接続しているかを把握しているので、回線を通じてやって来るパケットをそれぞれの端末へと振り分けられる。よって各端末が異なるゲームのサーバーに接続したりしても、問題無く同時にプレイ出来る訳だ。


 もう一点ルータを導入する際の利点として、セキュリティの向上が期待できる。直結でインターネットに接続している場合、プロバイダから提供されたグローバルIPアドレスを持っているのはそのPCである。よって外部からそのアドレスにアクセスしてきた場合、それはPCにまで届いてしまう事になる。つまり不正アクセスに対しては弱い環境と言える。しかしルータにインターネットのへのアクセスを担当させるなら、グローバルIPアドレスを持っているのはルータなので、それより先の各端末まではアクセスする事が出来ない。例えるなら会社の代表電話番号へのイタズラ電話は可能だが、そこから内線番号で繋がっている特定の電話機を指定してそれにイタズラ電話をダイレクトに掛ける事は出来ないのと一緒。なのでセキュリティという観点からは、一台しか接続するPCがないケースでも、ルータを介してやった方が格段にセキュリティは向上するので実際にそうしている人も多い。


 しかしこのセキュリティ上の利点が、逆にマルチプレイにおいては問題となるケースがある。FPSでポピュラーなクライアントサーバーモデルで、プレイヤーがクライアントとして接続している場合には普通にプレイ出来る事が多い。ルータはどのIPアドレスに接続しているかを把握しているので、そこからやって来るデータをそのPCへと通してくれるからだ。しかしホスト役になったり、P2P形式等で各人が相互にデータのやり取りをする時にはルータの存在が障害となる恐れがある。他の接続者からやって来たデータは、ルータからすれば外部からの不正アクセスと見分ける方法が無い。そしてブロックされてしまえばそのデータは内部のPCまでは届かず、マルチプレイが出来なくなってしまう。セキュリティを解除して全面的に外部からのデータを指定したPCへと通すという設定(DMZ)が可能なルータも在るが、当然これではセキュリティ面に問題が出てしまう。


 そこでポートフォワーディング(ポート転送)という方法を使用する。各種アプリケーションは通信時に0~65535の範囲のポート番号を使用する様になっており、そのゲームがどのポート番号を使っているのかは公開されている。そこで例えば12345番を使っているゲームだったら、ルータ設定用のユーティリティを起動して、「12345番のポートを使って通信を行っているのならば、そのデータだけはこのPCに通せ」という風に設定してやる。それによって不正アクセスは禁止しつつ、ゲームのデータだけを通す様にするという仕組みである。ただしちゃんと設定しているのにホストとして機能しないというのも良く聞くトラブルであり、この辺はルータの型番やファームウェアのバージョンによる問題だったりもするので複雑である。


 なお指定するポートの数やプロトコル(TCPかUDP)はゲームによって異なり、物によっては数が多くて面倒なケースも有り得る。またゲームが終わったら設定は解除する必要があるので、再度設定する手間を省くには幾つかの設定を記憶させておく機能も欲しい。設定画面がどれだけ簡単に操作出来るのかも重要であり、ホスト役をやる事が多いのならばポートフォワーディングを指定するユーティリティの使い勝手はルータ選択時の大事な要素ともなる。