P2Pゲーム


日本ではゲームというとPS2などのゲーム機で遊ぶことが通常ですが、オンラインゲームで遊ぶ人は最近かなりの割合で増えてきています。特に韓国では非常にオンラインゲームで遊ぶ人が多く、優れたオンラインゲームを数々世に出しています。

さて、一般にオンラインゲームの場合はクライアント=サーバモデルの形態を 取ります。ゲームのデータ自体は大抵パソコンにあって、モンスターの情報や ユーザの認証、他のプレイヤーとのコミュニケーションをサーバが管理します。 ではオンラインゲームにP2Pを使うとどんな利点があるのでしょうか?

たとえばユーザAとユーザBがアクションゲームのような即時性が要求される ゲームをしたとします。通常の場合、ユーザBはユーザAの状態をサーバを 通して知ることになります。サーバを通過する必要があるということは、そこで 遅延が発生する事になります。ユーザAが必殺技でユーザBを倒したはずなのに 遅延の影響で逆にユーザBに倒された、なんてことがあるかもしれません。 仮にゲーム情報がユーザAとユーザAでP2Pで やり取りできればユーザ間の情報の遅延が少なくなり、このような即時性 が要求されるゲームは作りやすくなると思えます。

システム側からの観点から見ると、ユーザ間のゲーム情報をサーバを介せず 行う事ができれば、システムとしては認証とユーザの状態を監視するサーバ だけを立てれば良い事になります。そのためP2Pゲームは 非常に小さいシステムでゲームを運営することができます。また後述するDHT(分散ハッシュ)という新しい技術を使って大規模なMMORPGを実現する試みが世界で積極的に研究されています。このときにはユーザのCPUやHDDなどのリソースの一部を全ユーザと共有することになります。


[補足]
MMORPGを運用するゲーム会社の多くはユーザ増に伴い回線、システム増強を するための費用により経営をかなり圧迫しているようです。その点からも今後 P2Pによってゲーム会社への運用コストを抑える試みが必要になると考えています。
P2Pはゲーム本来の通信以外でも使われています。 たとえば、オンラインゲームでアイテムが増えたり、プレイヤーが利用できる 行動範囲が増えたとしましょう。この場合、ユーザはサーバからパッチを 当てる必要があります。ところが、このパッチは大抵非常に大きいので 多数のユーザがサーバからパッチをダウンロードすると、サーバに非常に 負荷がかかるだけでなく、サーバへの回線も圧迫します。

そこでP2Pの出番が周ってきます。あるユーザAがパッチをもらったとします。 もし、まだパッチをもらっていないユーザBがいれば、サーバからダウンロード するのではなく、ユーザAからパッチをもらっても良いはずです。そこで、 ユーザBはユーザAとP2Pでパッチをもらうことにします。これでサーバに 対するパッチのダウンロードの負荷は少なくなります。またパッチだけでなく、 ゲームソフト本体自身もP2Pで流通させることが既に始まっています。

韓国ではP2Pによるゲームが既に市場に出回っています。P2Pによる ゲームはオンラインゲームの一定の地位を築くかもしれません。


分散コンピューティング


P2Pの中では最もビジネスモデルに適していると思えるシステムです。 まずはスーパーコンピュータの話を説明します。

天気予報で12時間後の予想天気図を見たことがあると思います。昔は経験で 予想天気図を作ったものですが、今ではスーパーコンピューターで計算して 作っています。スーパーコンピューターは非常に複雑で大変な計算を高速 で処理することが可能です。

さて、通常パソコンにはCPUが一つ搭載しています。スーパーコンピュータは 通常数10〜数1000ものCPUを搭載しています。ではどのように計算しているので しょうか?それではプログラムを複数のCPUに計算すると早くできるように 事前処理をするのです。これを最適化と呼びます。

簡単な例で説明しましょう。今、東京に在住する人の身長の平均を計算 するとします。これを一人で計算すると大変なことになります。そこで、 数千人が集まって市区町村毎に分割して平均を計算をすれば、一人で計算 するよりもずっと短時間で計算することができます。これがスーパーコンピュータ の速さの秘密です。

先ほどスーパーコンピュータでは数1000ものCPUを使っていると書きました。 そこで,「もし、知人たちを集めての PCを数百台接続したらスーパーコンピュータに匹敵する高速演算が できるのでは?」と思った人がいるのではないでしょうか?答えはYESです。 このようにインターネット上で数万以上もの PCを集めてコンピュータ同士をうまく連携して高速な演算を行う事が 分散コンピューティングです。SETIと呼ばれる宇宙人探しプロジェクトや 白血病を治癒するための研究等に既に実用化しています。

さて、先ほどのSETIはボランティアベースのプロジェクトなのでPCのCPU パワーを貸しているユーザにはお金等は入ってきません。もし、CPUの パワーを利用した分だけ、ユーザにお金が入ってくるような システムがうまくできれば非常に多くのユーザが集まって現在の スーパーコンピュータを遙かにしのぐ 巨大な分散コンピューティングシステムができると思われます。

分散コンピューティングは非常に有望な技術ですが、課題もあります。 例えば、あるユーザが計算を途中で止めてしまった(PCの電源を切った等) 時に、全体の計算が遅れてしまう可能性がある、悪質なユーザがわざと計算 結果とは違う結果を返し、全体の計算を破綻させてしまう...などです。 しかし、分散コンピューティングは現在非常に研究が盛んな分野なのでこの ような課題も克服されるでしょう。なお分散コンピューティングの事を 通称グリッドコンピューティング(Grid)または略してグリッドと呼ぶ事が多いです。

次は最近話題のskypeに代表されるP2P-IP電話についてです。



NEXT

TOPページに戻る