IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ バルブ コーポレーションの特許一覧

特許7516357ビデオゲームで拡張現実(AR)を提供するためのARシステム
<>
  • 特許-ビデオゲームで拡張現実(AR)を提供するためのARシステム 図1
  • 特許-ビデオゲームで拡張現実(AR)を提供するためのARシステム 図2
  • 特許-ビデオゲームで拡張現実(AR)を提供するためのARシステム 図3
  • 特許-ビデオゲームで拡張現実(AR)を提供するためのARシステム 図4
  • 特許-ビデオゲームで拡張現実(AR)を提供するためのARシステム 図5
  • 特許-ビデオゲームで拡張現実(AR)を提供するためのARシステム 図6
  • 特許-ビデオゲームで拡張現実(AR)を提供するためのARシステム 図7
  • 特許-ビデオゲームで拡張現実(AR)を提供するためのARシステム 図8
  • 特許-ビデオゲームで拡張現実(AR)を提供するためのARシステム 図9
  • 特許-ビデオゲームで拡張現実(AR)を提供するためのARシステム 図10
  • 特許-ビデオゲームで拡張現実(AR)を提供するためのARシステム 図11
  • 特許-ビデオゲームで拡張現実(AR)を提供するためのARシステム 図12
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-05
(45)【発行日】2024-07-16
(54)【発明の名称】ビデオゲームで拡張現実(AR)を提供するためのARシステム
(51)【国際特許分類】
   G06T 19/00 20110101AFI20240708BHJP
   A63F 13/525 20140101ALI20240708BHJP
   A63F 13/79 20140101ALI20240708BHJP
