以下の詳細な説明には例示を目的とした多くの具体的な詳細が含まれているが、当業者であれば分かるように、以下の詳細に対する多くの変形及び変更が本開示の範囲内である。したがって、以下に説明する本開示の態様は、一般性を何ら失うことなく、またこの説明に続く請求項に限定を課すことなく、記述されている。
概して言えば、本開示の種々の実施形態は、シングルプレイヤーモードまたはマルチプレイヤーモードでゲーミングアプリケーションをプレイするユーザにゲーミング制御を提供するシステム及び方法を説明している。詳細には、ゲームプレイコントローラは、ユーザに対するゲームの特定のパートをプレイするように構成されている。たとえば、ゲームプレイコントローラは、ユーザにとって難しい特定のゲームタスクを完了するために自動モードで進行することができる。AIキャラクタが特定のタスクを完了した場合、これらのタスクは、AIゲームコントローラからの支援によってユーザが完了したと特定することができる。さらなる他の実施形態では、ゲームプレイコントローラは、ユーザがゲームプレイを休止した後にゲーミングアプリケーションをプレイして、AIキャラクタをターンオンして特定のタスクを実行するように構成されている。ユーザがアクティブプレイに戻ることを望むときには、ユーザはAIキャラクタを停止することができ、ユーザはゲームを続けることができる。このように、ユーザのゲームプレイはユーザの注意を伴うことなく続く。ゲームプレイコントローラが制御するAI制御キャラクタは、ゲーミング環境内で起きている事に基づいて、またゲーミング環境が有機的に変化するときに、異なる特徴を有する。したがって、競争の激しいマルチプレイヤーゲームでは、ユーザがゲームプレイコントローラにユーザのゲームプレイを引き継がせられることによって、ユーザはゲームから離れることができる(たとえば、食事をする、仕事をするため等)。ゲームプレイコントローラは、ユーザのゲームプレイ(たとえば、プレイングスタイル)をシミュレートするようにAIキャラクタをトレーニングして、マルチプレイヤーゲーミングセッションにおいてそのオンライン存在感が維持されるように、またゲーミングアプリケーションにおいて進行を続けられるようにする。さらに、ゲームプレイコントローラは、難しいタスクを完了するためにユーザに対するゲームをプレイすることができる。たとえば、ユーザが行き詰まったとき(たとえば、緑のドアをどうやって開けるか?)、ユーザはゲーミングシステムにヘルプを問い合わせることができる。ゲーミングシステムは、問い合わせをテキストまたはビデオ形式(たとえば注釈付きビデオクリップ)に転記するかまたは変換する。注釈付きビデオクリップを、問い合わせに回答することができるすべてのエキスパートプレイヤーに送る。たとえば、音声またはテキスト回答は解決方法「金の鍵が必要である」を返してもよい。加えて、エキスパートからのすべての応答を集めて(たとえば、テキストに転記するかまたはビデオに変換して)、もっとも一般的な回答を行き詰まったプレイヤーに返すことができる。また応答をゲーム知識データベース(たとえば、ゲームFAQ)に記憶して、後でアクセスできるようにする。
したがって、本開示の実施形態によって、ゲーミングアプリケーションに参加しているユーザに対してより良好なゲーミング経験が提供される。なぜならば、ゲーミングアプリケーションのハードセクションを通して奮闘するか、またはゲーミングアプリケーションを終了する代わりに、ゲームプレイコントローラは、これらのハードセクションを通してユーザのゲームプレイを制御するように構成され、ユーザは任意の点において自分のゲームプレイの制御を再開できるからである。また、他の実施形態では、前述の遂行を提供し、さらに、ゲーミングアプリケーションに参加しているユーザのゲームプレイから集めた分析を用いることを通してゲーミングアプリケーションのより効率的な開発を提供する。ゲーム開発者に提供されるフィードバックによって、ユーザがどこでゲーミングアプリケーションへの興味を失うかが特定される(たとえば、困難、退屈などによって)。これを開発者が用いて、これらの問題を回避する新しいゲーミングアプリケーションを作ることができる。
明細書の全体にわたって、用語ゲーミングアプリケーションは、ユーザとやり取りアプリケーションを記述する。ある実施態様では、ゲーミングアプリケーションにはビデオゲームが含まれる。本開示の実施形態によって、ゲーミングアプリケーションに参加しているゲーミングユーザに対する支援が提供される。本開示の他の実施形態によって、任意のタイプのアプリケーション(たとえば、ワードプロセッシング、コンピュータ支援設計など)とやり取りしているユーザに支援が提供される。
明細書の全体に渡って、用語ユーザ及びプレイヤーは交換可能に用いることができ、ゲーミングアプリケーション(または任意の他のタイプのアプリケーション)に参加している人を記述することが意図されている。場合によっては、本開示の実施形態は、ゲームクラウドシステム210の中でゲーミングアプリケーションをプレイする「ユーザ」と、やはりゲームクラウドシステム210の中で1つ以上のゲーミングアプリケーションを別個にプレイする1人以上の「プレイヤー」との文脈内で記載されており、ユーザは、他のプレイヤー(たとえば、シングルプレイヤーモードまたはマルチプレイヤーモード)とやり取りしてもよいしそうでなくてもよい。
種々の実施形態の前述の一般的な理解を用いて、次に実施形態の詳細例について種々の図面を参照して説明する。
図1Aに例示するのは、ゲーミングアプリケーションをプレイするユーザにゲーミング制御を提供するシステム105Aである。ゲーミングアプリケーションは、対応ユーザに対してローカルに実行される。本開示の一実施形態により、バックエンドサーバサポート(たとえば、ゲームサーバ205を通してアクセス可能である)は、ユーザのゲームプレイをシミュレートするゲームプレイプロファイルを構築するためのユーザのゲームプレイデータの分析を提供して、ゲーミングアプリケーションをプレイする対応ユーザに対するゲーミングアプリケーションのゲームプレイの自動制御が可能になるようにしてもよい。
図1Aに示すように、複数のユーザ115(たとえば、ユーザ115A、ユーザ115B…ユーザ115N)が複数のゲーミングアプリケーションをプレイしている、ゲーミングアプリケーションはそれぞれ、対応ユーザの対応するクライアントデバイス100(たとえば、ゲームコンソール)上でローカルに実行されている。各クライアントデバイス100は同様に、対応するゲーミングアプリケーションのローカル実行が行われるように構成してもよい。たとえば、ユーザ115Aは、対応するクライアントデバイス100上で第1のゲーミングアプリケーションをプレイしてもよい。第1のゲーミングアプリケーションのインスタンスは、対応するゲームタイトル実行エンジン130Aによって実行される。第1のゲーミングアプリケーションを実装するゲームロジック117A(たとえば、実行可能コード)を対応するクライアントデバイス100上に記憶して、第1のゲーミングアプリケーションを実行するために用いる。説明の目的上、ゲームロジック117Aを、対応するクライアントデバイス100に携帯媒体(たとえば、フラッシュドライブ、コンパクトディスクなど)を通して、またはネットワークを通して送出してもよい(たとえば、ゲーミングプロバイダからインターネット150を通してダウンロードしてもよい)。加えて、ユーザ115Bは、第2のゲーミングアプリケーションを対応するクライアントデバイス100上でプレイしている。第2のゲーミングアプリケーションのインスタンスは、対応するゲームタイトル実行エンジン130Aによって実行される。第2のゲーミングアプリケーションは、ユーザ115Aに対して実行する第1のゲーミングアプリケーションと同一であってもよいし、または異なるゲーミングアプリケーションであってもよい。第2のゲーミングアプリケーションを実装するゲームロジック117B(たとえば、実行可能コード)が、前述したように対応するクライアントデバイス100に記憶されて、第2のゲーミングアプリケーションを実行するために用いられる。さらに、ユーザ115Nが、n番目のゲーミングアプリケーションを対応するクライアントデバイス100上でプレイしている。n番目のゲーミングアプリケーションのインスタンスは、対応するゲームタイトル実行エンジン130Aによって実行される。n番目のゲーミングアプリケーションは第1または第2のゲーミングアプリケーションと同一であってもよいし、または完全に異なるゲーミングアプリケーションであってもよい。第3のゲーミングアプリケーションを実装するゲームロジック117C(たとえば、実行可能コード)が、前述したように対応するクライアントデバイス100に記憶されて、n番目のゲーミングアプリケーションを実行するために用いられる。
明瞭さ及び説明を目的として、本開示の実施形態をユーザ115Aを参照して説明する場合がある。ユーザ115Aは複数のユーザ115のうちのいずれかを表す。
クライアントデバイス100は、種々のタイプの入力デバイス(たとえば、ゲームコントローラ、タブレットコンピュータ、キーボード、ビデオカメラによって取り込んだジェスチャ、マウスタッチパッドなど)から入力を受け取ってもよい。クライアントデバイス100は、少なくともメモリと、ネットワーク150を介してゲームサーバ205に接続することができるプロセッサモジュールとを有する任意のタイプのコンピューティングデバイスとすることができる。クライアントデバイス100のいくつかの実施例としては以下が挙げられる。パーソナルコンピュータ(PC)、ゲームコンソール、ホームシアターデバイス、汎用コンピュータ、モバイルコンピューティングデバイス、タブレット、電話機、または任意の他のタイプのコンピューティングデバイスであって、ゲームサーバ205とやり取りして、バックエンド機能(たとえば、ゲーミング制御またはマルチプレイヤーセッション管理など)を提供することができるもの。
対応ユーザのクライアントデバイス100は、ローカルまたはリモートに実行されるゲームタイトル実行エンジン130Aによって実行されるレンダリング画像を生成するように、またディスプレイ上にレンダリング画像を表示するように構成されている。たとえば、レンダリング画像は、ユーザ115Aのクライアントデバイス100上で実行される第1のゲーミングアプリケーションのインスタンスと対応付けてもよい。たとえば、対応するクライアントデバイス100は、ローカルまたはリモートに実行されると、対応するゲーミングアプリケーションのインスタンスとやり取りして、対応ユーザのゲームプレイを、たとえば、ゲームプレイを駆動するために用いられる入力コマンドを通して実施するように構成されている。
一実施形態では、クライアントデバイス100は、ゲーミングアプリケーションをプレイしている対応ユーザに対してシングルプレイヤーモードで動作している。ゲームサーバ205を介するバックエンドサーバサポートによって、ユーザに対するゲーミング制御(たとえば、自動ゲームプレイ制御)を、たとえばゲームプレイコントローラ171を通して提供してもよい。これについては、以下でより十分に説明する。
別の実施形態では、複数のクライアントデバイス100が、それぞれが特定のゲーミングアプリケーションをプレイしている対応ユーザに対してマルチプレイヤーモードで動作している。その場合は、ゲームサーバを介したバックエンドサーバサポートによって、マルチプレイヤー機能を、たとえばマルチプレイヤー処理エンジン119を通して提供してもよい。詳細には、マルチプレイヤー処理エンジン119は、特定のゲーミングアプリケーションに対するマルチプレイヤーゲーミングセッションを制御するように構成されている。たとえば、マルチプレイヤー処理エンジン130は、マルチプレイヤーセッションコントローラ116と通信する。マルチプレイヤーセッションコントローラ116は、マルチプレイヤーゲーミングセッションに参加しているユーザ及び/またはプレイヤーのそれぞれとの通信セッションを設定及び維持するように構成されている。このように、セッションにおけるユーザは、マルチプレイヤーセッションコントローラ116によって制御されるように互いに通信することができる。
さらに、マルチプレイヤー処理エンジン119はマルチプレイヤーロジック118と通信して、ユーザ間のやり取り(各ユーザの対応するゲーミング環境内での)を可能にする。詳細には、状態共有モジュール117は、マルチプレイヤーゲーミングセッションにおける各ユーザに対する状態を管理するように構成されている。たとえば、状態データは、特定の点における対応ユーザに対するゲームプレイ(ゲーミングアプリケーションの)の状態を規定するゲーム状態データを含んでいてもよい。たとえば、ゲーム状態データは、ゲームキャラクタ、ゲームオブジェクト、ゲームオブジェクト属性、ゲーム属性、ゲームオブジェクト状態、グラフィックオーバーレイなどを含んでいてもよい。このように、ゲーム状態データによって、ゲーミングアプリケーションにおける対応するポイントに存在するゲーミング環境を生成することができる。ゲーム状態データはまた、ゲームプレイをレンダリングするために用いるあらゆるデバイスの状態を含んでいてもよい。たとえば、CPU、GPU、メモリの状態、レジスタ値、プログラムカウンタ値、プログラマブルDMA状態、DMAに対するバッファリングされたデータ、オーディオチップ状態、CD−ROM状態など。またゲーム状態データは、その時点からビデオゲームを実行するために実行可能コードのどの部分をロードする必要があるかを特定してもよい。ゲーム状態データは、図1C及び図2のデータベース140に記憶してもよく、状態共有モジュール117によってアクセス可能である。
さらに、状態データは、対応するプレイヤーに対してビデオゲームを個人化する情報を含むユーザ保存データを含んでいてもよい。これには、ユーザがプレイするキャラクタに対応付けられた情報が含まれているため、ビデオゲームが、ユーザに固有であり得るキャラクタ(たとえば、場所、形状、見た目、衣類、兵器類など)によってレンダリングされる。このように、ユーザ保存データによって、対応ユーザのゲームプレイに対するキャラクタの生成が可能になる。キャラクタの状態は、対応ユーザが現時点で経験するゲーミングアプリケーション内の点に対応する。たとえば、ユーザ保存データは、対応ユーザ115Aがゲームをプレイするときに選択したゲーム難易度、ゲームレベル、キャラクタ属性、キャラクタ場所、残っている命の数、利用可能な命の合計の可能な数、防護具、トロフィー、時間カウンタ値などを含んでいてもよい。またユーザ保存データは、たとえば、対応ユーザ115Aを特定するユーザプロファイルデータを含んでいてもよい。ユーザ保存データはデータベース140に記憶してもよい。
このように、状態共有データ117とマルチプレイヤーロジック118とを用いたマルチプレイヤー処理エンジン119は、マルチプレイヤーゲーミングセッションに参加しているユーザのゲーミング環境のそれぞれの中に、オブジェクト及びキャラクタをオーバーレイ/挿入することができる。たとえば、第1のユーザのキャラクタを、第2のユーザのゲーミング環境内にオーバーレイ/挿入する。これによって、マルチプレイヤーゲーミングセッションにおけるユーザ間のやり取りが、それらの対応するゲーミング環境(たとえば、スクリーン上に表示されたもの)のそれぞれを介して可能になる。
加えて、ゲームサーバ205を介するバックエンドサーバサポートによって、ゲーミング制御機能が、たとえばプロファイラエンジン145、AIパーソナルアシスタント120、及びゲームプレイコントローラ171を通して提供され得る。詳細には、ゲームクラウドシステム210内のプロファイラエンジン145は、1つ以上のゲーミングアプリケーションにおいてユーザのゲームプレイをシミュレートすることができる、ユーザに対するゲームプレイプロファイルを構築するように構成されている。すなわち、ゲームプレイプロファイルはユーザのゲームプレイスタイルを規定する。ゲームプレイプロファイルを、ユーザアカウントデータベース199内の対応ユーザに対応付けられたアカウントに記憶する。ゲームプレイコントローラ171は、ゲームプレイプロファイルにアクセスすることができ、AIパーソナルアシスタント120とともに、特定のゲーミングアプリケーションにおけるユーザに対するゲームプレイを制御することができる。ユーザはシングルプレイヤーモードまたはマルチプレイヤーモードでプレイしてもよい。
全般的に、人工知能(AI)パーソナルアシスタント120はゲームプレイコントローラ171とともに働いて、1人以上のユーザにゲーミング支援を提供する。AIパーソナルアシスタント120は、パーソナルアシスタンスをリクエストし及び/または受け取る目的で対応ユーザにインターフェースを提供するときに、対応ユーザに対して局在化されている。たとえば一実施形態では、ユーザが支援をリクエストしたときに、ゲームプレイ制御の形態での支援を、シングルプレイヤーモードでゲーミングアプリケーションをプレイしているシングルプレイヤーに提供する。ユーザが非効率的にプレイしていて及び/または自分のゲームプレイで苦戦していると判定されたときに、支援に対するシステム問い合わせをトリガしてもよい。また、ゲームプレイ制御の形態での支援を、マルチプレイヤーゲーミングセッションにおいてプレイするシングルプレイヤーに、リクエストされたときに、たとえばプレイヤーが支援を必要としていると判定されたときに、またはユーザが休みを必要とするときに、提供してもよい。
詳細には、AIパーソナルアシスタント120は、対応ユーザ115Aのクライアントデバイス100と密接して働いて、対応ユーザ115Aの現在及び過去のゲームプレイに関するデータを収集するように構成されている。さらに、AIパーソナルアシスタント120は、支援ができるように対応ユーザ115とのインターフェースを提供するように構成されている。
たとえば、ゲームプレイコントローラ171が生成した一連の入力コマンドをインターフェースを通して提供してもよい。入力コマンドは、対応するゲーミングアプリケーションのインスタンスが現時点で実行するユーザのゲームプレイを自動的に制御する。一実施形態では、AIパーソナルアシスタント120を、一実施形態では対応ユーザ115Aのクライアントデバイス100内でローカルに構成してもよい。別の実施形態では、AIパーソナルアシスタント120を、クライアントデバイス100に対してリモートに、またゲームクラウドシステム210から独立して構成してもよい。たとえば、AIパーソナルアシスタント120にネットワーク150(たとえば、ローカルエリアネットワーク、インターネットなど)を通してアクセスしてもよい。さらなる他の実施形態では、AIパーソナルアシスタント120を、ゲームクラウドシステム210内のクライアント100に対してリモートに構成してもよい。その場合は、パーソナルアシスタント120を、ゲームクラウドシステム210内のプロファイラエンジン145に直接結合してもよい。
図示したように、プロファイラエンジン145は、1人以上のユーザに適用可能な初期設定ゲームプロファイルを構築するためにバックエンドサーバ処理を提供するように、またゲームプレイの自動制御を提供するために各ユーザに対する初期設定ゲームプロファイルをカスタマイズするように構築されている。詳細には、ゲームクラウドシステム210を通して、プロファイラエンジン145は、複数のゲーミングアプリケーションをプレイする複数のユーザのゲームプレイを収集して分析することができる。これは特に、ゲームクラウドシステム210が、複数のユーザ115に対する1つ以上のゲーミングアプリケーションのインスタンスを実行しているときにそうである。たとえば、対応ユーザ115Aが任意のゲーミングアプリケーションをプレイしているときに、プロファイラエンジン145はユーザデータを収集して分析することができる。時間とともに、プロファイラエンジン145は、複数のユーザ115のプレイングスタイルを学習することができ、また1つ以上の初期設定ゲームプロファイル(それぞれ、あるタイプのユーザに対する人間ゲームプレイをシミュレートする)を構築することができる。詳細には、初期設定ゲームプレイプロファイルは、典型的なユーザに対する人間ゲームプレイをシミュレートする初期設定ゲームプレイスタイルを規定する。たとえば、あるスタイルは機械的であってもよく、一方で別のスタイルはより戦略的であってもよい。初期設定ゲームプレイプロファイルは、選択されたかまたは割り当てられた初期設定ゲームプレイスタイルに基づいて、任意のユーザに対するゲームプレイを制御するように構成されている。
加えて、プロファイラエンジン145は、対応ユーザ115Aのプレイングスタイルを全般的に及び/または特定のジャンルのゲーミングアプリケーションに対して学習することができ、またプレイングスタイルを規定するプロファイルを構築することができる。最初に、初期設定ゲームプレイプロファイルをユーザに割り当てて、そのプロファイルを用いて、そのユーザに対するゲームプレイを初期設定ゲームプレイスタイルに基づいて制御してもよい。時間とともに、1つ以上のゲーミングアプリケーションをプレイするユーザの複数のゲームプレイをモニタして、プロファイラエンジンはユーザのプレイングスタイルを学習することができ、またユーザのプレイングスタイルと厳密に一致するように初期設定ゲームプレイスタイルを変更することができる。詳細には、ユーザのユーザゲームプレイプロファイルを、ユーザのモニタされた複数のゲームプレイに基づいて初期設定ゲームプレイスタイルを調整することによって生成する。ユーザゲームプレイプロファイルは、ユーザにとって特注/カスタマイズされたユーザゲームプレイスタイルを規定する。
説明するために、ゲームプレイスタイルは、機械的ゲームプレイスタイル及び戦略的ゲームプレイスタイルを含んでいてもよい。たとえば、機械的ゲームプレイは、ゲームプレイを方向付けるためにコントローラ機能をユーザがどのように機械的に操作するかを含む。全般的に、ユーザは非常に迅速にプレイしてもよいし(特にユーザがゲーミングにおけるエキスパートである場合)、またはもっとゆっくりとしたペースでプレイしてもよい(特にユーザがカジュアルゲーマーである場合)。これは、ゲーミングアプリケーション全般をプレイするときのまたは特定のジャンルのゲーミングアプリケーションをプレイするときのユーザの習慣を反映してもよいし、またはユーザがどのように特定のゲーミングアプリケーションをプレイするかを反映してもよい。機械的ゲームプレイスタイルは各ユーザに固有であってもよい。たとえば、あるユーザは特定の指を用いることが難しい場合もあるし、またはその指を失っている。その結果、特定の決まりきったスタイルになる(たとえば、特定の制御ボタンの制御または動きが遅くなる)。
さらに、戦略的なゲームプレイスタイルは全般的に、ゲーミングアプリケーション、またはあるジャンルのゲーミングアプリケーション、または特定のゲーミングアプリケーションをユーザがどのようにプレイするかを反映する。たとえば、ゲーミングアプリケーションにおける次のレベルに到達するために達成すべきいくつかのゴールが与えられたときに、あるユーザはあるゴールから次のゴールに直線的に系統的に進んでもよい。他方では、別のユーザが、各ゴールについてできる限り多くのことをできるだけ迅速に学習するためにゲーミングアプリケーションをプレイしながら、ゴール間をランダムにホップしてもよい。そのユーザは次に、どのようにゴールに到達するかを再順序付けすることを戦略的に決定してもよいし、または同時に1つ以上のゴールに取り組み続けてもよい。また戦略的ゲームプレイスタイルユーザ115Aに固有であってもよい。
さらに、ゲームプレイコントローラ171は、対応ユーザゲームプレイプロファイルに基づいてユーザ115Aのゲームプレイを制御することができる。すなわち、ゲームプレイコントローラ171は、ユーザゲームプレイプロファイル内で規定されたユーザゲームプレイスタイルに基づいて、第1のゲーミングアプリケーションのインスタンスを制御するように構成されている。詳細には、ゲームプレイコントローラ171は、ユーザによってリクエスト及び規定された望ましい結果に達するようにゲームプレイを制御することができる。これはたとえば、タスクを遂行する、ゲーミングアプリケーションの難しいセクションを進行するか、またはそのままの状態を維持することによって行う。ゲームプレイコントローラ171は、結果を実現するためにどのようにゲームプレイを制御するかを規定するゲームデータにアクセスすることができる。たとえば、プロファイラエンジン145は、特定のゲーミングアプリケーションをプレイする複数のユーザのゲームプレイからデータを収集するように、またユーザを困惑させ得るタスク(たとえば、難しいタスク)に具体的に対処するように構成されている。具体的には、より多くのデータが複数のユーザのゲームプレイから収集されるほど、プロファイラエンジン145は、以下のことを学習することができる(たとえば、深層学習または人工知能技術を適用することによって)。特定のゲーミングアプリケーションをどのようにプレイすべきか(全般的に、または所定のレベル、サブレベル、または所定の問題の状況内で)、またはそのゲーミングアプリケーションを成功ユーザ及び/または他の不成功ユーザがどのようにプレイしているか(たとえば、間違いから学習する)。プロファイラエンジン145が学習する、ゲーミングアプリケーションをプレイすべき方法は、そのゲーミングアプリケーションをプレイするユーザのゲームプレイに対してより多くのデータが収集されるにつれて時間とともに進展する。このように、ゲームプレイの制御は望ましい結果を実現できるようになっている。
図1Bに例示するのは、本開示の一実施形態により、クラウドゲームネットワーク上で実行されるゲーミングアプリケーションをプレイしているユーザ115Aに対してゲーミング制御を提供するシステムである。いくつかの実施形態では、クラウドゲームネットワークは、ホストマシンのハイパーバイザ上で実行される複数の仮想マシン(VM)含むゲームクラウドシステム210であってもよい。1つ以上の仮想マシンが、ホストのハイパーバイザにとって利用可能なハードウェア資源を用いるゲームプロセッサモジュールを実行するように構成されている。
図示するように、ゲームクラウドシステム210は、複数の対話式ビデオゲームまたはゲーミングアプリケーションに対するアクセスを与えるゲームサーバ205を含む。ゲームサーバ205は、クラウド内で利用できる任意のタイプのサーバコンピューティングデバイスであってもよく、また1つ以上のホスト上で実行される1つ以上の仮想マシンとして構成してもよい。たとえば、ゲームサーバ205は、ユーザ115Aに対するゲーミングアプリケーションのインスタンスをインスタンス化するゲームプロセッサをサポートしている仮想マシンを管理してもよい。したがって、複数の仮想マシンに対応付けられたゲームサーバ205の複数のゲームプロセッサは、複数のユーザ115のゲームプレイに対応付けられたゲーミングアプリケーションの複数のインスタンスを実行するように構成されている。このように、バックエンドサーバサポートは、複数のゲーミングアプリケーションのゲームプレイの媒体(たとえば、ビデオ、オーディオなど)のストリーミングを、複数の対応ユーザに提供する。
複数のユーザ115が、ネットワーク150を介してゲームクラウドシステム210にアクセスする。ユーザ115は、対応するクライアントデバイス100を介してネットワーク150にアクセスする。たとえば、対応ユーザ115Aのクライアントデバイス100が、ネットワーク150(たとえば、インターネット)を介したゲーミングアプリケーションへのアクセスをリクエストするように、またゲームサーバ205によって実行されて対応ユーザ115Aに付随するディスプレイデバイスに送出されるゲーミングアプリケーション(たとえば、ビデオゲーム)のインスタンスをレンダリングするように構成されている。たとえば、ユーザ115Aは、クライアントデバイス100を通して、ゲームサーバ205のゲームプロセッサ上で実行されるゲーミングアプリケーションのインスタンスとやり取りしてもよい。より詳細には、ゲーミングアプリケーションのインスタンスは、ゲームタイトル実行エンジン130Bによって実行される。ゲーミングアプリケーションを実装するゲームロジック(たとえば、実行可能コード)をデータストア140に記憶して、データストア140を通してアクセス可能であり、ゲームロジックを用いてゲーミングアプリケーションを実行する。ゲームタイトル処理エンジン130Bは、図示するように、複数のゲームロジック177を用いて複数のゲーミングアプリケーションをサポートすることができる。
クライアントデバイス100は、種々のタイプの入力デバイス(たとえば、ゲームコントローラ、タブレットコンピュータ、キーボード、ビデオカメラによって取り込んだジェスチャ、マウス、タッチパッドなど)から入力を受け取ってもよい。前述したように、クライアントデバイス100は、少なくともメモリと、ネットワーク150を介してゲームサーバ205に接続することができるプロセッサモジュールとを有する任意のタイプのコンピューティングデバイスとすることができる。クライアントデバイス100のいくつかの実施例としては以下が挙げられる。パーソナルコンピュータ(PC)、ゲームコンソール、ホームシアターデバイス、汎用コンピュータ、モバイルコンピューティングデバイス、タブレット、電話機、または任意の他のタイプのコンピューティングデバイスであって、ゲームサーバ205とやり取りしてゲーミングアプリケーションのインスタンスを実行することができるもの。
ユーザ115Aのクライアントデバイス100は、ゲームサーバ205が送出したレンダリング画像を受け取るように、またディスプレイ上にレンダリング画像を表示するように構成されている。たとえば、レンダリング画像を、対応ユーザ115Aに関連してゲームサーバ205上で実行されるゲーミングアプリケーションのインスタンスに対応付けてもよい。詳細には、クライアントデバイス100は、ユーザ115Aのゲームプレイに対応付けられたゲーミングアプリケーションのインスタンスと、たとえばゲームプレイを駆動するために用いられる入力コマンドを通して、やり取りするように構成されている。
別の実施形態では、前述したマルチプレイヤー処理エンジン119は、ゲーミングアプリケーションに対するマルチプレイヤーゲーミングセッションを制御することを行う。詳細には、マルチプレイヤー処理エンジン119がマルチプレイヤーゲーミングセッションを管理するとき、マルチプレイヤーセッションコントローラ116は、マルチプレイヤーセッションにおけるユーザ及び/またはプレイヤーのそれぞれとの通信セッションを設定及び維持するように構成されている。このように、セッションにおけるユーザは、マルチプレイヤーセッションコントローラ116に制御されるように互いに通信することができる。
さらに、マルチプレイヤー処理エンジン119はマルチプレイヤーロジック118と通信して、各ユーザの対応するゲーミング環境内でのユーザ間のやり取りを可能にする。詳細には、状態共有モジュール117は、マルチプレイヤーゲーミングセッションにおける各ユーザに対する状態を管理するように構成されている。たとえば、状態データは、前述したように、特定の点における対応ユーザ115Aに対してゲームプレイ(ゲーミングアプリケーションの)の状態を規定するゲーム状態データを含んでいてもよい。さらに、状態データは、前述したように、対応するプレイヤーに対してビデオゲームを個人化する情報を含むユーザ保存データを含んでいてもよい。たとえば、状態データは、ユーザのキャラクタに対応付けられた情報を含んでいるため、ビデオゲームは、そのユーザに固有であり得るキャラクタ(たとえば、形状、見た目、衣類、兵器類など)によってレンダリングされる。このように、状態共有データ117とマルチプレイヤーロジック118とを用いたマルチプレイヤー処理エンジン119は、マルチプレイヤーゲーミングセッションに参加しているユーザのゲーミング環境のそれぞれの中に、オブジェクト及びキャラクタをオーバーレイ/挿入することができる。これによって、マルチプレイヤーゲーミングセッションにおけるユーザ間のやり取りが、それらの対応するゲーミング環境(たとえば、スクリーン上に表示されたもの)のそれぞれを介して可能になる。
また、ゲームサーバ205は、ゲーミング制御機能を、たとえばプロファイラエンジン145、AIパーソナルアシスタント120、及びゲームプレイコントローラ171を通して提供してもよい。たとえば、ゲームクラウドシステム210内のプロファイラエンジン145は、対応ユーザに対するゲームプレイプロファイルを構築するように構成されている。ゲームプレイプロファイルは、1つ以上のゲーミングアプリケーションに渡ってユーザのゲームプレイをシミュレートするように構成されている。詳細には、ゲームプレイプロファイルはユーザのゲームプレイスタイルを規定し、ユーザアカウントデータベース199内のアカウント内に記憶される。したがって、ゲームプレイコントローラ171は、ゲームプレイプロファイルにアクセスすることができ、可能性として、一実施形態ではAIパーソナルアシスタント120を介して、または別の実施形態では直接に、シングルプレイヤーまたはマルチプレイヤーモードのいずれかにおいて特定のゲーミングアプリケーションをプレイするユーザに対するゲームプレイを制御することができる。
一実施形態では、AIパーソナルアシスタント120はゲームプレイコントローラ171とともに働いて、対応ユーザ115Aにゲーミング制御を提供する。前述したように、AIパーソナルアシスタント120は、ゲームプレイ制御を実施するための支援をリクエストして及び/または受け取るためのインターフェースを提供し、ユーザのクライアントデバイスに対してローカルに実行してもよいしまたはクライアントデバイスからリモートに実行してもよい。たとえば、一実施形態では、機能をリクエストするユーザ115Aにゲームプレイ制御が提供される。ユーザ115Aは、プレイをやめて休憩すると決めるが、引き続きゲームを進行することを望んでもよいし、またはゲーミング環境における(たとえば、マルチプレイヤーゲーミングセッションにおける)存在感を、ゲーム進行を危うくすることも参加を失うこともなく維持することを望んでもよいし、またはゲーミングアプリケーションの難しいセクションを過ぎて進行するときに支援を望んでもよい。
詳細には、AIパーソナルアシスタント120は、対応ユーザ115Aのクライアントデバイス100と密接して働いて、対応ユーザ115Aの現在及び過去のゲームプレイに関するデータを収集するように構成されている。さらに、AIパーソナルアシスタント120は、支援が提供できるように対応ユーザ115Aとのインターフェースを提供するように構成されている。たとえば、一実施形態では、ゲーミングアプリケーションをローカルに実行した場合に、ゲームプレイコントローラ171が生成したゲーミング制御入力コマンドをインターフェースを通して提供してもよい。別の実施形態では、ゲーミングアプリケーションをバックエンドサーバにおいて実行したときに、入力コマンドをクライアントデバイス100を通して流してもよいし、またはゲームタイトル処理エンジンに直接送ってもよい。さらなる他の実施形態では、AIパーソナルアシスタント120は、対応ユーザ115のクライアントデバイス100内でローカルに構成してもよい。また、別の実施形態では、局在化されたAIパーソナルアシスタント120を、クライアントデバイス100に対してリモートに、ゲームクラウドシステム210から独立して構成してもよい。たとえば、AIパーソナルアシスタント120にネットワーク150(たとえば、ローカルエリアネットワーク、インターネットなど)を通してアクセスしてもよい。さらなる他の実施形態では、局在化されたAIパーソナルアシスタント120をゲームクラウドシステム210内のクライアント100に対してリモートに構成してもよい。その場合は、パーソナルアシスタント120を、ゲームクラウドシステム210内のプロファイラエンジン145に直接結合してもよい。
図示するように、プロファイラエンジン145は、複数のゲーミングアプリケーションをプレイする複数のユーザ115のゲームプレイを、特にゲームクラウドシステム210がユーザ115に対するゲーミングアプリケーションのインスタンスを実行しているときに、収集して分析することができる。したがって、1つ以上の初期設定ゲームプロファイルを構築して、それぞれ初期設定ゲームプレイスタイルを規定してもよい。初期設定ゲームプレイプロファイルは、初期設定ゲームプレイスタイルを示すあるタイプのユーザに対する人間ゲームプレイをシミュレートすることができる。初期設定ゲームプレイプロファイルは、任意のユーザに対するゲームプレイを制御するように構成されている。
加えて、対応ユーザ115Aが任意のゲーミングアプリケーションをプレイするときに、プロファイラエンジン145はユーザデータを収集して分析することができる。時間とともに、プロファイラエンジン145は対応ユーザ115Aのプレイングスタイルを、特定のジャンルのゲーミングアプリケーションに対して、または特定のゲーミングアプリケーションに対して、全般的に学習することができる。前述したように、初期設定ゲームプレイプロファイルを対応ユーザ115Aに対して、モニタしたユーザ115Aの複数のゲームプレイに基づいてカスタマイズする。すなわち、プロファイラエンジン145はユーザ115Aのプレイングスタイルを学習することができ、ユーザ115Aのプレイングスタイルと厳密に一致するように初期設定ゲームプレイスタイルを変更することができる。したがって、ユーザゲームプレイプロファイルは、対応ユーザ115Aに対するユーザゲームプレイスタイルを規定する。
さらに、ゲームプレイコントローラ171は、対応ユーザゲームプレイプロファイルに基づいてユーザ115Aのゲームプレイを制御することができる。詳細には、ゲームプレイコントローラ171は、対応するゲーミングアプリケーションのインスタンスを、ユーザゲームプレイプロファイル内で規定されたユーザゲームプレイスタイルに基づいて制御するように構成されている。たとえば、ゲームプレイコントローラ171は、前述したように、ユーザ115Aがリクエスト及び規定したような望ましい結果を実現するようにゲームプレイを制御することができる。結果またはゴールは、ゲーミングアプリケーションを進行すること、またはユーザが休憩する間、ゲーミングアプリケーション(たとえば、マルチプレイヤーセッション)への参加を危うくすることなく、ゲーミングアプリケーションを進行するときのそのままの状態を維持する(たとえば、キャラクタ生存させ続ける)ことなどであってもよい。具体的には、ゲームプレイコントローラ171は、前述したように、結果を実現するためにどのようにゲームプレイを制御するかを規定するゲームデータにアクセスする。したがって、特定のタスクを完了するために、ゲームデータは、タスクを達成するために必要な入力コマンドを、そのタスクの完了に成功した他のユーザの1つ以上のゲームプレイを通して学習したように提供する。このように、ゲームプレイの制御は望ましい結果を実現できるようになっている。
図1Cに例示するのは、本開示の一実施形態により、図1A〜Bのプロファイラエンジン145、AIパーソナルアシスタント120、及びゲームプレイコントローラを含む自動化人工知能(AI)パーソナルアシスタンスシステム129である。AIパーソナルアシスタントシステム129は、対応ユーザのゲームプレイプロファイルに基づいてシングルプレイヤーモードまたはマルチプレイヤーモードでゲーミングアプリケーションをプレイするユーザに対するゲーミング制御を提供するように構成されている。
図示するように、システム129のAIパーソナルアシスタント120及びゲームプレイコントローラ171は一緒に働いてゲームプレイ制御を提供し、また前述したように、一緒に配置してもよいし、または互いからリモートに配置してもよい。一実施形態では、各ユーザは別個のAIパーソナルアシスタントシステム129によってサポートされている。AIパーソナルアシスタントシステム129は少なくとも、バックエンドプロファイラエンジン145とゲームプレイコントローラ171との組み合わせによってサポートされた専用のAIパーソナルアシスタント120を含んでいる。たとえば、図1Cに示すように、ユーザ115Sは、プロファイラエンジン145のユーザゲームプレイプロファイラ145Aとゲームプレイコントローラ171との通信を行っているAIパーソナルアシスタント120Aによってサポートされている。同様に、別のユーザは、プロファイラエンジン145のユーザゲームプレイプロファイラ145Aとゲームプレイコントローラ171との通信を行っているAIパーソナルアシスタント120Bによってサポートされている。さらに別のユーザは、プロファイラエンジン145のユーザゲームプレイプロファイラ145Aとゲームプレイコントローラ171との通信を行っているAIパーソナルアシスタント120Cによってサポートされている。さらに他のユーザが同様にサポートされる。
AIパーソナルアシスタントシステム129は、ゲーミングアプリケーションをプレイしているユーザ115Sのゲームプレイをモニタするように構成されている。一実施形態では、ゲームプレイをモニタして、ユーザ115Sに対してカスタマイズされたゲームプレイプロファイルを構築することを助ける。詳細には、AIパーソナルアシスタント120は、ユーザ115Sのゲームプレイをモニタするように、また人工知能(AI)目的に対して用いることができるユーザデータを収集するように構成されている。たとえば、ゲームプレイにおいて、ユーザ115Sは、達成するべき規定されたタスク301を有していてもよい。タスクは、タスク301内のハッシュマーク302によって示したように、単一アクションもしくはサブタスク302、または複数アクションもしくはサブタスクを含んでいてもよい。また、タスクはアクションまたはサブタスクを含んでいなくてもよい。さらに、タスクをタスクタイプによって規定して、類似タスクが単一のタスクタイプの下でグループ化され得るようになっている。これらのタスクは類似ゴールを有していてもよいし、タスクを完了するために類似アクションまたはサブタスクを実行してもよいし、または他の類似性を共有してもよい。タスクをタスクタイプの下でグループ分けすることによって、そのタスクタイプのタスクに対処するユーザのゲームプレイを分析して、特定のゲーミングアプリケーション、あるジャンルのゲーミングアプリケーション、またはゲーミングアプリケーション全般に対するタスクの完了に成功するために取るべき適切なアクション、回避すべきアクション、ゲームプレイの最良のスタイル、及びゲームプレイの最も効率的なスタイルを学習してもよい。
別の実施形態では、ユーザ115SのゲームプレイをAIパーソナルアシスタント120によってモニタする。すなわち、複数のゲーミングアプリケーションをプレイしているユーザ115Sの複数のゲームプレイをモニタする。ゲームプレイには対処及び/または達成すべき複数のタスクが含まれる。モニタするタスクはそれぞれ、対応するタスクタイプによって規定される。このように、同じタイプのタスクを分析して、ゲーミングスタイル、ゲーミング習慣、及びユーザの上達を決定することができる。その情報は、そのユーザ115Sに対するゲームプレイプロファイルを構築するときに有用である。特定のタスクタイプのタスクに直面したときに、ゲームプレイプロファイルはユーザ115Sのゲームプレイをシミュレートする。
詳細には、複数のユーザ115による複数の応答を複数のゲームプレイの全体にわたってモニタする。応答は1つ以上のタスクタイプの1つ以上のタスクに対するものであってもよい。第1のタイプのタスクに対しては、応答を分析して初期設定の第1の応答を決定する。初期設定ゲームプレイスタイルは、対応ユーザ115Sに第1のタスクタイプのタスクが与えられたときに、取るべきアクションを規定する初期設定の第1の応答を含む。さらに、対応ユーザ115Sに対応付けられるユーザの第1の応答は、複数のゲームプレイにおける第1のタイプのタスクに対して対応ユーザ115Sが取った複数の第1の応答に基づいて初期設定の第1の応答を調整することによって生成される。一実施形態では、最小二乗関数を、ユーザに対応付けられる第1の応答のそれぞれに適用して、ユーザの第1の応答を生成する。このように、対応ユーザ115Sに第1のタイプのタスクが与えられたときに、ゲームプレイコントローラ171は、ユーザゲームプレイプロファイル内のユーザの第1の応答に基づいて適切な応答をプレイすることができる。
対応ユーザ115Sに対するAIパーソナルアシスタント120はユーザのゲームプレイをモニタすることができる。たとえば、タスクまたはサブタスクまたはアクションに対処するためにクライアントデバイス100のユーザ115Sが取ったあらゆる応答に対して、アクション状態121、アクション指標122、及びアクション結果123がAIパーソナルアシスタント120によって集められる。応答は全般的に規定してもよく、またユーザが下した戦略的意思決定(たとえば、いま攻撃するに対して後で攻撃する、コイン収集を熱心に行うかまたは不十分に行う等)、ゲームプレイにおいて取った方向(たとえば、移動先は都市1である対都市2である)、行った選択(身につけるのは防護具1または防護具2)を含んでいてもよい。また、応答をタスクに固有に規定してもよい。たとえばユーザがどのようにアクションまたはサブタスクに対処したか(たとえば、サブタスクを完了するときの順序、成功が何であったか等)。
詳細には、アクション状態121は、ゲーミングアプリケーションの状況またはゲーミング環境内で対処されたアクション、サブタスク、またはタスクを規定する。ゲーミング環境は、どの種類のアクションタイプがタスクを記述するかの決定を助ける。たとえば、あるアクションをゲーミング環境に応じて別の仕方で分類してもよい。アクションを、ゲーミング環境が緩んでいる(たとえば、ある位置から別の位置への一般的な横断の)ときに第1のタイプに分類してもよいが、ゲーミング環境が緊張している(たとえば、ボスと戦っている)ときに第2のタイプに分類してもよい。さらに、アクション指標122をAIパーソナルアシスタント125によって集める。これらの指標を、タスク、サブタスク、またはアクションに対処するときにユーザが取った応答に対応付ける。また、アクション結果123を局在化されたAIパーソナルアシスタント120Aによって集める。たとえば、結果123には、ユーザ115Sがタスク、サブタスク、またはアクションを行なうことに成功したか否かが含まれる。また、結果123は、タスク、サブタスク、またはアクションに対処するときにどのくらい良好に(たとえば、効率)ユーザ115Sが行ったかを規定してもよい。
収集データ(たとえば、アクション状態121、アクション指標122、及びアクション結果123)をプロファイラエンジン145に送出して、さらなる分析(たとえば、あるタイプのタスクに対するユーザ応答を生成すること)を行う。具体的には、収集データをユーザゲームプレイプロファイラ145Aに送出して、そこで、ユーザ115Sに対する収集データをユーザ115Sの現在及び過去の実績ならびに他のユーザの過去の実績と比べることを、ゲーミングアプリケーション、あるジャンルのゲーミングアプリケーション、またはゲーミングアプリケーション全般をプレイするとき、特に特定のタスクタイプのタスクに対処するときに対して行う。このように、ユーザゲームプレイプロファイラ145Aは、各ユーザに対するゲームプレイプロファイルを構築することができる。ユーザは、ゲームクラウドシステム210内の対応するプレイヤーID143によって特定され、ゲームプレイプロファイルは、1つ以上のゲーミングアプリケーションをプレイするときに対応ユーザに対する人間ゲームプレイをシミュレートする。たとえば、ゲームプレイプロファイルは、対応ユーザデータ、1つ以上のゲーミングアプリケーションの1つ以上のゲーミングアプリケーションのゲームルール125に基づいている。ゲームルール125はデータストア140に記憶される。
一実施形態では、複数のプレイヤーの複数のゲームプレイを1つ以上のAIパーソナルアシスタントシステム129によってモニタする。ゲームプレイを複数のゲーミングアプリケーションに対応付ける。ゲームプレイには対処及び/または達成すべき複数のタスクが含まれている。前述したように、各タスクは対応するタスクタイプによって規定される。したがって、前述したように、収集データを用いて複数のユーザ115に対するゲームプレイプロファイルを構築することができる。また、収集データを用いて初期設定ゲームプレイプロファイルを構築することができる。初期設定ゲームプレイプロファイルは次に、対応ユーザ(たとえばユーザ115S)に対してカスタマイズすることができる。さらに、収集データを用いて、ゴールの達成に成功する(たとえば、タスクを完了する(たとえば、ゲームまたはレベルボスをクリアする))ために取るべき適切な応答を決定することができる。
詳細には、ゲーミングプロファイル131A〜Nを、プロファイラ145のユーザゲームプレイプロファイラ145Aによって形成する。説明の目的上、ゲーミングプロファイルは、複数のタスクに対処するときのユーザ115Aの過去の実績を含んでいてもよい。タスクはそれぞれ、規定された応答に対応付けてもよい。タスクに対する応答は、対応付けられたタスクタイプのタスクに全般的に適用してもよいし、またはそのタスクに具体的に適用してもよい。たとえば、ユーザ115Aのゲーミングプロファイル131Aは、タスク/サブタスク/アクション1に対する応答1、タスク/サブタスク/アクション2に対する応答2、タスク/サブタスク/アクション3に対する応答3などを示す。同様にゲーミングプロファイル131Sをユーザ115Sに対して構築してもよい。
ゲーミングプロファイル131A〜N内のデータを、ユーザゲームプレイプロファイラ145の深層学習エンジン146にフィードバックしてもよい。深層学習エンジン146では人工知能を用いる。たとえば、深層学習アルゴリズム、強化学習、または他の人工知能ベースのアルゴリズムである。このように、収集データに対する分析を継続的に行って、初期設定ゲームプレイプロファイル及び対応ユーザに対するゲームプレイプロファイルをアップグレード及び/または構築するために用いる更新された分析を提供してもよい。たとえば、対応ユーザに対するゲームプレイプロファイルを更新して、新しいデータを反映してもよい。一実施形態では、複数のユーザの複数のゲームプレイからモニタしたタスクに対する成功応答を分析して、ユーザに与えられた特定のタスクに関連して取るべき適切な応答を決定する。
ユーザゲームプレイプロファイラ145Aの深層学習エンジン146は、ソーシャルネットワークを介してデータ141(たとえば、インターネットデータ)を収集して、ゲーミングアプリケーション内の問題、ゲームプレイ難易度などを特定することができる。たとえば、ユーザはゲーミングブログに投稿して、ゲーミングアプリケーションの特定のセクションをどのようにクリアするのかについて質問してもよい。深層学習エンジン146はそのデータを用いて難しいタスクを特定して、複数のプレイヤーがプレイしたタスクに対する種々のアプローチ、及びこれらのタスクに対処するときのプレイヤーの相対的な成功及び/または失敗を含むデータベースを構築することができる。また、ゲームタイトル処理エンジン130のユーザゲームプレイプロファイラ145Aは、前述したようにゲーミングアプリケーション内の問題、ゲームプレイ難易度などを特定するときに用いる特定のユーザの通信142、またはユーザ間の通信を分析するように構成されている。
さらに、ゲームプレイコントローラ171は、対応ユーザ115Sに対する対応ユーザゲームプレイプロファイルのユーザゲームプレイスタイルに基づいてゲーミングアプリケーションのインスタンスを制御するように構成されている。詳細には、ユーザ115Sが自動ゲームプレイ制御をリクエストしたときに、ユーザ115Sに与えられた第1のタスクの検出を行って適切な応答を決定する。第1のタスクは第1のタスクタイプに対応付けられる。ユーザ115Sのゲームプレイにおいて与えられ及び/またはアプローチされる第1のタスクは、規定されたユーザの第1の応答に基づいて自動的に制御される。ユーザの第1の応答はさらに、その第1のタスク、または第1のタスクタイプに対して規定される。第1の応答に対応付けられた適切なゲームプレイ入力コマンド174を、AIパーソナルアシスタント120を通してユーザクライアントデバイス100に送出するか、または適切なゲームタイトル処理エンジン130Bに直接送出する。
一実施形態では、AIパーソナルアシスタントシステム129は、対応ユーザ115Sのゲームプレイにおいて第1のタスクに対する1つ以上の失敗応答を検出することができる。次に問い合わせを生成して、ユーザが支援を(たとえば自動ゲームプレイ制御の形態で)望むか否かを尋ねる。問い合わせをAIパーソナルアシスタント120を通してユーザクライアントデバイスに送出する。別の実施形態では、ヘルプに対するリクエスト(たとえば、制御するため、またはタスクを達成するため)を対応ユーザ115Sのクライアントデバイス100から受け取る。一実施形態では、問い合わせに応じてリクエストを形成してもよい。別の実施形態では、リクエストをどんな問い合わせとも無関係に形成する。支援は、ユーザ115Sがリクエストしたときに、前述したように、タスクを完了する命令、タスクを完了するヒント、または自動ゲームプレイ制御の形態で入ってきてもよい。
図1Dに例示するのは、本開示の一実施形態により、AIパーソナルアシスタンスシステム120の1つ以上のモジュールをサポートして深層学習エンジン146をトレーニングするために用いるニューラルネットワーク例190である。たとえば、ニューラルネットワーク190が表すのは、複数のユーザ115に対するゲームプレイプロファイルを決定するためにユーザゲームプレイプロファイラ145Aが用いるデータセットを分析するための自動分析ツールの実施例である。詳細には、ニューラルネットワーク190のインスタンスを用いてユーザゲームプレイプロファイラ145Aをトレーニングして、複数のユーザ115に対するゲームプレイプロファイルを決定してもよい。ゲームプレイプロファイルを用いて、ユーザ115Sのゲームプレイを制御し、及び/または特定のユーザのゲームプレイ中に助言を与えることができる。
異なるタイプのニューラルネットワーク190が可能である。一実施例では、ニューラルネットワーク190は、深層学習エンジン146が実装し得る深層学習をサポートする。したがって、教師ありまたは教師なし学習を用いた深層ニューラルネットワーク、畳み込み深層ニューラルネットワーク、及び/または再帰型ニューラルネットワークを実装することができる。別の実施例では、ニューラルネットワーク190は、強化学習をサポートする深層学習ネットワークを含む。たとえば、ニューラルネットワーク190を、強化学習アルゴリズムをサポートするMarkov決定過程(MDP)としてセットアップする。
全般的に、ニューラルネットワーク190は、相互接続されたノードのネットワーク(たとえば人工ニューラルネットワーク)を表す。各ノードはデータから何らかの情報を学習する。知識を相互接続を通してノード間で交換することができる。ニューラルネットワーク190に対する入力によって、ノードのセットがアクティブになる。そして次に、このノードのセットによって他のノードをアクティブにし、その結果、入力についての知識が伝搬する。このアクティベーションプロセスを他のノードに渡って繰り返すことを、出力が提供されるまで行う。
例示したように、ニューラルネットワーク190はノードの階層を含む。最も低い階層レベルには、入力層191が存在する。入力層191は入力ノードのセットを含む。これらの入力ノードをそれぞれ、ユーザゲームプレイプロファイル特徴(たとえば、ビデオゲームとのユーザのやり取り、ビデオゲームをプレイするユーザ、ビデオゲームなどに固有の特徴)にマッピングする。
最も高い階層レベルには、出力層193が存在する。出力層193は出力ノードのセットを含む。出力ノードは、たとえば、ユーザゲームプレイプロファイラの1つ以上のコンポーネントに関する決定を表す。前述したように、出力ノードは、問題、タスク、タスクタイプ、難しいタスク、ゲーミングアプリケーション内の特定のタスクを完了するためのアプローチ、ゲーミングアプリケーション内の他のゲームプレイ困難を特定して、特定のタイプのタスクまたは特定のタスクに関してユーザに対する成功率を予測してもよいし、達成すべきタスクのセットが与えられたメンバーのチームに対する成功率を予測してもよいし、ユーザ及び/またはチームに対する上達度スコアを判定してもよいし、助言を決定してもよいし、支援を提供してもよいし、特定のユーザのゲームプレイスタイルにより、与えられたタスクまたはタスクタイプに関して取るべき適切な応答を提供してもよいし、特定のタスクに対して取るべき適切な応答またはアプローチを学習してもよい等。ニューラルネットワーク190内のノードは、このような決定を行うために用いることができるモデルのパラメータを学習する。
隠れ層192が入力層191と出力層193との間に存在する。隠れ層192は「N」個の隠れ層を含む。ここで「N」は1以上の整数である。そして次に、隠れ層はそれぞれ、隠れノードのセットも含む。入力ノードは隠れノードに相互接続されている。同様に、隠れノードは出力ノードに相互接続されている。しかし、入力ノードは出力ノードに直接相互接続されてはいない。複数の隠れ層が存在する場合、入力ノードは最も低い隠れ層の隠れノードに相互接続される。そして次に、これらの隠れノードは次の隠れ層の隠れノードに相互接続される等。次の最も高い隠れ層の隠れノードが出力ノードに相互接続されている。
相互接続によって2つのノードが接続される。相互接続は、学習することができる数値重みを有する。(たとえば、ユーザゲームプレイプロファイラ、助言データセットなどに基づいて)、入力に適応できて学習することができるニューラルネットワーク190をレンダリングする。
全般的に、隠れ層192によって、入力ノードについての知識を、出力ノードに対応するすべてのタスク間で共有することができる。そうするために、1つの実施態様では、隠れ層192を通して入力ノードに変換fを適用する。一実施例では、変換fは非線形である。異なる非線形変換fが利用できる。たとえば、整流器関数f(x)=max(0,x)などである。
またニューラルネットワーク190は費用関数cを用いて最適解を求める。費用関数は、所定の入力xに対してf(x)として規定されるニューラルネットワーク190が出力した予測と、グラウンドトゥルースまたは目標値y(たとえば、期待結果)との間のずれを測定する。最適解は、最適解のコストよりも低いコストの解がない状況を表す。費用関数の実施例は、このようなグラウンドトゥルースラベルが利用可能であるデータに対する予測とグラウンドトゥルースとの間の平均2乗誤差である。学習過程の間、ニューラルネットワーク190は逆伝播アルゴリズムを用いて、費用関数を最小限にするモデルパラメータを学習するために異なる最適化方法を用いることができる。このような最適化手法の実施例は確率的勾配降下法である。
一実施例では、ニューラルネットワーク190に対するトレーニングデータセットは、同じデータドメインからである。たとえば、ニューラルネットワーク190は特定のゲーミングアプリケーションに対してトレーニングされる。この例示では、データドメインは、ビデオゲームとのプレイヤーのやり取りに対するゲームセッション収集データを含む。別の実施例では、トレーニングデータセットは、異なるデータドメインからである。たとえば、ニューラルネットワーク190はあるジャンルのゲーミングアプリケーションに対してトレーニングされる。
したがって、ニューラルネットワーク190は、予測モデルであって、特定のタスクが与えられたときに、または全般的に、対応ユーザのゲームプレイスタイルにより対応するタスクタイプのタスクに対して、ユーザがどのように応答すべきかを予測または決定するために用いられる予測モデルを規定してもよい。またニューラルネットワーク190は、予測モデルであって、特定のタスク(たとえば、難しいタスク)を達成するために取るべき適切な応答を、そのタスクの完了に成功したユーザのゲームプレイに基づいて予測し、学習し、または決定するために用いられる予測モデルを規定してもよい。これらの予測結果に基づいて、ユーザに支援を提供してもよい。たとえば助言(たとえば、ヒント)、または対応ユーザに対するゲームプレイの制御である。
図2に例示するのは、本開示の実施形態により、ゲームクラウドシステム(GCS)210に記憶されたビデオゲームのアクセス及びプレイを可能にするための系統図200である。概して言えば、ゲームクラウドシステムGCS210は、複数のユーザをサポートするためにネットワーク220上で動作するクラウドコンピューティングシステムであってもよい。さらに、GCS210は、ゲームタイトル処理エンジン130、AIパーソナルアシスタント120、及びゲームプレイコントローラ171を用いてシングルプレイヤーモードまたはマルチプレイヤーモードでゲーミングアプリケーションをプレイするユーザに対してゲーミング制御の形態で支援を提供するように構成されている。詳細には、システム200は、GCS210、1つ以上のソーシャルメディアプロバイダ240、及びユーザデバイス230を含んでいる。これらはすべて、ネットワーク220(たとえば、インターネット)を介して接続されている。1つ以上のユーザデバイスをネットワーク220に接続して、GCS210とソーシャルメディアプロバイダ240とが提供するサービスにアクセスしてもよい。
一実施形態では、ゲームクラウドシステム210は以下を含む。ゲームサーバ205、ビデオレコーダ271、タグプロセッサ273、ユーザプロファイルマネージャを含むアカウントマネージャ274、ゲーム選択エンジン275、ゲームセッションマネージャ285、ユーザアクセスロジック280、ネットワークインターフェース290、及びソーシャルメディアマネージャ295。GCS210はさらに以下を含んでいてもよい。複数のゲーミングストレージシステム、たとえばユーザゲーミングプロファイルストア、ゲームロジックストア、ゲーミングアプリケーションルールストア、状態共有ストア、インターネットデータストア、ゲーム状態ストア、ランダムシードストア、ユーザ保存データストア、スナップショットストア(全般的にデータストア140に記憶してもよい)。他のゲーミングストレージシステムは、ゲームコードストア261、記録ゲームストア262、タグデータストア263、ビデオゲームデータストア264、及びゲームネットワークユーザストア265を含んでいてもよい。一実施形態では、GCS210は、ゲーミングアプリケーション、サービス、ゲーミング関連デジタルコンテンツ、ならびにシステム、アプリケーション、ユーザ、及びソーシャルネットワーク間の相互接続性を提供することができるシステムである。GCS210は、ユーザデバイス230及びソーシャルメディアプロバイダ240と、ソーシャルメディアマネージャ295を通して、ネットワークインターフェース290を介して通信してもよい。ソーシャルメディアマネージャ295を1人以上の友人に関係するように構成してもよい。一実施形態では、各ソーシャルメディアプロバイダ240は、ユーザにソーシャルネットワーク接続を示す少なくとも1つのソーシャルグラフ245を含む。
ユーザU0は、ゲームセッションマネージャ285を介してGCS210が提供するサービスにアクセスすることができる。ユーザU0は図1A〜Cのユーザ115を表してもよい。たとえば、アカウントマネージャ274によって、GCS210に対するユーザU0による認証及びアクセスが可能になる。アカウントマネージャ274はメンバーユーザについての情報を記憶する。たとえば、各メンバーユーザに対するユーザプロファイルをアカウントマネージャ274が管理してもよい。1つの実施態様では、アカウントマネージャ274をメンバーユーザに対するゲーミングプロファイルを管理するように構成してもよい。たとえば、メンバー情報を認証目的でアカウントマネージャ274が用いることができる。たとえば、アカウントマネージャ274を用いて、メンバーユーザに関係づけられたユーザ情報を更新及び管理してもよい。さらに、メンバーユーザが所有するゲームタイトルをアカウントマネージャ274が管理してもよい。このように、データストア264に記憶されたビデオゲームは、これらのビデオゲームを所有する任意のメンバーユーザに対して利用可能になる。
一実施形態では、ユーザ(たとえば、ユーザU0)は、GCS210及びソーシャルメディアプロバイダ240が提供するサービスに、ネットワーク220を介した接続を通してユーザデバイス230によってアクセスすることができる。ユーザデバイス230は、プロセッサ及びメモリを有する任意のタイプのデバイス(有線または無線、携帯型または非携帯型)を含むことができる。一実施形態では、ユーザデバイス230は、タッチスクリーン機能を携帯フォームファクタで提供するスマートフォン、タブレットコンピュータ、またはハイブリッドの形態とすることができる。1つの典型的なデバイスは、オペレーティングシステムを実行し、種々のアプリケーション(アップス)に対するアクセスが与えられる携帯型電話機デバイスを含むことができる。種々のアプリケーションは、ネットワーク220を介して得てもよく、ローカルな携帯デバイス(たとえば、スマートフォン、タブレット、ラップトップ、デスクトップなど)上で実行してもよい。
ユーザデバイス230は、ユーザU0が入力コマンド236を送るための、ならびにGCS210及びソーシャルメディアプロバイダ240から受け取った表示データ及び/または情報235のためのインターフェースとして働くディスプレイ232を含む。ディスプレイ232は、タッチスクリーンとして、またはフラットパネルディスプレイ、陰極線管(CRT)、もしくは他のデバイスであってディスプレイをレンダリングすることができるものによって典型的に提供されるディスプレイとして構成することができる。代替的に、ユーザデバイス230は、デスクトップコンピュータまたはラップトップコンピュータと同様に、そのディスプレイ232をデバイスから分離することができる。
一実施形態では、ユーザデバイス130はGCS210と通信してユーザU0がビデオゲームまたはゲーミングアプリケーションをプレイできるように構成されている。たとえば、ユーザU0は、ゲーム選択エンジン275を介して、ビデオゲームデータストア264において利用可能なビデオゲームを選んでもよい(たとえば、ゲームタイトルなどによって)。このように、選択したビデオゲームは、GCS210上でゲームサーバ205が実行するようにイネーブル及びロードされる。一実施形態では、ゲームプレイを主にGCS210内で実行して、ユーザデバイス230がGCS210からゲームビデオフレーム235のストリームを受け取り、ゲームプレイを駆動するためのユーザ入力コマンド236をGCS210に送信して戻すようにする。ストリーミングゲームプレイから受け取ったビデオフレーム235を、ユーザデバイス230のディスプレイ232において示す。
一実施形態では、プレイするための利用可能なゲームタイトルをユーザU0が選択した後で、選択したゲームタイトルに対するゲームセッションをゲームセッションマネージャ285を通してユーザU0が開始してもよい。ゲームセッションマネージャ285は最初に、データストア140内のゲーム状態ストアにアクセスして、(選択したゲームに対して)ユーザU0がプレイした最後のセッションの保存されたゲーム状態を取り込むことによって、もしあれば、ユーザU0が以前のゲームプレイ停止点からゲームプレイを再始動できるようにする。再開または開始点を特定したら、ゲームセッションマネージャ285はゲームプロセッサ210内のゲーム実行エンジンに通知して、ゲームコードストア261からの選択したゲームタイトルのゲームコードを実行してもよい。ゲームセッションを開始した後で、ゲームセッションマネージャ285は、ゲームビデオフレーム235(すなわち、ストリーミングビデオデータ)を、ネットワークインターフェース290を介してユーザデバイス(たとえば、ユーザデバイス230)に送ってもよい。別の実施形態では、ゲームセッションマネージャ285は、マルチプレイヤーセッション管理を、図1Aのマルチプレイヤーセッションコントローラ121と独立してまたはそれとともに提供してもよい。
ゲームプレイの間、ゲームセッションマネージャ285はゲームプロセッサ210、記録エンジン271、及びタグプロセッサ273と通信して、ゲームプレイまたはゲームプレイセッションの記録(たとえば、ビデオ)を生成または保存してもよい。一実施形態では、ゲームプレイのビデオ録画は、ゲームプレイの間に入力または提供されたタグ内容、及び他のゲーム関連メタデータを含むことができる。またタグ内容をスナップショットを介して保存してもよい。ゲームプレイのビデオ録画は、そのゲームプレイに対応する任意のゲーム指標とともに、記録ゲームストア262に保存してもよい。任意のタグ内容をタグデータストア263に保存してもよい。
ゲームセッションマネージャ285はゲームプロセッサ204と通信して、ビデオゲームの対応するゲームプレイの結果に影響を及ぼすために用いるユーザ入力コマンド236を送出及び取得してもよい。ユーザU0が入力した入力コマンド236を、ユーザデバイス230からGCS210のゲームセッションマネージャ285へ送信してもよい。入力コマンド236(ゲームプレイを駆動するために用いる入力コマンドを含む)は、ユーザ対話式入力(たとえば、タグ内容(たとえば、テキスト、画像、ビデオ録画クリップなど)を含む)を含んでいてもよい。ゲーム入力コマンドならびに任意のユーザプレイ指標(どのくらい長くユーザがゲームをプレイするかなど)を、ゲームネットワークユーザストア165に記憶してもよい。ビデオゲームに対するゲームプレイに関係づけられた選ばれた情報を用いて、ユーザにとって利用可能であり得る複数の特徴を可能にしてもよい。たとえば、実施形態では、ビデオゲーム、またはあるジャンルのゲーミングアプリケーション、またはゲーミングアプリケーション全般に参加している対応ユーザの上達に関するデータを収集して、ゲームネットワークユーザストア265に記憶してもよい。複数のユーザがゲームプレイをGCS210上で実行するため、あらゆるユーザに対するゲーミングプロファイルを生成してもよい。このように、ユーザのゲームプレイを複数のユーザのゲームプレイと比べて、どのくらい良好にユーザがビデオゲームをプレイしているかを判定し、またゲームタイトル処理エンジン130及び局在化されたAIパーソナルアシスタント120が提供する助言からユーザが利益を得られるか否かを判定してもよい。シングルプレイヤーモードまたはマルチプレイヤーモードにおいてユーザに対する支援(たとえば、ヒント、チュートリアル、ゲームプレイ制御など)があると、ゲーミングアプリケーションまたはビデオゲームをプレイするユーザの経験を高めることが、効率的なゲームプレイを促進することにより、またゲーミングアプリケーションのよりハードな及び/または不可能なセクションをユーザが進むことを助けることにより可能になる。ユーザU0の場合、ユーザデバイスによって、バックエンドサーバ(たとえば、ユーザU0のゲームプレイ中にゲーミング支援を提供するGCS210のゲームタイトル処理エンジン130)から、ユーザU0が通信を受け取ることができるようにするインターフェースが提供される。
さらに、プロファイラエンジン145は、複数のゲーミングアプリケーションをプレイする複数のユーザからデータを収集して、1つ以上の初期設定ゲームプレイプロファイルを構築し、また対応ユーザに対する個人化されたゲームプレイプロファイルを構築するように構成されている。このように、ゲームプレイコントローラ171は、ゲーミングアプリケーションの特定のゲーミングセッションにおいて対応ユーザに対する人間ゲームプレイをシミュレートするためにユーザゲームプレイプロファイルを適用することができる。AIパーソナルアシスタント120によって、データ収集、及び対応ユーザのクライアントデバイス100を通して実装されたゲームプレイ制御が容易になる。
ネットワークを介して通信するゲーミングサーバ及びクライアントデバイスの種々のモジュールの詳細な説明を用いて、本開示の一実施形態により図3Aのフロー図300Aに関連してゲーミング制御を提供するための方法について次に説明する。フロー図300Aに例示するのは、ゲーミングアプリケーションに参加している対応ユーザに対するゲームプレイ制御を提供する目的でAIパーソナルアシスタントシステム129に含まれる動作のプロセス及びデータフローである。詳細には、ゲームプレイコントローラはフロー図300Aの動作の少なくとも一部を実装するように構成されている。
たとえば、ゲームプレイコントローラは、ユーザに対するゲームの特定のパートをプレイするように構成されている。たとえば、ゲームプレイコントローラは、ユーザにとって難しい特定のゲームタスクを完了するために自動モードで進むことができる。また、ゲームプレイコントローラは、ユーザの代わりにゲーミングアプリケーションをプレイする(たとえば、ゲーム中の休止によって開始する)ように構成されていて、AIキャラクタがターンオンされて現時点で与えられたタスクを実行するようになっている。ユーザがアクティブプレイに戻ることを望むときに、ユーザはAIキャラクタを停止することができ、その結果、ユーザは、ゲーミングアプリケーションにおいて自分の所有するキャラクタを制御することに戻ることができる。このように、ユーザのゲームプレイはユーザの注意を伴うことなく続き、そして自動ゲームプレイ制御が終了した後に再開する。
310において、本方法は、初期設定ゲームプレイプロファイルをユーザに割り当てることを含む。初期設定ゲームプレイプロファイルは、あるタイプのユーザに対する人間ゲームプレイをシミュレートする初期設定ゲームプレイスタイルを規定する。対応ユーザに対するユーザタイプはユーザが選択可能であってもよいし、またはモニタリングを通して能動的もしくは受動的に収集もしくは決定され得るユーザに関する情報に基づいてユーザに自動的に割り当ててもよい。初期設定ゲームプレイプロファイルは、ゲームクラウドシステムがモニタした複数のユーザの複数のゲームプレイに基づいている。詳細には、ゲームプレイプロファイルは、初期設定ゲームプレイスタイルに基づいて任意のユーザに対するゲームプレイを制御するように構成されている。たとえば、ゲームプレイをモニタして、対処されるタスクを特定する、各タスクは対応するタスクタイプに対応付けられている。特定のタスクタイプのタスクに対する応答を集めて、そして分析して、ユーザ(たとえば、ユーザのキャラクタ)がそのタスクタイプのタスクに直面したときに適用すべき初期設定応答を決定する。
320において、本方法は、複数のゲーミングアプリケーションをプレイするユーザの複数のゲームプレイをモニタすることを含む。このモニタリングによって、そのユーザのゲームプレイスタイルを学習することが可能になる。加えて、収集データを他のユーザからのデータと組み合わせて、初期設定ゲームプレイプロファイルによって規定される初期設定ゲームプレイスタイルを決定してもよい。さらに、収集データを用いてタスクへのアプローチの仕方を学習することを、特にユーザがタスクを行なうことに成功したときに行ってもよい。この成功アプローチを集めて、他のユーザが行った他の成功アプローチに接続して、タスクが与えられたときに取るべき1つ以上のアプローチを決定してもよい。これらの成功アプローチを、有用なヒントまたはチュートリアルとして与えてもよく、自動ゲームプレイ制御中に用いてもよい。また収集データを用いて、どのセクションが難しいか、またどれが大部分のユーザにとって難しすぎるかを見出してもよい。したがって、データを用いて、今後のゲーミングアプリケーションにおいて開発者がそのタイプのタスクの使用を回避することを助けてもよい。
330において、本方法は、ユーザに特有の複数のゲームプレイに基づいて初期設定ゲームプレイスタイルを調整することによって、ユーザのユーザゲームプレイプロファイルを生成することを含む。ユーザゲームプレイプロファイルは、ユーザに対してカスタマイズされたユーザゲームプレイスタイルを規定して含む。詳細には、ユーザゲームプレイプロファイルを生成及び/または更新して、特定のタスクまたは特定のタスクタイプへの応答の仕方を規定してもよい。たとえば、ユーザの複数のゲームプレイにおいて複数の第1の応答をモニタする。第1のタスクタイプの複数のタスクに対処するために応答を取る。第1のタスクタイプに対応付けられたタスクに対するユーザの第1の応答を、ユーザの複数の第1の応答に基づいて初期設定ゲームプレイプロファイル内の初期設定の第1の応答を調整することによって生成する。一実施形態では、ユーザが生成した複数の第1の応答に最小二乗関数を繰り返して適用することによって、ユーザの第1の応答を生成及び/または更新する。このように、ユーザの第1の応答は、第1のタスクタイプのタスクに直面したときにユーザがどのように全般的に応答するかをシミュレートする。
一実施形態では、ユーザゲームプレイプロファイルをユーザのゲームプレイにより更新してもよい。たとえば、新しいゲームプレイデータをゲームプレイプロファイル内に反映してもよい。詳細には、タスクに関しては、第2の複数のタスクに対するユーザによる第2の複数の第1の応答をモニタして、この応答を用いて、第1のタスクタイプのタスクに対するユーザの第1の応答を調整する。第2の複数の第1の応答は、以前に集めた第1の応答を含んでいてもよいし、または第1の応答の独立したセットであってもよい。
一実施形態では、本方法は、ユーザが支援を必要としていることを検出することを含む。たとえば、特定のタスクに対処するときのユーザの失敗をモニタしてもよい。失敗した試みの閾値の後で、ユーザが支援(たとえば、ヒントまたはゲームプレイ制御などの形態で)を要求するか否かを尋ねる問い合わせを生成して、ユーザに表示してもよい。支援に対するリクエストをユーザのクライアントデバイスから受け取ってもよい。リクエストは、問い合わせに応じてもよいし、またはどんな問い合わせからも別個に生成してもよい。たとえば、ユーザが離れている時間の間に自動ゲームプレイ制御を開始することをユーザが望むときである。ある形態では、支援は、タスクの達成に成功するヒントの形態で提供される。他の形態では、支援はゲームプレイ制御の形態で提供される。
340において、本方法は、ゲーミングアプリケーションのインスタンスによって実行されるユーザのゲームプレイにおけるユーザゲームプレイプロファイルのユーザゲームプレイスタイルに基づいて、第1のゲーミングアプリケーションのインスタンスを制御することを含む。制御は、ユーザによるリクエストがあったら開始してもよい。詳細には、本方法は、ユーザに第1のタスクが与えられたことを検出することを含む。第1のタスクは第1のタスクタイプである。本方法は、ユーザゲームプレイプロファイルにおいて規定されたユーザの第1の応答に基づいて第1のタスクにアプローチする。たとえば、ユーザの第1の応答は、実装すべき特定の入力コマンドを提供してもよいし、またはどのようにタスクを達成するかについての一般戦略命令を提供してもよい。
一実施形態では、ゲームプレイコントローラは、自動ゲームプレイ制御に対するリクエストをユーザが行った後に、ゲーミングアプリケーションをプレイするように構成されている。一実施形態では、自動ゲームプレイ制御の間にユーザによるゲームプレイは当初は休止して、ユーザがゲームプレイを駆動していないようにする。休止は、ユーザが自動ゲームプレイ制御に対するリクエストを行う前または後で行ってもよい。AIキャラクタをターンオンして、またはAIキャラクタ機能をターンオンして、ユーザのゲームプレイをシミュレートする(たとえば、特定のタスクを実行する)ためにゲームプレイ中の1つ以上のキャラクタをどのように制御するかを特定してもよい。ユーザがアクティブプレイに戻ることを望むときには、ユーザはAIキャラクタ機能を停止することができ、ユーザ制御を再開することができる。一実施形態では、自動ゲームプレイの休止は、ユーザに制御を戻す前に行う。このように、自動ゲームプレイ制御が行われると、ユーザのゲームプレイはユーザの注意を伴うことなく続く。
一実施形態では、AI制御キャラクタは、ゲーミング環境において何が起きているのかに基づいて異なるキャラクタを有し及び/または制御する。AIキャラクタはユーザを表してもよい。すなわち、AIキャラクタは、ゲーミング環境が進展するにつれ有機的に成長する。したがって、競争の激しいマルチプレイヤーゲームでは、ユーザは、ユーザが不在の間、ゲームプレイコントローラがユーザのゲームプレイを引き継げるようにすることができる。たとえば、いくつかのマルチプレイヤーセッションが数時間続いてもよく、またユーザが休みを必要とするが、引き続き進行を維持することを望んでもよいし、または休みの間にゲームから除かれることを望まなくてもよい。AI制御キャラクタがユーザのゲームプレイをシミュレートするために、マルチプレイヤーセッションにおける他のプレイヤーは自動ゲームプレイ制御を認識していなくてもよい。
図3Bは、本開示の一実施形態によりゲームプレイを自動ゲームプレイ制御に切り換えるユーザからのリクエストに応じてゲーミング制御を提供するための方法におけるステップを例示するフロー図である。351において、本方法は、ゲーミングアプリケーションを実行するリクエストをユーザ(たとえば、ユーザのクライアントデバイス)から受け取ることを含む。ユーザはユーザアカウントに対応付けられる。アカウントは、ユーザの少なくとも1つのゲームプロファイルに対するアクセスを与える。352において、本方法は、ユーザからの入力に応じてゲーミングアプリケーションのインスタンスを実行することを含む。ゲーミングアプリケーションのインスタンスによって、ゲーミングアプリケーションのゲームロジックとやり取りしてユーザのゲームプレイをインスタンス化することが可能になる。
353において、本方法は、ユーザのゲームプレイを自動ゲームプレイ制御に切り換えるリクエストを受け取ることを含む。自動ゲームプレイ制御は、ユーザのユーザゲームプレイプロファイルにアクセスするように構成されている。詳細には、ユーザゲームプレイプロファイルは、1つ以上のゲーミングアプリケーションをプレイするユーザの以前に行った1つ以上のゲームプレイからのユーザ生成応答に基づいて、学習されたゲームプレイ応答を規定する論理構造を含む。たとえば、ユーザ応答を特定のタスクによって規定するかまたはこれに対応付けて、応答がそのタスクに対処するために与えられるようにしてもよい。別の実施例では、ユーザ応答をタスクタイプによって規定またはそれに対応付けて、そのタスクタイプのタスクに対処するように応答が与えられるようにしてもよい。したがって、自動ゲームプレイ制御はユーザゲームプレイプロファイルに基づいて行う。ユーザのユーザゲームプレイプロファイルは、ユーザゲームプレイをシミュレートするユーザゲームプレイスタイルを規定する。ユーザゲームプレイプロファイルの生成は、図3Aに関連して前述しており、ユーザの以前のゲームプレイをモニタすることを含む。たとえば、以前のゲームプレイにおけるユーザによる以前の応答をモニタ及び分析することによって、1つ以上のタスクタイプのタスクに対する学習された応答を、ユーザゲームプレイプロファイルにおいて規定する。自動ゲームプレイ制御において、本方法は、ユーザゲームプレイプロファイルにおいて規定されたユーザゲームプレイスタイルに基づいて第1のゲーミングアプリケーションのインスタンスを制御することを含む。
一実施形態では、リクエストは、ゲーミングアプリケーションをプレイしているユーザに対する代役を務めるリクエストを含んでいてもよい。リクエストを、ユーザがゲームから離れ得るように送出してもよいし、またはユーザがゲーミングアプリケーションの難しい部分をしのぐことができるようなものであってもよいし、または他の理由で生成してもよい。
一実施形態では、ユーザはゲームクラウドシステムからの支援を要求してもよい。すなわち、ユーザは、ゲームクラウドシステムが提供する支援を開始する。たとえば、ユーザはタスク(たとえば、緑のドアをどうやって開ける?)に行き詰まることがあり、ユーザはゲーミングシステムまたはゲームクラウドシステムにヘルプを問い合わせることができる。ある実施態様では、問い合わせを、たとえばヘルパー(たとえば、ゲーミングにおけるエキスパート)のネットワークに一斉送信する注釈付きビデオクリップからテキストまたはビデオに変換する。したがって、注釈付きビデオクリップをエキスパートプレイヤーに送ってもよく、そしてエキスパートプレイヤーはその回答を送信する。回答を任意の形態で与えてもよい。複数の回答を分析して所定のタスクに対する適切な応答を決定してもよい、たとえばタスクを達成するために取るもっとも一般的な応答、または最速のもの、または最も危険なもの等である。適切な応答をユーザが駆動してもよいし、またはユーザゲームプレイプロファイルが駆動してもよい(たとえば応答をユーザのゲームプレイスタイルにマッチさせる)。タスクに対する回答及び適切な応答をゲーム知識データベースに記憶して(たとえば、ゲームFAQの形式で)、それらに後でアクセスすることができ、また初期設定またはユーザゲームプレイプロファイルにおける応答を形成するために利用できるようにしてもよい。
一実施形態では、自動ゲームプレイ制御は時間に限定される。すなわち、所定の時間の後に、自動ゲームプレイ制御に対するハードストップがある。このように、ゲームプレイを完全に自動化することはできない。たとえばユーザがマルチプレイヤーゲーミングセッションに参加しているときに、他のユーザに対する公平の点を考慮してである。また、これによって、自動制御の戦いがエスカレートすることが阻止される。すべてのユーザについて、マルチプレイヤーゲーミングセッションに勝つために自動ゲーム制御を用いる傾向がある。
加えて、ユーザは自動ゲーム制御をどのように行うかを制御してもよい。たとえば、進行制御因子を、支援に対するリクエストにおいて受け取り及び/または規定する。進行制御因子が低進行を示して、ゲームプレイのそのままの状態を維持してもよい。他方では、進行制御因子が高進行を示すときに、制約された時間の中でゲーミングアプリケーションの中をできる限り最も多く進行するように、ゲームプレイはより攻撃的であってもよい。
加えて、ユーザは、ユーザゲームプレイスタイルをどのように攻撃的に規定するかを制御してもよい。たとえば、ユーザゲームプレイスタイルに対する攻撃性制御因子をリクエスト内で受け取って及び/または規定する。攻撃性制御因子は第1のゲーミングアプリケーションをプレイするときの攻撃性のレベルを規定する。一実施形態では、攻撃性は必ずしもゲームを進行することに直接関係していなくてもよいが、その代わりにどのようにゲーミングアプリケーションをプレイするかをさらに規定してもよい。たとえば、攻撃性は、状況のあるセットが与えられたときにキャラクタはどのように行動するべきかを規定してもよい。高レベルの攻撃性には、状況及び関連する結果を評価するための時間がほとんどまたはまったく含まれていなくてもよいが、より低レベルの攻撃性では、自動ゲームプレイ内で任意のアクションを取る前に状況及び関連する結果の評価を反映してもよい。
シングルプレイヤーモードまたはマルチプレイヤーモードでゲーミングアプリケーションに参加しているユーザに対するゲーミング制御の提供を例示する特定の実施形態を示してきたが、これらは一例としてかつ限定を目的とせずに説明している。当業者が本開示を読めば、本開示の趣旨及び範囲に入るさらなる実施形態を実現する。
なお、広い地理的領域に渡って送り出されるアクセスサービス(たとえば、本実施形態のゲームにアクセスすること)は、クラウドコンピューティングを用いることが多い。クラウドコンピューティングは、動的にスケール変更可能であって多くの場合に仮想化されている資源がインターネット上でサービスとして提供されるコンピューティングのスタイルである。ユーザは、ユーザをサポートする「クラウド」における技術基盤のエキスパートである必要はない。クラウドコンピューティングは異なるサービスに分けることができる。たとえばサービスとしてのインフラストラクチャ(IaaS)、サービスとしてのプラットフォーム(PaaS)、及びサービスとしてのソフトウェア(SaaS)である。クラウドコンピューティングサービスは、ウェブブラウザからアクセスする共通アプリケーション(たとえばビデオゲーム)をオンラインで提供することが多いが、ソフトウェア及びデータはクラウド内のサーバ上に記憶される。用語クラウドは、インターネットをコンピュータネットワーク図でどのように示すかに基づいた、インターネットに対するメタファーとして用いられ、それが隠す複雑なインフラストラクチャに対する抽象化である。
ゲーム処理サーバ(GPS)(または単純に「ゲームサーバ」)をゲームクライアントが用いて、シングル及びマルチプレイヤービデオゲームをプレイする。インターネット上でプレイされるほとんどのビデオゲームは、ゲームサーバに対する接続を介して動作する。典型的に、ゲームは、プレイヤーからデータを収集してそれを他のプレイヤーに分配する専用サーバアプリケーションを用いる。これは、ピアツーピア配置よりも効率的かつ効果的であるが、サーバアプリケーションをホストする別個のサーバを必要とする。別の実施形態では、GPSは、集中型GPSに依拠することなく情報を交換するように、プレイヤーとその対応するゲームプレイングデバイスとの間の通信を設定する。
専用のGPSは、クライアントとは無関係に実行されるサーバである。このようなサーバ通常、データセンタ内に配置される専用のハードウェア上で実行され、より広い帯域幅と専用の処理能力が得られる。専用サーバは、ほとんどのPCベースのマルチプレイヤーゲームに対してゲームサーバをホストする好ましい方法である。大規模なマルチプレイヤーオンラインゲームが、ゲームタイトルを所有するソフトウェア会社が通常はホストする専用サーバ上で実行されて、ゲームが内容を制御及び更新することができる。
ユーザは、クライアントデバイスを伴うリモートサービスにアクセスする。クライアントデバイスは、少なくともCPU、ディスプレイ、及びI/Oを含む。クライアントデバイスは、PC、携帯電話、ネットブック、PDAなどとすることができる。一実施形態では、ゲームサーバ上で実行されるネットワークは、クライアントが用いるデバイスのタイプを認識して、使用する通信方法を調整する。別の場合では、クライアントデバイスが標準的な通信方法(たとえば、ハイパーテキストマークアップランゲージ)を用いて、インターネットを介してゲームサーバ上のアプリケーションにアクセスする。
本開示の実施形態を、ハンドヘルドデバイス、マイクロプロセッサシステム、マイクロプロセッサベースまたはプログラマブル民生用エレクトロニクス、ミニコンピュータ、メインフレームコンピュータなどを含む種々のコンピュータシステム構成を用いて実施してもよい。また本開示は分散コンピューティング環境で実施することができる。ここでは、タスクは、有線ベースまたは無線ネットワークを通してリンクされたリモート処理デバイスによって行われる。
当然のことながら、所定のビデオゲームを、特定のプラットフォーム及び特定の対応付けられるコントローラデバイスに対して開発してもよい。しかし、このようなゲームが、本明細書で示したようにゲームクラウドシステムを介して利用できるときは、ユーザは異なるコントローラデバイスによってビデオゲームにアクセスしてもよい。たとえば、ゲームをゲームコンソール及びその付随するコントローラに対して開発していてもよいが、ユーザはキーボード及びマウスを用いてパーソナルコンピュータからクラウドベースバージョンのゲームにアクセスしていてもよい。このようなシナリオでは、入力パラメータ構成は、ユーザの利用可能なコントローラデバイス(この場合、キーボード及びマウス)によって生成できる入力から、ビデオゲームの実行に対して受け入れられる入力へのマッピングを規定することができる。
別の実施例では、ユーザはクラウドゲーミングシステムに、タブレットコンピューティングデバイス、タッチスクリーンスマートフォン、または他のタッチスクリーン駆動デバイスを介してアクセスしてもよい。この場合、クライアントデバイス及びコントローラデバイスを同じデバイス内で一つに一体化して、入力は、検出されたタッチスクリーン入力/ジェスチャによって提供する。このようなデバイスに対しては、入力パラメータ構成は、ビデオゲームに対するゲーム入力に対応する特定のタッチスクリーン入力を規定してもよい。たとえば、ボタン、方向パッド、または他のタイプの入力要素を、ビデオゲームを実行する間に表示またはオーバーレイして、ゲーム入力を生成するためにユーザがタッチすることができるタッチスクリーン上の場所を示してもよい。またジェスチャ(たとえば、特定の方向のスワイプまたは特定のタッチ動作)をゲーム入力として検出してもよい。一実施形態では、チュートリアルをユーザに提供して、ゲームプレイに対してタッチスクリーンを介して入力を与える方法を、たとえば、ビデオゲームのゲームプレイを始める前に示して、ユーザをタッチスクリーン上の制御の動作に順応させることができる。
いくつかの実施形態では、クライアントデバイスは、コントローラデバイスに対する接続点として機能する。すなわち、コントローラデバイスは無線または有線接続を介してクライアントデバイスと通信して、コントローラデバイスからの入力をクライアントデバイスに送信する。そしてクライアントデバイスは次にこれらの入力を処理して、それから入力データをクラウドゲームサーバにネットワークを介して送信してもよい(たとえば、ローカルネットワーキングデバイスたとえばルータを介してアクセスする)。しかし他の実施形態では、コントローラ自体を、ネットワークデバイスであって、ネットワークを介して入力を直接クラウドゲームサーバに通信する能力があり、このような入力を最初にクライアントデバイスを通して通信する必要がないネットワークデバイスとすることができる。たとえば、コントローラはローカルネットワーキングデバイス(たとえば、前述のルータ)に接続して、クラウドゲームサーバとの間でデータを送受信してもよい。したがって、クラウドベースのビデオゲームから映像出力を受け取って、それをローカルディスプレイ上でレンダリングするために、依然としてクライアントデバイスを必要としてもよいが、コントローラがクラウドゲームサーバにネットワークを介して入力を直接送って、クライアントデバイスを迂回できるようにすることによって、入力待ち時間を短くすることができる。
一実施形態では、ネットワーク接続されたコントローラ及びクライアントデバイスを、あるタイプの入力をコントローラからクラウドゲームサーバに直接送り、他のタイプの入力をクライアントデバイスを介して送るように、構成することができる。たとえば、検出がコントローラ自体以外の任意のさらなるハードウェアまたは処理に依存しない入力を、コントローラからクラウドゲームサーバにネットワークを介して直接送って、クライアントデバイスを迂回することができる。このような入力としては、ボタン入力、ジョイスティック入力、組み込み動作検出入力(たとえば、加速度計、磁気計、ジャイロスコープ)などを挙げてもよい。しかし、さらなるハードウェアを用いるかまたはクライアントデバイスによる処理が必要な入力を、クライアントデバイスがクラウドゲームサーバに送ることができる。これらは、クラウドゲームサーバに送る前にクライアントデバイスによって処理され得るゲーム環境からの取り込んだビデオまたはオーディオを含んでいてもよい。さらに、コントローラの動作検出ハードウェアからの入力を、取り込んだビデオとともにクライアントデバイスによって処理して、コントローラの位置及び動作を検出してもよく、これはその後クライアントデバイスによってクラウドゲームサーバに通信される。当然のことながら、種々の実施形態によるコントローラデバイスは、データ(たとえば、フィードバックデータ)をクライアントデバイスから受け取ってもよいし、またはクラウドゲーミングサーバから直接受け取ってもよい。
当然のことながら、本明細書で説明した実施形態は、任意のタイプのクライアントデバイス上で実行してもよい。いくつかの実施形態では、クライアントデバイスは頭部装着型ディスプレイ(HMD)である。
本開示の実施形態により、図4(頭部装着型ディスプレイ450のコンポーネントを例示する図)を示す。頭部装着型ディスプレイ450は、プログラム命令を実行するためのプロセッサ400を含む。メモリ402が記憶目的で設けられており、揮発性及び不揮発性メモリの両方を含んでいてもよい。ユーザが見え得る視覚インターフェースを提供するディスプレイ404が含まれている。電池406が頭部装着型ディスプレイ450に対する電源として設けられている。動作検出モジュール408は、種々の種類の動感ハードウェア(たとえば、磁気計410、加速度計412、及びジャイロスコープ414)のうちのいずれかを含んでいてもよい。
加速度計は、加速度及び重力誘起反力を測定するためのデバイスである。単一及び複数の軸モデルが、異なる方向での加速度の大きさ及び方向を検出するために利用可能である。加速度計を用いて傾斜、振動、及び衝撃を検知する。一実施形態では、3つの加速度計412を用いて重力の方向を得る。その結果、2つの角度(ワールドスペースピッチ及びワールドスペースロール)に対する絶対参照が与えられる。
磁気計は、頭部装着型ディスプレイの付近での磁界の強度及び方向を測定する。一実施形態では、頭部装着型ディスプレイ内で3つの磁気計410を用いて、ワールドスペースヨー角に対する絶対参照を確実にする。一実施形態では、磁気計は地球磁場(±80マイクロテスラである)を測るようにデザインされている。磁気計は金属の影響を受け、実際のヨーとともに単調なヨー測定値を与える。磁界は環境内の金属に起因してゆがむ場合があり、その結果、ヨー測定値にゆがみが生じる。必要に応じて、他のセンサ(たとえば、ジャイロスコープまたはカメラ)からの情報を用いて、このゆがみを較正することができる。一実施形態では、加速度計412を磁気計410とともに用いて、頭部装着型ディスプレイ450の勾配及び方位角を取得する。
ジャイロスコープは、角運動量の原理に基づいて方位を測定または維持するためのデバイスである。一実施形態では、3つのジャイロスコープ414が、慣性感知に基づいて、対応する軸(x、y、及びz)を横切る動きについての情報を与える。ジャイロスコープは高速回転を検出するのに有用である。しかしジャイロスコープは、絶対参照の存在がないと規定時間を超えて移動する可能性がある。このためジャイロスコープを定期的に再設定する必要がある。再設定は他の利用できる情報(たとえば、物体の視覚追跡、加速度計、磁気計などに基づいた位置/方位測定)を用いて行うことができる。
カメラ416が、実環境の画像及び画像ストリームを取り込むために設けられている。2つ以上のカメラが頭部装着型ディスプレイ450に含まれていてもよい。たとえば、後方を向く(ユーザが頭部装着型ディスプレイ450のディスプレイを見たときにユーザから離れる方に向かう)カメラと、前方を向く(ユーザが頭部装着型ディスプレイ450のディスプレイを見たときにユーザの方に向かう)カメラとである。さらに深度カメラ418を、実環境における物体の深度情報を検知するために頭部装着型ディスプレイ450に含めてもよい。
一実施形態では、HMDの前面に一体化されたカメラを用いて、安全性に関する警告を出してもよい。たとえば、ユーザが壁または物体にアプローチしている場合、ユーザに警告してもよい。一実施形態では、ユーザに部屋の中の物理的対象のアウトライン図を与えて、その存在をユーザに警告してもよい。アウトラインは、たとえば、仮想環境におけるオーバーレイであってもよい。いくつかの実施形態では、HMDユーザに、基準マーカー(たとえば、床においてオーバーレイされている)に対する視界を与えてもよい。たとえば、マーカーは、ユーザに、ユーザがゲームをプレイしている部屋の中心がある基準を与えてもよい。これによって、たとえば、部屋の中の壁または他の物体との衝突を回避するためにユーザはどこに移動すべきかの視覚情報をユーザに与えてもよい。また触覚警告をユーザに提供して(及び/またはオーディオ警告)、ユーザが着用してゲームをプレイするかまたはHMDを用いて内容をナビゲートするときの安全性を高めることができる。
頭部装着型ディスプレイ450は、オーディオ出力を出すためのスピーカ420を含む。また、マイクロフォン422を、実環境からオーディオ(たとえば、周囲環境からの音、ユーザが形成する音声など)を取り込むために含めてもよい。頭部装着型ディスプレイ450は、ユーザに触覚フィードバックを与えるための触覚フィードバックモジュール424を含む。一実施形態では、触覚フィードバックモジュール424は頭部装着型ディスプレイ450の動き及び/または振動を引き起こして、ユーザに触覚フィードバックを与えることができる。
LED426が、頭部装着型ディスプレイ450のステータスの視覚インジケータとして設けられている。たとえば、LEDは電池レベル、パワーオンなどを示してもよい。カードリーダ428を提供して、頭部装着型ディスプレイ450がメモリカードとの間で情報を読み込み及び書き込むことができるようにする。USBインターフェース430が、周辺デバイスの接続または他のデバイス(たとえば、他の携帯デバイス、コンピュータなど)への接続を可能にするためのインターフェースの一実施例として含まれている。頭部装着型ディスプレイ450の種々の実施形態において、種々の種類のインターフェースのうちのいずれかを、頭部装着型ディスプレイ450のより大きな接続性を可能にするために含めてもよい。
WiFi(登録商標)モジュール432が、無線ネットワーキング技術を介してインターネットに接続することを可能にするために含まれている。また、頭部装着型ディスプレイ450は、他のデバイスに対する無線接続を可能にするためのブルートゥース(登録商標)モジュール434を含む。また通信リンク436が、他のデバイスに接続するために含まれていてもよい。一実施形態では、通信リンク436は無線通信用に赤外線伝送を用いる。他の実施形態では、通信リンク436は、他のデバイスとの通信用に種々の無線または有線伝送プロトコルのうちの何れかを用いてもよい。
入力ボタン/センサ438が、ユーザに対する入力インターフェースを与えるために含まれている。種々の種類の入力インターフェースのうちの何れかが含まれていてもよい。たとえば、ボタン、タッチパッド、ジョイスティック、トラックボールなどである。超音波通信モジュール440が、超音波技術を介した他のデバイスとの通信を促進するために頭部装着型ディスプレイ450に含まれていてもよい。
バイオセンサ442が、ユーザからの生理学的データの検出を可能にするために含まれている。一実施形態では、バイオセンサ442には、ユーザの皮膚を通してユーザの生体電気信号を検出するために1つ以上の乾式電極が含まれている。
頭部装着型ディスプレイ450の前述のコンポーネントを、頭部装着型ディスプレイ450に含まれ得る単なる典型的なコンポーネントとして説明してきた。本開示の種々の実施形態では、頭部装着型ディスプレイ450には、種々の前述のコンポーネントのうちのいくつかが含まれていてもよいしそうでなくてもよい。頭部装着型ディスプレイ450の実施形態にはさらに、ここでは説明していないが当該技術分野で知られている他のコンポーネントが、本明細書で説明したような本開示の態様を促進する目的で含まれていてもよい。
当業者であれば分かるように、本開示の種々の実施形態において、前述のハンドヘルドデバイスをディスプレイ上に表示される対話型アプリケーションとともに用いて、種々の対話型機能を得てもよい。本明細書で説明した典型的な実施形態は、単に一例として、限定を目的とせずに示している。
図5は、本開示の種々の実施形態によるゲームシステム500のブロック図である。ゲームシステム500は、ネットワーク515を介して1つ以上のクライアント510にビデオストリームを提供するように構成されている。ゲームシステム500は典型的に、ビデオサーバシステム520及び任意的なゲームサーバ525を含んでいる。ビデオサーバシステム520は、1つ以上のクライアント510にビデオストリームを、最小品質のサービスで提供するように構成されている。たとえば、ビデオサーバシステム520は、ビデオゲーム内の視野状態または視点を変えるゲームコマンドを受け取り、クライアント510に、この状態変化を最小の遅延時間で反映した更新されたビデオストリームを提供してもよい。ビデオサーバシステム520を、ビデオストリームを広範囲の代替的なビデオフォーマット(これから規定されるフォーマットを含む)で提供するように構成してもよい。さらに、ビデオストリームは、広範囲のフレームレートにおいてユーザに示すように構成されたビデオフレームを含んでいてもよい。典型的なフレームレートは30フレーム/秒、60フレーム/秒、及び520フレーム/秒である。しかし、より高いまたはより低いフレームレートが本開示の代替的な実施形態に含まれている。
クライアント510(本明細書では別個に510A.、510B.などと言う)としては以下を挙げてもよい。頭部装着型ディスプレイ、端末、パーソナルコンピュータ、ゲームコンソール、タブレットコンピュータ、電話機、セットトップボックス、キオスク、無線デバイス、デジタルパッド、スタンドアロンデバイス、ハンドヘルドゲームプレイングデバイスなど。典型的に、クライアント510は、符号化ビデオストリーム(すなわち、圧縮されている)を受け取り、ビデオストリームを復号化して、結果として得られるビデオをユーザ(たとえば、ゲームのプレイヤー)に示すように構成されている。符号化ビデオストリームを受け取り及び/またはビデオストリームを復号化するプロセスは典型的に、個々のビデオフレームをクライアントの受信バッファに記憶することを含む。ビデオストリームをユーザに、クライアント510に一体化されたディスプレイ上でまたは別個のデバイス(たとえば、モニタまたはテレビジョン)上で与えてもよい。クライアント510は任意的に、2人以上のゲームプレイヤーをサポートするように構成されている。たとえば、ゲームコンソールを、2人、3人、4人以上の同時プレイヤーをサポートするように構成してもよい。これらのプレイヤーがそれぞれ別個のビデオストリームを受け取ってもよいし、または単一のビデオストリームが、各プレイヤーに対して具体的に生成された(たとえば、各プレイヤーの視点に基づいて生成された)フレームの領域を含んでいてもよい。クライアント510は任意的に、地理的に分散している。ゲームシステム500に含まれるクライアントの数は、1または2から数1,000、数10,000、またはそれ以上に大幅に変わってもよい。本明細書で用いる場合、用語「ゲームプレイヤー」は、ゲームをプレイする人を指すために用いられ、用語「ゲームプレイングデバイス」は、ゲームをプレイするために用いるデバイスを指すために用いられる。いくつかの実施形態では、ゲームプレイングデバイスは、協同してユーザにゲーム経験を送出する複数のコンピューティングデバイスを指す場合がある。たとえば、ゲームコンソール及びHMDはビデオサーバシステム520と協同して、HMDを通して見るゲームを与えてもよい。一実施形態では、ゲームコンソールはビデオサーバシステム520からビデオストリームを受け取り、ゲームコンソールはビデオストリーム(またはビデオストリームに対する更新)をレンダリング用にHMDに転送する。
クライアント510は、ネットワーク515を介してビデオストリームを受け取るように構成されている。ネットワーク515は任意のタイプの通信ネットワークであってもよい。たとえば、電話網、インターネット、無線ネットワーク、電力線ネットワーク、ローカルエリアネットワーク、ワイドエリアネットワーク、プライベートネットワークなどである。典型的な実施形態では、ビデオストリームは標準プロトコル(たとえば、TCP/IPまたはUDP/IP)を通信される。代替的に、ビデオストリームは専有標準を介して通信される。
クライアント510の典型的な実施例は、プロセッサ、不揮発性メモリ、ディスプレイ、復号化ロジック、ネットワーク通信機能、及び入力デバイスを含むパーソナルコンピュータである。復号化ロジックは、ハードウェア、ファームウェア、及び/またはコンピュータ可読媒体上に記憶されたソフトウェアを含んでいてもよい。ビデオストリームを復号化(及び符号化)するためのシステムは当該技術分野において良く知られており、使用する特定の暗号化方式に応じて変わる。
しかし、クライアント510は(必須ではないが)さらに、受け取ったビデオを変更するように構成されたシステムを含んでいてもよい。たとえば、クライアントを、さらなるレンダリングを実行するように、あるビデオ画像を別のビデオ画像上にオーバーレイするように、ビデオ画像をクロップするように等、構成してもよい。たとえば、クライアント510を、種々のタイプのビデオフレーム(たとえば、Iフレーム、Pフレーム、及びBフレーム)を受け取るように、またこれらのフレームを処理して画像にしてユーザに表示するように構成してもよい。いくつかの実施形態では、クライアント510のメンバーは、さらなるレンダリング、シェーディング、3Dへの変換または同様の動作をビデオストリーム上で実行するように構成されている。クライアント510のメンバーは任意的に、2つ以上のオーディオまたはビデオストリームを受け取るように構成されている。クライアント510の入力デバイスは以下を含んでいてもよい。たとえば、片手ゲームコントローラ、両手ゲームコントローラ、ジェスチャ認識システム、注視認識システム、音声認識システム、キーボード、ジョイスティック、ポインティングデバイス、力フィードバックデバイス、動作及び/または場所検知デバイス、マウス、タッチスクリーン、ニューラルインターフェース、カメラ、これから開発される入力デバイスなど。
クライアント510が受け取るビデオストリーム(及び任意的にオーディオストリーム)は、ビデオサーバシステム520が生成及び提供する。本明細書の他の場所でさらに説明しているように、このビデオストリームはビデオフレームを含む(またオーディオストリームはオーディオフレームを含む)。ビデオフレームは、ユーザに表示される画像に対して意味があるように寄与するように構成されている(たとえば、情報を適切なデータ構造で含む)。本明細書で用いる場合、用語「ビデオフレーム」は、ユーザに示される画像に寄与する(たとえば、画像を生じさせる)ように構成された情報を主に含むフレームを指すために用いられる。「ビデオフレーム」に関する本明細書における教示のほとんどは「オーディオフレーム」に適用することもできる。
クライアント510は典型的に、ユーザから入力を受け取るように構成されている。これらの入力は、ビデオゲームの状態を変えるかまたは他の方法でゲームプレイに影響するように構成されたゲームコマンドを含んでいてもよい。ゲームコマンドは、入力デバイスを用いて受け取ることができ、及び/またはクライアント510上で実行されるコンピューティング命令によって自動的に生成してもよい。受け取ったゲームコマンドを、クライアント510からネットワーク515を介して、ビデオサーバシステム520及び/またはゲームサーバ525に通信する。たとえば、いくつかの実施形態では、ゲームコマンドはビデオサーバシステム520を介してゲームサーバ525に通信される。いくつかの実施形態では、ゲームコマンドの別個のコピーを、クライアント510からゲームサーバ525及びビデオサーバシステム520に通信する。ゲームコマンドの通信は任意的に、コマンドの身元に依存している。ゲームコマンドは任意的に、クライアント510Aから、オーディオまたはビデオストリームをクライアント510Aに送るために用いる異なるルートまたは通信チャネルを通して通信する。
ゲームサーバ525は任意的に、ビデオサーバシステム520とは異なるエンティティによって動作させる。たとえば、ゲームサーバ525を、マルチプレイヤーゲームのパブリッシャによって動作させてもよい。この実施例では、ビデオサーバシステム520は任意的にゲームサーバ525によってクライアントと見なされ、また任意的に、ゲームサーバ525の視点から現れて従来技術のゲームエンジンを実行する従来技術のクライアントとなるように構成されている。ビデオサーバシステム520とゲームサーバ525との間の通信は任意的に、ネットワーク515を介して行う。したがって、ゲームサーバ525は、ゲーム状態情報を複数のクライアント(そのうちの1つはゲームサーバシステム520)に送る従来技術のマルチプレイヤーゲームサーバとすることができる。ビデオサーバシステム520を、ゲームサーバ525の複数のインスタンスと同時に通信するように構成してもよい。たとえば、ビデオサーバシステム520を、異なるユーザに複数の異なるビデオゲームを提供するように構成することができる。これらの異なるビデオゲームをそれぞれ、異なるゲームサーバ525によってサポートしてもよく、及び/または異なるエンティティによってパブリッシュしてもよい。いくつかの実施形態では、ビデオサーバシステム520のいくつかの地域分散型インスタンスは、ゲームビデオを複数の異なるユーザに提供するように構成されている。ビデオサーバシステム520のこれらのインスタンスはそれぞれ、ゲームサーバ525の同じインスタンスと通信していてもよい。ビデオサーバシステム520と1つ以上のゲームサーバ525との間の通信は任意的に、専用の通信チャネルを介して行う。たとえば、ビデオサーバシステム520を、これら2つのシステム間の通信に専用の高帯域幅チャンネルを介してゲームサーバ525に接続してもよい。
ビデオサーバシステム520は、少なくともビデオソース530、I/Oデバイス545、プロセッサ550、及び非一時的な記憶装置555を含む。ビデオサーバシステム520は、1つのコンピューティングデバイスを含んでいてもよいし、または複数のコンピューティングデバイス間で分散してもよい。これらのコンピューティングデバイスは任意的に、通信システム(たとえば、ローカルエリアネットワーク)を介して接続されている。
ビデオソース530は、動画を形成するビデオストリーム(たとえば、ストリーミングビデオまたは一連のビデオフレーム)を提供するように構成されている。いくつかの実施形態では、ビデオソース530はビデオゲームエンジン及びレンダリングロジックを含む。ビデオゲームエンジンは、プレイヤーからゲームコマンドを受け取って、受け取ったコマンドに基づいてビデオゲームの状態のコピーを維持するように構成されている。このゲーム状態には、ゲーム環境における物体の位置、ならびに典型的に視点が含まれる。ゲーム状態にはまた、物体の特性、画像、色彩及び/またはテクスチャが含まれていてもよい。
ゲーム状態は典型的に、ゲームルール、ならびにゲームコマンド(たとえば、移動する、回転する、攻撃する、フォーカスを設定する、やり取りする、使用するなど)に基づいて維持される。ゲームエンジンの一部は任意的に、ゲームサーバ525内に配置されている。ゲームサーバ525は、地理的に分散したクライアントを用いて複数のプレイヤーから受け取ったゲームコマンドに基づいて、ゲームの状態のコピーを維持してもよい。これらの場合では、ゲーム状態はゲームサーバ525によってビデオソース530に提供される。ゲーム状態のコピーは記憶されて、レンダリングが行われる。ゲームサーバ525は、ネットワーク515を介してクライアント510から直接ゲームコマンドを受け取ってもよく、及び/またはビデオサーバシステム520を介してゲームコマンドを受け取ってもよい。
ビデオソース530は典型的に、レンダリングロジック、たとえば、ハードウェア、ファームウェア、及び/またはコンピュータ可読媒体(たとえば、記憶装置555)上に記憶されたソフトウェアを含む。このレンダリングロジックは、ゲーム状態に基づいてビデオストリームのビデオフレームを形成するように構成されている。レンダリングロジックの全部または一部は任意的に、グラフィックスプロセシングユニット(GPU)内に配置されている。レンダリングロジックは典型的に、ゲーム状態及び視点に基づいて、物体間の3次元空間関係を決定すること及び/または適切なテクスチャを適用すること等のために構成された処理ステージを含む。レンダリングロジックが生成する生ビデオは次に、通常は、クライアント510に通信される前に符号化される。たとえば、生ビデオの符号化は、アドビフラッシュ(登録商標)標準、.wav、H.264、H.263、On2、VP6、VC−1、WMA、Huffyuv、Lagarith、MPG−x.Xvid.FFmpeg、x264、VP6−8、リアルビディオ、mp3などにより行ってもよい。符号化プロセスが生成するビデオストリームは任意的に、リモートデバイス上の復号器に送出するためにパッケージされる。ビデオストリームは、フレームサイズ及びフレームレートによってを特徴付けられる。典型的なフレームサイズとしては、800x600、1280x720(たとえば、720p)、1024x768が挙げられるが、任意の他のフレームサイズを用いてもよい。フレームレートはビデオフレーム/秒の数である。ビデオストリームは、異なるタイプのビデオフレームを含んでいてもよい。たとえば、H.264標準には「P」フレーム及び「I」フレームが含まれる。Iフレームにはディスプレイデバイス上のすべてのマクロブロック/画素をリフレッシュする情報が含まれ、一方でPフレームにはそのサブセットをリフレッシュする情報が含まれる。Pフレームは典型的に、Iフレームよりもデータサイズが小さい。本明細書で用いる場合、用語「フレームサイズ」はフレーム内の画素の個数を指すことが意図されている。用語「フレームデータサイズ」は、フレームを記憶するのに必要なバイトの個数を指すために用いられる。
代替的な実施形態では、ビデオソース530にはビデオ記録デバイス(たとえばカメラ)が含まれる。このカメラを用いて、コンピュータゲームのビデオストリーム内に含めることができる遅延またはライブビデオを生成してもよい。結果として得られるビデオストリームには任意的に、スチールまたはビデオカメラを用いて記録されたレンダリング画像及び画像の両方が含まれる。ビデオソース530はまた、ビデオストリームに含めるべき以前に記録されたビデオを記憶するように構成された記憶デバイスを含んでいてもよい。ビデオソース530はまた、物体(たとえば、人)の動作または位置を検出するように構成された動作または位置決め検知デバイスと、検出した動作及び/または位置に基づいてゲーム状態を判定するかまたはビデオを生成するように構成されたロジックとを含んでいてもよい。
ビデオソース530は任意的に、他のビデオ上に配置されるように構成されたオーバーレイを提供するように構成されている。たとえば、これらのオーバーレイは、コマンドインターフェース、ログイン命令、ゲームプレイヤーへのメッセージ、他のゲームプレイヤーの画像、他のゲームプレイヤーのビデオ配信(たとえば、ウェブカメラビデオ)を含んでいてもよい。クライアント510Aがタッチスクリーンインターフェースまたは視線検出インターフェースを含む実施形態では、オーバーレイは仮想キーボード、ジョイスティック、タッチパッドなどを含んでいてもよい。オーバーレイの一実施例では、プレイヤーの音声をオーディオストリーム上にオーバーレイする。ビデオソース530は任意的に、1つ以上のオーディオソースをさらに含む。
ビデオサーバシステム520が、2人以上のプレイヤーからの入力に基づいてゲーム状態を維持するように構成されている実施形態では、各プレイヤーは、視野位置及び視野方向を含む異なる視点を有していてもよい。ビデオソース530は任意的に、その視点に基づいて各プレイヤーに対する別個のビデオストリームを提供するように構成されている。さらに、ビデオソース530を、異なるフレームサイズ、フレームデータサイズ、及び/または符号化を各クライアント510に提供するように構成してもよい。ビデオソース530は任意的に、3Dビデオを提供するように構成されている。
I/Oデバイス545は、ビデオサーバシステム520が以下を送り及び/または受け取るように構成されている。情報、たとえばビデオ、コマンド、情報に対するリクエスト、ゲーム状態、注視情報、デバイス動作、デバイス場所、ユーザ動作、クライアント素性、プレイヤー素性、ゲームコマンド、セキュリティ情報、オーディオなど。I/Oデバイス545には典型的に、通信ハードウェア(たとえば、ネットワークカードまたはモデム)が含まれる。I/Oデバイス545は、ゲームサーバ525、ネットワーク515、及び/またはクライアント510と通信するように構成されている。
プロセッサ550は、本明細書で説明したビデオサーバシステム520の種々のコンポーネント内に含まれたロジック(たとえば、ソフトウェア)を実行するように構成されている。たとえば、プロセッサ550を、ビデオソース530、ゲームサーバ525、及び/またはクライアントクォリファイア560の機能を実行するようにソフトウェア命令によってプログラムしてもよい。ビデオサーバシステム520は任意的に、プロセッサ550の2つ以上のインスタンスを含む。またプロセッサ550をソフトウェア命令によってプログラムして、ビデオサーバシステム520が受け取ったコマンドを実行してもよいし、または本明細書で説明したゲームシステム500の種々の要素の動作を調整してもよい。プロセッサ550は、1つ以上のハードウェアデバイスを含んでいてもよい。プロセッサ550は電子プロセッサである。
記憶装置555には非一時的なアナログ及び/またはデジタル記憶デバイスが含まれる。たとえば、記憶装置555には、ビデオフレームを記憶するように構成されたアナログ記憶デバイスが含まれていてもよい。記憶装置555は、コンピュータ可読デジタル記憶装置、たとえば、ハードドライブ、光学ドライブ、またはソリッドステート記憶装置を含んでいてもよい。記憶装置515は、ストアビデオフレーム、人工フレーム、ビデオフレーム及び人工フレームの両方を含むビデオストリーム、オーディオフレーム、オーディオストリームなどを記憶するように構成されている(たとえば、適切なデータ構造またはファイルシステムによって)。記憶装置555は任意的に、複数のデバイス間に分散されている。いくつかの実施形態では、記憶装置555は、本明細書の他の場所で説明したビデオソース530のソフトウェアコンポーネントを記憶するように構成されている。これらのコンポーネントは、必要に応じて対応できる状態のフォーマットで記憶される。
ビデオサーバシステム520は任意的に、クライアントクォリファイア560をさらに含む。クライアントクォリファイア560は、クライアント(たとえばクライアント510Aまたは510B)の能力をリモートに判定するように構成されている。これらの能力には、クライアント510A自体の能力、ならびにクライアント510Aとビデオサーバシステム520との間の1つ以上の通信チャネルの能力の両方を含めることができる。たとえば、クライアントクォリファイア560を、ネットワーク515を通る通信チャネルをテストするように構成してもよい。
クライアントクォリファイア560は、クライアント510Aの能力を手動でまたは自動的に判定する(たとえば、発見する)ことができる。手動で行う決定には、クライアント510Aのユーザと通信すること及びユーザに能力の提供を求めることが含まれる。たとえば、いくつかの実施形態では、クライアントクォリファイア560は、クライアント510Aのブラウザ内に画像、テキストなどを表示するように構成されている。一実施形態では、クライアント510Aはブラウザを含むHMDである。別の実施形態では、クライアント510Aは、ブラウザ(HMD上に表示してもよい)を有するゲームコンソールである。表示された物体は、ユーザが、情報たとえばクライアント510Aのオペレーティングシステム、プロセッサ、ビデオ復号器タイプ、ネットワーク接続のタイプ、ディスプレイ解像度などを入力することをリクエストする。ユーザが入力する情報をクライアントクォリファイア560に通信で戻す。
自動決定を、たとえば、クライアント510A上でエージェントを実行することによって、及び/またはクライアント510Aにテストビデオを送ることによって行ってもよい。エージェントとしては、ウェブページに埋め込まれたかまたはアドオンとしてインストールされたコンピューティング命令(たとえば、ジャバスクリプト)を挙げてもよい。エージェントは任意的に、クライアントクォリファイア560によって与えられる。種々の実施形態では、エージェントは以下を見出すことができる。クライアント510Aの処理能力、クライアント510Aの復号化及び表示能力、クライアント510Aとビデオサーバシステム520との間の通信チャネルの遅延時間信頼性及び帯域幅、クライアント510Aのディスプレイタイプ、クライアント510A上に存在するファイアウォール、クライアント510Aのハードウェア、クライアント510A上で実行されるソフトウェア、クライアント510A内のレジストリエントリなど。
クライアントクォリファイア560は、ハードウェア、ファームウェア、及び/またはコンピュータ可読媒体上に記憶されたソフトウェアを含む。クライアントクォリファイア560を任意的に、ビデオサーバシステム520の1つ以上の他の要素から分離されたコンピューティングデバイス上に配置する。たとえば、いくつかの実施形態では、クライアントクォリファイア560は、クライアント510とビデオサーバシステム520の2つ以上のインスタンスとの間の通信チャネルの特徴を決定するように構成されている。これらの実施形態では、クライアントクォリファイアが見つけた情報を用いて、ビデオサーバシステム520のどのインスタンスが、ストリーミングビデオをクライアント510の1つに送出するのに最適であるかを判定することができる。
当然のことながら、本明細書で規定した種々の実施形態を本明細書で開示した種々の特徴を用いて組み合わせるかまたは組み立てて、具体的な実施態様にしてもよい。したがって、示した実施例は単なるいくつかの可能な実施例であり、種々の要素を組み合わせてさらに多くの実施態様を規定することで可能な種々の実施態様には限定されない。いくつかの実施例では、いくつかの実施態様は、開示したまたは同等な実施態様の趣旨から逸脱することなく、より少ない要素を含んでいてもよい。
本開示の実施形態は、ハンドヘルドデバイス、マイクロプロセッサシステム、マイクロプロセッサベースまたはプログラマブル民生用エレクトロニクス、ミニコンピュータ、メインフレームコンピュータなどを含む種々のコンピュータシステム構成を用いて実施してもよい。また本開示の実施形態を分散コンピューティング環境で実施することができる。ここでは、タスクは、有線ベースまたは無線ネットワークを通してリンクされたリモート処理デバイスによって行われる。
前述の実施形態を念頭において、当然のことながら、本開示の実施形態は、コンピュータシステムに記憶されたデータを伴う種々のコンピュータ実装動作を用いることができる。これらの動作は、物理量の物理的な操作を必要とするものである。本開示の実施形態の一部を構成する本明細書で説明した動作のどれも、有用なマシン動作である。また本開示の実施形態は、これらの動作を行なうためのデバイスまたは装置に関する。装置は必要な目的に対して特別に構成することができるか、または装置を、コンピュータに記憶されたコンピュータプログラムによって選択的に作動または構成された汎用コンピュータとすることができる。詳細には、種々の汎用マシンは、本明細書の教示に従って書き込んだコンピュータプログラムにより用いることができるか、または必要な動作を実行するためにより特化された装置を構成するのにより好都合であってもよい。
また本開示を、コンピュータ可読媒体上のコンピュータ可読コードとして具体化することができる。コンピュータ可読媒体は、データを記憶することができる任意のデータ記憶デバイスである。データはその後、コンピュータシステムによって読み出すことができる。コンピュータ可読媒体の実施例としては以下が挙げられる。ハードドライブ、ネットワーク接続ストレージ(NAS)、読み出し専用メモリ、ランダムアクセスメモリ、CD−ROM、CD−R、CD−RW、磁気テープならびに他の光学的及び非光学的データ記憶デバイス。コンピュータ可読媒体には、コンピュータ可読コードが分配して記憶及び実行されるように、ネットワーク結合されたコンピュータシステム上で分配散されたコンピュータ可読な有形的表現媒体を含むことができる。
本方法の動作を指定された順序で記載したが、当然のことながら、動作間で他のハウスキーピング動作を行ってもよいし、またはわずかに異なる時間で行われるように動作を調整してもよいし、またはシステム内で分配して処理に付随する種々の間隔で処理動作が行われるようにしてもよい(オーバーレイ動作の処理が所望の方法で行われる限り)。
前述の開示は、理解を明瞭にするために少し詳しく説明しているが、添付の請求項の範囲内である変形及び変更を実施できることが明らかである。したがって、本実施形態は例示的であって限定的ではないと考えるべきであり、本開示の実施形態を本明細書で示した詳細に限定してはならないが、添付の請求項の範囲及び均等物内で変更してもよい。