説明

適切な対戦を迅速に提供すること

マルチプレイヤートーナメントが確立され、次いで、トーナメントサーバデバイスにより自動的に実行され、ユーザは、似た技量を有するプレイヤーと質のよい対戦を行える。トーナメントは、管理者により定義され、次いで、プレイヤーによる需要に応えるように何回も自動的にインスタンス化されうる。いくつかのトーナメントでは、トーナメントラウンドにおいて類似のランクのプレイヤーをグループ化し、さらに、ウィンドウ係数を使用し、プレイヤーが前のラウンドで一緒にプレイした後あまりにも早く一緒にプレイするのを防ぐこともできる。いくつかのトーナメントでは、リーダーボード資格認定プロセスを使用することができ、これにより潜在的参加者は、資格認定パラメータで指定された功績を達成することによりトーナメントの資格認定を受けることができる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、適切な対戦を迅速に提供することに関する。
【背景技術】
【0002】
オンラインコンピュータゲームは、たちまち今日のビデオゲーム市場の重要な一角を占めるまでに成長したが、というのも、現在では他のプレイヤーと対戦する機会が一段と増えているからである。例えば、XBOX LIVE(商標)(ワシントン州レドモンド所在の本件特許出願人)のオンラインサービスでは、ビデオゲームプレイヤーは世界中のあらゆる場所の他のプレイヤーと対戦することが可能である。潜在的プレイヤーのプールがこのように大きいため、それに対応してプレイヤーの能力も、初めてのプレイヤーまたは不定期のプレイヤーから毎日親しむ熱烈なファン、さらにはプロのビデオゲームプレイヤークラスまで、非常に多様である。
【発明の開示】
【発明が解決しようとする課題】
【0003】
プレイヤーの能力がこのように多様であるため、新たな問題が出現した。多くのオンラインゲームは、プレイヤーが、ゲームの目標を達成するために対戦相手と競争し、対戦相手に対する一定レベルの優位を獲得するという点で競争的である。このような競争ゲームは、多くの場合、さまざまなプレイヤーが技量および能力の点で互いに近接している場合にしか楽しめない。技量レベルの違いが大きすぎると、技量の高いプレイヤーは、挑まれず、その一方で、技量の劣るプレイヤーは、常に敗北することにフラストレーションを感じることになる。しかし、典型的なオンラインゲームでは、ゲームセッションに参加するのにあわせてプレイヤーを集め、プレイヤーの能力、またはプレイヤーが互いに技量の点でどれだけ近接しているかについては問題にしない。
【0004】
トーナメントなどのいくつかの組織的試合では、決勝戦で技量の等しいプレイヤー同士を組み合わせようとすることがある。例えば、NCAA(商標)(National College Athletics Association)バスケットボールトーナメントでは、65チームを選び、(番狂わせがないと仮定して)その2つの準決勝で上位4チームを互いに競わせるようにチームのシードを決める(つまり、4つの第1位シード(four number 1 seeds))。しかし、トーナメントの早い回のラウンドまでのそれぞれの第1位シードの経路は、アンバランスの対戦ばかりである。例えば、NCAA(商標)バスケットボールトーナメントの第1ラウンドでは、ブラケット内の最上位シードをブラケット内の最低シード(第16位シード)と競わせる。それに加えて、NCAA(商標)の取り決めは、固定された、チームの限られたラインアップ(シード順序で65チーム)を必要とし、数千の(または数百万の)プレイヤーと随時退会または参加する可能性のあるプレイヤーとを有するビデオゲームコミュニティに容易に移すことはできないであろう。
【課題を解決するための手段】
【0005】
この要約では、以下の詳細な説明でさらに説明される概念のうちの選択したものを簡素化された形で導入する。この要約は、請求されている主題の鍵となる特徴または本質的特徴を明示することを意図しておらず、また請求されている主題の範囲を制限するために使用されることも意図していない。
【0006】
以下でさらに詳しく説明するように、本出願は、カスタマイズ可能な競争構造を含む。トーナメントパラメータは、予め定義しておくことができ、また、人間による絶え間のない監督を必要とすることなくトーナメントが必要に応じて作成されて無期限に存在するように、ゲームの通信ネットワークにより自動的にインスタンス化することができる。この定義は、例えば、インターネットページインターフェイスを使用して、またはエンドユーザのビデオゲームユーザインターフェイスにより行うことができる。
【0007】
トーナメント管理者は、トーナメントを定義するためにトーナメントサーバにログインして、トーナメントパラメータを入力することができる。トーナメントは、1回または複数回、インスタンス化することができ、別々のインスタンスが、個別に、また自動的に、さまざまな参加者と通信し、ゲームセッション結果を管理し、トーナメント勝利者を決定することができる。
【0008】
いくつかの態様では、スコアリング・アービトレーション(scoring arbitration)を使用して、トーナメントに参加しているさまざまなゲーム機により報告されたスコアの異常性を解決することができる。例えば、トーナメントサーバは、受け取った結果を、別個のリーダーボードプロセス(leaderboard process)により受け取られた結果と比較することができ、その別のリーダーボードプロセスは、通信の検証を助けるためにゲーム機とより安全な送信を使用することができる。
【0009】
いくつかの態様では、トーナメントは、スケジュールに従って実行することができ、次々に(例えば、実質的に連続して)実行するように構成することができる。
【0010】
いくつかの態様では、ウィンドウ(window)係数で、トーナメント全体を通して同じプレイヤーが互いに対戦する事態を最小限にとどめるために、プレイヤーがゲームセッションで再会できるまでに経過していなければならない時間の長さを識別できる。また、新規プレイヤー(new player)係数を使用して、新規に加わった参加者のスコアを調節することができる。
【0011】
いくつかの態様では、トーナメントパラメータおよびゲーム設定がゲーム機にダウンロードされ、トーナメントの次のラウンドに合わせてプレイヤーのゲーム機が自動的に構成されるようにできる。
【0012】
いくつかの態様では、資格認定(qualification)期間をトーナメントに先行させることができ、その認定期間に、プレイヤーは、対応するスコアをポスト(post)することにより資格認定を受けることを試みることができる。プレイヤーは、その資格認定ステータスを通知され、また、その後のプレイヤーの資格認定試行によりステータスが変化した場合に再び通知され、また、資格認定をまた試みるオプションを与えられうる。トーナメントは、異なるレベルの資格認定者(qualifier)を受け入れるように複数回インスタンス化することができる。
【0013】
いくつかの態様では、トーナメントは、可変数の資格認定トーナメントエントリ(qualifying tournament entries)を受け入れるように動的に調節することができる。試合毎の勝利者の数、試合毎のプレイヤーの数、ラウンドの回数、トーナメントの決勝戦の参加プレイヤーの数などのトーナメントパラメータは、所望の数の資格認定者がトーナメントに参加できるように変えることができる。試合参加者は、かれらの全スコアと、かれらがプレイしたラウンドに対する可能な全スコアとの比を使用してランク付けされ、そのランキングは、プレイヤーの後のグループ分けで使用できる。
【0014】
トーナメントユーザインターフェイスは、ユーザがトーナメントプロセスをナビゲートできるようにするために表示することができる。ユーザは、インタラクティブなオンラインのマルチプレイヤー型およびマルチラウンド型ビデオゲームをプレイし、ユーザが資格認定を受けたトーナメントのリストを表示することができる。ユーザ希望基準(user−desired criteria)を満たすトーナメントを探索すること、またはトーナメントおよび/もしくは対戦相手の詳細を表示することなどの他のオプションも用意することができる。
【0015】
これらの態様および他の態様について、以下で詳述する。
【発明を実施するための最良の形態】
【0016】
さまざまな態様の以下の説明では、一部をなし、本明細書で説明されているさまざまな特徴を実施できることが図で示されている、付属の図面を参照する。他の実施形態を利用し、構造上または機能的な修正を加えることができることが理解されるであろう。
【0017】
図1は、コンピュータゲーム、ビデオゲーム、および/または他の電子ゲーム(本明細書ではコンピュータゲームと総称する)をプレイできる好適なゲームシステム環境100の一実施例を示している。ゲームシステム環境100は、好適なコンピューティング環境の一例にすぎず、本明細書で説明されている特徴の用途または機能性の範囲に関する制限を示唆する意図はない。ゲームシステム環境100は、例示的な動作しているゲームシステム環境100に示されている1つのコンポーネントまたはその組合せに関係する何らかの依存関係または要件を有するものと解釈すべきでない。
【0018】
本明細書で説明されている態様は、他の数多くの汎用または専用コンピューティングシステム環境または構成で動作する。使用するのに適していると思われるよく知られているコンピューティングシステム、環境、および/または構成の例として、限定はしないが、パーソナルコンピュータ(PC)、サーバコンピュータ、またはパーソナルデジタルアシスタント(PDA)、タブレットPC、またはラップトップPCなどのポータブルまたはハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能な家電製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、ゲーム機、上記システムまたはデバイスを含む分散コンピューティング環境などがある。
【0019】
本明細書の態様は、コンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能命令の一般的文脈において説明することができる。一般に、プログラムモジュールは、特定のタスクを実行する、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。また、本明細書で説明されている特徴は、通信ネットワークを通じてリンクされているリモート処理デバイスによりタスクが実行される分散コンピューティング環境で実施することもできる。分散コンピューティング環境では、プログラムモジュールをメモリ記憶デバイスなどのローカルとリモートの両方のコンピュータ記憶媒体に配置できる。
【0020】
図1は、例示的なゲームシステム100を示している。ゲームシステム100は、ゲーム機102および、コントローラ104(1)および104(2)で表されるような1つまたは複数のハンドヘルドコントローラを備えることができる。ゲーム機102は、内蔵または外付けハードディスクドライブと、光学式記憶ディスク108で表されるようなさまざまな形態の携帯型記憶媒体をサポートする携帯型(portable)メディアドライブ106とを装備することができる。好適な携帯型記憶媒体の例としては、DVD、CD−ROM、ゲームディスクなどがある。
【0021】
ゲーム機102は、最大4台までのコントローラをサポートする多数のスロット110を前面に備えることができるが、スロットの数および配置は、修正可能である。電源ボタン112および取り出しボタン114も、ゲーム機102の前面に配置される。電源ボタン112は、ゲーム機の電源のスイッチであり、取り出しボタン114は、記憶ディスク108の挿入および抜き取りを行えるように携帯型メディアドライブ106のトレイの開閉を交互に繰り返す。いくつかの態様では、ゲーム機102は、家庭向け娯楽用の専用コンピューティングデバイスとすることができ、認証され、認可されたアプリケーションのみを実行する閉じた安全なシステムとすることができる。ゲーム機102は、ゲームプログラムを実行するように最適化することができ(例えば、物理学コプロセッサ、数学コプロセッサ、グラフィックスコプロセッサ、高解像度ビデオ出力、ハイファイオーディオ出力などのゲームアプリケーションをサポートするように処理能力を高める)、また英字キーボード、内部ハードウェア拡張スロット、プリンタ通信ポートなどのパーソナルコンピューティングデバイスに通常備えられているいくつかの機能を省くことができる。
【0022】
ゲーム機102は、A/Vインターフェイスケーブル120を介してテレビまたは他のディスプレイ(図示せず)に接続することができる。電源ケーブル122で、ゲーム機に電力を供給する。ゲーム機102は、さらに、インターネットなどのネットワークへのアクセスをしやすくするために、ケーブルまたはモデムコネクタ124により表されるような、ブロードバンドネットワーク機能を備えるように構成することができる。コネクタ124は、さらに、1つまたは複数の無線ネットワークに接続するための無線アダプタも取り付けることができる。
【0023】
それぞれのコントローラ104は、有線または無線インターフェイスを介してゲーム機102に結合することができる。例示されている実装では、コントローラはUSB(ユニバーサルシリアルバス)互換であり、USBケーブル130を介してゲーム機102に接続される。コントローラ102は、さまざまなユーザインタラクションメカニズムのうちの任意のものを備えることができる。図1に例示されているように、それぞれのコントローラ104は、2つのサムスティック132(1)および132(2)、Dパッド134、ボタン136(例えば、「A」、「B」、「X」、「Y」)、および2つのトリガ138を備えることができる。サムスティック132は、アナログ方向制御ユニット(analog directional control unit)とすることができ、XおよびY座標における位置の程度を検出するアナログ電位差計(potentiometer)を備えることができる。Dパッド134は、方向指示パッドとすることができ、上、下、左、および右、またはそれらの方向の組合せ(例えば、左上)などの方向コマンドを指示するための入力を備える。Dパッド134は、さらに、アナログでもよく、特定の方向に押すために使用される圧力の程度に関する入力を形成することができる。これらのメカニズムは、単に代表するものであり、他の知られているゲームメカニズムを図1に示されているメカニズムの代わりに、またはそれに加えて使用することができる。
【0024】
メモリユニット(MU)140をコントローラ104内に挿入して、追加および携帯型の記憶装置とすることができる。携帯型メモリユニットを使用することで、ユーザは、ゲームパラメータおよびユーザアカウントを格納し、他のゲーム機でプレイする場合にそれらのゲームパラメータおよびユーザアカウントを移植(port)することができる。説明されている実装では、それぞれのコントローラは、2つのメモリユニット140を受け入れるように構成されているが、他の実装では2台よりも多い、または少ないユニットを使用することができる。ヘッドセット142をコントローラ104またはゲーム機102に接続して、音声通信機能を持たせることができる。ヘッドセット142は、オーディオ入力用のマイクとオーディオ出力用の1つまたは複数のスピーカーを備えることができる。
【0025】
ゲームシステム100は、例えば、ゲームをプレイし、音楽、ビデオを再生することができる。異なる記憶装置を使用することで、ハードディスクドライブまたはドライブ106内の携帯型媒体108から、オンラインソースから、またはメモリユニット140からタイトルを再生することができる。セキュリティのため、いくつかの実施形態では、実行可能コードは、携帯型媒体108からしか実行できない。ゲームシステム100でプレイできる内容の例は、CDおよびDVDディスクから、ハードディスクドライブから、またはオンラインソースからプレイされるゲームタイトル、携帯型メディアドライブ106内のCDから、ハードディスクドライブ上のファイル(例えば、「WINDOWS(登録商標)」Media Audio(WMA)フォーマット)から、またはオンラインストリーミングソースから再生されるデジタル音楽、および携帯型メディアドライブ106内のDVDディスクから、ハードディスクドライブ上のファイル(例えば、Active Streaming Format)から、またはオンラインストリーミングソースから再生されるデジタルオーディオ/ビデオを含む。
【0026】
図2は、ゲームシステム100の機能コンポーネントをさらに詳しく示している。ゲーム機102は、中央演算処理装置(CPU)200、および、フラッシュROM(読み取り専用メモリ)204、RAM(ランダムアクセスメモリ)206、ハードディスクドライブ208、および携帯型メディアドライブ106を含む、さまざまなタイプのメモリにプロセッサがアクセスするのを手助けするメモリコントローラ202を備える。CPU 200は、データを一時的に格納して、これによりメモリアクセスサイクル数を減らし、処理速度とスループットを改善するためのレベル1キャッシュ210およびレベル2キャッシュ212を装備している。
【0027】
CPU 200、メモリコントローラ202、およびさまざまなメモリデバイスは、さまざまなバスアーキテクチャを使用する、シリアルおよびパラレルバス、メモリ用バス、周辺機器用バス、およびプロセッサまたはローカルバスを含む、1つまたは複数のバスを介して相互接続される。例えば、このようなアーキテクチャとしては、Industry Standard Architecture(ISA)バス、Micro Channel Architecture(MCA)バス、Enhanced ISA(EISA)バス、Video Electronics Standards Association(VESA)ローカルバス、およびMezzanineバスとも呼ばれるPeripheral Component Interconnect(PCI)バスがある。
【0028】
好適な一実装として、CPU 200、メモリコントローラ202、ROM 204、RAM 206は、共通モジュール214上に一体化される。この実装では、ROM 204は、メモリコントローラ202およびROMバス(図示せず)に接続されるフラッシュROMとして構成される。RAM 206は、別々のバス(図示せず)を介してメモリコントローラ202により独立に制御される複数のDDR SDRAM(ダブルデータレート方式同期ダイナミックRAM)として構成される。ハードディスクドライブ208および携帯型メディアドライブ106は、PCIバスおよびATA(AT Attachment)バス216を介してメモリコントローラに接続される。
【0029】
3Dグラフィックス処理ユニット220およびビデオエンコーダ222は、高速および高解像度グラフィックス処理を行うためのビデオ処理パイプラインを形成する。デジタルビデオバス(図示せず)を介して、グラフィックス処理ユニット220からデータがビデオエンコーダ222に搬送される。オーディオ処理ユニット224およびオーディオコーデック(コーダ/デコーダ)226は、ハイファイおよびステレオ処理機能を有する対応するオーディオ処理パイプラインを形成する。通信リンク(図示せず)を介して、データがオーディオ処理ユニット224とオーディオコーデック226との間でやり取りされる。ビデオおよびオーディオ処理パイプラインは、データをA/V(オーディオ/ビデオ)ポート228に出力し、テレビまたはその他のディスプレイに伝送する。例示されている実装では、ビデオおよびオーディオ処理コンポーネント220〜228は、モジュール214上に装着される。
【0030】
さらにモジュール214上に実装されるのは、USBホストコントローラ230およびネットワークインターフェイス232である。USBホストコントローラ230は、バス(例えば、PCIバス)を介してCPU 200およびメモリコントローラ202に結合され、周辺機器コントローラ104(1)〜104(4)のホストとして使用される。ネットワークインターフェイス232は、ネットワーク(例えば、インターネット、ホームネットワークなど)へのアクセスを提供し、イーサネット(登録商標)カード、モデム、Bluetoothモジュール、ケーブルモデルなどを含む広範なさまざまな有線または無線インターフェイスコンポーネントとすることができる。
【0031】
ゲーム機102は、2つのデュアルコントローラサポートサブアセンブリ240(1)および240(2)を有し、それぞれのアセンブリが2つのゲームコントローラ104(1)〜104(4)をサポートする。フロントパネルI/Oサブアセンブリ242は、電源ボタン112および取り出しボタン114、さらにはゲーム機の外面上に露出しているLED(発光ダイオード)またはその他のインジケータの機能をサポートする。サブアセンブリ240(1)、240(2)、および242は、1つまたは複数のケーブルアセンブリ244を介してモジュール214に結合される。いくつかの実施形態では、ゲーム機102は、さらに、キーボード254が接続される、キーボード入力アセンブリ240(3)を備えることもできる。キーボード254およびそのサブアセンブリは、試験目的のためにキーボードを使用してテキストコマンドおよびデータを入力することができるよう、ゲーム機102の開発キットバージョンの一部として提供されうる。いくつかの実施形態では、キーボード254は、コントローラポート(例えば、サブアセンブリ240内の)と直接通信することができ、別個のキーボード入力アセンブリを使用する必要はない。さらに、ゲーム機のリソースを節約するために、キーボードドライバおよびサブアセンブリをゲーム機から省き、代わりに、ゲーム機をUSBケーブルで第2のコンピューティングデバイス(例えば、別のPC、またはデバッグ用ワークステーション)に結合して、第2のコンピューティングデバイスがコマンドシーケンスをゲーム機に送信できるようにし、キーボードを介して入力されたテキストコマンドシーケンスを解釈するために別個のソフトウェアおよび/またはハードウェアをゲーム機で必要とする状況を軽減することができる。
【0032】
8つのメモリユニット140(1)から140(8)は、4つのコントローラ104(1)〜104(4)に接続可能であるものとして例示されている、つまり、それぞれのコントローラに対し2つのメモリユニットを接続できるように示されている。それぞれのメモリユニット140は、ゲーム、ゲームパラメータ、および他のデータを格納することができる追加の記憶装置を提供する。コントローラ内に挿入されると、メモリユニット140は、メモリコントローラ202によりアクセスできる。
【0033】
システム電源モジュール250は、ゲームシステム100のコンポーネントに電力を供給する。ファン252は、ゲーム機102内の回路を冷却する。
【0034】
ゲーム機102は、ユーザがさまざまなエンターテインメント領域内を移動できるようにする一貫性のあるユーザインターフェイスおよびナビゲーション階層を備える統一メディアポータルモデル(uniform media portal model)を実装する。ポータルモデルは、携帯型メディアドライブ106に挿入されるメディアタイプに関係なく複数の異なるメディアタイプ(ゲームデータ、オーディオデータ、およびビデオデータ)からコンテンツをアクセスする便利な手段を提供する。
【0035】
統一メディアポータルモデルを実装するために、ゲーム機のユーザインターフェイス(UI)アプリケーション260が、ハードディスクドライブ208上に格納される。ゲーム機の電源がオンにされると、ゲーム機アプリケーション260のさまざまな部分が、RAM 206および/またはキャッシュ210、212にロードされ、CPU 200上で実行される。ゲーム機アプリケーション260は、ゲーム機上で利用可能なさまざまなメディアタイプにナビゲートするときに一貫性のあるユーザエクスペリエンスを与えるグラフィカルユーザインターフェイスを提示する。
【0036】
ゲームシステム100は、システムをテレビまたは他のディスプレイに単に接続するだけでスタンドアロンシステムとして動作することができる。このスタンドアロンモードでは、ゲームシステム100を使って、1人または複数のプレイヤーがゲームをプレイしたり、動画を鑑賞したり、音楽を聴いたりすることができる。しかし、ネットワークインターフェイス232を通じてブロードバンド接続の統合が利用できるので、ゲームシステム100は、さらに、より大きなネットワークゲームコミュニティにおける一参加者として動作することも可能である。このネットワークゲーム環境について、次に説明する。
【0037】
図3は、ネットワーク302を介して複数のゲームシステム100(1)、・・・、100(g)を相互接続する例示的なネットワークゲーム環境300を示している。ネットワーク302は、さまざまなデータ通信ネットワークを代表するものである。これは、公共部分(例えば、インターネット)だけでなくプライベート部分(例えば、住宅地域のローカルエリアネットワーク(LAN))、さらには公共部分とプライベート部分の組合せを含むことができる。ネットワーク302は、有線媒体と無線媒体の両方を含むさまざまな従来の通信媒体のうちの1つまたは複数を使用して実装されうる。ネットワーク302を介してデータを通信するために、公共プロトコルと専用プロトコルの両方を含む、さまざまな通信プロトコルを使用することができる。このようなプロトコルのいくつかの例として、TCP/IP、IPX/SPX、NetBEUIなどがある。
【0038】
ゲームシステム100に加えて、ネットワーク302を介して1つまたは複数のオンラインサービス304(1)、・・・、304(s)にアクセスすることが可能であり、これにより、オンラインゲームのホストとなること、ダウンロード可能な音楽またはビデオファイルを提供すること、ゲーム試合をホストすること、ストリーミングオーディオ/ビデオファイルを提供することなどの様々なサービスを参加者に提供することができる。ネットワークゲーム環境300は、さらに、オンラインサービス304とともに、個々のプレイヤーおよび/またはゲームシステム100を互いに認証させる役割を果たす鍵配布センター306を伴うことができる。配布センター306は、鍵とサービスチケットを有効な参加者に配布し、次いで、これを使用して、複数のプレイヤー間でゲームを形成したり、オンラインサービス304からサービスを購入したりすることができる。
【0039】
ネットワークゲーム環境300は、個別のゲームシステム100から利用できる他のメモリソース−オンラインストレージ−を導入する。携帯型記憶媒体108、ハードディスクドライブ208、および(複数の)メモリユニット140に加えて、ゲームシステム100(1)は、さらに、(複数の)オンラインサービス304のリモートストレージ308により例示されているように、ネットワーク302を介してリモートストレージロケーションにおいて利用できるデータファイルにアクセスすることができる。
【0040】
図4は、他の例示的なオンラインゲーム環境400、例えば、ワシントン州レドモンド所在の本件特許出願人による「XBOX(商標) LIVE(商標)」のブロック図である。複数のゲーム機402(1)、402(2)、・・・、402(n)が、ネットワーク406を介してセキュリティゲートウェイ404に結合される。それぞれのゲーム機402は、例えば、図1または図2のゲーム機102とすることができる。ネットワーク406は、さまざまな従来のデータ通信ネットワークのうちの1つまたは複数を表す。ネットワーク406は、典型的には、パケット交換ネットワークを含むが、回路交換ネットワークも含むことができる。ネットワーク406は、有線および/または無線部分を含むことができる。例示的な一実装では、ネットワーク406は、インターネットを含み、適宜、1つまたは複数のローカルエリアネットワーク(LAN)および/またはワイドエリアネットワーク(WAN)を含むことができる。ネットワーク406の少なくとも一部は、公衆ネットワークであり、これは公的にアクセス可能なネットワークを意味する。公衆ネットワークには、実質的に誰でもアクセスできる。
【0041】
いくつかの状況において、ネットワーク406は、LAN(例えば、ホームネットワーク)を含み、ルーティングデバイスが、ゲーム機402とセキュリティゲートウェイ404との間に配置される。このルーティングデバイスは、ネットワークアドレス変換(NAT)を実行することができ、これにより、LAN上の複数のデバイスが、インターネット上で同じIPアドレスを共有することができ、またインターネットを介して悪意ある、または悪さをするユーザによるアクセスからLAN上の(複数の)デバイスを保護するファイヤウォールとして動作することができる。
【0042】
セキュリティゲートウェイ404は、公衆ネットワーク406とプライベートネットワーク408との間のゲートウェイとして動作する。プライベートネットワーク408は、ローカルエリアネットワークなどのさまざまな従来のネットワークのうちのいずれかとすることができる。プライベートネットワーク408は、以下でさらに詳しく説明される他のデバイスとともに、セキュアゾーンとして動作するデータセンター110内にある。データセンター410は、信頼できる通信を介して通信する信頼できるデバイスで構成される。したがって、セキュアゾーン410内では暗号化および認証は不要である。ネットワーク408のプライベートであるという性質は、ネットワーク408のアクセス性が制限されることを意味する。ネットワーク408へのアクセスは、特定の個人のみに制限される(例えば、データセンター410の所有者またはオペレータにより制限される)。
【0043】
セキュリティゲートウェイ404は、1つまたは複数のセキュリティゲートウェイコンピューティングデバイスのクラスタである。これらのセキュリティゲートウェイコンピューティングデバイスがまとまって、セキュリティゲートウェイ404を実装する。セキュリティゲートウェイ404は、適宜、セキュリティゲートウェイコンピューティングデバイスにより処理される要求をこれらのコンピューティングデバイスのうちのいくつかのコンピューティングデバイスに導くように動作する1つまたは複数の従来の負荷分散デバイスを備えることができる。このような導く動作または負荷分散は、さまざまなセキュリティゲートウェイコンピューティングデバイス上の負荷をほぼ等しくなるように(またはそれとは別に他の何らかの基準に従って)分散させることを試みるようにして実行される。
【0044】
また、データセンター410内には、1つまたは複数の監視サーバ412と、1つまたは複数のプレゼンスおよび通知フロントドア414、1つまたは複数のプレゼンスサーバ416、1つまたは複数の通知サーバ418、およびプロファイルストア428(まとめてプレゼンスおよび通知サービスもしくはシステム430を実装する)と、1つまたは複数のマッチ(match)フロントドア420および1つまたは複数のマッチサーバ422(まとめてマッチサービスを実装する)と、1つまたは複数の統計量(statistics)フロントドア424および1つまたは複数の統計量サーバ426(まとめて統計量サービスを実装する)とがある。サーバ416、418、422、および426は、サービスをゲーム機402に提供するが、そのため、サービスデバイスと呼ぶことができる。他のサービスデバイスは、さらに、サーバ416、418、422、および426のうちの1つまたは複数に加えて、および/またはその代わりに備えることができる。それに加えて、図4には1つのデータセンターしか示されていないが、代わりに、ゲーム機402と通信することができる複数のデータセンターが存在しうる。これらのデータセンターは、独立して動作するか、またはそれとは別に、まとめて動作することができる(例えば、ゲーム機102、402に、1つの大きなデータセンターを利用できるようにするために)。
【0045】
ゲーム機402は、データセンター410から離れた場所に配置され、ネットワーク406を介してデータセンター410にアクセスする。データセンター内の1つまたは複数のデバイスと通信することを望んでいるゲーム機402は、データセンターにログインし、ゲーム機402とセキュリティゲートウェイ404との間の安全な通信チャネルを確立する。ゲーム機402およびセキュリティゲートウェイ404は、やり取りされるデータパケットの暗号化および認証を実行し、これにより、暗号化を破ることなくデータパケットを捕捉し、またはコピーすることができる他のデバイスにより知られることなく、それらの間でデータパケットを安全に伝送することができる。ゲーム機402からセキュリティゲートウェイ404に、またはセキュリティゲートウェイ404からゲーム機402に伝達されるそれぞれのデータパケットは、中にデータを埋め込むことができる。この埋め込まれたデータは、パケットのコンテンツまたはデータコンテンツと呼ばれる。追加の情報も、本質的に、パケットタイプ(例えば、ハートビートパケット)に基づきパケット内に入れることができる。
【0046】
ゲーム機402とセキュリティゲートウェイ404との間の安全な通信チャネルは、セキュリティチケットに基づく。ゲーム機402は、自分自身およびゲーム機402の(複数の)現在のユーザを鍵配布センター429に対し認証し、鍵配布センター429からセキュリティチケットを取得する。次いで、ゲーム機402は、このセキュリティチケットを使用して、セキュリティゲートウェイ404との安全な通信チャネルを確立する。セキュリティゲートウェイ404との安全な通信チャネルを確立する際に、ゲーム機402およびセキュリティゲートウェイ404は、互いに認証し合い、その特定のゲーム機402およびセキュリティゲートウェイ404にのみ知られているセッションセキュリティ鍵を確定する。このセッションセキュリティ鍵は、ゲーム機402とセキュリティゲートウェイクラスタ404との間で移動されるデータを暗号化するために使用され、したがって他のデバイス(他のゲーム機402を含む)はいっさい、データを読み取ることはできない。セッションセキュリティ鍵は、さらに、データパケットの送信元であると主張されるセキュリティゲートウェイ404またはゲーム機402からのものであるとデータパケットを認証するために使用される。したがって、このようなセッションセキュリティ鍵を使用することで、セキュリティゲートウェイ404とさまざまなゲーム機402との間で安全な通信チャネルを確立できる。
【0047】
安全な通信チャネルが、ゲーム機402とセキュリティゲートウェイ404との間に確立されると、暗号化されたデータパケットを両者の間で安全に送信することができる。ゲーム機402が、データセンター410内の特定のサービスデバイスにデータを送信することを望んでいる場合、ゲーム機402は、データを暗号化し、データパケットの送り先となっている特定の(複数の)サービスデバイスに転送するよう要求するセキュリティゲートウェイ404に送信する。セキュリティゲートウェイ404は、データパケットを受信し、そのデータパケットを認証し、暗号解読した後、パケットのデータコンテンツを、プライベートネットワーク408を介して適切なサービスに送信されるべき他のメッセージにカプセル化する。セキュリティゲートウェイ404は、データパケットの送り先の(複数の)要求されたサービスに基づきそのメッセージに適したサービスを決定する。
【0048】
同様に、データセンター410内のサービスデバイスが、データをゲーム機402に伝達することを望んでいる場合、データセンターは、プライベートネットワーク408を介して、ゲーム機402に送信されるデータコンテンツさらにはデータコンテンツの送信先となる特定のゲーム機402の指示を含むメッセージをセキュリティゲートウェイ404に送信する。セキュリティゲートウェイ404は、データコンテンツをデータパケット内に埋め込み、次いで、特定のゲーム機402だけが暗号解読できるようにデータパケットを暗号化し、さらにそのデータパケットをセキュリティゲートウェイ404からのものであると認証する。
【0049】
本明細書では主にセキュリティゲートウェイ404とゲーム機402との間で暗号化されたデータパケットを伝達するものとして説明されているが、それとは別に、いくつかのデータパケットは、部分的に暗号化することもできる(データパケットの一部が暗号化され、他の部分は暗号化されない)。データパケットのどの部分が暗号化され、どの部分が暗号化されないかは、データセンター410および/またはゲーム機402のデザイナーが何を望んでいるかに応じて異なる。例えば、デザイナーは、ゲーム機402のユーザが互いに通話できるようにゲーム機402の間で音声データをやり取りすることを認めることを選択することができ、またデザイナーは、さらに、音声データは暗号化せず、パケット内の他のデータは暗号化されるように選択することができる。それに加えて、他の代替手段では、いくつかのデータパケットは、暗号化された部分を持たないようにもできる(つまり、データパケット全体が暗号化されない)。データパケットが暗号化されないか、または部分的にしか暗号化されない場合でも、データパケットのすべてを認証することができることに留意されたい。
【0050】
セキュリティゲートウェイ404内の各セキュリティゲートウェイデバイスは、典型的には1つまたは複数のゲーム機402との安全な通信チャネルを確保することに責任があり、したがって、それぞれのセキュリティゲートウェイデバイスは、1つまたは複数のゲーム機を管理または処理する責任を有するものとしてみなすことができる。さまざまなセキュリティゲートウェイデバイスが、互いに通信状態にあり、互いにメッセージをやり取りすることができる。例えば、セキュリティゲートウェイデバイスが、このデバイスが管理する責任を負っていないゲーム機にデータパケットを送信する必要がある場合に、このデバイスは、そのゲーム機に送信すべきデータとともにメッセージを他のすべてのセキュリティゲートウェイデバイスに送信することができる。このメッセージは、そのゲーム機を管理する責任があり、適切なデータをそのゲーム機に送信するセキュリティゲートウェイデバイスにより受信される。それとは別に、セキュリティゲートウェイデバイスは、どのセキュリティゲートウェイデバイスによりどのゲーム機が処理されているかを認識する場合がある。このことは、各セキュリティゲートウェイデバイスが他のセキュリティゲートウェイデバイスにより処理されるゲーム機のテーブルを保持するなどのように明示的でもよく、またはそれとは別に、ゲーム機の識別子に基づき特定のゲーム機に対しどのセキュリティゲートウェイデバイスが責任を負っているかを決定することなどのように暗示的でもよい。
【0051】
(複数の)監視サーバ412は、利用不可能なゲーム機402またはセキュリティゲートウェイ404の利用不可能なセキュリティゲートウェイデバイスをデータセンター410内のデバイスに通知するように動作する。ゲーム機402は、ハードウェアまたはソフトウェアの障害、ゲーム機がデータセンター410からログアウトせずに電源をオフにした場合、ゲーム機402のネットワーク接続ケーブルがゲーム機402から外れた場合、他のネットワーク問題(例えば、ゲーム機402が接続しているLANの不具合)など、さまざまな異なる理由から利用不可能になることがある。同様に、セキュリティゲートウェイ404のセキュリティゲートウェイデバイスは、ハードウェアまたはソフトウェアの障害、デバイスが電源オフにされた場合、デバイスへのネットワーク接続ケーブルがデバイスから外れている場合、他のネットワーク問題など、さまざまな異なる理由から利用不可能になることがある。
【0052】
セキュリティゲートウェイ404内のセキュリティゲートウェイデバイスはそれぞれ、セキュリティゲートウェイデバイスの1つがいつ利用不可能になったかを検出する、1つまたは複数の監視サーバ412により監視される。セキュリティゲートウェイデバイスが利用不可能になった場合、監視サーバ412は、そのセキュリティゲートウェイデバイスが利用不可能になったことを知らせるメッセージをデータセンター410内の他のデバイス(サーバ、フロントドアなど)のそれぞれに送信する。他のデバイスはそれぞれ、適当であると思われるこの情報に基づき動作することができる(例えば、セキュリティゲートウェイデバイスにより管理されている特定のゲーム機が、もはや、データセンター410と通信しておらず、それに応じてさまざまクリーンアップ動作を実行すると仮定することができる)。それとは別に、特定のデバイスのみが、監視サーバ412からそのようなメッセージを受信することができる(例えば、セキュリティゲートウェイデバイスが利用可能かどうかに関心のあるデバイスのみ)。
【0053】
セキュリティゲートウェイ404は、個々のゲーム機402を監視し、ゲーム機402のうちの1つがいつ利用不可能になったかを検出する。セキュリティゲートウェイ404が、利用できなくなったゲーム機を検出した場合、セキュリティゲートウェイ404は、その利用不可能になったゲーム機を識別するメッセージを監視サーバ412に送信する。それに対する応答として、監視サーバ412は、そのゲーム機が利用できなくなったことを知らせるメッセージをデータセンター410内の他のデバイス(またはそれとは別に、選択されたデバイスのみ)のそれぞれに送信する。次いで、他のデバイスはそれぞれ、適当と思われるこの情報に基づき動作することができる。
【0054】
(複数の)プレゼンスサーバ416は、オンラインゲームを行うためデータセンター410にログインした所定のユーザのステータスまたはプレゼンスに関するデータを保持し、処理する。(複数の)通知サーバ418は、データセンター410にログインしたプレイヤーを宛先とする送信メッセージの複数の通知キューを保持する。プレゼンスおよび通知フロントドア414は、セキュリティゲートウェイ404とサーバ416および418との間の媒介手段として動作する1つまたは複数のサーバデバイスである。1つまたは複数の負荷分散デバイス(図示せず)を、プレゼンスおよび通知フロントドア414に入れて、フロントドア414として動作する複数のサーバデバイス間に負荷を分散させることができる。セキュリティゲートウェイ404は、サーバ416および418に対するメッセージをフロントドア414に伝達し、フロントドア414は、メッセージをどの特定のサーバ416または特定のサーバ418に伝達すべきかを識別する。フロントドア414を使用することにより、どのサーバがどのユーザに関するデータを管理する責任を有しているかなどのサーバ416および418の実際の実装が、セキュリティゲートウェイ404から抽出される。セキュリティゲートウェイ404は、単純に、プレゼンスおよび通知サービスを宛先とするメッセージをプレゼンスおよび通知フロントドア414に転送し、(複数の)サーバ416および(複数の)サーバ418のうちの適切なサーバにメッセージの経路指定を行うのにフロントドア414に依存することができる。
【0055】
(複数の)マッチサーバ422は、オンラインプレイヤー同士の取り組みに関するデータを保持し、処理する。オンラインユーザは、ゲームのさまざまな特性とともにプレイに利用できるゲームを通知することができる(例えば、フットボールゲームがプレイされる場所、ゲームが昼間にプレイされるのか夜間にプレイされるのか、ユーザの技量レベルなど)。次いで、これらのさまざまな特性は、ゲームを一緒にプレイする異なるオンラインユーザをうまく取り組ませる基準として使用することができる。マッチフロントドア420は、1つまたは複数のサーバデバイス(および適宜、(複数の)負荷分散デバイス)を備え、フロントドア414が(複数の)サーバ416および(複数の)サーバ418を抽出するのと似た方法でセキュリティゲートウェイ404から(複数の)マッチサーバ422を抽出するように動作する。
【0056】
(複数の)統計量サーバ426は、オンラインゲームに対するさまざまな統計量に関するデータを保持し、処理する。使用される特定の統計量(statistics)は、ゲームデザイナーの望みに応じて異なりうる(例えば、上位10のスコアまたは回数、ゲームのすべてのオンラインプレイヤーの世界ランキング、大半のアイテムを見つけた、または最大の時間をプレイに費やしたユーザのリストなど)。統計量フロントドア426は、1つまたは複数のサーバデバイス(および適宜、(複数の)負荷分散デバイス)を備え、フロントドア414が(複数の)サーバ416および(複数の)サーバ418を抽出するのと似た方法でセキュリティゲートウェイ404から(複数の)統計量サーバ426を抽出するように動作する。
【0057】
オンラインサービスによりサポートされている個別ゲームタイトルまたはプログラムのそれぞれに対し、(複数の)タイトルサーバ432を備えることができる。それぞれのタイトルサーバ432は、サーバとして動作し、ゲーム機402と通信して、オンラインゲームセッションを実行するプログラムおよび/またはモジュールを実行することができる。サーバ432は、ゲーム開発者が望む程度に大きく、または小さく、ゲームのアクションをコントロールすることができる。例えば、いくつかのゲームは、どのプレイヤーキャラクターが最初に地図上の特定の地点に来ていたかを判定すること、またはさまざまなプレイヤーのキャラクターが出現する共通環境の表示を制御することなど、異なるゲーム機402における複数のプレイヤー間の相互作用に関係する計算および処理を実行するために中央集中型タイトルサーバ432に依存し、また、イメージおよび結果の実際のレンダリング、およびユーザ入力の初期処理などのより局部的側面のみを処理するために個別のゲーム機402に依存することがある。
【0058】
他方、ゲームは、処理に関してゲーム機402に依存する度合いが高い。所定のゲームに対する処理の責任は、ゲームセッションに接続されている複数のゲーム機402間に分散させることができる。または、ゲーム側で、セッションに接続されているゲーム機402の部分集合を選択し、そのゲーム機をそのセッションに対するサーバとして動作させることができる。そのような状況では、タイトルサーバ432は、単に、ゲーム機402同士の通信を調整するか、または初期スタートアップ機能(例えば、ゲームタイプ、スタートアップ許可など)を単純に実行し、次いで、結果を待つ場合がある。
【0059】
また、トーナメント機能を管理するために、トーナメントサーバ434も存在しうる。この機能は、以下で詳述されるが、一般的に、オンラインマルチプレイヤートーナメントの作成、管理、および/または終了に関係しうる。上述のさまざまなサーバは、別のマシン上に置かれる必要はなく、それらの一部または全部を組み合わせて共通のプロセスまたはマシンにすることもできる。
【0060】
したがって、セキュリティゲートウェイ404は、信頼されない公衆ネットワーク406からデータセンター410のセキュアゾーン内のデバイスを遮蔽するように動作することがわかる。データセンター410のセキュアゾーン内の通信は、暗号化する必要はなく、データセンター410内のデバイスはすべて信頼できる。しかし、データセンター410内のデバイスからゲーム機402に伝達すべき情報は、セキュリティゲートウェイクラスタ404を通過し、そこで、その情報は、情報の宛先となるゲーム機402のみが暗号解読できるように暗号化される。
【0061】
図4に例示されているように、タイトルサーバ432およびトーナメントサーバ434は、第2のセキュリティゲートウェイ405の背後に置くことができる。セキュリティゲートウェイ405は、セキュリティゲートウェイ404と同じであるか、またはそのサーバおよびデバイスにより必要とされない機能を省く簡素化されたものであってもよい。
【0062】
本明細書で説明されている1つまたは複数の特徴は、RAMメモリ206、不揮発性メモリ108、208、308、またはゲーム機102上の他の常駐メモリに格納されたコンピュータ実行可能命令(つまり、ソフトウェア)で具現化できる。一般に、ソフトウェアモジュールは、コンピュータまたは他のデバイス内のプロセッサにより実行されたときに、特定のタスクを実行する、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。コンピュータ実行可能命令は、1つまたは複数のハードディスク208、リムーバブル記憶媒体108(例えば、CD−ROM、DVD、ディスクなど)、ソリッドステートメモリ、RAM 206などのコンピュータ可読媒体(computer readable medium)上に格納することができる。当業者には周知のことであろうが、ソフトウェアモジュールの機能は、さまざまな実施形態において望ましい形で組み合わせるか、または分散させることができる。それに加えて、機能は、全体または一部を、ファームウェアまたは特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)などのファームウェアまたはハードウェア相当物で具現化できる。
【0063】
本明細書の態様は、ゲーム機コンピューティング環境に制限されない。実際、これらの態様は、パーソナルコンピュータ(PC)上で動作するビデオゲームで実装することもできる。図5Aは、本明細書で説明されている特徴を実装できる好適なコンピューティングシステム環境500の一実施例を示している。コンピューティングシステム環境500は、好適なコンピューティング環境の一例にすぎず、本明細書で説明されている特徴の用途または機能性の範囲に関する制限を示唆する意図はない。コンピューティング環境500は、典型的な動作環境500に例示されている1つのコンポーネントまたはその組合せに関係する何らかの依存関係または要求条件がその環境にあるものと解釈すべきでない。
【0064】
本明細書に記載されている特徴は、他の数多くの汎用または専用コンピューティングシステム環境または構成で動作する。使用に適していると思われるよく知られているコンピューティングシステム、環境、および/または構成の例として、限定はしないが、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能な家電製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、上記システムまたはデバイスを含む分散コンピューティング環境などがある。
【0065】
本明細書に記載されている特徴は、コンピュータによって実行される、プログラムモジュールなどのコンピュータ実行可能命令の一般的文脈において説明することができる。一般に、プログラムモジュールは、特定のタスクを実行する、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。また、これらの特徴は、通信ネットワークを通じてリンクされているリモート処理デバイスによりタスクが実行される分散コンピューティング環境で実施することもできる。分散コンピューティング環境では、プログラムモジュールをメモリ記憶デバイスなどのローカルとリモートの両方のコンピュータ記憶媒体に配置できる。
【0066】
図5Aを参照すると、本明細書で説明されている特徴を実装する例示的なシステムは、汎用コンピューティングデバイスをコンピュータ510の形で備えている。コンピュータ510が備えるコンポーネントとしては、限定はしないが、演算処理装置520、システムメモリ530、およびシステムメモリを備えるさまざまなシステムコンポーネントを演算処理装置520に結合するシステムバス521などがある。システムバス521は、メモリバスまたはメモリコントローラ、周辺機器バス、およびさまざまなバスアーキテクチャを使用するローカルバスを含む数種類のバス構造のうちのいずれでもよい。例えば、限定はしないが、このようなアーキテクチャとしては、Industry Standard Architecture(ISA)バス、Micro Channel Architecture(MCA)バス、Enhanced ISA(EISA)バス、Video Electronics Standards Association(VESA)ローカルバス、およびMezzanineバスとも呼ばれるPeripheral Component Interconnect(PCI)バスがある。
【0067】
コンピュータ510は、典型的には、さまざまなコンピュータ可読媒体を備える。コンピュータ可読媒体は、コンピュータ510によってアクセスされることができる媒体であればどのような媒体でも使用可能であり、揮発性および不揮発性媒体、リムーバブルおよびノンリムーバブル媒体を含む。例えば、限定はしないが、コンピュータ可読媒体(computer readable media)は、コンピュータ記憶媒体(computer storage media)および通信媒体(communication media)を含むことができる。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造体、プログラムモジュール、またはその他のデータなどの情報を格納する方法または技術で実装される揮発性および不揮発性、リムーバブルおよびノンリムーバブル媒体を含む。コンピュータ記憶媒体としては、限定はしないが、RAM、ROM、EEPROM、フラッシュメモリまたはその他のメモリ技術、CD−ROM、デジタル多目的ディスク(DVD)またはその他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置またはその他の磁気記憶デバイス(単数形または複数形で)、または所望の情報を格納するために使用することができ、しかもコンピュータ510によりアクセスできるその他の媒体がある。通信媒体は、通常、コンピュータ可読命令、データ構造体、プログラムモジュール、または搬送波もしくはその他のトランスポートメカニズムなどの変調データ信号によるその他のデータを具現するものであり、任意の情報配信媒体を含む。「変調データ信号」という用語は、信号内に情報を符号化するような方法で特性のうちの1つまたは複数が設定または変更された信号を意味する。例えば、限定はしないが、通信媒体としては、有線ネットワークまたは直接配線接続などの有線媒体、および、音響、RF、赤外線、およびその他の無線媒体などの無線媒体がある。上記のいずれの組合せもコンピュータ可読媒体の範囲に収まらなければならない。
【0068】
システムメモリ530は、読み取り専用メモリ(ROM)531およびランダムアクセスメモリ(RAM)532などの揮発性および/または不揮発性メモリの形態のコンピュータ記憶媒体を含む。起動時などにコンピュータ510内の要素間の情報伝送を助ける基本ルーチンを含む基本入出力システム533(BIOS)は、通常、ROM 531に格納される。通常、RAM 532は、演算処理装置520に直接アクセス可能な、および/または演算処理装置520によって現在操作されているデータおよび/またはプログラムモジュールを格納する。例えば、限定はしないが、図5Aは、オペレーティングシステム534、アプリケーションプログラム535、その他のプログラムモジュール536、およびプログラムデータ537を例示している。
【0069】
コンピュータ510はさらに、その他のリムーバブル/ノンリムーバブルな揮発性/不揮発性コンピュータ記憶媒体を備えることもできる。例にすぎないが、図5は、ノンリムーバブルな不揮発性磁気媒体の読み書きを行うハードディスクドライブ541、リムーバブルな不揮発性磁気ディスク552の読み書きを行う磁気ディスクドライブ551、およびCD−ROMまたはその他の光媒体などのリムーバブルな不揮発性光ディスク556の読み書きを行う光ディスクドライブ555を例示している。例示されているオペレーティング環境で使用できる他のリムーバブル/ノンリムーバブルな揮発性/不揮発性コンピュータ記憶媒体としては、限定はしないが、磁気テープカセット、フラッシュメモリカード、デジタル多目的ディスク、デジタルビデオテープ、ソリッドステートRAM、ソリッドステートROMなどがある。ハードディスクドライブ541は、典型的には、インターフェイス540などのノンリムーバブルメモリインターフェイスを介してシステムバス521に接続され、磁気ディスクドライブ551および光ディスクドライブ555は、典型的には、インターフェイス550などのリムーバブルメモリインターフェイスによりシステムバス521に接続される。
【0070】
図5Aに例示されている上記のドライブおよび関連コンピュータ記憶媒体は、コンピュータ510用のコンピュータ可読命令、データ構造体、プログラムモジュール、およびその他のデータを格納する機能を備える。例えば、図5では、ハードディスクドライブ541は、オペレーティングシステム544、アプリケーションプログラム545、その他のプログラムモジュール546、およびプログラムデータ547を格納するものとして例示されている。これらのコンポーネントは、オペレーティングシステム534、アプリケーションプログラム535、その他のプログラムモジュール536、およびプログラムデータ537と同じである場合もあれば異なる場合もあることに留意されたい。オペレーティングシステム544、アプリケーションプログラム545、その他のプログラムモジュール546、およびプログラムデータ547に対しては、ここで、異なる番号を割り当てて、最低でも、それらが異なるコピーであることを示している。ユーザは、キーボード562、およびマウス、トラックボール、またはタッチパッドと一般に呼ばれるポインティングデバイス561などの入力デバイスを介してコンピュータにコマンドおよび情報を入力できる。他の入力デバイス(図示せず)としては、マイク、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、スキャナなどがある。これらの入力デバイスやその他の入力デバイスは、システムバスに結合されているユーザ入力インターフェイス560を介して演算処理装置520に接続されることが多いが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス(USB)などの他のインターフェイスおよびバス構造により接続することもできる。モニタ591またはその他の種類の表示デバイスも、ビデオインターフェイス590などのインターフェイスを介してシステムバス521に接続される。モニタのほかに、コンピュータはさらにスピーカー597およびプリンタ596などの他の周辺出力デバイスも備えることができ、これらは出力周辺機器インターフェイス595を介して接続することができる。
【0071】
コンピュータ510は、リモートコンピュータ580などの1つまたは複数のリモートコンピュータへの論理接続を使用してネットワーク接続環境で動作することができる。リモートコンピュータ580は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイス、またはその他の共通ネットワークノードでもよく、典型的には、コンピュータ510に関係する上述の要素の多くまたはすべてを含むが、メモリ記憶デバイス581だけが図5に例示されている。図5に示されている論理接続は、ローカルエリアネットワーク(LAN)571およびワイドエリアネットワーク(WAN)573を含むが、他のネットワークを含むこともできる。このようなネットワーキング環境は、オフィス、企業全体にわたるコンピュータネットワーク、イントラネット、およびインターネットでは一般的である。
【0072】
LANネットワーキング環境で使用される場合、コンピュータ510は、ネットワークインターフェイスまたはアダプタ570を介してLAN 571に接続される。WANネットワーキング環境で使用される場合、コンピュータ510は、典型的には、インターネットなどのWAN 573上で通信を確立するためモデム572またはその他の手段を備える。モデム572は、内蔵でも外付けでもよいが、ユーザ入力インターフェイス560またはその他の適切なメカニズムを介してシステムバス521に接続されうる。ネットワーク接続環境では、コンピュータ510またはその一部に関して示されているプログラムモジュールは、リモートメモリ記憶装置デバイスに格納されうる。例えば、限定はしないが、図5はリモートアプリケーションプログラム585をメモリデバイス581に置かれているものとして例示している。図に示されているネットワーク接続は例示的であり、コンピュータ間の通信リンクを確立するのに他の手段が使用可能であることは理解されるであろう。
【0073】
プログラミングインターフェイス(またはより単純に、インターフェイス)は、1つまたは複数のコードセグメントが、1つまたは複数の他のコードセグメントにより提供される機能と通信するか、または機能にアクセスすることができるようにする何らかのメカニズム、プロセス、プロトコルとしてみなすことができる。それとは別に、プログラミングインターフェイスは、他の(複数の)コンポーネントの1つまたは複数のメカニズム、メソッド、関数呼び出し、モジュールに通信可能なように結合することができるシステムのコンポーネントの1つまたは複数のメカニズム、メソッド、関数呼び出し、モジュール、オブジェクトなどとみなすことができる。前の文中の「コードセグメント」という用語は、1つまたは複数の命令またはコード行を含むことが意図されており、適用される用語、またはコードセグメントが別々にコンパイルされるかどうか、またはコードセグメントがソースコード、中間コード、またはオブジェクトコードとして用意されるかどうか、またはコードセグメントがランタイムシステムまたはプロセス内で使用されるかどうか、または同じもしくは異なるマシン上に配置されるか、または複数のマシンにまたがって分散されるかどうか、またはコードセグメントにより表される機能が、全部ソフトウェアにより実装されるのか、全部ハードウェアにより実装されるのか、またはハードウェアとソフトウェアの組合せにより実装されるのかに関係なく、例えば、コードモジュール、オブジェクト、サブルーチン、関数などを含む。
【0074】
概念的には、プログラミングインターフェイスは、図5Bまたは図5Cに示されているように一般的に表示することができる。図5Bは、インターフェイス、インターフェイス1を第1および第2のコードセグメントが通信する際に通る導管として例示している。図5Cは、インターフェイスオブジェクトI1およびI2(第1および第2のコードセグメントの一部である場合も一部でない場合もある)を含むものとしてインターフェイスを例示しており、これにより、システムの第1および第2のコードセグメントは媒体Mを介して通信することができる。図5Cのビューでは、インターフェイスオブジェクトI1およびI2を同じシステムの別々のインターフェイスとしてみなすことができ、またオブジェクトI1およびI2、それに加えて媒体Mは、インターフェイスを含むものと考えることができる。図5Bおよび5Cは、双方向の流れ、およびその流れのそれぞれの側のインターフェイスを示しているが、いくつかの実装では、一方向の情報の流れのみがあり(または後述のように情報の流れがない)、または一方の側にインターフェイスオブジェクトのみがありうる。例えば、限定はしないが、アプリケーションプログラミングインターフェイス(API)、エントリポイント、メソッド、関数、サブルーチン、リモートプロシージャコール、およびコンポーネントオブジェクトモデル(COM)インターフェイスなどの用語は、プログラミングインターフェイスの定義に包含される。
【0075】
このようなプログラミングインターフェイスの態様は、第1のコードセグメントが情報(「情報」は、最も広い意味で使用されており、データ、コマンド、要求などを含む)を第2のコードセグメントに伝送する際の方法、および第2のコードセグメントが情報を受信する際の方法、ならびに情報の構造、シーケンス、構文、編成、スキーマ、タイミング、および内容を含むことができる。これに関して、基礎にあるトランスポート(transport)媒体自体は、媒体が有線であろうと無線であろうとその両方の組合せであろうと、情報がインターフェイスにより定義されている方法でトランスポートされる限りにおいて、インターフェイスの動作にとって重要ではないと考えられる。いくつかの状況では、情報は、従来の意味で一方向または両方向に渡すことはできないが、それは、情報転送が、他のメカニズムを介して(例えば、コードセグメント間の情報の流れから分離されたバッファ、ファイルなどに置かれた情報)転送されるか、または、1つのコードセグメントが単純に第2のコードセグメントにより実行される機能にアクセスするときのように存在しない場合があるからである。これらの態様のいずれかまたはすべて、例えば、コードセグメントが疎結合(loosely coupled)または密結合(tightly coupled)の構成のシステムの一部であるかどうかに応じて、与えられた状況において重要な場合があり、したがって、このリストは、例示的であり限定しないものとしてみなすべきである。
【0076】
プログラミングインターフェイスのこの概念は、当業者に知られており、本発明の前記の詳細な説明から明らかである。しかし、プログラミングインターフェイスを実装する方法はほかにもあり、特に断りのない限り、これらは本明細書に付随する請求項に含まれることが意図されている。このような他の方法は、図5Bおよび5Cの単純化したビューに比べて高度であるか、または複雑であるかのように見えるが、それにもかかわらず、類似の機能を実行して同じ全体的な結果が得られる。次に、プログラミングインターフェイスのいくつかの例示的な代替実装について説明することにする。
【0077】
A.因数分解
一方のコードセグメントから他方のコードセグメントへの通信は、その通信を複数の個別の通信に分けることにより間接的に実行できる。これは、図5Dおよび5Eに概略として示されている。図示されているように、いくつかのインターフェイスは、分割可能な機能群に関して説明することができる。したがって、図5Bおよび5Cのインターフェイス機能は因数分解され、ちょうど24が数学的に、2×2×3×2と因数分解されるのと同様の結果が得られる。したがって、図5Dに例示されているように、インターフェイス、インターフェイス1により与えられる機能を細分して、同じ結果が得られるようにしつつインターフェイスの通信を複数のインターフェイス、インターフェイス1A、インターフェイス1B、インターフェイス1Cに変換することができる。図5Eに例示されているように、インターフェイスI1により与えられる機能は、同じ結果を得られるようにしつつ、複数のインターフェイスI1a、I1b、I1cなどに細分することができる。同様に、第1のコードセグメントから情報を受け取る第2のコードセグメントのインターフェイスI2は、複数のインターフェイスI2a、I2b、I2cなどに因数分解することができる。因数分解の際に、第1のコードセグメントとともに含まれるインターフェイスの個数は、第2のコードセグメントとともに含まれるインターフェイスの個数と一致している必要はない。図5Dおよび5Eの場合のいずれかにおいて、インターフェイス、インターフェイス1およびI1の機能に関する精神は、図5Bおよび5Cとそれぞれ同じである。インターフェイスの因数分解は、さらに、結合法則、交換法則、および他の数学的法則に従っており、因数分解は理解しにくい場合がある。例えば、演算の順序は、重要ではなく、その結果、インターフェイスにより実行される関数は、そのインターフェイスに到達する充分前に、他のコードまたはインターフェイス断片により実行されるか、またはシステムの別のコンポーネントにより実行されることができる。さらに、プログラミング技術の当業者であれば、同じ結果が得られる異なる関数呼び出しを実行するさまざまな方法があることを理解できるであろう。
【0078】
B.再定義
場合によっては、意図した結果をそれでも得られるようにしつつ、プログラミングインターフェイスのいくつかの態様(例えば、パラメータ)を無視するか、追加するか、または再定義することが可能な場合がある。これは、図5Fおよび5Gに例示されている。例えば、図5Bのインターフェイス、インターフェイス1は、関数呼び出しSquare(input,precision,output)を含むが、この呼び出しは3つのパラメータinput、precision、およびoutputを含み、第1のコードセグメントから第2のコードセグメントに発行される。真ん中のパラメータprecisionが与えられたシナリオにおいて重要でない場合、図5Fに示されているように、無視するか、いっそのこと意味のない(この状況において)パラメータで置き換えるのがちょうどよいであろう。さらに、無関係の付加的パラメータを加えることもできる。いずれの場合も、第2のコードセグメントにより入力が平方された後、出力が返される限り、squareの機能を、実現することができる。精度は、コンピューティングシステムの何らかの下流または他の部分にとって意味のあるパラメータであることは確かであるが、平方を計算する狭い目的について必要でないことが分かった後、置き換えるか、または無視することができる。例えば、有効な精度値を渡す代わりに、誕生日などの意味のない値を渡しても、結果に悪影響を及ぼすことはない。同様に、図5Gに示されているように、インターフェイスI1は、インターフェイスI1’で置き換えられ、パラメータを無視するか、またはインターフェイスにパラメータを追加するように再定義される。インターフェイスI2も、同様に、不要なパラメータ、またはどこか他のところで処理することができるパラメータを無視するように、インターフェイスI2’として再定義することもできる。ここで重要なのは、場合によっては、プログラミングインターフェイスは、ある目的には必要のないパラメータなどの態様を含むことができ、したがって、他の目的のために、無視するか、または再定義するか、または別のところで処理することができる。
【0079】
C.インラインコーディング
2つの別々のコードモジュールの機能の一部または全部をマージして、それらの間の「インターフェイス」が形を変えるようにすることも可能である。例えば、図5Bおよび5Cの機能は、それぞれ、図5Hおよび5Iの機能に変換することができる。図5Hでは、先述した図5Bの第1のコードセグメントおよび第2のコードセグメントが、その両方を含む1つのモジュールにマージされる。この場合、コードセグメントは、それでも、互いに通信し合うことができるが、インターフェイスは、単一モジュールにより適している形態に適合させることができる。そのため、例えば、正式のCallおよびReturn文は、もはや必要ないが、インターフェイス、インターフェイス1による類似の処理または(複数の)応答は、そのまま効果がある場合がある。同様に、図5Iでは、図1CからのインターフェイスI2の一部(または全部)をインターフェイスI1にインラインで書き込み、インターフェイスI1”を形成することができる。例示されているように、インターフェイスI2は、I2aとI2bに分割され、インターフェイス部分I2aは、インターフェイスI1とともにインラインコーディングされており、インターフェイスI1”を形成する。具体例として、図5CからのインターフェイスI1は、第2のコードセグメントにより(平方するために)入力とともに渡される値を処理した後に、平方された結果を出力とともに返す、インターフェイスI2により受け取られる、関数呼び出しsquare(input,output)を実行することを考える。このような場合、第2のコードセグメントにより実行される処理(入力を平方する)は、インターフェイスを呼び出さずに第1のコードセグメントにより実行できる。
【0080】
D.分離
一方のコードセグメントから他方のコードセグメントへの通信は、その通信を複数の個別の通信に分けることにより間接的に実行できる。これは、図5Jおよび5Kに概略として示されている。図5Jに示されているように、ミドルウェアの1つまたは複数の断片(これらは機能および/またはインターフェイス機能を元のインターフェイスから分離するので、(複数の)分離インターフェイス)を用意し、第1のインターフェイス、インターフェイス1上の通信を変換し、それらが異なるインターフェイス、この場合、インターフェイス、インターフェイス2A、インターフェイス2B、およびインターフェイス2Cに適合するようにする。これは、例えば、インターフェイス1プロトコルによりオペレーティングシステムと通信するように設計されているアプリケーションのインストールベースがある場合に、実行することが可能であるが、その後、オペレーティングシステムは、異なるインターフェイス、この場合、インターフェイス、インターフェイス2A、インターフェイス2B、およびインターフェイス2Cを使用するように変更される。ポイントは、第2のコードセグメントにより使用される元のインターフェイスは、第1のコードセグメントにより使用されるインターフェイスともはや互換性を有しなくなるように変更され、そのため、中間段階を使用して、新旧のインターフェイスの互換性をとるということにある。同様に、図5Kに示されているように、第3のコードセグメントは、インターフェイスI1からの通信を受け取るために分離インターフェイスDI1と、例えば、DI2と連携するように再設計されたインターフェイスI2aおよびI2bにインターフェイス機能を伝送するが、機能的に同じ結果が得られる分離インターフェイスDI2とともに導入することができる。同様に、DI1およびDI2は連携し、機能的に同じまたは類似の結果を得られるようにしつつ、図5CのインターフェイスI1およびI2の機能を新しいオペレーティングシステムに移し替えることができる。
【0081】
E.書き換え
さらに他の可能な変更形態は、インターフェイス機能を何かほかの、ただし、同じ全体的結果が得られるもので置き換えるコードを動的に書き換えることである。例えば、中間言語(例えば、Microsoft IL、Java(登録商標) ByteCodeなど)で表されるコードセグメントを実行環境内でJust−in−Time(JIT)コンパイラまたはインタプリタに供給するシステムが考えられる(.Netフレームワーク、Java(登録商標)実行時環境、または他の類似の実行時タイプの環境により用意されるものなど)。JITコンパイラは、第1のコードセグメントから第2のコードセグメントに通信を動的に変換する、つまり第2のコードセグメント(元の、または異なる第2のコードセグメントのいずれか)による要求に従って異なるインターフェイスに適合させるように書くことができる。これは、図5Lおよび5Mに示されている。図5Lに示されているように、このアプローチは、上述の分離シナリオに類似している。これは、例えば、アプリケーションのインストールベースがインターフェイス1プロトコルによりオペレーティングシステムと通信するように設計されているが、オペレーティングシステムは、異なるインターフェイスを使用するように変更されている場合に実行することが可能である。JITコンパイラは、インストールベースのアプリケーションからオペレーティングシステムの新しいインターフェイスにオンザフライで通信を適合させるために使用することが可能である。図5Mに示されているように、(複数の)インターフェイスを動的に書き換えるこのアプローチは、さらに、(複数の)インターフェイスを動的に因数分解するか、または他の何らかの方法で変更するために適用することができる。
【0082】
他の実施形態を介したインターフェイスと同じまたは類似の結果を得られる上述のシナリオは、さまざまな方法で、直列に、および/または並行して、または他の介入コードとともに組み合わせることもできることに留意されたい。そのため、上に示されている他の実施形態は、相互排他的ではなく、図5Bおよび5Cに示されている汎用のシナリオと同じまたは同等のシナリオを生成するように混合し、一致させ、組み合わせることができる。また、ほとんどのプログラミング構文と同様に、本明細書で説明していないかもしれないインターフェイスの同じまたは類似の機能を実現する他の類似の方法があるが、それにもかかわらず、本発明の精神および範囲により代表されることに留意されたい、つまり、インターフェイスの価値の根底にあるのは、少なくとも一部はインターフェイスによって表される機能および利用できる有利な結果であることに注意されたい。前述のシステムは、本明細書で説明されているデバッグ方法またはシステムを実装するために使用できる。さまざまな機能が、特定のデバッグイベントが発生したときにメモリの一部をダンプし、ダンプされたメモリ内容を自動的にサーバに送信することにより、デバッグフィードバック情報をサーバに送る自動化を実現する。
【0083】
図6は、オンラインマルチプレイヤーゲーム環境内でトーナメントを実施するための例示的な総合的プロセスを示している。ステップ601で、トーナメント管理者は、オンライントーナメントの作成を開始するために、トーナメントサーバ434などのセキュアサーバにログインするステップを実行することができる。管理者は、ゲーム開発者であるか、プレイヤーであるか、または新しいトーナメントタイプをシステムに作成する権利を有する誰かであってよい。ログインプロセスは、パスワードとコンピュータ端末510を使用して安全なインターネットサイトにアクセスするか、またはゲーム機402からビデオゲームユーザインターフェイスを使用してオンラインロケーションにアクセスするなどの所望のアクセスモードを伴うことがある。ステップ602で、トーナメント管理者は、作成されるトーナメントに対するさまざまなパラメータを定義することができる。このエントリは、インターネットページまたはビデオゲームユーザインターフェイスなどの表示されるインターフェイスを使用して実行することができ、そのときに、管理者は、定義されるトーナメントに対するさまざまなパラメータを入力(またはリストから選択)するよう要求される場合がある。例示的なパラメータについて以下で説明する。
【0084】
トーナメントパラメータが定義されると、プロセスは、次いで、ステップ603に進み、そこで、システム(例えば、タスクに対しどのサーバが指定されているかに応じてトーナメントサーバ434、またはタイトルサーバ432)はトーナメントのインスタンス化を行うトリガの発生を待つ。トリガは、所定の時間の長さの経過(例えば、1時間、30分など)、または所定の人数のプレイヤーによる登録(例えば、10、50、100人のプレイヤーなど)などの任意のタイプの所定のイベントとすることができる。
【0085】
トリガが受信されるか、または発生したときに、プロセスは、ステップ604でトーナメントのインスタンス化に進むことができる。インスタンス化は、パラメータで指定されているようなトーナメントを実行する1つまたは複数の処理スレッドの実行を伴うことができる。これらのスレッドは、トーナメントサーバ434、タイトルサーバ432、個別のゲーム機402、またはシステム内の他の任意のコンピューティングコンポーネントにより実行することができ、またこれらのスレッドは、必要ならば、複数のコンポーネントに(例えば、複数のゲーム機402に)分散されることができる。トーナメントの1つのインスタンスに、トーナメントインスタンスに参加するクライアントとの通信を調整しやすくするために固有の一意的なトーナメントIDを割り当てることができる。
【0086】
トーナメントインスタンスが作成されると、トーナメントにリーダーボードIDを割り当てることができる。基盤となるオンラインサービス(例えば、XBOX LIVE(商標))は、ゲーム機によりサポートされるさまざまなゲームプログラムで使用するために利用できる共通の一組のリーダーボードデータ構造体を提供することができる。それとは別に、リーダーボードデータ構造体は、例えば所与のトーナメントインスタンスに対する資格認定スコアを保持することにより、それぞれのトーナメントインスタンスをサポートするために作成されるカスタム構造体としてもよい。これらの構造体は、さまざまなプレイヤーに対する識別子を格納する定義済みデータベースオブジェクト、およびゲームにおけるプレイヤーのパフォーマンスに対する1つまたは複数のデータ値(例えば、プレイヤーのレース時間、お気に入りの車、スコア、勝敗記録、スコア合計、対戦相手など)としてよく、また、ゲーム機402、トーナメントサーバ、および他のデバイス上のゲームクライアントは、リーダーボードデータ構造体に対しSQLクエリを実行してゲームセッションおよびトーナメント結果を取得することができる。リーダーボードは、タイトルサーバ432、統計量サーバ424、またはシステム内の他の所望のデバイスによりソフトウェアプロセスとして管理されうる。いくつかのインスタンスにおいて、異なるリーダーボード構造体は、トーナメントの異なる態様に対し使用することができる。例えば、タイトルサーバ432は、さまざまなトーナメント参加者(後述)に対する資格認定データを受け入れ、かつ処理する資格認定リーダーボードを管理することができるが、統計量サーバ424は、全体的なスコアリーダーボードデータ構造体を管理して、トーナメントにおけるプレイヤーの進行状況を追跡することができる。
【0087】
トーナメントがインスタンス化された後、プロセスはステップ605でトーナメントを実施する。トーナメントを管理するトーナメントコードの実際の実行は、どのサーバでも行うことができ、例えば、トーナメントサーバ434、タイトルサーバ432、および/またはゲーム機402などで実行することができ、トーナメント管理者により選択されたパラメータに応じて異なるトーナメントが異なる形で実施される。図8〜9に関して、例示的なトーナメントについて後述する。
【0088】
トーナメント(または1ラウンドなど、その一部)が実施されると、プロセスは、ステップ606に進み、そこで、さまざまなゲームクライアントが、それらの結果をトーナメントを管理するサーバに報告する。クライアントは、個々のゲーム機402上で実行されるゲームコードであってよく、それぞれのゲーム機は、トーナメントのサーバに結果を報告する責任を有するものとしてよい。これらの結果は、その特定のゲーム機402のプレイヤーのパフォーマンスに関する情報を含むことができ、またゲームセッションに参加した他のプレイヤーの一部または全部のパフォーマンスに関する情報も含むことができる(例えば、プレイヤーのゲーム機は、そのプレイヤーのスコアを報告するだけでなく、ゲームセッション内の他のすべてのプレイヤーのスコアも報告することができる。この複数の報告された情報は、後述のように、不正行為が発生していないことを確認するために互いに比較し合うことができる。)。それとは別に、複数のゲーム機402が単一のゲームセッションに参加することができるため、この報告は、セッションに参加しているゲーム機のうちの1つがそのセッションでプレイしたすべての人に対する結果を報告するように指定されるようにゲーム機402同士の間で調整することができ、セッション内の他のゲーム機は、その報告を複製するのを避けることができる。これらの結果は、さらに、統計量サーバ424などの、リーダーボードを実行しているサーバに、そのサーバによって必要とされる安全な通信を使用して報告されるようにもできる。リーダーボードに対する結果の別個の報告は、以下でさらに詳しく取り扱われるように、トーナメントサーバに報告されるデータ内の異常を解決するのに役立ちうる。
【0089】
実際の結果は、プレイされているゲームのタイプに応じて、どのような形式でもよく、また一般的に、ゲームセッションでプレイヤーによって得られた成績について報告することができる。例えば、主観視点(first−person)のシューティングゲームでは、プレイヤーのヒット率、お気に入りの武器などを報告することができるが、フットボールゲームでは、ゲームの勝敗結果、スコア、および他のプレイヤーおよび/またはゲーム統計量を報告することができる。ゲームでは、プレイヤーのパフォーマンスを評価し、ポイント、ランク、または他の報償を裁定する際にそれ自体の基準を使用することができ、そのような裁定は、結果として報告されうる。
【0090】
トーナメントのサーバは、さまざまなクライアントからのトーナメント結果を受け取り、また各プレイヤーのパフォーマンスの複数の報告を受け取ることがあるため、矛盾と異常が発生することがある。例えば、2台のゲーム機402は、単一のゲームに対する、またはゲーム内の単一のプレイヤーに対する矛盾したゲーム結果を報告する場合がある(例えば、それぞれ異なる勝利者、スコア、統計量などを報告する)。ホストの移動が生じたゲーム(例えば、セッションに参加しているゲーム機のうちの1つがゲームに対するローカルサーバホストとして指定されているが、そのゲーム機でセッション中にドロップアウトまたはエラーが生じた場合のゲーム)では、異なるゲーム機が、完全な、または他の何らかの形で矛盾した結果を報告することがある。ステップ607で、トーナメントのサーバは、異なるクライアントから報告された結果を比較し、報告された結果の中の矛盾を探すことができる。それに加えて、サーバは、それらの結果と所定のデータ構造体とを比較し、通常の、または許容可能な結果を識別し、報告された結果がプレイされたゲームセッションに対し通常であるか、または許容可能であると考えられる内容の限界を超えているかどうかを調べることができる。例えば、典型的なフットボールゲームでは、ゲームデザイナーは、所定のポイント合計を超えるスコア(例えば、100ポイントを超える)は異常であるかもしれないと判定することができる。
【0091】
異常が検出された場合、このプロセスはステップ608に移動し、そこで、アービトレーションプロセスが、報告された結果を分析して、その異常を解消し、かつ/または是正する。このアービトレーションプロセスは、個別のプレイヤー結果を取り出すようにリーダーボードサーバにクエリを実行することと、比較を実行することとを伴う場合がある。または、アービトレーションは、見かけのコンフリクトを、トーナメントが割り当てられているリーダーボードを管理するサーバに報告することを伴うことがあり、また、そのサーバ(例えば、統計量サーバ424)は、受け取った結果に対する独自の比較を行い、追加のセキュリティおよび/または完全性チェックを実行して、結果のどの集合が真正の集合であるかを確認することができる。アービトレーションプロセスは、格納されているデータにアクセスし、関わっているプレイヤーの相対的信頼度を識別することができる。アービトレーションプロセスが報告結果の中にエラーがあるのを識別した場合、ステップ609のプロセスは、リーダーボードデータを更新し、エラーを是正することができる。
【0092】
異常が検出されなかった場合、または異常が是正された後、プロセスはステップ610に進み、トーナメントを終了させるべきかどうかを確認することができる。異なるトーナメントは、トーナメントをどのように終了させるかを定義する異なるパラメータを持つことができる。例えば、Tournament Winnerパラメータを以下で詳述するように使用しうる。このステップで、トーナメントプロセスは、報告された結果、またはすべての結果を、トーナメント勝利者を定義する(複数の)パラメータと比較し、勝利者が見つかり、トーナメントが終了すべきか否かを決定することができる。
【0093】
トーナメントが終了すべきでない場合、プロセスはステップ605に戻り、トーナメントの実行を続けることができる。例えば、これは、そのトーナメント内の次のラウンドを処理する必要がある場合がある。
【0094】
トーナメントが終了すべきである場合、プロセスはステップ611に進み、トーナメントを終了させることができる。この終了は、プレイヤーのランキングおよびトーナメント勝利者を決定するために、リーダーボードデータオブジェクトからのスコアと結果の最終集計を必要とすることがある。トーナメントの終了は、多くの場合、勝利者と定義済みの着順(例えば、2位、3位、上位10位以内など)に入った人たちに賞品を授与することを伴う。賞品は、トーナメントスポンサーによって提供される物理的なアイテムであるか、または特定のデザイン、特別な機器、または武器などを備えたレースカーなどのゲーム内仮想アイテムであってよい。トーナメントの終了は、さらに、リーダーボードIDを解放し、トーナメントのリーダーボードデータオブジェクトを他のトーナメントまたは他のゲームで使用できるようにすること、後でアクセスできるようにアーカイブデータベースに結果を記録すること、ハイスコアを記録することなどを含むこともできる。トーナメントの終了後、プロセスは、次いで、ステップ603に戻り、次のトリガイベントの発生を待つことができる。必要ならば、すでに存在していない場合、またはトーナメントは終了した直後に、トーナメントインスタンスを自動的に作成するようにトーナメントトリガパラメータを定義し、これにより、プレイヤーがトーナメントを連続して利用できるようにすることができる。上述のように、トーナメントの複数のインスタンスが、必要ならば同時に存在することができ、したがって、第2のトーナメントのインスタンス化は、前のインスタンスの終了に依存する必要はない。例えば、トーナメントインスタンスの終了は、単純にプロセスを終了させ、それぞれの独立のインスタンスに対し別個のプロセスを生じさせることができる。
【0095】
上記の図6ではトーナメントパラメータを定義するステップに言及しており、そのステップを詳しく説明するために、以下では使用できるいくつかの例示的なトーナメントパラメータを取りあげる。
【0096】
トーナメント名−トーナメントを識別するために管理者が参加者に対して与えるテキスト文字列(例えば、「Halo 2(商標) Slayfest Sponsored by Microsoft」)。
【0097】
トーナメント所有者−トーナメントに対する管理者の識別。例えば、トーナメントの所有者は、ゲーム開発者、またはトーナメントのスポンサーとすることができる。
【0098】
トーナメントタイプ−トーナメントの定義済みタイプの識別。トーナメントサーバ434は、管理者によりアクセス可能であり、カスタマイズ可能な多数の定義済みタイプのトーナメント(例えば、シングル・エリミネーション、ダブル・エリミネーション、後述のようにその他など)を提供することができる。
【0099】
トーナメント参加者数−トーナメントでサポートされている全プレイヤー参加者の最小、最大、範囲、および/または好ましい数を識別する1つまたは複数の値。いくつかのトーナメントは、小規模の場合に適しているが、他のフォーマットは、プレイヤーが多数の場合に理想的である。
【0100】
ゲームセッション参加者数−トーナメントの各ゲームセッションに参加しているプレイヤーの最小、最大、範囲、および/または好ましい数を識別する1つまたは複数の値。ゲームセッションは、それぞれのゲームにより異なる方法で定義され、ゲームにおけるプレイの基本単位を指すものとしてよい。これは、ゲームタイプに応じて異なっていてよい。例えば、チェスゲームは、セッション(例えば、チェス盤)毎に2人の参加者を必要とするが、ポーカーゲームは、セッション(例えば、テーブル)毎に5人の参加者を必要とする場合がある。
【0101】
ラウンド数−トーナメントに対するラウンドの最小、最大、範囲、および/または好ましい数を識別する1つまたは複数の値。トーナメントのラウンドは、それぞれのトーナメント参加者が1つのゲームセッションでプレイするときに生じるものと定義することができる。
【0102】
ウィンドウ係数−いくつかのトーナメントでは、特定のゲームセッションに対するプレイヤー(例えば、プレイヤー群を伴うシングル「デスマッチ」)は、少なくとも一部はプレイヤー同士が最後に対戦したときから経過した時間の長さに基づきグループにまとめられる。ウィンドウ係数は、ゲームセッション、ラウンド、および/またはトーナメントの単位で測定されうる時間、さらにはプレイヤーがトーナメントの同じゲームセッションにおいて再び一緒にプレイするまでに経過する必要のある秒、分、時、日、週などを識別することができる。例えば、トーナメントはウィンドウ係数として2つのゲームセッションを指定することができ、これは、あるゲームについて2人のプレイヤーが一緒のグループにまとめられる前に、少なくとも2つのゲームについて対戦していてはならないということを意味する。ウィンドウ係数の使用は、継続時間が無制限であるトーナメント、または非常に多くの試合およびプレイヤーに対し特に望ましい場合がある。ウィンドウ係数の使用をサポートするために、トーナメントインスタンスは、トーナメント内のプレイヤーの各ペアがトーナメントで対戦した最後の時刻を識別するデータテーブルを格納することができる。
【0103】
いくつかのトーナメントでは、プレイヤーは、そのスコア、ランク、スキルレベルなどに従って一緒のグループにまとめられ、ランクギャップは、プレイヤーが一緒のグループにまとめられることを許容するランクの範囲を識別することができる。例えば、トーナメントは、点差が20ポイント以内である場合、または総合ランキングがあるランク数内(例えば、プレイヤー同士のランク差が10位以内)またはパーセンテージ内(例えば、トーナメントの参加者の総数のパーセンテージ)である場合にのみプレイヤーを一緒のグループにまとめたい場合がある。
【0104】
スケジューリングオプション−これらのオプションは、トーナメントがプレイされるスケジュールを識別する。トーナメントは、連続的でもよく、その場合、新しいラウンドは、前のラウンドの完了後、またはスケジュールに従って自動的に開始される。スケジュールは、週末のみのトーナメント、毎日のトーナメント、特定の日付および/または時刻、30分毎などのラウンドとゲームセッションが行える特定のいくつかの時間枠を示すことができる。
【0105】
新規プレイヤー係数−新規プレイヤーのスコアがランキングでどのように使用されるかを識別する1つまたは複数の値。ポイントランキングについて以下でより詳しく取りあげるが、いくつかのトーナメントでは、プレイヤーが参加を始めた時は、統計的にあまり意味をなさないと思われるデータ値に従ってプレイヤーのランク付けがなされる。例えば、単に勝敗記録に基づきプレイヤーをランク付けするトーナメントでは、新規プレイヤーが非常に高いランクなどに本当に値することがない場合であっても、全勝の30−0プレイヤーを1−0記録を持つ新規プレイヤーと同じにランク付けすることが可能である(両方とも100%勝利者)。これに対応するために、トーナメントでは、新規プレイヤー係数を使用することができ、新規プレイヤーのスコアは、ランキングで使用される前に調節される。したがって、例えば、新規プレイヤーのスコアは、1つのゲームセッションのスコアのみが利用可能な場合に75%だけ、2つのゲームセッションのスコアが利用可能な場合に50%だけ、3つのゲームセッションのスコアが利用可能な場合に25%だけ下げられ、4つ、またはそれ以上のゲームセッションのスコアが利用可能な場合には全くディスカウントされないようにすることが可能である。新規プレイヤー係数は、その効果に対する持続時間(例えば、ラウンドまたはゲームセッションの数)、およびその効果に対する調節値(例えば、スコアディスカウント、ポイント値加算/減算など)を識別することができる。
【0106】
トリガイベント−トーナメントのインスタンスを作成させる1つまたは複数のイベントの識別。これは、上述のスケジューリングパラメータに関係していてもよく、その場合、トリガイベントは、単に、そのスケジュールと一致する時刻とすることが可能である。他のタイプのトリガも使用することができる。例えば、トーナメントは、所定の数のプレイヤーがトーナメントに対して登録されたとき、またはそのトーナメントに対してすでに登録されている1人または複数のプレイヤーによりコマンドが入力された後(例えば、すべての登録プレイヤーがコントローラボタンを押して、自分たちの準備ができていることを知らせたとき)に自動的に開始するようにしてもよい。
【0107】
トーナメント勝利者−トーナメント勝利者が決定される方法を識別する1つまたは複数の値。これは、所定のポイント合計(例えば、1000ポイントに到達する第1のプレイヤー、またはレースにおける最短合計時間を持つ人)、所定のゲームイベント(例えば、ゲーム内の所定の目的を達成する第1のプレイヤー)、または何回かのラウンドの後のランキング(例えば、最終ラウンドの後の最上位ランキングのプレイヤー)としてよい。
【0108】
ゲーム特有のオプション−特定のゲームに特有の多数の他のオプション。これらは、レースゲームトーナメントに対するレーストラック、気象条件、車種、およびポイントスコアリングの識別、または主観視点のシューティングゲームトーナメントに対する地図タイプ、武器積み出し、およびスコアリングの識別を含むことができる。
【0109】
図7に示されているように、さまざまなトーナメントパラメータをトーナメントデータパッケージデータ構造体701に格納することができる。このデータ構造体は、1つまたは複数のラウンドリスティング702を含むことができ、それぞれのラウンドリスティングは、トーナメント内のラウンドのセグメント/ステージ/サブセットに対するデータを含む。例えば、例示的なトーナメント701は、3つのセグメントまたはステージに分割される、13のラウンドを含むトーナメントである。ラウンドリストは、リスト内のラウンドの数の識別、およびリスト内のラウンドに対する共通設定、パラメータ、またはテーマなどの、特定のリストに対する情報を含むヘッダ部分703を含むことができる(例えば、リスト1内のすべてのレースが「New York」レーストラック上にあるか、またはリスト1内のすべてのレースは、気象が「雨」に設定された状態で実行される)。リストは、さらに、それぞれの対応するゲームセッションに対し使用されるパラメータを含む、複数の個別のラウンド設定704を含むことができる。例えば、第1のラウンド設定は、低出力車のみを第1のレースに使用できることを示し、第2のラウンド設定は、4輪駆動車のみを第2のレースに使用できることを示しうる。以下の擬似コードは、トーナメントデータパッケージの一実施例を示す。
【0110】
【表1】

