ポケットモンスターブラック2:BeginingCupに参加してみて

ん〜…。適当に、勝ったり負けたり切断されたり負けたりくらいで、適当に楽しんでみましたが。まあ、結論から言うと、これはダメだなぁ、という感じですね。
対戦自体は楽しいですし、1戦にかかる時間もそれなりに適当。ただ、成績を争う大会としては、システム面の不備から非常に不毛な感じです。まあ、元々聞いては居た話ですが、実際に目の当たりにすると、なんかなぁ、と。
基本的には切断対策が全くないのが原因なのは明白で、その対策のためにはメーカー側にお金、特に維持費がかかるからメーカーはやりたくない、という構図ですね。確証が有るわけではありませんが、運営のどちらが切断したか分からないから対策ができないという回答と、実際の動きから推測されるwifi対戦の方式は次のような物でしょう。(下に1〜4のイメージ図)

  1. ユーザがwifi対戦を選択するとDSはマッチングサーバへ通信を行い、行いたい対戦の条件と自らのIPアドレスを通知
  2. マッチングサーバは、同じ条件の対戦要求のマッチングを行い、対戦相手のIPアドレスをお互いのDSに通知
  3. DS同士はマッチング相手のIPアドレスを用いてピアツーピアで通信を行い対戦を行う
  4. 対戦が終了すれば双方のDSが対戦結果をマッチングサーバへ通知
  5. レーティングの場合、マッチングサーバは双方の結果が正しく帰ってきたらレーティングのための成績の記録に追加
  6. wifi大会の場合、戻ってこなかったら試合不成立として両者に切断を記録(切断率が著しく高い場合に失格とするため)


