本開示は、ゲームプレイ・セッションの自動生成されるゲーム・サマリに関する。実施例では、ゲーム・サマリは、ゲーム内イベントを含むゲームプレイ・セッションのゲーム・データから抽出されたメタデータから生成されてよい。メタデータを使用して、ゲーム・サマリを生成するシステム及び方法が開示されており、このゲーム・サマリは、1つ又は複数のゲームプレイ・セッション内で発生したゲーム内イベントを伝えるもので、これにより、見る人が関連付けられたスクリーンショット、映像クリップ、及び/又はその他のゲーム・コンテンツにアクセス、視聴、及びキュレート(例えば、ソーシャル・ネットワーク内に公開)することができ、1つ又は複数のゲームプレイ・セッションをより良好に理解することができる。
ゲーム・サマリは、ゲーム内イベントのイベント・ログ、並びに、映像データ、ユーザ入力データ、ゲーム・データ、アプリケーション・プログラミング・インターフェース(API)を使用してゲームによって送信されたデータ、及び/又はゲームプレイ・セッションに関連付けられたその他のデータの解析に基づいてそれぞれが生成され得る、対応するスクリーンショット、映像クリップ、及び/又はその他のゲーム・コンテンツを使用して作成されてもよい。イベント・ログは、ゲームプレイ・セッション内のゲーム内イベントの時間、及びゲーム内イベントとゲーム内イベントを取り込んだゲーム・コンテンツ項目との間の関連付けを示すメタデータを含んでよい。いくつかの実施例では、開示された手法を使用して、ユーザは時間的なコンテキストを有するゲーム内イベントと対話してよく、これにより、より多くの情報に基づいた選択及びゲームプレイ・セッションのより良好な理解が可能になる。ゲーム・サマリの1つ又は複数の部分は、ユーザのアクティビティ・フィードに表示されてよく、及び/又はアクティビティ・フィードからアクセス可能であってよく、ゲーマの活動をよりロバストに視聴することができる。1つ又は複数の実施例では、ゲーム・サマリの1つ又は複数の部分は、経時的及び/又はゲーム・セッションにわたる傾向を示すように、並びにチームなどの選択されたプレイヤのセットに関する情報を伝えるように、1つ又は複数のゲーム・セッション及び/又はプレイヤに対応してよい。
少なくとも1つの実施例では、イベント・ログを使用して、ゲーム・サマリは、ゲーム内イベントに対応する、又は他の方法でゲーム内イベントを示すインターフェース要素(例えば、サムネイルを含む)が表示されるインターフェースを提供してよい。いくつかの実施例では、タイムラインも、ゲーム内イベントの相対的なタイミングを伝えるために表示されてよい。少なくとも1つの実施例では、インターフェース要素は、ゲーム内イベントのリストを形成してよく、メタデータを使用して時間的な(例えば、時系列の)順序で表示されてよい。例えば、各インターフェース要素は、1つ又は複数のゲーム内イベントが発生した映像クリップ又はスクリーンショットのサムネイルに対応してよく、メタデータを使用して時間順に(例えば、画像カルーセルで)表示されてよい。少なくとも1つの実施例では、ユーザはインターフェース要素を選択してよく、これにより、ゲーム内イベントを取り込んだ関連付けられたゲーム・コンテンツ項目をユーザ・インターフェースにロードすることができる。
タイムラインを含む実施例では、選択に基づいて、タイムラインもゲーム内イベントを示すように更新されてよい。例として、更新は、少なくともゲーム内イベントを表す、タイムライン上のアイコン又はその他のインジケータを視覚的に強調することを含んでよい。追加で又は代替的に、イベント・ログは、ゲーム内イベントをゲームプレイ・セッションのラウンド又は試合ごとに整理してよい。ユーザがインターフェース要素を選択したとき、タイムラインは、ゲーム内イベントを含むラウンドに対応するように更新されてよい(例えば、タイムラインにラウンドを表示する、及び/又はタイムラインをラウンドのゲーム内イベントに適合させる)。ユーザ・インターフェースに表示されるゲーム・ステータス情報も、ゲーム内イベントに対応するように更新されてよい。例えば、1つ又は複数のプレイヤのスコアは、ゲーム内イベントに関連付けられた時間におけるゲームプレイ中のプレイヤの状態を反映するように、イベント・ログを使用して更新されてよい。
さらなる点では、ユーザ・インターフェースは、ゲームプレイ・セッションに対応するゲームの仮想環境のマップを含んでよい。インターフェース要素の選択に基づいて、メタデータ内のゲーム内イベントに関連付けられた位置及び時間を使用してマップに注記を付してもよい。位置は、ゲーム内イベントの時及び/若しくはゲーム内イベント中、又はその直後のプレイヤ及び/又は他のゲーム内オブジェクトに対応してよい。様々な実施例では、注記を付すことは、終点がこれらの位置及び時間に基づき得る、マップ上のゲーム内オブジェクトの経路を表示及び/又は更新することを含んでよい。例えば、プレイヤ、敵、ノン・プレイヤ・キャラクタ(NPC:Non-Player Character)、ゲーム内イベント、アイテム、及び/又はその他の要素の1つ又は複数の位置の経路又は、その他のインジケータが、ゲーム内イベントに至るまで、ゲーム内イベント中、及び/又はその後のゲームの状態を反映するためにマップ上に表示されてよい。様々な実施例では、これらの要素は対応する記号又はアイコンを使用して表示されてよく、異なる記号又はアイコンが要素のタイプごとに使用されてよい。
少なくとも1つの実施例では、ゲームプレイ・セッションに関連付けられたゲーム・データを解析してゲーム内イベントを自動的に検出してよく、この検出をトリガとして、ゲーム内イベント並びにメタデータ(例えば、タイムスタンプ、ゲーム内オブジェクト位置、得点、プレイヤ・ステータス、プレイヤ能力値、ユーザ名によるゲームプレイ参加者、イベント・タイプ、キル/デス/アシスト比など)を取り込んだスクリーンショット、映像、及び/又はその他のゲーム・コンテンツ項目を媒介としてゲームプレイを記録及び/又は保存してよい。解析は、ゲームプレイ・セッション中に(例えば、ゲームプレイの1つ若しくは複数の態様(例えば、映像、ユーザ入力など)のストリーム、ゲームからのAPIメッセージ、及び/又はビデオ・ストリーミングのプラットフォーム又はアプリケーションのビューアを解析することによって)行われてよく、並びに/或いはゲームプレイ・セッション後に(例えば、ゲームプレイ・セッションの映像ファイル及び/又は保存したリプレイ、又はその他のゲーム・データについて)行われてよい。
様々な実施例では、ゲーム内イベントは、視覚的キューを得るために画面を観察する(例えば、ニューラル・ネットワーク、コンピュータ・ビジョンなどを使用した)アルゴリズムを使用して検出されてよい。これらの視覚的キューが検出されると、これによりゲームプレイの記録及び/又は保存が自動的にトリガされてよい。少なくとも1つの実施例では、追加で又は代替的に、対応する映像データのさらなる解析がトリガされて、メタデータの1つ又は複数の要素が抽出されてよく、或いはメタデータの少なくとも一部が、対応する視覚的キューの検出によって取得されてよい。メタデータ、スクリーンショット、映像クリップ、マップ(例えば、ゲームから抽出された及び/又はゲームに関連付けられたもの)、ゲームプレイからのプレイヤ・アイコンなどは、ゲーム・サマリの表示に使用するためにデータ・エンティティに格納されてよい。
図1を参照すると、図1は、本開示のいくつかの実施例によるゲーム・サマリ・システム(「GSSシステム」)100の例示的なシステム図である。本明細書に記載されているこの構成及びその他の構成は、実例として記述されているにすぎないことを理解されたい。他の構成及び要素(例えば、機械、インターフェース、機能、順序、機能のグループ化など)が、図示されたものに加えて、又はそれらの代わりに使用することができ、いくつかの要素は完全に省略されてもよい。さらに、本明細書に記載の要素の多くは、個別の若しくは分散型のコンポーネントとして、又は他のコンポーネントと併せて、任意の適した組み合わせ及び位置で実施することができる機能エンティティである。エンティティによって行われるものとして本明細書に記載の様々な機能は、ハードウェア、ファームウェア、及び/又はソフトウェアによって実行されてよい。例えば、様々な機能は、メモリに格納された命令を実行するプロセッサによって実行されてよい。
GSSシステム100は、とりわけ、クライアント装置104(A)、104(B)、及び104(C)(本明細書では集合的に「クライアント装置104」と呼ぶ)、ゲーム・サマリ・サーバ116、並びに/又はゲーム・サーバ126を含んでよい。クライアント装置104(A)、104(B)、及び104(C)が図1に図示されているが、これは限定的であることを意図するものではない。いずれの実例においても、任意の数のクライアント装置104が存在してよい。GSSシステム100(並びにそのコンポーネント及び/又は特性)は、1つ又は複数のコンピューティング装置を使用して実施されてよい。
GSSシステム100のコンポーネントは、ネットワーク102を介して通信することができる。ネットワークは、広域ネットワーク(WAN:Wide Area Network)(例えば、インターネット、公衆交換電話網(PSTN:Public Switched Telephone Network)など)、ローカル・エリア・ネットワーク(LAN:Local Area Network)(例えば、Wi-Fi、ZigBee、Z-Wave、Bluetooth、Bluetooth Low Energy(BLE)、イーサネット(登録商標)など)、低電力広域ネットワーク(LPWAN:Low-Power Wide-Area Network)(例えば、LoRaWAN、Sigfoxなど)、全球航法衛星システム(GNSS:Global Navigation Satellite System)ネットワーク(例えば、全球測位システム(GPS:Global Positioning System))、及び/又は別のネットワーク・タイプを含んでよい。いずれの実例においても、GSSシステム100のコンポーネントのそれぞれは、ネットワーク102のうちの1つ又は複数を介して他のコンポーネントのうちの1つ又は複数と通信してよい。
クライアント装置104は、スマート・フォン、ノート型コンピュータ、タブレット・コンピュータ、デスクトップ・コンピュータ、ウェアラブル装置、ゲーム機、仮想現実システム(例えば、ヘッドセット、コンピュータ、ゲーム機、リモート・コントローラ、コントローラ、及び/若しくはその他のコンポーネント)、ストリーミング装置、インテリジェント・パーソナル・アシスタントを含み得るスマート・ホーム装置、並びに/又はゲーム・プレイをサポートできる別のタイプの装置を含んでよい。
クライアント装置104は、アプリケーション106、ディスプレイ108、通信インターフェース110、入力装置112、グラフィカル・インターフェース管理部130、ゲーム・データ取込み部138、及び関心決定部140を含んでよい。ゲーム・サマリ・サーバ116は、グラフィカル・インターフェース管理部130、通信インターフェース122、及びデータ・ストア124を含んでよい。ゲーム・サマリ・サーバ116は、グラフィカル・インターフェース管理部130、ゲーム・データ取込み部138、及び/又は関心決定部140のうちの1つ又は複数の部分を、クライアント装置104の1つ又は複数に含まれるそれらのコンポーネントに加えて、又はそれらの代わりに含んでもよい。ゲーム・サーバ126は、ゲーム・エンジン128、通信インターフェース132及びデータ・ストア134を含んでよい。
図1には、クライアント装置104、ゲーム・サマリ・サーバ116、及びゲーム・サーバ126の一部のコンポーネント及び/又は特性のみが図示されているが、これは限定的であることを意図するものではない。例えば、クライアント装置104、ゲーム・サマリ・サーバ116、及びゲーム・サーバ126は、追加の又は代替的なコンポーネントを含んでよい。さらに、コンポーネントの構成は実例として提供されているにすぎず、GSSシステム100の実施に応じた非常に柔軟なものであってよい。例えば、本明細書に記載のように、ゲーム・サーバ126のうちの1つ又は複数が、1つ又は複数のゲーム・サマリ・サーバ116として具現化されてよく、及び/又はゲーム・サマリ・サーバ116の機能の少なくとも一部を含んでもよい。実例は、グラフィカル・インターフェース管理部130、ゲーム・データ取込み部138、又は関心決定部140のうちの1つ又は複数の部分を含む。同様に、ゲーム・サマリ・サーバ116の機能の少なくとも一部は、アプリケーション106に含まれていてもいなくてもよく、或いは別途、クライアント装置104によって少なくとも部分的に行われても行われなくてもよい。ゲーム・サマリ・サーバ116とクライアント装置104との両方に、グラフィカル・インターフェース管理部130、ゲーム・データ取込み部138、及び関心決定部140を図示して、実例が図1に示されている。
概要として、アプリケーション106は、クライアント装置104のディスプレイ108上に1つ又は複数のゲーム・サマリ(例えば、ゲーム・サマリ136)を提示することができる様々な可能なタイプのソフトウェアのいずれかを備えてよい。少なくとも1つの実施例では、アプリケーション106(及び/又はクライアント装置104のうちの1つ若しくは複数の、異なるアプリケーション)は、入力装置112を介するクライアント装置104上でのゲームのゲームプレイ(例えば、クラウド及び/又はローカルのゲーム)を容易にするゲーム・アプリケーションを備えてよい。通信インターフェース110は、1つ又は複数のゲーム・サマリ(例えば、メタデータ、映像クリップ、スクリーンショットなど)、入力装置112へのユーザ入力、ストリーミング・コンテンツなどに対応するデータを受信及び/又は送信するように、ネットワーク102などの1つ又は複数のネットワークにわたって通信するための1つ又は複数のコンポーネント及び特性を含んでよい。
入力装置112には、ゲームにユーザ入力を提供することが可能な任意のタイプの装置が含まれてよい。入力装置には、キーボード、マウス、マイクロフォン、タッチ・スクリーン式ディスプレイ、コントローラ、リモート・コントローラ、ヘッドセット(例えば、仮想現実用ヘッドセットのセンサ)、及び/又はその他のタイプの入力装置が含まれてよい。
通信インターフェース110は、ネットワーク102などの1つ又は複数のネットワークにわたって通信するための1つ又は複数のコンポーネント及び特性を含んでよい。通信インターフェース110は、本明細書に記載の、任意の数のネットワーク102を介して通信するように構成されてよい。例えば、図1のGSSシステム100において通信するには、クライアント装置104は、ゲーム・サマリ・サーバ116、ゲーム・サーバ126、及び/又は他のクライアント装置104と通信するために、ルータを介したイーサネット(登録商標)接続又はWi-Fi接続を使用してインターネットにアクセスしてよい。
グラフィカル・インターフェース管理部130は、様々なコンピュータ可読媒体のいずれをも含んでよい。コンピュータ可読媒体は、クライアント装置104(A)によってアクセスすることのできる任意の利用可能な媒体であってよい。コンピュータ可読媒体は、揮発性媒体と不揮発性媒体との両方、及び取り外し可能な媒体と取り外し不可能な媒体との両方を含んでよい。例として、且つ限定的ではなく、コンピュータ可読媒体はコンピュータ記憶媒体及び通信媒体を備えてよい。グラフィカル・インターフェース管理部130は、図6のメモリ604に関して下述するような、追加の又は代替的なコンポーネントを含んでよい。
グラフィカル・インターフェース管理部130は、ゲーム・サマリを生成するように、及び/又はアプリケーション106のユーザ・インターフェース150などのユーザ・インターフェースにおけるゲーム・サマリの表示を管理するように構成されてよい。ゲーム・データ取込み部138は、メタデータ、映像クリップ、及びスクリーンショットなどの、ゲームのゲームプレイからゲーム・データを取り込むように構成されてよい。関心決定部140は、ゲーム・データ取込み部138によって使用され、ゲーム・データ(例えば、ユーザが関心を持ち得るゲーム・データ)の1つ又は複数の部分を選択及び/又は特定するように構成されてよい。少なくとも1つの実施例では、ゲーム・データ取込み部138、関心決定部140、及び/又はグラフィカル・インターフェース管理部130のうちの1つ又は複数の部分は、アプリケーション106(及び/又はゲーム・エンジン128)の一部であってよい。
図1に示されるように、1つ又は複数の実施例では、ゲーム・サマリ・サーバ116は、クライアント装置104に加えて、又はその代わりに、グラフィカル・インターフェース管理部130、ゲーム・データ取込み部138、及び/又は関心決定部140のうちの少なくとも一部分を含んでよい。ゲーム・サマリ・サーバ116は、例えば、アプリケーション106がクライアント・アプリケーションを含むGSSシステム100の、クライアント・サーバ・ベースでの実施において利用されてよい。通信インターフェース122は、本明細書に記載の、任意の数のネットワーク102を介して通信するように構成されてよく、例えば、1つ又は複数のゲーム・サマリを生成するのに使用されるデータ(例えば、メタデータを生成するために使用される、及び/又はゲームプレイに関連付けられたデータから生成される、ゲームプレイ・セッションのビデオ・ストリーム、ゲームプレイ・セッションの録画、複数の録画、映像クリップ、スクリーンショット、入力装置112へのユーザ入力、ストリーミング・コンテンツなど)を受信及び/又は送信するように構成されてよい。データ・ストア124は、ゲーム・サマリ・サーバ116に関連付けられた様々な情報(例えば、映像クリップ、スクリーンショット、サムネイル、ゲーム・サマリ、メタデータなど)のいずれかを格納するために使用されてよい。
ゲーム・サーバ126のゲーム・エンジン128は、ネットワークを介してクライアント装置104の1人又は複数のユーザによってゲームがプレイされることを可能にするゲーム機能を含んでよい。ゲーム・エンジン128は、少なくとも部分的に、GSSシステム100のクラウド・ベースの実施のためのゲーム・サーバ126に設けられてよい。しかしながらいくつかの実施例では、ゲーム・エンジン128はアプリケーション106に少なくとも部分的に含まれてよい。通信インターフェース132は、ネットワーク102などの1つ又は複数のネットワークにわたって通信するための1つ又は複数のコンポーネント及び特性を含んでよい。例えば、通信インターフェース132は、入力装置112からのユーザ入力、ゲームプレイの映像データ(例えば、録画及び/又はライブ・ストリーム)などを送信及び/又は受信するために使用されてよい。
本明細書に記載のように、アプリケーション106は、1つ又は複数のゲーム・サマリ(例えば、ユーザ・インターフェース150におけるゲーム・サマリ136)をクライアント装置104のディスプレイ108上に提示することができる様々な可能なタイプのソフトウェアのいずれかを備えてよい。アプリケーション106の実例としては、モバイル・アプリケーション、コンピュータ・アプリケーション、コンソール・アプリケーション、クラウド・ベース・ゲーム・ストリーミング・アプリケーション、ウェブ・ブラウザ、ゲーム・アプリケーション、ローカル・アプリケーション、クライアント・アプリケーション、ソーシャル・アプリケーション、システム・アプリケーション若しくはネイティブ・アプリケーション、及び/又は別のタイプのアプリケーション若しくはソフトウェアが挙げられる。
クラウド・ベース・ゲーム・ストリーミング・アプリケーションの場合、アプリケーション106は命令を含んでよく、この命令はプロセッサによって実行されたときに、プロセッサに、1つ又は複数の入力装置112へのユーザ入力を表す入力データを受信すること、入力データをゲーム・サーバ126に送信すること、メモリ又はローカルの記憶域からゲーム・データを回収すること、ゲーム・サーバ126から通信インターフェース110を使用してゲーム・データを受信すること、及びディスプレイ108にゲームを表示させることを行わせるが、これらは限定的ではない。より一般的には、いくつかの実施例では、アプリケーション106は、クライアント装置104上のユーザとゲームのインスタンスとの間の対話を可能にするための促進役として動作し得る。
アプリケーション106は、追加で又は代替的に、プロセッサによって実行されたときに、プロセッサに、ゲーム・サマリ・サーバ116にデータ(例えば、ゲーム・データ、ゲーム・サマリなど)を送信させ、そこからデータを受信させる命令を含んでよい。例えば、アプリケーション106は、クライアント装置104のうちの1つ又は複数でゲームがプレイされたときに生成された映像の録画をゲーム・プレイ取込みサーバ116に送信してよく、ゲーム・データから抽出された、映像クリップ、メタデータ、スクリーンショット、ゲーム・サマリ・データ、及び/又はその他のデータを、ゲーム・プレイ取込みサーバ116から受信してよい。本明細書においてゲーム・データとは、一般に、映像データ、音声データ、1つ若しくは複数のゲームからの(例えば、1つ若しくは複数のゲーム内イベントを含む又は特定する)1つ若しくは複数のAPIメッセージ、及び/又は(例えば、ユーザ入力装置112からの)ユーザ入力データなどの、1つ又は複数のゲームの1つ又は複数のゲームプレイ・セッションに関連付けられたデータを指してよい。追加で又は代替的に、ゲーム・サマリ・サーバ116は、ゲーム・サーバ126からのゲーム・データの少なくとも一部を受信してよい。
1つ又は複数の実施例では、クライアント装置104が(例えば、クライアント装置104上で動作する)アプリケーション106を使用してゲームをレンダリングしてよく、他の実例では、クライアント装置104が表示データ(例えば、図8に関して記載したような符号化表示データ)を受信し、表示データを使用して(例えば、ゲーム・サーバ126上で動作する)ゲームをディスプレイ108上に表示させてよい。いくつかの実施例では、クライアント装置104(A)などの第1のクライアント装置がゲームをレンダリングしてよく、クライアント装置104(B)などの第2のクライアント装置が表示データを受信し、表示データを使用してゲームを表示してよい。表示データがクライアント装置によって受信される実例(例えば、クライアント装置104がレンダリングを生成しない場合)では、GSSシステム100は、以下に詳述される図8のゲーム・ストリーミング・システム800などのゲーム・ストリーミング・システムの一部であってよい。
ディスプレイ108は、ゲーム及び/又はゲーム・サマリを表示することができる任意のタイプのディスプレイ(例えば、発光ダイオード・ディスプレイ(LED:Light-Emitting Diode)、有機LEDディスプレイ(OLED:Organic LED)、液晶ディスプレイ(LCD:Liquid Crystal Display)、アクティブ・マトリクス型OLEDディスプレイ(AMOLED:Active Matrix OLED)、量子ドット・ディスプレイ(QDD:Quantum Dot Display)、プラズマ・ディスプレイ、LED/LCDディスプレイ、及び/又は別のタイプのディスプレイ)を含んでよい。いくつかの実施例では、ディスプレイ108は、2つ以上のディスプレイ(例えば、コンピュータ・ゲーム用のデュアルモニタ・ディスプレイ、ゲームを構成するための第1のディスプレイ及びゲームをプレイするための仮想現実ディスプレイなど)を含んでよい。いくつかの実施例では、ディスプレイは、スマート・フォン、タブレット・コンピュータ、ノート型コンピュータなどのタッチ・スクリーンなどの、タッチ・スクリーン式ディスプレイであり、このタッチ・スクリーンはクライアント装置104の入力装置112の少なくとも1つである。
本明細書に記載のように、クライアント装置104のアプリケーション106は、ディスプレイ108を介して、ゲーム・サマリ136などの1つ又は複数のゲーム・サマリをユーザ・インターフェース150に表示してよい。そのために、グラフィカル・インターフェース管理部130は、1つ若しくは複数のゲーム・サマリを生成してよく、及び/又はアプリケーション106のユーザ・インターフェース150へのゲーム・サマリの表示を管理してよい。1つ又は複数の実施例では、ゲーム・サマリ及び/又はそれらの一部を表す1つ又は複数のデータ構造が、クライアント側及び/又はサーバ側で生成されてよい。ユーザ・インターフェース(UI:User Interface)としてのデータ構造のレンダリングは、クライアント装置上で動作するアプリケーション(例えば、アプリケーション106)によって処理されてよい。
少なくとも1つの実施例では、グラフィカル・インターフェース管理部130は、ゲーム内イベントのイベント・ログのメタデータ、並びに、ゲームプレイ・セッションに関連付けられたゲーム・データの解析に基づいてゲーム・データ取込み部138によってそれぞれが自動生成され得る、対応するスクリーンショット、映像クリップ、及び/又はその他のゲーム・コンテンツを使用してゲーム・サマリを生成してよい。メタデータは、ゲームプレイ・セッション内のゲーム内イベントのタイミング情報、並びにゲーム内イベントとゲーム内イベントを取り込んだスクリーンショット、映像クリップ、及び/又はその他のゲーム・コンテンツとの間の関連付けを示してよい。例として、且つ限定的ではなく、メタデータは、ゲーム内イベントのタイムスタンプ及び/又はゲーム内イベントに対応するゲーム・コンテンツ(例えば、開始時間、終了時間、非継続イベントの時間など)を含んでよい。タイムスタンプは、ゲーム内イベントに対応するデータを時間的なコンテキストで(例えば、タイムライン、グリッド上のサムネイル、マップ上のアイコン、ラウンドごとの統計情報の表などを介して)表示するために使用されてよい。
1つ又は複数の実施例では、イベント・ログは、ゲーム内イベントを、ゲームプレイ・セッションのラウンド又は試合ごとに整理してよい。例えば、メタデータは、ラウンド及びラウンドに対応する時間の範囲又はセグメントを示してよい。時間、ゲーム内イベント、及び/又はラウンドに関連付けられ得るメタデータの他の実例としては、ゲーム・サマリ136を構成するために使用される、ゲーム内オブジェクト位置、得点、プレイヤ・ステータス、プレイヤ能力値、ユーザ名によるゲームプレイ参加者、イベント・タイプ、得点対失点比若しくは得点対アシスト比、及び/又はその他の情報が挙げられる。
ユーザ・インターフェース150に表示されるゲーム・サマリ136は、様々な可能な形態をとってよく、(例えば、アクティビティ・フィード、ソーシャル・フィード、ゲーム・アプリケーション、ゲーム・ストリーミング・アプリケーションなどを伴う)様々な可能なコンテキスト内で表示されてよい。例として、且つ限定的ではなく、図1のゲーム・サマリ136には、ゲーム内イベントのリスト155、視覚的インジケータ、及び/又はインターフェース要素、ゲーム・コンテンツ表示領域142、タイムライン190、ラウンド表示領域192、ゲーム・サマリに対応するゲームのゲーム名152、並びにゲーム・サマリ136に対応する1つ又は複数のゲーム・セッションでゲームがプレイされた時間154が含まれる。本明細書に記載のように、ゲーム・サマリ136は、これらの特性のすべてより少ない特性、及び/若しくは異なる特性、又はそれらの組み合わせを含んでよい。
リスト155は、ゲーム・セッションから(例えば、ゲーム・データ取込み部138によって)取り込まれたスクリーンショット、映像クリップ、及び/又はその他のゲーム・コンテンツに対応してよい。例えば、リスト155は、対応するスクリーンショット及び/又は映像クリップの画像(例えば、サムネイル)を備え得る視覚的インジケータを用いて表示されるエントリ156、158、160、162、及び164を含む。リスト155は様々な形態をとり得るが、バンド又はカルーセルとして示されている。様々な実施例では、リスト155は、カルーセル、ギャラリー、ローテーション・バナー、スライド・バナー、垂直リスト、水平リスト、グリッド、及び/又はスクロール・スライダの形態をとってよい。
リスト155のエントリは、ゲームプレイ・セッションの1つ又は複数のゲーム内イベントに対応してよく、エントリに関連付けられたゲーム・コンテンツ(例えば、映像クリップ及び/又はスクリーンショット)は、対応するゲーム内イベントの1つ又は複数の部分を取り込むか、又は他の方法でそれらに対応することができる。グラフィカル・インターフェース管理部130は、メタデータを使用して、ゲームプレイ・セッション内でゲーム内イベントが発生した時間に対応する順序でリスト155内のエントリを表示してよい。例えば、タイム・スタンプを使用して、対応するゲーム内イベントに従って時系列でエントリを表示してよい。
映像クリップ、スクリーンショット、及び/又はその他のゲーム・コンテンツは、ゲームプレイ・セッションからハイライトを取り込み、ユーザはこれらをゲーム・サマリ136において視聴できる。例えば、ゲーム・サマリ136は、視覚的インジケータ及び/若しくは関連付けられたチェックボックス、選択領域、並びに/又は(例えば、リスト155内の又はリスト155に関連付けられた)ボタンなどの、ゲーム内イベントに対応するインターフェース要素を備えてよい。ユーザは、1つ又は複数のゲーム内イベントに対応するインターフェース要素のうちの1つ又は複数を選択し、これにより対応するゲーム・コンテンツがゲーム・サマリ136のゲーム・コンテンツ表示領域142内で表示、再生、及び/又はロードされるようにしてよい。
例えば、エントリ158を選択した際、図1に示すように、対応するゲーム内イベント及び/又はゲーム・コンテンツが選択されたことを示してエントリ158が強調(例えば、ハイライト、視覚的な区別など)されてよい。また、エントリ158を選択した際、映像クリップ、スクリーンショット、及び/又は音声などの、ゲーム内イベントに対応するゲーム・コンテンツ166が、図示のようにゲーム・サマリ136のゲーム・コンテンツ表示領域142内で表示、再生、及び/又はロードされてよい。ゲーム・コンテンツ166が複数の項目を含む場合、ユーザが、ゲーム・コンテンツ表示領域142に示される矢印又はその他の手段を用いて、項目から項目に移動できるようにしてもよい。追加で又は代替的に、ゲーム・コンテンツ表示領域142の矢印及び/又はその他のインターフェース要素が、隣接するエントリなどの、リスト155内の別のエントリを選択するのに使用されてよい。別のエントリが(リスト155、矢印、又は別途方法を介して)選択される場合、現在のエントリが選択解除されてよい。選択を解除すると、視覚的インジケータから強調が取り除かれると共に、ゲーム・コンテンツ表示領域142において、対応するゲーム・コンテンツが取り除かれ、及び/又は新たに選択されたゲーム・コンテンツによって置き換えられてよい。
ゲーム・サマリ136の他の要素がリスト155内のエントリを使用して選択されたゲーム内イベントのうちの1つ又は複数に対応する場合、それらの要素も選択に基づいて更新されてよい。例えば、選択時に他の要素が同様に強調されても、及び/又は強調解除されてもよい。実例として、タイムライン190のエントリ168、及び/又はラウンド表示領域192のエントリ170が挙げられる。
ゲーム・サマリ136は、メタデータに従って、エントリと関連付けて(例えば、リスト155、タイムライン190、ラウンド表示領域192などに)表示される様々な補足情報を含んでよい。補足情報は、ユーザがどのエントリを選択するかを決定する上で助けとなり得る。例えば、エントリには、ゲーム・セッション内のゲーム内イベントに対応する時間及び/又は期間を示す表示がされてよい。実例として、エントリ164は、20秒の映像クリップに対応することを示している。さらなる実例として、補足情報は、エントリに関連付けられたゲーム内イベントのイベント・タイプの表示を備えてよい。例えば、エントリ164は、ゲーム・サマリ136の主体であるプレイヤが2回連続で得点したことを示している。その他のイベント・タイプは、プレイヤの失点、アシスト、勝ち、負け、レベル・アップなどに対応してよい。さらなる実例として、タイムライン190は、チェック・マーク178、「×」180、並びに1つ又は複数の特定のイベント・タイプの発生、及び/又はそれらの多重発生若しくは変形例を記号で表す乗数144などの記号を含む。補足情報の他の実例としては、得点情報、プレイヤ情報、チーム情報及び/又はその他の情報などのゲーム・ステータス情報が挙げられる。実例として、ラウンド表示領域192内のエントリ170は、ラウンド(及び1つ又は複数のゲーム内イベント)に対応する得点情報を含む。しかしながら、ゲーム・ステータス情報が、リスト155及び/又はタイムライン190内のエントリと関連付けられて同様に提示されてよい。
タイムライン190は、イベント・ログに取り込まれたゲーム内イベントのうちの1つ又は複数の相対的なタイミングを伝えるために表示されてよい。リスト155と同様に、タイムライン190は、ゲーム内イベントの時間をゲーム内イベントと関連付けて示してよい。タイムライン190内のエントリ(例えば、エントリ168)は、関連付けられたタイム・スタンプに従って配置されてよい。ゲーム・データ取込み部138によって自動抽出されたゲーム内イベント及び/又はゲーム・コンテンツに対応するエントリは、プレイヤ及び/又はユーザが手動で取り込んだものと視覚的に区別されてよい(例えば、手動取り込みには菱形、自動取り込みには円形)。少なくとも1つの実施例では、タイムライン190内の各エントリは、リスト155内の1つ又は複数のエントリに(例えば、それぞれに)対応してもよい。例えば、エントリ168は、リスト155内のエントリ158と同じゲーム内イベントに対応してよい。1つ又は複数の実施例では、タイムライン190内のエントリは、リスト155内のエントリと一対一の対応関係を有してよい。
1つ又は複数の実施例では、タイムラインの各エントリは、リスト155内のエントリと同様にゲーム・コンテンツの1つ又は複数の項目に対応してよい。また、タイムライン190内のエントリのうちの1つ又は複数は、選択可能であってよい。例えば、エントリ168を選択した際、図1に示すように、対応するゲーム内イベント及び/又はゲーム・コンテンツが選択されたことを示してエントリ168が強調(例えば、ハイライト、視覚的な区別など)されてよい。同様にエントリ168を選択した際、(限定的ではないが)映像クリップ、スクリーンショット、及び/又は音声などの、ゲーム内イベントに対応するゲーム・コンテンツ166が、図示のように、ゲーム・サマリ136のゲーム・コンテンツ表示領域142内で表示、再生、及び/又はロードされてよい。別のエントリが選択された場合、現在のエントリは選択解除されてよい。選択を解除すると、エントリの視覚的インジケータから強調が取り除かれると共に、ゲーム・コンテンツ表示領域142において、対応するゲーム・コンテンツが取り除かれ、及び/又は新たに選択されたゲーム・コンテンツによって置き換えられてよい。
ラウンド表示領域192には、ラウンドによって整理された1つ又は複数のゲーム内イベントが表されてよい。例えば、ラウンド表示領域192は、ゲーム・サマリ136の1つ又は複数のゲームプレイ・セッションのそれぞれのラウンドに対応するエントリ170、エントリ172、エントリ174、及びエントリ176を含んでよい。1つ又は複数の実施例では、ラウンド表示領域192は、ゲーム内イベントのサブセット及び/又はゲーム・サマリ136の1つ又は複数の他の部分に表示される対応するエントリを選択するのに使用されてよい。例えば、ユーザがエントリ170を選択することにより、リスト155及び/又はタイムライン190が、エントリ170に対応するイベント(例えば、そのラウンド内に発生したもの)に限定され、及び/又は、それらのエントリのうちの1つ又は複数がゲーム・サマリ136のそれらの部分に表示されるようにしてもよく、これは、エントリ170に対応しない既存のエントリを置き換えることを含み得る。1つ又は複数の実施例では、タイムライン190上の時間は、現在選択されているラウンドのタイム・スパンに従って縮尺を調整されてよい。タイムライン190上の開始時間は、ゲームプレイ・セッションにおけるラウンドの開始に対応してよく、タイムライン190上の終了時間は、ゲームプレイ・セッションにおけるラウンドの終了に対応してよい。
1つ又は複数の実施例では、一度に2つ以上のラウンドが選択されてよい。また、1つ又は複数の実施例では、ラウンドに対応するエントリを選択解除することにより、ゲーム・サマリ136の他の部分から、そのラウンドに対応するエントリが取り除かれてよい。いくつかの実例では、エントリを選択することにより、1つ又は複数の現在選択されているエントリが自動的に選択解除されてよい。図1に示されるように、選択されたエントリは、ゲーム・サマリ136の他の部分で選択されたエントリと同様に、ゲーム・サマリ136内で強調されてよい。エントリを選択解除することにより、同様にエントリが強調解除されてよい。
ゲーム・サマリ136に含まれ得る特性の他の実例が、図1に関して記載したものに加えて、又は代替的に、図2~図4に関して記載される。ここで図2を参照すると、図2は、本開示のいくつかの実施例による、ゲーム内イベントのうちの1つ又は複数が発生した仮想環境のマップ204を含む、ゲーム内イベントのゲーム・サマリ136の実例を図示している。例として、且つ限定的ではなく、図2のゲーム・サマリ136は、リスト155、ゲーム・コンテンツ表示領域142、及びタイムライン190を含む。ゲーム・コンテンツ表示領域142は、1つ又は複数の選択されたゲーム内イベント中に行われた活動をレビューするためにユーザが対話できる再生ボタン及びタイムラインなどの再生制御要素を含むものとして示されている。
マップ204は、メタデータによって示されるように、経時的にゲームプレイ・セッション全体を通して1つ又は複数のオブジェクト及び/又はエンティティの動きを図示するように動的に更新されてよい。例えば、1つ又は複数のプレイヤ、NPC、及び/又はオブジェクトの位置は、それらのオブジェクト又はエンティティがゲームプレイ・セッション中の特定の時間に仮想環境内のどこに位置していたかを示すために、マップ204の上に重ね合わせられるか、又は他の方法でマップ204に注記を付すのに使用されてよい。時間は、選択されたゲーム内イベント、ゲーム・コンテンツ、及び/又はユーザ・インターフェース150内のエントリなどの、ゲーム・サマリ136において行われた他の選択に少なくとも基づいていてもよい。例えば、ゲーム・コンテンツ表示領域142が映像クリップを含むゲーム・コンテンツ202に対応する場合、映像クリップがゲーム内イベントを再生するのに伴い、マップ204に表示されるオブジェクト、及び/若しくはエンティティ、並びに/又はそれらの位置若しくは他の属性(例えば、ヒット・ポイント、アイテム数、得点、イベント・タイプなど)は、映像クリップ中の対応する時間におけるゲーム状態を反映するためにマップ204内で追加、削除、又は修正されてよい。マップ204の更新に使用される対応情報は、メタデータに取り込まれてよく、1つ又は複数の更新が定期的及び/又は連続的に発生してよい。メタデータ値間の補間は、更新のための中間値を提供するために使用されてよい。マップ204は、同様に、選択されたスクリーンショット又は音声クリップなどの、ゲーム・コンテンツ表示領域142内の他のゲーム・コンテンツのゲーム状態を反映するように更新されてよい。
1つ又は複数の実施例では、マップ204に注記を付すことは、仮想環境全体にわたる1つ又は複数のエンティティ又はオブジェクトの1つ又は複数の経路を追加、削除、及び/又は更新することを含んでよい。例えば、ゲーム全体にわたるプレイヤ(例えば、ゲーム・サマリ136の主体)の経路208が、破線で示されている。経路の終点は、映像クリップの視聴中のポイント220に関連付けられたプレイヤの配置に対応してよい。他の実例では、終点は視聴中のスクリーンショットのタイムスタンプに対応してよい。マップ204上のビュー・インジケータ206は、視聴中のゲーム・コンテンツに関連付けられた現在時間中、プレイヤが仮想環境内のどこにいるかを示してよく、及び/又はその時間、仮想環境内の視聴可能な領域又はその他の方法でゲームによってプレイヤに関連付けられた領域に対応してよい。1つ又は複数の実施例では、マップ204は、ゲームプレイ・セッション中にプレイヤに表示されるゲーム内マップに対応してよい。マップ204への注記は、(例えば、ゲーム・セッション内の対応する時間において)ゲーム内マップ上でプレイヤ・アカウントに既知の、及び/若しくはプレイヤによって視聴可能な情報に限定されてもよく、又はプレイヤ・アカウントに既知ではなく、及び/若しくはプレイヤによって視聴可能ではない(例えば、他のプレイヤ若しくは観戦者から収集した)情報を含んでもよい。
ここで図3を参照すると、図3は、本開示のいくつかの実施例による、ゲーム内イベントのうちの1つ又は複数を取り込んだゲーム・コンテンツのギャラリー300を含む、ゲーム内イベントのゲーム・サマリ136の実例を図示している。1つ又は複数の実施例では、ギャラリー300は図1及び図2に関して記載されたリスト155の実例であり得る。図示のように、ゲーム・サマリ136は、2つ以上のゲーム・プラットフォーム、及び/又は2つ以上のゲームプレイ・セッションにわたる、2つ以上のゲームからのゲーム内イベント及び/又はゲーム・コンテンツに対応してよい。例えば、ゲーム・コンテンツ302のセットはゲーム2からのものとして示され、ゲーム・コンテンツ310のセットはゲーム3からのものとして示されている。例として、且つ限定的ではなく、画像304は、ゲーム・セッションに関連付けられたマップを見せるために示されている。1つ又は複数の実施例では、画像304をユーザが選択すると、関連付けられたゲーム・コンテンツがゲーム・コンテンツ表示領域142に表示されてよく、ゲーム・コンテンツ表示領域142は、ゲーム・サマリ136に含まれても、選択に基づいてゲーム・サマリ136に追加されても、及び/又はユーザの選択に基づいてポップアップ・ウィンドウに含まれてもよい。1つ又は複数の実施例では、ユーザがエントリを選択することにより、図2に関して記載されたように対応するマップ204が表示されてよい。
ここで図4を参照すると、図4は、本開示のいくつかの実施例による、ゲーム内イベントのゲーム・サマリ136に含まれ得る追加情報の実例を図示している。図4のゲーム・サマリ136は、対応するゲームプレイ・セッションから取り込まれたいくつかのゲーム内イベントの、ゲーム・タイトル及びインジケータ402、並びに関連付けられた時間406(例えば、「今日、午後1時」)を含む。以下、本明細書で記載されるリスト155に対応し得る画像404などの、5つの取り込まれたイベントの画像が示される。リスト155の他の実例のエントリと同様に、画像又は他の視覚的インジケータと共に注記が含まれてもよい(例えば、2回撃破、失点など)。これらの画像は、ゲーム内イベントの視覚的なプレビューとして機能してよく、基礎となるゲーム・コンテンツのサムネイルを含んでよい。
また、ゲーム・サマリ136は、プレイしたゲームのレベル414(例えば、レベル1、2、3など)、ゲームのモード416(例えば、チーム戦、キャプチャ・ザ・フラッグ、フリー・フォー・オールなど)、及びプレイ時間などのゲーム・ステータス情報を含む。ゲーム・サマリ136は、パフォーマンス・サマリ又は統計サマリ420も含んでよく、このサマリは、1つ又は複数の特定のゲームプレイ・セッション内又はその集合体内における、撃破の数、得点数、ポイント、又は任意の他の顕著な発生などのパフォーマンス情報及び/又は統計情報を含んでよい。各ラウンドの得点、何ラウンド行われたか、撃破の数、又はゲームプレイ・セッション中の経過を追跡する際にユーザに有用であり得る任意の他のゲーム統計などの、重要な統計を記述し得る、ゲーム統計422も含まれる。態様において、アクティビティ・フィードは実績424のリストも含んでもよい。実績424はプレイされているゲームのタイプに依存することになる。例えば、中世をテーマとしたゲームでは、実績424は、達成した目標数(例えば、征服した町、撃破した敵など)を含んでよい。これらの特性に加えて、アクティビティ・フィードは、ゲーム・ルート、及びアクティビティ・フィード・サマリ400に示される取り込まれたイベント全体を通してユーザがたどった経路の地図を図示するマップ428を含むこともできる。
再び図1を参照すると、ゲーム内イベント及び/又はゲーム・コンテンツが、ゲーム・データからどのように取り込まれ得るかのさらなる実例が、提供されている。本明細書で記載されるように、ゲーム・データは、映像データ、音声データ、(例えば、1つ若しくは複数のゲーム内イベントを含む又は特定する)1つ若しくは複数のゲームからの1つ若しくは複数のAPIメッセージ、並びに/又は1つ若しくは複数のゲームによって生成された、及び/若しくはそれらに関連付けられた(例えば、ユーザ入力装置112からの)ユーザ入力データなどの1つ又は複数のゲームの1つ又は複数のゲームプレイ・セッションに関連付けられたデータを指してよい。
1つ又は複数の実施例では、アプリケーション106及び/又はゲーム・データ取込み部138は、実行されたときに、ゲームプレイ・セッションからゲーム・データを記録し、記録されたゲーム・データをクライアント装置104にローカルに格納するか、又は記録されたゲーム・データをゲーム・サマリ・サーバ116若しくはゲーム・サーバ126に送信してそれぞれデータ・ストア124及び134に格納させる、命令を含んでもよい。クライアント装置104がレンダリングを生成しない実例では、ゲーム・サーバ126は、ゲーム・データを記録及び格納するか、又はゲーム・データをデータ・ストア124に格納するためにゲーム・サマリ・サーバ116に送信する場合がある。
本明細書で説明されるように、ゲーム・データの中から、より多くのユーザ入力が行われた間のクリップ、及び/若しくはゲームプレイ・セッション内で特定の重要なイベントが発生したときのクリップなどの、興味深いコンテンツを含む(例えば、映像及び/若しくは音声の)クリップ、並びに/又は他のゲーム・コンテンツを特定することが望ましい場合がある。そのため、この目的のためにゲーム・データ取込み部138が設けられてよい。
本明細書で記載されるように、ゲーム・データ取込み部138は、アプリケーション106の一部であってよく、又は別個のアプリケーション(例えば、1つ又は複数のシステム・サービス、プログラムなど)の一部であってよい。ゲーム・データ取込み部138は、プロセッサによって実行されたときに、プロセッサに、限定的ではないが、入力装置使用データ、映像データ、及び/又はゲームプレイ・セッションに関連付けられたその他のデータなどのゲーム・データを記録させる、又はログを取らせる命令を含んでもよい。入力装置使用データの実例には、キーボード、マウス、又はその他の入力装置の使用を説明する又は表すデータであって、ゲームプレイ・セッションのうちの1つ又は複数に関連付けられたデータが含まれる。記録され得る情報の実例としては、キーボードの打ち込み、マウス・クリック、マウス動作、マイクロフォン入力、ビデオ・カメラ入力、及び/又はゲームプレイ・セッション中のクライアント装置104への入力が挙げられる。また、ゲーム・データ取込み部138は、ゲーム・セッション映像データのタイムスタンプ情報と相互に関連するこれらの入力と共に、タイムスタンプ情報を格納してよい。
ゲーム・データ取込み部138は、一般に、ユーザが関心を持ち得るゲーム・コンテンツをゲーム・データ取込み部138に示すように構成され得る関心決定部140を使用してよい。関心決定部140は、自動的にゲーム・コンテンツを特定してもよく、又はユーザ及び/若しくはプレイヤがゲーム・コンテンツを特定する(例えば、1つ又は複数のユーザ入力又はコマンドを介して、ラベル、ブックマーク、取込みイベントなどを作成する)ように手動で指示されてもよいことが想定されている。1つ又は複数の実施例では、関心決定部140は、ゲームプレイ・セッションのゲーム・データを解析してゲーム・コンテンツを検出してよい。この解析は、ゲーム・セッションの完了後などの、記録されたゲーム・データに対して行ってよく、及び/又はゲームプレイ・セッションが発生しているときにリアルタイムで行ってもよい。関心決定部140は、アプリケーション106の一部であってよく、又は別個のアプリケーション(例えば、1つ又は複数のシステム・サービス、プログラムなど)の一部であってもよい。いくつかの実例では、関心決定部140はゲーム・データ取込み部138と同じアプリケーションの一部である。
関心決定部140は、ゲーム・データ内のゲーム・コンテンツ及び/又は対応するゲーム内イベントを(例えば、自動的に)検出するために多岐にわたる可能な手法を使用してよく、その実例が本明細書に記載されている。そのために、関心決定部140は、ゲーム・ストリーム、記録されたゲーム・データ、及び/又は特定されたゲーム・コンテンツなどの、任意の形式のゲーム・データを解析し、ゲーム内イベントが発生したことを判定及び/又は検出する。例えば、取込みイベントをトリガし、ゲーム・ストリームからのゲーム・コンテンツの少なくとも一部分の取り込み(又はバッファからの保存)を指示し、並びに/又は、検出されたゲーム内イベント及び/若しくは(例えば、1つ若しくは複数のゲーム・サマリ136のメタデータに含めるための)1つ若しくは複数のその属性を分類するために、この解析を使用してよい。ゲーム・データ取込み部138は、人工知能、オブジェクト検出、コンピュータ・ビジョン、テキスト認識、及び/又はその他の解析方法に基づいて、ゲーム内イベントが発生したと判定してよい。例えば、関心決定部140は、線形回帰、ロジスティック回帰、決定木、サポート・ベクタ・マシン(SVM:Support Vector Machine)、単純ベイズ法、k近傍法(Knn:k-nearest neighbor)、k平均法、ランダム・フォレスト、次元削減アルゴリズム、勾配ブースティング・アルゴリズム、ニューラル・ネットワーク(例えば、オート・エンコーダ、畳み込み、再帰型、パーセプトロン、長/短期記憶、ホップフィールド、ボルツマン、ディープ・ビリーフ、転置畳み込み(deconvolutional)、敵対的生成、リキッド・ステート・マシンなど)を使用した機械学習モデル、及び/又は他のタイプの機械学習モデルなどの、ゲーム内イベント及び対応するゲーム・コンテンツを検出するための任意のタイプの機械学習モデルを活用してよい。いくつかの実施例において、機械学習モデルは、深層畳み込みニューラル・ネットワークを含む。
検出され得るゲーム内イベントの実例には、ゲーム内の別のキャラクタを撃破する、特定のアイテムを収集する、ゴールを決める、ホームランを打つ、高い建物若しくは山に登頂する、ユーザ指定のタスク若しくは目標を実行若しくは達成する、レベル・アップする、ラウンドで勝つ、ラウンドで負ける、及び/又は別のイベント・タイプが含まれる。例えば、いくつかの実施例では、関心決定部140は、キャラクタのゲーム内撃破などのゲーム内イベントを示すレチクル又はゲームの他のインターフェース要素における変化を認識し、取込みイベントをトリガしてよい。さらなる実例として、ゲーム・データ取込み部138は、「プレイヤ1がプレイヤ4を撃破した」、若しくは「プレイヤ1がタッチダウンを決めた」、又は他のゲーム内イベントを意味する、ゲーム・インスタンス内のテキストを(例えば、光学文字認識(OCR:Optical Character Recognition)を使用して)認識して、1つ又は複数の取込みイベントをトリガしてよい。オブジェクト検出に依拠する手法により、ゲームの視覚的データを解析して、1つ若しくは複数の取込みイベントを特定、及び/又はゲーム・コンテンツを分類してよい。
1つ又は複数の実施例では、1つ又は複数のゲーム内イベントを特定するために、関心決定部140は、ゲーム・データに基づいて、ゲームプレイ・セッション内のより高いレベル(例えば、周波数又は集中度)のアクションの期間を決定してよい。例えば、ゲーム・データを使用して、より高いレベルのアクションを含むゲームプレイ・セッション中の時間セグメントを特定してよく、これらの期間又は時間セグメントは、「関心が予測される期間」と呼ばれてよい。時間セグメントが検出される一方で、(例えば、スクリーンショットのための)開示された手法を使用して特定の時間が特定されてよい。
例えば、ゲームプレイ・セッション内の時間セグメントは、その時間セグメントが1分あたりの高いキーダウン数(KPMs:Keydowns Per Minute)、アクション・キーの選択の高い割合及び/又は他の入力装置メトリクスを有することに少なくとも部分的に基づいて、高いアクションとして関心決定部140によって特定されてよい。さらに、これらの入力装置メトリクスは、より高いアクションの時間セグメントを特定するときに起こり得るノイズを低減するための追加の解析の対象となり得る。例えば、入力装置メトリクスに関心度アルゴリズムを適用して、メトリクスを経時的な動作活動測定に変換してよい。
経時的な関心度アルゴリズムの値に基づいて、高い可能性のあるゲーム内活動と相互に関連する時間セグメントを特定することができる。例えば、閾値(例えば、平均)よりも(例えば、連続的に)高いデータ・ポイントを有する時間セグメントは、可能性として強調する価値のあるクリップ又はスクリーンショットと相互に関連するものとして特定されてよい。時間セグメントの開始は、動作活動測定値が閾値を超えたときを基準としてよく、時間セグメントの終了は、動作活動測定値が閾値より低くなったときを基準としてよい。このように、その時間セグメントに対応する映像クリップ又はスクリーンショットが特定されてよい。例えば、映像クリップは、時間セグメントにまたがるフレームを取り込んだ個別のファイルとして格納されてよく、並びに/又は、時間セグメントに対応する、ゲーム・セッションの映像データ内の領域を(例えば、開始タイムスタンプ、終了タイムスタンプ、及び/若しくは時間期間を使用して)特定するのに使用されるメタデータとして格納されてもよい。
ユーザ入力(例えば、入力装置メトリクス)は、ゲーム内活動を関心度として定量化するために使用されてよいが、ユーザ入力に加えて、又はその代わりに他のタイプのデータが使用されてもよい。例えば、ゲーム内カメラ及び/若しくは視野の動き、色の変化、音声の音量、音声ダイナミクス、並びに/又は音声の変動などに対応するゲーム・セッションの視覚的メトリクス及び/又は音声メトリクスを使用することが可能である。また、いくつかの実例では、関心決定部140は、関心が予測される期間を特定してよく、次いでこの期間は、映像クリップ又はスクリーンショットを生成するために使用され、他の実例では、関心決定部140は、関心度アルゴリズムを使用するなどして(例えば、クリップの平均関心度が閾値より大きいとの判定に基づいて)、映像クリップが十分に興味深いかを判定するために(任意の適した手法を使用して生成された)映像クリップを解析してもよい。
本明細書に記載された任意の手法を使用して、時間セグメントが、関心が予測される期間として特定されると、ゲームプレイ・セッションの映像データから対応する映像セグメントを特定することができる。例えば、関心決定部140は、関心が予測される期間に対応するタイムスタンプを、アプリケーション106、ゲーム・サーバ126、及び/又はゲーム・プレイ取込みサーバ116に送信することができる。次いでこれらのコンポーネントの任意の組み合わせは、タイムスタンプを使用して、(例えば、データ・ストア124又は134に格納された)上記のゲーム・セッション映像データから個別の映像クリップを生成及び/又は特定し、映像クリップ又は1つ又は複数のゲーム・サマリ136用のメタデータ内のその他のゲーム・コンテンツにタイムスタンプを付してよい。
ゲーム・サマリ・サーバ116は、ゲーム・セッションからゲーム・コンテンツ及び/又はゲーム・データを格納、トリミング、分類、及び/又は類別する1つ又は複数のサーバを含んでよい。図1では、ゲーム・サマリ・サーバ138のいくつかのコンポーネント及び/又は特性のみが図示されているが、これは限定的であることを意図するものでない。例えば、ゲーム・サマリ・サーバ166は、図9のコンピューティング装置900に関して下述するコンポーネントなどの、追加の又は代替的なコンポーネントを含んでよい。
図1にさらに図示されるように、ゲーム・サマリ・サーバ116は、ゲーム・サーバ126とは分離した又は別個であってもよいが、これは限定的であることを意図するものでない。いくつかの実例では、ゲーム・サマリ・サーバ116は、ゲーム・サーバ126と同じ又は類似したサーバ(例えば、ゲーム・サーバ126上のタスクとして動作する)であってよい。いくつかの実例では、ゲーム・サマリ・サーバ116は第1のエンティティ(例えば、第1の会社)によって運用又はホストされてよく、ゲーム・サーバ126は第2のエンティティ(例えば、第2の別の会社)によって運用又はホストされてよい。そのような実例では、第2のエンティティはゲーム開発業者であってよく、第1のエンティティ及び第2のエンティティは、第1のエンティティが第2のエンティティから受信されたデータを使用して興味深いゲーム・コンテンツを特定できるようにデータを共有してよい。他の実例では、ゲームプレイ取込みサーバ116及びゲーム・サーバ126は、同じエンティティによって運用又はホストされてもよい。さらなる実例では、GSSシステム100はそのすべてがクライアント装置104上で実施されてよく、並びに/或いは、サーバに含まれるものとして示された、コンポーネントのうちの1つ若しくは複数及び/又はそれらの機能が、クライアント装置104上で少なくとも部分的に実施されてもよい。
ゲーム・サマリ・サーバ116は、ゲーム・サーバ126又はクライアント装置104との情報(例えば、ゲーム・データ、タイムスタンプ、ゲーム・コンテンツ選択データなど)の通信を可能にする1つ又は複数のアプリケーション・プログラミング・インターフェース(API)を含んでよい。例えば、ゲーム・サマリ・サーバ116は、クライアント装置104又はゲーム・サーバ126とインターフェース接続してゲーム・データ及び/又はゲーム・サマリ・データを受信する1つ又は複数のゲームAPIを含んでよい。さらなる実例として、ゲーム・サマリ・サーバ116は、分類されたゲーム・コンテンツ及び/又はゲーム・サマリ・データを送信するためにクライアント装置104とインターフェース接続する1つ又は複数のAPIを含んでよい。本明細書では異なるAPIが記載されているが、APIは単一のAPIの一部であってもよく、2つ以上のAPIが組み合わせられてもよく、本明細書に実例として記載されたもの以外の異なるAPIが含まれてもよく、又はこれらの組み合わせであってもよい。
ゲーム・サーバ126は、ゲームを格納、ホスト、管理、及び、いくつかの実例ではレンダリングするための1つ又は複数のサーバ(例えば、専用のゲーム・サーバ)を含んでよい。いくつかの実例では、第1のゲーム・サーバ126は、ゲーム(例えば、ゲームのプログラム・コード)の作成、更新、及び修正に使用されてよく、第2のゲーム・サーバ126は、ゲームのホスト(例えば、専用のゲーム・サーバ)として使用されてもよい。図1には、ゲーム・サーバ126のいくつかのコンポーネント及び/又は特性のみが図示されているが、これは限定的であることを意図するものではない。例えば、ゲーム・サーバ126は、図9のコンピューティング装置900に関して下述するコンポーネントなどの、追加の又は代替的なコンポーネントを含んでよい。
ゲーム・サーバ126は、クライアント装置104によるゲーム・プレイを可能にする、及び/又は、ゲーム・サマリ・サーバ116及び/又はクライアント装置104との情報(例えば、ユーザ・プロファイル、ゲーム・セッション・データ、ゲーム・データ、ゲーム・サマリなど)の通信を可能にする1つ又は複数のAPIを含んでよい。例えば、ゲーム・サーバ126は、クライアント装置104のアプリケーション106とインターフェース接続して、クライアント装置104によるゲーム・プレイを可能にする1つ又は複数のゲームAPIを含んでよい。さらなる実例として、ゲーム・サーバ126は、クライアント装置104に送信するための分類されたゲーム・コンテンツ及び/又は他のゲーム・サマリ・データを受信する1つ又は複数のAPIを含んでよい。本明細書では、異なるAPIが記載されているが、APIは単一のAPIの一部であってもよく、2つ以上のAPIが組み合わせられてもよく、本明細書に実例として記載されたもの以外の異なるAPIが含まれてもよく、又はこれらの組み合わせであってもよい。
ゲーム・サーバ126は、ゲーム・エンジン128を含んでよい。ゲーム・エンジン128は、ゲームがネットワークを介して1人又は複数のユーザによってプレイされることを可能にするゲームの機能を含んでよい。ゲーム・エンジン128は、レンダリング・エンジン、音声エンジン、物理エンジン、アニメーション・エンジン、人工知能エンジン、ネットワーク・エンジン、ストリーミング・エンジン、メモリ管理エンジン、及び/又はその他のコンポーネント又は特性を含んでよい。ゲーム・エンジン128は、ゲーム・セッション中にゲーム・セッション・データの一部又は全部を生成するために使用されてよい。
ここで図5を参照すると、方法500の各ブロック、及び本明細書に記載される他の方法は、ハードウェア、ファームウェア、及び/又はソフトウェアの任意の組み合わせを使用して行われ得るコンピューティング・プロセスを含む。例えば、メモリに格納された命令をプロセッサが実行することにより、様々な機能が実行されてよい。また、これらの方法は、コンピュータ記憶媒体に格納されたコンピュータ使用可能な命令として具現化されてよい。これらの方法は、いくつか例を挙げると、スタンドアローン・アプリケーション、サービス若しくはホストされるサービス(スタンドアローン型若しくは別のホストされるサービスとの組み合わせ)、又は別の製品へのプラグインによって提供されてよい。さらに、例として図1のシステムに関して方法が記載されている。しかしながら、これらの方法は追加で又は代替的に、任意の1つのシステム又はシステムの任意の組み合わせによって実行されてもよく、これらのシステムは本明細書に記載されるものを含むが、これらに限定されない。
図5は、本開示のいくつかの実施例による、ゲーム内イベントに関連付けられたタイムラインを含むゲーム・サマリを提示する方法を示すフロー図である。方法500は、ブロックB502において、ゲーム内イベントのタイミング情報を示すメタデータを受信することを含む。例えば、グラフィカル・インターフェース管理部130及び/又はアプリケーション106は、1つ又は複数のゲームプレイ・セッション内の1つ又は複数のゲーム内イベントのタイミング、及び1つ又は複数のゲーム内イベントと1つ又は複数のゲーム内イベントを取り込んだ1つ又は複数の映像クリップとの間の関連付けを示すメタデータを受信してよい。ゲーム内イベントは、1つ若しくは複数のゲームプレイ・セッションを表す映像データ及び/又は他のゲーム・データの解析に少なくとも基づいて決定されてよい。
方法500は、ブロックB504において、メタデータを使用して、ゲーム内イベントのうちの1つ又は複数に対応するインターフェース要素、及びゲーム内イベントのうちの1つ又は複数に関連付けられたタイミング情報を示すタイムラインを提示することを含む。例えば、グラフィカル・インターフェース管理部130及び/又はアプリケーション106は、ユーザ・インターフェース150において、及びメタデータを使用して、ゲーム内イベントのうちの1つ又は複数に対応する1つ又は複数のインターフェース要素、及びゲーム内イベントのうちの1つ又は複数に関連付けられた1つ又は複数のタイミングを示すタイムライン190を提示してよい。
方法500は、ブロックB506において、ゲーム内イベントを取り込んだゲーム・コンテンツをロードすること、及びインターフェース要素の選択に少なくとも基づいてゲーム内イベントを示すようにタイムラインを更新することを含む。例えば、グラフィカル・インターフェース管理部130及び/又はアプリケーション106は、ユーザ・インターフェース150において、1つ又は複数のゲーム内イベントを取り込んだ1つ又は複数の映像クリップのうちの1つの映像クリップの画像データをロードし、1つ又は複数のゲーム内イベントに対応する1つ又は複数のインターフェース要素のうちの1つのインターフェース要素の選択に少なくとも基づいて、及び1つ又は複数のゲーム内イベントと1つ又は複数の映像クリップとの間の関連付けに少なくとも基づいて、1つ又は複数のゲーム内イベントを示すようにタイムラインを更新してよい。
ここで図6を参照すると、図6は、本開示のいくつかの実施例による、ゲーム内イベントに関連付けられたリストを含むゲーム・サマリを提示するための方法600を示すフロー図である。方法600は、ブロックB602において、ゲーム内イベントの時間を示すメタデータを受信することを含む。例えば、グラフィカル・インターフェース管理部130及び/又はアプリケーション106は、1つ又は複数のゲームプレイ・セッション内の1つ又は複数のゲーム内イベントの1つ又は複数の時間を示し、1つ又は複数のゲーム内イベントと、1つ又は複数のゲーム内イベントを取り込んだ1つ又は複数のゲーム・コンテンツ項目(例えば、画像、映像など)との1つ又は複数の関連付けを含むメタデータにアクセスしてよい。
方法600は、ブロックB604において、メタデータを使用したゲーム内イベントのリスト内で、ゲーム内イベントに対応するインターフェース要素をゲームプレイ・セッション内のゲーム内イベントのタイミング情報に対応する配置で提示することを含む。例えば、グラフィカル・インターフェース管理部130及び/又はアプリケーション106は、メタデータを使用した、ユーザ・インターフェース150のゲーム内イベントのリスト155内で、1つ又は複数のゲーム内イベントに対応する1つ又は複数のインターフェース要素を、1つ又は複数のゲームプレイ・セッションのタイミング情報に対応する1つ又は複数の配置で提示してよい。
方法600は、ブロックB606において、インターフェース要素の選択に少なくとも基づいて、ゲーム内イベントに対応するゲーム・コンテンツを提示することを含む。例えば、グラフィカル・インターフェース管理部130及び/又はアプリケーション106は、ゲーム内イベントのリスト内の1つ又は複数のインターフェース要素の1つ又は複数の選択、及び1つ又は複数のゲーム内イベントと1つ又は複数のゲーム・コンテンツ項目との間の1つ又は複数の関連付けに少なくとも基づいて、1つ又は複数のゲーム内イベントに対応する1つ又は複数のゲーム・コンテンツ項目をユーザ・インターフェースに提示してよい。
ここで図7を参照すると、図7は、本開示のいくつかの実施例による、ゲーム内イベントに関連付けられた仮想環境のマップを含むゲーム・サマリを提示するための方法700を示すフロー図である。方法700は、ブロックB702において、ゲーム内イベントに関連付けられたタイミング情報及び位置を示すメタデータを受信することを含む。例えば、グラフィカル・インターフェース管理部130及び/又はアプリケーション106は、ゲームのゲームプレイ・セッションのゲーム内イベントに関連付けられた1つ又は複数の時間及び1つ又は複数の位置を示すメタデータを受信してよい。ゲーム内イベントは、ゲームプレイ・セッションに関連付けられたゲーム・データの解析に少なくとも基づいて決定されてよい。
方法700は、ブロックB704において、メタデータを使用して、ゲーム内イベントに対応するインターフェース要素をゲームの仮想環境のマップと共に提示することを含む。例えば、グラフィカル・インターフェース管理部130及び/又はアプリケーション106は、メタデータを使用して、ゲームプレイ・セッションの1つ又は複数のゲーム内イベントに対応する1つ又は複数のインターフェース要素を、ゲームの1つ又は複数の仮想環境の1つ又は複数のマップと共に提示してよい。
この方法は、ブロックB706において、インターフェース要素の選択に少なくとも基づいて、位置及びタイミング情報を使用してマップに注記を付すことを含む。例えば、グラフィカル・インターフェース管理部130及び/又はアプリケーション106は、1つ又は複数のゲーム内イベントに対応する1つ又は複数のインターフェース要素のうちの1つ又は複数の選択に少なくとも基づいて、1つ又は複数のゲーム内イベントに関連付けられた1つ又は複数の位置及びタイミング情報を使用して、1つ又は複数のマップの少なくとも1つに注記を付してよい。
ここで図8を参照すると、図8は、本開示のいくつかの実施例による、ゲーム・ストリーミング・システム800の例示的なシステム図である。図8には、ゲーム・サーバ802(図1のゲーム・サーバ126及び/又は図9のコンピューティング装置900と同様のコンポーネント、特性、及び/又は機能を含み得る)、クライアント装置804(図1のクライアント装置104及び/又は図9のコンピューティング装置900と同様のコンポーネント、特性、及び/又は機能を含み得る)、並びにネットワーク805(図1のネットワーク102と同様であり得る)が含まれる。本開示のいくつかの実施例では、ゲーム・ストリーミング・システム800が実施され得る。アプリケーション・セッションは、ゲーム・ストリーミング・アプリケーション(例えば、NVIDIA GEFORCE NOW)、リモート・デスクトップ・アプリケーション、シミュレーション・アプリケーション(例えば、自律型車両若しくは半自律型車両のシミュレーション)、コンピュータ支援設計(CAD:Computer Aided Design)アプリケーション、仮想現実(VR:Virtual Reality)及び/若しくは拡張現実(AR:Augmented Reality)のストリーミング・アプリケーション、ディープ・ラーニング・アプリケーション、並びに/又はその他のアプリケーション・タイプに対応してよい。
ゲーム・ストリーミング・システム800において、ゲーム・セッションのためには、クライアント装置804は、入力装置への入力に応答して入力データを受信し、ゲーム・サーバ802に入力データを送信し、ゲーム・サーバ802から符号化された表示データを受信し、表示データをディスプレイ824に表示するだけでよい。そのため、より計算量の大きい計算及び処理は、ゲーム・サーバ802にオフロードされる(例えば、ゲーム・セッションのレンダリングは、ゲーム・サーバ802のGPUによって実行される)。言い換えると、ゲーム・セッションは、ゲーム・サーバ802からクライアント装置804にストリーミングされ、これにより、クライアント装置804のグラフィクス処理及びレンダリングに対する要件が低減される。
例えば、ゲーム・セッションのインスタンス生成に関して、クライアント装置804は、ゲーム・サーバ802からの表示データの受信に基づいて、ゲーム・セッションのフレームをディスプレイ824に表示していてよい。クライアント装置804は、入力装置の1つへの入力を受信し、これに応答して入力データを生成してよい。クライアント装置804は、通信インターフェース820を介して、及びネットワーク806(例えば、インターネット)を越えて、入力データをゲーム・サーバ802に送信してよく、ゲーム・サーバ802は、通信インターフェース818を介して入力データを受信してよい。CPUは入力データを受信し、入力データを処理し、データをGPUに送信することで、GPUにゲーム・セッションのレンダリングを生成させてよい。例えば、入力データは、ゲームでのユーザのキャラクタの動き、武器の発射、リロード、ボールのパス、車両の旋回などを表してよい。レンダリング・コンポーネント812は、(例えば、入力データの結果を表す)ゲーム・セッションをレンダリングしてよく、レンダリング取込みコンポーネント814は、ゲーム・セッションのレンダリングを表示データ(例えば、ゲーム・セッションのレンダリングされたフレームを取り込んだ画像データ)として取り込んでよい。次いで、エンコーダ816は表示データを符号化して符号化表示データを生成してよく、符号化表示データは、通信インターフェース818を介し、ネットワーク806を越えてクライアント装置804に送信されてよい。クライアント装置804は、通信インターフェース820を介して符号化表示データを受信してよく、デコーダ822は符号化表示データを復号して表示データを生成してよい。次いで、クライアント装置804はディスプレイ824を介して表示データを表示してよい。
図9は、本開示のいくつかの実施例を実施する際の使用に適した例示的なコンピューティング装置900のブロック図である。コンピューティング装置900は、以下の装置、すなわち、メモリ904、1つ又は複数の中央演算処理装置(CPU:Central Processing Unit)906、1つ又は複数のグラフィクス処理装置(GPU:Graphics Processing Unit)908、通信インターフェース910、入力/出力(I/O)ポート912、入力/出力コンポーネント914、電源916、1つ又は複数の提示コンポーネント918(例えば、ディスプレイ)、及び1つ又は複数の論理ユニット920を、直接的又は間接的に結合する相互接続されたシステム又はバス902を含んでよい。
少なくとも1つの実施例では、コンピューティング装置900は、1つ若しくは複数の仮想マシン(VM:Virtual Machine)を備えてよく、及び/又はそのコンポーネントのいずれかが仮想コンポーネント(例えば、仮想ハードウェア・コンポーネント)を備えてもよい。非限定的な実例として、GPU908のうちの1つ若しくは複数は、1つ若しくは複数のvGPUを備えてよく、CPU906のうちの1つ若しくは複数は、1つ若しくは複数のvCPUを備えてよく、及び/若しくは論理ユニット920のうちの1つ若しくは複数は、1つ若しくは複数の仮想論理ユニットを備えてよい。このように、コンピューティング装置900は、個別のコンポーネント(例えば、コンピューティング装置900専用のフルGPU)、仮想コンポーネント(例えば、コンピューティング装置900専用のGPUの一部分)、又はそれらの組み合わせを含んでよい。
相互接続システム902は、アドレス・バス、データ・バス、制御バス、又はそれらの組み合わせなどの、1つ又は複数のリンク又はバスを表してよい。相互接続システム902は、業界標準アーキテクチャ(ISA:Industry Standard Architecture)バス、拡張業界標準アーキテクチャ(EISA:Extended Industry Standard Architecture)バス、ビデオ・エレクトロニクス・スタンダード・アソシエーション(VESA:Video Electronics Standards Association)バス、ペリフェラル・コンポーネント・インターコネクト(PCI:Peripheral Component Interconnect)バス、ペリフェラル・コンポーネント・インターコネクト・エクスプレス(PCIe:Peripheral Component Interconnect express)バス、及び/又は別のタイプのバス若しくはリンクなどの、1つ又は複数のバス又はリンクのタイプを含んでよい。いくつかの実施例では、コンポーネント間は直接的に接続される。実例としては、CPU906はメモリ904に直接接続されてよい。さらに、CPU906はGPU908に直接接続されてよい。コンポーネント間に直接接続又はポイント・ツー・ポイント接続がある場合、相互接続システム902は接続を実行するためのPCIeリンクを含んでよい。これらの実例では、PCIバスはコンピューティング装置900に含まれる必要はない。
相互接続システム902は、アドレス・バス、データ・バス、制御バス、又はそれらの組み合わせなどの、1つ又は複数のバスを表してよい。相互接続システム902は、業界標準アーキテクチャ(ISA)バス、拡張業界標準アーキテクチャ(EISA)バス、ビデオ・エレクトロニクス・スタンダード・アソシエーション(VESA)バス、ペリフェラル・コンポーネント・インターコネクト(PCI)バス、ペリフェラル・コンポーネント・インターコネクト・エクスプレス(PCIe)バス、及び/又は別のタイプのバスなどの、1つ又は複数のバス・タイプを含んでよい。
図9の様々なブロックは、相互接続システム902を介して線で接続されて示されているが、これは限定的であることを意図するものではなく、明確化のみを目的としている。例えば、いくつかの実施例では、ディスプレイ装置などの提示コンポーネント918は、(例えば、ディスプレイがタッチ・スクリーンである場合)I/Oコンポーネント914とみなされてもよい。別の実例では、CPU906及び/又はGPU908はメモリを含んでよい(例えば、メモリ904は、GPU908、CPU906、及び/又は他のコンポーネントのメモリに加えて、記憶装置を表していてもよい)。言い換えると、図9のコンピューティング装置は例証のためのものにすぎない。「ワークステーション」、「サーバ」、「ラップトップ」、「デスクトップ」、「タブレット」、「クライアント装置」、「モバイル装置」、「携帯装置」、「ゲーム機」、「電子制御ユニット(ECU:Electronic Control Unit)」、「仮想現実システム」及び/又はその他の装置若しくはシステムのタイプなどのカテゴリ間で区別は行われず、すべてが図9のコンピューティング装置の範囲内で考えられるようにする。
メモリ904は、様々なコンピュータ可読媒体のいずれかを含んでよい。コンピュータ可読媒体は、コンピューティング装置900によってアクセスされ得る任意の利用可能な媒体であってよい。コンピュータ可読媒体は、揮発性媒体と不揮発性媒体との両方、及び取り外し可能な媒体と取り外し不可能な媒体との両方を含んでもよい。例として、且つ限定的ではなく、コンピュータ可読媒体はコンピュータ記憶媒体及び通信媒体を備えてよい。
コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラム・モジュール、及び/又はその他のデータ・タイプなどの情報を記憶するための任意の方法又は技術で実施される、揮発性媒体と不揮発性媒体との両方、及び/又は取り外し可能な媒体と取り外し不可能な媒体との両方を含んでよい。例えば、メモリ904は、(例えば、オペレーティング・システムなどの、プログラム及び/又はプログラム要素を表す)コンピュータ可読命令を格納してよい。コンピュータ記憶媒体は、RAM、ROM、EEPROM、フラッシュ・メモリ又はその他のメモリ技術、CD-ROM、デジタル多用途ディスク(DVD:Digital Versatile Disk)若しくはその他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置若しくはその他の磁気記憶装置、又は所望の情報を格納するために使用され、コンピューティング装置900によってアクセスされ得る任意の他の媒体を含んでよいが、これらに限定されない。本明細書で使用される場合、コンピュータ記憶媒体は、それ自体は信号を備えない。
コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラム・モジュール、及び/又はその他のデータ・タイプを、搬送波などの変調データ信号又は他の伝送機構で具現化してよく、任意の情報伝達媒体を含む。「変調データ信号」という用語は、信号中の情報を符号化する方法で、その特徴のうちの1つ又は複数が設定又は変更された信号を指してよい。例として、且つ限定的でなく、通信媒体は、有線ネットワーク又は直接有線接続などの有線媒体、並びに音響、RF、赤外線及びその他の無線媒体などの無線媒体を含んでよい。また、上記のいずれかの組み合わせも、コンピュータ可読媒体の範囲内に含まれるものとする。
CPU906は、コンピュータ可読命令を実行して、コンピューティング装置900の1つ又は複数のコンポーネントを制御して、本明細書に記載の方法及び/又はプロセスのうちの1つ又は複数を行わせるように構成されてよい。CPU906は、多数のソフトウェア・スレッドを同時に処理することが可能な1つ又は複数のコア(例えば、1、2、4、8、28、72コアなど)をそれぞれ含んでよい。CPU906は、任意のタイプのプロセッサを含んでよく、実装されるコンピューティング装置900のタイプに応じて異なるタイプのプロセッサ(例えば、モバイル装置にはより少ないコアのプロセッサ、サーバにはより多数のコアのプロセッサ)を含んでよい。例えば、コンピューティング装置900のタイプに応じて、プロセッサは、縮小命令セット・コンピューティング(RISC:Reduced Instruction Set Computing)を用いて実装されたARMプロセッサ、又は複雑命令セット・コンピューティング(CISC:Complex Instruction Set Computing)を用いて実装されたx86プロセッサであってよい。コンピューティング装置900は、1つ又は複数のマイクロプロセッサ又は数値演算コプロセッサなどの補助コプロセッサに加えて、1つ又は複数のCPU606を含んでよい。
CPU906に加えて、又はその代わりに、GPU908は、コンピュータ可読命令の少なくとも一部を実行して、コンピューティング装置900の1つ又は複数のコンポーネントを制御して、本明細書に記載の方法及び/又はプロセスのうちの1つ又は複数を行わせるように構成されてよい。GPU908のうちの1つ若しくは複数は、(例えば、CPU906のうちの1つ若しくは複数と)統合されたGPUであってよく、及び/又は、GPU908のうちの1つ若しくは複数は、個別のGPUであってよい。実施例では、GPU908のうちの1つ又は複数は、CPU906のうちの1つ又は複数のコプロセッサであってよい。GPU908は、コンピューティング装置900によって、グラフィクス(例えば、3Dグラフィクス)をレンダリングするため、又は汎用計算を行うために使用されてよい。例えば、GPU908は、GPUでの汎用計算(GPGPU:General-Purpose computing on GPUs)に使用されてもよい。GPU908は、数百又は数千のソフトウェア・スレッドを同時に処理することが可能な数百又は数千のコアを含んでよい。GPU908は、レンダリング・コマンド(例えば、ホスト・インターフェースを介して受信したCPU906からのレンダリング・コマンド)に応答して、出力画像のためのピクセル・データを生成してよい。GPU908は、ピクセル・データ又はGPGPUデータなどの任意の他の適したデータを格納するための、ディスプレイ・メモリなどのグラフィクス・メモリを含んでよい。ディスプレイ・メモリはメモリ904の一部として含まれてよい。GPU908は、並列に(例えば、リンクを介して)動作する2つ以上のGPUを含んでよい。リンクは、(例えば、NVLINKを用いて)GPUを直接接続してもよく、スイッチを介して(例えば、NVSwitchを用いて)GPUを接続してもよい。一体に組み合わせると、各GPU908は、出力の異なる部分又は異なる出力のためにピクセル・データ又はGPGPUデータを(例えば、第1のGPUが第1の画像を、第2のGPUが第2の画像を)生成することができる。各GPUはそれぞれのメモリを含んでよく、又は他のGPUとメモリを共有してもよい。コンピューティング装置900がGPU908を含まない実例では、CPU906がグラフィクスをレンダリングするのに使用されてよい。
CPU906及び/又はGPU908に加えて、又はその代わりに、論理ユニット920が、コンピュータ可読命令の少なくとも一部を実行して、コンピューティング装置900の1つ又は複数のコンポーネントを制御して、本明細書に記載の方法及び/又はプロセスのうちの1つ又は複数を行わせるように構成されてよい。実施例では、CPU906、GPU908、及び/又は論理ユニット920は、方法、プロセス及び/又はそれらの部分の任意の組み合わせを離散的に又は協動して行うことができる。論理ユニット920のうちの1つ若しくは複数は、CPU906及び/若しくはGPU908のうちの1つ若しくは複数の一部であってよく、並びに/又はCPU906及び/若しくはGPU908のうちの1つ若しくは複数に統合されてよく、並びに/或いは論理ユニット920のうちの1つ又は複数は、個別のコンポーネントであるか、又はその他の方法でCPU906及び/若しくはGPU908の外部にあってよい。実施例では、論理ユニット920のうちの1つ又は複数は、CPU906のうちの1つ若しくは複数及び/又はGPU908のうちの1つ若しくは複数の、コプロセッサであってよい。
論理ユニット920の実例としては、データ処理装置(DPU:Data Processing Unit)、テンソル・コア(TC:Tensor Core)、テンソル処理装置(TPU:Tensor Processing Unit)、ピクセル・ビジュアル・コア(PVC:Pixel Visual Core)、視覚処理装置(VPU:Vision Processing Unit)、グラフィクス処理クラスタ(GPC:Graphics Processing Cluster)、テクスチャ処理クラスタ(TPC:Texture Processing Cluster)、ストリーミング・マルチプロセッサ(SM:Streaming Multiprocessor)、ツリー・トラバース・ユニット(TTU:Tree Traversal Unit)、人工知能アクセラレータ(AIA:Artificial Intelligence Accelerator)、ディープ・ラーニング・アクセラレータ(DLA:Deep Learning Accelerator)、算術論理演算装置(ALU:Arithmetic-Logic Unit)、 特定用途向け集積回路(ASIC:Application-Specific Integrated Circuit)、浮動小数点演算装置(FPU:Floating Point Unit)、入力/出力(I/O)素子、ペリフェラル・コンポーネント・インターコネクト(PCI)素子又は、ペリフェラル・コンポーネント・インターコネクト・エクスプレス(PCIe)素子などの、1つ又は複数の処理コア及び/又はそれらのコンポーネントが挙げられる。
通信インターフェース910には、有線通信及び/又は無線通信を含む電子通信ネットワークを介してコンピューティング装置900が他のコンピューティング装置と通信することを可能にする1つ又は複数の受信機、送信機、及び/又は送受信機が含まれ得る。通信インターフェース910は、無線ネットワーク(例えば、Wi-Fi、Z-Wave、Bluetooth、Bluetooth LE、ZigBeeなど)、有線ネットワーク(例えば、イーサネット(登録商標)若しくはInfiniBandを介した通信)、低電力広域ネットワーク(例えば、LoRaWAN、SigFoxなど)、及び/又はインターネットなどの、多数の異なるネットワークのいずれかを介した通信を可能にするコンポーネント及び機能を含んでよい。1つ又は複数の実施例では、論理ユニット920及び/又は通信インターフェース910は、ネットワークを越えて、及び/又は相互接続システム902を介して受信されたデータを1つ又は複数のGPU908(例えば、そのメモリ)に直接送信する1つ又は複数のデータ処理装置(DPU)を含んでよい。
I/Oポート912は、コンピューティング装置900を、I/Oコンポーネント914、提示コンポーネント918、及び/又はその他のコンポーネントを含む他の装置に論理的に結合させることが可能であってよく、これらのコンポーネントのいくつかはコンピューティング装置900に組み込まれて(例えば、統合されて)よい。例証的なI/Oコンポーネント914としては、マイクロフォン、マウス、キーボード、ジョイスティック、ゲーム・パッド、ゲーム・コントローラ、衛星放送受信用アンテナ、スキャナ、プリンタ、無線デバイスなどが挙げられる。I/Oコンポーネント914は、エア・ジェスチャ、声、又はユーザが発した他の生理的入力を処理するナチュラル・ユーザ・インターフェース(NUI:Natural User Interface)を提供してよい。いくつかの場合では、入力はさらなる処理のために適切なネットワーク要素に送信されてよい。NUIは、(以下で詳述されるように)コンピューティング装置900のディスプレイに関連付けられた、音声認識、スタイラス認識、顔認識、生体認証、画面上及び画面隣接でのジェスチャ認識、エア・ジェスチャ、頭部追跡及び視線追跡、並びにタッチ認識の任意の組み合わせを実施してもよい。コンピューティング装置900は、ジェスチャの検出及び認識のために、ステレオ・カメラ・システムなどの深度カメラ、赤外線カメラ・システム、RGBカメラ・システム、タッチ・スクリーン技術、及びこれらの組み合わせを含んでよい。さらに、コンピューティング装置900は、運動の検出を可能にする加速度計又はジャイロスコープを(例えば、慣性測定ユニット(IMU:Inertia Measurement Unit)の一部として)含んでよい。いくつかの実例では、加速度計又はジャイロスコープの出力は、コンピューティング装置6900によって没入型拡張現実又は仮想現実をレンダリングするために使用されてよい。
電源916は、配線による電源、バッテリ電源、又はそれらの組み合わせを含んでよい。電源916はコンピューティング装置900に電力を供給して、コンピューティング装置900のコンポーネントが動作することを可能にしてよい。
提示コンポーネント918は、ディスプレイ(例えば、モニタ、タッチ・スクリーン、テレビ画面、ヘッド・アップ・ディスプレイ(HUD:Heads-Up-Display)、その他のディスプレイ・タイプ、若しくはそれらの組み合わせ)、スピーカ、及び/又はその他の提示コンポーネントを含んでよい。提示コンポーネント918は、他のコンポーネント(例えば、GPU608、CPU906など)からデータを受信し、そのデータ(例えば、画像、映像、音声など)を出力してよい。
図10は、本開示の少なくとも1つの実施例で使用され得る例示的なデータ・センタ1000を図示している。データ・センタ1000は、データ・センタ・インフラストラクチャ層1010、フレームワーク層1020、ソフトウェア層1030、及び/又はアプリケーション層1040を含んでよい。
図10に示すように、データ・センタ・インフラストラクチャ層1010は、リソース・オーケストレータ1012、グループ化された計算資源1014、及びノード計算資源(「ノードC.R.:node Computing Resource」)1016(1)~1016(N)を含んでよく、ここで「N」は任意のすべての正の整数を表す。少なくとも1つの実施例では、ノードC.R.1016(1)~1016(N)は、任意の数の中央演算処理装置(CPU)若しくはその他のプロセッサ(DPU、アクセラレータ、フィールド・プログラマブル・ゲート・アレイ(FPGA:Field Programmable Gate Array)、グラフィクス・プロセッサ若しくはグラフィクス処理装置(GPU)などを含む)、メモリ装置(例えば、ダイナミック・リード・オンリ・メモリ)、記憶装置(例えば、ソリッド・ステート・ドライブ若しくはディスク・ドライブ)、ネットワーク入力/出力(NW I/O)装置、ネットワーク・スイッチ、仮想マシン(VM)、電源モジュール、及び/又は冷却モジュールなどを含んでよいが、これらに限定されない。いくつかの実施例では、ノードC.R.1016(1)~1016(N)のうちの1つ又は複数のノードC.R.が、上記計算資源のうちの1つ又は複数を有するサーバに対応してよい。さらに、いくつかの実施例では、ノードC.R.1016(1)~10161(N)は、vGPU、vCPUなどの1つ若しくは複数の仮想コンポーネントを含んでよく、及び/又はノードC.R.1016(1)~1016(N)のうちの1つ又は複数が、仮想マシン(VM)に対応してよい。
少なくとも1つの実施例では、グループ化された計算資源1014は、1つ若しくは複数のラック(図示せず)、又は様々な地理的位置のデータ・センタ内に収容された多数のラック(同様に図示せず)の中に収容されたノードC.R.1016の別個のグループを含んでよい。グループ化された計算資源1014内のノードC.R.1016の別個のグループは、1つ又は複数のワークロードをサポートするように構成され、又は割り当てられ得るグループ化された計算資源、ネットワーク・リソース、メモリ・リソース又はストレージ・リソースを含んでよい。少なくとも1つの実施例では、CPU、GPU、DPU、及び/又はその他のプロセッサを含むいくつかのノードC.R.1016は、1つ又は複数のラック内にグループ化されて、1つ又は複数のワークロードをサポートする計算資源を提供してよい。また、1つ又は複数のラックは、任意の数の電源モジュール、冷却モジュール、及び/又はネットワーク・スイッチを、任意の組み合わせで含んでよい。
リソース・オーケストレータ1012は、1つ若しくは複数のノードC.R.1016(1)~1016(N)及び/又はグループ化された計算資源1014を構成又はその他の方法で制御してよい。少なくとも1つの実施例では、リソース・オーケストレータ1012は、データ・センタ1000のための、ソフトウェア設計インフラストラクチャ(SDI:Software Design Infrastructure)管理エンティティを含んでよい。リソース・オーケストレータ1012は、ハードウェア、ソフトウェア、又はそれらのいくつかの組み合わせを含んでよい。
少なくとも1つの実施例では、図10に示すように、フレームワーク層1020は、ジョブ・スケジューラ1032、構成管理部1034、リソース管理部1036、及び/又は分散ファイル・システム1038を含んでよい。フレームワーク層1020は、ソフトウェア層1030のソフトウェア1050及び/又はアプリケーション層1040の1つ又は複数のアプリケーション1042をサポートするためのフレームワークを含んでよい。ソフトウェア1050又はアプリケーション1042は、Amazon Web Services、Google Cloud、及びMicrosoft Azureが提供するものなどの、ウェブ・ベースのサービス・ソフトウェア又はサービス・アプリケーションをそれぞれ含んでよい。フレームワーク層1020は、大規模データ処理(例えば、「ビッグ・データ」)のために分散ファイル・システム1038を利用し得る、Apache Spark(商標)(以下、「Spark」)などの、フリーでオープン・ソースのソフトウェア・ウェブ・アプリケーション・フレームワークの一種であってよいが、これに限定されない。少なくとも1つの実施例では、ジョブ・スケジューラ1032は、データ・センタ1000の様々な層によってサポートされるワークロードのスケジューリングを容易にするための、Sparkドライバを含んでよい。構成管理部1034は、大規模データ処理をサポートするためのSpark及び分散ファイル・システム1038を含む、ソフトウェア層1030及びフレームワーク層1020などの様々な層を構成することが可能であってよい。リソース管理部1036は、分散ファイル・システム1038及びジョブ・スケジューラ1032のサポートのためにマッピングされた、又は割り当てられた、クラスタ化又はグループ化された計算資源を管理することが可能であってよい。少なくとも1つの実施例では、クラスタ化された又はグループ化された計算資源は、データ・センタ・インフラストラクチャ層1010におけるグループ化された計算資源1014を含んでよい。リソース管理部1036は、リソース・オーケストレータ1012と協調して、これらのマッピングされた又は割り当てられた計算資源を管理してよい。
少なくとも1つの実施例では、ソフトウェア層1030に含まれるソフトウェア1050は、ノードC.R.1016(1)~1016(N)、グループ化された計算資源1014、及び/又はフレームワーク層1020の分散ファイル・システム1038の少なくとも一部で使用されるソフトウェアを含んでよい。1つ又は複数のタイプのソフトウェアには、インターネット・ウェブ・ページ検索ソフトウェア、電子メール・ウイルス・スキャン・ソフトウェア、データベース・ソフトウェア、及び映像コンテンツ・ストリーミング・ソフトウェアが含まれ得るが、これらに限定されない。
少なくとも1つの実施例では、アプリケーション層1040に含まれるアプリケーション1042は、ノードC.R.1016(1)~1016(N)、グループ化された計算資源1014、及び/又はフレームワーク層1020の分散ファイル・システム1038の少なくとも一部によって使用される1つ又は複数のタイプのアプリケーションを含んでよい。1つ又は複数のタイプのアプリケーションには、任意の数のゲノミクス・アプリケーション、コグニティブ・コンピュート、並びに、トレーニング・ソフトウェア又は推論ソフトウェア、機械学習フレームワーク・ソフトウェア(例えば、PyTorch、TensorFlow、Caffeなど)、及び/又は1つ若しくは複数の実施例と共に使用されるその他の機械学習アプリケーションを含む機械学習アプリケーションが含まれ得るが、これらに限定されない。
少なくとも1つの実施例では、構成管理部1034、リソース管理部1036、及びリソース・オーケストレータ1012のうちのいずれかは、任意の技術的に実現可能な方法で取得された任意の量及びタイプのデータに基づいて、任意の数及びタイプの自己書換え動作を実施してよい。自己書換え動作は、データ・センタ1000のデータ・センタのオペレータが不適当な可能性のある構成決定をすることを低減し、データ・センタの十分に活用されていない、及び/又は性能の低い部分を回避する可能性があることの負担を軽減する。
データ・センタ1000は、本明細書に記載される1つ又は複数の実施例による1つ又は複数の機械学習モデルを用いて1つ若しくは複数の機械学習モデルをトレーニングするか又は情報を予測若しくは推論するための、ツール、サービス、ソフトウェア又はその他のリソースを含んでよい。例えば、機械学習モデルは、データ・センタ1000に関して上述したソフトウェア及び/又は計算資源を用いて、ニューラル・ネットワーク・アーキテクチャに従って重みパラメータを計算することによって、トレーニングされてよい。少なくとも1つの実施例では、1つ又は複数のニューラル・ネットワークに対応するトレーニング又は展開された機械学習モデルは、限定的ではないが本明細書に記載されるものなどの、1つ又は複数のトレーニング技法を通じて計算された重みパラメータを使用して、データ・センタ1000に関して上述したリソースを使用して情報を推論又は予測するために使用されてよい。
少なくとも1つの実施例では、データ・センタ1000は、CPU、特定用途向け集積回路(ASIC)、GPU、FPGA、及び/又はその他のハードウェア(又はこれらに対応する仮想計算資源)を使用して、上記リソースを用いてトレーニング及び/又は推論を行ってよい。さらに、1つ又は複数の上記のソフトウェア・リソース及び/又はハードウェア・リソースは、画像認識、音声認識、又はその他の人工知能サービスなどの、ユーザがトレーニング、又は情報の推論を行うことを可能にするためのサービスとして構成されてよい。
例示的なネットワーク環境
本開示の実施例を実施する際に使用するのに適したネットワーク環境は、1つ若しくは複数のクライアント装置、サーバ、ネットワーク接続ストレージ(NAS:Network Attached Storage)、その他のバックエンド装置、及び/又はその他の装置タイプを含んでよい。クライアント装置、サーバ、及び/又はその他の装置タイプ(例えば、各装置)は、図9のコンピューティング装置900の1つ又は複数のインスタンス上に実装されてよく、例えば、各装置は、コンピューティング装置900の同様のコンポーネント、特性、及び/又は機能を含んでよい。さらに、バックエンド装置(例えば、サーバ、NASなど)が実施される場合、バックエンド装置はデータ・センタ1000の一部として含まれてよく、その実例が図10に関して本明細書において詳述されている。
ネットワーク環境のコンポーネントは、有線、無線、又はその両方であり得るネットワークを介して互いに通信してよい。ネットワークは、複数のネットワーク、又は複数のネットワークのうちの1つのネットワークを含んでよい。例として、ネットワークは、1つ若しくは複数の広域ネットワーク(WAN)、1つ若しくは複数のローカル・エリア・ネットワーク(LAN)、インターネット及び/若しくは公衆交換電話網(PSTN)などの1つ若しくは複数の公衆ネットワーク、並びに/又は1つ若しくは複数のプライベート・ネットワークを含んでよい。ネットワークに無線電気通信網が含まれる場合、基地局、通信塔、又はさらにアクセス・ポイント(並びにその他のコンポーネント)などのコンポーネントが無線接続性を提供してよい。
互換性のあるネットワーク環境には、1つ又は複数のピア・ツー・ピア・ネットワーク環境が含まれてよく(この場合、サーバはネットワーク環境に含まれない場合がある)、及び1つ又は複数のクライアント-サーバ・ネットワーク環境が含まれてよい(この場合、1つ又は複数のサーバがネットワーク環境に含まれてよい)。ピア・ツー・ピア・ネットワーク環境では、サーバに関して本明細書で記載される機能は、任意の数のクライアント装置で実施されてよい。
少なくとも1つの実施例では、ネットワーク環境は、1つ又は複数のクラウド・ベースのネットワーク環境、分散コンピューティング環境、それらの組み合わせなどを含んでよい。クラウド・ベースのネットワーク環境は、1つ又は複数のコア・ネットワーク・サーバ及び/又はエッジ・サーバを含み得るサーバのうちの1つ又は複数に実装されるフレームワーク層、ジョブ・スケジューラ、リソース管理部、及び分散ファイル・システムを含んでよい。フレームワーク層は、ソフトウェア層のソフトウェア及び/又はアプリケーション層の1つ又は複数のアプリケーションをサポートするためのフレームワークを含んでよい。ソフトウェア又はアプリケーションは、ウェブ・ベースのサービス・ソフトウェア又はサービス・アプリケーションをそれぞれ含んでよい。実施例では、クライアント装置の1つ又は複数は、(例えば、1つ又は複数のアプリケーション・プログラミング・インターフェース(API)を介してサービス・ソフトウェア及び/又はサービス・アプリケーションにアクセスすることによって)ウェブ・ベースのサービス・ソフトウェア又はサービス・アプリケーションを使用してよい。フレームワーク層は、大規模データ処理(例えば、「ビッグ・データ」)のために分散ファイル・システムを使用し得るものなどの、フリーでオープン・ソースのソフトウェア・ウェブ・アプリケーション・フレームワークの一種であってよいが、これに限定されない。
クラウド・ベースのネットワーク環境は、本明細書に記載された計算機能及び/又はデータ・ストレージ機能(或いはその1つ又は複数の部分)の任意の組み合わせを実行するクラウド・コンピューティング及び/又はクラウド・ストレージを提供してよい。これらの様々な機能のいずれかは、中央サーバ又はコア・サーバ(例えば、州、地区、国、全世界などにわたって分散され得る1つ又は複数のデータ・センタ)から複数の位置にわたって分散されてよい。ユーザ(例えば、クライアント装置)への接続がエッジ・サーバに比較的近接している場合、コア・サーバは機能の少なくとも一部分をエッジ・サーバにさせるように指定してよい。クラウド・ベースのネットワーク環境は、プライベート(例えば、単一の組織に限定)であってよく、パブリック(例えば、多くの組織が利用可能)、及び/又はそれらの組み合わせ(例えば、ハイブリッド・クラウド環境)であってよい。
クライアント装置は、本明細書で図9に関して記載された例示的なコンピューティング装置900のコンポーネント、特性、及び機能の少なくとも一部を含んでよい。例として、且つ限定的ではなく、クライアント装置は、パーソナル・コンピュータ(PC)、ノート型コンピュータ、モバイル装置、スマートフォン、タブレット・コンピュータ、スマート・ウォッチ、ウェアラブル・コンピュータ、携帯情報端末(PDA:Personal Digital Assistant)、MP3プレイヤ、仮想現実用ヘッドセット、全球測位システム(GPS)若しくはその装置、ビデオ・プレイヤ、ビデオ・カメラ、監視装置若しくは監視システム、車両、ボート、飛行船、仮想機械、ドローン、ロボット、携帯型通信装置、病院機器、ゲーム機器若しくはゲーム・システム、エンタテインメント・システム、車両用コンピュータ・システム、組込みシステム・コントローラ、リモート・コントロール、家電製品、民生用電子機器、ワークステーション、エッジ装置、これらの概説された装置の任意の組み合わせ、又はその他の適した装置として具現化されてよい。
プログラム・モジュールなどのコンピュータ実行可能命令を含むコンピュータ・コード又は機械使用可能命令が、パーソナル・データ・アシスタント又はその他の携帯型装置などのコンピュータ又はその他の機械によって実行されるという一般的な文脈で、本開示は説明され得る。一般に、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含むプログラム・モジュールは、特定のタスクを行う、又は特定の抽象データ・タイプを実装するコードを指す。本開示は、携帯型装置、民生用電子機器、汎用コンピュータ、より専門的なコンピューティング装置などを含む様々なシステム構成で実施されてよい。また、本開示は、通信ネットワークを介してリンクされた遠隔処理装置によってタスクが行われる分散コンピューティング環境において実施されてよい。
本明細書で使用される場合、2つ以上の要素に関する「及び/又は」の記載は、1つの要素のみ、又は要素の組み合わせを意味するものと解釈されるべきである。例えば、「要素A、要素B、及び/又は要素C」には、要素Aのみ、要素Bのみ、要素Cのみ、要素A及び要素B、要素A及び要素C、要素B及び要素C、又は要素A、B、及びCが含まれ得る。また、「要素A又は要素Bの少なくとも1つ」には、要素Aの少なくとも1つ、要素Bの少なくとも1つ、又は要素Aの少なくとも1つ及び要素Bの少なくとも1つが含まれ得る。さらに、「要素A及び要素Bの少なくとも1つ」には、要素Aの少なくとも1つ、要素Bの少なくとも1つ、又は要素Aの少なくとも1つ及び要素Bの少なくとも1つが含まれ得る。
本開示の主題は、法定要件を満たすように本明細書で具体的に説明されている。しかしながら、明細書自体は、本開示の範囲を限定することを意図していない。むしろ、本発明者は、特許請求の主題が、他の現在又は将来の技術と併せて、本明細書に記載されたものと類似した異なるステップ又はステップの組み合わせを含むように他の方法で具現化される場合もあることを想定している。さらに、「ステップ」及び/又は「ブロック」という用語は、利用される方法の異なる要素を意味するために本明細書で使用され得るが、それぞれのステップの順序が明示的に記載されない限り、及び明示的に記載されている場合を除き、本明細書に開示されている様々なステップ間のいかなる特定の順序をも意味すると解釈されるべきではない。