【0111】
前の実施例では、トーナメント設定ファイルは、複数のパッケージを格納することができ、それぞれのパッケージは、複数のリストを含むことができ、それぞれのリストは、リストの内部ハンドルに対するデータ値、表示されるテキスト値、およびゲーム内の設定に対する1つまたは複数のゲームコードを含むことができる。ゲームコードは、ゲームを構成するためにゲームプログラムにより使用されるテーブル内のエントリに対応する数値であってよい。例えば、レーシングゲームは、16個の異なるレーストラックを備えることができ、コード「1011」は、それらのトラックを示すテーブルへの2値インデックスであり、使用する11番目のトラックを識別する。他のコードは、同様に、気象、車のトランスミッション、トラック上の方向、自動車の種類などに対するテーブルなどの他の設定テーブルへのインデックスであってよい。以下の実施例は、そのようなテーブルをどのように構成できるかを例示している。
【0112】
【表2】

【0113】
それに加えて、これらの値は、すべてがテーブルへのインデックスコードである必要はない。例えば、最大馬力に対する値は、単に、その最大馬力に対する数値を含むだけでよい。トーナメントインスタンス(例えば、トーナメントがインスタンス化する頻度、条件など)に対する、またインスタンス内の個別のラウンド(例えば、ラウンドの回数)に対するスケジュールデータなどの他のデータも含めることができる。
【0114】
上で指摘されているように、さまざまなトーナメントタイプがありうる。シングル・エリミネーション、ダブル・エリミネーション、およびラウンドロビン(round−robin)型トーナメントを使用することができる。図8は、使用できる他の種類のトーナメントの一実施例を示している。図8のトーナメントでは、プレイヤーは、トーナメントに参加する登録をすることによりステップ801から開始する。登録は、さまざまな方法で行える。例えば、プレイヤーは、タイトルサーバ432またはトーナメントサーバ434などのサーバにログオンし、登録のためにあいている利用可能なトーナメントのリストを取得するようサーバにクエリを実行することができる。クエリされたサーバは、利用可能なトーナメントのリストを返し、関連するトーナメントパラメータ(例えば、トーナメント名、ラウンド数、すでに登録されている参加者の数、開始時刻、賞品など)を表示することができ、またはユーザは、特定のトーナメントをハイライト状態にしてコントローラ上のボタンを押すことにより登録することができる。それとは別に、プレイヤーは、そのトーナメントについてすでに登録されている他のプレイヤーにより送信された招待を受信した結果としてトーナメントに参加することができる。
【0115】
プレイヤー登録801は、所定の時間(例えば、トーナメントインスタンスで作成されてから経過した時間、スケジュールされたトーナメントに対する時刻、第1の登録者以降に経過した時間など)が過ぎるまで、または所定の数の登録者が参加する(例えば、参加者の最大数を定義するトーナメントパラメータ)まで、続けることができる。登録が終了すると、トーナメントは、ステップ802で最初に参加者をランダムな、または擬似ランダムな順序で並べることにより開始することができる。このランキング配置は、順序はすぐに再配列されるため、アルファベット順、または登録順など、所望の方法で実行することができる。
【0116】
次いで、ステップ803で、プロセスは、次のラウンドに対するゲームセッションで使用するプレイヤーの数を決定することができる。これは、上述のゲームセッション参加者数パラメータを参照することにより実行することができるが、さらに、全参加者数に基づく計算および調節を伴う場合がある。例えば、このプロセスは、理想的なセッションサイズを見つけるために、計算を実行する(例えば、全参加者数をゲームセッション参加者数パラメータのさまざまな値で除算する)ことができる。理想的セッションサイズは、すべてのセッションに同じ数のプレイヤーを用意できるサイズ、またはすべてのセッションについてプレイヤー高々1人分(または他の所定の値)だけサイズが異なるようなサイズとすることができる。セッションサイズの決定で、さらに、ゲームセッション毎により多くの(またはより少ない)プレイヤーを使用することを優先するか、またはパラメータで指定された好ましい数に最も近い数を持たせることにより優先することができる。
【0117】
セッションに入るプレイヤーの数を決定したプロセスが完了すると、このプロセスは、ステップ804に進み、次のゲームセッションのための新しいグループを埋めることを開始することができる。ステップ805で、グループにまだ割り当てられていない最高ランキングプレイヤーは、新しいグループに割り当てられる。ステップ806で、次に高い未割り当てプレイヤー(例えば、潜在的プレイヤー)に対するデータが取り出され、ステップ807で、その潜在的プレイヤーが最近、現在のグループ内ですでに割り当てられている他のプレイヤーの誰かとプレイしたかどうかを確認する。これは、例えば、参加者の各ペアがゲームセッションで一緒にプレイした最後の時刻を追跡する、格納されたテーブルを参照することにより実行されうる。
【0118】
潜在的プレイヤーが、グループ内の他のプレイヤーの1人とあまりにも最近にプレイしているということがなければ、潜在的プレイヤーが、ステップ808でグループに追加される。他方、潜在的プレイヤーがあまりに最近にプレイしている場合、プロセスは、その潜在的プレイヤーをスキップし、ステップ809に進み、そこで、現在のグループがいっぱいであるか否かを確認する。グループがいっぱいでなければ、プロセスは、ステップ806に戻り、次の未割り当てのプレイヤーについて情報を取り出す。グループがいっぱいであれば、プロセスは、ステップ810に進み、残っている未割り当てのプレイヤーがいるかどうかを調べる。もしいれば、プロセスは、ステップ804に戻り、新しいグループを埋めることを開始する。最後のいくつかの未割り当てのプレイヤー同士がすべてあまりにも最近にプレイしている場合に、図示されていない1つのオプションのステップを実行できる。この状況では、プロセスは、これらのプレイヤーに対するウィンドウ係数基準を単に放棄し、1つまたは複数の最終グループにまとめることができる。あるいは、システムは、ウィンドウ係数を所定の量だけ調節し(例えば、1だけ減らし)、プロセスを新たに開始することができる。
【0119】
すべてのプレイヤーがいくつかのグループに割り当てられている場合、プロセスは、ステップ811に進み、そこで、プレイヤーはゲームセッションをプレイする。ゲームセッションが完了すると(例えば、プレイヤーはレースの実行を終了する、フットボールゲームを完了する、デスマッチを終了する、など)、プロセスは、ゲームセッションにおけるパフォーマンスに基づきプレイヤーにポイントが割り当てられるステップ812に進む。これらのポイントは、ゲームタイプに応じて異なり、異なるゲーム成績に対し異なるポイントが与えられる。さまざまなタイプのスコアリングメカニズムが使用できる。例えば、トーナメントサーバは、一番最近のゲームセッションで各プレイヤーにより達成された成績に対するゲームスコア、トーナメントでこれまでに各プレイヤーにより蓄積されたポイントを集計するゲームスコア累計、対戦した他のプレイヤーの数および/またはランキングを考慮するマッチスコア(例えば、所与のセッションで敗北した各プレイヤーに対するポイント)、およびプレイヤーがこれまでにトーナメントで蓄積することができたであろうポイントの最大数を示す利用可能なスコア累計を記録することができる。
【0120】
ポイント割り当てを実行するサーバまたはゲーム機は、さらに、ランキングを目的として計算を実行することができる。例えば、トーナメントプロセスは、そのプレイヤーが獲得した可能な最大のスコアのパーセンテージを示すスコアリングパーセンテージを計算することができる(例えば、プレイヤーのゲームスコア累計を利用可能なスコア累計で除算することにより)。このプロセスは、新規プレイヤー係数パラメータを適用して、プレイヤーの再ランク付けのために使用される前に新規プレイヤーのスコアを調節することができる(以下のステップで)。
【0121】
次いで、ステップ813で、このプロセスは、上述のようにスコア合計および/またはスコアリングパーセンテージに基づきさまざまなプレイヤーの順序変更または再ランク付けをすることができる。プレイヤーの順序変更がなされた場合、プロセスは、ステップ814で、さらにラウンドをプレイするかどうかを確認することができる。この決定は、トーナメントパラメータで指定されているように、プレイヤーが必要な回数のラウンドをプレイしたかどうか、またはプレイヤーが勝利に対する他の何らかの条件を満たしたかどうかに基づくことができる。さらにラウンドをプレイする場合、プロセスはステップ804に戻り、プレイヤーのグループ化をし直すことができる。プレイする必要のあるラウンドがなくなった場合、プロセスは、図6に関して上で説明されているように、ステップ815に進み、トーナメントを終了する。
【0122】
図8Cは、図8Aおよび8Bのトーナメントプロセスで発生しうるプレイヤーランキング、グループ分け、および再ランク付けの例示的な進行状況を示す。プレイヤーは、左に示されているようにラウンド1に対しランク付けされ、3つのグループ(1つのグループに4人のプレイヤー)に分けられ、次いで、ラウンド1のパフォーマンスに基づき右に示されているように再ランク付けされる。第2ラウンドでプレイヤーをグループ分けする際に、4人の最高再ランク付けプレイヤーは、プレイヤーA、E I、およびBであるが、Bは前のラウンドでプレイヤーAとプレイしたばかりなので、プロセスはプレイヤーBをスキップし、次に高いプレイヤーであるプレイヤーFをグループ1に追加する。次いで、プレイヤーBは、第2のラウンドについてグループ2に入れられる。図8Cに示されている実施例は、最終プレイヤーであるプレイヤーLが、第2ラウンドのグループ3のプレイヤーKとあまりにも最近にプレイしているため、新規グループに格下げされることを示している。必要ならば、このプロセスでは、ウィンドウ係数の制約に関係なく、リストの最下位にある1つまたは複数のグループを対戦させることができる。例えば、プレイヤーLは、プレイヤーKと最近プレイしたにもかかわらず、単にグループ3にマッチされうる。それとは別に、マッチできない最下位のプレイヤーを、トーナメントから落とすこともできる。
【0123】
代替として、ランキングの最下位に現れている1つまたは複数のグループを、単に、トーナメントから落とし、それにより、通ったラウンドでフィールドを絞り込むことができる。落とすステップは、所定の回数のラウンド(例えば、2ラウンド)を通った後に開始し、落とされたグループがとにかく最弱のプレイヤーを含む可能性がより高いように少なくとも何らかの予備ランキングを許すことができる。
【0124】
図8の方法は、一実施例にすぎず、このタイプのトーナメントには、修正を加えることができる。例えば、ランクギャップパラメータは、ステップ807および808で第2のチェックとして使用され、新規プレイヤーがグループ内の他のプレイヤーにランクに関して十分に近い場合にのみプレイヤーはグループに追加される。トーナメントサーバは、結果として得られる必要なグループ数が所定の閾値を超える場合、またはパラメータの要求条件を満たすグループを埋めるだけの十分なプレイヤーがいない場合に、一方または両方の要求条件の放棄を必要とすることなど、ランクギャップおよびウインドウ係数パラメータをどれだけに厳格に使用するかに関して異なる優先度を割り当てることもできる。サーバ優先度は、一方の優先度を、他方の優先度の前に放棄することができる。
【0125】
他のオプションとして、このプロセスでは、トーナメントが開始した後に新規プレイヤーの追加登録を行い、最初に登録されたプレイヤーの脱落(例えば、終了)を行うことができる。新規登録プレイヤーは、ステップ803の前などに、次のラウンドに対する有効なプレイヤーのプールに単に追加することができる。それとは別に、新規プレイヤーがいつ参加を許可されるかに関する制限がありうる(例えば、最初の所定の回数のラウンドの後でのみ、または最終の所定の回数のラウンドでは禁止される、など)。新規プレイヤーを追加する場合、新規プレイヤーに、最初にランダムなランクを与えることができるか(ステップ802の初期割り当ての場合のように)、あるいは、プレイヤーが、リストの中位、または最下位のところに自動的にランク付けされうる。新規プレイヤー係数パラメータは、新規プレイヤーが数ラウンドをプレイした後にすぐにランキングの深みにはまってしまわないように、新規プレイヤーのスコアを調節するために使用できる。例えば、スコアリングパーセンテージが使用され、新規プレイヤーが第1ラウンドに勝利した場合、新規プレイヤー係数は、プレイヤーが1ラウンドしかプレイしなかったときに0.25をプレイヤーのスコアリングパーセンテージに乗算し、新規プレイヤーが1ラウンドを勝利した後あまりにもすぐに格上げされることのないようにすることが可能であろう。同様に、新規プレイヤー係数は、プレイヤーがプレイしたラウンド数に応じて異なり(例えば、2ラウンドの後に0.5を使用し、3ラウンドの後に0.75を使用し、4ラウンドの後に1.0使用する)、プレイヤーのフルスコアは、所定の回数のラウンドの後に信頼される。
【0126】
図8のトーナメントプロセスは、多数のプレイヤーに対応するために使用することができ、また連続するトーナメントを実行するために使用することができる(例えば、ラウンド数が定義されていない場合)。図9は、図8のプロセスに加えて使用できる他のトーナメントプロセスを例示している。図9のプロセスでは、リーダーボード資格認定期間を使用して、トーナメント参加者の初期資格認定とシード決定を行うことができる。このプロセスは、ステップ901で始まり、トーナメント作成者または管理者(上述のように、ゲームの開発者、プレイヤーなどであってよい)は、最初に、トーナメントのパラメータを定義する。これらのパラメータは、上述のものに類似している場合があるが、他のパラメータも使用できる。例えば、トーナメントでは、勝利者が進出し、敗者が脱落するエリミネーションブラケット構造を使用することができ、そのようなトーナメントは、ファイナルの決勝ゲームに現れる参加者の数、および始めの方のラウンドのゲームから進出した勝利者の数を識別する別のパラメータを含むことができる。トーナメントパラメータは、さらに、使用されるトーナメントレベルの数を識別することもできる。例えば、トーナメントは、最高位ランキング、第2位ランキング、および第3位ランキングのプレイヤーグループが競い合うように3つのレベル(例えば、「金賞」、「銀賞」、および「銅賞」)を有するものとして定義されうる。これらのレベルはそれぞれ、トーナメントの個別のインスタンスとして動作し、異なる能力を持つプレイヤーがそのプレイヤー独自のトーナメントで対戦することができる。例えば、資格認定が完了し、参加者がその資格認定に基づきランク付けされたいくつかのグループに分割された後に、別のインスタンスを開始することができる。
【0127】
トーナメントは、さらに、開催日時および継続時間などの(複数の)資格認定ラウンドに対するスケジューリング情報を含むことができる。トーナメントは、さらに、参加者の資格認定に使用されるチャレンジのタイプを設定するチャレンジ定義パラメータを含むこともできる。チャレンジ定義データ構造体は、一般に、トーナメントの資格認定のためプレイヤーが遂行しなければならないある種の技を示し、ゲームに応じて異なる場合がある。チャレンジ定義では、ロケーション設定(例えば、レーシングゲームのレーストラック、戦争ゲームの戦場地図、ステージのゲームレベルなど)、難易度設定(例えば、易、中、難など)、ゲーム条件(例えば、レース用の自動車のタイプ、地図上の利用可能な武器、気象設定)などの資格認定チャレンジに対する1つまたは複数のゲーム設定を指定することができる。チャレンジ定義は、1つのイベントだけに制限されるわけではない。代わりに、この定義で、異なる条件とともに、異なるレースまたはステージのシーケンスなど、多数の資格認定イベントを順序付きリストで指定することができる。
【0128】
いくつかのゲームでは、チャレンジ定義は、ゲーム機402にダウンロードすることができるデータファイルを含み、これによりチャレンジに参加するようにゲーム機上のゲームタイトルプログラムを自動的に構成することができる。例えば、レースゲームのチャレンジ定義パラメータが、200馬力以下の後輪駆動車を使用して、かつレースゲームの「中」難易度設定で設定される5つのコンピュータ制御(AI)対戦相手に対して、明るく晴れた日にLaguna Secaレーストラック上で4周レースを行うことを要求している場合、トーナメントのサーバは、プレイヤーのゲーム機にダウンロードされたときに、ダウンロードファイル内で指定されているタイプのレースを実行するようにゲーム機上で実行されるゲームを自動的に構成するトーナメントチャレンジダウンロードファイルを備えることができる。ダウンロードファイルはさらに、プレイヤーの自動車選択をチャレンジ定義により許可された選択に制限するために、ゲーム機402上で実行されているゲームにより使用されうる。
【0129】
トーナメントパラメータが定義される場合、トーナメントのサーバは、トーナメントを処理するプロセスを実行し始めることができる。このプロセスは、プレイヤーの資格認定結果を保持するために使用されるリーダーボードデータ構造体に対するストレージを割り当てる(または他の何らかの方法で確保する)ことができ、リーダーボードのIDは、ステップ901で定義されているパラメータのひとつとしてよい。リーダーボードIDは、データ構造体に対する名前またはハンドル、およびどこに格納されるか、どのように取り出されるかを示すメモリアドレスロケーションを含むことができる。リーダーボードIDは、スコアリングアービトレーションに使用されうる。
【0130】
トーナメントパラメータがステップ901で設定された場合、コンピュータプロセスは、ステップ902でトーナメントをプレイヤーにアナウンスすることができる。アナウンスは、電子メール、SMSなどの電子通信を介して行うことができ、電子メッセージをゲーム機402に電子メッセージを送信することを含むことができる。アナウンスは、さらに、テレビ広告、ラジオ、電話、雑誌などの他の形態の通信を使用して行うこともできる。このアナウンスは、トーナメントのパラメータ、トーナメントについて資格認定するために遂行されなければならないチャレンジのタイプ(例えば、チャレンジ定義)、および資格認定期間に対する期間(例えば、開始時刻と終了時刻)をプレイヤーに通知するものである。
【0131】
ステップ901でアナウンスした後、またトーナメントパラメータで設定された何らかのスケジュールされた時刻に(または、時刻がスケジュールされていない場合には即座に)、プロセスがステップ903で資格認定期間を開く。この期間中に、プレイヤーは、利用可能であれば、チャレンジ定義構成ファイルをダウンロードし、必要なチャレンジをプレイする(例えば、指定されたレースを実行する)ことができる。ゲーム機402は、プレイヤーの進捗状況および成績(例えば、レース時間)を記録し、安全な伝送(secure transmission)を通じて、スコアをトーナメントサーバ434などのトーナメントのサーバに報告し、トーナメントリーダーボード上に含めることができる。上述の安全な伝送の検査に加えて、この報告されたスコアは、さらに、検証プロセスを受け、不正スコアがポストされるのをさらに回避することを補助することができる。検証プロセスは、報告されたスコアと、所定のスコア限界または最大予想スコア(上で定義されている追加のトーナメントパラメータであってよい)との比較、または異なるゲーム機により報告された結果との比較を含むことができる。
【0132】
プレイヤーのスコアを受信した後、またはプレイヤーの要求に応答して、サーバは、プレイヤーの結果および他のプレイヤーの資格認定スコアに基づきトーナメントランキングを決定するようリーダーボードにクエリを実行することができる。サーバは、プレイヤーのパフォーマンスがどれだけよいかを知らせるメッセージをプレイヤーに送信することができる(例えば、「You have logged the 75th fastest time for this challenge」というメッセージ)。メッセージは、さらに、プレイヤーが何に対して資格認定されているかをプレイヤーに知らせることもできる(例えば、「Your score qualifies you for the gold level tournament」または「Your score qualifies you for the 10th seed」)。プレイヤーが望めば、プレイヤーは、資格認定イベントを再び試み、他のスコアをポストし、自分のポジションを改善することを望むことができる。重複スコアを回避するために、サーバは、スコアをポストするプレイヤーの識別(例えば、ログイン識別)を取得し(例えば、スコアとともに伝送される)、プレイヤーがすでに資格認定スコアをポストしているかどうかを確認することができる。プレイヤーが持っている場合、サーバプロセスは、前のスコアを新しいスコアで自動的に置き換えることができるか、または新しいスコアが得られた結果、古いスコアよりも高いランクが得られる場合のみ、またはユーザがスコアを送信したときに古いスコアを新しいスコアで置き換えるよう要求した場合に、そうすることができる。それとは別に、プレイヤーは、資格認定スコアをポストする無制限の機会を与えられる必要はない。例えば、トーナメントは、それぞれのユーザをちょうど1つの資格認定エントリ、または限られた所定の数の資格認定エントリに制限することができる。プレイヤーは、ゲームセッションスコアをポストする代わりに無視させる(例えば、練習ラウンドとして取り扱う)機会を与えられてもよい。それに加えて、システムは、追加の資格認定試行を購入するオプションをユーザに対し表示することができ、またユーザは、より高い資格認定スコアをさらに試みるコストについて借方に付けられる所定の口座(例えば、クレジットカード口座、または購読口座)を持つことができる。
【0133】
資格認定期間に資格認定するプレイヤーが増えれば増えるほど、多くのプレイヤーがランキングを下げる可能性がある。トーナメントサーバプロセスは、そのようなプレイヤーに対し、そのランキングが変更されるとき、またはそのランキングが所定の量(例えば、位数、参加者のパーセンテージなど)だけ変化する場合、またはそのランキングにより特定のトーナメントインスタンスに対する資格認定から脱落する場合(例えば、その前の資格認定が「金賞」トーナメントの資格認定に使用されたが、現在は「銀賞」トーナメントについて資格認定しているだけの場合)にそのことを自動的に通知することができる。通知は、アナウンスと同様にどのような通信でも可能であり、プレイヤーのゲーム機402に送信される電子メッセージであってよい。メッセージは、ゲームプログラムのユーザインターフェイスを使用して表示される、プレイヤーのゲーム機上のゲーム内通信として表示することができる。コンピュータでの電子メールなどの他の通知も、使用することができる。通知の実際のタイプ、および通知が送信される条件は、追加のトーナメントパラメータとして指定することができる。
【0134】
資格認定が完了すると、トーナメントサーバは、ステップ904でリーダーボードデータ構造体を参照し、ポストされた結果と資格認定の要件とを比較することによりトーナメントについて実際に資格認定したプレイヤーの数を決定することができる。資格認定の要件は、トーナメントパラメータで指定されるか、またはトーナメントパラメータから導くことができる。このような導出の一実施例では、ゲーム毎のプレイヤーの所望の数(P)、最終ゲームに入るプレイヤーの数(P)、それぞれのゲームから進出すべき勝利者の数(W)(例えば、2、3、4人などのプレイヤーがそれぞれのゲームから進む)、および所望のラウンドの数(R)などの入力されたトーナメントパラメータに基づく計算を使用して、トーナメントの1つのインスタンスに参加しうるプレイヤーの総数(P)を計算することができる。
【0135】
【数1】

