(57)【要約】【課題】開発ツールとビデオゲームプラットフォームまたは動作中のゲームとの間の通信を向上させるためのビデオゲーム開発システム。【解決手段】このシステムは、コンピュータまたはハブサーバ上で動作し、第１、第２のビデオゲームプラットフォームと通信すべくリンクした通信ハブモジュールを含み、通信ハブモジュールのゲームプラットフォームとのメッセージの送受信を可能とする。通信ハブモジュールがアクセス可能なメモリはゲームプラットフォームとの通信を制御する通信データセットまたはライブラリを保存する。このシステムにはビデオゲーム開発ツールが提供され、通信ハブモジュールと通信すべくリンクされている。開発ツールはハブモジュールとの通信を定義するクライアント側通信ライブラリに基づきフォーマットされたメッセージを送信する。ハブモジュールは送信されたメッセージを受信し、受信したメッセージからプラットフォーム通信ライブラリに基づきゲームプラットフォームメッセージを生成し、ゲームプラットフォームメッセージを第１、第２のビデオゲームプラットフォームへ転送する。【選択図】  なし【特許請求の範囲】
【請求項１】
ビデオゲーム開発システムにおける通信方法であって、
通信ネットワークにリンクしたコンピュータ上に通信ハブアプリケーションを提供するステップと、
通信ハブアプリケーションを用いて、開発ワークステーション上で動作するゲーム開発ツールからメッセージを受信するステップと、
ビデオゲーム開発システムにおいて、受信したメッセージのメッセージ受信者を識別するステップと、
識別されたメッセージ受信者の各々に対応する通信ライブラリに基づき、受信したメッセージを処理し、１組のメッセージを形成するステップと、メッセージは、識別されたメッセージ受信者の各々に関連した複数の構成により構成されていることと、
通信ハブアプリケーションの動作するコンピュータから、前記識別されたメッセージ受信者へ、受信者特異的なメッセージを送信するステップと、を含む方法。
【請求項２】
前記ゲーム開発ツールから受信したメッセージは、１組のハブアプリケーション通信データによって定義される構成を有し、受信したメッセージの前記構成は、受信者特異的なメッセージの構成のうちの少なくとも１つと異なり、前記１組のハブアプリケーション通信データは、前記ゲーム開発ツールによるアクセスのために、開発ワークステーション上のメモリに保存される、請求項１に記載の方法。
【請求項３】
メッセージ受信者を識別するステップは、１組のビデオゲームプラットフォーム上で動作するビデオゲームのインスタンスを含む、１組のクライアントのセットを登録するステップを含むとともに、更に、受信したメッセージ中のゲームデータコンテンツから、登録したクライアントのサブセットを決定し、メッセージ受信者として識別するステップを含み、前記クライアントのセットは、受信したメッセージ中のゲームデータコンテンツのゲームデータに対する修正によって影響を受けるビデオゲームインスタンスのサブシステムを含む、請求項１に記載の方法。
【請求項４】
ビデオゲーム開発システムにおいて動作する第２のゲーム開発ツールから第２のメッセージを受信するステップを更に含み、前記ゲーム開発ツールおよび第２のゲーム開発ツールから受信したメッセージは、１組のハブアプリケーション通信データによって定義される１つの構成を有し、受信したメッセージの前記構成は、受信者特異的なメッセージの構成のうちの少なくとも１つと異なり、第２の受信したメッセージは、開発ワークステーション上で動作する前記ゲーム開発ツールを含む一連のアドレスを含む、請求項１に記載の方法。
【請求項５】
ゲームの修正に関して開発者にフィードバックを供給するビデオゲーム開発システムであって、
ゲームエンジンを有する第１および第２のビデオゲームプラットフォームと通信を行うようにリンクしたハブサーバ上で動作する、通信ハブモジュールと、
コンピュータシステム上で動作し、前記通信ハブモジュールと通信を行うようにリンクしたビデオゲーム開発ツールと、前記ビデオゲーム開発ツールは、ビデオゲームデータの修正を実行するように動作可能であることと、
ビデオゲーム開発ツールに関連しており、ビデオゲームデータの修正後に前記通信ハブモジュールへオーサリングメッセージを送信するように動作するオーサリングモジュールと、前記オーサリングメッセージは、ビデオゲームデータに対する前記修正に基づくコンテンツを含むことと、を含み、
前記通信ハブモジュールは、オーサリングメッセージからゲームデータ更新メッセージを生成して、同ゲームデータ更新メッセージを第１および第２のビデオゲームプラットフ
ォームへ転送し、
第１および第２のビデオゲームプラットフォームのゲームエンジンは、ビデオゲームデータの前記修正を含むゲームデータを用いてビデオゲームを動作させる、システム。
【請求項６】
ゲームエンジンは異なる複数の構成を有し、第１のビデオゲームプラットフォームへ送信されるゲームデータ更新メッセージのフォーマットは、第２のビデオゲームプラットフォームへ送信されるゲームデータ更新メッセージのフォーマットと異なる、請求項５に記載のシステム。
【請求項７】
前記通信ハブモジュールは、オーサリングメッセージを処理してゲームデータ更新メッセージの受信者のリストを決定し、受信者のリストは、前記コンピュータシステム上で動作する別のビデオゲーム開発ツール、または前記通信ハブモジュールにリンクした別のコンピュータシステムを含み、前記別のビデオゲーム開発ツールは、ビデオゲームデータの前記修正を提供する、請求項６に記載のシステム。
【請求項８】
ビデオゲームデータの前記修正は、ビデオゲームのゲームロジックに対する変更を含み、ビデオゲームデータの前記修正は、ビデオゲームデータの複数の修正を含む、請求項５に記載のシステム。
【請求項９】
共同的なゲームオーサリングを行うビデオゲーム開発システムであって、
１組のゲームデータに基づきビデオゲームを動作させるゲームエンジンを有するビデオゲームプラットフォームと、
ビデオゲームプラットフォームと通信を行うようにリンクした通信ハブモジュールと、
前記通信ハブモジュールと通信を行うようにリンクした第１のビデオゲーム開発ツールと、第１のビデオゲーム開発ツールは、前記１組のゲームデータを修正し、前記１組のゲームデータに対する修正に基づくコンテンツを含むオーサリングメッセージを送信するように動作することと、
前記通信ハブモジュールと通信を行うようにリンクした第２のビデオゲーム開発ツールと、第２のビデオゲーム開発ツールは、前記１組のゲームデータを修正し、前記１組のゲームデータに対する修正に基づくコンテンツを含むオーサリングメッセージを送信するように動作することと、を含み、
前記通信ハブモジュールは、オーサリングメッセージからゲームデータ更新メッセージを生成して、同ゲームデータ更新メッセージをビデオゲームプラットフォームへ転送し、
ビデオゲームプラットフォームのゲームエンジンは、前記ゲームデータ更新メッセージに基づき更新した前記１組のゲームデータを用いてビデオゲームを動作させる、システム。
【請求項１０】
第１および第２のビデオゲーム開発ツールが同時にオーサリングメッセージを送信するように動作することによって、ビデオゲームを動作させるために用いられる前記１組のゲームデータは、第１および第２のビデオゲーム開発ツールの両方からの修正を含む、請求項９に記載のシステム。
【請求項１１】
前記通信ハブモジュールは、オーサリングメッセージを処理してゲームデータ更新メッセージの受信者のリストを決定し、受信者のリストは、第１および第２のビデオゲーム開発ツールのうちの少なくとも一方を含み、第１および第２のビデオゲーム開発ツールのうちの前記少なくとも一方は、第１および第２のビデオゲーム開発ツールのうちの他方によって作成された前記１組のゲームデータの修正を含むユーザインタフェースを提供する、請求項１０に記載のシステム。
【請求項１２】
ゲームプラットフォームへ送信されるゲームデータ更新メッセージは、ゲームプラット
フォームに関連した２つの異なる通信データのセットにしたがって前記通信ハブモジュールによって構成され、第１および第２のビデオゲーム開発ツールは各々、前記ゲームデータのセットの別個の部分を修正するように独立して動作する、請求項１０に記載のシステム。
【請求項１３】
ビデオゲーム開発におけるプレイテスト方法であって、
プレイテストセッション中、ビデオゲームプラットフォーム上で動作するビデオゲームの複数のインスタンスを提供するステップと、
ビデオゲームのインスタンスをプレイする１組のプレイヤに対応するビデオゲームプラットフォームから、ゲームプレイデータを送信するステップと、
コンピュータシステム上で動作する統計収集ツールを用いて、送信されたゲームプレイデータを収集するステップと、
前記統計収集ツールを用いて、収集したゲームプレイデータを処理し、１組のプレイテスト統計結果を生成するステップと、
プレイテストセッション中、モニタ上に１組のプレイテスト統計結果を表示することによって、ビデオゲームの開発者に対し、プレイテストセッション中のゲームプレイ結果についてのフィードバックを提供するステップと、を含む方法。
【請求項１４】
ゲームプラットフォームは、メッセージプロトコルを定義する複数の通信ライブラリを用いて、ネットワークデバイスと通信を行うことと、
送信されたゲームデータを受信し、受信したゲームデータを単一の形態により統計収集ツールへ転送するように、通信ハブアプリケーションを動作させるステップと、を更に含む、請求項１３に記載の方法。
【請求項１５】
前記１組のプレイヤにおけるプレイヤからプレイヤデータを集めるステップと、集めたプレイヤデータのうちの少なくとも一部は、前記１組のプレイテスト統計結果とともにモニタ上に表示されることと、
ビデオゲームプラットフォームによって使用されるゲームデータに対する修正を生成してビデオゲームのインスタンスを提供するようにゲーム開発ツールを動作させるとともに、対応するビデオゲームのインスタンスを変更するために、プレイテストセッション中、生成した前記修正を１組のビデオゲームプラットフォームへ送信するステップと、
生成した前記修正の送信後、ゲームプレイデータの送信と、前記１組のプレイテスト統計結果の収集、処理、および表示とを繰り返すステップと、を更に含む請求項１０に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般に、ビデオゲーム開発、および開発ツールとビデオゲームプラットフォームとの間の通信に関する。より詳細には、本発明は、ビデオゲーム開発ツールと複数のビデオゲームプラットフォームとの間など、ビデオゲーム開発システムまたはネットワークにおけるデータ転送および通信を容易かつ簡単にするためのシステムおよび方法に関する。
【背景技術】
【０００２】
ビデオゲーム市場は、より小規模のニッチ市場から数十億ドルの市場へ移行してきた。ゲームプレイヤの数が増え、層が拡大を続けるにつれ、新しいビデオゲームの需要が急速に高まっている。また、ビデオゲームは１つか２つのゲームプラットフォーム用に作成されるものでしかなかったが、今日では、スタンドアロン型ゲームコンソール、コンピュータ、携帯ゲーム機、および他の電子機器（たとえば、携帯電話機、デジタル音楽再生機、および携帯情報端末（ＰＤＡ））を含む多数のプラットフォームに対して販売可能なビデオゲームが求められている。その結果、ゲーム開発者の間には、増大する需要を適時効率的に満たすビデオゲームを作成するための、また多くの場合、これらのゲームを様々なプラットフォームまたは装置上で所望どおりに動作可能とするための、激しい競争が存在する。
【０００３】
大規模な商用ビデオゲームを作成するには、通常、大きな開発チームで１〜３年の開発期間と、数百万ドルの費用とが必要である。通常の開発チームには、作成を監督するプロデューサや、ゲームデザイナ、アーティスト、プログラマ、レベルデザイナ、サウンドエンジニア、およびテスタが含まれ、チームのメンバが複数の役割を担うこともある。開発チームは共同的（コラボレーティブ）に作業を行い、ゲームコンテンツ（又はゲームアセット）およびゲームコードを作成する。ゲームコンテンツおよびゲームコードをまとめたものがゲームアプリケーションであると考えられ、ゲームアプリケーションをゲームエンジンが特定のゲームプラットフォーム上で動作させることで、プレイヤに対しゲームが提供される。
【０００４】
たとえば、プログラマは新しいソースコードを作成し、アーティストはゲームアセット（キャラクタまたは背景オブジェクト、カラーリングスキーム、テクスチャ、ゲーム要素の３次元モデルなど）を開発し、サウンドエンジニアは音響効果および音楽を開発し、ライタはキャラクタのダイアログを作成し、レベルデザイナは目を引く進んだレベルを作成する。これらのチームメンバをサポートするために、今日では、数々のゲーム開発ツール（Ｍｉｃｒｏｓｏｆｔ  ＸＮＡ、Ａｕｔｏｄｅｓｋ，Ｉｎｃ．社製のＭａｙａなど）が利用可能であり、ゲームコンテンツの設計および作成キャラクタの作成やモデリングなど）や、さらにはゲームロジックの決定（キャラクタがどの程度高くジャンプするか、キャラクタがゲームイベントに基づきどれだけ寿命（ライフ）を得るか失うか、キャラクタまたはゲーム要素がどの程度速く移動するかなど）において使用される。しかし、通常はエンジン一式を購入する必要があるため、大抵のゲーム開発者は自身のツールを構成しようとする。また、各ビデオゲームコンソールまたはプラットフォームの開発者は、通常、ゲーム開発者に利用可能なソフトウェア開発キット（すなわち、ＳＤＫまたはデヴキット（ｄｅｖｋｉｔ））を作成する。各ＳＤＫには、新しいビデオゲームの作成に有用なアプリケーションまたはツールが含まれる。また、各ＳＤＫには、ゲームプラットフォーム（たとえば、開発者がテストを行う、すなわち、新しいキャラクタ、アセット、ゲームパラメータなどがゲーム中でいかに働くかを確認するために使用する、現在開発中のゲームまたはビルドしたゲームを動作させるプラットフォーム）と通信を行うための通信ライブラリお
よび／またはインタフェース（たとえば、プラットフォーム通信データ）も含まれる。
【０００５】
現在、ビデオゲーム産業において使用されている開発ツール同士の間で通信が行われることは稀であり、通信が行われる場合にも、通常、ツールは１対１接続により通信を行い機能する。詳細には、ツールは、開発ワークステーション上で動作しているツールとゲームプラットフォームとの間の接続を用いて、特定のビデオゲームプラットフォーム上で動作しているゲームと通信を行う。たとえば、開発ツールはワークステーション上にプラットフォームクライアントを生成して、動作中のゲームとのインタフェースを提供場合もあり、それらの通信をサポートする通信ソケットの管理を求められる場合もある。各ゲームプラットフォームは、通常、異なるインタフェース・通信プロトコルを利用する（または、少なくともいくらかの相違点を有する）ので、各開発ツールは、そのツールとともに用いられ得る各ゲームプラットフォームとの通信方法を理解することが求められる。現在、ゲーム開発者は複数のゲームプラットフォーム上での動作が求められるビデオゲームに対し作業を行う場合があり、また、各ゲームプラットフォームのゲームが同時にリリースされることが所望（または要求）されるので、各プラットフォームの開発は並行して行われることが多い。
【０００６】
ビデオゲーム産業が直面している別の問題は、新しいビデオゲームに対し作業を行う開発チームメンバ間の共同的な活動をいかにサポートするかである。通常、ゲームコンテンツ（たとえば、ゲームデータおよび／またはゲームアセット）は大きく複雑であるので、ゲームのある部分に対して同時に作業を行うことができるのは、１人のアーティスト、デザイナ、または他の開発チームメンバだけである。たとえば、あるゲームレベルのテクスチャまたは材質（マテリアル）に対し作業を行うアーティストは、自身の作業を完了するまで、または少なくとも新しいゲームデータを保存してゲームの再ビルドを可能とするまでは、そのレベルにおける一部のゲームオブジェクトもしくは要素の配置、または該レベルにおける場所／位置の調整または微調整を行おうとするデザイナを待機させる。このような逐次的な開発活動は新しいビデオゲームを作成する計画を延長させることが多いため、本産業界ではビデオゲーム開発期間を何ヶ月もの期間から数ヶ月間へ短縮すること（たとえば、新しい映画または流行に関係したゲームに対する顧客要求に応じること）が求められている。
【０００７】
ビデオゲーム産業が直面している更に別の問題は、プレイテストである。プレイテストは、ビデオゲームが市場に出る準備が整っているか（バグまたは不具合は解決されているか、ゲームプレイがより楽しくなるようにロジックおよびゲームパラメータ／設定は調整されているか）についての決定に用いられることが多い。テストはプレイ準備の整った部分があるとすぐに開始される場合もあるが、開発処理の後期に開始されることが多く、相当量のゲームがテスタによってプレイされる。プレイテストは、一般に１つ以上のターゲットプラットフォーム上でビデオゲームをプレイする複数の人またはテスタを要する。通常のクローズド（すなわち、内部的な）プレイテストにおいてはテスタ群が選択され、ビデオゲームの所定の部分をプレイすることが求められる。プレイが完了すると、アンケートおよび開発チームメンバ（テストした部分の設計に携わった人）とのインタビューまたはコミュニケーションにより、プレイ体験がキャプチャまたは文書化される。幾つかの場合においては、ビデオ記録によりテスタのプレイ体験が文書化される。各プレイヤのセッションからゲーム情報または統計をキャプチャするために、記録施設を備えるプレイテストラボもある。こうした情報は、開発チームが後に（またはオフラインで）評価を行うために保存される。このため、プレイテストは一般に、ゲームのテストした部分についてプレイテスト結果のスナップショットをキャプチャする、静的処理である。プレイテスト結果は後に分析され、ビデオゲームに対する変更を行うのに使用される。変更をテストする場合には、修正したビデオゲームについて別のプレイテストを行うために、プレイテスタの別の一群を集める。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
したがって、ビデオゲーム開発時の通信をサポートするための改善された方法およびシステムがなお必要とされている。このような方法およびシステムは、ゲーム開発ツールと様々なビデオゲームプラットフォームとの間の通信をサポートおよび簡素化することが好ましい。
【０００９】
更に、複数の開発者または作成者によってビデオゲームを共同的にオーサリングする改善された方法がなお必要とされている。このような方法やシステムは、既存の（および開発される）ビデオゲーム開発ツールの使用をサポートし、新しいゲームアセットの作成、および以前にビルドしたビデオゲームの修正に開発者が要する時間を削減することが好ましい。
【００１０】
更に、複数のビデオゲームをプレイテストする改善された方法がなお必要とされている。このような方法やシステムは、既存の（および開発される）ビデオゲーム開発ツールの使用をサポートし、新しいゲームアセットの作成、および以前にビルドしたビデオゲームの修正に開発者が要する時間を削減することが好ましい。さらに、発明者らは、プレイテストにおけるテスタ間の大きな格差の１つはビデオゲームの技能であることを認識している。このため発明者らは、技能の格差によってプレイテスト結果が歪められないように、ゲームの修正が行われた後、同じテスタにビデオゲームまたはその一部をプレイさせる、プレイテスト方法およびシステムを提供することが望ましいと確信している（たとえば、１つの組のプレイテスタは、ゲーム（または特定の動作／タスク／機能／操作）を一層難しくすることを開発者に動機付けるような、高い平均技術レベルを有しており、第２の（後の）組のプレイテスタは、修正されたゲームが難しすぎてあまり楽しめない（あるいは反対に簡単で楽しい）ということを示すような、低い平均技術レベルを有する）。
【課題を解決するための手段】
【００１１】
本発明は、ビデオゲーム開発ツールとビデオゲームプラットフォーム（またはそうしたプラットフォーム上で動作するゲーム）との間の通信を容易にかつ簡単にするための方法およびシステムを提供することによって、上記の問題を解決する。ビデオゲームプラットフォームの知識および他のビデオゲーム開発ツールの存在を抽出する、中央ハブ通信アプリケーションが提供される。ビデオゲーム開発ツールは、意図される受信者、およびその通信規則またはプロトコルに関する特定の知識を要さず、任意のゲームプラットフォームとの通信、およびビデオゲーム開発ツール同士の相互の通信を可能にする。この目的のため、中央ハブ通信アプリケーションまたはモジュールは、ビデオゲーム開発システムまたはネットワークの各ビデオゲームプラットフォームとの接続方法および通信方法についてのデータまたは知識へのアクセスを有する（たとえば、通信データセットまたはライブラリとして考えられるプラットフォーム通信ライブラリ（ゲームプラットフォームＳＤＫなどにより提供されるもの）へのアクセスを有する）。これとは対照的に、ビデオゲーム開発ツールは、ツールが通信ハブアプリケーションとの通信を行うことを可能にするクライアント側通信ライブラリ（たとえば、開発ワークステーションまたはコンピュータのメモリ内のライブラリ、またはツールに組み込まれているライブラリへのアクセス）のみを有する。ハブアプリケーションはツールが送信したメッセージを受信し、必要に応じてこれらのメッセージをビデオゲームプラットフォーム通信データセットに基づき処理してから、それらのメッセージを適切な受信者／クライアント（たとえば、１つ以上のプラットフォーム上で動作するビデオゲームを、別の開発ツールまたは対象となる他のクライアント）へ転送する。
【００１２】
より詳細には、ビデオゲーム開発ツールは、第１および第２のビデオゲームプラットフ
ォーム（たとえば、２つ以上の会社に分散した２つ以上のプラットフォーム）と通信を行うために提供される。このゲームプラットフォームは、プラットフォームおよびそうしたプラットフォーム上で動作するゲームとのメッセージその他の通信を定義する、２つの異なる通信ライブラリを提供する。システムは、ハブサーバまたは通信サーバ上などシステムにおいて動作する、通信ハブモジュールを含む。このハブサーバは、通信ハブモジュールがゲームプラットフォームへメッセージを転送し、ゲームプラットフォームからメッセージを受信することを可能とするように、第１および第２のビデオゲーム開発プラットフォームと通信を行うようにリンクされている。このシステムには、通信ハブモジュールによってアクセス可能であり、第１および第２の通信データセット（たとえば、システムへリンク可能な第１および第２の、すなわち、異なるコードライブラリ）を保存する、モリまたはデータストレージも含まれる。ビデオゲーム開発ツールは、コンピュータシステム（たとえば、開発ワークステーション、または他の計算デバイスもしくは電子デバイス）上で動作するシステムに提供される。この開発ツールは、通信ハブモジュールと通信を行えるようにリンクされている。この点において、開発ツールは、通信ハブモジュールと通信を行うための通信プロトコルなどの情報を供給するクライアント側通信ライブラリに基づき構成またはフォーマットされたメッセージを、送信する。動作時、通信ハブモジュールは開発ツールから送信されたメッセージを受信し、受信したメッセージから、適切な第１および第２の通信データセットに基づきゲームプラットフォームメッセージを生成し、ゲームプラットフォームメッセージを第１および第２のビデオゲームプラットフォームのうちの少なくとも一方へ転送する。
【００１３】
ビデオゲーム開発ツールからのメッセージは、第１および第２のビデオゲームプラットフォーム上で動作するビデオゲームのゲームデータを含むことが多い。このような場合、ゲームプラットフォームメッセージは、ハブモジュールから第１および第２のビデオゲームプラットフォームの両方へ転送される。ハブモジュールは、ツールからの各メッセージを処理して、自身が作成する各ゲームプラットフォームメッセージの受信者のリストの決定または識別を行ってもよい。受信者のリストは、ツールメッセージ中に供給される一連のアドレスに基づいてもよい。あるいは（たとえば、特定のロジック、ゲームアセット、ゲームパラメータ／変数値など、特定のゲームデータの対象の受信者に対する）メッセージコンテンツに基づいてもよい。ゲーム開発システムは、ハブモジュールにリンクした追加のゲーム開発ツールを含むことが多い。また、これらのツールが一連のアドレスにより識別されるとき、またはメッセージコンテンツに基づき通信ハブモジュールによって受信者リストに配置されるとき（、これらのツールが第１の（または元の）ゲームツールからメッセージを受信する場合もある（たとえば、あるゲームデータが別のツールによって修正されるとき、別のツールが対象となる場合がある）。このように、開発システムにおいて、ツール対ツールの通信がハブモジュールを介して実行または提供される。ビデオゲームツールからメッセージを受信するために、メッセージ受信者のリストは、ハブモジュールに登録されたクライアントリストからハブモジュールが決定してもよい。更に、登録されたクライアントは、一方または両方のゲームプラットフォーム上で動作するビデオゲームのサブシステムを含んでもよい。開発ツールは、送信されたメッセージをハブモジュールを介して両方のプラットフォームに送信するために、１つの通信ソケットを用いてもよい。一方、ハブモジュールはこれらのゲームプラットフォームに対する複数の通信ソケットまたはクライアントを維持することによって、ゲームプラットフォームとの通信インタフェースを部分的に提供するように（たとえば、第１および第２の通信データセットに供給されたプロトコルまたは通信規則／定義を実施するように）機能してもよい。
【００１４】
本発明は一態様によると、少なくとも第１および第２の通信ライブラリに基づき、少なくとも第１および第２のビデオゲームプラットフォームと通信を行うビデオゲーム開発システムを提供する。このシステムは、第１および第２のビデオゲームプラットフォームと通信を行うようにリンクしたハブサーバ上で動作する通信ハブモジュールと；第１および
第２の通信ライブラリを保存する通信ハブモジュールによってアクセス可能なメモリと；コンピュータシステム上で動作し、通信ハブモジュールと通信を行うようにリンクしたビデオゲーム開発ツールとを含む。ビデオゲーム開発ツールは、通信ハブモジュール用の通信プロトコルを供給するクライアント側通信ライブラリに基づき構成されたメッセージを送信する。通信ハブモジュールは、送信されたメッセージを受信し、第１および第２の通信ライブラリの少なくとも１つに基づく受信メッセージから、ゲームプラットフォームメッセージを生成し、ゲームプラットフォームメッセージを第１および第２のビデオゲームプラットフォームの少なくとも一方へ転送する。一実施形態において、ビデオゲーム開発ツールによって送信されたメッセージは、第１および第２のビデオゲームプラットフォーム上で動作するビデオゲームのゲームデータを含んでもよく、ゲームプラットフォームメッセージは、第１および第２のビデオゲームプラットフォームの両方へ転送されてもよい。通信ハブモジュールは、ビデオゲーム開発ツールによって送信された各メッセージを処理して、各ゲームプラットフォームメッセージの受信者のリストを決定してもよい。受信者のリストは、ビデオゲーム開発ツールによって送信されたメッセージに供給される一連のアドレスに基づき決定されてもよい。ビデオゲーム開発システムは、通信ハブモジュールにリンクした第２のビデオゲーム開発ツールを更に含んでもよく、第２のビデオゲーム開発ツールは、受信したメッセージ中のゲームデータに基づき、一連のアドレスにより指定されてもよく、受信者のリストに配置されてもよい。受信者のリストは、ビデオゲーム開発ツールからのメッセージを受信するために、通信ハブモジュールに登録されたクライアントリストから決定されてもよく、登録されたクライアントは、第１および第２のビデオゲームプラットフォーム上で動作するゲームのサブシステムを含んでもよい。ビデオゲーム開発ツールは、送信されたメッセージを通信ハブモジュールを介して第１および第２のビデオゲームプラットフォームへ送信するために、１つの通信ソケットを使用してもよい。通信ハブモジュールは、第１および第２のビデオゲームプラットフォーム用の通信ソケットを維持すること、並びに第１および第２の通信ライブラリよりプロトコルを実装することを含む通信インタフェースを、ビデオゲーム開発ツールと第１および第２のビデオゲームプラットフォームの間に提供してもよい。
【００１５】
別の態様によると、本発明は、ビデオゲーム開発システム用の通信方法を提供する。この方法は、通信ネットワークにリンクしたコンピュータ上に通信ハブアプリケーションを提供するステップと；通信ハブアプリケーションを用いて、開発ワークステーション上で動作するゲーム開発ツールからメッセージを受信するステップと；ビデオゲーム開発システムにおいて、受信したメッセージのメッセージ受信者を識別するステップと；識別されたメッセージ受信者の各々に対応する通信ライブラリに基づき、受信したメッセージを処理し、１組の受信者特異的なメッセージを形成するステップと、受信者特異的なメッセージは、識別されたメッセージ受信者の各々に関連した複数の構成により構成されていることとを含む。この方法は、通信ハブアプリケーションの動作するコンピュータから、識別されたメッセージ受信者へ、受信者特異的なメッセージを送信するステップを更に含む。一実施形態において、ゲーム開発ツールから受信したメッセージは、１組のハブアプリケーション通信データによって定義される構成を有してもよく、受信したメッセージの構成は、受信者特異的なメッセージの構成のうちの少なくとも１つと異なってもよい。該１組のハブアプリケーション通信データは、ゲーム開発ツールによるアクセスのために、開発ワークステーション上のメモリに保存されてもよい。メッセージ受信者を識別するステップは、１組のビデオゲームプラットフォーム上で動作するビデオゲームのインスタンスを含む１組のクライアントのセットを登録するステップを含んでもよく、更に、受信したメッセージ中のゲームデータコンテンツから、登録したクライアントのサブセットを決定し、メッセージ受信者として識別するステップを含んでもよい。クライアントのセットは、受信したメッセージ中のゲームデータコンテンツのゲームデータに対する修正によって影響を受けるビデオゲームインスタンスのサブシステムを含んでもよい。この方法は、ビデオゲーム開発システムにおいて動作する第２のゲーム開発ツールから第２のメッセージを
受信するステップを更に含んでもよい。ゲーム開発ツールおよび第２のゲーム開発ツールから受信したメッセージは、１組のハブアプリケーション通信データによって定義される１つの構成を有してもよく、受信したメッセージの構成は、受信者特異的なメッセージの構成のうちの少なくとも１つと異なってもよい。第２の受信したメッセージは、開発ワークステーション上で動作するゲーム開発ツールを含む一連のアドレスを含んでもよい。
【００１６】
別の態様によると、本発明は、ビデオゲームを開発するシステムを提供する。このシステムは、ビデオゲームの動作している少なくとも２つのビデオゲームプラットフォームからなる組を含む。各ビデオゲームプラットフォームは、通信ライブラリによって定義される形態によりメッセージを受信できるように適合されている。このシステムは、ビデオゲームプラットフォームに通信インタフェースを提供する中央ハブアプリケーションを動作させるサーバと；中央ハブアプリケーションと通信を行うようにリンクし、１つの形態によりゲーム開発メッセージを生成するように動作する複数のゲーム開発ツールと、この形態は、中央ハブアプリケーションによって許可されること、および通信ライブラリによって定義される形態と異なることとを更に含む。中央ハブアプリケーションは、ゲーム開発メッセージを受信し、メッセージを１つまたは複数のビデオゲームプラットフォーム上で動作するビデオゲームへ転送する。転送されたメッセージは各々、１つまたは複数のビデオゲームプラットフォームに関連した通信ライブラリによって定義される形態である。一実施形態において、中央ハブアプリケーションは、受信したゲーム開発メッセージを処理して、１つまたは複数のビデオゲームプラットフォーム上で動作するビデオゲームを含む受信者のリストの識別を行ってもよい。識別は、受信したゲーム開発メッセージ中のコンテンツを決定することによって、更に中央ハブアプリケーションの登録したクライアントリストと比較することによって行われてもよい。コンテンツは、１つまたは複数のビデオゲームプラットフォーム上で動作するビデオゲームの動作に影響するゲームデータを含んでもよい。ゲーム開発メッセージの形態は、ゲーム開発ツールの動作している１つまたは複数のコンピュータ上のメモリに供給されるクライアント側ハブ通信ライブラリに定義されてもよい。中央ハブアプリケーションは、メッセージの少なくとも１部をゲーム開発ツールのうちの１つへ転送してもよい。
【００１７】
一態様によると、ビデオゲーム開発システムには、複数のゲームプラットフォームまたはコンソール上で作業を行う開発者に対する向上した、すなわち、「ライブの」フィードバックが提供される。このシステムは、ゲームエンジン（たとえば、異なるプラットフォームメーカが供給可能なゲームエンジンなど様々な構成のゲームエンジン）を用いてビデオゲームを動作させる第１および第２のビデオゲームプラットフォームとデジタル通信を行うようにリンクしたハブサーバ上で動作する通信ハブモジュールを含む。ビデオゲーム開発ツールは、コンピュータシステムまたはワークステーションにおいて動作し、また、通信ハブモジュールとリンクしている。（あるいは、ツールはサードパーティもしくは機能を拡張する他の既存のツールに、プラグインとして設けられてもよい）。開発ツールは、ゲームデータまたはアセットの変更および追加を含むビデオゲームデータの修正を実行するように、ユーザ／開発者の入力に応じて動作する。オーサリングモジュールは、ビデオゲーム開発ツールに関連しており、ビデオゲームデータの修正後に通信ハブモジュールへオーサリングメッセージを送信するように動作する。オーサリングメッセージは、通常ゲームデータの修正を反映するコンテンツを含み、ハブモジュールが許容／受信するクライアント側通信ライブラリに基づきフォーマットされる。ハブモジュールは、オーサリングメッセージからゲームデータ更新メッセージを生成し、これらのメッセージを第１および第２のビデオゲームプラットフォームへ転送する。プラットフォーム上のゲームエンジンはその後、ゲームデータの修正を用いて動作中のビデオゲームを変更するように動作し、開発ツールを用いて自身が行った変更についての視覚的／聴覚的フィードバック指示を、開発者に与える。修正は、ビデオゲームのゲームロジックに対する変更を含んでもよく、多くの場合、ビデオゲームデータの複数（たとえば、少なくとも２つ）の修正（ゲーム
アセットに対する変更など）、たとえば、オブジェクトに対する変更（場所、サイズ、テクスチャなど）、またはパラメータを定義するゲームに対する変更（照明レベルなど）を含んでもよい。
【００１８】
本発明は他の態様によると、ビデオゲーム開発用のオーサリング方法を提供する。この方法は、ビデオゲームプラットフォーム上で動作するビデオゲームの１組のゲームデータを修正するように、コンピュータ上で動作するゲーム開発ツールを動作させるステップと；ゲーム開発ツールの動作に応じて、修正した組のゲームデータに基づくコンテンツを有するオーサリングメッセージを送信するステップと；修正した組のゲームデータに基づき、動作中のビデオゲームを修正するように、ビデオゲームプラットフォームを動作させるステップとを含む。一実施形態において、修正した組のゲームデータは、ゲームロジックに対する変更を含む。修正した組のゲームデータは、ゲームアセットの複数の修正を含んでもよい。ビデオゲームは、ビデオゲームプラットフォームとは異なる追加のビデオゲームプラットフォーム上で動作してもよい。また、この方法は、ビデオゲームプラットフォームの動作と同時に、修正した組のゲームデータに基づき動作しているビデオゲームを修正するように、追加のビデオゲームプラットフォームを動作させるステップを更に含んでもよい。この方法は、ゲーム開発ツールと通信を行うようにリンクしたコンピュータ上に通信ハブアプリケーションを提供するステップを更に含んでもよい。また、通信ハブアプリケーションは、オーサリングメッセージを処理して、ビデオゲームプラットフォームに関連した組の通信データのフォーマットによるゲームデータ更新メッセージを生成してもよい。通信ハブアプリケーションは、ゲームデータ更新メッセージを、別のゲーム開発ツールとの通信に選択されたフォーマットにより、通信ハブアプリケーションにリンクした該別のゲーム開発ツールへ転送してもよい。
【００１９】
本発明は他の態様によると、ビデオゲームを開発するシステムを提供する。このシステムは、ビデオゲームの動作している少なくとも２つのビデオゲームプラットフォームからなる組を含む。各ビデオゲームプラットフォームは、通信ライブラリによって定義される形態によりメッセージを受信できるように適合されている。このシステムは、ビデオゲームプラットフォームに通信インタフェースを提供する中央ハブアプリケーションを動作させるサーバと；中央ハブアプリケーションと通信を行うようにリンクし、動作中のビデオゲームの１組のゲームデータを修正するように動作するゲーム開発ツールと；修正した組のゲームデータに対応するコンテンツを有するオーサリングメッセージを中央ハブアプリケーションへ送信するゲーム開発ツールに関連したオーサリングモジュールとを更に含む。中央ハブアプリケーションは、オーサリングメッセージを受信し、ビデオゲームプラットフォームへ転送する。転送されたオーサリングメッセージは、各ビデオゲームプラットフォームに関連した通信ライブラリによって定義される形態であり、ビデオゲームプラットフォームは各々、修正した組のゲームデータに基づき、動作中のビデオゲームを更新する。一実施形態において、オーサリングメッセージは、中央ハブアプリケーションによって許容される形態であってもよく、並びに通信ライブラリによって定義される形態と異なる形態であってもよい。中央ハブアプリケーションは、受信したゲーム開発メッセージを処理して、ビデオゲームプラットフォーム上で動作するビデオゲームを含む受信者のリストの識別を行ってもよい。識別は、受信したオーサリングメッセージ中のコンテンツを決定することによって、更に中央ハブアプリケーションの登録したクライアントリストと比較することによって行われてもよい。コンテンツは、ゲームロジックを有する、ビデオゲームプラットフォーム上で動作するビデオゲームの動作に影響するゲームデータを含んでもよい。中央ハブアプリケーションは、オーサリングメッセージの少なくとも１部をゲーム開発ツールのうちの別の１つへ転送してもよく、ゲームデータに対する変更が、ゲーム開発ツールのうちの該別の１つに利用可能となってもよい。動作中のビデオゲームの更新は、ビデオゲームプラットフォームのゲームエンジンによって少なくとも部分的に同時に行われてもよい。ゲームエンジンは、互いに構成が少なくとも部分的に異なってもよく、
動作中のビデオゲームは、修正した組のゲームデータによって異なる影響を受けてもよい。
【００２０】
一態様によると、共同的なゲームオーサリングに適合されたビデオゲーム開発システムが提供される。このシステムは、１組のゲームデータ（たとえば、定義されたゲームロジック、ゲームアセット（アニメーション、オブジェクト、ゲーム設定など））に基づきビデオゲームの動作または提供を行うゲームエンジンを有するビデオゲームプラットフォームを含む。通信ハブモジュールは、ビデオゲームプラットフォームと通信を行うようにリンクしており、第１および第２のゲーム開発ツールは、通信ハブモジュールとリンクしている。ツールは、１組のゲームデータを修正し、１組のゲームデータに対する修正に基づくコンテンツを含むオーサリングメッセージを通信ハブモジュールに送信するように動作される。通信ハブモジュールは、（プラットフォームが期待／要求する形態の更新メッセージ、すなわち、通常ハブモジュールがオーサリングメッセージに要求／期待するフォームとは異なるフォームの更新メッセージを用いて）これらツールが作成したオーサリングメッセージからゲームデータ更新メッセージを生成し、この更新メッセージをビデオゲームプラットフォームへ転送する。これを受けてゲームエンジンは、更新メッセージに供給される更新を含む１組のゲームデータを用いて、ビデオゲームを動作させる。第１および第２の開発ツールは、同時にオーサリングメッセージを送信するように開発者によって動作されてもよい。これにより、プラットフォーム上でライブ動作中のゲームのインスタンスは、共同的設計活動をサポートすべく両開発ツールが提供する編集または変更（もしくは追加）を含むことができる。
【００２１】
本発明は他の態様によると、共同的なゲームオーサリングを実行するビデオゲーム開発システムを提供する。このシステムは、１組のゲームデータに基づきビデオゲームを動作させるゲームエンジンを有するビデオゲームプラットフォームと；ビデオゲームプラットフォームと通信を行うようにリンクした通信ハブモジュールと；通信ハブモジュールと通信を行うようにリンクした第１のビデオゲーム開発ツールとを含む。第１のビデオゲーム開発ツールは、１組のゲームデータを修正し、１組のゲームデータに対する修正に基づくコンテンツを含むオーサリングメッセージを送信するように動作可能である。このシステムは、通信ハブモジュールと通信を行うようにリンクした第２のビデオゲーム開発ツールを含む。第２のビデオゲーム開発ツールは、１組のゲームデータを修正し、１組のゲームデータに対する修正に基づくコンテンツを含むオーサリングメッセージを送信するように動作可能である。通信ハブモジュールは、オーサリングメッセージからゲームデータ更新メッセージを生成し、ゲームデータ更新メッセージをビデオゲームプラットフォームへ転送する。また、ビデオゲームプラットフォームのゲームエンジンは、ゲームデータ更新メッセージに基づき更新した１組のゲームデータを用いて、ビデオゲームを動作させる。一実施形態において、第１および第２のビデオゲーム開発ツールは、同時にオーサリングメッセージを送信するように動作可能であってもよく、ビデオゲームを動作させるために用いられる１組のゲームデータは、第１および第２のビデオゲーム開発ツールの両方からの修正を含むことができる。通信ハブモジュールは、オーサリングメッセージを処理して、ゲームデータ更新メッセージの受信者のリストを決定してもよい。受信者のリストは、第１および第２のビデオゲーム開発ツールのうちの少なくとも一方を含んでもよい。また、第１および第２のビデオゲーム開発ツールのうちの該少なくとも一方は、第１および第２のビデオゲーム開発ツールのうちの他方によって作成された該１組のゲームデータの修正を含むユーザインタフェースを提供してもよい。このシステムは、ゲームデータ更新メッセージに基づき更新された１組のゲームデータに基づき、ビデオゲームの別のインスタンスの動作する別のゲームエンジンを備える追加のビデオゲームプラットフォームを更に含んでもよい。ゲームプラットフォームへ送信されるゲームデータ更新メッセージは、ゲームプラットフォームに関連した２つの異なる組の通信データにしたがって、通信ハブモジュールによって構成されてもよい。第１および第２のビデオゲーム開発ツールは、各々該
１組のゲームデータの別個の部分を修正するように独立して動作してもよい。第１ビデオゲーム開発ツールは、第２のビデオゲーム開発ツールと異なってもよく、第１および第２のビデオゲーム開発ツールは、異なる計算デバイス上で動作してもよい。
【００２２】
本発明は他の態様によると、ビデオゲーム開発用の共同的なオーサリング方法を提供する。この方法は、ビデオゲームプラットフォーム上で動作するビデオゲームに関連したゲームデータを修正するように、ビデオゲームコンピュータシステム上で動作する少なくとも２つのゲーム開発ツールを動作させるステップと；ゲーム開発ツールの動作後、修正した組のゲームデータに基づくコンテンツを有する各ゲーム開発ツールから、オーサリングメッセージを送信するステップと；修正したゲームデータに基づき動作中のビデオゲームを修正するように、ビデオゲームプラットフォームを動作させるステップとを含む。一実施形態において、オーサリングメッセージは、ゲーム開発ツールから少なくとも部分的に同時に送信されてもよい。ゲーム開発ツールは、１組の異なるソフトウェアアプリケーションを含んでもよく、１組の異なるソフトウェアアプリケーションを動作させるために、少なくとも２つのコンピュータがビデオゲーム開発システムに含まれてもよい。ビデオゲームのインスタンスは、ビデオゲームプラットフォームとは異なる追加のビデオゲームプラットフォーム上に供給されてもよい。また、この方法は、ビデオゲームプラットフォームの動作と同時に、修正したゲームデータに基づき動作しているビデオゲームを修正するように、追加のビデオゲームプラットフォームを動作させるステップを更に含んでもよい。この方法は、ゲーム開発ツールと通信を行うようにリンクしたコンピュータ上に通信ハブアプリケーションを提供するステップを更に含んでもよい。また、通信ハブアプリケーションは、オーサリングメッセージを処理して、ビデオゲームプラットフォームに関連した組の通信データのフォーマットによるゲームデータ更新メッセージを生成してもよい。通信ハブアプリケーションは、ゲームデータ更新メッセージをゲーム開発ツールの少なくとも１つへ転送してもよく、ゲーム開発ツールの少なくとも１つは、修正したゲームデータに基づきツールインタフェースの表示を更新してもよい。
【００２３】
本発明は他の態様によると、ビデオゲームを開発するシステムを提供する。このシステムは、１組のゲームデータに基づきビデオゲームを動作させる少なくとも２つのビデオゲームプラットフォームからなる組を含む。各ビデオゲームプラットフォームは、通信ライブラリによって定義される形態によりメッセージを受信できるように適合されている。このシステムは、ビデオゲームプラットフォームに通信インタフェースを提供する中央ハブアプリケーションを動作させるサーバと；中央ハブアプリケーションと通信を行うようにリンクし、動作中のビデオゲームのゲームデータを修正するように少なくとも部分的に同時に動作するゲーム開発ツールとを備える。中央ハブアプリケーションは、ゲームデータの修正した部分を含む第１および第２のゲーム開発ツールからオーサリングメッセージを受信し、ビデオゲームプラットフォームへ転送する。転送されたメッセージは、ビデオゲームプラットフォームに関連した通信ライブラリによって定義される形態である。また、ビデオゲームプラットフォームは各々、修正したゲームデータに基づき、動作中のビデオゲームを更新する、一実施形態において、オーサリングメッセージは、各開発ツールに関連したクライアント側ハブ通信ライブラリによって定義されるように、中央ハブアプリケーションが許可する形態であってもよい。中央ハブアプリケーションは、受信したオーサリングメッセージを処理して、メッセージに基づき、ビデオゲームプラットフォームにおいて、および開発ツールのうちの少なくとも１つにおいて動作するビデオゲームを含む受信者のリストの識別を行ってもよい。コンテンツは、ゲームロジックを有するビデオゲームプラットフォーム上で動作するビデオゲームの動作に影響するゲームデータを含んでもよい。中央ハブアプリケーションは、転送されたオーサリングメッセージの少なくとも幾つかをゲーム開発ツールのうちの１つへ転送してもよく、ゲームデータに対する変更が、ゲーム開発ツールのうちの該１つに利用可能となってもよい。ゲーム開発ツールは、サーバ上で動作する中央ハブアプリケーションを介して通信を行うようにリンクした２つのコ
ンピュータシステム上に提供されてもよい。
【００２４】
ビデオゲームのプレイテストについて、プレイテストセッション中にゲームのオーサリングまたは修正を実行するビデオゲームテストシステムが提供される。テストシステムは、１組のゲームデータ（たとえば、ゲームロジック、ゲームアセットなど）に基づき動作するゲームを用いて、ビデオゲームを動作させるように（または、ビデオゲームのインスタンスを供給するように）プレイテストセッション中に動作する１組のビデオゲームプラットフォームを含む。テストシステムには、ビデオゲームプラットフォームと通信を行うようにリンクした通信ハブモジュールを動作させるために（たとえば、動作中のビデオゲームはハブモジュールの通信クライアントである）、サーバまたはコンピュータが提供される。テストシステムは、プレイテスト統計収集ツールを備えるモニタリングシステムを更に含む。プレイテスト統計収集ツールは、動作中のビデオゲームをプレイする１組のプレイヤに関係するゲームプレイデータを受信する、ゲームプレイデータは、通信ハブモジュールを介してビデオゲームプラットフォームから送信される。また、統計収集ツールはゲームプレイデータを処理して、プレイセッション中に集約統計を出力する（たとえば、モニタリングシステムの表示画面のＧＵＩにより、ビデオゲームのプレイ結果についてリアルタイムフィードバックを供給する）。テストシステムは、オーサリングメッセージまたはゲーム更新メッセージをハブモジュールによりゲームプラットフォームに対して発行するゲーム開発ツールを更に含んでもよい。オーサリングメッセージは、ゲームデータに対する修正を定義するコンテンツを含む。また、たとえばタスクが簡単過ぎる、または難しすぎると感じる対照群のプレイヤに応じてゲームロジックを変更するために、オーサリングメッセージは、プレイテストセッション中に送信される。オーサリングメッセージは、動作中のビデオゲームのすべてまたは幾つかのサブセットに送信されてもよく、同じ対照群のプレイヤによってプレイテストを行ったビデオゲームを選択的に修正できる。
【００２５】
一態様では、本発明は、テスト中にゲームオーサリングを実行するビデオゲームテストシステムを提供する。このテストシステムは、ゲームデータに基づきビデオゲームを供給するように、プレイテストセッション中に動作する１組のビデオゲームプラットフォームと；ビデオゲームプラットフォームと通信を行うようにリンクした通信ハブモジュールを備えるサーバと；ビデオゲームをプレイする１組のプレイヤに関係するゲームプレイデータを受信するプレイテスト統計収集ツールを備えるモニタリングシステムとを含む。ゲームプレイデータは、通信ハブモジュールを介してビデオゲームプラットフォームから送信される。また、プレイテスト統計収集ツールはゲームプレイデータを処理して、プレイテストセッション中、処理に基づき集約統計を出力する。一実施形態において、テストシステムは、通信ハブモジュールによりゲームプラットフォームに対してオーサリングメッセージを発行するゲーム開発ツールを更に含んでもよい。オーサリングメッセージは、ゲームデータに対する変更を含むコンテンツを有してもよい。またオーサリングメッセージは、ゲームプラットフォームが供給するビデオゲームに影響するように、プレイテストセッション中に送信されてもよい。ゲームデータの修正を含むオーサリングメッセージは、ゲームプラットフォームのサブセットに送信されてもよく、プレイテストセッション中にビデオゲームの一部分が修正可能となる。プレイテスト統計収集ツールは、ゲームプレイデータの受信、ゲームプレイデータの処理、およびオーサリングメッセージ送信後の集約統計の出力を繰り返し行ってもよく、ゲーム更新についてのリアルタイムフィードバックがモニタリングシステムの出力によって与えられる。モニタリングシステムは、集約統計の少なくとも１部のディスプレイを含むインタフェースを、プレイテスト統計収集ツールに対して表示するもモニタを含んでもよい。このインタフェースは、１組のプレイヤのうちの個人にリンクしたゲームプレイデータの一部を更に含んでもよい。該１組のプレイヤは、１つ以上のパラメータに基づき、更にサブグループに分割されてもよい。また集約統計は、１つ以上のサブグループのプレイヤのゲームプレイに対応する情報を含んでもよい。オーサリングメッセージは、ゲームプラットフォームに関連した組の通信データにしたが
って通信ハブモジュールにより構成された後、ゲームプラットフォームに送信されてもよい。ゲームプラットフォームは、少なくとも２つの構成を有してもよい。また、通信データの組は、オーサリングメッセージを受信するゲームプラットフォームの構成に基づき、ゲームプラットフォームごとに異なってもよい。
【００２６】
本発明は他の態様によると、ビデオゲーム開発におけるプレイテスト方法を提供する。この方法は、ビデオゲームプラットフォーム上で動作するビデオゲームの複数のインスタンスを、プレイテストセッション中に提供するステップと；ビデオゲームのインスタンスをプレイする１組のプレイヤに対応するビデオゲームプラットフォームから、ゲームプレイデータを送信するステップと；コンピュータシステム上で動作する統計収集ツールを用いて、送信されたゲームプレイデータを収集するステップと；統計収集ツールを用いて、収集したゲームプレイデータを処理し、１組のプレイテスト統計結果を生成するステップと；プレイテストセッション中、モニタ上に１組のプレイテスト統計結果を表示するステップと；プレイテストセッション中、モニタ上に１組のプレイテスト統計結果を表示するステップと、ビデオゲームの開発者に対し、プレイテストセッション中のゲームプレイ結果についてのフィードバックが提供されることとを含む。一実施形態において、ゲームプラットフォームは、メッセージプロトコルを定義する複数の通信ライブラリを用いて、ネットワークデバイスと通信を行ってもよい。また、この方法は、送信されたゲームデータを受信し、受信したゲームデータを単一の形態により統計収集ツールへ転送するように、通信ハブアプリケーションを動作させるステップを更に含んでもよい。この方法は、１組のプレイヤにおけるプレイヤからプレイヤデータを集めるステップを更に含む。また、集めたプレイヤデータのうちの少なくとも一部は、１組のプレイテスト統計結果とともにモニタ上に表示されてもよい。この方法は、ビデオゲームプラットフォームによって使用されるゲームデータに対する修正を生成してビデオゲームのインスタンスを提供するようにゲーム開発ツールを動作させるとともに、対応するビデオゲームのインスタンスを変更するために、プレイテストセッション中、生成した修正を１組のビデオゲームプラットフォームへ送信するステップとを更に含んでもよい。この方法は、生成した修正の送信後、ゲームプレイデータの送信と、１組のプレイテスト統計結果の収集、処理、および表示とを繰り返すステップを更に含んでもよい。
【００２７】
本発明は他の態様によると、ソフトウェアプログラムを開発するシステムを提供する。このシステムは、１組のゲームデータに基づきソフトウェアの動作している少なくとも２つのコンピューティングプラットフォームからなる組と；コンピューティングプラットフォームに通信インタフェースを提供する中央ハブアプリケーションを動作させるサーバと；中央ハブサーバにリンクしたコンピュータ上で動作する統計収集モジュールとを含む。統計収集モジュールは、１組のオペレータによるソフトウェアプログラム使用に関係するデータを集め、集めたデータを処理して、オペレーションによるソフトウェアアプリケーションの使用と少なくとも部分的に同時に、表示画面上に処理済みデータを表示する。一実施形態において、このシステムは、１組のプログラムデータに対する修正を用いてオーサリングメッセージを生成する開発ツールを更に含む。中央ハブアプリケーションは、ソフトウェアプログラムの動作に使用されるように、オーサリングメッセージをコンピューティングプラットフォームへ転送してもよい。また、オーサリングメッセージは、オペレータによるソフトウェアプログラムの使用、および統計収集モジュールによるデータ収集と同時に生成されてもよい。コンピューティングプラットフォームは、ビデオゲームプラットフォームを含んでもよく、ソフトウェアプログラムは、ビデオゲームアプリケーションの少なくとも一部を含んでもよい。オーサリングメッセージは、ビデオゲームプラットフォーム上で動作するビデオゲームの動作に影響するゲームデータ（ゲームロジックに対する修正など）を含んでもよい。表示画面に表示された処理済みデータは、オペレータのゲームプレイのステータスを含んでもよい。オペレータは、少なくとも１つのデモグラフィックパラメータに基づきグループ化されてもよい。また、処理済みデータは、オペレー
タのデモグラフィックのグループ化に基づき、少なくとも部分的に表示画面に表示されてもよい。
【図面の簡単な説明】
【００２８】
【図１】従来の通信方法によって構成されたビデオゲーム開発システムまたはネットワークの機能ブロック図。
【図２】ゲーム開発ツールと、異なるビデオゲームプラットフォーム上で動作するゲームとの間（および任意でツール同士の間）の通信を実行する開発通信ハブを備える、本発明の一実施形態に係るビデオゲーム開発システムまたはネットワークを示す機能ブロック図（図１のシステムと対照をなす）。
【図３】ゲームは各ツールに組み込まれている場合のある）クライアント側通信ライブラリを用いて単一の通信ソケットを作成または使用し、中央ハブアプリケーションからのゲームデータまたは開発メッセージの送信および受信を行う一実施例または一実施形態を更に詳細に示す、ビデオゲーム開発システムまたはネットワークの機能ブロック図。
【図４】本明細書に記載の通信方法、オーサリング方法、テスト方法、および他の機能を実現するために役立つコンピュータシステムの一例をより詳細に示す、開発システムまたはネットワークの模式図。
【図５】本発明の一実施形態に係る、ゲーム開発またはハブベース通信の方法の概略を示すフローチャート。
【図６】ツール−ゲーム間の通信を実行するために、およびビデオゲームのライブ（リアルタイム）オーサリングをサポートするために通信ハブアプリケーションにしたがってライブオーサリングモジュールを使用する、本発明の一実施形態に係るゲーム開発システムまたはネットワークの機能ブロック図。
【図７】図６に示すシステムの動作によって実施可能な、本発明の一実施形態に係るライブオーサリング処理のフローチャート。
【図８Ａ】本明細書に記載のオーサリング方法によって開発中であるのと同一のビデオゲームが動作しているゲームプラットフォームまたはコンソールの表示デバイスのスクリーンショット図。
【図８Ｂ】本明細書に記載のオーサリング方法によって開発中であるのと同一のビデオゲームが動作しているゲームプラットフォームまたはコンソールの表示デバイスのスクリーンショット図。
【図９Ａ】図８Ａと同様に動作するゲームプラットフォームの表示デバイスにおいて、ライブオーサリングを用いて１組のゲームデータまたはアセットを更新した後のスクリーンショット図。１つ以上のゲームツールを動作させることによってゲームに対して行われた変更と、この変更が２つのプラットフォームによってユニークに実施された様子とのリアルタイム表示を示す。
【図９Ｂ】図８Ｂと同様に動作するゲームプラットフォームの表示デバイスにおいて、ライブオーサリングを用いて１組のゲームデータまたはアセットを更新した後のスクリーンショット図。１つ以上のゲームツールを動作させることによってゲームに対して行われた変更と、この変更が２つのプラットフォームによってユニークに実施された様子とのリアルタイム表示を示す。
【図１０】ビデオゲームの共同的なオーサリングに適合されたゲーム開発システムの機能ブロック図（たとえば、図２〜図４および図６に示すシステムを簡略化したバージョンである。図１０に示さないコンポーネントが、図１０のシステムに含まれてもよい）。
【図１１Ａ】動作中のゲームのライブオーサリングを示す、ビデオゲームプラットフォームのスクリーンショット図。２つの開発ツールの使用により（および／または、幾つかの例においてはこのようなツールを動作させる２人の作成者／開発者によって）共同的に実施されるオーサリング／開発を示す（この他、１人の作成者が複数のツールをセルフコラボレーションの様式で稼動させてもよい）。
【図１１Ｂ】動作中のゲームのライブオーサリングを示す、ビデオゲームプラットフォームのスクリーンショット図。２つの開発ツールの使用により（および／または、幾つかの例においてはこのようなツールを動作させる２人の作成者／開発者によって）共同的に実施されるオーサリング／開発を示す（この他、１人の作成者が複数のツールをセルフコラボレーションの様式で稼動させてもよい）。
【図１２】ビデオゲームテスト・開発システムの機能ブロック図（たとえば、図２〜図４，図６，および図１０に示すコンポーネントのうちの少なくとも幾つかが含まれてもよい）。ビデオゲームのゲームデータまたはテストした部分に対する変更について一組のプレイヤまたはテスタからリアルタイムフィードバックを取得することを含む、ビデオゲームのテストを行うための通信ハブアプリケーションおよびプレイテスト統計収集ツールの使用を示す。
【図１３】プレイテスト統計収集ツールによって、または図１２に示すシステムの他のデバイスによって提供可能なテストモニタリングインタフェースのスクリーンショット図。このテストモニタリングインタフェースにより、ユーザ（たとえば、ゲーム開発者）はリアルタイムまたは「ライブ」でゲームテストデータにアクセスでき、プレイヤまたはテスタの一群はリアルタイムまたはライブの環境で集約済みおよび／または処理済みデータを確認できる。
【図１４】プレイテスト統計収集ツールによって、または図１２に示すシステムの他のデバイスによって提供可能なテストモニタリングインタフェースのスクリーンショット図。このテストモニタリングインタフェースにより、ユーザ（たとえば、ゲーム開発者）はリアルタイムまたは「ライブ」でゲームテストデータにアクセスでき、プレイヤまたはテスタの一群はリアルタイムまたはライブの環境で集約済みおよび／または処理済みデータを確認できる。
【図１５】開発者あるいはテスト監督者に対して、リアルタイムフィードバックを供給するプレイテスト方法の処理の一例を示すフローチャート。
【発明を実施するための形態】
【００２９】
簡潔には、本発明の一部の実施形態は、ビデオゲーム開発システムまたはネットワークにおける通信を管理するための方法およびシステムに関する。具体的には、各ツールおよび異なるゲームプラットフォームの間に通信インタフェースを構築する開発システムまたはネットワークに中央通信アプリケーションを設けることによって、ゲーム開発者が使用する各ゲーム開発ツールの処理オーバーヘッド、使用の複雑さ、およびメンテナンス要件を軽減するゲーム開発システムまたはネットワークを記載する。ハブ通信アプリケーション（またはアプリケーションを動作させるサーバ）は、開発ツールによって発行されたメッセージの受信者を抽出（または決定）するメッセージ送信ハブとして機能する。また、コンテンツ、たとえばゲームデータ（プラットフォーム上でゲームエンジンによって使用される修正したゲームロジックなど）、ゲームアセット（３次元モデルもしくは別の形態（すなわち、フォーマットまたは形式）の新しいキャラクタもしくはオブジェクト）、またはゲームパラメータ（照明レベル、テクスチャ設定など）を、そのままでまたは再フォーマットして、ゲーム開発システムまたはネットワークにおいて受信者に送信する。
【００３０】
簡潔には、本発明の一部の実施形態は、作成者または開発チームメンバにリアルタイムフィードバックを供給するために、ビデオゲームのライブオーサリングを行う方法およびシステムに関する。ライブオーサリング方法およびシステムにより、開発チームメンバは１つ以上のビデオゲーム開発ツールを用いてビデオゲームに対する変更を作成することができる。また、これらの変更を１つのブロードキャストオーサリングメッセージ（たとえば、異なるプラットフォーム上で動作するゲームによって実施されるゲームコンテンツまたはデータを有するメッセージ）により１つ、２つ、またはそれ以上のビデオゲームプラットフォーム上で実施させることができる。オーサリングメッセージまたはゲーム更新は、リッスン中のクライアントがゲーム更新のリッスンおよび受信を行え、ゲーム更新に反応できるように、ゲーム通信ハブ（たとえば、ハブまたはハブサーバ上で動作するハブア
プリケーションが受信できるフォーマットにされたゲームコンテンツを有するメッセージ）によりブロードキャストされる。ハブアプリケーションは、開発者にメッセージの再送信をさせることなく、またはゲームアセットもしくはデータの変更／追加によって各プラットフォーム用のゲームの再ビルドを行うことなく、メッセージに対する適切な受信者（たとえば、異なるゲームプラットフォーム上で動作するゲーム（またはゲームのサブシステム）、ゲームコンテンツのゲームデータストレージ、および／または他のゲーム開発ツール）を識別するように機能する（たとえば、ゲームアセットまたはゲームデータ（Ａｄｏｂｅ（登録商標）  Ｐｈｏｔｏｓｈｏｐ（登録商標）などの１つのツールのテクスチャ特性（プロパティ）に対して行われた変更が、ビデオゲーム上で動作するゲームエンジンにおいて、およびＡｕｔｏｄｅｓｋ  Ｍａｙａ（登録商標）などの第２のツールにおいて実行／反映される）。以下に図１〜図５を参照して、ビデオゲーム開発通信方法およびシステムについての説明を行う。すなわち、ツール対プラットフォームの通信を行う通信ハブアプリケーションの使用について最初に説明し、次に図６〜図９Ｂを参照してライブオーサリング技術について説明する。
【００３１】
バックグラウンドとして、特定のコンピュータ、計算デバイス、ワークステーション、ビデオゲームプラットフォーム／コンソール、通信ネットワークの構築とデジタル接続、メモリデバイス、およびビデオゲーム開発において用いられる別の計算ハードウェアおよびソフトウェアリソースを例として以下に説明する。ただし、これらは本発明の実施に有用な例であり、範囲を限定するものではないことを理解されたい。本発明の実施形態は、概して（たとえば、開発端末、ノード、ＰＣ、ワークステーションなどを動作させ、１つ以上のビデオゲーム開発ツールを使用しつつ）通信、オーサリング、およびゲーム開発時のテストをサポートするためのコンピュータベースの方法として考えられてもよい。上記の方法および機能の実施に使用される特定のソフトウェア、ファームウェア、および／またはハードウェアも、本発明を限定するものではない。一般に本明細書に記載のアルゴリズム、ルーチン、および処理は、対応する機能をコンピュータまたはコンピュータシステムに実行させることができるほぼどんなコンピュータ可読媒体において実行されてもよい。たとえば、ハブ通信アプリケーションは、計算デバイス（たとえば、開発計算デバイスまたは中央サーバ／ネットワークサーバ）にゲーム開発コンピュータ・通信環境を生成する一環として、特定の機能を実行させるソフトウェアまたはプログラムコードとして提供されてもよい。ハブ通信アプリケーションはまた、ビデオゲーム開発ツールが有線または無線の接続によりアクセス可能であり、且つ１つ以上のプロセッサまたはＣＰＵを使用してソフトウェアを動作させるデバイス上で動作するほぼどんなノードのメモリデバイスに保存されてもよい。ビデオゲーム開発ワークステーションは、複数の入出力デバイス（Ｉ／Ｏデバイス）（たとえば、キーボード、マウス、またはトラックボールなど、タッチスクリーンまたはパッド、音声認識機構など）を備えてもよい。１つ以上のモニタを設けて、１つ以上のユーザインタフェース（たとえば、ビデオゲームツールインタフェースの確認および／またはアクセスを行うために、並びに、ゲームロジック、ゲーム設定、ゲームアセット、ゲームパラメータなどのゲームデータの確認／修正を行うために、コンピュータ環境の一部として作成されたウィンドウ）をユーザが確認できるようにしてもよい。このようなユーザインタフェースは、ユーザがコンピュータとの対話、並びに特定のコンピュータ環境のメモリに保存されているビデオゲームデジタルアセットおよびデータとの対話を行えるように、メニュー、画面設計、キーボードコマンド、コマンド言語などを組み合わせたものであってもよい（マウス、タッチスクリーン、および音声認識などの別の入力ハードウェアを含む場合もある）。本発明はまた、数々の周知のまたは今後開発される通信プロトコル（無線または有線）を用いて、デジタル通信ネットワーク（たとえば、インターネット、ローカルエリアネットワーク、ワイドエリアネットワークなど）上のワークステーションと通信可能な１つ以上のデータサーバを用いて実施されてもよい。また、ブラウザおよび関係するアプリケーションが、特定のコンピュータ環境においてアクセス可能なウェブアプリケーションとして提供されてもよい。
【００３２】
ゲーム開発・テスト処理の一部としてハブベースの通信システムおよび方法の利点を理解し易くするには、図１に示す既存または従来のゲーム開発システム１００について説明することが有用であろう。従来のゲーム開発システム１００において、複数の開発者は、ワークステーション１１０，１２８の使用により、１つ以上の開発ツール１１４，１３２（たとえば、Ｍａｙａ（登録商標）のプラグイン、変数トゥイーカ（Ｖａｒｉａｂｌｅ  Ｔｗｅａｋｅｒ）ツール、ロジック更新ツールなど）が動作するコンピュータまたは動作環境１１２，１３０を提供して、ビデオゲームの開発を行ってもよい。このゲームは、ボックス１６０，１７０に示すゲーム動作中のプラットフォームＡおよびプラットフォームＢのように、複数の異なるビデオゲームプラットフォームまたはコンソール上で動作してもよい。各ワークステーション１１０，１２８のコンピュータ環境１１２，１３０は、通信ライブラリ／インタフェースライブラリ、またはプラットフォーム通信データ１１９，１３９を保存するために使用されるメモリまたはデータストレージ１１７，１３７を含んでもよい。このような通信データは、各ビデオゲームプラットフォームが期待するメッセージングのフォーマットおよび伝送プロトコルのサブセットのすべてまたは幾つかを定義するものであってもよい。通常、ツール１１４，１３４がプラットフォーム上で動作するゲーム１６０，１７０と通信を適切に行うために順守しなければならない規則のうち、少なくとも部分的に異なる規則の組がプラットフォーム通信データ１１９，１３９の各組によって定義される。開発者がただ１つのプラットフォーム上で作業を行う場合、これは大きな問題ではないかもしれない。しかし多くの場合は、各開発ワークステーション１１０，１２８および動作中のツール１１４，１３４を用いて、２つまたは３つ以上のビデオゲームプラットフォームで使用されるゲーム１６０，１７０が開発される。このためツール１１４，１３４は、各プラットフォームとの通信、または様々なプラットフォーム（たとえば、ソニー社、マイクロソフト社、任天堂社、および別のゲームプラットフォームメーカによって開発および分散されるプラットフォーム）上で動作するゲーム１６０，１７０との通信を実行できることが重要である。
【００３３】
現在、ビデオゲーム産業において使用される開発ツール１１４，１３４は、一般に通信を提供しない。あるいは１つの通信の形態を提供する場合、開発ツール１１４，１３４は、ツール１１４，１３４と動作中のゲーム／プラットフォーム１６０，１７０との間の１対１の接続１２０，１２６，１４０，１４６を用いて、示すように機能する。通信を確立するために、ツール１１４，１３４は、システム１００の開発時／動作時に、通信相手として所望する各ゲーム１６０，１７０の通信クライアント１１６，１２２，１３６，１４２を作成するものとして考えられてもよい。また、このような１対１の通信は、動作中のゲーム１６０，１７０との間の直接のメッセージング１２０，１２６，１４０，１４６が可能となるように、ツール１１４，１３４に通信ソケット１１８，１２４，１３８，１４４の作成および管理を要求するものと考えられてもよい。システム１００において各ツールは、プラットフォーム１６０，１７０の各々との通信方法を理解する必要がある。たとえば、特定のプラットフォーム１６０の通信データ１１９の要求どおりにフォーマットされたメッセージにしたがう通信リンクは、同じコンテンツを有するメッセージを別のプラットフォーム１７０に送信する場合には使用できない。より具体的な例として、あるツール１１４またはツール１３４は、１組の通信データ１１９，１３９（たとえば、ビデオゲームプラットフォーム開発者のＳＤＫなどに供給される情報／データ）を用いて、ソニー社のＰＳ３プラットフォーム（または第１のプラットフォーム）上のオブジェクトまたは別のゲームアセット／データを更新してもよい。しかし、マイクロソフトＸｂｏｘ  ３６０（登録商標）（または第２のプラットフォーム）上で同じオブジェクトまたは別のゲームアセット／データを更新するメッセージを送信する場合は、これらの同じ通信技術／方法を使用できない。ツール１１４，１３４は一般に、接続を確立するために他の動作ツールについての明示的知識を持つ必要があるため、ツールを相互に、または他のツールと通信可能にするうえで１対１の通信技術は有用ではなかった。
【００３４】
これに対し、図２は以下のように適合されたゲーム開発システムまたはネットワーク２００を示す。すなわちこのゲーム開発システムまたはネットワーク２００は、個々のゲームが特定のプラットフォーム通信データおよび／もしくは規則、またはどのゲームおよび／もしくはツールが「リッスン中」か、またはゲームネットワーク２００に接続しているかについての知識を持たなくなくてもよいように適合されている。システム２００は、ビデオゲーム開発ツール２１２，２５１を動作させる１対の開発ワークステーション２１０，２５０を含む。２つの異なるプラットフォーム上で動作するゲーム２３０，２４０の両方との通信、および任意で他のツール（典型的には、図１に示すシステム１００においては通信を行わないツール）との通信を行うために、単一接続２１４，２５２のみが各ツール２１２，２５１によって維持／使用される。
【００３５】
システム２００は、開発通信ハブ２２０（たとえばサーバ、またはシステム２００におけるメッセージングについて「サーバ」の役割を果たす他の計算デバイス）を含めることにより、ゲーム開発通信を簡素化する。ハブ２２０は、プラットフォームの知識と他のツールの存在とを個々のツール２１２，２５１から抽出する、中央ハブ通信またはメッセージ送信アプリケーションを動作させる。通信義務のこのような集中化および抽出により、意図した受信者、可能なインタフェース、メッセージの初期化、および受信者が課した他の通信要件についての特定の知識を要さず、ツール２１２，２５１は、相互の通信およびゲームプラットフォーム２３０，２４０との通信が行える。システム２００において、上記のことは通常、異なるプラットフォーム２３０，２４０への接続方法についての知識を中央ハブアプリケーションに集中化することによって行われる。幾つかの場合においては、クライアント側通信ライブラリを各ツールに組み込むことによって行われる（図に示さないが、システム２００におけるメッセージングおよびデータ転送のすべてに使用できる比較的簡素なメッセージングプロトコルを用いて、ツール２１２，２５１のハブアプリケーションとの通信が可能になる）。また、このようなライブラリを用いて、プラットフォーム２３０，２４０がハブ２２０（またはハブ２２０上で動作するハブ通信アプリケーション）に接続可能とされてもよい。
【００３６】
図に示すとおり、ハブ２２０は、ツール２１２，２５１が第１のプラットフォーム２３０（プラットフォームＡとして示す）上で動作するゲームと通信を行えるように、クライアント２２２にインタフェースを提供し、ツール２１２，２５１が第２プラットフォーム２４０（図２にプラットフォームＢとして示す）上で動作するゲームと通信を行えるように、通信クライアント２２４，２２６にインタフェースを提供する。ハブ２２０は、各プラットフォーム２３０，２４０の通信データまたはライブラリ２２７（たとえば、ビデオゲームＳＤＫなどに供給されたもの）を保存するためのメモリまたはデータストレージ２２５を備える。この情報は、リンク２１４，２５２でハブフォーマットメッセージを送信するツール２１２，２５１と、異なるプラットフォーム上で動作し、且つリンク２２８，２４２を介してハブ２２０にリンクしたゲーム２３０，２４０との間にインタフェースを提供するために、ハブ２２０上で動作するハブアプリケーションによって使用される。この通信は、メモリ２２５内のプラットフォーム通信データ２２７に基づき通信クライアント２２２，２２４，２２６を作成するハブアプリケーションによって、部分的に管理されてもよい。システム２００の動作時、ツール２１２，２５１はそれぞれリンク２１４，２５２で、クライアント側ハブライブラリごとにフォーマットされたメッセージ（たとえば、照明設定、またはゲームのオブジェクトのテクチャリングを修正するためのメッセージ；図２では略）を送信する。ハブ２２０は、どの受信者がメッセージコンテンツ（たとえば、２つのプラットフォーム２３０，２４０上およびツール２１２または２５１上のゲームのうちの一方または両方）を受信すべきかを決定するように機能する。ハブ２２０はその後、適切な通信データ／ライブラリ２２７を用いて各受信者のメッセージの再フォーマット／翻訳を行う（および／または、作成されたクライアント２２２，２２４，２２６を
用いて通信を管理し、通信規則に準拠する）。ハブ２２０はその後、システム２００において、メッセージを対象の（または決定された）１組の受信者へ転送する。比較的大まかに示すシステム２００の図から分かるように、ツール２１２，２５１およびゲーム２３０，２４０は、ハブ２２０との伝達方法または通信方法を理解していればよく、ゲーム情報またはデータをネットワークまたはシステム２００と受信者とに送信するうえで、意図した受信者の通信規則に関する特定の知識は必要ない。図１に示すシステム１００とは対照的に、ツール２１２，２５１は、可能な各プラットフォームの通信クライアントおよび／またはソケットを管理する必要がなく、あるいは、各ゲームプラットフォームの通信データ／ライブラリの保存／アクセスが必要ない。システム２００はまた、ツール２１２，２５１を互いに通信可能にする（以下により詳細に説明する）。
【００３７】
図３は、本発明の一実施形態の通信方法を実現するために使用可能なビデオゲーム開発システム３００をより詳細に示す。本実施形態において、複数のビデオゲーム開発ツール３１６，３１８（たとえば、３次元モデルの作成、ゲームロジックの設定または調節、オブジェクト、キャラクタ、または他のゲームアセットなどの作成に使用されるもの）を動作させるＣＰＵ３１２を備える開発コンピューティングシステム３１０が示される。Ｉ／Ｏデバイス３１４は、開発者がツール３１６，３１８およびゲームデータと対話を行えるように提供されてもよい。また、ツールＧＵＩ３２２を確認するために、またはツール３１６，３１８およびゲームデータの確認／対話を行うために、１つ以上のモニタ３２０が含まれる。システム３１０は、クライアント側ハブ通信データ／ライブラリ３３８を保存するメモリ３２４を更に備える。システム３１０はまた、ツール３１６，３１８と通信ハブアプリケーション３５４との通信（および、このアプリケーション３５４により、開発中のゲーム３７２，３８２、またはツール３１６，３１８（もしくは図に示さない他のシステム３１０のツール）の他方との通信）を可能にするデータを有する。メモリ３２４もまた、ゲームアプリケーション３２０（たとえば、開発中のゲーム、またはそうしたゲームの最新ビルド）を含むように図に示される（あるいは、このデータは、システム３１０および別の開発システムによってアクセス可能な別のメモリデバイスに保存されてもよい）。ゲームアプリケーション３３０はゲームデータ（たとえば、ゲームアセット３３２、ゲームロジック３３４、およびゲーム設定３３６）を含み、ゲームアプリケーション３３０はこのゲームデータによって定義されると考えられる。このため、ゲーム開発は、メモリ３２４内のゲームデータ、および／または複数のビデオゲームプラットフォーム／コンソール３７０，３８０上で動作するゲーム３７２，３８２のゲームデータの作成および修正を行うために、ツール３１６，３１８を使用することを含む。
【００３８】
システム３００は、開発システム３１０をハブサーバ３５０に接続するために使用される通信ネットワーク３４０を更に含む。ハブサーバ３５０は、通信ハブアプリケーション３５４を動作させるＣＰＵ３５２を備える。ＣＰＵ３５２は、システム通信を受信するために、クライアントリスト（たとえば、プラットフォーム、ツール、ゲーム、またはハブアプリケーションに登録されたゲームのサブシステムなど）を保存するように示されるメモリ３５６を管理する。メモリ３５６は、システム３００の各プラットフォーム３７０，３８０のプラットフォーム通信データ（たとえば、各プラットフォーム３７０，３８０のＳＤＫ通信ライブラリ）、またはシステム３００へ追加されること／システム３００内で使用されることが期待されるプラットフォーム通信データを保存する。ハブサーバ３５０は、通信ハブアプリケーション３５４を動作させる。アプリケーション３５４は、ツール３１６，３１８とゲームプラットフォーム３７０，３８０との間（およびツール３１６，３１８同士の間）に通信インタフェース３６２を提供するように機能してもよい。この目的のために、通信クライアント３６４，３６６，３６８は、各プラットフォーム３７０，３８０にはプラットフォーム通信データセット３６０を使用し、ワークステーション／システム３１０との通信には規則／プロトコルを使用して、ハブアプリケーション３５４によって作成されてもよい。
【００３９】
システム３００の動作時、各ゲーム開発ツール３１６，３１８は、サーバ３５０のハブアプリケーション３５４への送信、またはハブアプリケーション３５４からの送信を行うべく、ネットワーク３４０を介してハブ通信ソケットまたはリンク３４２，３４４の作成および管理を行うために、組み込みまたはランタイム通信機構としてクライアント側ハブライブラリ３３８を使用してもよい。これらのメッセージは、ゲームロジック３３４またはゲーム３７２，３８２（たとえば、２つの異なるプラットフォーム上で動作する同じゲーム）のアセット３３２を修正するためのゲームデータを含んでもよい。ハブアプリケーション３５４は、インタフェース３６２およびクライアント３６４，３６６，３６８を介してこれらのメッセージを処理して、および／または通信データ３６０を処理してメッセージの受信者を決定し、これらの受信者に期待されるフォーマットにメッセージを置き、リンク３７６、３８６、３４２、３４４で適宜メッセージを送信する。クライアントリスト３５８には、ビデオゲーム３７２，３８２、またはツール３１８のうちの１つが含まれてもよい。各メッセージは、コンテンツ（その種類のコンテンツ／メッセージの対象として登録されている人）に依存して、および／またはツール３１６，３１８からのメッセージ中の受信者のリスト／アドレスに依存して、これらの受信者のうちの１人、１組、またはすべて（たとえば、特定のゲームまたはゲームサブシステムに対して、または特定のゲームデータを対象とするツールに対して）に送信されてもよい。
【００４０】
図４は、ハブまたは中央化通信技術および本明細書に記載する他の機能／処理を実装するために使用可能なゲーム開発システムまたはネットワーク４００の概要を示す。ネットワーク４００は、コンピュータシステム４０２を含む。このコンピュータシステム４０２は、一般にゲーム開発者（またはビデオゲーム開発チームのメンバ）によって使用される。また、処理ユニットまたはＣＰＵ２０３と、ＣＰＵ２０３によって動作可能な１つ以上のゲーム開発ツールを有するシステムメモリ２０５とを備える。上記のように、各ゲーム開発ツールまたは各プログラムは、リモートコンピュータ２５０上（または分散システム／ネットワークにおける開発コンピュータシステム４０２の１つ）で動作する中央通信ハブアプリケーションと通信を行うためにプログラムに必要な情報を供給する組み込みのクライアント側通信ライブラリを有してもよい。このように、ゲーム開発プログラムによって生成されたメッセージは、比較的簡素化および／または一般化された形態であってもよい。また、たとえば各プラットフォーム開発者のＳＤＫもしくはＳＤＫの通信ライブラリによって指定された、またはそれ以外で指定された異なる通信要件（たとえば、異なるメッセージ構成／コンテンツ、異なる伝送プロトコル、異なる通信および／またはクライアントインタフェースなど）を有し得る第１のプラットフォーム４５１上および第２（または複数）のプラットフォーム４５３上で動作するゲームに対して、中央ハブアプリケーションを介して配信されてもよい。
【００４１】
システムバス４０７は、システムメモリ４０５を含む様々なシステムコンポーネントを処理ユニット４０３に接続する。システムバス４０７は、メモリバスまたはメモリコントローラ、周辺機器用バス、および様々なバスアーキテクチャを使用するローカルバスなど、複数種のバス構成のいずれであってもよい。システムメモリ４０５には、読出専用メモリ（ＲＯＭ）とランダムアクセスメモリ（ＲＡＭ）が含まれる。コンピュータシステム４０２において、要素間の情報転送を（たとえば起動時に）行うための基本ルーチンを含む基本入出力システム（ＢＩＯＳ）４５６が、ＲＯＭ４５６に保存される。コンピュータシステム４０２は、様々なドライブと、関連したコンピュータ可読媒体とを更に含む。ハードディスクドライブ４０９は、（通常、固定の）磁気ハードディスク４１１からの読出および磁気ハードディスク４１１への書込を行う。磁気ディスクドライブ４１３は、リムーバルな「フロッピー（登録商標）」または他の磁気ディスク４１５の読出および書込を行う。光学ディスクドライブ４１７は、リムーバル光学ディスク４１９（たとえば、ＣＤ  ＲＯＭまたは他の光学媒体）からの読出、および幾つかの構成においては、光学ディスク
４１９への書込を行う。勿論、他のリムーバルメモリデバイスは、ポート（たとえば、ＵＳＢまたはシステム４０２のハウジング内の他の通信ポート）へ挿入およびアクセスされてもよい（データの読出および／または書込を行ってもよい）。ハードディスクドライブ４０９、磁気ディスクドライブ４１３、および光学ディスクドライブ４１７は、それぞれハードディスクドライブインタフェース４２１、磁気ディスクドライブインタフェース４２３、および光学ドライブインタフェース４２５によって、システムバス４０７に接続される。ドライブおよび関係するコンピュータ可読媒体は、コンピュータシステム４０２に関するコンピュータ可読命令、プログラム、手続、ルーチン、データ構成、プログラムモジュール、および他のデータ（たとえば、クライアント側通信ライブラリの初期インストール、および／またはゲームアプリケーションまたはゲームアセットのバックアップ保存／転送）を不揮発的に記憶する。他の構成において、コンピュータがアクセス可能なデータを保存可能な他種のコンピュータ可読媒体（たとえば、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ランダムアクセスメモリ（ＲＡＭ）、読出専用メモリなど（ＲＯＭ））が使用されてもよい。
【００４２】
複数のプログラムモジュール（たとえば、ゲーム開発ツール、テストルーチンなど）が、ハードディスク４１１、リムーバル磁気ディスク４１５、光学ディスク４１９、および／またはシステムメモリ４０５のＲＯＭおよび／またはＲＡＭに保存されてもよい。このようなプログラムモジュールは、グラフィックおよびサウンドＡＰＩを提供するオペレーティングシステムと、１つ以上のアプリケーションプログラムと、他のプログラムモジュールと、プログラムデータ（たとえば、ゲームデータ）を含んでもよい。ユーザは、入力デバイス（たとえば、キーボード４２７、およびポインティングデバイスまたはマウス４２９）によってコンピュータシステム４０２に対し、コマンドおよび情報を入力してもよい。他の入力デバイスとしては、マイクロホン、ジョイスティック、ゲームコントローラ、無線通信デバイス、スキャナなどがある。これら入力デバイスおよび他の入力デバイスは、システムバス４０７に連結したシリアルポートインタフェース４３１を介して処理ユニット４０３に接続されることが多いが、他のインタフェース（たとえば、パラレルポートインタフェースもしくはユニバーサルシリアルバス（ＵＳＢ））によって、または無線接続によって接続されてもよい。１つ以上のモニタ４３３または他種の表示デバイスもまた、インタフェース（たとえば、ゲーム開発・ゲームテストＧＵＩもしくは他のゲームデータを確認するためのビデオアダプタ４３５）を介して、システムバス４０７に接続される。
【００４３】
コンピュータシステム４０２は、モデム４５４、またはインターネットなどのワイドエリアネットワーク４５２上に通信を確立するための他の手段を含んでもよい。モデム４５４は内蔵モデムであっても外部モデムであってもよく、シリアルポートインタフェース４３１（または他のインタフェース）を介してシステムバス４０７に接続される。コンピュータシステム４０２がローカルエリアネットワーク４５８を介してリモートコンピュータデバイスまたはサーバ４５０と通信を行えるように（たとえば、通信ソケットなどを確立させるように）、ネットワークインタフェース４５６が設けられてもよい（または、このような通信はダイアルアップもしくは他の通信手段など、ワイドエリアエリアネットワーク４５２もしくは他の通信経路を介してもよい）。コンピュータシステム４０２は、一般にプリンタおよび他の標準的なデバイス（図示なし）など、他の周辺出力デバイスを含んでもよい。コンピュータシステム４０２は、インターネット通信プロトコルおよび／または他のデジタル通信ネットワークプロトコルをサポートするオペレーティングシステムと、（たとえば、一般にゲーム開発プログラムに組み込まれているクライアント側通信ライブラリの定義／要件に基づき生成および送信されるメッセージを用いて行われる、コンピュータ２５０の中央通信ハブとのデジタル通信をサポートする）通信インタフェースとを備えることが好ましい。上記以外の、または上記に加えて他の種類のコンピュータシステム（たとえば、コンピュータのローカルエリアネットワーク、双方向テレビ、携帯情報端
末、双方向無線通信デバイス、適切な計算能力とメモリなどを備える電子デバイス）を使用して、本発明を実施することも可能である。
【００４４】
図５は、図２〜図４に示すシステム２００，３００，４００によって実施可能なビデオゲーム開発通信方法５００を示す。ステップ５０４において方法５００は、ビデオゲーム開発システムまたはネットワーク内の中央ハブアプリケーションのロードまたは供給により開始する。使用中の、または後にネットワークに接続可能な各ゲームプラットフォームまたはコンソールの通信データまたはライブラリは、中央ハブアプリケーションに対し利用可能とされてもよい。ステップ５１０において、方法５００は更に、クライアント側通信データまたはハブライブラリを、各開発ツール（またはツールを動作させるワークステーション）に供給する。クライアント側ライブラリは、ワークステーションメモリに保存されたランタイムライブラリであってもよい。クライアント側ライブラリは、ツールと中央ハブアプリケーションとの通信を可能にするデータまたは情報（たとえば、メッセージング構成／フォーマットおよび／または他の通信プロトコル）を含む。ステップ５２０において、方法５００は更に、開発ネットワークまたはシステムの受信者のリストを作成するために、開発ツールおよびまたは１つ以上のビデオゲームをハブアプリケーションに登録する。ツールは、特定のゲームデータが変更されると通知されるように登録されてもよい。一方ビデオゲームは、通常、修正したゲームデータを含む通信／メッセージをツールから受信するように、サブシステムの様式で登録される（たとえば、材質のサブシステム、オブジェクトのサブシステム、テクスチャ設定のサブシステム、照明のサブシステムなどは各々、開発システムまたはネットワークにリンクしたゲームプラットフォーム上で動作する特定のビデオゲームのハブアプリケーションに登録されてもよい）。システムのこのような態様により、ゲームに依存する代わりに、ツールが特定のサブシステムに対しメッセージを宛てて、適切なサブシステムを決定することができる。
【００４５】
方法５００はその後、ツールまたはゲームから送信される次のメッセージについて、ハブアプリケーションが通信ネットワークをモニタリングすることを含んでもよい。ハブにおいてメッセージが受信されると、方法５００は更にステップ５４０において、メッセージの受信者５４０を識別するように機能するハブアプリケーションを使用する。たとえば幾つかの実施形態において、ツールはアドレスを指定しない一般的な方法でメッセージを送信してもよく、このような場合メッセージはハブの受信者リストのすべての受信者へ、または特定の種類のメッセージまたはメッセージコンテンツの対象のサブセットに送信されてもよい。他の場合メッセージは、ツールによってこのメッセージ（たとえば、１つのプラットフォーム上または他のツール上で動作するゲームに対するメッセージ）の受信者の１人、複数、（または１組）を指定する形態で送信されてもよい。ステップ５５０において、ハブアプリケーションは、識別された受信者および識別された各受信者に関連した通信データ（たとえば、規則、ライブラリなど）に基づき、適宜メッセージの翻訳および／または再フォーマットを行う。たとえば、ツールからのハブ用フォーマットのメッセージは、第１のゲームプラットフォーム、および更に第２のゲームプラットフォームの通信データ／規則に準拠するように再フォーマットまたは翻訳されてもよい。その後ステップ５６０において、方法５００は更に、ハブアプリケーションを用いて、すべての識別された受信者に対して、またはメッセージ中のゲーム情報を要求するクライアントに対してメッセージを転送する。幾つかの場合において、ハブアプリケーションは、各プラットフォーム（および／または各受信者など）に対するオープニング通信リンクまたはソケットを取り扱う。ステップ５３０において、方法５００は更に、追加のゲーム開発または関連したメッセージを待機する。あるいは、ステップ５９０において終了する。一般に、方法５００はツールとして１対１の通信に使用されてもよく、または開発ネットワークの他の送信者が受信者またはアドレスを指定してもよい。方法５００は１対多の接続にも対応する。あるいは、ツールとしてのブロードキャスティング通信方法が、特定のゲームデータに対して変更（たとえば、ゲームロジックの一部の微調整）を行うことができ、ハブアプリ
ケーションが送信する一般的なハブ用フォーマットのメッセージをすべての対象の受信者（たとえば、変更の影響を受けるすべてのゲームまたはゲームサブシステム）に送信できる。その結果、開発者はゲームの動作によって変更を実施するために、各プラットフォームに対してメッセージの作成および送信を行う必要がない。
【００４６】
図６は、複数の異なるゲームプラットフォームまたはコンソール（たとえば、マイクロソフト社のＸｂｏｘ（登録商標）、ソニー社のＰｌａｙｓｔａｔｉｏｎ（登録商標）コンソール、任天堂社のＧａｍｅｃｕｂｅ（登録商標）またはＷｉｉ（登録商標）など）のビデオゲームのライブオーサリングのサポートに特に適合したゲーム開発システム６００を示す。システム６００は、図３に示すシステム３００により詳細に説明したものと類似の数々のコンポーネントを含む。図３において、類似の参照番号は類似のコンポーネントに対して使用されており、図３の説明は図６にも適用される。たとえば、システム６００は、通信ハブアプリケーション３５４を動作させるハブサーバ３５０を含む。通信ハブアプリケーション３５４は、コンピュータ６１０上で動作するゲーム開発ツール３１６，３１８からメッセージ６９０，６９１を受信するように機能する。これらのメッセージ６９０，６９１は、ツール３１６，３１８の組み込みライブラリとして図に示すハブ通信ライブラリ６１５，６１７にしたがってフォーマットされる。またハブアプリケーション３５４はメッセージを処理するように機能して、通常、メッセージ６９０，６９１のコンテンツから、および対象の一連のクライアントに関するクライアントリスト３５８との比較（たとえば、他のツール３１６，３１８、ゲーム６７４，６８４、または中央に配置／保存されたゲームデータ６４４に対するストレージ管理コンポーネント）から、メッセージ中に指定された１組の受信者を決定する。受信したメッセージ６９０，６９１はその後、該受信者の通信データ３６０（たとえば、プラットフォーム６７０の予期／要求するフォーマット）に基づき、各受信者に対して再フォーマット／翻訳され、ネットワーク３４０（または図に示さないが直接の接続）によってこれらの受信者へ転送される。
【００４７】
同様に、開発コンピュータシステム６１０は、ＣＰＵ３１２と、Ｉ／Ｏデバイス３１４と、ツールＧＵＩ３２２にゲームデータを含む情報を表示するためのモニタ３２０とを備える点で、システム３１０に類似している。システム６１０はまた、１つ以上のゲーム開発ツール３１６を動作させるためにＣＰＵ３１２を使用する。この場合、各ツール３１６，３１８は、組み込みのクライアント側ライブラリ６１５，６１７を用いて通信ハブアプリケーション３５４とリンクし、通信を行える。このクライアント側ライブラリ６１５，６１７は、ハブアプリケーション３５４とのインタフェース方法および通信方法（オーサリングメッセージ６９０，６９１のフォーマット方法を含む）を定義する。システム６００はデータストレージサーバ６４０を含んでおり、このデータストレージサーバ６４０は、ネットワーク３４０を介してツール３１６，３１８によってアクセス可能である。またデータストレージサーバ６４０は、ゲームアプリケーションデータ６４４（たとえば、作成したオブジェクト、キャラクタ、モデル、アニメーションなどのゲームアセット、ゲームロジック、パラメータ／変数設定、およびビデオゲームを動作させるうえでゲームエンジンが使用する他の情報）を保存するメモリ６４２を備える。ゲームツール３１６，３１８がデータ６４４にアクセスする（たとえば、ツールＧＵＩなどに現在値を表示する）と、ツール３１６，３１８によるアクセスを効率よくすべくゲームデータ６３０（たとえば、ゲームアセット６３２、ゲームロジック６３４、および変数／パラメータ設定６３６）を保存するために、ツールキャッシュまたはメモリ６２４がＣＰＵ３１２によって使用されてもよい。
【００４８】
開発コンピュータシステム６１０の動作時、開発者は複数のゲーム開発ツール３１６，３１８を呼び出してよい（すなわち、用いてよい）。たとえば、ロジック調節ツール３１６，３１８のいずれかが使用されてもよい。ロジック調節ツール３１６，３１８は、現在のゲームロジック６３４または設定６３６を示し、且つ論理値の選択肢を備えるプルダウ
ンボックス、数値調節用のスライドバー、データ入力ボックスなどにより、（たとえば、キャラクタがどの程度速く走るか、キャラクタがどの程度高くジャンプするか、敵対者が何回転倒するかなどについての）簡単な調節または微調整を可能にする。新しいアニメーションの作成、または既存のモデルもしくはオブジェクトの修正を、たとえばモニタ３２０に表示されるＧＵＩ３２２においてテクスチャの変更、画面内での位置移動、大きさの修正などにより実行するために、他のツール３１６，３１８を用いてもよい。
【００４９】
システム６００の重要な一態様によると、開発者は、複数の異なるゲームプラットフォーム上（たとえば、同時に動作するソニー社のＰＳ３および任天堂社のＷｉｉコンソール上など）で、以前にビルドした動作中のビデオゲームにおける変更に対するフィードバックを、即時またはリアルタイムに取得することができる。図に示すように、システム６００はゲームアプリケーション６７４，６８４を起動するためにゲームエンジン６７２，６８２を含む少なくとも２つのゲームプラットフォーム６７０，６８０を備える。動作するビデオゲーム６７４，６８４の機能は、部分的には、ゲームアセット６７６，６８６（たとえば、キャラクタおよび他のアニメーションの３次元モデル、レベル設計、ゲームプレイロジック、照明設定、テクスチャ、カラーリングなど）によって制御される。ビデオゲーム６７４，６８４がエンジン６７２，６８２によって動作する場合、プラットフォームまたはゲームシステム６７０，６８０のビデオディスプレイ６７８，６８８は、テスタなどのプレイヤ（この場合は開発者）に対するゲーム表示に用いられる。
【００５０】
リアルタイムフィードバックを供給するために、開発コンピュータシステム６１０は、各開発ツール３１６，３１８に関連した、または組み込みのライブオーサリングモジュール６１６，６１８を含む。ライブオーサリングモジュール６１６，６１８は、ビデオゲームのゲームデータ６３０に対する変更または追加を生じさせる（実行する）ように機能して、ハブサーバ３５０の受信者のリスト（または対象のクライアント）３５８に対して、ツール３１６，３１８からのオーサリングメッセージ６９０，６９１で示すようにハブアプリケーション３５４によりブロードキャストを行う（図７により説明）。オーサリングメッセージ６９０，６９１は、ハブアプリケーション３５４が受信できるように、クライアント側ハブ通信ライブラリ６１５，６１７にしたがってフォーマットされる。一方ハブアプリケーション３５４は、プラットフォーム／クライアント通信データ３６０を用いて各メッセージを翻訳し、ネットワーク３４０を介して（または直接）受信者のリストに送信する。（必要な場合に）再フォーマットされたオーサリングメッセージ６９０，６９１の受信者は、動作中のアプリケーション６７４，６８４であってもよく、ゲーム開発ツール３１６，３１８の他の部分であってもよい。これにより、開発者はツール３１６（たとえば、Ａｄｏｂｅ  Ｐｈｏｔｏｓｈｏｐ）を用いてゲームアセットの変更を実施できる（たとえば、キャラクタの（スキン）または服装を変更できる）。更に、この変更をオーサリングメッセージ６９０によってブロードキャストすることができ、通信ハブアプリケーション３５４によって適切なプラットフォーム／受信者の形態に分散される。ゲームアセット６７６，６８６が、ハブアプリケーション３５４から受信したゲームデータ更新メッセージ６９４，６９６に基づき更新されると、動作中のゲーム６７４，６８４の両方における変更の結果が、システム６１０の開発者またはユーザによって確認される。変更はまた、ハブアプリケーション３５４からの別の更新メッセージ（図示なし）により、別のゲーム開発ツール３１８（たとえば、Ａｕｔｏｄｅｓｋ  Ｍａｙａ）に対してブロードキャストされてもよい。新しいゲーム６４４のゲームデータを更新し、ツール３１６を用いて行った変更を反映するように、ゲームデータ更新メッセージ６９２も、ハブアプリケーション３５４からデータまたは中央ストレージサーバ６４０に送信されてよい。
【００５１】
このように、ツール３１６，３１８からのオーサリングメッセージ６９０，６９１のいずれかを１つを用いて、任意の数のゲームプラットフォーム６７０，６８０において、並びに他のツール３１６，３１８において複数の変更を同時に実施できる。これは、オーサ
リングがライブである、すなわち、リアルタイムフィードバックにより実行されるので、開発者が各プラットフォーム６７０，６８０の知識を持たなくても、複数のメッセージの作成および送信を行わなくても、並びに動作中のゲームアプリケーション６７４，６８４の新たなビルドの再処理すなわち作成を行わなくても実現可能である。ゲームの再ビルドは、対照的に、完了まで数分を要し得るため望ましくない。
【００５２】
図７は、図６に示すシステム６００の動作によって実施可能なものなど、本発明の一実施形態のライブビデオゲームオーサリング方法７００を示す。この方法７００は、ステップ７０６において、新しいビデオゲームの作成やワークステーションへのツールのロード（または、ツールをネットワークもしくは分散コンピュータ環境においてサーバから利用可能とすること）に用いられる複数のビデオゲーム開発ツールを選択することなどによって開始する。ビデオゲームは、１つ以上のビデオゲームプラットフォーム上で使用できるように設計されてもよい。ステップ７０５において、この１組のビデオゲームプラットフォームまたはコンソールが選択または定義されてもよい。上記のように、ゲームロジック、オブジェクト、テクスチャ、照明、カラーリング、および他のゲームアセット／データに対する修正は、各プラットフォームのゲームエンジンによって様々に処理されてもよく、その結果、開発者が各種プラットフォーム上で動作中のゲームに対する変更の結果を（たとえば、表示されたゲームを即時に比較できるように、隣同士のまたは隣接するプラットフォームの表示により）リアルタイムで確認できることが望ましい。
【００５３】
ステップ７１０において、方法７００は更に、ハブ通信用のゲーム開発システムを形成し、たとえば、ツールがハブアプリケーションの理解するフォーマットの１つのメッセージを、受信者のリストの決定、各受信者の通信要件に基づくメッセージの翻訳／再フォーマット、および１組の受信者に対するオーサリングまたはゲームデータ更新メッセージのブロードキャスト／転送を可能にするハブアプリケーションによって送信可能となる。この目的のために、クライアント側ライブラリは、ゲーム開発者のコンピュータまたはワークステーション（たとえば、各ゲームツールに組み込まれているもしくはアクセスされるモジュール）上に提供され、ツールがハブアプリケーションに対して適切にフォーマットされたメッセージと通信できるようにしてもよい。またハブアプリケーションがシステムに設けられ、ツールと（たとえば、通信ネットワークを介して）通信を行うようにリンクされる。ハブアプリケーションは、通信ライブラリまたはデータセット（たとえば、ゲームプラットフォームＳＤＫなどによって提供される、開発システム内の潜在的受信者リストに関連したクライアントとの通信を管理するための通信ライブラリ）へのアクセスが与えられる（この開発システムには、他の開発ツール（たとえば、ＰＣのクライアントはハブアプリケーションによって利用／サポートされてもよい）およびゲームデータ中央ストレージが含まれる）。
【００５４】
ステップ７２０において、方法７００は更に、１つ以上の開発コンピュータシステム上に１つ以上のライブオーサリングモジュールを供給および／またはロードする。たとえば、１組の開発ツールをサポートするために、１つのオーサリングモジュールが供給されてもよい。あるいは、開発ツールを用いてゲームデータを変更した場合に各開発ツールがハブアプリケーションとの通信をサポートするように、インスタンスが供給されてもよい。ステップ７２８において、方法７００は更に、開発者がゲーム開発ツール（別の機構）を用いて、新しいゲームアセットの作成または既存のゲームデータもしくはアセットの修正を実行する（たとえば、ゲームの特定の動きまたは部分が一層容易または困難になるように、ロジックを変更する）。
【００５５】
ステップ７３０において、方法７００は、自動化されたメッセージングがライブオーサリングモジュール内で起動されたか否かを判断することを含む。たとえば、ライブオーサリングモジュールのデフォルト設定として、ゲーム開発ツールがゲームアセットまたはゲ
ームデータの作成または更新に使用されているオーサリングモジュールにリンクされると、オーサリングメッセージが自動的にブロードキャストされてもよい。他の実施形態において、ゲーム開発者は、オプションとしてこのようなメッセージングの自動化を行ってもよい。あるいは、中央通信ハブを介して動作中のビデオゲーム（および対象の別のクライアント／受信者）にオーサリングメッセージを送信するようにツールを用いて変更を行った後、オーサリングモジュールによって指示を受けるというオプションを選択してもよい。この点に関して、メッセージングが自動化されていない場合（たとえば、開発者による更なるアクションなしでオーサリングモジュールによって処理される場合）、方法７００の更にステップ７４０において、ライブオーサリングモジュールは、ユーザまたは開発者に対してゲーム更新メッセージを送信するようにプロンプトを示す。このプロンプトは、たとえば、ワークステーションのモニタまたはツールＧＵＩにメッセージを表示して、更新されたデータをオーサリングメッセージにより送信すべきか否か、または開発者に後で（たとえば、別のアセットの追加または変更時に）注意するか否かについて問い合わせることによって行われる。方法７００は更にステップ７４６において、メッセージの送信が認可されるか否かを判断することを含む。認可されない場合、方法７００は図に示すステップ７４０に続いてもよく、あるいはステップ７２８に戻ってもよい（たとえば、ゲームアセットに対する次の変更を待つ）。他の実施形態／実施例において、データは可能であれば常時送信され、一般的には常時処理される。そのような場合、方法７００は特に、１つの変更を省略し、第１の変更に依存する第２の変更を許可した時（これによって問題が生じ得る）には、ユーザにプロンプトを与えるように適合されている。
【００５６】
メッセージングが自動化される場合、または認可されている場合、方法７００の更にステップ７５０において、オーサリングモジュールは、オーサリングメッセージを通信ハブアプリケーションに送信するように機能する。オーサリングメッセージは、ハブアプリケーション（たとえば、クライアント側ライブラリ）が呼び出すフォーマットである。メッセージコンテンツは、一般にゲームデータの追加（たとえば、新しいオブジェクトもしくはキャラクタ）、または既存のゲームアセットに対する変更（たとえば、ゲームロジックの修正；変数、パラメータ設定、もしくは位置の変更など）である。ステップ７６０において、ハブアプリケーションはメッセージを受信し、メッセージを受信する１組の受信者またはクライアントのセットを決定し、該受信者との通信を定義／制御する対応する通信データセットに基づき各メッセージを翻訳し、識別された各受信者にゲームデータを有するメッセージを送信または転送する。
【００５７】
ステップ７７０において、ビデオゲームのゲームデータは、（たとえば、１つ以上のワークステーション上で作業中の１人以上の開発者によってアクセス可能な中央の記憶場所における）オーサリングメッセージのゲームデータを反映するように更新されてもよい。ステップ７８０に方法７００は続き、ゲームエンジンは、開発ツールからブロードキャストされたオーサリングメッセージにより示されるように、更新されたゲームデータまたはアセットを含むゲームアプリケーションを動作させる。方法７００はステップ７９０において終了してもよく、あるいはステップ７２８に戻って、開発者によるゲームデータの更なる修正もしくは追加を可能としてもよい。このように、開発者は、ビデオゲームに対する１つまたは１組の変更を許可でき、ゲームデータまたはアセットに対する１つ、２つ、３つ、またはそれ以上の追加および／変更を有する１つのオーサリングメッセージをブロードキャストできる。更に、これらの変更／追加が１つ、２つ、またはそれ以上のゲームプラットフォームまたはコンソール内で動作するゲームアプリケーションに対して影響した結果を確認できる。
【００５８】
図８Ａと図８Ｂは、たとえば異なる２社のゲームコンソールによって、２つの異なるゲームプラットフォーム上で動作可能なビデオゲームのスクリーンショット８１０，８２０を示す。多くの場合、各ゲームプラットフォームに対して別個のセットを作成するよりも
、ビデオゲームに対して１組のゲームデータを作成することが好ましい。また、２つの異なるプラットフォーム上で動作するゲームアプリケーションは、コンソールのモニタ上に表示されるときにはほぼ同一に見える場合があるが、通常、この表示には少なくとも微小な違いが存在する。幾つかの場合において、ゲームアセットに対する変更（たとえば、背景要素の照明レベルまたはテクスチャ）は１つのプラットフォーム上で所望の外観を有し得るが、第２のプラットフォーム上では望ましくない外観または効果を有してもよい）。また、エンジンの準備を整えるためにソースデータを必要とする異なる前処理ステップを用いてもよい。これらのステップはハブへの送信の一部として実行可能であり、幾つかの場合において、データの傍受、処理、および再送信を行うハブが実行する更新をリッスンする別のツールによって実行可能である。
【００５９】
たとえば、ゲームアプリケーションおよび／またはゲームアプリケーションを動作させるゲームエンジンによって使用されるゲームデータまたはアセットは、スクリーンショット８１０，８２０において同一であってもよい。図に示すように、服装８１４を有するゲームキャラクタ８１２は、フロア／地面８１８からゲームオブジェクト（たとえば、この場合は切り株）の上へジャンプする。キャラクタ８１２は高さＨｊｕｍｐまでジャンプすることが示されており、オブジェクト８１６は特定の高さ、Ｈｏｂｊｅｃｔを有する。異なるゲームプラットフォームに対応するスクリーンショット８２０において、キャラクタ８２２は衣服８２４を有し、衣服８２４の外観は衣服８１４と異なってもよい。同様に、ゲームショット８２０において、フロア８２８のテクスチャはフロア８１８のテクスチャと類似しているが、わずかに異なる。更に、オブジェクト８２６が含まれており、その高さＨｏｂｊｅｃｔはオブジェクト８１６の高さとは異なる、および／またはジャンプの高さＨｊｕｍｐは、キャラクタ８２２の場合は異なってもよい。この例示から、１組のゲームデータの処理は異なってもよく、２つの異なるプラットフォーム上で動作するゲームアプリケーションに対して異なる結果を生じ得ることが分かる。すなわち、ゲームデータまたはアセットに対して変更が実施される間に（たとえば、「ライブ」で）、開発者は動作中のゲームを確認することが望ましい。好ましくは、ゲームアセットに対する変更または追加が望ましいか（または効果的か）について決定できるように、複数のプラットフォーム上で動作する同一のゲームを確認することが望ましい。
【００６０】
図９Ａと図９Ｂは、ゲームにおいて、および２つの同じプラットフォームに対して同じ場所／位置にあるビデオゲームのスクリーンショット９１０，９２０を示す。ただし、ゲームデータに対して複数の変更が行われたものである。これらの変更は、本明細書に記載のライブオーサリング技術を用いて（たとえば、複数のゲームアセットを変更し、更に変更したコンテンツを用いてライブオーサリングメッセージを発行することによって）行ってもよい。幾つかの実施形態において、１つの変更または追加は、各メッセージにより行ってもよいが、他の実施形態においては、開発者が複数の変更を行い、すべての変更を１つのオーサリングメッセージにより送信してもよい。図に示す例においては、開発者がゲーム開発ツールを用いて、ゲームデータに対し複数の変更を行っている。ゲームロジックは、プレイヤの入力に応じてキャラクタ９１２，９２２のジャンプの高さＨｊｕｍｐが一層高くなるように修正されている。オブジェクト９１６，９２６の高さＨｏｂｊｅｃｔも低くなるように修正されている。また、フロア／地面９１８，９２８のテクスチャも修正されている。
【００６１】
修正したゲームアセット／データは、スクリーンショット９１０，９２０に関連した２つのゲームエンジン／ゲームプラットフォームによって使用される。しかし図に示すように、ゲームデータに対する変更によって、ゲームの表示またはゲームの出力に少なくとも部分的に異なる結果または効果が生じる。たとえば、フロア９１８，９２８のテクスチャは多少異なって見える場合があり、キャラクタがジャンプする高さがわずかに異なる場合があり、および／またはオブジェクト９１６，９２６の高さが同じゲームデータを使用す
る２つのプラットフォームにおいて異なる場合がある。勿論、ゲームデータのすべての変更または追加によって、異なるプラットフォームで異なるゲーム効果が生じるとは限らない。しかし、開発者が自身で行う編集またはオーサリングの効果をリアルタイムで（またはゲームの表示が変更に基づき修正されるとほぼ即座に）検証できることは非常に有用である。また、ゲーム設計中のすべてのプラットフォームについてこの効果が検証／テストされることは非常に有用である。通信ハブアプリケーション技術を用いるライブオーサリングツールは、効率的なメッセージングを用いて、並びに各プラットフォーム上でゲームの新しいビルドを作成する反復ステップを必要としないで、ゲーム開発システムにおけるライブオーサリングを実行可能にする（たとえば、ライブオーサリング処理の有用な部分として、異なるプラットフォーム上で動作する複数のゲームのビルドが、通信ハブに対してメッセージを送信するツールまたは開発ワークステーションと同時にゲームデータの変更を受信する）。また記載のとおり、複数のコンテンツ／ロジック変更をリアルタイムで送信／実行できるため、開発者がビデオゲームに対して数々の編集／変更を行う効率が有意に高められる。
【００６２】
幾つかのゲーム開発環境において、複数のゲーム開発ツールが、１つ以上のビデオゲームプラットフォーム上のビデオゲームの同一のライブインスタンスと通信を行うことが望ましい。たとえば、ゲームデータの異なる部分（たとえば、テクスチャ設定、照明設定、ゲームロジックなどのレベル設計およびゲームアセット）の変更を含むビデオゲームに対し開発者が作業を行うとき、２つのツールを同時に使用すると有用な場合がある。他の例において、２人のゲーム開発者が、同一のまたは異なるゲーム開発ツールを用いて、１つのビデオゲームにおける同じ部分または場所に同時に作業を行いたい場合がある。幾つかの実施形態において、ハブアプリケーションにより上記のように構成されるゲーム開発システム（たとえば、図２〜図４および図６などを参照）を用いて、個々人（たとえば、開発チームのメンバ）によるコンテンツ（またはゲームデータ）の変更が同じゲームにおいて同時に（または、少なくとも、ゲームインスタンスを停止し、１組の変更を行い、ゲームを再ビルドし、それから次の開発者が該ゲームに対し作業を行うことが可能となるといった必要はなく）反映可能とされてもよい。幾つかの場合において、開発者それぞれのツールが通信のリッスン（たとえば、ハブなどによるクライアントの登録）を行って、クライアント側（たとえば、別個のワークステーション）のゲームデータをリアルタイムで、または継続／ライブ様式で更新してもよい。具体例として、Ａｄｏｂｅ  Ｐｈｏｔｏｓｈｏｐ（または別のゲーム開発ツール）を使用するテクスチャアーティストは、Ａｕｔｏｄｅｓｋ  Ｍａｙａ（または別のゲーム開発ツール）を使用する世界のデザイナと同時に、または少なくとも部分的に同時に作業を行うことができる。また、テクスチャアーティストがテクスチャの微調整または更新を行うと、１組のビデオゲームプラットフォーム上で動作するゲームインスタンスにおいて、及び世界のデザイナのビューまたはＭａｙａのツールＧＵＩにおいて、該変更を反映できる。更に、世界のデザイナは、ゲームデータ（たとえば、オブジェクトの位置）の変更または微調整を行うことができ、行われる変更は、他の開発者によって調節またはオーサリングされるものと同一のテクスチャであってもよい。動作中のゲームインスタンスおよびゲームツールＧＵＩに対するリアルタイム（またはほぼリアルタイムの）フィードバックによるこのような共同的なオーサリングは、ゲーム開発者が用いる１対１の（ツール−ゲーム間の）接続においては今まで利用できなかった。
【００６３】
図１０は、共同的なオーサリングの方法および機能に適合されたビデオゲーム開発システム１０００を示す。システム１０００は、共同的なオーサリングにおいて使用し得る部分を強調するために、いくらか簡略化して示されているが、システム１０００は、図２〜図４および図６に示す本明細書に記載のコンポーネントおよびソフトウェアデバイスを含んでもよい。ビデオゲームの共同的なオーサリングをサポートするために、システム１０００は、同じ作成者（オーサ）またはゲーム開発者、より典型的には異なる作成者または
ゲーム開発者によって操作可能な１組の開発システム１０１０，１０３０を含む。モニタ１０１２，１０３２は、１つ以上のゲーム開発ツール１０２０，１０４０にしたがって各システム１０１０，１０３０に提供される。ゲーム開発ツール１０２０，１０４０は、本明細書に記載のとおり、通信ハブアプリケーション３５４を動作させるハブ３５０と通信を行えるようにリンクされている。また、ハブアプリケーション３５４は、プラットフォームおよび他のクライアントの通信ライブラリまたは規則セット３６０と、登録されたクライアントリスト３５８とを用いて、ツール１０２０，１０４０とライブ動作中ビデオゲームインスタンス１０７４との間の通信、および同一のまたは異なるコンピュータ上の他のツール１０２０，１０４０との通信をサポートする。
【００６４】
システム１０００の動作時、ゲーム開発ツール１０２０，１０４０は、中央ゲームデータストレージ（図１０では略）にアクセスし、ゲームデータ１０２８，１０４６をメモリまたはキャッシュ１０２６，１０４４に保存する。ツール１０２０，１０２４は、モニタ１０１２，１０３２を用いて、ツールＧＵＩ（またはツールインタフェース）１０１４，１０３４を表示する。このツールＧＵＩ１０１４，１０３４はゲームデータ１０２８，１０４６を含み、またはゲームデータ１０２８，１０４６に基づき作成される。ツール１０２０，１０４０の動作と同時に、システム１０００は、ツール１０２０，１０４０によって動作されるビデオゲームのインスタンス１０７４を動作させるためにゲームエンジン１０７２を使用する１つ以上のゲームプラットフォーム１０７０を備える。このインスタンス１０７４は、ツール１０２０，１０４０の使用によって生成される更新または変更１０７８を含む現在のゲームデータ１０７６に基づき動作する。ゲームエンジン１０７２は、１つ以上のディスプレイおよび／または出力デバイス１０８０の使用またはその使用のサポートを可能にして、ゲーム出力１０８４（たとえばビデオイメージ、音、音楽、ダイアログ、および／または他の音声出力、コントローラ触覚フィードバック、および動作中のゲームインスタンス１０７４によって定義または供給されるもの）を提供する。
【００６５】
本実施形態１０００において、ハブ通信ライブラリまたはデータセット１０２４，１０４２は、各ツール１０２０，１０４０に供給される。また、ハブ３５０にオーサリングメッセージ１０５０，１０５２を送信またはブロードキャストするために、ツール１０２０，１０４０によって使用される。通信ハブアプリケーション３５４はその後、受信者を決定し、メッセージ１０５０，１０５２（ハブアプリケーション３５４が期待／要求するフォーマットのメッセージ）を、識別された各受信者が期待／要求する形態に翻訳し、１組のゲームデータ更新メッセージ１０５４，１０５６，１０５８を送信する。共同的な動作モードにおいて、クライアントリスト３５８はツール１０２０，１０４０を含んでもよい（たとえば、各ツール１０２０，１０４０は、自身が使用／参照するゲームデータ１０２８，１０４６に対する変更をリッスンする）。オーサリングメッセージ１０５０，１０５２は、通常、ツール１０２０，１０４０を用いてゲームデータ１０２８，１０４６に対する更新１０２９，１０４８を作成した後に送信される。これらの変更／コンテンツは、ハブアプリケーション３５４によってデータ更新メッセージ１０５４，１０５６，１０５８に含まれる。これにより、ライブ動作中のビデオゲームインスタンス１０７４が使用するゲームデータ１０７６がゲームデータ更新１０７８を含み、またはゲームデータ更新１０７８に基づき供給される。その結果、プラットフォーム出力デバイス１０８０が提供するゲームイメージ／ゲーム出力１０８４は「ライブ」となり、またはオーサリングメッセージ１０５０および／もしくは１０５２の送信後にリアルタイムフィードバックを供給する。
【００６６】
有意なことに、メッセージ１０５０，１０５２は、開発システム１０１０または１０３０のユーザがツール１０２０，１０４０を用いてゲーム１０７４のオーサリングまたは修正を行う作業を継続しているときに、独立に、または共同的なオーサリングをサポートするように互いに重なる様式で送信されてもよい。言い換えれば、「同時の」および／また
は共同的なオーサリングは、通常、複数のツール１０２０，１０４０が１つのゲームインスタンス１０７４（または、複数のプラットフォーム１０７０上で動作する複数のインスタンス）上で動作可能であること、更に（たとえば、ゲームプラットフォーム１０７０の動作およびツールＧＵＩ１０１４，１０３４における動作によって与えられる変化に関して、リアルタイムまたはライブのフィードバックを得るように）互いにおよび／または動作中のゲームと変更または更新を通信することを意味する。ツール１０２０，１０４０うちの一方または両方によって行われた更新１０２９，１０４８はまた、ツールのゲームデータ１０２８，１０４６において反映され、各開発者による作業が各開発者へ適時提供される。また、ツールＧＵＩ１０１４，１０３４は、共同的な作成者変更１０１５，１０３５で示す更新１０２９，１０４８（たとえば、作成者のうちの他の１人によって行われる変更（ただし、ツールＧＵＩ１０１４，１０３４と直接関連したツール１０２０または１０４０を使用しない変更）を含んでもよい。
【００６７】
図１１Ａと図１１Ｂは、図１０に示すシステム１０００の動作時に提供される得るスクリーンショット１１２０，１１４０を示す。図１１Ａに示すように、ゲームプラットフォーム１０７０は、ゲームのインスタンス１０７４を動作してもよく、第１組のゲームデータ１０７６を用いて、プラットフォームモニタ１０８０のスクリーンショット１１２０に示す出力１０８４を生成してもよい。スクリーンショット１１２０において、キャラクタ１１２２が背景要素／オブジェクト１１２８（たとえば、フロアまたは地面など）から他のゲームオブジェクト１１２６（たとえば、プラットフォームまたは切り株など）にジャンプしている。図に示すように、切り株またはゲームオブジェクト１１２６は、ゲームレベルまたは背景において特定の位置にある。また、フロアまたはゲームオブジェクト１１２８は、テクスチャ１１３０を有する（開発／完了の最初の段階にあることを示す）。
【００６８】
図１１Ｂに示すように、ゲームプラットフォーム１０７０は、ゲームのインスタンス１０７４を継続して動作させてもよいが、ゲームデータ変更／修正１０７８を用いて更新された１組のゲームデータ１０７６を使用する。この例において、更新１０７８は２つのツール１０２０，１０４０によって与えられており、一方のツールはフロア１１２８のテクスチャ設定に使用されており、もう一方はオブジェクト位置の調節に使用されている。したがって、図１１Ｂに示すように、スクリーンショット１１４０は、テクスチャ１１３１について開発／完了のより後の段階におけるフロア１１２８を示す（あるいは、幾つかの場合において、テクスチャ／材質１１３１は新しく作成および適用されたテクスチャ／材質であってもよい）。また、スクリーンショット１１４０において、切り株またはゲームオブジェクト１１２６は、（たとえば、ジャンプまたは他の動きを一層容易または困難にするために）キャラクタ１１２２に対して新しい位置（矢印１１２７により示す）に移動される。複数のツール１０２０，１０４０がゲームのライブインスタンス１０７４にアクセスできるように、且つゲームデータ１０７６に対して更新１０７８を与えられるように、他の数々の変更を行ってもよい。また、変更１０７８（たとえば、テクスチャ１１３０〜テクスチャ１１３１の修正）は、他のツール１０２０，１０４０に送信されてもよい。変更１０７８は更に、他のツールによって実行されたゲーム更新の結果としてテクスチャまたは他の特性が変更したゲームオブジェクトの表現をツールインタフェースが含む場合、ツールＧＵＩ１０１４，１０３４において（適宜）反映されてもよい。
【００６９】
本明細書に記載のハブ通信アプリケーションおよびツール−ゲーム間のプラットフォーム通信技術も、ビデオゲームのユニークで効率的なプレイテストを行うのに利用可能である。以下に記載するプレイテストは、ゲームから収集したデータが、通信ハブを介してプレイテストモニタリングシステム（または開発ワークステーション／コンピュータ）に送信され、プレイテストが１つ以上のモニタ上で行われていることが提示されるという点において、「リアルタイム」と考えられる。リアルタイムプレイテストは、かつて静的なゲームテスト環境とされていたものを、動的な対話型の処理に変える。対話性は開発ツール
または他のデバイスの使用により提供され、ゲーム修正（たとえば、機能または処理を一層容易または困難にするようにロジックを変更すること）が、通信ハブを介してゲームプラットフォームに送信される（ゲームプラットフォームは、メッセージングに対して異なる通信プロトコルを必要とする異なる種類のプラットフォームであってもよい）。このゲームプラットフォームにおいて、ビデオゲームアプリケーションを動作させるゲームエンジンは修正したゲームデータを用いてゲームプレイヤに対し、リバイスしたゲームをほぼ即時に供給する（たとえば、ゲームのすべてを同様に修正してもよく、またはサブセットを修正して、変更により所望もしくは予期する効果が得られるかを決定してもよい）。
【００７０】
幾つかの好ましい実施形態において、ビデオゲームテストシステムは、事後に（たとえば、テストグループがテスト施設を去って数日後または数週間後に）所与のテストセッションの結果を評価するのではなく、ゲームプレイデータをリアルタイムでモニタリングするように適合されている。データが各ゲームプレイヤまたは個々のテスタから収集され、中央位置（たとえば、モニタリングコンピュータシステム、またはプレイテストのモニタリングに適合された開発ワークステーション）に報告が返される。開発者は、この中央位置またはシステムから変更を行うことができる。この変更はたとえば、新しいゲームデータ／コンテンツを有するオーサリングメッセージを通信ハブアプリケーションにより、動作中の１つ以上のビデオゲーム（たとえば、ゲーム修正受信者のセット）に対して送信するように、ビデオゲーム開発ツールを動作させることによって行われる。ゲーム修正または変更の結果は、ほぼ即時に決定できる。これはゲームプレイヤまたは個々のテスタがなおテスト施設内におり、リバイスした動作中のゲームまたはゲームのインスタンスを１つ以上のゲームプラットフォーム上でプレイするためである。たとえば、大多数のゲームプレイなど有意の部分にとって所与のジャンプ（または他のゲームタスク／機能）を完了することが困難である場合、レベルデザイナまたは他の開発チームメンバは、「オンザフライ」でまたはほぼリアルタイムで距離を短くし、動作中のゲームに対するこの修正が成功率を所望のレベルまで高める助けとなるか（たとえば、ゲームのこのポイントにおいて課題を与えるために、なおいくらかのミスが所望されるか）を確認することができる。ゲームデータに対する変更を保存するために、またテストにおいて、他のプレイテストトラッキングデータにしたがってゲーム修正または「微調整（ｔｗｅａｋ）」のトラッキングおよび保存が行われるという変更がなされた場合、統計収集ツールが動作されてもよい。
【００７１】
ゲーム修正は、すべてのゲームプラットフォーム上で、すべての動作中のゲームインスタンスにおいて、またはより小さな割合もしくはサブセット（たとえば、５０パーセント、１０パーセント、８０パーセントなど）に対して行われてもよい。またプレイヤは、これらのグループのうち１つ以上から選択される１つ以上の基準およびサブセットに基づきグループ化されてもよい（たとえば、最高技能レベルのプレイヤらに対しては動作中のゲームのうちの３０パーセントを、３０歳未満のプレイヤらに対しては動作中のゲームのうちの７０パーセントを、男性のプレイヤらに対しては動作中のゲームのうちの４０パーセントを修正してもよく、または、ゲームの割合とプレイヤのグループ化の組み合わせは、この他ほぼどの組み合わせであってもよい）。１つのプレイセッションにおいてゲームの修正と組み合わせたプレイテストをリアルタイムでモニタリングすることにより、プレイテスタまたはプレイヤのテストグループが一定の技能レベルを有することが保証される。しかし以前には、２つのプレイヤグループの技能は非常に異なることが多かったため、技能レベルも様々であった。通信ハブアプリケーションにより、ゲームクライアントは何人であってもほぼすべての種類のゲームプレイ情報またはデータをハブを介して統計収集・処理ツールに接続および送信してリアルタイム処理／評価を行え、モニタリング中の個人（たとえば、開発チームのメンバ）に対して表示を行える。１つ以上のオーサリングまたはゲーム開発ツールが、同じ通信ハブアプリケーションに接続でき、プレイテスト中にプレイテスタのうちの一部または全部に対し、ゲームデータに対する微調整または修正を配布できる。
【００７２】
図１２は、本発明の一実施形態のビデオゲームプレイテストシステム１２００を示す。ビデオゲームプレイテストシステム１２００は、テスト結果のリアルタイムフィードバックを開発者に供給するように、および同じ対照群がゲームのプレイに利用可能である場合、これらの開発者が動作中のビデオゲームに対して変更を行えるように適合される。図に示すとおり、システム１２００はプレイテスト施設１２１０を備え、プレイテスト施設１２００は複数のゲームプラットフォーム１２１２を備える。上記のように、ゲームプラットフォーム１２１２は同じプラットフォームであってもよいが、あるいは、様々なコンソール／システムにおいて同じテストが可能となるように異なってもよい。各プラットフォーム１２１２は、１組のゲームデータ１２１８に基づきビデオゲームアプリケーション１２１６（またテストの準備ができている部分）を動作させるためのゲームエンジン１２１４を有する。ゲームデータ１２１８は、通常初期テスト状態にあるが、その後（以下に記載するように）一定の量（３０分間、１時間、あるレベルまたはゲーム部分の一定回の試行または反復など）のテストまたはプレイデータの収集および処理の後、幾つかのゲーム特性（たとえば、ライフの量、または敵対者の攻撃によるエネルギー損失の量など）の微調整または変更を行うために、テストの修正または変更１２２０を含む。ディスプレイおよび／または出力デバイス１２２４は、プラットフォーム１２１２の一部として提供され、ゲームプレイ時またはテスト時に、ゲームイメージおよび他の出力（たとえば、音声および触覚のフィードバック出力）を供給するように動作する。
【００７３】
ゲーム１２１６が１組のテスタによってプレイされると、ゲームプレイデータ１２３０が通信ハブアプリケーション３５４を含むハブサーバ３５０に送信される。通信ハブアプリケーション３５４は、メモリに保存されているクライアント通信ライブラリ３６０およびクライアントリスト３５８を用いて、ゲームプラットフォーム１２１２およびプレイテストモニタリングシステム１２４０と通信を行う（以下に詳述する）。特にハブアプリケーション３５４は、ゲームプレイデータ１２３０を、モニタリングシステム１２４０（または、統計収集ツール１２５０およびゲーム開発ツール１２５４など、モニタリングシステム１２４０上で動作するクライアントアプリケーション）が許容／期待する形態により、テストデータメッセージ１２３２としてモニタリングシステム１２４０へ転送する。
【００７４】
モニタリングシステム１２４０は、施設１２１０におけるプレイテストの実行時またはその一環として、ビデオゲーム１２１６の態様を微調整する（または精密に調整する）ために、ゲーム開発者または開発チームメンバによって動作されることが多い。この目的のために、システム１２４０はＣＰＵ１２４２によって管理されるＩ／Ｏデバイス１２４３を備える。これにより、オペレータはゲーム開発ツール１２５４を用いて対話により、ゲーム変更もしくはテスト修正１２６４の入力もしくは選択を行え、および／またはゲームテストの結果の確認および操作を行える。また、テストモニタリングインタフェース１２４６の表示（たとえば、集約したプレイテスト情報の開発者への表示）を行うために、プレイテスト統計収集ツール１２５０によって使用可能なモニタ１２４４が設けられる。モニタ１２４４は、ゲーム開発ツール１２５４によっても使用可能であり、開発ツールＧＵＩ１２４５の表示が行え、ゲーム（１２１８で示す）が現在使用中（テスト中）のゲームデータ１２６２の表示が行える。また、開発者がゲームロジックまたは他のゲームアセット／設定に対して変更または微調整を行える（たとえば、ジャンプを短くする、チェックポイント到達時にキャラクタのライフ／エネルギーを増加するなど）。他の実施形態においては、モニタ１２４４の一部である必要はなく、別個のツールが使用される。
【００７５】
上記のように、開発ツール１２５４はゲームオーサリングメッセージ１２７０を用いてハブアプリケーション３５４と通信を行うために、組み込みの（またはアクセス可能な）ハブ通信ライブラリ１２５６を用いてもよい。ゲームオーサリングメッセージ１２７０は通常、ツール１２５４およびインタフェース１２４５によって行われるテスト修正または
ゲームデータ変更１２６４を含む。ハブアプリケーション３５４は、適切なクライアントを決定し、施設１２１２の各種プラットフォーム１２１２上のクライアントまたはゲームアプリケーション１２１６に（または上記の他の開発ツール）に、テスト修正メッセージ１２７６を送信する。その後、修正メッセージ１２７６を受信するクライアントは、修正１２２０を含むようにゲームデータ１２１８を修正してもよい。また、動作中のビデオゲーム１２１６は、同じ対照群によるテストが継続されて、変更の有効性または有用性が検証されるように変更を反映する。変更１２２０を受信するゲーム１２１６は、動作中のすべてのゲーム１２１６であってもよく、またはモニタリングシステム１２４０のオペレータによって選択された幾分小さなサブセット（たとえば、すべてのゲームの一部分、もしくはゲームのサブグループの一部分）であってもよい。
【００７６】
プレイテスト統計収集ツール１２５０は、受信したデータ１２６６のすべてをメモリ１２６０に記録するように機能できるが、通常は集約機能を実行するように、およびインタフェース１２４６において現在処理済み／集約済みのデータ１２４７を示すように構成されている。たとえば、収集ツール１２５０は、１２６６を生成および保存でき、その後、集約統計１２４７（たとえば、プレイヤの人数、様々なゲームチェックポイントにおけるスコア／エネルギーの平均値、あるレベルまたは課題を打ち負かす（ｂｅａｔ）プレイヤの数、および試行回数など）を表示できる。ツール１２５０による統計の集約は、開発者がゲーム１２１６のプレイテストの結果についてリアルタイムフィードバックを得られるように、プレイテスト施設１２１０の動作と同時進行で実行されることが好ましい。統計収集ツール１２５０は、インタフェース１２４６において１２４８に示すように、各プレイヤのプレイヤ統計を表示してもよい。個人プレイヤ統計１２４８は、デモグラフィック情報（たとえば、年齢、性別）と、その他のゲーム毎の情報（たとえば、ゲーム経験年数、技能のランキング）とを含んでもよい（可能な場合は、システム１２００は幾つかの態様において有用であるが、これは技能レベルの知識によるものではなくテスト修正１２２０が送信されて動作中のゲーム１２１６で実施される前後において、対照群が同一であることによる）。
【００７７】
図１３と図１４は、システム１２００の統計収集ツールが提供し得る１対のスクリーンショット１３１０，１４１０を示す。スクリーンショット１３１０において、モニタ画面は２つのエリアに分割される。一方はプレイヤウィンドウ／ボックス１３２０にプレイヤ統計値を表示し、もう一方の部分１３５０は集約したプレイテスト統計を表示するのに使用される。たとえば、プレイヤウィンドウ１３２０は、対照群の各メンバまたは各テスタに対して提供されてもよい。本実施形態においては、ゲームプレイ状態またはゲームスクリーンショット１３２２のサムネイルが提供される。このサムネイルは、プレイヤがゲーム中であることを（たとえば、定期的に更新される静止ショットなどにより）示すが、ゲーム位置／ステータスが文字、記号、および他の表示される情報により提供されてもよい。プレイヤウィンドウ１３２０は、開発者またはプレイテストモニタにゲームプレイヤまたはテスタに関する情報を供給するプレイヤデータセクション１３３０を含んでもよい。たとえば、プレイヤデータ１３３０は、（限定としてではなく）ゲーム／クライアントアドレス１３３６と共に各プレイヤのプレイヤＩＤ１３３２を含んでもよい。これにより、たとえばテストモニタがテスタの特定の１人にテスト修正メッセージを送信して、ゲームの変更をテストすることができる。プレイヤデータ１３３０は、デモグラフィック情報１３３４（たとえば、年齢、性別など）を含んでもよい。プレイヤ／テスタがテストの一部として（または統計収集ツールによって）グループ化される場合、デモグラフィックまたはプレイヤＩＤは、ゲームテスタまたは対照群のどのグループまたはサブセットがプレイヤの指定したものかを示す情報を含んでもよい。ゲームステータス情報１３４０も、プレイヤデータ１３３０（たとえば、現在のスコア１３４２、ゲームにおけるキャラクタのライフまたはエネルギーの量１３４４、および他の統計（ゲームにおける位置など））に供給されてもよい。
【００７８】
本明細書に記載のテストは、ゲーム開発と、現在のゲームバージョンの改善方法についての決定とを行うために、テスタからのゲームデータの処理または集約についてある程度のレベルを有することが好ましい。この目的のために、集約セクション１３５０は、どのゲームが記載されているかを示すタイトル１３５２を含む。また、集約された統計の数、または収集したテストデータの処理および／もしくは集約を行うことにより決定されたゲームテスト結果の数を含む。統計１３５０は、たとえばゲーム１３５４のゲームもしくは一部の平均スコアを含んでもよく、ゲームの特定の場所またはタスクにおいて失われるもしくは死亡するプレイヤのパーセンテージ１３５６を含んでもよく、ゲームの様々なポイントにおけるダメージもしくはエネルギー／ライフの損失の平均１３５８（たとえば、チェックポイントへの到達にはまたはバトルの実行には、どれだけのエネルギーが必要かなど）を含んでもよく、および／またはあるレベルを最初の（もしくは他の）試行で通過する／打ち負かすプレイヤの人数を含んでもよい。他の数々の統計またはプレイテスト結果が、統計収集ツールによって決定されてもよく、スクリーンショット１３１０で示されるインタフェースに表示されてもよい。幾つかの場合において、コンテキスト（たとえば、ゲームにおいて人が死亡または失敗することが多い場所）を供給するために、システムを使用して、オーサリング環境上に重畳可能な空間情報を取り込まれる。
【００７９】
代替または追加のスクリーンショット１４１０において、統計収集ツールは、様々な基準に基づきゲームプレイヤを複数のグループへグループ化するために、並びにそれら様々なグループ（またはプレイヤウィンドウ１３２０および収集統計１３５０）を表示するために使用されてもよい。たとえば、３つのグループ１４２０，１４３０，１４４０を形成するのに使用される基準は、年齢、技能レベル、またはこれらの変数とプレイヤの性別との組み合わせ（たとえば、特定の年齢（１０歳前後など）もしくは特定の性別がゲームのターゲットとなるとき）であってもよい。図に示すように、スクリーン１４１０上の各グループにおいて、テスト監督者が、各グループの様々なプレイヤまたはテスタのステータスを迅速に決定できるように、１組のプレイヤウィンドウ１４２４，１４３４，１４４４が提供される。図示はないが、統計／集約結果ウィンドウ／ボックス（たとえば、１３５０で示す）を各グループ１４２０，１４３０，１４４０に対して提供し、各グループのプレイ経験（たとえば、あるグループはゲームまたはゲームの一部を発見するのが容易または困難であるが、他のグループは非常に異なる経験をする）をテスト監督者がより迅速に比較できるようにしてもよい。スクリーンショット１３１０，１４１０に表示された出力またはゲームテストデータは、ゲーム開発者が（ゲーム開発ツールを動作させることにより）テストまたはゲーム修正の選択を行って、対照群全体において、または特定のグループ、グループの部分、もしくは個人のプレイヤのデバイス／プラットフォームにおいてだけ修正を行うように利用されてもよい。
【００８０】
図１５は、システム１２００の動作によって実施可能なプレイテスト方法１５００を示す。方法１５００はステップ１５０５において、プレイテスト用のビデオゲームの選択、テストプロトコルの構築、対照群または１組のテスタの識別、およびテスタに関するデモグラフィックデータの収集により開始する。ステップ１５１０において方法１５００は、ハブ通信用のテストシステムを構成することを含む。テストシステムの構成は、たとえば、中央ハブアプリケーションのインストール／ロードを行い、このハブアプリケーションをテスト施設のゲームプラットフォームおよびゲーム開発ツールと通信が行えるようにリンクさせることによって行われ、テスト時にリアルタイムのゲーム修正を可能にする。ステップ１５２０において方法１５００は、１つ以上の統計収集ツールをハブアプリケーションにリンクまたは接続することを含む。統計収集ツールは、テストシステム（たとえば、ハブサーバまたは開発ワークステーション）内の任意のコンピュータデバイス上で動作してもよい。ステップ１５３０において方法１５００は、テストグループを識別することと、統計収集ツールによってアクセス可能なメモリにプレイヤデータを保存することとを
含む。
【００８１】
ステップ１５３６において方法１５００は、テスト施設（または、「施設」は特定の物理的な場所または空間に限定されないため、オンラインゲームテストをも含み得る分散テストシステムのプラットフォーム）においてゲームプレイを開始することを含む。ステップ１５３６において、ビデオゲームは、複数のゲームプラットフォーム上で動作する。これらのゲームプラットフォームの構成は同じであってもよい（たとえば、すべて１つのプラットフォーム会社製でもよい）。あるいは、通信ハブアプリケーションによって、統計収集ツール（および開発ツール）が通信可能となる（すなわち、様々なプラットフォームからゲームプレイデータを受信し、開発ツールから動作中のゲームにゲームデータの変更またはオーサリングメッセージを送信する）場合には、ゲームプラットフォームの構成は異なってもよい。ステップ１５４０において、方法１５００は、ゲームがテスタまたはゲームプレイヤの対照群によってプレイされる場合、ゲームプレイデータを収集することを含む。また、このデータの保存、データの集約および／または処理、およびゲームデータに基づく様々な統計値、テストパラメータ、もしくは値の決定を行うために、統計収集ツールを使用することを含む。
【００８２】
ステップ１５５０において、統計収集ツールは、開発ワークステーションまたはモニタリングシステムのモニタ上に、テストモニタリングインタフェースを提供する。このインタフェースは、収集したゲームデータ（たとえば、算出された統計結果および／またはプレイヤデータ、および統計情報）を少なくとも部分的に含む（たとえば、図１３と図１４を参照）。ステップ１５６０において、開発者は、表示されたゲームデータ／統計に基づき、ゲーム変更または修正を行うように機能してもよい（たとえばゲーム開発ツールを動作して、ゲームロジックの変更、ゲームアセットの変更、および／またはその他を行う）。方法１５００は、修正がオーサリングツールを用いて上記のように自動的に行われるか、あるいは開発ツールが送信するオーサリングメッセージ（たとえば、手動によるメッセージの作成および送信）に応じて行われるかを決定することを含む。ステップ１５７０において、修正後、方法１５００は更に、通信ハブアプリケーションを用いてクライアント（たとえばコンテンツに基づき、および／または対照群のゲームのサブセットなどメッセージ中のアドレスに基づき、テスト施設のプラットフォーム上で動作するゲーム））を識別する。メッセージは、様々なプラットフォームに適切なフォーマットで送信される。ステップ１５８０において、ゲームエンジンを使用し、全部のまたは一部のゲームプラットフォーム上でテスト修正を含むビデオゲームを起動する。方法１５００は更にステップ１５４０において、対照群がゲームプレイデータの変更およびテストを行った後、データを繰り返し収集する。ステップ１５６０において、追加の変更を反復処理（たとえば、リアルタイムのゲームテストおよび更新／開発）によって行ってもよい。ステップ１５９０において、方法１５００は終了する（たとえば、プレイテストセッションを終了する）。
【００８３】
本発明は、ある程度の特定的に記載および図示してきたが、本開示は単に一例としてなされたものであり、以下の特許請求の範囲に記載の本発明の精神および範囲から逸脱することなく、要素の組み合わせおよび構成における数々の変更が当業者によってなされることを理解されたい。たとえば、本明細書に記載のプレイテスト方法は、コンピュータソフトウェアが通信ハブアプリケーションによってモニタリングシステムにフィードバックを提供可能なソフトウェアの他の形態および他の製品のテストおよび開発に用いられてもよい。このような製品開発環境において、テスト情報は収集および処理され、そのテストセッションと少なくとも幾らかは重なるように表示される（たとえば、それらのテスタが製品の修正のテストにも用いられる）。ソフトウェア開発またはオーサリングツールを用いて、製品の修正がテスト施設（たとえば、ソフトウェアアプリケーションの動作する１組のコンピュータまたは電子デバイス）に送信される。たとえば、このような修正を含むコンテンツを有するオーサリングメッセージが、通信ハブモジュールまたはアプリケーショ
ンによって送信される。修正した製品は、同一のまたはほぼ同一の対照群によって実施した修正を用いてテストされる。更に、結果／データは、モニタリングステーションにおいて処理および／または表示されるように、統計収集ツールに送信される。この反復的でリアルタイムの処理は、ソフトウェア製品の有用性の問題を迅速に解決するうえで効果的である。また、（テストデータの収集によって測定されるように）テスタのフィードバックまたはテスタの経験に応じて製品の特性および設計の態様を詳細に調整するうえで効果的である。
【図１】
2010148869.tif 000002
【図２】
2010148869.tif 000003
【図３】
2010148869.tif 000004
【図４】
2010148869.tif 000005
【図５】
2010148869.tif 000006
【図６】
2010148869.tif 000007
【図７】
2010148869.tif 000008
【図８Ａ】
2010148869.tif 000009
【図８Ｂ】
2010148869.tif 000010
【図９Ａ】
2010148869.tif 000011
【図９Ｂ】
2010148869.tif 000012
【図１０】
2010148869.tif 000013
【図１１Ａ】
2010148869.tif 000014
【図１１Ｂ】
2010148869.tif 000015
【図１２】
2010148869.tif 000016
【図１３】
2010148869.tif 000017
【図１４】
2010148869.tif 000018
【図１５】
2010148869.tif 000019
【外国語明細書】
2010148869000001.pdf