June 24, 2004

オンラインゲーム業界を支える技術−Googleの掌中に?(その4)

Googleの技術はオンラインゲーム用サーバーに適用できる!

まず、前々回(その2)の説明の復習です。

さて、レスポンスが問題となるのは主に上記の(3)の機能ですが、これを実現するための基本的な考え方を説明します。オンラインゲームの実行には主にゾーン管理とセッション管理の二つの管理が必要です。

ゾーンとはゲームの空間的な単位です。プレイヤーはゾーンの中で決められたルールでプレイします。ゾーンに参加するプレイヤーの人数によって、一人のシングルプレイヤーか、2名から数名までの対戦型か、多人数のマルチプレイヤーか分類されます。セッションとはゲームの時間的な単位です。セッションは、更にターンとリアルタイムという2種類の単位に分類されます。ターンは、プレイヤーとプレイヤーあるいはプレイヤーとシステムの間の往復の時間が単位になります。リアルタイムはプレイヤー同士が時間を共有してプレーする場合の時間の単位です。

ゾーン管理およびセッション管理にとって一番難しいのが、マルチプレイヤーでリアルタイムのゲームの管理であるというのは、容易に想像できるでしょう。そのため、一般的にはゾーンの参加人数をサーバーの能力に合わせた人数に制限し、かつ、セッションはリアルタイムに進行するけれどブラウザ上のリアルタイムは保証しないことで、レスポンスを維持しています。

これを読んだ上で、前出のCNETの記事オンラインゲーム市場を狙う大手IT企業の思惑の次の記述を読んでみて下さい。

 Sunは現在開発中のオンラインゲーム用サーバシステム「Sun Game Server」で、Butterfly.netと同様の技術向上を実現すると公約している。Sunのこのシステムは、プレイヤーらが利用可能な各サーバに全てのゲームコンテンツが複製されるという従来の典型的手法とは対照的に、ゲームロジックやデータベースが中央サーバに保存され、各プレイヤーがアクセスする、より小型のサーバが接続されている。

 Sunの最高ゲーム責任者(CGO)Chris Melissinosによると、このシステムを採用することにより信頼性とスケーラビリティ(拡張性)が強化されるだけでなく、同じゲーム内でプレーできるユーザー数が1台のゲームサーバで対応可能な3000〜10000人に制限されないため、各プレイヤーは広大なオンラインゲームの世界を体験できるという。

 Melissinosは「現在のオンラインゲームの運営方法では、プレイヤーは物事を各シャードの中で体験する」と述べ、さらに「(現行の運営方法でも)ユーザーは(ゲームの中で)別のプレイヤーと同じ物を見ることができるが、別のシャードにいるため、全く異なる体験をすることになる」と語った。

 Melissinosは、シャーディングがオンラインゲームの技術的限界として一般に許容されているとした上で、「消費者が次世代オンラインゲームでも(シャーディングを)我慢してくれるかどうかは定かでない」と語った。

 SojournのCerraも、サーバやネットワーキング技術の向上により、オンラインゲームに対する消費者の期待が変化していくため、オンラインゲームの世界の拡大や対応の迅速化が重要なポイントになると予想している。「今後は、シャードに分かれていない(ゲームの)世界の実現といったことが、マルチプレイヤーゲームで成功するための真の差別化要因となるだろう」(Cerra)

ここで言っているシャードはGoogleのシャードとは何の関係もありませんが(暗示的ですが)、このシャーディングの問題は私の言うゾーン管理が不十分なことから来るものです。ゾーンの中のセッションの状態をリアルタイムにシミュレーションできればこんなことは起こりません。

では、このゾーン管理とセッション管理をGoogleの仕掛けで実現するとどうなるのでしょうか。

ここで新しくゾーンシャードとセッションシャードを導入して、これをGoogleのインデックスシャードに対応させます。ゾーンシャードが生成されるのはゲームの種類によって違ってきますが、RPGのように事前にすべてのシナリオが準備されている場合は、ゲームを登録時に設計した全ての場面をゾーンとして生成します。セッションシャードの生成は、ユーザー登録時(認証時ではなく)に自動的に行われます。ゾーンシャードおよびセッションシャードに対応して配置されるプールマシンが実際のゲームの進行を司ります。

これで道具立てはそろいましたので、ゲームの実行がどう行われるか見てみましょう。

ユーザーはブラウザ画面で個人認証を行います。これを見てWebサーバーは、このユーザーのセッションシャードに対応するプールマシンにゲームの実行開始を指示します。プールマシンは、ゾーンシャードとセッションシャードから現在のゲームの状況を収集してキャラクターの振る舞いを計算します。その結果をWebサーバーに返します。場合によって以降はP2Pでユーザーのマシンとプールマシンが直接つながってプレイすることもあります。同時にセッションシャードを使用して自分のゲームの進行を記録していきます。実際の記録の方法は省略しますが、基本的にシングルタスクですので排他の必要はありません。

また、キャラクターとキャラクター同士の干渉は、直接プールマシン同士コミュニケーションを取る場合と、ゾーンシャードのプールマシン経由でコミュニケーションを取る方法が考えられます。シミュレーションゲームのようにn:nの干渉がある場合は、プールマシン自ら、セッションシャードに対して情報収集をかけます。

次に、レプリカを含めたマシンダウンへの対処です。Googleのシャードマシン自体の更新の頻度は低いため、前回引用にあるようにマシンダウンでは単に使用停止にするだけで済みますが、さすがにオンラインゲームではもう少し別の方法が必要です。これに応えるのが、中身はわかりませんがGoogleの課金の仕掛けだと思います。つまり課金情報の消失は100%防止する必要があり、何らかの手が講じられているはずだと言うことです。

まだこれ以外に検証するべき機能はありますが、これで十分Googleの仕掛けがオンラインゲームに適用できると言うことが理解できたのではないでしょうか。いや、むしろ、Googleの仕掛けのほうがSunやIBMのソリューションより、最高のコストパフォーマンスで最適解を与えることができるのではないかと考えます。 KAI

投稿者 : June 24, 2004 06:22 PM | トラックバック