【0136】
どのプレイヤーが資格認定するかを判定するために、トーナメントプロセスは、上記のプロセスを実行し、次いで、リーダーボードを参照して、トーナメントについて資格認定されているような上位P数のプレイヤーを受け入れることができる。もちろん、この計算は、トーナメント定義ステップ901および/または資格認定期間903など、早いうちに実行されている。複数のトーナメントインスタンスがサポートされる場合(例えば、トーナメントパラメータにより示されているように)、トーナメントプロセスは、次のトーナメントについて資格認定するようにリーダーボード内の次のPエントリを受け入れることができ、これは、トーナメントインスタンスの総数が埋められるまで、またはリーダーボード内に未割り当てのエントリでなくなるまで続けられる。このようにして、トーナメントプロセスは、資格認定者(または参加者)をさまざまなトーナメントレベルに分ける。
【0137】
上記の例示的な計算は、トーナメント毎のプレイヤーの総数を決定するようには制限されない。その代わりに、他の用意されている変数に基づき、変数のうちの任意のものを計算することができる。したがって、例えば、トーナメント管理者が開いているラウンドの数(R)を残すことを決定した場合、その式は、他の値に基づきその値を計算するように整理し直すことができる(例えば、すべてのプレイヤーに対しトーナメントがあるように、また指定されたゲーム毎のプレイヤーおよびゲーム毎の勝利者の値を満たすのに必要な数のラウンドを実施する)。それに加えて、ポストされたスコアの特定の数またはパーセンテージがトーナメントに対して資格認定することを要求するように、トーナメント充填比をパラメータで定義することができる(例えば、20%)。資格認定期間が終了し、かつトーナメントプロセスがリーダーボードを参照して受け取ったエントリの総数を判定することができると、プロセスは、エントリのうちのいくつ(例えば、20%)がトーナメントに入るかを決定し(例えば、比率が20%で、100エントリを受け取る場合はP=20)、次いで、その充填比に対応するように他の値(例えば、R、Pなど)を調節することができる。
【0138】
ステップ905で、トーナメントプロセスは、計算された値(もしあれば)およびトーナメントパラメータに設定されているスケジュールパラメータに基づき、さまざまな(複数の)トーナメントおよび(複数の)トーナメントラウンドをスケジュールすることができる。このプロセスは、さらに、エリミネーショントーナメント(勝ち抜き戦)(ellimination tournament)においてトーナメントブラケット(tournament bracket)を埋めるようにステップ906でシード決定を実行することができる。このシード決定は、上述のグループ分けアプローチを使用して技量の近接しているプレイヤーがそれぞれのラウンドを対戦するようにする(例えば、上位X人のプレイヤーが第1のゲームで対戦し、次の上位X人のプレイヤーが第2のゲームで対戦し、というようにし、シード決定はそれぞれのラウンドの後に、またできる限り後に行われる)ことで動的に実行することができるか、またはシード決定は、試して、後のラウンドまたは最終ラウンドになるまで、高いシードのプレイヤーが他の高いシードのプレイヤーに当たらないように実行できる。これは、一般的に、チャンピオンシップゲームから開始し、決勝を埋めるのに必要な準決勝の数を決定し、すべてのラウンドが定義されるまで準決勝に対する同じ分析を再帰的に実行することにより行うことができる。試合のラウンドが定義されていた場合、シード決定プロセスは、開幕戦から開幕戦へと一歩ずつ進み、予想勝利者を埋めるのに十分な上位シードプレイヤーを入れ、次いで試合の残りを下位シードのプレイヤーで埋めることができる。この種のシード決定は、統計的に実行することができ、この場合、プレイヤーは、トーナメント全体を通してシードを持ち越し、ラウンドとラウンドの間でシードのやり直しはされない。さらなる代替として、このシード決定は、プレイのラウンドが終わる毎に新たに実行することができ、その場合、それらのプレイヤーのみ存在し、プレイする準備ができている(例えば、トーナメントインスタンスを処理するサーバでチェックインしている)。したがって、例えば、第1ラウンドの後に多数のプレイヤーが終了するか又は脱落した場合、トーナメントは、試合のないプレイヤー(例えば、元のシード決定による対戦相手がもはやプレイしなくなっているプレイヤー)を最小限に抑えるために第2ラウンドについてシード決定をやり直すことができる。
【0139】
図10Aは、トーナメントサーバが図10Bに示されているプロセスに従った場合に生成されうる静的にシード決定されたブラケットの一実施例を示す。図10Aのブラケットの中間ラウンドにさまざまな値が示されているが、図10Bのプロセスの最終結果では、開幕ラウンドブラケット対戦(opening round bracket matchups)、ラウンド総数、および試合の割り振り(例えば、始めの方のどの試合から競技者を後の試合に供給するのか)を識別する。図10Bに示されているように、このプロセスは、決勝戦を考慮することによりステップ1001から始まる。プロセスは、トーナメントパラメータを参照して、決勝戦に何人の競技者が出るのかを決定することができ、決勝戦を埋めることができる。ステップ1002では、決勝戦は、上位シードで埋めることができる。図10Aの実施例では、決勝戦は、8人の競技者がいると定義されており、したがって、上位8人のシードプレイヤーが、決勝戦に現れると想定される。ここでもまた、これは、開幕ラウンドのシード決定を目的とする仮定にすぎず、上位シードプレイヤーは、実際に決勝戦に生き残る必要はない。
【0140】
次いで、ステップ1003において、システムは、現在のラウンド(例えば、決勝戦)を埋めるのに前のラウンド(準決勝)において前のフィーダーマッチ(feeder matches)がいくつ必要かを確認することができる。例えば、決勝戦が8人のプレイヤーを必要とし、トーナメントパラメータは、4人のプレイヤーがそれぞれの試合から進出することを示している場合、始めの方のラウンド(準決勝)は、8人のプレイヤーを用意するために2試合を必要とする。ステップ1004で、現在のラウンドからのプレイヤーは、始めの方のラウンドで必要なさまざまな試合に分散される。ステップ1005で、始めの方のラウンドの試合の残りは、次に高い有効なシードプレイヤーで埋められる。
【0141】
ステップ1006で、トーナメントのすべての参加者が出ているか否かを判定するチェックを行うことができる。すべての参加者が出ていない場合、もう1つ前のラウンドがトーナメントに必要となる。このプロセスは、ステップ1007で、フォーカスを1つ前のラウンドに移動し、そしてステップ1003に戻って前のラウンドの試合を埋める同じステップを実行することができる。したがって、例えばシステムは、ステップ1007の「現在のラウンド」を準決勝に設定し、そしてステップ1003に戻って1つ前のラウンド(例えば、準々決勝)に対するブラケットを埋め始めることができる。このプロセスは、すべての参加者が出揃うまで続けることができ、このプロセスで取り扱われる最後のラウンドがオープニングラウンドのソード決定を行う。
【0142】
図11は、6人のプレイヤーが決勝戦に現れ、9人のプレイヤーが前のラウンドの試合でプレイし、3人のプレイヤーがそれぞれの前の試合から進出するトーナメントの他の実施例を示している。最も早いラウンドは、シード決定プロセスの最終結果を示している。
【0143】
次いで、さまざまなトーナメントインスタンスがインスタンス化され、ステップ907で(複数の)トーナメントが実行されてその結果が決定される。トーナメントの実際の実行は、上述のように行われうるが、同じまたは異なるサーバ上の別々のコンピュータプログラムプロセスがさまざまなトーナメントインスタンス、ゲーム機上で実行されサーバに報告されるゲームセッション、スコアアービトレーションなどを管理する。
【0144】
図12は、例えば、図8A〜8Bおよび9に示されているタイプのトーナメントにアクセスするためゲームで使用できる例示的なユーザインターフェイスマップを示している。ゲーム機のメインメニュー1201は、トーナメントページオプションを含む、多数のトーナメントオプションを備えることができる。トーナメントページ1202は、そのオプションを選択することに応答して表示され、トーナメントオプションのメニューを含むことができる。例えば、トーナメントメニュー1202は、プレイヤーがすでに登録されているトーナメントのリスト、プレイヤーの資格認定ランク、参加者数、トーナメントの現在のステータス(例えば、登録、資格認定、ラウンドXなど)を表示することができる。トーナメントメニュー1202は、さらに、リストに含まれるトーナメントのうちの1つに入る選択可能オプション、トーナメントを見つける選択可能オプション、およびトーナメントを作成する選択可能オプションを含むことができる。リストにあるトーナメントのうちの1つを選択した後、ユーザに対し、選択されたトーナメントのトーナメントロビー画面を表示することができる。
【0145】
トーナメントロビー画面1203は、現在のステータス、プレイヤーの次の対戦相手、対戦相手のステータスなどの選択されたトーナメントに対する追加情報を表示することができる。トーナメントロビー画面1203は、トーナメント内のゲームをプレイする追加メニューオプション、トーナメント内の前の試合に対するゲーム履歴を表示する追加メニューオプションなどを含むことができる。対応するメニューオプションを選択した後、ゲーム機は、ゲームプレイ画面1204を表示し、トーナメント内のラウンドまたは試合のプレイを開始するか、またはゲーム履歴画面1205を表示し、トーナメント内のプレイヤーの前のパフォーマンスに関する情報を表示することができる。この情報は、プレイヤー、対戦相手、チームなどの統計量を含むことができる。履歴画面1205は、さらに、統計量サーバ426上のリーダーボードからデータのクエリを実行することなどにより、複数のトーナメントおよびゲームタイプにわたる全体的なプレイヤーオンラインパフォーマンスを表示することもできる。
【0146】
トーナメントロビー画面1203は、さらに、参加者リストオプションを含むことができ、その選択により、参加者リスト1206を表示することができる。参加者リスト画面1206は、トーナメントの参加者、次のラウンドでプレイするようスケジュールされている参加者、前のラウンドでプレイした参加者などに関する識別および統計量情報を表示することができる。
【0147】
試合またはラウンドをプレイした後、システムは、レポート結果画面1207を表示し、試合の結果を表示することができる。これは、プレイされたばかりの試合におけるプレイヤーのパフォーマンスに関する統計量を含むことができる。
【0148】
トーナメントメニュー1202には、さらにプレイヤーがトーナメントを探索できるオプションも用意される。このオプションを選択した後、プレイヤーは、トーナメント探索画面を表示することができ、これは、ユーザが、1つまたは複数のトーナメントサーバ434上で実行されるもの、またはリーダーボードを使用するものなど、オンラインシステムでトーナメントを特定するために使用されうる探索基準を入力、または選択することを求めるプロンプトを含むことができる。この基準は、ゲームタイトル、トーナメント名、ゲームタイプ、トーナメントタイプ、トーナメントホスト、または他の何らかの所望の探索基準を含むことができる。探索を実行した後、システムは、このユーザに対するトーナメントのリストを表示し、資格認定詳細(例えば、ユーザが資格認定しているかどうか、参加者資格認定者スコアなど)およびトーナメントが行われることになっている場合のスケジュールを示すことができる。
【0149】
トーナメント1202は、さらに、プレイヤーが新規トーナメントを作成することを許可するオプションを含むこともできる。選択した後、ユーザに対し、新規トーナメントを定義する基準を入力するユーザに求めることができるトーナメント作成画面1209が表示されうる。この基準は、トーナメントパラメータ、ゲームタイトルなどの、上述の特徴のいずれかを含むことができる。1つまたは複数の追加のゲーム設定画面1210も、この目的に使用することができる。
【0150】
トーナメント1202は、さらに、リーダーボード資格認定トーナメントオプションを含むことができ、このオプションの選択で、リーダーボード画面1211が表示されうる。リーダーボード画面1211は、リーダーボードトーナメントのリストを表示し、名前、ID、現在の状態、現在のチャレンジ、チャレンジ/資格認定期間などのリーダーボード資格認定トーナメントに関する追加のデータを含むことができる。リーダーボード画面1211は、特定の表示されるトーナメントに対する資格認定に関する追加の説明および詳細を表示するオプションを含むことができる。資格認定詳細画面1212は、プレイヤーがどのように資格認定を受けられるかを説明する追加の記述を含むことができる(例えば、「Race the Laguna Seca race track using a 4WD car with less than 301 Hp, and post one of the top 150 times to qualify for the Gold level tournament!」)。ユーザは、資格認定試行を行うことを選択することができ、その結果、ゲーム画面1213が表示され、この試行の後に、ユーザは、プレイヤーの資格認定試行に関する情報を表示するレポート結果画面1214を表示することができる。結果画面1214は、さらに、プレイヤーの結果スコアが他のプレイヤーの間でどのようなランクにあるかを示すリーダーボードから取り出された情報、およびトーナメントについてプレイヤーが資格認定を受けたかどうかを識別する情報を表示することもできる。
【0151】
リーダーボード画面1211内のリストされているトーナメントを選択した後、ゲーム機は、そのトーナメントに対するエリミネーション詳細画面1215を表示することができる。エリミネーション詳細画面1215は、トーナメントステータス、プレイヤーの順位/ランキング、およびプレイヤーがまだトーナメントに入っている場合は、そのトーナメントに対する次のスケジュールされているゲームのリストを表示することができる。プレイヤーが次のラウンドを開始する準備ができている場合、プレイヤーは、詳細画面1215から対応するオプションを選択し、トーナメントロビー1216を入力することができ、そこで、プレイヤーは、次のラウンドの自分の対戦相手の参加を待つことができる。ロビー1216から、プレイヤーは、そのトーナメントに対するブラケット1217、ゲーム設定およびパラメータ1218、またはプレイヤー、チームメート、友人、トーナメント内の他の競争相手、および次回の対戦相手に関する統計量1219を表示することを選択できる。
【0152】
プレイヤーの対戦相手がチェックインしている場合、また両方のプレイヤーの準備が整っている場合、プレイヤーは、試合するゲーム画面1220、および試合の結果を示すゲーム後結果画面1221を表示することができる(上述のように)。
【0153】
上述のさまざまな特徴は、さまざまなコンセプトの単なる例示的な実装にすぎず、必要に応じて修正が可能である。例えば、上記のプレイヤーへの参照は、1人を意味するか、またはゲームを一緒にプレイしている人々のチームを指すことがある。いくつかのトーナメントでは、さまざまなプレイヤーがチームとして一緒に参加することを許すことにより(例えば、単一レースで)チーム、またはクランをサポートすることができる。チームメンバーのスコアは、ランキング比較のため集計することができる。
【0154】
他の可能な修正では、トーナメント参加者の脱落と不参加を処理する。プレイヤーが、登録および/または資格認定によりトーナメントに参加するが、トーナメントを完了できない場合(例えば、開始後に脱落するか、または予定時刻に全く姿を現さないなど)、累計スコアが0であるか、または失点を喫したかのようにそのプレイヤーを取り扱うことができる。
【0155】
他の可能な修正では、図12に示されているさまざまな画面および本明細書で説明されている特徴は、ローカルの非ネットワーク接続プレイでも使用できる。例えば、マルチプレイヤートーナメントは、単一のゲーム機でホストされ、さまざまな特徴がそのゲーム機により実装されうる。
【0156】
上述の特徴は、好ましくは、パーソナルコンピュータまたはビデオゲーム機などのコンピューティングデバイス上で実行されうる実行可能命令としてコンピュータソフトウェア内に符号化され、その結果、図示されている画面が表示される。実行可能命令は、1つまたは複数のコンピュータディスク、RAM、CD−ROM、DVD、ゲームカートリッジなどのコンピュータ可読媒体上に格納することができる。さらに、さまざまな特徴が上で説明されているが、それらすべてを同じ実施形態で実施する必要はない。その代わりに、必要に応じてさまざまな組合せおよび部分的組合せを実装することができ、本発明の真の範囲は、特許請求の範囲によってのみ制限されるべきである。
【0157】
本発明の主題は、構造的特徴および/または方法論的動作に固有の言語で説明されているが、添付の特許請求の範囲で定められている本発明の主題は、上で説明されている特定の特徴または動作に必ずしも限定されないことは理解されるであろう。むしろ、上述の特定の特徴および動作は、特許請求の範囲を実装する例示的な形態の例として開示されている。
【図面の簡単な説明】
【0158】
【図1】本明細書で説明されているさまざまな特徴を実装するために使用することができるゲーム機を例示する図である。
【図2】図1に示されているゲーム機において使用できるコンポーネントを例示する図である。
【図3】本明細書で説明されている特徴を実装するためにさまざまなゲーム機、および他の要素がどのように相互接続できるかを例示する図である。
【図4】ゲーム機を使用する例示的なネットワーク構成を示す図である。
【図5A】本明細書で説明されている特徴を実装するために使用することができる例示的なコンピューティングデバイスを示す図である。
【図5B】本明細書で説明されている特徴を実装するための例示的なソフトウェア要素および概念を示す図である。
【図5C】本明細書で説明されている特徴を実装するための例示的なソフトウェア要素および概念を示す図である。
【図5D】本明細書で説明されている特徴を実装するための例示的なソフトウェア要素および概念を示す図である。
【図5E】本明細書で説明されている特徴を実装するための例示的なソフトウェア要素および概念を示す図である。
【図5F】本明細書で説明されている特徴を実装するための例示的なソフトウェア要素および概念を示す図である。
【図5G】本明細書で説明されている特徴を実装するための例示的なソフトウェア要素および概念を示す図である。
【図5H】本明細書で説明されている特徴を実装するための例示的なソフトウェア要素および概念を示す図である。
【図5I】本明細書で説明されている特徴を実装するための例示的なソフトウェア要素および概念を示す図である。
【図5J】本明細書で説明されている特徴を実装するための例示的なソフトウェア要素および概念を示す図である。
【図5K】本明細書で説明されている特徴を実装するための例示的なソフトウェア要素および概念を示す図である。
【図5L】本明細書で説明されている特徴を実装するための例示的なソフトウェア要素および概念を示す図である。
【図5M】本明細書で説明されている特徴を実装するための例示的なソフトウェア要素および概念を示す図である。
【図6】トーナメントを実施するための例示的なプロセスを示す図である。
【図7】トーナメントデータ構造体の一実施例を示す図である。
【図8A】あるタイプのトーナメントに対する例示的なプロセスを示す図である。
【図8B】あるタイプのトーナメントに対する例示的なプロセスを示す図である。
【図8C】ランキングおよび再ランキングの例示的な進行を示す図である。
【図9】代替の種類のトーナメントに対する他の例示的なプロセスを示す図である。
【図10A】例示的なシード決定ブラケット(seeding bracket)とシード決定のプロセスを示す図である。
【図10B】例示的なシード決定ブラケットとシード決定のプロセスを示す図である。
【図11】シード決定ブラケットのもう1つの例を示す図である。
【図12】さまざまなユーザインターフェイス画面がプレイヤーのゲーム機上でどのように使用できるかを示す例示的な関係図である。