【FI】
G06T19/00 600
A63F13/525
A63F13/79
【請求項の数】 20
(21)【出願番号】P 2021516749
(86)(22)【出願日】2019-09-25
(65)【公表番号】
(43)【公表日】2022-01-11
(86)【国際出願番号】 US2019053009
(87)【国際公開番号】W WO2020069021
(87)【国際公開日】2020-04-02
【審査請求日】2022-09-22
(31)【優先権主張番号】16/143,192
(32)【優先日】2018-09-26
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】517160525
【氏名又は名称】バルブ コーポレーション
(74)【代理人】
【識別番号】110001737
【氏名又は名称】弁理士法人スズエ国際特許事務所
(72)【発明者】
【氏名】ブリースデール-シェパード、エスティン
【審査官】中田 剛史
(56)【参考文献】
【文献】特表2018-515972(JP,A)
【文献】特開2018-129085(JP,A)
【文献】特表2016-505291(JP,A)
【文献】特表2018-520772(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 19/00
A63F 13/525
A63F 13/79
(57)【特許請求の範囲】
【請求項1】
1つ以上のプロセッサと、
前記1つ以上のプロセッサによって実行されると、
一連のフレームでビデオゲームコンテンツを出力するビデオゲームを実行することと、前記ビデオゲームコンテンツは、前記ビデオゲームのゲームワールドを表し、
前記ビデオゲームから別個のプロセスとして拡張現実(AR)コンポーネントを実行し、
前記ARコンポーネントによって、前記ビデオゲームの現在の状態についてのビデオゲームデータを実行可能プログラムに提供し、
前記実行可能プログラムが前記ビデオゲームデータを実行することに少なくとも部分的に基づいて、前記実行可能プログラムによって生成されたARコンテンツを、前記ARコンポーネントによって、受信することと、
前記ゲームワールド内でレンダリングされる前記ARコンテンツを含む拡張フレームを生成することと、
ディスプレイのために前記拡張フレームをレンダリングすることと、
を含む、動作のパフォーマンスをさせる、コンピュータ実行可能命令を記憶するメモリと、を含む、システム。
【請求項2】
前記実行可能プログラムは、プラグインを含む、請求項1に記載のシステム。
【請求項3】
前記ビデオゲームデータは、前記ゲームワールドのレンダリングされる部分に関連付けられたゲームワールド座標を指定し、前記ARコンテンツは、前記ゲームワールド座標に少なくとも部分的に基づいて生成される、請求項1に記載のシステム。
【請求項4】
前記ビデオゲームデータは、前記ビデオゲームのゲーム識別子(ID)をさらに指定し、前記ARコンテンツは、前記ゲームIDに少なくとも部分的に基づいて生成される、請求項3に記載のシステム。
【請求項5】
前記ビデオゲームデータは、プレーヤ制御キャラクタに関連付けられた仮想カメラの現在の向きを指定し、前記ARコンテンツは、前記仮想カメラの前記現在の向きに少なくとも部分的に基づいて生成される、請求項1に記載のシステム。
【請求項6】
前記ARコンテンツは、前記ゲームワールドの一部または異なるビデオゲームの異なるゲームワールドの一部の少なくとも一つのスクリーンショットである、請求項1に記載のシステム。
【請求項7】
前記ARコンテンツは、三次元(3D)スクリーンショットであり、前記拡張フレームを前記生成することは、
前記3Dスクリーンショットに関連付けられた深度バッファデータに少なくとも部分的に基づいて、前記3Dスクリーンショットから3Dモデルを構築することと、
前記拡張フレーム内の前記ビデオゲームコンテンツに少なくとも部分的に前記3Dモデルをオーバーレイすることと、を含む、請求項1に記載のシステム。
【請求項8】
前記ARコンテンツは、複数の連続する三次元(3D)スクリーンショットであり、前記拡張フレームを生成することは、前記複数の連続する3Dスクリーンショットに少なくとも部分的に基づいて、3Dビデオの再生を開始することを含む、請求項1に記載のシステム。
【請求項9】
前記ARコンポーネントは、対話型ARコンテンツを含む、請求項1に記載のシステム。
【請求項10】
1つ以上のプロセッサによって、ビデオゲームを実行することと、
前記1つ以上のプロセッサによって、前記ビデオゲームから別個のプロセスとして、拡張現実(AR)コンポーネントを実行することと、
前記ARコンポーネントによって、前記ビデオゲームの現在の状況についてのビデオゲームデータを実行可能プログラムに提供することと、
前記ARコンポーネントによって、前記実行可能プログラムが前記ビデオゲームデータを実行することに少なくとも部分的に基づいて、前記実行可能プログラムによって生成されたARコンテンツを受信することと、
前記1つ以上のプロセッサによって、前記ビデオゲームのゲームワールド内でレンダリングされた前記ARコンテンツを含む拡張フレームを生成することと、
前記1つ以上のプロセッサによって、ディスプレイのための前記拡張フレームをレンダリングすることと、を含む、方法。
【請求項11】
前記実行可能プログラムは、プラグインを含む、請求項10に記載の方法。
【請求項12】
前記プラグインは、セキュリティサンドボックス内で実行される請求項11に記載の方法。
【請求項13】
前記ビデオゲームデータは、前記ゲームワールドのレンダリングされる部分に関連付けられた空間データを含む、請求項10に記載の方法。
【請求項14】
前記空間データは、前記ゲームワールドの前記レンダリングされる部分に関連付けられたゲームワールド座標、またはプレーヤ制御キャラクタに関連付けられた仮想カメラの現在の方向、のうちの少なくとも一つを指定する、請求項13に記載の方法。
【請求項15】
前記拡張フレームは、第1のクライアントマシン上のディスプレイのためにレンダリングされ、前記ARコンテンツは、第2のクライアントマシン上にレンダリングされた、前記ゲームワールドまたは異なるゲームワールドの一部のスクリーンショットを含み、前記拡張フレームを前記生成することは、
前記スクリーンショットに少なくとも部分的に基づいて、前記第2のクライアントマシンにレンダリングされた前記ゲームワールドまたは前記異なるゲームワールドへのビューポートを構築することを含む、請求項10に記載の方法。
【請求項16】
1つ以上のプロセッサによって、ビデオゲームから別個のプロセスとして拡張現実(AR)コンポーネントを実行することと、
前記1つ以上のプロセッサによって、前記ビデオゲームに関連するビデオゲームデータを受信することと、
前記ARコンポーネントによって、実行可能プログラムに前記ビデオゲームデータを提供することと、
前記ARコンポーネントによって、前記実行可能プログラムが前記ビデオゲームデータを実行することに少なくとも部分的に基づいて、前記実行可能プログラムによって生成されたARコンテンツを受信することと、
前記1つ以上のプロセッサによって、前記ビデオゲームのゲームワールド内でレンダリングされた前記ARコンテンツを含む前記ビデオゲームのための拡張フレームを生成するために、前記ARコンテンツをクライアントマシンに送信することと、を含む方法。
【請求項17】
前記実行可能プログラムは、プラグインを含む、請求項16に記載の方法。
【請求項18】
前記ビデオゲームデータは、前記ゲームワールドのレンダリングされる部分に関連付けられた空間データを含む、請求項16に記載の方法。
【請求項19】
前記プラグインは、セキュリティサンドボックス内で実行される、請求項17に記載の方法。
【請求項20】
前記ARコンテンツは、対話型ARコンテンツを含む、請求項16に記載の方法。
【発明の詳細な説明】
【関連出願の相互参照】
【0001】
これは、2018年9月26日に出願された「AUGMENTED REALITY(AR)SYSTEM FOR PROVIDING AR IN VIDEO GAMES」と題された米国特許出願第16/143,192号の優先権を主張するPCT出願であり、該PCT出願は、参照によりその全体が本明細書に組み込まれる。
【背景技術】
【0002】
拡張現実(AR)技術は、従来、シースルーディスプレイに表示されるコンピュータ生成コンテンツで実世界の環境を拡張することを伴う。このようにして、このようなARデバイスのユーザは、実世界の環境に存在する現実のオブジェクトのコンテキストで、コンピュータ生成コンテンツを見ることができる。これまでのところ、AR技術は主に、実世界の拡張に限定されてきた。本明細書で行われる開示は、これらおよび他の考慮事項に関して提示されている。
【図面の簡単な説明】
【0003】
詳細な説明を、添付の図を参照して説明する。図では、参照番号の左端の数字(複数可)は、参照番号が最初に現れる図を指す。異なる図における同じ参照番号の使用は、類似または同一のコンポーネントまたは機能を示す。
【0004】
図1】ビデオゲームの実行中に拡張フレームをレンダリングするように構成された拡張現実(AR)コンポーネントを有するクライアントマシンの例示的なコンポーネントを示すブロック図を示し、拡張フレームは、ビデオゲームコンテンツおよび拡張現実(AR)コンテンツを含む。
【0005】
図2】ARコンテンツがビデオゲームで使用するためにクライアントマシンに選択的にプロビジョニングされるように、空間データベースにおいてARコンテンツを作成および維持するために、リモートコンピューティングシステムのコンポーネントを含む例示的なシステムを示す図である。
【0006】
図3】クライアントマシンによって受信されるARコンテンツを決定するARチャネルにクライアントマシンがサブスクライブできる例示的なシステムを示す図である。
【0007】
図4】作成者がARコンテンツを作成するためのコンテンツ作成インターフェースを提供し、作成されたARコンテンツを空間データベースに記憶し、1つ以上のフィルタリング基準に基づいて、選択したARコンテンツを要求側クライアントマシンに送信するための例示的なプロセスの流れ図である。
【0008】
図5】ビデオゲームの実行中に、リモートコンピューティングシステムからARコンテンツを受信し、ARコンテンツを含む拡張フレームを含むフレームをレンダリングするための例示的なプロセスの流れ図である。
【0009】
図6】ビデオゲームの実行中に空間的に関連するARコンテンツでフレームを拡張するための例示的なプロセスの流れ図である。
【0010】
図7】ビデオゲームの実行中に動的および/または対話型ARコンテンツでフレームを拡張するための例示的なプロセスの流れ図である。
【0011】
図8】開示されたARシステムを使用して、シングルプレーヤビデオゲームにマルチプレーヤアスペクトを追加するための例示的な技法を示す図である。
【0012】
図9】ARシステムを使用して、コンピュータネットワークを介したクライアントマシン間でのデータ交換により、シングルプレーヤゲームにマルチプレーヤアスペクトを追加するための例示的なプロセスの流れ図である。
【0013】
図10】開示されたARシステムを使用して、クライアントマシン間でゲームワールドのアスペクトを共有するための例示的な技法を示す図である。
【0014】
図11】ARシステムを使用して、クライアントマシン間でゲームワールドのアスペクトを共有するための例示的なプロセスの流れ図である。
【0015】
図12】ビデオゲームとクライアントマシン上で別個に実行しているARコンポーネントとの間でイベントを交換するための例示的なプロセスの流れ図である。
【発明を実施するための形態】
【0016】
本明細書で説明されるのは、とりわけ、ビデオゲームにおいて拡張現実(AR)を提供するための技法、デバイス、およびシステムである。前述のように、ARは従来、実世界(すなわち、ユーザの物理的環境)でのユーザエクスペリエンスを向上させるために使用可能な技術と見なされている。本明細書で開示されるARシステムは、実世界ではなく、ビデオゲームのゲームワールドで、ユーザエクスペリエンスを向上させる。開示されたARシステムは、ビデオゲームの組み込み機能の上にARコンテンツを階層化することを可能にする。このゲーム内ARシステムは、作成者が任意のビデオゲームまたは複数のビデオゲーム用のARコンテンツを作成することにより、ゲーマーに独特の「ゲーム内」ARエクスペリエンスを提供できるという意味で普遍的である。そうすることで、開示されたARシステムは、ゲーム開発者が自分のゲームに同じタイプの拡張機能を提供する負担を軽減する。自分のデバイスに任せた場合、ゲーム開発者は、自分のARシステムをカスタム構築することになる可能性があり、ゲーム固有であり、他のゲーム開発者がリリースした他のゲームと互換性のないARシステムになる可能性がある。対照的に、開示されたゲーム内ARシステムは、複数の異なるビデオゲームと互換性がある。
【0017】
開示されたゲーム内ARシステムは、とりわけ、ARコンテンツおよび関連データのための中央データウェアハウスとして機能するリモートコンピューティングシステムを含み得る。いくつかの実施形態では、リモートコンピューティングシステムは、ARコンテンツを様々なデータ(例えば、ゲーム識別子(ID)、ビデオゲームのゲームワールド座標に関連する空間データ、ゲーム関連イベントを指定するイベントデータなど)に関連付ける空間データベースにARコンテンツを維持する。追加的に、または代替的に、ARコンテンツは、ARコンテンツのフィルタリング基準として機能する関連付けられたARチャネルであり得る。
【0018】
リモートコンピューティングシステムは、作成者が新しいARコンテンツを作成するためのインターフェースをさらに提供し得、その後、リモートコンピューティングシステムによって維持され、ゲーム内ARエクスペリエンスでビデオゲームを拡張したいゲーマーの選択されたオーディエンスにアクセスできるようにする。このコンテンツ作成インターフェースは、これらに限定されないが、情報メッセージ、二次元(2D)オブジェクト、三次元(3D)オブジェクト、2Dおよび/または3Dピクセルデータを含むスクリーンショット、ビデオクリップなどを含む、異なるタイプのARコンテンツの作成をサポートし得る。ARコンテンツは「静的」であり得、したがって、ゲームワールド内の固定された場所にレンダリングされる。ARコンテンツは「動的」であり得、したがって、ゲームワールド内で移動またはアニメーション化される。いくつかの実施形態では、ARコンテンツは、作成者がプログラムへの入力としてリアルタイムビデオゲームデータに応答する実行可能プログラムを作成することを可能にするプラグインを使用することによって対話型にすることさえできる。このようにして、ビデオゲームのプレーヤは、ゲームワールドに追加されたARコンテンツを体験できるだけでなく、いくつかの場合には、コアビデオゲームのゲームワールド内で二次ビデオゲームをプレイするのとよく似て、ARコンテンツと対話することができる。
【0019】
ゲームワールド内でARコンテンツをレンダリングするために、クライアントマシンは、ARコンテンツへのアクセスを取得し得、ビデオゲームをクライアントマシン上で実行している間に、必要に応じて、ゲームワールド内の関連するARコンテンツを識別し、レンダリングすることができる。クライアントマシンは、任意の好適な記憶場所から(例えば、コンピュータネットワークを介してリモートコンピューティングシステムから、リモートコンピューティングシステムからARコンテンツをダウンロードした後ローカルメモリから)ARコンテンツにアクセスすることができる。例示的なプロセスでは、クライアントマシンは、一連のフレームでビデオゲームコンテンツを出力するように構成されたビデオゲームを実行することができる。ゲームの実行中、クライアントマシンは、(i)ビデオゲームから、ビデオゲームの現在の状態に関するビデオゲームデータを取得すること、(ii)ビデオゲームデータに少なくとも部分的に基づいてARコンテンツを識別すること、(iii)ビデオゲームコンテンツと識別されたARコンテンツとの両方を含む拡張フレームを生成すること、および(iv)クライアントマシンに関連付けられたディスプレイ上に拡張フレームをレンダリングすることによって、一連のフレームのうちの任意の所与のフレームをARコンテンツで拡張することができる。特に、ARコンテンツは、クライアントマシン上で実行しているビデオゲームによって生成されるのではなく、ビデオゲームコンテンツの「上」にARコンテンツを階層化することにより、拡張フレームのレンダリングで取り出すためにARコンテンツを維持する別個のリソースから取り出される。ここでは、ARコンテンツがビデオゲームコンテンツの「上」に階層化されていると述べられることが多いが、一部のビデオゲームコンテンツ(例えば、半透明のグラフィックス)がARコンテンツの「上」にレンダリングされるように、任意の好適な方法で、ARコンテンツがビデオゲームコンテンツとマージされ得るため、これは文字通りに解釈されないものとする。
【0020】
いくつかの実施形態では、実行中のビデオゲームから取得され、フレームを拡張するための関連するARコンテンツを識別するために使用されるビデオゲームデータは、ビデオゲームのゲームワールド内のゲームワールド座標に関連する空間データであり得る。例えば、ARコンテンツは、何らかの方法で、プレーヤ制御キャラクタの現在の場所に関連するゲームワールドの座標との関連付けに基づいて識別され得る。このようにして、空間的に関連するARコンテンツは、ビデオゲームのゲームワールド内のある場所に、拡張フレーム内にビデオゲームコンテンツとともにレンダリングすることができる。いくつかの実施形態では、ビデオゲームデータはまた、ゲーム関連のイベントに関連するイベントデータとすることができる。例えば、ARコンテンツは、ゲーム関連のイベント(例えば、銃から発射されたショット、車両に出入りするゲームキャラクタなど)の発生に基づいて、ゲームワールド内で識別され、かつレンダリングされ得る。
【0021】
開示されたARシステムはまた、様々なマルチプレーヤアスペクトでシングルプレーヤビデオゲームを拡張することを可能にする。これは、マルチプレーヤゲームにするために、シングルプレーヤゲームのコードをオーバーホールすることなく実現され得る。このようなマルチプレーヤアスペクトを可能にするために、クライアントマシンは、コンピュータネットワークを介してデータを交換してもよい。例えば、ビデオゲームを実行している第1のクライアントマシンをリモートコンピューティングシステムに接続してもよく、その結果、第1のクライアントマシンは、リモートコンピューティングシステムを介して、同じくビデオゲームを実行している第2のクライアントマシンによって放出されたデータを受信することができる。第2のクライアントマシン上で実行しているビデオゲームによって放出されるデータは、第2のクライアントマシン上にレンダリングされているゲームワールドの第2のインスタンス内の第2のプレーヤ制御キャラクタの現在の場所を指定する空間データであり得る。ネットワークを介してこの空間データを受信すると、第1のクライアントマシンは、ARコンテンツ(例えば、第2のプレーヤ制御キャラクタのARアバター)を識別し、取り出すことができ、第1のクライアントマシンは、第1のクライアントマシン上にレンダリングされているゲームワールドの第1のインスタンス内に、取り出されたARコンテンツをレンダリングすることができ、ARコンテンツは、受信された空間データに対応するゲームワールド内のある場所にレンダリングされる。例として、この技法は、そうでなければシングルプレーヤゲームに「スピードランニング」を追加することを可能にし得、それにより、第1のクライアントマシンを使用する第1のプレーヤは、第1のプレーヤのビデオゲームのビデオゲームコンテンツにオーバーレイされる第2のプレーヤのゲームキャラクタのARアバターを見る。
【0022】
いくつかの実施形態では、開示されたARシステムは、3Dスクリーンショット(すなわち、深度データを含む画像)からゲームワールドの一部のモデルを構築(または再構築)することができる。この場合、ARコンテンツは3Dスクリーンショットである可能性があり、第1のゲーマーが第2のゲーマーによってキャプチャされたゲームワールドの「スライス」を見回し、および/または動き回ることができるように、3Dスクリーンショットでキャプチャされたゲームワールドの一部の3Dモデルを構築することができる。ゲームワールドのこの3Dスライスは、ビデオゲームをプレイしている間、第1のゲーマーのクライアントマシン上の拡張フレーム122内にレンダリングすることができる。
【0023】
いくつかの実施形態では、開示されたゲーム内ARシステムは、異なるゲーマーのクライアントマシン間でコンピュータネットワークを介してARコンテンツのリアルタイム共有を可能にし得る。例えば、ARコンテンツは、第1のビデオゲームでビューポートとして、またはさらにはポータルとして、別のプレーヤのビデオゲームのゲームワールドにレンダリングすることができる。この技法では、特定の3Dスクリーンショットに呈されるゲームワールドの一部の3Dモデルを構築するために、3Dスクリーンショットを使用し得る。これにより、ゲーマーは、他のビデオゲームの仮想ゲームワールドへのウィンドウとして各ビデオゲームでレンダリングされるARコンテンツを介して互いに対話することができる。
【0024】
本明細書に記載の技法およびシステムは、1つ以上のデバイスが、処理リソース、メモリリソース、および/またはネットワーキングリソースに関してリソースを節約することを可能にし得る。例えば、コンピュータネットワークを介して実際のコンテンツ(例えば、画像および/またはビデオファイル)の代わりにデータを送信すると、少なくとも、帯域幅消費が高いコンピュータネットワークを介してコンテンツのストリームを送信する現在使用されているライブゲームストリーミング技術と比較して、ネットワーク帯域幅消費が低減される。別の例として、クライアントマシンへのARコンテンツの選択的ダウンロードは、ビデオゲームの実行中にARコンテンツを取り出し、かつレンダリングするように構成されたローカルクライアントマシンによる、および/またはその上でのネットワーク帯域幅消費および/またはメモリ消費を低減し得る。他の例は、本開示全体を通して記載されている。
【0025】
図1は、ビデオゲーム104の実行中に拡張フレームをレンダリングするように構成された拡張現実(AR)コンポーネント102を有するクライアントマシン100の例示的なコンポーネントを示すブロック図を示し、拡張フレームは、ビデオゲームコンテンツおよびARコンテンツを含む。一般に、図1に示されるクライアントマシン100は、入っているプログラムおよび他のソフトウェアを実行するためにユーザ106によって利用され得るコンピューティングデバイスを表すことができる。図1に示されるように、クライアントマシン100のユーザ106は、クライアントマシン100上で実行している、またはリモートコンピューティングシステム上で実行しており、ストリーミングされたビデオゲーム104としてクライアントマシン100上でプレイ可能であるビデオゲーム104をプレイする特定の目的のためにユーザ106がクライアントマシン100を使用するコンテキストで、本明細書では多くの場合「プレーヤ」と呼ばれる。したがって、「ユーザ106」、「プレーヤ106」、および/または「ゲーマー106」という用語は、クライアントマシン100のユーザを示すために、本明細書では互換的に使用されてもよく、クライアントマシンの多くの用途の1つは、ビデオゲームをプレイすることである。
【0026】
クライアントマシン100は、これらに限定されないが、PC、デスクトップコンピュータ、ラップトップコンピュータ、携帯電話(例えば、スマートフォン)、タブレットコンピュータ、携帯情報端末(PDA)、ウェアラブルコンピュータ(例えば、仮想現実(VR)ヘッドセット、拡張現実(AR)ヘッドセット、スマートグラスなど)、車載(例えば、車内)コンピュータ、テレビ(スマートテレビ)、セットトップボックス(STB)、ゲームコンソール、および/または任意の同様のコンピューティングデバイスを含む、関連するディスプレイ上でグラフィックスを処理およびレンダリングするように構成された任意の好適なタイプのコンピューティングデバイスとして実装することができる。
【0027】
示される実装形態では、クライアントマシン100は、他のコンポーネントの中でもとりわけ、中央処理装置(複数可)(CPU(複数可))およびグラフィックス処理装置(複数可)(GPU(複数可))などの1つ以上のプロセッサ108、ディスプレイ(複数可)110、メモリ112(または非一時的コンピュータ可読媒体112)、および通信インターフェース(複数可)114を含む。図1の例示的なクライアントマシン100は、クライアントマシン100が埋め込みディスプレイ110を含むことを示唆しているが、クライアントマシン100は、実際にはディスプレイを省略してもよいが、代わりに、周辺ディスプレイに結合され得る。したがって、ディスプレイ110は、クライアントマシン100に埋め込まれているか、または(有線または無線プロトコルを介して)それに接続されているかにかかわらず、関連するディスプレイ110を表すことを意味している。
【0028】
メモリ112(または非一時的コンピュータ可読媒体112)は、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなど、情報の記憶のための任意の方法または技術で実装される、揮発性および不揮発性メモリ、着脱可能媒体および着脱不能媒体を含み得る。そのようなメモリは、これらに限定されるものではないが、RAM、ROM、EEPROM、フラッシュメモリもしくは他のメモリ技術、CD-ROM、デジタル多用途ディスク(DVD)もしくは他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、RAIDストレージシステム、または所望の情報を記憶するために使用することができ、かつコンピューティングデバイスからアクセスすることができる任意の他の媒体を含む。コンピュータ可読媒体112は、コンピュータ可読記憶媒体(「CRSM」)として実装されてもよく、これは、メモリ112に記憶された命令を実行するためにプロセッサ(複数可)108によってアクセス可能な任意の利用可能な物理媒体であってもよい。1つの基本的な実装形態では、CRSMには、ランダムアクセスメモリ(「RAM」)およびフラッシュメモリを含んでもよい。他の実装形態では、CRSMは、読み取り専用メモリ(「ROM」)、電気的に消去可能なプログラム可能な読み取り専用メモリ(「EEPROM」)、または所望の情報を記憶するために使用することができ、かつプロセッサ(複数可)108によってアクセスすることができる任意の他の有形媒体を含み得るが、これらに限定されない。
【0029】
以下でより詳細に説明するように、クライアントマシン100は、通信インターフェース(複数可)114を介してコンピュータネットワークを介してリモートコンピューティングシステムと通信することができる。したがって、通信インターフェース(複数可)114は、有線インフラストラクチャ(例えば、同軸ケーブル、光ファイバケーブルなど)、無線インフラストラクチャ(例えば、無線周波数(RF)、セルラー、衛星など)、および/または他の接続技術を介して通信するための任意の好適な通信プロトコルを採用してもよい。
【0030】
いくつかの実施形態では、図2に示されるリモートコンピューティングシステム200などのリモートコンピューティングシステムは、プログラム(およびコンテンツ)を、クライアントマシン100などのクライアントマシンに配信(例えば、ダウンロード)するためのプラットフォームとして機能するか、またはそれにアクセスできる。したがって、クライアントマシン100は、メモリ112にインストールされたビデオゲームクライアント116を有するものとして図1に示されている。ビデオゲームクライアント116は、ビデオゲーム(またはビデオゲームプログラム)などのプログラムを起動および実行するように構成された実行可能クライアントアプリケーションを表し得る。言い換えれば、ビデオゲームクライアント116は、クライアントマシン100上でビデオゲームをプレイするために使用可能なゲームソフトウェアを含み得る。ビデオゲームクライアント116がインストールされた状態で、クライアントマシン100は、次いで、コンピュータネットワークを介してリモートシステムからビデオゲームを受信(例えば、ダウンロード、ストリーミングなど)し、ビデオゲームクライアント116を介してビデオゲームを実行する能力を有し得る。ビデオゲームがクライアントマシン100上でダウンロードおよび実行のために個々に購入可能である直接購入モデル、サブスクリプションベースのモデル、ビデオゲームが一定期間レンタルまたはリースされるコンテンツ配信モデルなど、任意のタイプのコンテンツ配信モデルをこの目的に利用することができる。したがって、クライアントマシン100は、ビデオゲームライブラリ118内に、ビデオゲーム104など1つ以上のビデオゲームを含むことができる。これらのビデオゲームは、ビデオゲームクライアント116をロードすることによって取り出し、実行することができる。一例では、ユーザは、ビデオゲームクライアント116をロードし、ビデオゲーム104を選択してビデオゲーム104の実行を開始することによって、購入してビデオゲームライブラリ118にダウンロードした複数のビデオゲームのうちの1つをプレイすることを選択し得る。ビデオゲームクライアント116は、ユーザ106が資格情報(例えば、ユーザアカウント、パスワードなど)を使用してビデオゲームサービスにログインすることを可能にし得る。
【0031】
図2のリモートコンピューティングシステム200などのリモートコンピューティングシステムは、拡張現実(AR)コンテンツ120をクライアントマシン100などのクライアントマシンに配信(例えば、ストリーミング、ダウンロードなど)するためのプラットフォームとしてさらに機能するか、またはそれにアクセスすることができる。したがって、クライアントマシン100は、ARコンテンツ120がローカルメモリ112からアクセス可能であるように、ARコンテンツ120がローカルメモリ112に記憶されているものとして示されている。一般に、このARコンテンツ120は、コンピュータネットワークを介してリモートシステム200から受信(例えば、ダウンロード、ストリーミングなど)することができ、ビデオゲーム104自体によって出力されるビデオゲームコンテンツに追加されたARコンテンツ120を含む拡張フレームをレンダリングするプロセスで使用することができる。したがって、ARコンテンツ120は、リモートで(例えば、リモートコンピューティングシステム200で)維持され、コンピュータネットワークを介してアクセスされ得る。図1は、ビデオゲーム104の実行中に複数のフレームのうちの1つとしてレンダリングされ得る例示的な拡張フレーム122を示す。本明細書で使用される場合、「フレーム」は、ディスプレイ上にライブビデオゲームをレンダリングするための一連の画像フレーム内の多くの画像フレームのうちの1つである画像フレームを意味する。したがって、拡張フレーム122は、ビデオゲームコンテンツ124とARコンテンツ120との両方を含む複合フレームである。特に、ARコンテンツ120は、ビデオゲーム104自体によって生成されないコンテンツを表す。したがって、ARコンテンツ120は、事後にビデオゲームコンテンツに追加される補足的なコンピュータ生成グラフィックスを表す。したがって、図1のビデオゲームコンテンツ124は、クライアントマシン100上で実行している間にビデオゲーム104自体によって出力される一連のフレームのうちの1つのビデオゲームコンテンツを表す。この意味で、ビデオゲーム104の「ゲームワールド」は、座標系によって定義され得、一連のフレームの各フレームにレンダリングされるゲームワールドの一部は、ゲームワールド内のプレーヤ制御キャラクタ126の現在の場所を含む様々な要因に依存し得る。ゲームワールドの座標系は、ゲームワールド内の場所に対応する座標を定義することができる。図1は、プレーヤ106がゲームワールド内のゲームキャラクタ126の動きを制御することを可能にするファーストパーソンシュータビデオゲーム104の例を示している。例えば、プレーヤ106は、クライアントマシン100に(例えば、ゲームコントローラ、タッチスクリーンなどを介して)ユーザ入力を提供して、プレーヤ制御キャラクタ126をある場所から別の場所に移動させることができ、各場所は、プレーヤ制御キャラクタ126が任意の所与の瞬間にゲームワールド内のどこに位置するかを示す特定の座標の用語で指定される。
【0032】
以下でより詳細に説明するように、クライアントマシン100にアクセス可能なARコンテンツ120は、特定のビデオゲーム104のゲームワールドの特定の座標を指定し得る空間データに関連付けられて記憶され得る。このようにして、ビデオゲーム104が、特定のARコンテンツ120に関連付けられた座標を含むゲームワールドの一部をレンダリングするときはいつでも、ARコンテンツ120は、それらの座標との関連付けに基づいて識別され得、それらの座標に対応するゲームワールド内のある場所に提示されたARコンテンツ120を含む拡張フレーム122を生成するために、識別されたARコンテンツ120が使用され得る。
【0033】
クライアントマシン100がゲーム内ARを提供するためにどのように動作し得るかを示すために、クライアントマシン100に関連付けられたディスプレイ(複数可)110上にレンダリングされる一連のフレームのうちの1つのフレームを検討する。所与のフレームをレンダリングするために、クライアントマシン100上で実行しているARコンポーネント102は、ビデオゲーム104から、ビデオゲーム104の現在の状態に関するビデオゲームデータ128を取得し、ビデオゲームデータ128(ローカルまたはリモートでARコンテンツ120にアクセスするために図1の矢印130によって示されるように)に少なくとも部分的に基づいてARコンテンツ120を識別し、ビデオゲーム104によって出力されたビデオゲームコンテンツ124およびビデオゲームデータ128に基づいて識別されたARコンテンツ120を含む拡張フレーム122を生成し、ディスプレイ(複数可)110上に拡張フレーム122をレンダリングし得る。
【0034】
ARコンポーネント102は、ビデオゲーム104の実行とは別個に実行され得、その結果、ビデオゲーム104がクラッシュするイベントでは、ARコンポーネント102は、クラッシュせず、逆もまた同様である。この意味で、ARコンポーネント102は、ARコンテンツ120を任意のビデオゲーム104に追加してユーザエクスペリエンスを向上させることができるように、複数のビデオゲームと互換性があり、複数のビデオゲーム間で転送可能なARコンポーネント102を含むARシステムを有する能力を提供する、クライアントマシン100上で実行している任意の特定のビデオゲーム104から分離されている。例えば、ARコンポーネント102は、ビデオゲーム104とは別個のプロセスとして実行され得(例えば、ビデオゲーム104のものとは別個の.exe)、ARコンポーネント102およびビデオゲーム104は、前後に通信し得る。ARプロセスは、複数のビデオゲームおよび/または複数の非ゲームアプリケーションと一度に通信できる可能性がある。このARプロセスは、プラグインを含むこともできるか、またはプラグインをロードするように構成することもできる。これらのプラグインは、セキュリティサンドボックス(またはコンテナ)内で実行され得る。ビデオゲーム104からのARコンポーネント102のこの分離は、安定性を提供し、ビデオゲーム104は、ARプロセスをクラッシュさせず、逆もまた同様である。ARコンテンツ120をレンダリングするためのサードパーティプラグインコードは、サンドボックス化されて分離されているため、ビデオゲーム104と同じプロセスで実行されないため、セキュリティは別の利点であり、それにより、ARシステムでの不正行為のいかなる可能性を軽減する。いくつかの実施形態では、以下でより詳細に説明される「ARビューア」の形態のビデオゲームは、ユーザ106がビデオゲームコンテンツ124のコンテキストの外でARコンテンツ120を観戦することを可能にし得る。例えば、「ARビューア」は、空白の背景またはゲームワールドの3Dモデル表現上のARコンテンツ120にアクセスし、それをレンダリングすることができる。
【0035】
図1の例では、ビデオゲームデータ128に基づいて識別されたARコンテンツ120は、第1のARコンテンツ120(1)および第2のARコンテンツ120(2)を含む。第1のARコンテンツ120(1)は、例として、スクリーンショット(例えば、2Dまたは3D画像)であり、第2のARコンテンツ120(2)は、例として、情報メッセージである。第1のARコンテンツ120(1)は、ゲームワールド内の第1の座標に関連付けられ得、第2のARコンテンツ120(2)は、ゲームワールド内の第2の座標に関連付けられ得る。このシナリオでは、ビデオゲーム104から取得されたビデオゲームデータ128は、ゲームワールド内のプレーヤ制御キャラクタ126の現在の場所を指定する空間データ、および場合によっては、プレーヤ制御キャラクタ126に関連付けられた仮想カメラの現在の向きなど、他の空間データを含み得る。カメラの向きデータは、プレーヤ制御キャラクタ126の視点から見た視野を示し得、したがって、プレーヤ制御キャラクタ126の現在の場所と結合されると、プレーヤ制御キャラクタ126の視野内にあるゲームワールドの一部に対応する座標のセットを決定することができる。このようにして、拡張フレーム122内にレンダリングされるARコンテンツ120は、プレーヤ制御キャラクタ126の現在の場所を指定する空間データに少なくとも部分的に基づいて、および、場合によっては、カメラの向きデータ、インデックスなど、追加の空間データに基づいて識別され得る。空間データのこれらのアスペクトについて、以下でより詳細に説明する。
【0036】
したがって、ARコンポーネント102は、スクリーンショット(第1のARコンテンツ120(1))がゲームワールド内の第1の場所に対応する第1の座標でレンダリングされ、情報メッセージ(第2のARコンテンツ120(2))が、ゲームワールド内の第2の場所に対応する第2の座標でレンダリングされることを決定し得る。このように、ARコンテンツ120は、ゲームワールド内の特定の座標に関連付けられているという意味で、「空間的に関連する」ARコンテンツ120であり得る。したがって、プレーヤ106は、ARコンテンツ120の周りでプレーヤ制御キャラクタ126をナビゲートすることができ、これは、いくつかの場合には、ゲームワールド内のある場所に固定されたままであってもよい。
【0037】
前述のように、ARコンテンツ120は、追加的に、または代替的に、ビデオゲーム104で発生するように、特定のイベントに関連付けられるという意味で、イベント関連のARコンテンツ120であり得る。このシナリオでは、第1のARコンテンツ120(1)は、第1のゲーム関連イベントに関連付けられ得、第2のARコンテンツ120(2)は、第1のゲーム関連イベント、または第2のゲーム関連イベントに関連付けられ得、ビデオゲーム104から取得されたビデオゲームデータ128は、ゲーム関連イベント(複数可)の発生を示すイベントデータを含み得る。
【0038】
いくつかの実施形態では、ARコンポーネント102は、ビデオゲーム104によって行われる関数呼び出しの一部として、ビデオゲーム104からビデオゲームデータ128を受信することができる。このシナリオでは、ビデオゲーム104のゲーム開発者は、ビデオゲームコードにアプリケーションプログラミングインターフェース(API)を実装して、ビデオゲームデータ128をARコンポーネント102に渡すために、ゲーム実行中の個々のフレームループ中にARコンポーネント102にこのタイプの関数呼び出しを行うレンダリングフックを提供することができる。例えば、ビデオゲームプラットフォームのサービスプロバイダによって書かれたコードライブラリは、ゲームプロセス内で実行されるAR関連プロセスを提供することを可能にし、別個のプロセスで実行される外部ARコンポーネント102と通信することを担当する、ゲーム開発者のビデオゲーム104への統合のために提供されてもよい。ARコンポーネント102は、ビデオゲームデータ128に基づいて拡張フレーム122をレンダリングすること、および拡張フレーム122でレンダリングされるARコンテンツ120を要求することを担当し得る。いくつかの実施形態では、フレームループ中の関数呼び出しのタイミングは、ARコンテンツ120が2つのタイプのグラフィックスの間でレンダリングされ得るように、ビデオゲームコンテンツ124で不透明なグラフィックスをレンダリングした後であるが、ビデオゲームコンテンツ124で半透明のグラフィックスをレンダリングする前に、関数呼び出しが行われるようなものである。いくつかの実施形態では、深度バッファからの深度データを使用して、ビデオゲームコンテンツ124およびARコンテンツ120を適切にマージする。関数呼び出しは、ビデオゲームデータ128(例えば、ゲームワールド座標などの空間データ、プレーヤ制御キャラクタ126のカメラの向きの行列変換、イベントデータなど)をARコンポーネント102に提供することができ、その結果、ARコンポーネント102は、ビデオゲームデータ128に基づいて、関連するARコンテンツ120を取り出すことができる。
【0039】
いくつかの実施形態では、ARコンテンツ120は、ビデオゲームコンテンツ124の既存のフレーム上のオーバーレイとして、ARコンポーネント102によってビデオゲームに自動的に「注入」され得、これは、ゲーム開発者との調整に依存せずに、任意の追加のAR関連コードをビデオゲーム内に実装する。この自動注入技法は、以下でより詳細に説明するように、同時ローカリゼーションおよびマッピング(SLAM)技術を使用して実現され得る。要するに、SLAMプロセスは、図2に示されるリモートコンピューティングシステム200によってオフラインで実施され得、多くの画像からゲームワールドジオメトリ(例えば、ゲームワールドの3Dモデル)を漸進的に再構築するために使用され得る。このバックエンドプロセスは、ビデオゲームプラットフォームのサービスプロバイダによって、ゲーム開発者によって、および/またはプレーヤクライアントマシン100からゲームワールドの画像をクラウドソーシングすることによって行われ得る。このようにして、SLAMを使用して、ビデオゲームコンテンツ124のスクリーンショットに描かれるゲームワールドジオメトリの認識を自動化することができ、SLAMプロセスによって生成されるゲームワールドの3Dモデルをクライアントマシン100によって使用して、ゲームワールドジオメトリのコンテキストでARコンテンツ120を提示する方法で、ARコンテンツ120でビデオゲームコンテンツ124を拡張することができる。これはまた、コードがもはやゲーム開発者によって更新されなくなったバックカタログゲームのビデオゲームコンテンツ124にARコンテンツ120を追加することを可能にし得る。いくつかの実施形態では、ビデオゲーム106は、ARコンポーネント102に依存することなく、ARコンテンツ120自体を明示的に要求し、ARコンテンツ120自体をレンダリングするように構成され得る。
【0040】
いくつかの実施形態では、ARコンテンツ120は、拡張フレーム122をレンダリングするプロセスにおいて、ビデオゲームコンテンツ124にオーバーレイされる。例えば、ビデオゲーム104は、拡張フレーム122のディスプレイ(複数可)110上にレンダリングされるグラフィックスに対応するピクセルデータ(例えば、色値、深度値など)を出力することができる。ビデオゲーム104によって出力されるピクセルデータは、例えば、不透明なグラフィックスが最初にレンダリングされ(例えば、プレーヤ制御キャラクタ126の現在の場所からより遠いより大きな深度値で)、半透明なグラフィックス(例えば、粒子、雲、ほこりなど)は、不透明なグラフィックスの後に(例えば、プレーヤ制御キャラクタ126の現在の場所により近いより浅い深度値で)レンダリングされることを示し得る。したがって、ARコンテンツ120は、いくつかの場合には、それぞれ不透明なグラフィックスおよび半透明なグラフィックスの深度値の間の深度値でARコンテンツ120をレンダリングすることによってなど、不透明なグラフィックスと半透明なグラフィックスとの間でレンダリングされ得る。
【0041】
いくつかの実施形態では、ARコンテンツ120は、例えば、ゲームワールドであまり空間をとらないアイコンを用いて、拡張フレーム122内に微細な方法で提示することができ、ユーザ106がARコンテンツ120に焦点を合わせると(例えば、アイコンの上にポインタを置くこと、アイコンの近くに移動することによってなど)、ユーザ106にもっと見たいかどうかを尋ねるポップアップが提示されてもよい。ユーザ106が、ボタンの選択を介して、もっと見たいことを示した場合、ARコンテンツ120のフルバージョンが提示され得る(例えば、アイコンをスクリーンショット、情報メッセージ、オブジェクト、または任意の他の形態のARコンテンツ120に展開することによって)。いくつかの実施形態では、サブスクライブされていないARコンテンツ120は、この方法で提示することができる。ARチャネルについては、以下でより詳細に説明する(例えば、図3を参照)。要するに、ARチャネルは、フィルタリングメカニズムとして機能し、その結果、ユーザ106は、1つ以上のARチャネルにサブスクライブして、それらのサブスクライブされたARチャネルに関連するARコンテンツを見ることができる。しかしながら、サブスクライブされたARチャネルからサブスクライブされたARコンテンツを受信することに加えて、クライアントマシン100は、ユーザ106がまだサブスクライブしておらず、サブスクライブされたARコンテンツ120からサブスクライブされていないARコンテンツ120を視覚的に区別するために拡張フレーム122内に微細な方法で提示されるARコンテンツ120を受信することができる。このサブスクライブされていないARコンテンツ120は、ビデオゲーム104のゲームワールドのレンダリングされる部分の現在のゲームワールド座標に基づいて、クライアントマシン100に送信され得る。したがって、サブスクライブされていないARコンテンツ120は、ユーザ106が現在体験しているゲームワールド内の場所に基づいて、サブスクリプションのためにユーザ106に提供され得る。
【0042】
図2は、ARコンテンツ120がビデオゲームで使用するためにクライアントマシンに選択的にプロビジョニングされるように、空間データベース204においてARコンテンツ120および関連データを作成および維持するために、リモートコンピューティングシステム200のコンポーネントを含む例示的なシステム202を示す図である。示された実装形態では、リモートコンピューティングシステム200は、他のコンポーネントの中でもとりわけ、1つ以上のプロセッサ206、通信インターフェース(複数可)208、およびメモリ210(または非一時的コンピュータ可読媒体210)を含む。メモリ210(または非一時的コンピュータ可読媒体210)は、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなど、情報の記憶のための任意の方法または技術で実装される、揮発性および不揮発性メモリ、着脱可能媒体および着脱不能媒体を含み得る。そのようなメモリは、これらに限定されるものではないが、RAM、ROM、EEPROM、フラッシュメモリもしくは他のメモリ技術、CD-ROM、デジタル多用途ディスク(DVD)もしくは他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、RAIDストレージシステム、または所望の情報を記憶するために使用することができ、かつコンピューティングデバイスからアクセスすることができる任意の他の媒体を含む。コンピュータ可読媒体210は、コンピュータ可読記憶媒体(「CRSM」)として実装されてもよく、これは、メモリ210に記憶された命令を実行するためにプロセッサ206によってアクセス可能な任意の利用可能な物理媒体であってもよい。1つの基本的な実装形態では、CRSMには、ランダムアクセスメモリ(「RAM」)およびフラッシュメモリを含んでもよい。他の実装形態では、CRSMは、読み取り専用メモリ(「ROM」)、電気的に消去可能なプログラム可能な読み取り専用メモリ(「EEPROM」)、または所望の情報を記憶するために使用することができ、かつプロセッサ(複数可)206によってアクセスすることができる任意の他の有形媒体を含み得るが、これらに限定されない。拡張現実(AR)モジュール212は、プロセッサ(複数可)206によって実行されると、リモートコンピューティングシステム200に、本明細書に記載の技法および動作を実施させる、メモリ210に記憶された命令を表し得る。メモリ210はまた、本明細書で説明されるように、クライアントマシン100などのクライアントマシンに配信するために、ビデオゲーム104などのビデオゲームのカタログを記憶し得るビデオゲームカタログ214を維持するものとして示されている。
【0043】
通信インターフェース(複数可)208は、有線インフラストラクチャ(例えば、同軸ケーブル、光ファイバケーブルなど)、無線インフラストラクチャ(例えば、無線周波数(RF)、セルラー、衛星など)、および/または他の接続技術を介して通信するための任意の好適な通信プロトコルを採用してもよい。図2に示される作成者216(1)および216(2)などの作成者は、それぞれのユーザコンピューティングデバイス220(1)および220(2)を使用して、コンピュータネットワーク218を介してリモートコンピューティングシステム200にアクセスし得る。コンピュータネットワーク218は、これらに限定されないが、インターネット、他のタイプのデータおよび/または音声ネットワーク、有線インフラストラクチャ(例えば、同軸ケーブル、光ファイバケーブルなど)、無線インフラストラクチャ(例えば、無線周波数(RF)、セルラー、衛星など)、および/または他の接続技術を表し、および/または含み得る。リモートコンピューティングシステム200は、いくつかの場合には、コンピュータネットワーク218を介して維持され、およびアクセス可能なネットワークアクセス可能なコンピューティングプラットフォームの一部であり得る。このようなネットワークアクセス可能なコンピューティングプラットフォームは、「オンデマンドコンピューティング」、「サービスとしてのソフトウェア(SaaS)」、「プラットフォームコンピューティング」、「ネットワークアクセス可能なプラットフォーム」、「クラウドサービス」、「データセンター」などの用語を使用して参照され得る。一般に、リモートコンピューティングシステム200は、ARコンテンツ120および関連データのための中央データウェアハウスとして機能するように構成される。
【0044】
リモートコンピューティングシステム200は、ユーザコンピューティングデバイス220が新しいARコンテンツ120を作成するためのインターフェース(例えば、アプリケーションプログラミングインターフェース(API))を提供するようにさらに構成され得る。したがって、リモートコンピューティングシステム200は、コンテンツ作成インターフェース(例えば、API)を介して、およびユーザコンピューティングデバイス220から、ARコンテンツ120を作成するための命令222を受信することができる。図2は、第1のユーザコンピューティングデバイス220(1)を使用して、新しいARコンテンツ120を作成するための第1の命令222(1)を提供する第1の作成者216(1)と、第2のユーザコンピューティングデバイス220(2)を使用して、新しいARコンテンツ120を作成するための第2の命令222(2)を提供する第2の作成者216(2)と、を描く。リモートコンピューティングシステム200は、ビデオゲームをプレイしている間にクライアントマシンがアクセスするためにリモートコンピューティングシステム200によって維持されるように、新しいARコンテンツ120を作成したいそのような作成者216のコミュニティをサポートすることができることを理解されたい。
【0045】
作成者216がビデオゲーム104の実行外でARコンテンツ120を作成することを可能にするAPIに加えて、プラグインロジックを介してビデオゲーム104の実行中にクライアントマシン100上に新しいARコンテンツ120を作成することができる。例えば、クライアントマシン100上で実行しているARコンポーネント102は、ゲームプレイ中に新しいARコンテンツ120(例えば、付箋、スクリーンショットなど)を作成するプラグイン(複数可)にビデオゲームデータ128を提供することができる。このプラグインによって作成されたARコンテンツ120は、それが現在のプレーヤ106のゲームセッションの存続期間の間存在し、セッションが終了した後も持続されないという意味で一時的であり得る。代替的に、プラグインによって作成されたARコンテンツ120は、後のゲームセッションでアクセス可能であるように、空間データベース204にアップロードされ得る。いくつかの実施形態では、プラグインによって作成されたARコンテンツ120は、同じビデオゲーム104または異なるビデオゲームをプレイしている他のプレーヤ106とリアルタイムで共有される。このシナリオでは、リモートコンピューティングシステム200は、ゲームセッション中にクライアントマシン100間でARコンテンツ120を中継するサーバとして機能する。作成者216はまた、コンテンツ作成APIを使用して、新しいARコンテンツ、および/または作成者216によって以前に作成されたコンテンツに関連付けられたアクセス権を指定することができる。コンテンツ作成APIはまた、1つ以上のビデオゲーム104に関連付けられた既存のスクリーンショットまたはビデオクリップにARコンテンツを追加することを可能にすることができる。
【0046】
図2は、作成者216によって作成されたARコンテンツ120を記憶するために使用される空間データベース204を示す。空間データベース204は、ARコンテンツ120を、これに限定されないが、図2に示されるデータのタイプを含む様々なタイプのデータと関連付けることができる。例えば、図2は、空間データベース204が、ARコンテンツ120(1)、120(2)、…、120(N)の複数のレコードをどのように含み得るかを示す。ARコンテンツ120の各レコードは、例えば、ビデオゲームカタログ214内のビデオゲーム104を一意に識別するゲーム識別子(ID)224に関連付けられ得る。このようにして、ARコンテンツ120の各レコードは、特定のビデオゲームに結び付けることができる。いくつかの実施形態では、ARコンテンツ120の個々のレコードは、複数の異なるビデオゲームの複数のゲームID224に関連付けることができるか、または空間データベース204は、同じARコンテンツ120を異なるビデオゲームの複数の異なるゲームID224に関連付けるために別個のレコードを維持することができる。いくつかの実施形態では、ゲームID224は、ビデオゲームが複数のレベルを有する場合、ビデオゲームのレベルなどの任意の好適なレベルの粒度でビデオゲームのアスペクトを指定することを可能にし得る。例として、ARコンテンツ120のレコードは、特定のビデオゲームのレベル3に関連付けられ得るが、他のレベルには関連付けられない。
【0047】
ARコンテンツ120の個々のレコードはまた、ARチャネルを一意に識別するARチャネルID230に関連付けられ得る。ARチャネルは、(例えば、図3を参照して)以下でより詳細に説明される。要するに、ARチャネルは、無関係なARコンテンツ120を除外し、ユーザ106のARチャネルサブスクリプションに基づいて、そのユーザ106のクライアントマシンに関連するARコンテンツ120を送信するためのフィルタリング基準として機能することができる。
【0048】
ARコンテンツ120の個々のレコードはまた、ゲームワールド座標226に関連付けられ得る。ゲームワールド座標226は、特定のビデオゲームのゲームワールド内の特定の座標を指定する空間データ227であると見なすことができ、ゲームワールドは座標系によって定義される。このようにして、ARコンテンツ120のレコードに関連付けられたゲームワールド座標226が、ゲームワールドの一部をビデオゲーム104のプレーヤ106に提示するためにフレームにレンダリングされるときはいつでも、それらのゲームワールド座標226に関連付けられたARコンテンツ120を識別し、それを使用して、ARコンテンツ120を含む拡張フレーム122を生成することができる。例示的な例では、作成者216(1)は、ドアウェイが一連のフレームのうちの1つのフレームでレンダリングされるときはいつでもそのドアウェイに提示されるビデオゲームの所与のレベルについて、情報メッセージなどのARコンテンツ120を作成することができる。ARコンテンツ120の複数のレコードは、同じゲームワールド座標226(例えば、ビデオゲームの所与のレベルのドアウェイ)に関連付けられ得、それらのゲームワールド座標226に関連付けられたARコンテンツ120の一部またはすべては、プレーヤ106がARコンテンツ120にアクセスしなければならないアクセス権に応じて、ビデオゲームの所与のプレーヤ106に対して提示可能であることを理解されたい。例えば、複数の情報メッセージは、特定のビデオゲームのレベル3のドアウェイに関連付けられ得、これらの情報メッセージの一部またはすべては、ドアウェイがプレーヤ制御キャラクタ126の視野内にあるとき、ARコンテンツ120として所与のプレーヤ106に可視であり得る。
【0049】
再びゲームID224を参照すると、ゲームID224はまた、ビデオゲーム104のゲームワールド内のゲームワールド座標226の複数のインスタンス間での曖昧さを解消するために使用可能であり得る。言い換えれば、ゲームID224は、ゲームワールド座標が曖昧である場合に、ゲームワールド座標226を一意にすることができる。作成者216(2)が、ビデオゲームコンテンツ124として提供される自動車にARコンテンツ120としてホログラムを取り付けたい例を検討する。クライアントマシン100上で実行しているARコンポーネント102は、ARコンテンツ120(例えば、ホログラム)を取り付ける、同じメーカーおよびモデルの潜在的に多くの自動車を知る必要がある場合がある。ゲームワールドを動き回ることができる自動車のようなモバイルオブジェクトの場合、そのようなモバイルオブジェクトに関連付けられたゲームワールド座標226は、モバイルオブジェクトの外部のゲームワールド環境の一部に対して表現されるのではなく、モバイルオブジェクトに対して表現され得る。この場合、モバイルオブジェクトに関連付けられたゲームワールド座標226は、ARコンテンツ120(例えば、ホログラム)が取り付けられるゲームワールドの部分の曖昧さを完全に解消するのに十分ではない可能性があり、ゲームID224は、したがって、ゲームワールド座標226の複数のインスタンス間での曖昧さを完全に解消するために使用可能である。
【0050】
ゲームID224をどのように使用することができるかの別の例として、ビデオゲーム104のゲームワールドの周りの複数の異なる場所に現れる仮想ホテルを検討する。ビデオゲーム104は、ホテル自体に対する個々のホテルのゲームワールド座標226を表現し得るが(例えば、ホテル自体がミニチュアゲームワールドであるかのように)、ホテルの各インスタンスは、異なるゲームID224によって一意に識別され得る。一般に、ゲームワールド座標226は、実世界によって共有されないビデオゲームの様々なアスペクト(例えば、異なる場所を接続するポータル、ビデオゲームがロードされるたびに(各セッション)異なる順序で一緒にスティッチされる構築済みの部屋など)のために、実世界の座標に真に類似していない可能性があることを理解されたい。これらおよび他の理由のために、ゲームID224は、同じゲームワールド座標226の複数のインスタンス間での曖昧さを解消するのに役立つ可能性がある。
【0051】
例示的な例では、ARコンテンツ120のレコードは、プレーヤ制御キャラクタによってキャプチャされたゲームワールドの一部のスクリーンショット(例えば、図1に示される第1のARコンテンツ120(1))に対応し得る。スクリーンショットがキャプチャされたとき、スクリーンショットがキャプチャされたときのカメラの向きだけでなく、ゲームワールド座標226およびゲームID224に関連付けられていた可能性がある。このデータは、関連するARコンテンツ120とともにアップロードされて、空間データベース204に新しいレコードを作成することができる。したがって、ゲームプレイ中に、ビデオゲーム104が、現在のゲームワールド座標226およびプレーヤ制御キャラクタ126に関連付けられた現在のゲームID224を指定する空間データの形態でビデオゲームデータ128を提供するとき、その空間データに関連付けられたスクリーンショットは、そのフレームのビデオゲームコンテンツ124の上にARコンテンツ120としてレンダリングすることができ、それによって、第1のゲーマー106は、第2のゲーマー106によって見られたゲームワールドの同じスナップショットを見ることができる。いくつかの実施形態では、実際のスクリーンショットは、現在のプレーヤのカメラの向きがスクリーンショットに関連付けられたカメラの向きと一致しない限り、およびそれまで表示されず、そうでなければ、カメラの向きが一致しない場合、これらのスクリーンショットは、ゲームワールドに、図1に示される例示的な第1のARコンテンツ120(1)によく似た「フローティング」画像として提示され得る。このようにして、複数のスクリーンショットがゲームワールドの同じ場所でキャプチャされ、ARコンテンツ120としてリモートコンピューティングシステム200にアップロードされた場合、プレーヤ106が、プレーヤ制御キャラクタ126を、それらのスクリーンショットに関連付けられたカメラの向きに整列させるときはいつでも、所与のプレーヤ106は、視聴可能なフローティング画像のクラスタを見ることができる。
【0052】
ARコンテンツ120の個々のレコードはまた、状態228に関連付けられ得る。状態228がどのように使用され得るかを示すために、ゲームで起こっていることを変える特定のイベントが発生したときなど、時間とともに異なる状態間で動的に変化するゲームワールドを提示するビデオゲームを検討する。例示的な例では、ゲームワールドは、ボスを打ち負かす前の第1の状態で、およびボスを打ち負かした後の第2の状態で提示され得る。この意味で、ARコンテンツ120の個々のレコードは、状態228によって、これらの異なるゲームワールドの状態に関連付けることができる。すなわち、特定のゲームワールド座標226に関連付けられた第1のARコンテンツ120は、第1の状態228との関連付けによってゲームワールドの第1の状態で提示され得、ゲームワールドの状態が変化すると、第1のARコンテンツ120は、削除され、同じゲームワールド座標226に関連付けられた第2のARコンテンツは、第2の状態228との関連付けによって、ゲームワールドの第2の状態で提示され得るなど、以下同様である。例示的な例では、プレーヤ106がボス戦闘を開始すると、プレーヤ106は、プレーヤがボスと戦う際に健闘を祈る情報メッセージの形態で第1のARコンテンツ120を見て、次いで、プレーヤ106がボスを打ち負かしたとき、プレーヤ106は、プレーヤがボスを打ち負かしたことを祝福する情報メッセージの形態で第2のARコンテンツ120を見ることができる。
【0053】
状態228がどのように使用され得るかのさらに別の例として、異なるモード(例えば、すべてのプレーヤが自分で戦うソロモード、プレーヤがペアでプレイするデュオモード、プレーヤがより大きなグループでプレイするスクワッドモードなど)でプレイ可能なビデオゲームを検討する。これらのモードは独立して、しかし、ビデオゲームの同じゲームワールド内でプレイすることができる。したがって、ARコンテンツ120のレコードは、特定のゲームモードに対応する状態228に関連付けることができる。一般に、状態228は、ARコンテンツ120が拡張フレーム122内にレンダリングされるコンテキスト(必ずしも空間コンテキストである必要はない)でフィルタリングするために使用されるあらゆるものであり得る。
【0054】
ARコンテンツ120の個々のレコードはまた、ピクセルデータ232に関連付けられ得る。ピクセルデータ232は、ビデオゲームのプレーヤ106によってキャプチャされたスクリーンショットの形態でARコンテンツ120に特に関連付けられ得る。例えば、ピクセルデータ232は、ゲームワールドの2Dスクリーンショットを再構築するために、ピクセルごとの値(例えば、色値)の2Dアレイを含み得る。いくつかの実施形態では、ピクセルデータ232は、シーンに深度の感知を提供するピクセルごとの深度値を含む。シーンに関係する3D情報を含むピクセルデータ232は、ゲームワールドの3Dモデルを構築するために、クライアントマシン100のARコンポーネント102によって使用され得る。
【0055】
空間データベース204のARコンテンツ120のレコードに含まれるものとして図2に示されるデータの例示的なタイプは単なる例であり、ARコンテンツ120の特定のレコードに関連付けられた他のタイプのデータがあり得る。例えば、アクセス権は、ビデオゲームをプレイしている間にARコンテンツ120に対する可視性を有する特定のユーザまたはユーザグループを示すために、ARコンテンツ120の個々のレコードに関連付けられ得る。例えば、ARコンテンツ120は、一般大衆、ARコンテンツ120を作成した作成者216の友人、または他の指定されたユーザもしくはユーザグループに対してARコンテンツ120が可視かどうかを指定するタグに関連付けることができる。いくつかの例では、ARコンテンツ120は、ユーザの興味、話されている言語(例えば、英語、日本語、スペイン語など)、地理的場所、時間帯などに関連付けることができる。これらのタイプのデータは、1つ以上の基準が満たされるときはいつでも、ARコンテンツ120を要求側クライアントマシン100に送信することを可能にするために、フィルタリング基準として機能し得る。これらのタイプのデータは、追加的に、または代替的に、ARコンテンツ120をレンダリングするかどうかを決定するためのレンダリング基準として機能し得る(例えば、現在の時刻が特定の時刻に対応する場合(例えば、特定の時間範囲内)、ユーザ106が特定の地理的場所(例えば、特定の地理的エリア/地域内)に現在位置している場合、ユーザ106が特定の言語を話している場合、ユーザ106が特定のトピックに興味を持っている場合(例えば、ユーザの興味が指定されたユーザプロファイルに示されるように)など、ARコンテンツ120をレンダリングする)。
【0056】
様々な異なるタイプのARコンテンツ120は、リモートコンピューティングシステム200によって提供されるコンテンツ作成インターフェース(例えば、アプリケーションプログラミングインターフェース(API))を介して、作成者216によって作成され得る。ARコンテンツ120の例示的なタイプには、これらに限定されないが、情報メッセージ(例えば、ゲーマー106によって投稿されたメッセージ)、2Dおよび/または3Dオブジェクトを含む仮想オブジェクト(例えば、形状、アバター、射撃ターゲットなど)、2Dおよび/または3Dスクリーンショットを含むビデオゲームのプレイ中にプレーヤによってキャプチャされるスクリーンショット、ビデオクリップ、対話型オブジェクト(例えば、ゲームキャラクタ、またはゲームワールド内を移動する他の仮想オブジェクトもしくはグラフィックスなど)などを含む。
【0057】
ARコンテンツ120(例えば、静的、動的、またはそうでなければ対話型であるARコンテンツ120)の作成を可能にするために、リモートコンピューティングシステム200は、作成者216が空間データベース204内のARコンテンツ120のレコードに記憶されるコード(例えば、ダイナミックリンクライブラリ(DLL)、Javascriptファイル、.exeなどとして実装され得るプラグインなどの実行可能プログラム)を書くためのAPIを提供し得る。このシナリオでは、既に作成されたARコンテンツ120を取り出す代わりに、ビデオゲーム104の現在の状態に関するビデオゲームデータ128を、ARコンテンツ120のレコードの実行可能プログラムへの入力として提供することができ、実行可能プログラムは、ビデオゲームデータ128のプログラムの処理に基づいて、ARコンテンツ120を生成し、かつ出力し得る。この意味で、空間データベース204のレコードに記憶される「ARコンテンツ」は、いくつかの実施形態では、実行可能プログラムに入力されるビデオゲームデータ128に基づいてARコンテンツを生成するように構成される「実行可能プログラム」を含み得る。いくつかの実施形態では、クライアントマシン100上で実行しているARコンポーネント102は、セキュリティサンドボックスを作成し、クライアントマシン100のユーザ106がサブスクライブするARチャネル(複数可)に対応する1つ以上の実行可能プログラムまたはプラグイン(例えば、DLL)をロードし、プラグインにビデオゲームデータ128を提供して、プラグインにそれぞれのロジックを実行させ、ARコンテンツ120を返すようにしてもよい。例えば、DLLのフォルダがあり得、各DLLは異なるプラグインを表す。ユーザ106がARチャネル(複数可)にサブスクライブするとき、ARコンポーネント102は、セキュリティサンドボックス内の対応するDLL(複数可)をロードすることができ、次いで、レンダリングされるフレームごとに、ARコンポーネント102は、ビデオゲームデータ128を、ロードされた対応するDLL(複数可)への入力として提供することができ、DLL(複数可)からの出力として、拡張フレーム122としてフレームにレンダリングされるARコンテンツ120を受信することができる。例示的な例では、プラグインを作成者216によって作成して、ARコンテンツ120のオーバーレイとしてビデオゲーム104のゲームワールドにアニメーション化されたオブジェクト(例えば、ゲームキャラクタ)を追加することを可能にすることができる。そのようなプラグイン層を使用して、作成者216は、ベース(またはコア)ビデオゲーム104に関して別個に実行され、ビデオゲーム104のビデオゲームコンテンツ上のオーバーレイとして提示される二次ゲームを作成することができる。この意味で、ビデオゲーム104は、ビデオゲームコンテンツ124の上にレンダリングされるARコンテンツ120について知る、または気にする必要もないが、それにもかかわらず、対話型ARコンテンツ120は、ビデオゲーム104の現在の状態に関して、ビデオゲームデータ128に依存し得、その結果、対話型ARコンテンツ120は、ゲームワールド内の適切なコンテキストで(例えば、ゲームワールドのジオメトリを考慮して、適切な場所で、および適切な方法で、適切な時間に、など)提示することができる。このようにして、プレーヤ106は、プレーヤ制御キャラクタ126を制御するためのユーザ入力を提供することによって、ARコンテンツ120と対話することができる。ARプラグインは、クライアントマシン100上でローカルに、またはリモートコンピューティングシステム200でリモートで実行することもできる。後者の場合、ARコンテンツ120は、クライアントマシン100によって、ネットワーク218を介してリアルタイムで受信することができる。リモートコンピューティングシステム200からダウンロードするためにユーザ106によって選択可能な複数の実行可能プログラム(ARプラグイン)があり得、個々のプラグインは、特定の目的のためにARコンテンツ120を生成する。
【0058】
いくつかの実施形態では、リモートコンピューティングシステム200によって提供されるコンテンツ作成インターフェース(例えば、API)は、作成者216が、入力として、クライアントマシン100のスクリーン上にレンダリングされているゲームワールドの現在のシーン(例えば、3Dスクリーンショット)に関連するビデオゲームデータ128を受信するように構成された実行可能プログラム(例えば、プラグイン)を作成することを可能にし得、実行可能プログラムは、ARコンテンツを出力し得る。このようにして、対話型ARコンテンツ120は、クライアントマシン100のスクリーン上に提示されているゲームワールドのコンテキストで提示することができる。例えば、作成者216は、プラグインを使用して、ARゲームキャラクタに、プレーヤ106が撃ち、キャプチャし、またはそうでなければ対話しようとすることができる敵のように、ビデオゲームのゲームワールドを走り回らせる実行可能プログラムを書くことができる。3Dスクリーンショットデータは、例えば、キャラクタが、壁を走り抜けるのではなく、ゲームワールドの壁の周りを走り回ることによるなど、現実的な方法でそのような対話型コンテンツ120を追加することを可能にし得る。同様のプレーヤの移動挙動、同様のサイズのワールド、および/または同様のゲームロジックを有するビデオゲーム104の場合、作成者216は、複数のビデオゲームと互換性があり、複数のビデオゲームにわたって機能する実行可能プログラムを作成することができる。このようにして、ARモジュール212を含むARシステムは、作成者216がプラグイン作成APIを使用して、複数の異なるビデオゲーム、特に同様のゲームワールドとプレーヤの移動挙動を持つゲームの「上で」実行する二次ARベースのゲームを作成することを楽しむ二次ゲーム開発の文化を育むことができる。この意味で、本明細書に開示されるARシステムを使用する作成者216は、実際には、二次ARベースのゲームを開発する事業を行っているゲーム開発者である可能性がある。例えば、プラグインを使用して、ARゲームセッションを作成することができ、これは、複数のゲームインスタンスからのゲーム状態を使用して、複数のクライアントマシン100間で共有され得るARコンテンツ120を生成する。それらのクライアントマシン100のユーザ106は、同じビデオゲームを実行する必要なしにこれらのARゲームセッションに参加することができる可能性があり、いくつかのARゲームは、各ユーザが異なるゲームまたはARビューアの形態のビデオゲーム内にいることを可能にするように設計され得る。「ARゲームセッション」内のユーザ対話は、ネットワーク218によって媒介され得る(例えば、ARプラットフォームは、ユーザがネットワーク218を介して対話するための特定のビデオゲーム(複数可)におけるサポートがなくても、ユーザが互いに対話することを可能にする)。
【0059】
ゲーム開発者は、本明細書で説明されるように、対話型ARコンテンツ120を提供する実行可能プログラムの使用をサポートするために、ゲームコードにマイナーな機能を追加することによって、このARシステムに参加することができる。例えば、ビデオゲーム104は、ゲーム開発者によって開発することができ、それによって、ビデオゲームは、対話型ARコンテンツ120をビデオゲームコンテンツ124の上の追加の層として追加する目的で、所与のクライアントマシン100上で実行しているARコンポーネント102にデータを放出し、ARコンポーネント102からデータを受信するように構成される。例えば、ゲーム開発者は、ゲーム内で弾丸が発射されるたびにデータを放出する1行以上のコードをビデオゲーム104に追加し、データは、ビデオゲーム104において、プレーヤ制御キャラクタ126によって発射された弾丸に関係する方向性および場合によっては大きさ(例えば、速度)を提供するゲームワールド内のベクトル(または光線)を指定することができる。ARコンポーネント102は、この放出されたデータを受信し、それを弾丸の発射に対応するイベントデータに関連付けられたARコンテンツ120の特定のレコードのための実行可能プログラムへの入力として提供することができる。実行可能プログラムは、ゲームワールド内に配置され、プレーヤ106がプレーヤ制御キャラクタ126の武器(例えば、銃、ナイフなど)を使用して攻撃を試みることができる、ARベースの射撃ターゲットを生成することによって、そのようなイベントに応答することができる。実行可能プログラムは、ARベースの射撃ターゲットが攻撃されたかどうかについて実行可能プログラムに通知するビデオゲーム104によって放出されたデータを引き続き受信することができ、実行可能プログラムは、プレーヤ106がARベースの射撃ターゲットを撃ち、爆発させることによって、プレーヤ106がARベースの射撃ターゲットと対話することができるように、爆発するターゲットを出力することができる。これは、ビデオゲーム104のウォームアップ段階中に、プレーヤ106がゲームワールドをただぶらぶら走り回る代わりに、射撃を練習するのに役立つ可能性がある。この意味で、ゲーム開発者は、プラグイン層を使用して作成者216によって書かれた実行可能プログラムによって使用される特定のデータを放出および/または受信するために、ビデオゲーム104を更新することによって、ゲームにおけるそのようなARベースの対話の継続的なサポートを提供することができる。
【0060】
いくつかの実施形態では、リモートコンピューティングシステム200によって提供されるコンテンツ作成インターフェース(例えば、API)は、ビデオゲーム104との対話の追加の層としてビデオゲーム104にデータを提供する実行可能プログラム(例えば、プラグイン)を作成者216が書くことを可能にしてもよい。例えば、APIを使用して、実行中にビデオゲーム104にデータを送信するプログラム(例えば、プラグイン)を書いて、プレーヤ制御キャラクタ126がいつ健康を獲得または喪失するかを制御するか、または特定のゲーム内の敵がいつおよび/またはどこに現れるかを制御することができる。ゲーム開発者は、クライアントマシン100上で実行しているARコンポーネント102とのこの種の双方向対話をサポートするゲームコードを書かなければならない場合があり、ゲーム開発者は、そのような機能がいつ有効になるかを決定することができる(例えば、不正行為を防止するためにオンラインの競争試合中は対話型ARコンテンツ120を無効にするが、シングルプレーヤモード中に対話型ARコンテンツ120が、ベースのビデオゲーム104の上に、よりドラマチックで興味深いARエクスペリエンスを提供することを可能にすることによって)。いくつかの実施形態では、異なる作成者216によって書かれた異なるARプラグイン(実行可能プログラム)は、ビデオゲームの実行中にARコンポーネント102の管理でデータを前後に渡すことによって互いに対話することができる。例えば、作成者216は、プレーヤ制御キャラクタ126に「生活の質の改善」を提供する「ユーティリティ」プラグインを作成することができる(例えば、ビデオゲーム104の組み込みユーザインターフェースから省略される有用な情報を視覚化するためのARプラグイン)。
【0061】
いくつかの実施形態では、リモートコンピューティングシステム200は、ゲームワールド234の3Dモデルのリポジトリを維持することができる。前述のように、SLAMプロセスは、ゲームワールドジオメトリを再構築し、ゲームワールドジオメトリをゲームワールド234の3Dモデルに記憶するために、リモートコンピューティングシステム200によってオフラインで実施され得る。3Dモデルは、複数の3Dモデルがゲームワールド全体を構築し得るように、ゲームワールドの一部であり得る。SLAMは、その環境の少なくとも一部をキャプチャする画像データに基づいて、未知の地形環境に呈する認識された形状、点、線などに基づいて、計算アルゴリズムを使用して、とりわけ、モデル(またはマップ)を構築する技術である。例えば、3Dモデルは、多くのゲームフレームからSLAMを介して再構築された(例えば、(深度バッファデータの有無にかかわらず、カラーデータの)高密度の時間的に連続したビデオストリームから再構築された)、ゲームワールドの集約された地域を表す場合がある。この再構成は、ARプラグインがクライアントマシン100上で実行を開始する前に3Dモデル234が先験的に利用可能であるように、別個のバックエンドプロセスとして行うことができる。所与のビデオゲームについて、3D再構成プロセスは、ビデオゲームプラットフォームのサービスプロバイダによって、ビデオゲーム104のゲーム開発者によって、またはプレーヤクライアントマシン100からビデオゲームスクリーンショットをクラウドソーシングすることによって実施され得る。ユーザ106のクライアントマシン100からそのようなデータを取得する前に、ユーザの同意を取得することができる。さらに、ユーザ106は、3Dモデル234を構築する目的で、ゲームワールドを自発的に探索し、スクリーンショットデータをリモートコンピューティングシステム200にアップロードすることによって、プロセスに参加することを選択することができる。
【0062】
SLAMによって作成された3Dモデル234は、ビデオゲームコンテンツ124の画像からゲームワールドを識別し、ゲーム内にARコンテンツ120を追加する目的でカメラポーズを決定する目的で、クライアントマシン100によって取り出され得る。いくつかの実施形態では、3Dモデル234は、ARコンテンツ120を未修正のビデオゲームおよび/またはビデオゲームの既存のスクリーンショットおよび/またはビデオに自動的に注入するために、クライアントマシン100によって取得され得る。これは、ビデオゲーム104がARコンテンツ120なしでビデオストリームを出力し、ARシステム(例えば、ARコンポーネント102および/またはARモジュール212)がビデオストリームの上にARコンテンツ120をオーバーレイする(例えば、フレームごとのカメラポーズなど、ビデオゲームから十分な情報を取得することによって)「ストリーミング」ユースケースを可能にし得る。
【0063】
図3は、クライアントマシン100によって受信されるARコンテンツ120を決定するARチャネルにクライアントマシン100がサブスクライブできる例示的なシステム300を示す図である。一般に、図1を参照して説明したクライアントマシン100と同じであり得るクライアントマシン100は、ビデオゲーム104の実行前および/またはビデオゲーム104の実行中に、コンピュータネットワーク218を介してリモートコンピューティングシステム200からARコンテンツ120を受信することができる。これは、ビデオゲーム104の実行中のARコンテンツ120のリアルタイムストリーミングを伴い得るか、または待ち時間および/もしくはネットワーク帯域幅消費を低減するために、ARコンテンツ120が拡張フレーム122の一部としてレンダリングされるとき、ARコンテンツ120は、リモートコンピューティングシステム200からダウンロードされ、クライアントマシン100のローカルメモリからアクセスされ得る。いくつかの実施形態では、ユーザ106がクライアントマシン100上でビデオゲーム104を開始するときはいつでも、ビデオゲームクライアント116は、コンピュータネットワーク218を介して、ビデオゲーム104の識別子(例えば、ゲームID224)を含む要求をリモートコンピューティングシステム200に送信し、リモートコンピューティングシステム200は、ゲームID224を使用して、ゲームID224に関連付けられた空間データベース204内のARコンテンツ120のレコードをルックアップする。したがって、空間データベース204に維持されている利用可能なARコンテンツ120の中で、リモートコンピューティングシステム200は、要求においてクライアントマシン100から受信したゲームID224に関連付けられている利用可能なARコンテンツ120のサブセットを識別し得る。この識別されたARコンテンツ120は、1つ以上のフィルタリング基準に基づいてさらにフィルタリングされ得、最終的にクライアントマシン100に送信されるARコンテンツ120のフィルタリングされたサブセットをもたらし、ARコンテンツ120のフィルタリングされたサブセットは、1つ以上のフィルタリング基準も満たすゲームID224に関連付けられたARコンテンツ120である。このフィルタリング基準は、要求を送信したユーザ106がARコンテンツ120へのアクセス権を有する場合に満たされる1つ以上の基準を含み得る。例えば、特定のユーザグループにのみ可視であるARコンテンツ120のレコードが、要求を送信したログインユーザアカウントが特定のユーザグループに含まれている場合、そのARコンテンツ120のレコードは、クライアントマシン100に送信される。そうでなければ、その特定のユーザグループに含まれないユーザ106がARコンテンツ120の要求を送信する場合、ARコンテンツ120のそのレコードは、ユーザ106がそのARコンテンツ120へのアクセス権を有していない可能性があることを見て、クライアントマシン100に送信されない可能性がある。
【0064】
図3に示される別の例示的なフィルタリング基準は、ARコンテンツ120が、クライアントマシン100のユーザ106がサブスクライブしたチャネルに関連付けられているかどうかである。図3は、ビデオゲームクライアント116がクライアントマシン100上に表示することができるユーザインターフェース302を示す。ユーザインターフェース302は、リモートコンピューティングシステム200によって提供されるビデオゲームサービスの異なるアスペクトにナビゲートするためにユーザが選択するためのメニュー項目304のリストを含み得る。例えば、「ストア」メニュー項目304は、クライアントマシン100のユーザ106が、ビデオゲームカタログ214内のビデオゲームなどのコンテンツを閲覧することを可能にし得る。「ライブラリ」メニュー項目304は、ユーザ106がビデオゲームを取得(例えば、購入、レンタル、リースなど)した結果、ユーザ106が、クライアントマシン100にアクセス可能なビデオゲームライブラリ118など、コンテンツのライブラリを閲覧することを可能にし得る。「ニュース」メニュー項目304は、ユーザ106が、コンテンツ公開エンティティによって公開されたニュース記事を閲覧することを可能にし得る。「コミュニティ」メニュー項目304は、ユーザ106が、友人およびコミュニティの他のユーザなど、ビデオゲームサービスの他のユーザ106と対話することを可能にし得る。「ゲーム内拡張現実」メニュー項目304は、クライアントマシン100のユーザ106が、本明細書に開示されるARシステムによって提供される様々なAR機能にアクセスすることを可能にし得る。図3に描かれるそれらのAR機能の1つは、「チャネル」AR機能であり、これにより、ユーザ106は、コンピュータネットワーク218を介してクライアントマシン100に送信されるARコンテンツ120のタイプを指示する異なるARチャネル306にサブスクライブすることができ、それにより、クライアントマシン100のユーザ106に可視になる。言い換えれば、リモートコンピューティングシステム200によって維持される利用可能なARコンテンツ120は、ARチャネル306に分割することができ、ユーザ106は、それらのARチャネル306の1つ以上にサブスクライブし、場合によっては、ビデオゲーム104の実行中に異なるタイプのARコンテンツ120を視聴するためにチャネルを切り替えることができる。ARチャネル306はまた、ユーザ106のチャネルサブスクリプションに基づいて可視化されるか、または非表示のままであるARコンテンツ120の「層」と考えることができる。
【0065】
図3は、ユーザ106がサブスクライブし得る4つの例示的なARチャネル306(1)~(4)を示し、ユーザ106がまだサブスクライブしていない各ARチャネル306の隣に「サブスクライブ」ボタンがある。すでにサブスクライブされたチャネルの場合、ユーザ106がすでにARチャネル306にサブスクライブしたことの表示は、ユーザ106がすでにそのARチャネル306(2)にサブスクライブしていることを示す「スクリーンショット」チャネル306(2)の隣の「チェックボックス」など、ARチャネル306の隣に提供され得る。例えば、ユーザ106は、「ファンフィクション」チャネル306(1)にサブスクライブして、ビデオゲーム104の実行中にファンフィクションに関連するARコンテンツ120を可視化することができる(例えば、ストーリーを語り、場合によっては、ジオキャッシングと同様に、次の情報メッセージをどこで見つけるかについてのヒントを与える複数の情報メッセージをゲームワールド全体に配置することができる)。ユーザ106は、「スクリーンショット」チャネル306(2)にサブスクライブして、ビデオゲーム104の実行中にスクリーンショットから構成されるARコンテンツ120を可視化することができる。ユーザ106は、「友人」チャネル306(3)にサブスクライブして、ビデオゲーム104の実行中に、ユーザ106の友人のうちの1人以上に関連付けられたARコンテンツ120を可視化することができる。このタイプのARチャネル306(3)は、ユーザ106がサブスクライブしたい特定の友人および/または友人のグループを選択するために、ドロップダウンメニューまたは同様の選択メカニズムを備えていてもよい。ユーザ106は、「プロゲーマー」チャネル306(4)にサブスクライブして、ビデオゲーム104の実行中に1人以上のプロゲーマーに関連付けられたARコンテンツ120を可視化することができる。この場合も、ユーザ106がサブスクライブしたい特定のプロゲーマーまたはゲーマーのグループを選択するために、ドロップダウンメニューまたは同様の選択メカニズムが、このタイプのARチャネル306(4)で提供され得る。これらは、ユーザ106がサブスクライブすることができるARチャネル306のタイプの単なる例である。
【0066】
いくつかの実施形態では、ユーザ106は、ARチャネル306にサブスクライブし得、(例えば、ARコンテンツ120のコミュニティアクティビティの量が閾値を超えていること、視聴回数または賛成投票数が閾値を超えていること、ユーザ106の友人の間でARコンテンツ120がトレンドになっていることなど)現在トレンドになっているARコンテンツ120のみを選択し、可視化する。言い換えれば、1つ以上のARチャネル306は、コミュニティの他のユーザからのARコンテンツ120に対する興味の特定のレベルを示すヒューリスティックに基づいて、ユーザ106にとって興味があり得るそのARチャネル306のARコンテンツ120のサブセットを選択的に可視化するように構成され得る。いくつかの実施形態では、リモートコンピューティングシステム200のARモジュール212は、現在ビデオゲームをプレイしているプレーヤ106に、ゲームプレイ中にその場でARチャネル306にサブスクライブするオプションを提供するように構成され得る。例えば、プレーヤ106の友人は、現在、トレジャーハントタイプのARベースの二次ゲームをプレイしている可能性があり、クライアントマシン100を使用するプレーヤ106は、友人が現在楽しんでいるのと同じトレジャーハントのためにARコンテンツ120を提供するARチャネル306にサブスクライブするためのポップアップオプションを提示され得る。トレジャーハントのためにARチャネル306にサブスクライブすると、クライアントマシン100は、クライアントマシン100上で実行しているコアビデオゲーム104の上で実行される二次ゲームとしてトレジャーハントを提供するARコンテンツ120をダウンロードすることができる。別の例として、ゲーマー106は、ビデオゲーム104をプレイし得、ビデオゲームをユーザのコミュニティにストリーミングしている可能性がある。クライアントマシン100を使用するプレーヤ106は、現在プレイしているビデオゲーム104のゲームワールド内で、ビデオゲームワールド内で提示されたそのゲーマー106のアバターを、アバターを介した視聴ユーザ数(例えば、1万人の視聴者の場合は10k)とともに見ることができ、ARコンテンツ120が現在トレンドになっていることを示す。クライアントマシン100を使用するプレーヤ106は、アバターまたはアバターの隣のサブスクライブボタンをクリックして、ゲーマー106のゲームプレイの2Dまたは3Dブロードキャストを起動することができる。
【0067】
再び図2を特に参照すると、ユーザ106が特定のARチャネル306に関連付けられたサブスクライブボタンを選択することに応答して、クライアントマシン100は、コンピュータネットワーク218を介してリモートコンピューティングシステム200にサブスクリプション要求を送信することができる。リモートコンピューティングシステム200は、サブスクリプション要求を受信すると、このフィルタリング基準を満たすARコンテンツ120(例えば、サブスクライブされたARチャネル306に関連付けられたARコンテンツ120)を識別し、ARコンテンツ120を用いて拡張フレーム122を生成する際に使用するために、このARコンテンツ120をクライアントマシン100に送信することができる。したがって、クライアントマシン100は、1つ以上のフィルタリング基準を満たすARコンテンツ120(例えば、サブスクライブされたARチャネル306に関連付けられたARコンテンツ120)を受信し、クライアントマシン100は、ARコンテンツ120を、関連データ(例えば、ゲームワールド座標226、インデックス228、カメラの向きデータ、ピクセルデータ232、イベントデータなどの空間データ)と関連付けてクライアントマシン100のローカルメモリに記憶することができる。このようにして、ARコンテンツ120は、それが拡張フレーム122でレンダリングされるときはいつでもローカルメモリから取り出すことが可能であり、これによって、待ち時間および/またはネットワーク帯域幅消費を低減することができる。
【0068】
いくつかの実施形態では、最終的にクライアントマシンに送信されるARコンテンツ120をフィルタリングするための1つ以上のフィルタリング基準は、ローカルメモリ消費および/またはネットワーク帯域幅消費を低減することを意味するフィルタリング基準をさらに含み得る。例えば、特定のゲームに関連付けられたARコンテンツ120の量が非常に多く、関連するすべてのARコンテンツをクライアントマシン100のローカルメモリにダウンロードすることが困難であるシナリオを検討する。そのようなシナリオでは、関連するARコンテンツ120は、最新性(例えば、ARコンテンツ120の作成日)、人気(例えば、視聴回数、賛成投票数などに基づいて)、ARコンテンツ120の作成者(例えば、一般ユーザよりも友人によって作成されたARコンテンツ120を優先する)、ユーザ106について知られているユーザの興味(例えば、ユーザプロファイルで指定されたユーザの興味、使用履歴に基づいて、など)、データ量(例えば、データの閾値量より少ないARコンテンツ120のみをダウンロードする)などに基づいてフィルタリングされ得る。このようにして、最も関連性の高いARコンテンツ120を選択し、関連性の低いARコンテンツ120を除外して、クライアントマシン120が最も関連性の高いARコンテンツ120のみを受信するようにすることができる。
【0069】
図3に描かれる別のAR機能は、「ARビューア」308機能である。この機能は、ユーザ106がARビューア308リンクを選択してARビューアを呼び出すことを可能にし、ARビューアは、本明細書では、ビデオゲームコンテンツ124のコンテキストからARコンテンツ120を表示することができるタイプのビデオゲーム104であると見なされる。例えば、ARビューアは、ARコンテンツ120を空白の背景に提示するか、またはゲームワールドのSLAMによって作成された3Dモデル(複数可)上のオーバーレイとして提示することができる。いずれにせよ、ARビューア308機能の使用は、ビデオゲーム104のロードに依存せず、したがって、PCゲームを実行するのに好適ではない可能性がある処理リソース(例えば、電話)を備えたクライアントマシン100上で実行され得る。例示的な例では、ユーザ106は、ARコンテンツ120で拡張されたビデオゲーム104をプレイしている間、友人が現在見ているものを見たいと思う可能性がある。ユーザ106は、その電話で、ARビューア308リンクを選択することができる。ARビューア308リンク、および友人の現在のゲームセッションへのサブリンクにより、クエリは、ゲームID、友人のゲームキャラクタが現在位置しているゲームワールド内の場所、およびカメラの向きとともにリモートコンピューティングシステム200に送信される。このデータに基づいて、リモートコンピューティングシステム200は、空間データベース204にアクセスし、そのカメラの向きでその場所で可視であるARコンテンツ120を返し得る。このARコンテンツ120は、ユーザの電話上で一連のフレームで(例えば、3Dで)提示することができ、ユーザ106は、友人が現在体験しているゲームワールドを走り回っている友人のキャラクタを見回して見ることができる。このようにして、ユーザ106は、友人が遠隔地で現在体験しているARコンテンツ120を観戦することができる。
【0070】
本明細書で説明するプロセスは、ロジックフローグラフ内のブロックの集合として示され、ハードウェア、ソフトウェア、またはそれらの組み合わせで実装できる一連の動作を表す。ソフトウェアのコンテキストでは、ブロックは、1つ以上のプロセッサによって実行されると、列挙された動作を実施するコンピュータ実行可能命令を表す。一般に、コンピュータ実行可能命令は、特定の機能を実施するか、または特定の抽象データタイプを実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。動作が説明される順序は、限定として解釈されることを意図するものではなく、説明される任意の数のブロックは、プロセスを実装するために任意の順序で、および/または並列に組み合わせることができる。
【0071】
図4は、作成者がARコンテンツを作成するためのコンテンツ作成インターフェースを提供し、作成されたARコンテンツを空間データベースに記憶し、1つ以上のフィルタリング基準に基づいて、選択したARコンテンツを要求側クライアントマシンに送信するための例示的なプロセス400の流れ図である。考察目的で、プロセス400を前の図を参照して説明する。
【0072】
402で、リモートコンピューティングシステム200は、ユーザコンピューティングデバイス220が新しいARコンテンツ120を作成するためのインターフェース(例えば、API)を提供することができる。このコンテンツ作成インターフェースは、本明細書に記載されるように、任意の好適なタイプのARコンテンツ120を作成するために、ユーザコンピューティングデバイス220を使用して作成者216によって使用可能であり得る。
【0073】
サブブロック404によって示されるように、いくつかの実施形態では、ブロック402でコンテンツ作成インターフェースを提供することにより、作成者216は、実行可能プログラム(複数可)への入力として提供されるビデオゲームデータ128に基づいて対話型ARコンテンツ120を生成するように構成された1つ以上の実行可能プログラム(例えば、プラグイン)を作成することが可能であり得る。そのようなビデオゲームデータ128は、これらに限定されないが、とりわけ、ビデオゲーム内のプレーヤ制御キャラクタまたは何らかの他のオブジェクトの現在の場所を指定する空間データ、ゲーム関連イベントの発生を示すイベントデータ(例えば、弾丸が発射される、ゲームキャラクタが車両のドアウェイに出入りするなど)を含み得る。
【0074】
406で、リモートコンピューティングシステム200は、インターフェースを介して、およびユーザコンピューティングデバイス220から、新しいARコンテンツ120を作成するための命令を受信することができる。これらの命令は、ビデオゲームのゲームID224、ARコンテンツ120がビデオゲーム、イベントデータなどのゲームワールド内に提示されるゲームワールド座標226などの特別なデータ227など、作成者216がARコンテンツのタイプおよびARコンテンツに関連する他のパラメータを指定することを可能にするグラフィカルユーザインターフェースの形態でインターフェースに提供されるユーザ入力を含み得る。
【0075】
408で、リモートコンピューティングシステム200は、新しいARコンテンツ120を空間データベース204に記憶することができる。サブブロック410によって示されるように、空間データベース204における新しいARコンテンツ120の記憶は、新しいARコンテンツ120を空間データベース204内の関連データと関連付けることを伴い得る。関連データは、これには限定されないが、ビデオゲームのゲームID224、ビデオゲームのゲームワールド内のゲームワールド座標226、ゲームワールド座標226がそうでなければ曖昧である場合にゲームワールド座標226の曖昧さを解消するためのインデックス228、カメラの向きデータ(例えば、キャプチャされたスクリーンショットに関連付けられたカメラの向き)、ピクセルデータ232(例えば、キャプチャされたスクリーンショットに関連付けられたピクセルデータ)、イベントデータなどを含み得る。
【0076】
サブブロック412によって示されるように、空間データベース204における新しいARコンテンツ120の記憶は、本明細書に記載されるように、新しいARコンテンツ120を1つ以上のARチャネル306と関連付けることを伴い得る。このようにして、ユーザ106は、ARチャネル306にサブスクライブして、ビデオゲームのゲームワールド内に表示することができる特定のARコンテンツ120を受信することができる。
【0077】
414で、リモートコンピューティングシステム200は、クライアントマシン100からコンピュータネットワーク218を介して、サブスクライブされたARチャネル(複数可)306としてARチャネル(複数可)306にサブスクライブするためのサブスクリプション要求をユーザアカウントから受信することができる。ARチャネル306の例は、図3を参照して本明細書に記載されている。
【0078】
416で、リモートコンピューティングシステム200は、クライアントマシン100からコンピュータネットワーク218を介して、ビデオゲーム104に関連付けられたビデオゲームデータ128を受信することができる。このビデオゲーム104は、クライアントマシン100を介して実行しているビデオゲームであり得る(例えば、クライアントマシン100上でビデオゲームクライアント116を起動し、ビデオゲームクライアント116を介してビデオゲーム104を実行し、ARコンポーネント102に、リモートコンピューティングシステム200にビデオゲームデータ128を送信させることによって)。
【0079】
418で、リモートコンピューティングシステム200は、空間データベース204に記憶されている利用可能なARコンテンツ120の中から、ビデオゲームデータ128に少なくとも部分的に基づいて、ゲーム固有のARコンテンツ120を識別し得る。例えば、空間データベース204内のARコンテンツ120のレコードは、クライアントマシン100上で実行している特定のビデオゲーム104のゲームID224、ゲームワールドのレンダリングされる部分に関連付けられる空間データ227などに関連付けられ得、そのARコンテンツ120は、クライアントマシン100上で実行している特定のビデオゲーム104、およびビデオゲームデータ128によって示されるビデオゲーム104の現在の状態に関連するので、ブロック418で識別され得る。
【0080】
サブブロック420で、リモートコンピューティングシステム200は、問題のユーザアカウントのサブスクライブされたARチャネル(複数可)306に基づいて、ブロック418で識別されたゲーム固有のARコンテンツ120をフィルタリングすることができる。これは、サブスクライブされたARチャネル306に関連付けられたゲーム固有のARコンテンツ120のサブセットをもたらす可能性がある。例えば、問題のビデオゲーム104に関連付けられたARコンテンツ120は、複数のARチャネル306に関係し得るので、問題のユーザアカウントがサブスクライブしていないARチャネル306を使用して、無関係なARコンテンツ120を除外することができ、残りのゲーム固有のARコンテンツ120のサブセットは、サブスクライブされたARチャネル(複数可)306に関連付けられたものであり得る。サブブロック422で、リモートコンピューティングシステム200は、1つ以上のフィルタリング基準に基づいてゲーム固有のARコンテンツ120をさらにフィルタリングして、最終的にクライアントマシン100に送信されるゲーム固有のARコンテンツ120のサブセットを取得することができる。ゲーム固有のARコンテンツ120のサブセットの人気が人気閾値よりも大きい場合、例示的なフィルタリング基準がブロック422で満たされ得る。この例では、人気は、ゲーム固有のARコンテンツ120のサブセットに関連付けられた視聴回数または賛成投票数のうちの少なくとも1つに基づいて、および/またはユーザの以前のアクティビティ、またはユーザのソーシャルネットワーク関係に基づいて決定され得る。ユーザアカウントに関連付けられたアクセス権に基づいて、ARコンテンツ120の作成日に基づいて(閾値年齢よりも古いARコンテンツをフィルタリングすること)、ユーザアカウントに関連付けられたユーザの興味に基づいて、時間帯に基づいて、クライアントマシン100またはユーザアカウントに関連付けられた地理的場所に基づいて、ゲーム固有のARコンテンツ120をフィルタリングすることなど、本明細書に記載されるような他のフィルタリング基準もまた企図される。
【0081】
424で、リモートコンピューティングシステム200は、コンピュータネットワーク218を介して、ゲーム固有のARコンテンツ120のサブセットを、要求側クライアントマシン100に送信することができる。このようにして、クライアントマシン100は、ビデオゲームの実行中に、拡張フレーム122内のビデオゲームコンテンツ124の「上」にレンダリングされ得る関連するARコンテンツ120へのアクセスを提供される。ネットワーク218を介してリアルタイムARコンテンツ120をクライアントマシン100に提供するために、ゲーム実行中に少なくともブロック416~424がリアルタイムで発生し得ることを理解されたい。いくつかの実施形態では、プロセス400は、ビデオゲームが実行を開始する時間の近くで実施され、その結果、クライアントマシン100は、ゲーム実行中にアクセスするためにローカルに記憶できるフィルタリングされたゲーム固有のARコンテンツ120を受信する。
【0082】
いくつかの実施形態では、ブロック418で、リモートコンピューティングシステム200は、空間データベース204に記憶され、ビデオゲームデータ128に少なくとも部分的に基づく利用可能なARコンテンツの中から、サブスクライブされていないARチャネル306に関連付けられたゲーム固有のARコンテンツ120の追加のサブセットをさらに識別することができる。このシナリオでは、ブロック424で、リモートコンピューティングシステム200はまた、ゲーム固有のARコンテンツの追加のサブセットを、ゲーム固有のARコンテンツのサブセットから視覚的に区別する方法で、クライアントマシン100上に提示するために、コンピュータネットワークを介して、ゲーム固有のARコンテンツ120の追加のサブセットをクライアントマシン100に送信することができる。すなわち、ユーザ106がまだサブスクライブしていないARコンテンツ120は、微細な方法で提示され得る(例えば、ユーザがそれをクリックすることに興味がある場合、ARコンテンツが利用可能であることを示す比較的小さなアイコンを介して)。このサブスクライブされていないARコンテンツは、ビデオゲームデータ128に基づいて空間的に関連し得る。
【0083】
図5は、ビデオゲーム104の実行中に、リモートコンピューティングシステム200からARコンテンツを受信し、ARコンテンツ120を含む拡張フレーム122を含むフレームをレンダリングするための例示的なプロセス500の流れ図である。考察目的で、プロセス500を前の図を参照して説明する。
【0084】
502で、クライアントマシン100は、コンピュータネットワーク218を介して、リモートコンピューティングシステム200に、サブスクライブされたARチャネル(複数可)306としてARチャネル(複数可)306にサブスクライブするためのサブスクリプション要求を送信することができる。ARチャネル306の例は、図3を参照して本明細書に記載されている。
【0085】
504で、クライアントマシン100は、ビデオゲーム104の実行を開始することができる。例えば、クライアントマシン100のユーザ106は、ビデオゲームクライアント116を起動し、ビデオゲームライブラリ118からビデオゲーム104を選択して、ビデオゲーム104の実行を開始することができる。
【0086】
506で、クライアントマシン100は、コンピュータネットワーク218を介して、リモートコンピューティングシステム200に、ビデオゲーム104のゲームID224を含む要求を送信することができる。これは、クライアントマシン100上でビデオゲーム104の実行を開始するユーザ106に応答する自動化された論理であり得る。ゲームID224は、リモートコンピューティングシステム200が、ゲームID224に関連付けられたゲーム固有のARコンテンツ120をルックアップすることを可能にする。
【0087】
508で、クライアントマシン100は、コンピュータネットワーク218を介して、関連データとともに、リモートコンピューティングシステム200からゲーム固有のARコンテンツ120のサブセットを受信することができる。ブロック508で受信されたゲーム固有のARコンテンツ120のサブセットは、ゲームID224およびサブスクライブされたARチャネル(複数可)306に少なくとも部分的に基づいて、リモートコンピューティングシステム200によって選択された可能性がある。したがって、ゲーム固有のARコンテンツ120のサブセットは、ビデオゲーム104とサブスクライブされたARチャネル(複数可)306との両方に関連付けられ得る。
【0088】
サブブロック510で、クライアントマシン100は、クライアントマシン100のローカルメモリに、関連データに関連するゲーム固有のARコンテンツ120のサブセットを記憶することができる。関連データは、これらに限定されないが、空間データ227、ピクセルデータ232、イベントデータなどを含み得、これらは、ゲーム実行中に、拡張フレーム122内の特定のARコンテンツ120をいつレンダリングするかを決定するために使用され得る。
【0089】
512で、クライアントマシン100は、ビデオゲームクライアント116を介して、ビデオゲーム104の実行中に一連のフレームをレンダリングすることができる。例えば、ビデオゲーム104が第1のプロセス(またはスレッド(複数可))で実行されるとき、ビデオゲーム104は、一連のフレームでビデオゲームコンテンツ124を出力することができる。一連のフレーム内の個々のフレームをレンダリングするためにブロック512で繰り返し実施され得る動作は、サブブロック514~524によって示されている。
【0090】
514で、ARコンポーネント102は、ビデオゲーム104とは別個のプロセス(例えば、スレッド(複数可))としてクライアントマシン100上でビデオゲームクライアント116を介して実行し、ビデオゲーム104から、ビデオゲーム104の現在の状態に関するビデオゲームデータ128を取得することができる。このビデオゲームデータ128は、ビデオゲーム104のゲームワールド内のゲームワールド座標226に関連する空間データ227であり得る。例えば、空間データ227は、ビデオゲーム104のゲームワールド内のプレーヤ制御キャラクタの現在の場所、今後のフレームでレンダリングされるゲームワールドの一部のゲームワールド座標のセット226、インデックス228、プレーヤ制御キャラクタに関連付けられた仮想カメラの現在の向きなどを指定してもよい。ビデオゲームデータ128は、ビデオゲーム104に関連付けられたゲーム関連イベントを指定するイベントデータであり得る。いくつかの実施形態では、ブロック514でビデオゲーム104からビデオゲームデータ128を取得することは、必要に応じて、フレームを拡張フレーム122としてレンダリングするためにARコンポーネント102からARコンテンツ120を要求するためにビデオゲーム104によって行われた関数呼び出しの一部として、ARコンポーネント102がビデオゲーム104からビデオゲームデータ128を受信することを含んでもよい。
【0091】
516で、フレームは、ARコンテンツ120のない通常のフレームとして(すなわち、ビデオゲームコンテンツ124のみで)レンダリングされ得る。518で、ARコンポーネント102は、ビデオゲームデータ128に基づいてARコンテンツ120を識別できるかどうかを決定することができる。例えば、ARコンポーネント102は、ブロック514で取得されたビデオゲームデータ128の少なくとも一部を、アクセス可能なARコンテンツ120とともに記憶された関連データ(例えば、クライアントマシン100がブロック508で受信したゲーム固有のARコンテンツ120のサブセット)と比較してもよい。ARコンポーネント102が、表示されるべき識別可能なARコンテンツ120がないと決定した場合、プロセス500は、ブロック518からの「いいえ」ルートをたどって、ブロック520の次のフレームに進むことができる。一方、ARコンポーネント102が、表示されるべき識別可能なARコンテンツ120があると決定した場合、ARコンポーネント102は、ビデオゲームデータ128に少なくとも部分的に基づいて(例えば、ビデオゲームデータ128をARコンテンツ120とともに記憶された関連データ比較することによって)ARコンテンツ120を識別し、プロセス500は、ブロック518からブロック522への「はい」ルートをたどることができる。ARコンテンツ120の識別は、ビデオゲーム104以外のソースから(例えば、クライアントマシン100のローカルメモリから、リモートコンピューティングシステム200からリアルタイムでなど)ARコンテンツ120を取り出し/受信することを含み得る。ネットワーク218を介したARコンテンツ120のリアルタイム取り出しの場合、ブロック508でのARコンテンツの受信は、ブロック518でのARコンテンツ120の識別と併せて(例えば、それに応答して)発生し得る。
【0092】
522で、クライアントマシン100は、ARコンポーネント102を介して、ビデオゲーム104によって出力されたビデオゲームコンテンツ124と、ブロック516で識別され、取り出されたARコンテンツ120と、を含む拡張フレーム122を生成することができる。前述のように、拡張フレーム122の生成は、ARコンテンツ120をビデオゲームコンテンツ124にオーバーレイすることを含み得る。いくつかの実施形態では、ブロック522での動作は、所与のフレームのビデオゲームコンテンツ124に関連付けられた深度データを取得すること、および深度データに少なくとも部分的に基づいて拡張フレーム122内のビデオゲームコンテンツ124およびARコンテンツ120をマージすることを含む。例えば、ARコンテンツ120は、いくつかのビデオゲームコンテンツ124(例えば、不透明なグラフィックス)の上、および他のビデオゲームコンテンツ124(例えば、半透明のグラフィックス)の下に階層化され得る。
【0093】
524で、クライアントマシン100は、ARコンポーネント102を介して、クライアントマシン100に関連付けられたディスプレイ(複数可)110上に拡張フレーム122をレンダリングし得、次いで、ブロック520からブロック514への矢印で示されるように、ブロック514~524を反復するために、ブロック520で次のフレームに進んでもよい。
【0094】
プレーヤ106は、1つ以上の異なるARチャネル306にサブスクライブすることによって、プロセス500中いつでもARチャネル306を効果的に変更することができ、これにより、クライアントマシン100は、新しいサブスクリプション要求をリモートコンピューティングシステム200に送信し、その結果、異なるまたは追加のARコンテンツ120は、新たにサブスクライブされたARチャネル(複数可)306に基づいて、リモートコンピューティングシステム200から受信することができる。このようにして、プレーヤ106は、ゲームプレイ中にARチャネル306を切り替えて、ビデオゲームの実行中に拡張フレーム122で提示される異なるARコンテンツ120を有することができる。
【0095】
図6は、ビデオゲーム104の実行中に空間的に関連するARコンテンツ120でフレームを拡張するための例示的なプロセス600の流れ図である。プロセス600の動作は、ビデオゲームの実行中にレンダリングされる一連のフレーム内の拡張フレームとして個々のフレームをレンダリングすることを伴い得る。考察目的で、プロセス600を前の図を参照して説明する。
【0096】
602で、ARコンポーネント102は、クライアントマシン100上でビデオゲームクライアント116を介して実行し、ビデオゲーム104から、ビデオゲーム104の現在の状態に関する空間データ227の形態のビデオゲームデータ128を取得することができる。例えば、ブロック602で取得された空間データ227は、これに限定されないが、ビデオゲーム104のゲームワールド内のプレーヤ制御キャラクタ126の現在の座標(すなわち、現在の場所)、今後のフレームでレンダリングされるゲームワールドの一部のゲームワールド座標のセット226、ゲームID224、状態228、仮想カメラの現在のカメラの向き(例えば、プレーヤ制御キャラクタ126に関連付けられた仮想カメラ)、またはそれらの任意の組み合わせなど、現在のゲームワールド座標に関連し得る。
【0097】
604で、ARコンポーネント102は、空間データ227に少なくとも部分的に基づいて、利用可能なARコンテンツ(例えば、リモートコンピューティングシステム200から受信されたゲーム固有のARコンテンツ120のサブセット)からARコンテンツ120を識別し得る。
【0098】
サブブロック606で、ARコンテンツ120は、受信された空間データ227におけるゲームワールド座標226に少なくとも部分的に基づいて識別され得る。例えば、ARコンポーネント102は、空間データ227のゲームワールド座標226のセットに含まれるか、またはプレーヤ制御キャラクタ126の現在の場所から閾値距離内にあり、仮想カメラの現在の向きから決定されるように、ゲームキャラクタ126の視野内にある、ゲームワールド座標226に関連付けられたARコンテンツ120を識別し得る。
【0099】
サブブロック610で、ARコンテンツ120は、空間データ227で指定されたゲームID224に少なくとも部分的に基づいて識別され得る。例えば、ARコンポーネント102は、空間データ227内のゲームID224と一致するゲームIDに関連付けられているARコンテンツ120を識別し得る。このゲームIDは、ゲームワールドが空間データ227で指定されたゲームワールド座標226の複数のインスタンスを含む場合、ゲームワールド座標226の複数のインスタンス間での曖昧さを解消するために使用可能であり得る。
【0100】
612で、クライアントマシン100は、ARコンポーネント102を介して、ブロック604で識別(および取り出し)されたARコンテンツ120(および場合によってはビデオゲーム104によって出力されるビデオゲームコンテンツ124)を含む拡張フレーム122を生成することができる。サブブロック614によって示されるように、識別されたARコンテンツ120が3Dスクリーンショット(例えば、深度データを含む画像)である場合、ブロック612での拡張フレーム122の生成は、3Dスクリーンショットに含まれるデータ(例えば、ピクセルデータの2Dアレイと深度バッファからの深度データ)に少なくとも部分的に基づいて、3Dスクリーンショットに呈されるゲームワールドの一部の3Dモデルを構築することを含み得る。結果として得られる3Dモデルは、ブロック612で拡張フレーム122内のビデオゲームコンテンツ124にオーバーレイすることができる。例えば、識別されたARコンテンツ120は、クライアントマシン上で現在実行しているビデオゲーム104のゲームワールドの3Dスクリーンショット、または異なるビデオゲームの異なるゲームワールドであり得る。いずれの場合も、3Dスクリーンショットは、別のゲーマー106が、おそらく以前に、3Dスクリーンショットがキャプチャされたその瞬間にゲームワールドの完全なコンテキストをキャプチャすることによって、キャプチャされた可能性がある。ARコンテンツ120としてビデオゲームコンテンツ124にオーバーレイされる構築された3Dモデルは、現在実行しているビデオゲーム104のプレーヤ106が構築された3Dモデルの周りをナビゲート(例えば、3Dスクリーンショットでキャプチャされたオブジェクトの周りを移動)して、他のゲーマー106によってキャプチャされたゲームワールドの「スライス」を、3Dスクリーンショットがキャプチャされたときに他のゲーマー106が見たものを模倣する方法で見ることを可能にし得る。サブブロック616によって示されるように、識別されたARコンテンツ120が複数の連続する3Dスクリーンショットである場合、ブロック612での拡張フレーム122の生成は、複数の連続する3Dスクリーンショットに少なくとも部分的に基づいて3Dビデオの再生を開始することを含み得る。
【0101】
618で、クライアントマシン100は、ARコンポーネント102を介して、クライアントマシン100に関連付けられたディスプレイ(複数可)110上に拡張フレーム122をレンダリングし、次いで、ビデオゲーム104の実行中に一連のフレームをレンダリングする反復プロセスの一部として次のフレームに進むことができる。
【0102】
図7は、ビデオゲーム104の実行中に動的および/または対話型ARコンテンツ120でフレームを拡張するための例示的なプロセス700の流れ図である。プロセス700の動作は、ビデオゲームの実行中にレンダリングされる一連のフレーム内の拡張フレームとして個々のフレームをレンダリングすること伴い得る。考察目的で、プロセス700を前の図を参照して説明する。
【0103】
702で、ARコンポーネント102は、クライアントマシン100上のビデオゲームクライアント116を介して実行され、本明細書で説明されるように、ビデオゲーム104の現在の状態に関するビデオゲームデータ128を取得することができる。サブブロック704によって示されるように、ビデオゲームデータ128を取得することは、今後のフレームでゲームワールドのレンダリングされる部分の3Dモデルを取得することを含み得る。この3Dモデルは、高密度で時間的に連続したビデオストリーム(例えば、深度バッファデータの有無にかかわらずカラーデータを含む)に基づいてビデオゲームのゲームワールドのための3Dモデルを以前に生成し、クライアントマシン100がオンデマンドでアクセスできるように、この3Dモデルを記憶した可能性があるリモートコンピューティングシステム200から取り出すことができる。SLAMプロセスは、オフラインで実施され、多くの画像からゲームワールドジオメトリ(例えば、ゲームワールドの3Dモデル)を漸進的に再構築するために使用され得る。このバックエンドプロセスは、ビデオゲームプラットフォームのサービスプロバイダによって、ゲーム開発者によって、および/またはプレーヤクライアントマシン100からゲームワールドの画像をクラウドソーシングすることによって行われ得る。
【0104】
706で、ARコンポーネント102は、ビデオゲームデータ128に少なくとも部分的に基づいて、利用可能なARコンテンツ(例えば、リモートコンピューティングシステム200から受信されたゲーム固有のARコンテンツ120のサブセット)からARコンテンツ120を識別し得る。ARコンテンツ120を識別するために、ARコンポーネント102は、ビデオゲームデータ128を使用して利用可能なARコンテンツからARコンテンツ120のレコードをルックアップし得、ARコンテンツ120のレコードが、動的および/または対話型ARコンテンツ120を生成するように構成された実行可能プログラムを提供することを決定し得る。この実行可能プログラムは、本明細書で説明されるように、プラグインを使用して作成された可能性がある。
【0105】
サブブロック708で、ARコンポーネント102は、ビデオゲームデータ128に少なくとも部分的に基づいて動的および/または対話型ARコンテンツ120を生成するように構成された実行可能プログラムへの入力としてビデオゲームデータ128(例えば、ブロック704で取得された3Dモデル)を提供し得る。いくつかの実施形態では、ARコンポーネント102は、セキュリティサンドボックスを作成し、クライアントマシン100のユーザ106がサブスクライブするARチャネル(複数可)に対応する1つ以上の実行可能プログラムまたはプラグイン(例えば、DLL)をロードし、プラグインへの入力としてビデオゲームデータ128を提供して、プラグインにそれぞれのロジックを実行させ、ARコンテンツ120を返すようにし得る。例えば、DLLのフォルダがあり得、各DLLは異なるプラグインを表す。ユーザ106がARチャネル(複数可)にサブスクライブすると、ARコンポーネント102は、セキュリティサンドボックス内に対応するDLL(複数可)をロードし、次いで、プロセス700を実行し、サブブロック708で、ARコンポーネント102は、ロードされた対応するDLL(複数可)への入力としてビデオゲームデータ128を提供し得る。
【0106】
サブブロック710で、ARコンポーネント102は、実行可能プログラム(複数可)からの出力として、識別されたARコンテンツを動的および/または対話型ARコンテンツ120として受信することができる。ARコンポーネント102はまた、実行可能プログラム(複数可)からの出力として、拡張フレーム122内に動的および/または対話型ARコンテンツ120を配置するための位置データを受信し得、位置データは、ゲームワールドのレンダリングされる部分の3Dモデルに少なくとも部分的に基づく。
【0107】
712で、クライアントマシン100は、ARコンポーネント102を介して、ビデオゲーム104によって出力されたビデオゲームコンテンツ124と、ブロック706で識別されたARコンテンツ120と、を含む拡張フレーム122を生成することができる。実行可能プログラムへの入力として3Dモデルを提供することにより、動的な(例えば、移動および/またはアニメーション化する)ARオブジェクトを、ゲームワールドのジオメトリおよび/またはトポロジに関して適切である方法でゲームワールドに自動的に注入できる。例えば、移動またはアニメーション化するARゲームキャラクタは、バリア、壁、ドアなどのゲームワールド内の仮想オブジェクトとの衝突を回避することによって、および/または壁に対して、床になど、ARコンテンツを配置することによって、ゲームワールド内で移動することができる。
【0108】
718で、クライアントマシン100は、ARコンポーネント102を介して、クライアントマシン100に関連付けられたディスプレイ(複数可)110上に拡張フレーム122をレンダリングし得、次いで、ビデオゲーム104の実行中に一連のフレームをレンダリングする反復プロセスの一部として次のフレームに進むことができる。
【0109】
図8は、開示されたARシステムを使用して、シングルプレーヤビデオゲームにマルチプレーヤアスペクトを追加するための例示的な技法を示す図である。図8では、第1のクライアントマシン100(1)および第2のクライアントマシン100(2)は各々、コンピュータネットワーク218を介して、リモートコンピューティングシステム200(図8には図示せず)と、および他のクライアントマシン100とデータを交換するために、コンピュータネットワーク218に接続されている。図8の例では、第1のプレーヤ106(1)は、第1のクライアントマシン100(1)上でビデオゲーム104をプレイしており、第2のプレーヤ106(2)もまた、第2のクライアントマシン100(2)上で同じビデオゲーム104をプレイしている。ビデオゲーム104は、いかなるネットワークコードもなく、各クライアントマシン100上で独立して実行することができ、その結果、ビデオゲーム104を実行するためにネットワーク接続に依存することはない。この意味で、各クライアントマシン上で実行されるビデオゲーム104は、いくつかの例では、個々のプレーヤ106が単独でプレイできるシングルプレーヤビデオゲームであり得る。
【0110】
しかしながら、ネットワーク接続は、図8に示されるように、リモートコンピューティングシステム200を介して、同じシングルプレーヤビデオゲーム104を実行しているクライアントマシン100間でデータ800を転送することを可能にする。これにより、ゲーム開発者に依存せずにシングルプレーヤビデオゲームにマルチプレーヤアスペクトを追加して、マルチプレーヤアスペクトをビデオゲームに組み込むことが可能であり、これは、コストのかかる作業である可能性がある。代わりに、ビデオゲーム104のコードは、ビデオゲーム104の現在の状態に関するデータ800を繰り返し放出するように構成され得る(例えば、フレームごと、2フレームごと、数フレームごとなどにデータ800を放出する)。第2のクライアントマシン100(2)上で実行しているビデオゲーム104から放出されるこのデータ800は、コンピュータネットワーク218を介して、ローカルARコンポーネント102を実行している第1のクライアントマシン100(1)に送信され得る。第1のクライアントマシン100(1)上のARコンポーネント102は、第2のクライアントマシン100(2)から送信されたデータ800を受信し得、データ800を処理して、第1のクライアントマシン100(1)上でレンダリングされたゲームワールドの第1のインスタンスにマルチプレーヤアスペクトを追加するARコンテンツ120(1)を含む拡張フレーム122を生成することができる。例えば、第2のプレーヤ106(2)のゲームキャラクタのゴースト画像をARコンテンツ120(1)として第1のクライアントマシン100(1)のスクリーン上にレンダリングして、第2のプレーヤ106(2)のゲームキャラクタが第1のプレーヤ106(1)のゲームキャラクタに対してどこにあるかを第1のプレーヤ106(1)が見ることができる「スピードランニング」のようなマルチプレーヤアスペクトを可能にすることができる。このようにして、第1のプレーヤ106(1)は、ビデオゲーム104自体のコードにマルチプレーヤアスペクトを実装する必要なしに、第2のプレーヤ106(2)と競争させることができる。ビデオゲーム104が各クライアントマシン100上でプレイされるときに、ネットワーク218を介してリアルタイムでデータ800を送信することによって、これらのマルチプレーヤアスペクトをリアルタイムで追加することができる。追加的に、または代替的に、第2のプレーヤ106(2)のゲームパフォーマンスは、後で第1のクライアントマシン100(1)上でビデオゲーム104の実行中にARコンテンツストリームとして保存し、再生することができる。このようにして、第1のクライアントマシン100(1)でのゲームプレイ中にフレームを拡張するために取り出され、使用されるARコンテンツ120(1)は、同じビデオゲーム104における第2のプレーヤ106(2)のゲームパフォーマンスのライブまたは再生ストリームであり得る。このようにして、第1のプレーヤ106(1)は、リアルタイムで競争することができ、および/または第1のプレーヤ106(1)は、第2のプレーヤ106(2)のゲームパフォーマンスの再生に対して何度も練習し続けることができる。いくつかの実施形態では、第1のクライアントマシン100(1)上でレンダリングされた拡張フレーム122を含むフレームは、第1のプレーヤ106(1)によって見られるように、他の人が競争体験を再生できるように、ビデオクリップとして保存され、リモートコンピューティングシステム200にアップロードされ得る。
【0111】
別のアスペクトでは、ゲームワールド802(2)は、第1のクライアントマシン100(1)上のゲームワールド802(1)にスティッチされて、2つのゲームワールド802(1)および802(2)の座標系を整列させるように、2つのゲームワールド802(1)および802(2)を効果的に一緒にミックスさせることができる。例えば、2つのプレーヤ制御キャラクタ826(1)および826(2)が、同じビデオゲーム104の同じゲームワールド内で互いに近くに(例えば、閾値距離内に)位置する場合、同時に、第1のクライアントマシン100(1)は、第2のクライアントマシン100(2)から、第2のゲームワールド802(2)の3Dスクリーンショット(複数可)を、3Dスクリーンショット(複数可)に描かれた第2のゲームワールド802(2)のその部分(複数可)の一連の座標とともに受信することができ、第1のクライアントマシン100(1)のARコンポーネント102は、2つのゲームワールドを一緒にミックスさせるために、受信されたスクリーンショットのグラフィックスを、第1のゲームワールド802(1)の現在の座標のセットと整列させることができる。例えば、第1のプレーヤ106(1)は、第2のゲームワールド802(2)において第2のプレーヤ106(2)によって見られるARコンテンツ120(2)としてオブジェクトを見ることができ得る。拡張フレーム122内の2つのゲームワールド802(1)と802(2)との間の違いは、ARコンテンツ120としてレンダリングされたオブジェクトまたはグラフィックスを強調表示することによって視覚的に示すことができる(例えば、異なる色を使用するなど)。図8では、2つのゲームワールド802(1)と802(2)との間の違いは、破線で示される第2のゲームワールド802(2)からのオブジェクトによって拡張フレーム122に示され、一方、第1のゲームワールド802(1)におけるオブジェクトは実線で示されている。ARコンテンツ120が、そうでなければ拡張フレーム122の中で何がARコンテンツ120であるかの識別を困難にする方法で第1のゲームワールド1002(1)にスティッチされているとき、視覚的な区別は、第1のプレーヤ106(1)がビデオゲームコンテンツ124とARコンテンツ120とを区別するのに役立つ可能性がある。
【0112】
図8に示される技法の動作を示すために、ここで図9を参照し、図9は、ARシステムを使用して、コンピュータネットワーク218を介したクライアントマシン100間でのデータ交換により、シングルプレーヤゲームにマルチプレーヤアスペクトを追加する例示的なプロセス900の流れ図である。ゲームワールド802(1)の第1のインスタンスが、第1のクライアントマシン上でビデオゲーム104の実行中に第1のクライアントマシン100(1)上でレンダリングされ、同じゲームワールド802(2)の第2のインスタンスが、第2のクライアントマシン100(2)上で同じビデオゲーム104の独立した実行中に第2のクライアントマシン100(2)上でレンダリングされているシナリオを検討する。図8に示すように、各クライアントマシン100上でのビデオゲーム104の独立した実行中に、第1のプレーヤ106(1)は、第1のプレーヤ制御キャラクタ826(1)を制御し得、一方で第2のプレーヤ106(2)は、第2のプレーヤ制御キャラクタ826(2)を制御し得る。
【0113】
902で、第1のクライアントマシン100(1)は、第2のクライアントマシン100(2)から、コンピュータネットワーク218を介して、ゲームワールド802(2)の第2のインスタンスとして第2のクライアントマシン100(2)上にレンダリングされたゲームワールド内で第2のプレーヤ制御キャラクタ826(1)の現在の場所を指定する空間データ227の形態のデータ800を受信することができる。
【0114】
904で、第1のクライアントマシン100(1)上で拡張フレーム122をレンダリングするために(例えば、参照番号122によって図8に示されるように)、第1のクライアントマシン100(1)上で実行しているARコンポーネント102は、第1のクライアントマシン100(1)上で実行しているビデオゲーム104からビデオゲームデータ128を取得することができ、ビデオゲームデータ128は、ゲームワールド802(1)の第1のインスタンスとして第1のクライアントマシン100(1)上でレンダリングされるビデオゲーム104のゲームワールドの一部に関連付けられた第1のゲームワールド座標226を指定する空間データ227の形態である。
【0115】
906で、第1のクライアントマシン100(1)のARコンポーネント102は、拡張フレーム122を生成する際に使用するARコンテンツ120を識別する。サブブロック908によって示されるように、ARコンテンツ120は、第2のプレーヤ制御キャラクタ826(2)の現在の場所が、第1のゲームワールド座標226に少なくとも部分的に基づいて第1のクライアントマシン100(1)のスクリーン上にレンダリングされるゲームワールドの一部内にあることを決定することによって識別され得る。サブブロック910によって示されるように、ARコンテンツ120は、第2のプレーヤ制御キャラクタ826(2)のARアバターとして取り出すことができる。例えば、第1のクライアントマシン100(1)は、(ビデオゲーム104の実行前または実行中に)リモートコンピューティングシステム200からARアバターの形態でARコンテンツ120を受信することができる。このようにして、ARアバターを含むARコンテンツのレコードは、第1のクライアントマシン100(1)からアクセス可能である。
【0116】
912で、第1のクライアントマシン100(1)は、ARコンポーネント102を介して、第1のクライアントマシン100(1)上で実行しているビデオゲーム104によって出力されるビデオゲームコンテンツ124と、ブロック906で識別(および取り出し)されたARコンテンツ120と、を含む拡張フレーム122を生成することができる。サブブロック914によって示されるように、拡張フレーム122の生成は、ビデオゲームコンテンツ124上のARコンテンツ120として、第2のプレーヤ制御キャラクタ826(2)の現在の場所に対応するゲームワールド802(1)の第1のインスタンス内のある場所で、第2のプレーヤ制御キャラクタ826(2)のARアバターを提示することを含み得る。
【0117】
916で、第1のクライアントマシン100(1)は、ARコンポーネント102を介して、第1のクライアントマシン100(1)に関連付けられたディスプレイ(複数可)110上に拡張フレーム122をレンダリングし得、次いで、ビデオゲーム104の実行中に一連のフレームをレンダリングする反復プロセスの一部として次のフレームに進むことができる。この拡張フレーム122の例を図8に示しており、拡張フレーム122内のARコンテンツ120は、ゲームワールドでのそのゲームキャラクタの現在の場所に対応するある場所にある、第2のプレーヤ制御キャラクタ826(2)のARアバターである。これにより、マルチプレーヤアスペクトを、シングルプレーヤゲームである可能性がある第1のクライアントマシン100(1)上で実行しているビデオゲームの拡張機能として追加することができる。
【0118】
図10は、開示されたARシステムを使用して、クライアントマシン間でゲームワールドのアスペクトを共有するための例示的な技法を示す図である。図10では、第1のクライアントマシン100(1)および第2のクライアントマシン100(2)は各々、コンピュータネットワーク218を介して、リモートコンピューティングシステム200(図10には図示せず)と、および他のクライアントマシン100とデータを交換するために、コンピュータネットワーク218に接続されている。図10の例では、第1のプレーヤ106(1)は、第1のクライアントマシン100(1)上でビデオゲーム104をプレイしており、第2のプレーヤ106(2)は、第2のクライアントマシン100(2)上でビデオゲーム104をプレイしている。各クライアントマシン100上で実行しているビデオゲーム104は、同じビデオゲームまたは異なるビデオゲームであり得、それらは、シングルプレーヤまたはマルチプレーヤビデオゲームであり得る。
【0119】
ネットワーク接続は、データだけでなく、リモートコンピューティングシステム200を介して、およびクライアントマシン100間でARコンテンツ120も転送することを可能にする。例えば、第2のクライアントマシン100(2)から第1のクライアントマシン100(1)に送信されるARコンテンツ120は、第2のクライアントマシン100(2)上でレンダリングされる第2のゲームワールド1002(2)の一部のスクリーンショット(例えば、2Dまたは3Dスクリーンショット)を表すことができる。このARコンテンツ120は、第2のクライアントマシン100(2)上でのビデオゲーム104の実行中に繰り返し送信することができる(例えば、フレームごと、2フレームごと、数フレームごとなど)。第1のクライアントマシン100(1)上のARコンポーネント102は、第2のクライアントマシン100(2)から送信されたARコンテンツ120を受信し得、ARコンテンツ120を使用して、受信されたARコンテンツ120を含む拡張フレーム(複数可)122を生成し得る。したがって、スクリーンショットの形態でのARコンテンツ120のネットワーク218を介したリアルタイム送信は、第1のクライアントマシン100(1)上でレンダリングされている第1のゲームワールド1002(1)内の第2のゲームワールド1002(2)の共有など、クライアントマシン間でのゲームワールドの共有を可能にする。例えば、第2のプレーヤ106(2)が第2のゲームワールド1002(2)の周りの第2のプレーヤ制御キャラクタ1026(2)の動きを制御すると、第2のプレーヤ制御キャラクタ1026(2)の視点から見た、第2のゲームワールド1002(2)のスクリーンショットを、ARコンテンツ120として、ネットワーク218を介して第1のクライアントマシン100(1)に送信することができる。第1のプレーヤ106(1)が第1のゲームワールド1002(1)の周りの第1のプレーヤ制御キャラクタ1026(1)の動きを制御すると、受信したスクリーンショットは、例えば第1のゲームワールド1002(1)の壁上の「ポータル」を介してスクリーンショットをレンダリングすることによって、ARコンテンツ120として拡張フレーム122に提示することができる。これにより、クライアントマシン間でのゲームワールドの共有に関連する異なるタイプの機能を可能にすることができる。
【0120】
例えば、ARコンテンツ120は、第1のプレーヤ106(1)に第2のゲームワールド1002(2)へのビューポートを提供することができる。このシナリオでは、第2のプレーヤ制御キャラクタ1026(2)の観点から見た、第2のゲームワールド1002(2)の1つ以上のスクリーンショットを、第1のクライアントマシン100(1)に送信して、第1のゲームワールド1002(1)内にARコンテンツ120として表示するようにしてもよい。一連のスクリーンショットをネットワーク218を介して送信して、第2のプレーヤ106(2)のゲームプレイのライブ観戦を可能にすることができる。例えば、第1のプレーヤ106(1)は、第2のゲームワールド1002(2)へのビューポートとして提示されるARコンテンツ120介して、第2のプレーヤ106(2)のゲームプレイを観戦することができ得る。ネットワーク218を介して送信される一連のスクリーンショットは、第2のプレーヤ制御キャラクタ1026(2)が第2のゲームワールド1002(2)を動き回るのを第1のプレーヤ106(1)が見ることができるように、第1のクライアントマシン100(1)上のARコンポーネント102を介してライブARビデオストリームとして提示することができる。第2のゲームワールド1002(2)への3Dビューポートを可能にするために、第1のクライアントマシン100(1)は、3Dスクリーンショット(複数可)の形態でARコンテンツ120を受信し得、第1のクライアントマシン100(1)上のARコンポーネント102は、3Dスクリーンショットに描かれたゲームワールド1002(2)の3Dモデルを構築し、および/または3Dスクリーンショットに関連付けられたカメラの向きに基づいて配置された3Dスクリーンショットを提示し得る。これにより、第1のプレーヤ106(1)は、第2のゲームワールド1002(2)の再構築された3Dモデルを見回し、および/または動き回って、第2のプレーヤ制御キャラクタ1026(2)の環境に関してさらにより詳細に見ることができる。
【0121】
クライアントマシン100間でゲームワールドを共有する別の例は、2つのゲームワールド1002(1)および1002(2)の座標系を整列させる方法で2つのゲームワールド1002(1)および1002(2)を一緒にスティッチ、またはミックスさせることを伴う。例えば、2つのプレーヤ制御キャラクタ1026(1)および1026(2)が、同じビデオゲーム104の同じゲームワールド内で互いに近くに(例えば、閾値距離内に)位置する場合、同時に、第1のクライアントマシン100(1)は、第2のクライアントマシン100(2)から、第2のゲームワールド1002(2)の3Dスクリーンショット(複数可)を、3Dスクリーンショット(複数可)に描かれた第2のゲームワールド1002(2)のその部分(複数可)の座標のセットとともに受信することができ、第1のクライアントマシン100(1)のARコンポーネント102は、2つのゲームワールドを一緒にミックスさせるために、受信されたスクリーンショットのグラフィックスを、第1のゲームワールド1002(1)の現在の座標のセットと整列させることができる。第1のプレーヤ制御キャラクタ1026(1)がゲームワールド内の第2のプレーヤ制御キャラクタ1026(2)と同じ場所に位置し、第1のプレーヤ106(1)が、第2のゲームワールド1002(2)における第2のプレーヤ106(2)が見た敵(ARコンテンツ120)の3Dレンダリングを見ることができることを想像する。拡張フレーム122内の2つのゲームワールド1002(1)と1002(2)との間の違いは、ARコンテンツ120としてレンダリングされたオブジェクトまたはグラフィックスを強調表示することによって視覚的に示すことができる(例えば、異なる色を使用するなど)。ARコンテンツ120が、そうでなければ拡張フレーム122の中で何がARコンテンツ120であるかの識別を困難にする方法で第1のゲームワールド1002(1)にスティッチされているとき、これは、第1のプレーヤ106(1)がビデオゲームコンテンツ124とARコンテンツ120とを区別するのに役立つ可能性がある。
【0122】
図10を参照して説明した技法の動作を示すために、ここで図11を参照し、図11は、ARシステムを使用して、クライアントマシン間でゲームワールドのアスペクトを共有するための例示的なプロセス1100の流れ図である。
【0123】
1102で、ARコンポーネント102は、第1のクライアントマシン100(1)上でビデオゲームクライアント116を介して実行され、本明細書で説明されるように、第1のクライアントマシン100(1)上で実行しているビデオゲーム104からビデオゲームデータ128を取得することができる。
【0124】
1104で、第1のクライアントマシン100(1)のARコンポーネント102は、拡張フレーム122を生成する際に使用するARコンテンツ120を識別する。サブブロック1106によって示されるように、ARコンテンツ120は、コンピュータネットワーク218を介して、第2のクライアントマシン100(2)からARコンテンツ120を受信することによって識別され得る。例えば、ARコンテンツ120は、第1のクライアントマシン100(1)上でレンダリングされたゲームワールド1002(1)と同じゲームワールドまたは異なるゲームワールドであり得る第2のクライアントマシン100(2)上でレンダリングされたゲームワールド1002(2)の一部のスクリーンショット(複数可)の形態であり得る。いくつかの実施形態では、ARコンテンツ120とともに、第1のクライアントマシン100(1)は、第2のクライアントマシン100(2)から、第2のクライアントマシン100(2)上でレンダリングされた第2のゲームワールド1002(2)のゲームワールド座標226に関連する空間データ227などの追加のデータ800を受信してもよい。これは、第2のゲームワールド1002(2)内の第2のプレーヤ制御キャラクタ1026(2)の現在の場所に対応する座標を含み得る。
【0125】
1108で、第1のクライアントマシン100(1)は、ARコンポーネント102を介して、ビデオゲーム104によって出力されたビデオゲームコンテンツ124と、ブロック1104で識別(および受信)されたARコンテンツ120と、を含む拡張フレーム122を生成することができる。いくつかの実施形態では、ブロック1102で取得されたビデオゲームデータ128は、ゲームワールド1002(1)の壁上にスクリーンショットの形態でARコンテンツ120が位置する、またはそうでなければ、ARコンテンツ120をゲームワールド1002(1)のオブジェクトに取り付けるなど、ARコンテンツ120が、レンダリングされる拡張フレーム122内にあるゲームワールド1002(1)のコンテキストで提供されることを可能にし得る。サブブロック1110、1112、および1114によって示されるように、拡張フレーム122の生成は、様々な方法で実装することができる。
【0126】
サブブロック1110で、第1のクライアントマシン100(1)のARコンポーネント102は、ブロック1106で受信されたARコンテンツ120(例えば、スクリーンショット(複数可))に少なくとも部分的に基づいて、第2のクライアントマシン100(2)上にレンダリングされたゲームワールド1002(2)へのビューポートを構築することができる。例えば、3Dスクリーンショットを使用して、第1のゲームワールド1002(1)においてARオブジェクトとしてレンダリングされたポータル内の第2のプレーヤ106(2)のゲームワールド1002(2)の3Dビューを再構築することができる。一連のスクリーンショットは、ARコンテンツ120のビデオストリームのようにレンダリングして、第2のプレーヤ106(2)のゲームプレイを観戦するために使用できるライブビューポートを提供することができる。いくつかの実施形態では、サブブロック1110で構築されたビューポートは、第2のゲームワールド1002(2)内の第2のクライアントマシン100(2)の第2のプレーヤ106(2)によって見られる他のARコンテンツ120を含み得る。
【0127】
サブブロック1112で、第1のクライアントマシン100(1)のARコンポーネント102は、第2のクライアントマシン100(2)から受信したゲームワールド座標226に少なくとも部分的に基づいて、第2のクライアントマシン100(2)上でレンダリングされたゲームワールド1002(2)を、第1のクライアントマシン100(1)上でレンダリングされたゲームワールド1002(1)と一緒にスティッチすることができる。例えば、ゲームワールドの両方のインスタンスが、ゲームワールド内の共通の場所から閾値距離内にある場合、現在のゲームワールド座標を整列させることができる。いくつかの実施形態では、ARコンテンツ120は、ゲームワールド1002(2)の3Dスクリーンショットの形態であり、これを使用して、この3Dスクリーンショットに関連付けられたカメラポーズを取得することができる。このカメラポーズは、ゲームワールド1002(1)内の他のARコンテンツ120(例えば、オブジェクト、ゲームキャラクタなど)を整列および/または配向するために使用することができる。
【0128】
1116で、第1のクライアントマシン100(1)は、ARコンポーネント102を介して、第1のクライアントマシン100(1)に関連付けられたディスプレイ(複数可)110上に拡張フレーム122をレンダリングし得、次いで、ビデオゲーム104の実行中に一連のフレームをレンダリングする反復プロセスの一部として次のフレームに進むことができる。
【0129】
図12は、ビデオゲームとクライアントマシン上で別個に実行しているARコンポーネントとの間でイベントを交換するための例示的なプロセス1200の流れ図である。
【0130】
1202で、ARコンポーネント102は、クライアントマシン100上で実行しているビデオゲーム104とは別個のプロセスとして、クライアントマシン100上のビデオゲームクライアント116を介して実行され得る。
【0131】
1204で、ARコンポーネント102は、ビデオゲーム104から1つ以上のゲーム放出イベントを受信することができる。例えば、ゲーム開発者は、ビデオゲームが実行中に放出するゲームイベントを指定することができ、ARコンテンツ120の作成者216は、ARコンテンツ120を生成し、ゲーム受け入れイベントをビデオゲーム104に返す目的のために、ビデオゲーム104で何が起こっているかを知るために、これらの「ゲーム放出イベント」にサブスクライブすることができる。
【0132】
1206で、ARコンポーネント102は、ARコンテンツ120を識別し得る。この識別は、実行可能プログラム(複数可)(例えば、プラグイン(複数可))への入力としてゲーム放出イベント(複数可)を提供することに基づき得る。いくつかの実施形態では、識別は、追加的に、または代替的に、ビデオゲーム104から取得されたビデオゲームデータ128(例えば、空間データ227)に基づき得る。
【0133】
1208で、ARコンポーネント102は、1つ以上のゲーム放出イベントを受信したことに応答して、1つ以上のゲーム受け入れイベントをビデオゲーム104に送信することができる。この場合も、ゲーム開発者は、ビデオゲーム104が受け入れることができるイベントを指定することができる。いくつかの実施形態では、実行可能プログラム(複数可)(例えば、プラグイン(複数可))は、入力として提供されるゲーム放出イベントに少なくとも部分的に基づいて、これらのゲーム受け入れイベントを出力することができる。
【0134】
1210で、クライアントマシン100は、ARコンポーネント102を介して、ビデオゲーム104によって出力されたビデオゲームコンテンツ124およびブロック1206で識別されたARコンテンツ120を含む拡張フレーム122を生成することができる。
【0135】
1212で、クライアントマシン100は、ARコンポーネント102を介して、クライアントマシン100に関連付けられたディスプレイ(複数可)110上に拡張フレーム122をレンダリングし得、次いで、ビデオゲーム104の実行中に一連のフレームをレンダリングする反復プロセスの一部として次のフレームに進むことができる。
【0136】
主題は構造的機能に特有の言語で説明されているが、添付の特許請求の範囲に定義された主題は、必ずしも説明された特定の機能に限定されるものではないことを理解されたい。むしろ、特定の機能は、特許請求の範囲を実装する例示的な形態として開示されている。
以下に、本出願の当初の特許請求の範囲に記載された発明を付記する。
[1]
クライアントマシンであって、
プロセッサと、
コンピュータ実行可能命令を記憶しているメモリと、を含み、前記コンピュータ実行可能命令は、前記プロセッサによって実行されると、前記クライアントマシンに、
一連のフレームでビデオゲームコンテンツを出力するビデオゲームを実行することと、
前記ビデオゲームとは別個のプロセスとして拡張現実(AR)コンポーネントを実行することと、
前記一連のフレームのうちの1つのフレームをレンダリングすることであって、前記レンダリングは、
前記ARコンポーネントによって、および前記ビデオゲームから、前記ビデオゲームの現在の状態に関するビデオゲームデータを取得すること、
前記ARコンポーネントによって、前記ビデオゲームデータに少なくとも部分的に基づいて、拡張現実(AR)コンテンツを識別すること、
前記ARコンポーネントによって、前記ビデオゲームコンテンツおよび前記ARコンテンツを含む拡張フレームを生成すること、ならびに
前記クライアントマシンに関連付けられたディスプレイ上に前記拡張フレームをレンダリングすることによって行われる、レンダリングすることと、を行わせる、クライアントマシン。
[2]
前記コンピュータ実行可能命令は、前記プロセッサによって実行されると、前記クライアントマシンに、
前記フレームをレンダリングする前に、
コンピュータネットワークを介して、リモートコンピューティングシステムに、サブスクライブされたARチャネルとしてARチャネルにサブスクライブするためのサブスクリプション要求を送信することと、
前記サブスクライブされたARチャネルに対応し、前記ビデオゲームデータに少なくとも部分的に基づいて、前記ARコンテンツを生成するように構成された1つ以上の実行可能プログラムをロードすることと、をさらに行わせ、
前記ARコンテンツを識別することは、
前記ビデオゲームデータを前記1つ以上の実行可能プログラムへの入力として提供することと、
前記1つ以上の実行可能プログラムからの出力として前記ARコンテンツを受信することと、を含む、[1]に記載のクライアントマシン。
[3]
前記ビデオゲームデータは、前記ビデオゲームのゲームワールドのレンダリングされる部分に関連付けられたゲームワールド座標を指定する空間データを含み、前記ARコンテンツは、前記ゲームワールド座標に少なくとも部分的に基づいて識別される、[1]に記載のクライアントマシン。
[4]
前記空間データは、ゲームワールド座標の複数のインスタンス間での曖昧さを解消するために使用可能なゲーム識別子(ID)をさらに指定し、前記ARコンテンツは、前記ゲームIDに少なくとも部分的に基づいて識別される、[3]に記載のクライアントマシン。
[5]
前記空間データは、プレーヤ制御キャラクタに関連付けられた仮想カメラの現在の向きをさらに指定し、前記ARコンテンツは、前記仮想カメラの前記現在の向きに少なくとも部分的に基づいて識別される、[3]に記載のクライアントマシン。
[6]
前記ARコンテンツは、前記ゲームワールドの一部または異なるビデオゲームの異なるゲームワールドの一部のうちの少なくとも1つのスクリーンショットである、[3]に記載のクライアントマシン。
[7]
前記スクリーンショットは、三次元(3D)スクリーンショットであり、前記拡張フレームを前記生成することは、
前記3Dスクリーンショットに関連付けられた深度バッファデータに少なくとも部分的に基づいて、前記3Dスクリーンショットから3Dモデルを構築することと、
前記拡張フレーム内の前記ビデオゲームコンテンツに前記3Dモデルをオーバーレイすることと、を含む、[6]に記載のクライアントマシン。
[8]
前記ARコンテンツは、複数の連続する三次元(3D)スクリーンショットであり、前記拡張フレームを前記生成することは、前記複数の連続する3Dスクリーンショットに少なくとも部分的に基づいて、3Dビデオの再生を開始することを含む、[5]に記載のクライアントマシン。
[9]
前記ビデオゲームから前記ビデオゲームデータを前記取得することは、前記ARコンポーネントによって、前記ビデオゲームによって行われた関数呼び出しの一部として前記ビデオゲームから前記ビデオゲームデータを受信することをさらに含む、[1]に記載のクライアントマシン。
[10]
方法であって、
クライアントマシンによって、ビデオゲームを実行することと、
前記クライアントマシンによって、一連のフレームのうちの1つのフレームをレンダリングすることであって、前記レンダリングすることは、
ゲームワールドのレンダリングされる部分に関連付けられた空間データを決定することであって、前記空間データは、前記ゲームワールドの前記レンダリングされる部分に関連付けられたゲームワールド座標、およびカメラの向きを含む、決定すること、
前記空間データに少なくとも部分的に基づいて拡張現実(AR)コンテンツを識別すること、
前記ARコンテンツを含む拡張フレームを生成すること、ならびに
前記クライアントマシンに関連付けられたディスプレイ上に前記拡張フレームをレンダリングすることによって行われる、レンダリングすることと、を含む、方法。
[11]
前記空間データを前記決定することは、前記ビデオゲームから、および前記ビデオゲームとは別個のプロセスとして前記クライアントマシン上で実行しているARコンポーネントによって、前記空間データを取得することを含み、前記ARコンテンツを前記識別することは、
前記空間データに少なくとも部分的に基づいて、前記ARコンテンツを生成するように構成された実行可能プログラムへの入力として、前記空間データを提供することと、
前記実行可能プログラムからの出力として前記ARコンテンツを受信することと、を含む、[10]に記載の方法。
[12]
前記空間データは、前記ゲームワールドの前記レンダリングされる部分の三次元(3D)モデルを含み、
前記実行可能プログラムへの前記入力として、前記空間データを前記提供することは、前記入力として、前記実行可能プログラムに前記3Dモデルを提供することを含み、
前記実行可能プログラムから受信された前記出力は、前記3Dモデルに従って前記拡張フレーム内に前記ARコンテンツを配置するための位置データを含む、[11]に記載の方法。
[13]
前記ビデオゲームとは別個のプロセスとしてARコンポーネントを実行することと、
前記ARコンポーネントによって、前記ビデオゲームから1つ以上のゲーム放出イベントを受信することと、
前記ARコンポーネントによって、前記1つ以上のゲーム放出イベントを前記受信することに応答して、1つ以上のゲーム受け入れイベントを前記ビデオゲームに送信することと、をさらに含む、[10]に記載の方法。
[14]
前記クライアントマシンは、第1のクライアントマシンであり、前記空間データは、前記ゲームワールドの第1のインスタンスとして、前記第1のクライアントマシン上にレンダリングされる前記ゲームワールドの前記レンダリングされる部分に関連付けられた前記ゲームワールド座標を指定する第1の空間データを含み、前記方法は、
コンピュータネットワークを介して、リモートコンピューティングシステムから、前記ゲームワールドの第2のインスタンスとして、第2のクライアントマシン上にレンダリングされた前記ゲームワールド内のプレーヤ制御キャラクタの現在の場所を指定する第2の空間データを受信することをさらに含み、
前記ARコンテンツを前記識別することは、
前記プレーヤ制御キャラクタの前記現在の場所が、前記ゲームワールド座標に少なくとも部分的に基づいて、前記ゲームワールドの前記レンダリングされる部分内にあることを決定することと、
前記プレーヤ制御キャラクタのARアバターを取り出すことと、を含み、
前記拡張フレームを前記生成することは、前記プレーヤ制御キャラクタの前記現在の場所に対応する前記ゲームワールドの前記第1のインスタンス内の場所で、前記拡張フレーム内の前記プレーヤ制御キャラクタの前記ARアバターを提示することを含む、[10]に記載の方法。
[15]
前記クライアントマシンは、第1のクライアントマシンであり、前記ARコンテンツを前記識別することは、コンピュータネットワークを介して、リモートコンピューティングシステムから、第2のクライアントマシン上にレンダリングされた前記ゲームワールドの一部の三次元(3D)スクリーンショットの形態で前記ARコンテンツを受信することを含み、前記拡張フレームを前記生成することは、前記3Dスクリーンショットに関連付けられた第2のカメラの向きに少なくとも部分的に基づいて、前記3Dスクリーンショットを配置することを含む、[10]に記載の方法。
[16]
前記クライアントマシンは、第1のクライアントマシンであり、前記ARコンテンツを前記識別することは、コンピュータネットワークを介して、リモートコンピューティングシステムから、第2のクライアントマシン上にレンダリングされた、前記ゲームワールドまたは異なるゲームワールドの一部のスクリーンショットの形態で前記ARコンテンツを受信することを含み、前記拡張フレームを前記生成することは、
前記スクリーンショットに少なくとも部分的に基づいて、前記第2のクライアントマシンにレンダリングされた前記ゲームワールドまたは前記異なるゲームワールドへのビューポートを構築することを含む、[10]に記載の方法。
[17]
前記ビューポートは、前記第2のクライアントマシン上にレンダリングされた前記ゲームワールドまたは前記異なるゲームワールド内の前記第2のクライアントマシンのユーザによって見られる他のARコンテンツを含む、[16]に記載の方法。
[18]
前記クライアントマシンは、第1のクライアントマシンであり、前記ARコンテンツを前記識別することは、コンピュータネットワークを介して、リモートコンピューティングシステムから、第2のクライアントマシン上にレンダリングされた、前記ゲームワールドの一部のスクリーンショットの形態で前記ARコンテンツを受信することを含み、前記拡張フレームを前記生成することは、
前記空間データに含まれる前記ゲームワールド座標および前記第2のクライアントマシンから受信された追加のゲームワールド座標に少なくとも部分的に基づいて、前記第2のクライアントマシン上にレンダリングされた前記ゲームワールドと前記第1のクライアントマシン上にレンダリングされた前記ゲームワールドとを一緒にスティッチすることを含む、[10]に記載の方法。
[19]
システムであって、
1つ以上のプロセッサと、
空間データベースに利用可能な拡張現実(AR)コンテンツおよび関連データ、ならびにコンピュータ実行可能命令を記憶しているメモリと、を含み、前記コンピュータ実行可能命令は、前記1つ以上のプロセッサによって実行されると、前記システムに、
コンピュータネットワークを介して、クライアントマシンから、サブスクライブされたARチャネルとしてARチャネルにサブスクライブするためのサブスクリプション要求をユーザアカウントから受信することと、
前記コンピュータネットワークを介して、前記クライアントマシンから、ビデオゲームに関連付けられたビデオゲームデータを含む前記ユーザアカウントからの要求を受信することと、
前記空間データベースに記憶されている前記利用可能なARコンテンツの中から、前記ビデオゲームデータに少なくとも部分的に基づいて、ゲーム固有のARコンテンツを識別することと、
前記サブスクライブされたARチャネルに基づいて、前記ゲーム固有のARコンテンツをフィルタリングして、前記サブスクライブされたARチャネルに関連付けられた前記ゲーム固有のARコンテンツのサブセットを取得することと、
前記コンピュータネットワークを介して、前記ゲーム固有のARコンテンツの前記サブセットを前記クライアントマシンに送信することと、を行わせる、システム。
[20]
前記コンピュータ実行可能命令は、前記1つ以上のプロセッサによって実行されると、前記システムに、
新しいARコンテンツを作成するために、ユーザコンピューティングデバイスにアプリケーションプログラミングインターフェース(API)を提供することと、
前記APIを介して、および前記コンピュータネットワークを介してユーザコンピューティングデバイスから、前記新しいARコンテンツを作成するための命令を受信することと、
前記新しいARコンテンツを前記空間データベースに記憶することと、をさらに行わせる、[19]に記載のシステム。
[21]
前記APIを提供することは、実行可能プログラムへの入力として提供される前記ビデオゲームデータに少なくとも部分的に基づいてARコンテンツを生成するように構成された前記実行可能プログラムを作成するために、前記ユーザコンピューティングデバイスに前記APIを提供することを含む、[20]に記載のシステム。
[22]
前記関連データは、
前記ビデオゲームのゲーム識別子(ID)と、
前記ビデオゲームのゲームワールド内のゲームワールド座標を指定する空間データと、を含む、[19]に記載のシステム。
[23]
前記コンピュータ実行可能命令は、前記1つ以上のプロセッサによって実行されると、前記システムに、前記ゲーム固有のARコンテンツをさらにフィルタリングして、人気の閾値よりも大きい前記ゲーム固有のARコンテンツの前記サブセットの人気に基づいて、前記ゲーム固有のARコンテンツの前記サブセットを取得することをさらに行わせ、前記人気は、前記ゲーム固有のARコンテンツの前記サブセットに関連付けられた視聴回数、前記ゲーム固有のARコンテンツの前記サブセットに関連付けられた賛成投票数、ユーザの以前のアクティビティ、または前記ユーザのソーシャルネットワーク関係のうちの少なくとも1つに基づいて決定される、[19]に記載のシステム。
[24]
前記APIを提供することは、前記新しいARコンテンツ、および/または作成者によって以前に作成されたARコンテンツに関連付けられたアクセス権を指定するために、前記新しいARコンテンツの前記作成者に前記APIを提供することを含む、[20]に記載のシステム。
[25]
前記APIを提供することは、1つ以上のビデオゲームに関連付けられた既存のスクリーンショットまたはビデオクリップにARコンテンツを追加するために、前記ユーザコンピューティングデバイスに前記APIを提供することを含む、[20]に記載のシステム。
[26]
前記コンピュータ実行可能命令は、前記1つ以上のプロセッサによって実行されると、前記システムに、
前記空間データベースに記憶され、前記ビデオゲームデータに少なくとも部分的に基づく前記利用可能なARコンテンツの中から、サブスクライブされていないARチャネルに関連付けられた前記ゲーム固有のARコンテンツの追加のサブセットを識別することと、
前記ゲーム固有のARコンテンツの前記追加のサブセットを、前記ゲーム固有のARコンテンツの前記サブセットから視覚的に区別する方法で、前記クライアントマシン上に提示するために、前記コンピュータネットワークを介して、前記ゲーム固有のARコンテンツの前記追加のサブセットを前記クライアントマシンに送信することと、をさらに行わせる、[19]に記載のシステム。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12