これに加えて、DS自体を識別するための情報(DSに紐付いているみたいなのでDSのMACアドレスや個体識別番号)も、ペイロード内でやりとりしている可能性は高いですが、まあ、本質的にはこんなところでしょう。
で、問題なのは3番。これは、事実上、対戦の場に審判が付かず、終わったら自己申告で結果を教えてね、と言う状況。負けを勝ちと申告することはできませんが、都合が悪くなって試合放棄をしても、試合放棄をしたのがどちらか分からないから罰則無し(あるいは、切断が記録されるという意味では切断された側からすれば理不尽な喧嘩両成敗)。ソフトで対策して、自ら切断したりされたりしたら通信で訴えれば良い、という風に思うかも知れませんが、ピアツーピアで通信を行っている以上、DSの電源を落とす、フタを閉じる、wifiのスイッチを切るなどの操作以外の場合、どこで切断が起きたのかは、ソフト側では分からないのです。なので、自宅の無線LANスイッチやモデムなどの類の電源やケーブルを引っこ抜くだけで、どこかで通信障害が起きましたと、ちゃぶ台返しが簡単にできてしまうわけです。一応、ソフトから判別可能な形での切断に対しては、BW2においては1時間対戦禁止とするペナルティ時間などを設けているようですが、回避するためのノウハウはちょっと知識が有ればすぐ思いつきますし、その程度の情報は求めている者にはすぐに行き渡るでしょう。なので、これも無意味なわけです。
切断率を計測する方式も導入して居るみたいですが、これも、切断されたのか切断したのかの区別が付かないため、殆ど意味がありません。除外の条件を平均切断率の2倍以上に設定せざるを得ないのがその証拠でしょう。例えば、平均切断率以上をアウトにすれば、みな萎縮して切断を控える可能性が高まりますが、この場合、運悪く他社の切断が相次いだだけの冤罪で除外されかねない危険性が出てくると運営自身が考えているからでしょう。実際、過去の大会でも、通信エラーが原因で起きるとは到底考えづらい10%以上の平均切断率が生じている段階で、20%は切断してもお咎め無し、事実上、やりたい放題です。特に、レーティング方式の場合、相手が自分より大きくレートが低い場合、大敗しそうな場合など、大きくレートを下げる原因となりそうな状況があらかじめ分かり、それらを避けるだけで大きな効果があるので、限られた状況だけ切断しようというインセンティブが働いてしまいます。すると、今度は、切断して高くレートを維持すればするほど他者から切断される可能性が低くなり、レーティングが低い相手に対して自分が切断できる回数が増えるという正の(?)循環が起きるわけです。
こうした状況に対して、モラルを語るのは簡単ですが、切断をする人間が居る以上、それに対抗するには切断し返すという不毛な争いしか無いわけで。根本的な対策は、審判がきちんと立ち会うことしかなく、それは、3の用にピアツーピアで直接DS同士が対戦するのではなく、お互いが選択した行動を、一度運営側のサーバが受け取って処理を行うクライアントサーバ方式を用いるしか有りません。こうすれば、お互いのDSからの通信のうちどちら側が応答しなくなったかは、サーバから見て明白なため、切断対策としてのペナルティや試合放棄を負けとして扱うなども可能となる訳です。この方式は、リアルタイム性を要求されるゲームにはあまり向きません。例えば、格闘ゲームの通信対戦などは、遅延が問題となるため、殆どピアツーピア方式で、同様に切断が問題になっている場合があります。しかし、ポケモンの対戦の場合、0.1秒未満の遅延が問題になるようなことはあり得ませんので、ピアツーピア方式でなくてはならない理由にはなりません。むしろ、ピアツーピア方式の場合、相手と直接通信を行いますので、ネットワークのパケット監視など行えば(例えば途中にミラーリング機能を持ったスイッチを挟むんでミラーポートをPCに繋ぐとか、PCに刺したUSB型無線LANモジュールをアクセスポイントとするとかして、PC上でWiresharkを使えば割りと普通に可能)IP程度は簡単に引っこ抜けてしまうんですよね…。なので、セキュリティ面ではむしろ不安を抱えている状態に思えます。
で、対策方法ですが、マッチングをサーバで受け付けている以上、技術的に難しい要素もなく、必要なのは適正な台数のサーバを用意することだけです。この適正な台数のサーバを用意するのが、金銭的にやりたくない、というのがメーカあるいは運営の考えなのはまず間違いないです。というのも、ネットワークを介したゲームというものの設計を少しでも囓っていれば、あるいはそうでなくてもネットワークの知識と多少の想像力があるだけでも、上のような切断の問題が起きることが予見できないはずが無いからです。実際、現在のマッチングサーバの状況も、中々に惨憺たるもので、いざ対戦が始まればピアツーピアであるため忘れがちですが、マッチングまでに10秒とか、30秒とか下手すれば1分以上かかったりするのは、マッチングしているだけにしては明らかに時間がかかりすぎです。やってることは電話の回線交換程度なのですから。電話かけて相手の電話が鳴るまでに1分もかかっていたらサービスにならんでしょう。天下の電話会社様と同じ品質を要求するなと言われるかも知れませんが、利用者数の少なさを考慮したらむしろ生ぬるいんじゃないですか、と思うわけで。
まあ、それはともかく、今の処理能力のまま、クライアントとして対戦の面倒まで見るとなると、1回辺りの必要性能は、少なくとも10倍くらいには膨れあがりそうですので…下手すりゃ対戦1回10分待ちとかになりそうですね。あるいは、ドリームワールドみたいに、対戦は1日何回までとか、制限が加わるとか…。流石にそんなサービスを展開されたら、苦笑では済みませんが。
もちろん、サーバを増やすとなると、初期投資や維持費として、サーバを購入するなら購入費、サーバをレンタルするならレンタル費、データセンタに預けるならデータセンタのレンタル費、さらに保守管理用の人件費などがかかります。それを無料のサービスで、運営が全部負担しろと言うつもりはありません。そうではなくて、適切な料金できちんとした品質のサービスを展開するという当たり前のビジネスをやってくれと、言っているわけです。無料で展開し、いい加減な保守管理でユーザに愛想をつかされたネトゲなんて吐いて捨てるほど有る世の中です。はじめから適正な利用料金を提示していれば、それで文句など出ません。お金を出してまでwifi対戦しないというユーザは契約しなくてもいいし、逆に契約者をきちんと管理すれば、必要となる性能の見積もりの算出も容易になる。せっかくグローバル展開も(一応)しているのですし、そんな当たり前のサービスを展開していただきたいと切に願います。
ちなみに、現在のソフトの仕様上、対戦相手とピアツーピアで通信するように作られているため、改良を加えられるとしたら次の第6世代以降にならないと無理…というのは、一見正しいようですが、多分ウソです。というのも、ピアツーピアの接続先を通知するのはマッチングサーバなわけで、そのマッチングサーバが通知するIPを対戦用サーバのIPにして、対戦用サーバにDSが吐く対戦用データをエミュレート、あるいはアドレス変換だけしてDS同士のデータをトンネリング、サーバは死活監視だけすれば、事足りる話なはずだからです。