【特許請求の範囲】
【請求項1】
ゲーム機トーナメント方法であって、
トーナメント管理者からログイン要求を受信するステップ(601)と、
前記トーナメント管理者に対して、1つまたは複数のトーナメントパラメータを入力するように促す(prompt)ステップ(602)と
を含み、
前記トーナメントパラメータは、前記トーナメントの複数のインスタンスをインスタンス化する(604)ためのスケジュール基準を含み、
各インスタンスは、
a)トーナメント参加者の複数のリモートゲーム機(402)と通信して、前記トーナメントにおける複数のラウンドに対するゲームセッション基準をセットアップし、
b)共通のマルチプレイヤーオンラインゲームセッションに参加している複数のゲーム機からゲームセッション結果を受信し(606)、
c)複数のゲームセッションの結果に基づいて、トーナメント勝利者を決定する(611)
ことを特徴とするゲーム機トーナメント方法。
【請求項2】
前記ログイン要求は、ゲーム機(402)から受信されることを特徴とする請求項1に記載のゲーム機トーナメント方法。
【請求項3】
前記決定するステップは、前記ゲームセッションに参加した第1のゲーム機から受信されたゲームセッション結果と、前記ゲームセッションに参加した第2のゲーム機から受信された結果とを比較するステップ(607)をさらに含むことを特徴とする請求項1に記載のゲーム機トーナメント方法。
【請求項4】
前記比較するステップの結果、比較された前記結果の間に矛盾が識別される場合、前記矛盾を解決するためにアービトレーション(608)を実行するステップをさらに含むことを特徴とする請求項3に記載のゲーム機トーナメント方法。
【請求項5】
前記アービトレーションを実行するステップは、リーダーボードデータ構造体にクエリを実行すること(608)を含み、前記リーダーボードデータ構造体は、安全な伝送を介して、前記複数のゲーム機からゲームセッション結果を受信することを特徴とする請求項4に記載のゲーム機トーナメント方法。
【請求項6】
前記スケジュール基準の結果として、前記トーナメントの第1のインスタンスが完了すると(603)、前記トーナメントの第2のインスタンスが自動的にインスタンス化されることを特徴とする請求項1に記載のゲーム機トーナメント方法。
【請求項7】
前記トーナメントパラメータは、前記共通のマルチプレイヤーオンラインゲームセッションに対して一緒になった後、2人のトーナメント参加者が第2のゲームセッションに対して一緒のグループにまとめられる前に経過していなければならない最短時間を識別するウィンドウ係数をさらに含むことを特徴とする請求項1に記載のゲーム機トーナメント方法。
【請求項8】
前記トーナメントパラメータは、前記トーナメントにおけるゲームセッションについてグループ化されるプレイヤー間のランクの近さを識別するランクギャップをさらに含むことを特徴とする請求項1に記載のゲーム機トーナメント方法。
【請求項9】
前記トーナメントの少なくとも1つのラウンドが完了した後に前記トーナメントのインスタンスに対する新規プレイヤー登録を受け付け、そして、前記トーナメントのその後のラウンドに前記新規プレイヤーを入れるステップをさらに含むことを特徴とする請求項1に記載のゲーム機トーナメント方法。
【請求項10】
前記パラメータは、新規プレイヤー係数を含み、
前記方法は、前記新規プレイヤー係数を使用して、前記トーナメントの前記その後のラウンドのうちの1つまたは複数における前記新規プレイヤーのスコアを調節するステップを含むことを特徴とする請求項9に記載のゲーム機トーナメント方法。
【請求項11】
前記新規プレイヤー係数は、前記新規プレイヤーが前記トーナメントのラウンドに参加する回数が増えるにつれて変化し、
前記新規プレイヤー係数は、前記新規プレイヤーが前記トーナメントパラメータで指定された最小値を超える数のラウンドに参加した後、前記新規プレイヤーにはもはや使用されないことを特徴とする請求項10に記載のゲーム機トーナメント方法。
【請求項12】
トーナメント設定データを参加者のゲーム機にダウンロードし、そして、前記トーナメントのパラメータに従ってゲームセッションをプレイするように前記ゲーム機を自動的に構成するステップをさらに含むことを特徴とする請求項1に記載のゲーム機トーナメント方法。
【請求項13】
前記トーナメントパラメータは、前記トーナメントに対する資格認定期間(903)並びに1つ又は複数の資格認定基準を定義し、
前記方法は、前記資格認定期間にゲーム機から複数のスコアレポートを受信し、そして、どのスコアが前記トーナメントに対して資格認定されるかを識別するステップを含むことを特徴とする請求項1に記載のゲーム機トーナメント方法。
【請求項14】
すでに資格認定されている参加者に、その後に資格認定された参加者に起因して前記すでに資格認定されている参加者の資格認定ステータスが変更された場合にそのことを自動的に通知するステップをさらに含むことを特徴とする請求項13に記載のゲーム機トーナメント方法。
【請求項15】
通知された前記すでに資格認定されている参加者に、変更された前記資格認定ステータスに応じて資格認定試行をリトライする機会を与えるステップをさらに含むことを特徴とする請求項14に記載のゲーム機トーナメント方法。
【請求項16】
第1の複数の資格認定するスコアを前記トーナメントの第1のレベルのインスタンスに割り当て、第2の複数の資格認定するスコアを前記トーナメントの第2のレベルのインスタンスに割り当てるステップ(904)をさらに含み、
前記第1の複数の資格認定するスコアは、前記第2の複数の資格認定するスコアよりも高いランクを有することを特徴とする請求項14に記載のゲーム機トーナメント方法。
【請求項17】
トーナメント設定ファイルに前記トーナメントパラメータを格納するステップをさらに含み、
前記トーナメント設定ファイルは、前記トーナメントにおける複数のラウンドに対する異なるゲームセッションパラメータを含むことを特徴とする請求項1に記載のゲーム機トーナメント方法。
【請求項18】
トーナメント方法であって、
トーナメント参加者のための複数のゲーム機(402)からトーナメント登録を受信するステップと、
複数の登録された前記トーナメント参加者をランク付けするステップ(802)と、
前記トーナメントの第1のラウンドのゲームセッションへの参加のために、ランク付けされた前記トーナメント参加者の部分集合を順次グループ分けするステップと、
前記第1のラウンドにおけるパフォーマンスに基づいて、前記トーナメント参加者を再ランク付けするステップと、
前記トーナメントの第2のラウンドにおけるゲームセッションにおいて、再ランク付けされた前記トーナメント参加者の部分集合を順次グループ分けするステップと
を含み、
トーナメント参加者をあるグループに追加するか否かを決定するときに、トーナメント参加者がそのグループのいずれかのメンバーとゲームセッションにおいて最後にプレイした以降にウィンドウ係数の時間が経過したか否かを確認することを特徴とする方法。
【請求項19】
前記ウィンドウ係数は、ゲームセッションの数を識別することを特徴とする請求項18に記載の方法。
【請求項20】
リーダーボード資格認定トーナメント方法であって、
ゲームプログラムに対するチャレンジ定義をポストするステップ(902)であって、前記チャレンジ定義は、トーナメントの資格認定を受けるための複数のゲームセッション基準を含むステップと、
前記トーナメントの資格認定を受けようとするプレイヤーの複数のゲーム機からゲームセッション結果を受信するステップ(903)と、
受信された前記ゲームセッション結果をランク付けし、そして、プレイヤーにそのプレイヤーの現在のランクを知らせるステップと、
その後のプレイヤースコアの結果として以前に資格認定しているスコアが資格認定していないスコアとなる場合に、ゲーム内(in−game)通知をプレイヤーに送信し、そして、通知された前記プレイヤーが資格認定をリトライすることを許すステップと、
前記資格認定期間を締め切り、前記資格認定された参加者を用いて前記トーナメントを実施するステップと
を含むことを特徴とするリーダーボード資格認定トーナメント方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5A】
image rotate

【図5B】
image rotate

【図5C】
image rotate

【図5D】
image rotate

【図5E】
image rotate

【図5F】
image rotate

【図5G】
image rotate

【図5H】
image rotate

【図5I】
image rotate

【図5J】
image rotate

【図5K】
image rotate

【図5L】
image rotate

【図5M】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8A】
image rotate

【図8B】
image rotate

【図8C】
image rotate

【図9】
image rotate

【図10A】
image rotate

【図10B】
image rotate

【図11】
image rotate

【図12】
image rotate


【公表番号】特表2009−526603(P2009−526603A)
【公表日】平成21年7月23日(2009.7.23)
【国際特許分類】
【出願番号】特願2008−555239(P2008−555239)
【出願日】平成19年1月20日(2007.1.20)
【国際出願番号】PCT/US2007/001612
【国際公開番号】WO2007/097850
【国際公開日】平成19年8月30日(2007.8.30)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.Bluetooth
【出願人】(500046438)マイクロソフト コーポレーション (3,165)
【Fターム(参考)】