(57)【要約】  ＡＲシステムは、ビデオゲームでＡＲを提供できる。開示のＡＲシステムは、ビデオゲームの組込機能上にＡＲコンテンツを階層化し、ゲーマーに独特の「ゲーム内」ＡＲ体験を提供できる。遠隔演算システムは、ＡＲコンテンツ、およびＡＲコンテンツで拡張フレームをレンダリングするために選択したクライアントマシンからアクセスされ得る関連データの中央データウェアハウスを提供する。ＡＲコンテンツは、ゲーム世界内の適切な場所にレンダリングされる空間的に関連するＡＲコンテンツでもよい。ＡＲコンテンツは、ゲーム関連イベントに応じてＡＲコンテンツが追加されるように、イベント固有でもよい。開示のＡＲシステムは、シングルプレーヤゲームにマルチプレーヤアスペクトを追加し、および／またはＡＲコンテンツをリアルタイムで共有して、観戦、ゲーム世界のミックス、および／またはＡＲオブジェクトを介した瞬間移動などの拡張機能を提供できる。【選択図】図１
2022502759.tif 000002
【特許請求の範囲】
【請求項１】
クライアントマシンであって、
プロセッサと、
コンピュータ実行可能命令を記憶しているメモリと、を含み、前記コンピュータ実行可能命令は、前記プロセッサによって実行されると、前記クライアントマシンに、
一連のフレームでビデオゲームコンテンツを出力するビデオゲームを実行することと、
前記ビデオゲームとは別個のプロセスとして拡張現実（ＡＲ）コンポーネントを実行することと、
前記一連のフレームのうちの１つのフレームをレンダリングすることであって、前記レンダリングは、
前記ＡＲコンポーネントによって、および前記ビデオゲームから、前記ビデオゲームの現在の状態に関するビデオゲームデータを取得すること、
前記ＡＲコンポーネントによって、前記ビデオゲームデータに少なくとも部分的に基づいて、拡張現実（ＡＲ）コンテンツを識別すること、
前記ＡＲコンポーネントによって、前記ビデオゲームコンテンツおよび前記ＡＲコンテンツを含む拡張フレームを生成すること、ならびに
前記クライアントマシンに関連付けられたディスプレイ上に前記拡張フレームをレンダリングすることによって行われる、レンダリングすることと、を行わせる、クライアントマシン。
【請求項２】
前記コンピュータ実行可能命令は、前記プロセッサによって実行されると、前記クライアントマシンに、
前記フレームをレンダリングする前に、
コンピュータネットワークを介して、リモートコンピューティングシステムに、サブスクライブされたＡＲチャネルとしてＡＲチャネルにサブスクライブするためのサブスクリプション要求を送信することと、
前記サブスクライブされたＡＲチャネルに対応し、前記ビデオゲームデータに少なくとも部分的に基づいて、前記ＡＲコンテンツを生成するように構成された１つ以上の実行可能プログラムをロードすることと、をさらに行わせ、
前記ＡＲコンテンツを識別することは、
前記ビデオゲームデータを前記１つ以上の実行可能プログラムへの入力として提供することと、
前記１つ以上の実行可能プログラムからの出力として前記ＡＲコンテンツを受信することと、を含む、請求項１に記載のクライアントマシン。
【請求項３】
前記ビデオゲームデータは、前記ビデオゲームのゲームワールドのレンダリングされる部分に関連付けられたゲームワールド座標を指定する空間データを含み、前記ＡＲコンテンツは、前記ゲームワールド座標に少なくとも部分的に基づいて識別される、請求項１に記載のクライアントマシン。
【請求項４】
前記空間データは、ゲームワールド座標の複数のインスタンス間での曖昧さを解消するために使用可能なゲーム識別子（ＩＤ）をさらに指定し、前記ＡＲコンテンツは、前記ゲームＩＤに少なくとも部分的に基づいて識別される、請求項３に記載のクライアントマシン。
【請求項５】
前記空間データは、プレーヤ制御キャラクタに関連付けられた仮想カメラの現在の向きをさらに指定し、前記ＡＲコンテンツは、前記仮想カメラの前記現在の向きに少なくとも部分的に基づいて識別される、請求項３に記載のクライアントマシン。
【請求項６】
前記ＡＲコンテンツは、前記ゲームワールドの一部または異なるビデオゲームの異なるゲームワールドの一部のうちの少なくとも１つのスクリーンショットである、請求項３に記載のクライアントマシン。
【請求項７】
前記スクリーンショットは、三次元（３Ｄ）スクリーンショットであり、前記拡張フレームを前記生成することは、
前記３Ｄスクリーンショットに関連付けられた深度バッファデータに少なくとも部分的に基づいて、前記３Ｄスクリーンショットから３Ｄモデルを構築することと、
前記拡張フレーム内の前記ビデオゲームコンテンツに前記３Ｄモデルをオーバーレイすることと、を含む、請求項６に記載のクライアントマシン。
【請求項８】
前記ＡＲコンテンツは、複数の連続する三次元（３Ｄ）スクリーンショットであり、前記拡張フレームを前記生成することは、前記複数の連続する３Ｄスクリーンショットに少なくとも部分的に基づいて、３Ｄビデオの再生を開始することを含む、請求項５に記載のクライアントマシン。
【請求項９】
前記ビデオゲームから前記ビデオゲームデータを前記取得することは、前記ＡＲコンポーネントによって、前記ビデオゲームによって行われた関数呼び出しの一部として前記ビデオゲームから前記ビデオゲームデータを受信することをさらに含む、請求項１に記載のクライアントマシン。
【請求項１０】
方法であって、
クライアントマシンによって、ビデオゲームを実行することと、
前記クライアントマシンによって、一連のフレームのうちの１つのフレームをレンダリングすることであって、前記レンダリングすることは、
ゲームワールドのレンダリングされる部分に関連付けられた空間データを決定することであって、前記空間データは、前記ゲームワールドの前記レンダリングされる部分に関連付けられたゲームワールド座標、およびカメラの向きを含む、決定すること、
前記空間データに少なくとも部分的に基づいて拡張現実（ＡＲ）コンテンツを識別すること、
前記ＡＲコンテンツを含む拡張フレームを生成すること、ならびに
前記クライアントマシンに関連付けられたディスプレイ上に前記拡張フレームをレンダリングすることによって行われる、レンダリングすることと、を含む、方法。
【請求項１１】
前記空間データを前記決定することは、前記ビデオゲームから、および前記ビデオゲームとは別個のプロセスとして前記クライアントマシン上で実行しているＡＲコンポーネントによって、前記空間データを取得することを含み、前記ＡＲコンテンツを前記識別することは、
前記空間データに少なくとも部分的に基づいて、前記ＡＲコンテンツを生成するように構成された実行可能プログラムへの入力として、前記空間データを提供することと、
前記実行可能プログラムからの出力として前記ＡＲコンテンツを受信することと、を含む、請求項１０に記載の方法。
【請求項１２】
前記空間データは、前記ゲームワールドの前記レンダリングされる部分の三次元（３Ｄ）モデルを含み、
前記実行可能プログラムへの前記入力として、前記空間データを前記提供することは、前記入力として、前記実行可能プログラムに前記３Ｄモデルを提供することを含み、
前記実行可能プログラムから受信された前記出力は、前記３Ｄモデルに従って前記拡張フレーム内に前記ＡＲコンテンツを配置するための位置データを含む、請求項１１に記載の方法。
【請求項１３】
前記ビデオゲームとは別個のプロセスとしてＡＲコンポーネントを実行することと、
前記ＡＲコンポーネントによって、前記ビデオゲームから１つ以上のゲーム放出イベントを受信することと、
前記ＡＲコンポーネントによって、前記１つ以上のゲーム放出イベントを前記受信することに応答して、１つ以上のゲーム受け入れイベントを前記ビデオゲームに送信することと、をさらに含む、請求項１０に記載の方法。
【請求項１４】
前記クライアントマシンは、第１のクライアントマシンであり、前記空間データは、前記ゲームワールドの第１のインスタンスとして、前記第１のクライアントマシン上にレンダリングされる前記ゲームワールドの前記レンダリングされる部分に関連付けられた前記ゲームワールド座標を指定する第１の空間データを含み、前記方法は、
コンピュータネットワークを介して、リモートコンピューティングシステムから、前記ゲームワールドの第２のインスタンスとして、第２のクライアントマシン上にレンダリングされた前記ゲームワールド内のプレーヤ制御キャラクタの現在の場所を指定する第２の空間データを受信することをさらに含み、
前記ＡＲコンテンツを前記識別することは、
前記プレーヤ制御キャラクタの前記現在の場所が、前記ゲームワールド座標に少なくとも部分的に基づいて、前記ゲームワールドの前記レンダリングされる部分内にあることを決定することと、
前記プレーヤ制御キャラクタのＡＲアバターを取り出すことと、を含み、
前記拡張フレームを前記生成することは、前記プレーヤ制御キャラクタの前記現在の場所に対応する前記ゲームワールドの前記第１のインスタンス内の場所で、前記拡張フレーム内の前記プレーヤ制御キャラクタの前記ＡＲアバターを提示することを含む、請求項１０に記載の方法。
【請求項１５】
前記クライアントマシンは、第１のクライアントマシンであり、前記ＡＲコンテンツを前記識別することは、コンピュータネットワークを介して、リモートコンピューティングシステムから、第２のクライアントマシン上にレンダリングされた前記ゲームワールドの一部の三次元（３Ｄ）スクリーンショットの形態で前記ＡＲコンテンツを受信することを含み、前記拡張フレームを前記生成することは、前記３Ｄスクリーンショットに関連付けられた第２のカメラの向きに少なくとも部分的に基づいて、前記３Ｄスクリーンショットを配置することを含む、請求項１０に記載の方法。
【請求項１６】
前記クライアントマシンは、第１のクライアントマシンであり、前記ＡＲコンテンツを前記識別することは、コンピュータネットワークを介して、リモートコンピューティングシステムから、第２のクライアントマシン上にレンダリングされた、前記ゲームワールドまたは異なるゲームワールドの一部のスクリーンショットの形態で前記ＡＲコンテンツを受信することを含み、前記拡張フレームを前記生成することは、
前記スクリーンショットに少なくとも部分的に基づいて、前記第２のクライアントマシンにレンダリングされた前記ゲームワールドまたは前記異なるゲームワールドへのビューポートを構築することを含む、請求項１０に記載の方法。
【請求項１７】
前記ビューポートは、前記第２のクライアントマシン上にレンダリングされた前記ゲームワールドまたは前記異なるゲームワールド内の前記第２のクライアントマシンのユーザによって見られる他のＡＲコンテンツを含む、請求項１６に記載の方法。
【請求項１８】
前記クライアントマシンは、第１のクライアントマシンであり、前記ＡＲコンテンツを前記識別することは、コンピュータネットワークを介して、リモートコンピューティングシステムから、第２のクライアントマシン上にレンダリングされた、前記ゲームワールドの一部のスクリーンショットの形態で前記ＡＲコンテンツを受信することを含み、前記拡張フレームを前記生成することは、
前記空間データに含まれる前記ゲームワールド座標および前記第２のクライアントマシンから受信された追加のゲームワールド座標に少なくとも部分的に基づいて、前記第２のクライアントマシン上にレンダリングされた前記ゲームワールドと前記第１のクライアントマシン上にレンダリングされた前記ゲームワールドとを一緒にスティッチすることを含む、請求項１０に記載の方法。
【請求項１９】
システムであって、
１つ以上のプロセッサと、
空間データベースに利用可能な拡張現実（ＡＲ）コンテンツおよび関連データ、ならびにコンピュータ実行可能命令を記憶しているメモリと、を含み、前記コンピュータ実行可能命令は、前記１つ以上のプロセッサによって実行されると、前記システムに、
コンピュータネットワークを介して、クライアントマシンから、サブスクライブされたＡＲチャネルとしてＡＲチャネルにサブスクライブするためのサブスクリプション要求をユーザアカウントから受信することと、
前記コンピュータネットワークを介して、前記クライアントマシンから、ビデオゲームに関連付けられたビデオゲームデータを含む前記ユーザアカウントからの要求を受信することと、
前記空間データベースに記憶されている前記利用可能なＡＲコンテンツの中から、前記ビデオゲームデータに少なくとも部分的に基づいて、ゲーム固有のＡＲコンテンツを識別することと、
前記サブスクライブされたＡＲチャネルに基づいて、前記ゲーム固有のＡＲコンテンツをフィルタリングして、前記サブスクライブされたＡＲチャネルに関連付けられた前記ゲーム固有のＡＲコンテンツのサブセットを取得することと、
前記コンピュータネットワークを介して、前記ゲーム固有のＡＲコンテンツの前記サブセットを前記クライアントマシンに送信することと、を行わせる、システム。
【請求項２０】
前記コンピュータ実行可能命令は、前記１つ以上のプロセッサによって実行されると、前記システムに、
新しいＡＲコンテンツを作成するために、ユーザコンピューティングデバイスにアプリケーションプログラミングインターフェース（ＡＰＩ）を提供することと、
前記ＡＰＩを介して、および前記コンピュータネットワークを介してユーザコンピューティングデバイスから、前記新しいＡＲコンテンツを作成するための命令を受信することと、
前記新しいＡＲコンテンツを前記空間データベースに記憶することと、をさらに行わせる、請求項１９に記載のシステム。
【請求項２１】
前記ＡＰＩを提供することは、実行可能プログラムへの入力として提供される前記ビデオゲームデータに少なくとも部分的に基づいてＡＲコンテンツを生成するように構成された前記実行可能プログラムを作成するために、前記ユーザコンピューティングデバイスに前記ＡＰＩを提供することを含む、請求項２０に記載のシステム。
【請求項２２】
前記関連データは、
前記ビデオゲームのゲーム識別子（ＩＤ）と、
前記ビデオゲームのゲームワールド内のゲームワールド座標を指定する空間データと、を含む、請求項１９に記載のシステム。
【請求項２３】
前記コンピュータ実行可能命令は、前記１つ以上のプロセッサによって実行されると、前記システムに、前記ゲーム固有のＡＲコンテンツをさらにフィルタリングして、人気の閾値よりも大きい前記ゲーム固有のＡＲコンテンツの前記サブセットの人気に基づいて、前記ゲーム固有のＡＲコンテンツの前記サブセットを取得することをさらに行わせ、前記人気は、前記ゲーム固有のＡＲコンテンツの前記サブセットに関連付けられた視聴回数、前記ゲーム固有のＡＲコンテンツの前記サブセットに関連付けられた賛成投票数、ユーザの以前のアクティビティ、または前記ユーザのソーシャルネットワーク関係のうちの少なくとも１つに基づいて決定される、請求項１９に記載のシステム。
【請求項２４】
前記ＡＰＩを提供することは、前記新しいＡＲコンテンツ、および／または作成者によって以前に作成されたＡＲコンテンツに関連付けられたアクセス権を指定するために、前記新しいＡＲコンテンツの前記作成者に前記ＡＰＩを提供することを含む、請求項２０に記載のシステム。
【請求項２５】
前記ＡＰＩを提供することは、１つ以上のビデオゲームに関連付けられた既存のスクリーンショットまたはビデオクリップにＡＲコンテンツを追加するために、前記ユーザコンピューティングデバイスに前記ＡＰＩを提供することを含む、請求項２０に記載のシステム。
【請求項２６】
前記コンピュータ実行可能命令は、前記１つ以上のプロセッサによって実行されると、前記システムに、
前記空間データベースに記憶され、前記ビデオゲームデータに少なくとも部分的に基づく前記利用可能なＡＲコンテンツの中から、サブスクライブされていないＡＲチャネルに関連付けられた前記ゲーム固有のＡＲコンテンツの追加のサブセットを識別することと、
前記ゲーム固有のＡＲコンテンツの前記追加のサブセットを、前記ゲーム固有のＡＲコンテンツの前記サブセットから視覚的に区別する方法で、前記クライアントマシン上に提示するために、前記コンピュータネットワークを介して、前記ゲーム固有のＡＲコンテンツの前記追加のサブセットを前記クライアントマシンに送信することと、をさらに行わせる、請求項１９に記載のシステム。
【発明の詳細な説明】
【関連出願の相互参照】
【０００１】
これは、２０１８年９月２６日に出願された「ＡＵＧＭＥＮＴＥＤ  ＲＥＡＬＩＴＹ（ＡＲ）ＳＹＳＴＥＭ  ＦＯＲ  ＰＲＯＶＩＤＩＮＧ  ＡＲ  ＩＮ  ＶＩＤＥＯ  ＧＡＭＥＳ」と題された米国特許出願第１６／１４３，１９２号の優先権を主張するＰＣＴ出願であり、該ＰＣＴ出願は、参照によりその全体が本明細書に組み込まれる。
【背景技術】
【０００２】
拡張現実（ＡＲ）技術は、従来、シースルーディスプレイに表示されるコンピュータ生成コンテンツで実世界の環境を拡張することを伴う。このようにして、このようなＡＲデバイスのユーザは、実世界の環境に存在する現実のオブジェクトのコンテキストで、コンピュータ生成コンテンツを見ることができる。これまでのところ、ＡＲ技術は主に、実世界の拡張に限定されてきた。本明細書で行われる開示は、これらおよび他の考慮事項に関して提示されている。
【図面の簡単な説明】
【０００３】
詳細な説明を、添付の図を参照して説明する。図では、参照番号の左端の数字（複数可）は、参照番号が最初に現れる図を指す。異なる図における同じ参照番号の使用は、類似または同一のコンポーネントまたは機能を示す。
【０００４】
【図１】ビデオゲームの実行中に拡張フレームをレンダリングするように構成された拡張現実（ＡＲ）コンポーネントを有するクライアントマシンの例示的なコンポーネントを示すブロック図を示し、拡張フレームは、ビデオゲームコンテンツおよび拡張現実（ＡＲ）コンテンツを含む。
【０００５】
【図２】ＡＲコンテンツがビデオゲームで使用するためにクライアントマシンに選択的にプロビジョニングされるように、空間データベースにおいてＡＲコンテンツを作成および維持するために、リモートコンピューティングシステムのコンポーネントを含む例示的なシステムを示す図である。
【０００６】
【図３】クライアントマシンによって受信されるＡＲコンテンツを決定するＡＲチャネルにクライアントマシンがサブスクライブできる例示的なシステムを示す図である。
【０００７】
【図４】作成者がＡＲコンテンツを作成するためのコンテンツ作成インターフェースを提供し、作成されたＡＲコンテンツを空間データベースに記憶し、１つ以上のフィルタリング基準に基づいて、選択したＡＲコンテンツを要求側クライアントマシンに送信するための例示的なプロセスの流れ図である。
【０００８】
【図５】ビデオゲームの実行中に、リモートコンピューティングシステムからＡＲコンテンツを受信し、ＡＲコンテンツを含む拡張フレームを含むフレームをレンダリングするための例示的なプロセスの流れ図である。
【０００９】
【図６】ビデオゲームの実行中に空間的に関連するＡＲコンテンツでフレームを拡張するための例示的なプロセスの流れ図である。
【００１０】
【図７】ビデオゲームの実行中に動的および／または対話型ＡＲコンテンツでフレームを拡張するための例示的なプロセスの流れ図である。
【００１１】
【図８】開示されたＡＲシステムを使用して、シングルプレーヤビデオゲームにマルチプレーヤアスペクトを追加するための例示的な技法を示す図である。
【００１２】
【図９】ＡＲシステムを使用して、コンピュータネットワークを介したクライアントマシン間でのデータ交換により、シングルプレーヤゲームにマルチプレーヤアスペクトを追加するための例示的なプロセスの流れ図である。
【００１３】
【図１０】開示されたＡＲシステムを使用して、クライアントマシン間でゲームワールドのアスペクトを共有するための例示的な技法を示す図である。
【００１４】
【図１１】ＡＲシステムを使用して、クライアントマシン間でゲームワールドのアスペクトを共有するための例示的なプロセスの流れ図である。
【００１５】
【図１２】ビデオゲームとクライアントマシン上で別個に実行しているＡＲコンポーネントとの間でイベントを交換するための例示的なプロセスの流れ図である。
【発明を実施するための形態】
【００１６】
本明細書で説明されるのは、とりわけ、ビデオゲームにおいて拡張現実（ＡＲ）を提供するための技法、デバイス、およびシステムである。前述のように、ＡＲは従来、実世界（すなわち、ユーザの物理的環境）でのユーザエクスペリエンスを向上させるために使用可能な技術と見なされている。本明細書で開示されるＡＲシステムは、実世界ではなく、ビデオゲームのゲームワールドで、ユーザエクスペリエンスを向上させる。開示されたＡＲシステムは、ビデオゲームの組み込み機能の上にＡＲコンテンツを階層化することを可能にする。このゲーム内ＡＲシステムは、作成者が任意のビデオゲームまたは複数のビデオゲーム用のＡＲコンテンツを作成することにより、ゲーマーに独特の「ゲーム内」ＡＲエクスペリエンスを提供できるという意味で普遍的である。そうすることで、開示されたＡＲシステムは、ゲーム開発者が自分のゲームに同じタイプの拡張機能を提供する負担を軽減する。自分のデバイスに任せた場合、ゲーム開発者は、自分のＡＲシステムをカスタム構築することになる可能性があり、ゲーム固有であり、他のゲーム開発者がリリースした他のゲームと互換性のないＡＲシステムになる可能性がある。対照的に、開示されたゲーム内ＡＲシステムは、複数の異なるビデオゲームと互換性がある。
【００１７】
開示されたゲーム内ＡＲシステムは、とりわけ、ＡＲコンテンツおよび関連データのための中央データウェアハウスとして機能するリモートコンピューティングシステムを含み得る。いくつかの実施形態では、リモートコンピューティングシステムは、ＡＲコンテンツを様々なデータ（例えば、ゲーム識別子（ＩＤ）、ビデオゲームのゲームワールド座標に関連する空間データ、ゲーム関連イベントを指定するイベントデータなど）に関連付ける空間データベースにＡＲコンテンツを維持する。追加的に、または代替的に、ＡＲコンテンツは、ＡＲコンテンツのフィルタリング基準として機能する関連付けられたＡＲチャネルであり得る。
【００１８】
リモートコンピューティングシステムは、作成者が新しいＡＲコンテンツを作成するためのインターフェースをさらに提供し得、その後、リモートコンピューティングシステムによって維持され、ゲーム内ＡＲエクスペリエンスでビデオゲームを拡張したいゲーマーの選択されたオーディエンスにアクセスできるようにする。このコンテンツ作成インターフェースは、これらに限定されないが、情報メッセージ、二次元（２Ｄ）オブジェクト、三次元（３Ｄ）オブジェクト、２Ｄおよび／または３Ｄピクセルデータを含むスクリーンショット、ビデオクリップなどを含む、異なるタイプのＡＲコンテンツの作成をサポートし得る。ＡＲコンテンツは「静的」であり得、したがって、ゲームワールド内の固定された場所にレンダリングされる。ＡＲコンテンツは「動的」であり得、したがって、ゲームワールド内で移動またはアニメーション化される。いくつかの実施形態では、ＡＲコンテンツは、作成者がプログラムへの入力としてリアルタイムビデオゲームデータに応答する実行可能プログラムを作成することを可能にするプラグインを使用することによって対話型にすることさえできる。このようにして、ビデオゲームのプレーヤは、ゲームワールドに追加されたＡＲコンテンツを体験できるだけでなく、いくつかの場合には、コアビデオゲームのゲームワールド内で二次ビデオゲームをプレイするのとよく似て、ＡＲコンテンツと対話することができる。
【００１９】
ゲームワールド内でＡＲコンテンツをレンダリングするために、クライアントマシンは、ＡＲコンテンツへのアクセスを取得し得、ビデオゲームをクライアントマシン上で実行している間に、必要に応じて、ゲームワールド内の関連するＡＲコンテンツを識別し、レンダリングすることができる。クライアントマシンは、任意の好適な記憶場所から（例えば、コンピュータネットワークを介してリモートコンピューティングシステムから、リモートコンピューティングシステムからＡＲコンテンツをダウンロードした後ローカルメモリから）ＡＲコンテンツにアクセスすることができる。例示的なプロセスでは、クライアントマシンは、一連のフレームでビデオゲームコンテンツを出力するように構成されたビデオゲームを実行することができる。ゲームの実行中、クライアントマシンは、（ｉ）ビデオゲームから、ビデオゲームの現在の状態に関するビデオゲームデータを取得すること、（ｉｉ）ビデオゲームデータに少なくとも部分的に基づいてＡＲコンテンツを識別すること、（ｉｉｉ）ビデオゲームコンテンツと識別されたＡＲコンテンツとの両方を含む拡張フレームを生成すること、および（ｉｖ）クライアントマシンに関連付けられたディスプレイ上に拡張フレームをレンダリングすることによって、一連のフレームのうちの任意の所与のフレームをＡＲコンテンツで拡張することができる。特に、ＡＲコンテンツは、クライアントマシン上で実行しているビデオゲームによって生成されるのではなく、ビデオゲームコンテンツの「上」にＡＲコンテンツを階層化することにより、拡張フレームのレンダリングで取り出すためにＡＲコンテンツを維持する別個のリソースから取り出される。ここでは、ＡＲコンテンツがビデオゲームコンテンツの「上」に階層化されていると述べられることが多いが、一部のビデオゲームコンテンツ（例えば、半透明のグラフィックス）がＡＲコンテンツの「上」にレンダリングされるように、任意の好適な方法で、ＡＲコンテンツがビデオゲームコンテンツとマージされ得るため、これは文字通りに解釈されないものとする。
【００２０】
いくつかの実施形態では、実行中のビデオゲームから取得され、フレームを拡張するための関連するＡＲコンテンツを識別するために使用されるビデオゲームデータは、ビデオゲームのゲームワールド内のゲームワールド座標に関連する空間データであり得る。例えば、ＡＲコンテンツは、何らかの方法で、プレーヤ制御キャラクタの現在の場所に関連するゲームワールドの座標との関連付けに基づいて識別され得る。このようにして、空間的に関連するＡＲコンテンツは、ビデオゲームのゲームワールド内のある場所に、拡張フレーム内にビデオゲームコンテンツとともにレンダリングすることができる。いくつかの実施形態では、ビデオゲームデータはまた、ゲーム関連のイベントに関連するイベントデータとすることができる。例えば、ＡＲコンテンツは、ゲーム関連のイベント（例えば、銃から発射されたショット、車両に出入りするゲームキャラクタなど）の発生に基づいて、ゲームワールド内で識別され、かつレンダリングされ得る。
【００２１】
開示されたＡＲシステムはまた、様々なマルチプレーヤアスペクトでシングルプレーヤビデオゲームを拡張することを可能にする。これは、マルチプレーヤゲームにするために、シングルプレーヤゲームのコードをオーバーホールすることなく実現され得る。このようなマルチプレーヤアスペクトを可能にするために、クライアントマシンは、コンピュータネットワークを介してデータを交換してもよい。例えば、ビデオゲームを実行している第１のクライアントマシンをリモートコンピューティングシステムに接続してもよく、その結果、第１のクライアントマシンは、リモートコンピューティングシステムを介して、同じくビデオゲームを実行している第２のクライアントマシンによって放出されたデータを受信することができる。第２のクライアントマシン上で実行しているビデオゲームによって放出されるデータは、第２のクライアントマシン上にレンダリングされているゲームワールドの第２のインスタンス内の第２のプレーヤ制御キャラクタの現在の場所を指定する空間データであり得る。ネットワークを介してこの空間データを受信すると、第１のクライアントマシンは、ＡＲコンテンツ（例えば、第２のプレーヤ制御キャラクタのＡＲアバター）を識別し、取り出すことができ、第１のクライアントマシンは、第１のクライアントマシン上にレンダリングされているゲームワールドの第１のインスタンス内に、取り出されたＡＲコンテンツをレンダリングすることができ、ＡＲコンテンツは、受信された空間データに対応するゲームワールド内のある場所にレンダリングされる。例として、この技法は、そうでなければシングルプレーヤゲームに「スピードランニング」を追加することを可能にし得、それにより、第１のクライアントマシンを使用する第１のプレーヤは、第１のプレーヤのビデオゲームのビデオゲームコンテンツにオーバーレイされる第２のプレーヤのゲームキャラクタのＡＲアバターを見る。
【００２２】
いくつかの実施形態では、開示されたＡＲシステムは、３Ｄスクリーンショット（すなわち、深度データを含む画像）からゲームワールドの一部のモデルを構築（または再構築）することができる。この場合、ＡＲコンテンツは３Ｄスクリーンショットである可能性があり、第１のゲーマーが第２のゲーマーによってキャプチャされたゲームワールドの「スライス」を見回し、および／または動き回ることができるように、３Ｄスクリーンショットでキャプチャされたゲームワールドの一部の３Ｄモデルを構築することができる。ゲームワールドのこの３Ｄスライスは、ビデオゲームをプレイしている間、第１のゲーマーのクライアントマシン上の拡張フレーム１２２内にレンダリングすることができる。
【００２３】
いくつかの実施形態では、開示されたゲーム内ＡＲシステムは、異なるゲーマーのクライアントマシン間でコンピュータネットワークを介してＡＲコンテンツのリアルタイム共有を可能にし得る。例えば、ＡＲコンテンツは、第１のビデオゲームでビューポートとして、またはさらにはポータルとして、別のプレーヤのビデオゲームのゲームワールドにレンダリングすることができる。この技法では、特定の３Ｄスクリーンショットに呈されるゲームワールドの一部の３Ｄモデルを構築するために、３Ｄスクリーンショットを使用し得る。これにより、ゲーマーは、他のビデオゲームの仮想ゲームワールドへのウィンドウとして各ビデオゲームでレンダリングされるＡＲコンテンツを介して互いに対話することができる。
【００２４】
本明細書に記載の技法およびシステムは、１つ以上のデバイスが、処理リソース、メモリリソース、および／またはネットワーキングリソースに関してリソースを節約することを可能にし得る。例えば、コンピュータネットワークを介して実際のコンテンツ（例えば、画像および／またはビデオファイル）の代わりにデータを送信すると、少なくとも、帯域幅消費が高いコンピュータネットワークを介してコンテンツのストリームを送信する現在使用されているライブゲームストリーミング技術と比較して、ネットワーク帯域幅消費が低減される。別の例として、クライアントマシンへのＡＲコンテンツの選択的ダウンロードは、ビデオゲームの実行中にＡＲコンテンツを取り出し、かつレンダリングするように構成されたローカルクライアントマシンによる、および／またはその上でのネットワーク帯域幅消費および／またはメモリ消費を低減し得る。他の例は、本開示全体を通して記載されている。
【００２５】
図１は、ビデオゲーム１０４の実行中に拡張フレームをレンダリングするように構成された拡張現実（ＡＲ）コンポーネント１０２を有するクライアントマシン１００の例示的なコンポーネントを示すブロック図を示し、拡張フレームは、ビデオゲームコンテンツおよびＡＲコンテンツを含む。一般に、図１に示されるクライアントマシン１００は、入っているプログラムおよび他のソフトウェアを実行するためにユーザ１０６によって利用され得るコンピューティングデバイスを表すことができる。図１に示されるように、クライアントマシン１００のユーザ１０６は、クライアントマシン１００上で実行している、またはリモートコンピューティングシステム上で実行しており、ストリーミングされたビデオゲーム１０４としてクライアントマシン１００上でプレイ可能であるビデオゲーム１０４をプレイする特定の目的のためにユーザ１０６がクライアントマシン１００を使用するコンテキストで、本明細書では多くの場合「プレーヤ」と呼ばれる。したがって、「ユーザ１０６」、「プレーヤ１０６」、および／または「ゲーマー１０６」という用語は、クライアントマシン１００のユーザを示すために、本明細書では互換的に使用されてもよく、クライアントマシンの多くの用途の１つは、ビデオゲームをプレイすることである。
【００２６】
クライアントマシン１００は、これらに限定されないが、ＰＣ、デスクトップコンピュータ、ラップトップコンピュータ、携帯電話（例えば、スマートフォン）、タブレットコンピュータ、携帯情報端末（ＰＤＡ）、ウェアラブルコンピュータ（例えば、仮想現実（ＶＲ）ヘッドセット、拡張現実（ＡＲ）ヘッドセット、スマートグラスなど）、車載（例えば、車内）コンピュータ、テレビ（スマートテレビ）、セットトップボックス（ＳＴＢ）、ゲームコンソール、および／または任意の同様のコンピューティングデバイスを含む、関連するディスプレイ上でグラフィックスを処理およびレンダリングするように構成された任意の好適なタイプのコンピューティングデバイスとして実装することができる。
【００２７】
示される実装形態では、クライアントマシン１００は、他のコンポーネントの中でもとりわけ、中央処理装置（複数可）（ＣＰＵ（複数可））およびグラフィックス処理装置（複数可）（ＧＰＵ（複数可））などの１つ以上のプロセッサ１０８、ディスプレイ（複数可）１１０、メモリ１１２（または非一時的コンピュータ可読媒体１１２）、および通信インターフェース（複数可）１１４を含む。図１の例示的なクライアントマシン１００は、クライアントマシン１００が埋め込みディスプレイ１１０を含むことを示唆しているが、クライアントマシン１００は、実際にはディスプレイを省略してもよいが、代わりに、周辺ディスプレイに結合され得る。したがって、ディスプレイ１１０は、クライアントマシン１００に埋め込まれているか、または（有線または無線プロトコルを介して）それに接続されているかにかかわらず、関連するディスプレイ１１０を表すことを意味している。
【００２８】
メモリ１１２（または非一時的コンピュータ可読媒体１１２）は、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなど、情報の記憶のための任意の方法または技術で実装される、揮発性および不揮発性メモリ、着脱可能媒体および着脱不能媒体を含み得る。そのようなメモリは、これらに限定されるものではないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリもしくは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）もしくは他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、ＲＡＩＤストレージシステム、または所望の情報を記憶するために使用することができ、かつコンピューティングデバイスからアクセスすることができる任意の他の媒体を含む。コンピュータ可読媒体１１２は、コンピュータ可読記憶媒体（「ＣＲＳＭ」）として実装されてもよく、これは、メモリ１１２に記憶された命令を実行するためにプロセッサ（複数可）１０８によってアクセス可能な任意の利用可能な物理媒体であってもよい。１つの基本的な実装形態では、ＣＲＳＭには、ランダムアクセスメモリ（「ＲＡＭ」）およびフラッシュメモリを含んでもよい。他の実装形態では、ＣＲＳＭは、読み取り専用メモリ（「ＲＯＭ」）、電気的に消去可能なプログラム可能な読み取り専用メモリ（「ＥＥＰＲＯＭ」）、または所望の情報を記憶するために使用することができ、かつプロセッサ（複数可）１０８によってアクセスすることができる任意の他の有形媒体を含み得るが、これらに限定されない。
【００２９】
以下でより詳細に説明するように、クライアントマシン１００は、通信インターフェース（複数可）１１４を介してコンピュータネットワークを介してリモートコンピューティングシステムと通信することができる。したがって、通信インターフェース（複数可）１１４は、有線インフラストラクチャ（例えば、同軸ケーブル、光ファイバケーブルなど）、無線インフラストラクチャ（例えば、無線周波数（ＲＦ）、セルラー、衛星など）、および／または他の接続技術を介して通信するための任意の好適な通信プロトコルを採用してもよい。
【００３０】
いくつかの実施形態では、図２に示されるリモートコンピューティングシステム２００などのリモートコンピューティングシステムは、プログラム（およびコンテンツ）を、クライアントマシン１００などのクライアントマシンに配信（例えば、ダウンロード）するためのプラットフォームとして機能するか、またはそれにアクセスできる。したがって、クライアントマシン１００は、メモリ１１２にインストールされたビデオゲームクライアント１１６を有するものとして図１に示されている。ビデオゲームクライアント１１６は、ビデオゲーム（またはビデオゲームプログラム）などのプログラムを起動および実行するように構成された実行可能クライアントアプリケーションを表し得る。言い換えれば、ビデオゲームクライアント１１６は、クライアントマシン１００上でビデオゲームをプレイするために使用可能なゲームソフトウェアを含み得る。ビデオゲームクライアント１１６がインストールされた状態で、クライアントマシン１００は、次いで、コンピュータネットワークを介してリモートシステムからビデオゲームを受信（例えば、ダウンロード、ストリーミングなど）し、ビデオゲームクライアント１１６を介してビデオゲームを実行する能力を有し得る。ビデオゲームがクライアントマシン１００上でダウンロードおよび実行のために個々に購入可能である直接購入モデル、サブスクリプションベースのモデル、ビデオゲームが一定期間レンタルまたはリースされるコンテンツ配信モデルなど、任意のタイプのコンテンツ配信モデルをこの目的に利用することができる。したがって、クライアントマシン１００は、ビデオゲームライブラリ１１８内に、ビデオゲーム１０４など１つ以上のビデオゲームを含むことができる。これらのビデオゲームは、ビデオゲームクライアント１１６をロードすることによって取り出し、実行することができる。一例では、ユーザは、ビデオゲームクライアント１１６をロードし、ビデオゲーム１０４を選択してビデオゲーム１０４の実行を開始することによって、購入してビデオゲームライブラリ１１８にダウンロードした複数のビデオゲームのうちの１つをプレイすることを選択し得る。ビデオゲームクライアント１１６は、ユーザ１０６が資格情報（例えば、ユーザアカウント、パスワードなど）を使用してビデオゲームサービスにログインすることを可能にし得る。
【００３１】
図２のリモートコンピューティングシステム２００などのリモートコンピューティングシステムは、拡張現実（ＡＲ）コンテンツ１２０をクライアントマシン１００などのクライアントマシンに配信（例えば、ストリーミング、ダウンロードなど）するためのプラットフォームとしてさらに機能するか、またはそれにアクセスすることができる。したがって、クライアントマシン１００は、ＡＲコンテンツ１２０がローカルメモリ１１２からアクセス可能であるように、ＡＲコンテンツ１２０がローカルメモリ１１２に記憶されているものとして示されている。一般に、このＡＲコンテンツ１２０は、コンピュータネットワークを介してリモートシステム２００から受信（例えば、ダウンロード、ストリーミングなど）することができ、ビデオゲーム１０４自体によって出力されるビデオゲームコンテンツに追加されたＡＲコンテンツ１２０を含む拡張フレームをレンダリングするプロセスで使用することができる。したがって、ＡＲコンテンツ１２０は、リモートで（例えば、リモートコンピューティングシステム２００で）維持され、コンピュータネットワークを介してアクセスされ得る。図１は、ビデオゲーム１０４の実行中に複数のフレームのうちの１つとしてレンダリングされ得る例示的な拡張フレーム１２２を示す。本明細書で使用される場合、「フレーム」は、ディスプレイ上にライブビデオゲームをレンダリングするための一連の画像フレーム内の多くの画像フレームのうちの１つである画像フレームを意味する。したがって、拡張フレーム１２２は、ビデオゲームコンテンツ１２４とＡＲコンテンツ１２０との両方を含む複合フレームである。特に、ＡＲコンテンツ１２０は、ビデオゲーム１０４自体によって生成されないコンテンツを表す。したがって、ＡＲコンテンツ１２０は、事後にビデオゲームコンテンツに追加される補足的なコンピュータ生成グラフィックスを表す。したがって、図１のビデオゲームコンテンツ１２４は、クライアントマシン１００上で実行している間にビデオゲーム１０４自体によって出力される一連のフレームのうちの１つのビデオゲームコンテンツを表す。この意味で、ビデオゲーム１０４の「ゲームワールド」は、座標系によって定義され得、一連のフレームの各フレームにレンダリングされるゲームワールドの一部は、ゲームワールド内のプレーヤ制御キャラクタ１２６の現在の場所を含む様々な要因に依存し得る。ゲームワールドの座標系は、ゲームワールド内の場所に対応する座標を定義することができる。図１は、プレーヤ１０６がゲームワールド内のゲームキャラクタ１２６の動きを制御することを可能にするファーストパーソンシュータビデオゲーム１０４の例を示している。例えば、プレーヤ１０６は、クライアントマシン１００に（例えば、ゲームコントローラ、タッチスクリーンなどを介して）ユーザ入力を提供して、プレーヤ制御キャラクタ１２６をある場所から別の場所に移動させることができ、各場所は、プレーヤ制御キャラクタ１２６が任意の所与の瞬間にゲームワールド内のどこに位置するかを示す特定の座標の用語で指定される。
【００３２】
以下でより詳細に説明するように、クライアントマシン１００にアクセス可能なＡＲコンテンツ１２０は、特定のビデオゲーム１０４のゲームワールドの特定の座標を指定し得る空間データに関連付けられて記憶され得る。このようにして、ビデオゲーム１０４が、特定のＡＲコンテンツ１２０に関連付けられた座標を含むゲームワールドの一部をレンダリングするときはいつでも、ＡＲコンテンツ１２０は、それらの座標との関連付けに基づいて識別され得、それらの座標に対応するゲームワールド内のある場所に提示されたＡＲコンテンツ１２０を含む拡張フレーム１２２を生成するために、識別されたＡＲコンテンツ１２０が使用され得る。
【００３３】
クライアントマシン１００がゲーム内ＡＲを提供するためにどのように動作し得るかを示すために、クライアントマシン１００に関連付けられたディスプレイ（複数可）１１０上にレンダリングされる一連のフレームのうちの１つのフレームを検討する。所与のフレームをレンダリングするために、クライアントマシン１００上で実行しているＡＲコンポーネント１０２は、ビデオゲーム１０４から、ビデオゲーム１０４の現在の状態に関するビデオゲームデータ１２８を取得し、ビデオゲームデータ１２８（ローカルまたはリモートでＡＲコンテンツ１２０にアクセスするために図１の矢印１３０によって示されるように）に少なくとも部分的に基づいてＡＲコンテンツ１２０を識別し、ビデオゲーム１０４によって出力されたビデオゲームコンテンツ１２４およびビデオゲームデータ１２８に基づいて識別されたＡＲコンテンツ１２０を含む拡張フレーム１２２を生成し、ディスプレイ（複数可）１１０上に拡張フレーム１２２をレンダリングし得る。
【００３４】
ＡＲコンポーネント１０２は、ビデオゲーム１０４の実行とは別個に実行され得、その結果、ビデオゲーム１０４がクラッシュするイベントでは、ＡＲコンポーネント１０２は、クラッシュせず、逆もまた同様である。この意味で、ＡＲコンポーネント１０２は、ＡＲコンテンツ１２０を任意のビデオゲーム１０４に追加してユーザエクスペリエンスを向上させることができるように、複数のビデオゲームと互換性があり、複数のビデオゲーム間で転送可能なＡＲコンポーネント１０２を含むＡＲシステムを有する能力を提供する、クライアントマシン１００上で実行している任意の特定のビデオゲーム１０４から分離されている。例えば、ＡＲコンポーネント１０２は、ビデオゲーム１０４とは別個のプロセスとして実行され得（例えば、ビデオゲーム１０４のものとは別個の．ｅｘｅ）、ＡＲコンポーネント１０２およびビデオゲーム１０４は、前後に通信し得る。ＡＲプロセスは、複数のビデオゲームおよび／または複数の非ゲームアプリケーションと一度に通信できる可能性がある。このＡＲプロセスは、プラグインを含むこともできるか、またはプラグインをロードするように構成することもできる。これらのプラグインは、セキュリティサンドボックス（またはコンテナ）内で実行され得る。ビデオゲーム１０４からのＡＲコンポーネント１０２のこの分離は、安定性を提供し、ビデオゲーム１０４は、ＡＲプロセスをクラッシュさせず、逆もまた同様である。ＡＲコンテンツ１２０をレンダリングするためのサードパーティプラグインコードは、サンドボックス化されて分離されているため、ビデオゲーム１０４と同じプロセスで実行されないため、セキュリティは別の利点であり、それにより、ＡＲシステムでの不正行為のいかなる可能性を軽減する。いくつかの実施形態では、以下でより詳細に説明される「ＡＲビューア」の形態のビデオゲームは、ユーザ１０６がビデオゲームコンテンツ１２４のコンテキストの外でＡＲコンテンツ１２０を観戦することを可能にし得る。例えば、「ＡＲビューア」は、空白の背景またはゲームワールドの３Ｄモデル表現上のＡＲコンテンツ１２０にアクセスし、それをレンダリングすることができる。
【００３５】
図１の例では、ビデオゲームデータ１２８に基づいて識別されたＡＲコンテンツ１２０は、第１のＡＲコンテンツ１２０（１）および第２のＡＲコンテンツ１２０（２）を含む。第１のＡＲコンテンツ１２０（１）は、例として、スクリーンショット（例えば、２Ｄまたは３Ｄ画像）であり、第２のＡＲコンテンツ１２０（２）は、例として、情報メッセージである。第１のＡＲコンテンツ１２０（１）は、ゲームワールド内の第１の座標に関連付けられ得、第２のＡＲコンテンツ１２０（２）は、ゲームワールド内の第２の座標に関連付けられ得る。このシナリオでは、ビデオゲーム１０４から取得されたビデオゲームデータ１２８は、ゲームワールド内のプレーヤ制御キャラクタ１２６の現在の場所を指定する空間データ、および場合によっては、プレーヤ制御キャラクタ１２６に関連付けられた仮想カメラの現在の向きなど、他の空間データを含み得る。カメラの向きデータは、プレーヤ制御キャラクタ１２６の視点から見た視野を示し得、したがって、プレーヤ制御キャラクタ１２６の現在の場所と結合されると、プレーヤ制御キャラクタ１２６の視野内にあるゲームワールドの一部に対応する座標のセットを決定することができる。このようにして、拡張フレーム１２２内にレンダリングされるＡＲコンテンツ１２０は、プレーヤ制御キャラクタ１２６の現在の場所を指定する空間データに少なくとも部分的に基づいて、および、場合によっては、カメラの向きデータ、インデックスなど、追加の空間データに基づいて識別され得る。空間データのこれらのアスペクトについて、以下でより詳細に説明する。
【００３６】
したがって、ＡＲコンポーネント１０２は、スクリーンショット（第１のＡＲコンテンツ１２０（１））がゲームワールド内の第１の場所に対応する第１の座標でレンダリングされ、情報メッセージ（第２のＡＲコンテンツ１２０（２））が、ゲームワールド内の第２の場所に対応する第２の座標でレンダリングされることを決定し得る。このように、ＡＲコンテンツ１２０は、ゲームワールド内の特定の座標に関連付けられているという意味で、「空間的に関連する」ＡＲコンテンツ１２０であり得る。したがって、プレーヤ１０６は、ＡＲコンテンツ１２０の周りでプレーヤ制御キャラクタ１２６をナビゲートすることができ、これは、いくつかの場合には、ゲームワールド内のある場所に固定されたままであってもよい。
【００３７】
前述のように、ＡＲコンテンツ１２０は、追加的に、または代替的に、ビデオゲーム１０４で発生するように、特定のイベントに関連付けられるという意味で、イベント関連のＡＲコンテンツ１２０であり得る。このシナリオでは、第１のＡＲコンテンツ１２０（１）は、第１のゲーム関連イベントに関連付けられ得、第２のＡＲコンテンツ１２０（２）は、第１のゲーム関連イベント、または第２のゲーム関連イベントに関連付けられ得、ビデオゲーム１０４から取得されたビデオゲームデータ１２８は、ゲーム関連イベント（複数可）の発生を示すイベントデータを含み得る。
【００３８】
いくつかの実施形態では、ＡＲコンポーネント１０２は、ビデオゲーム１０４によって行われる関数呼び出しの一部として、ビデオゲーム１０４からビデオゲームデータ１２８を受信することができる。このシナリオでは、ビデオゲーム１０４のゲーム開発者は、ビデオゲームコードにアプリケーションプログラミングインターフェース（ＡＰＩ）を実装して、ビデオゲームデータ１２８をＡＲコンポーネント１０２に渡すために、ゲーム実行中の個々のフレームループ中にＡＲコンポーネント１０２にこのタイプの関数呼び出しを行うレンダリングフックを提供することができる。例えば、ビデオゲームプラットフォームのサービスプロバイダによって書かれたコードライブラリは、ゲームプロセス内で実行されるＡＲ関連プロセスを提供することを可能にし、別個のプロセスで実行される外部ＡＲコンポーネント１０２と通信することを担当する、ゲーム開発者のビデオゲーム１０４への統合のために提供されてもよい。ＡＲコンポーネント１０２は、ビデオゲームデータ１２８に基づいて拡張フレーム１２２をレンダリングすること、および拡張フレーム１２２でレンダリングされるＡＲコンテンツ１２０を要求することを担当し得る。いくつかの実施形態では、フレームループ中の関数呼び出しのタイミングは、ＡＲコンテンツ１２０が２つのタイプのグラフィックスの間でレンダリングされ得るように、ビデオゲームコンテンツ１２４で不透明なグラフィックスをレンダリングした後であるが、ビデオゲームコンテンツ１２４で半透明のグラフィックスをレンダリングする前に、関数呼び出しが行われるようなものである。いくつかの実施形態では、深度バッファからの深度データを使用して、ビデオゲームコンテンツ１２４およびＡＲコンテンツ１２０を適切にマージする。関数呼び出しは、ビデオゲームデータ１２８（例えば、ゲームワールド座標などの空間データ、プレーヤ制御キャラクタ１２６のカメラの向きの行列変換、イベントデータなど）をＡＲコンポーネント１０２に提供することができ、その結果、ＡＲコンポーネント１０２は、ビデオゲームデータ１２８に基づいて、関連するＡＲコンテンツ１２０を取り出すことができる。
【００３９】
いくつかの実施形態では、ＡＲコンテンツ１２０は、ビデオゲームコンテンツ１２４の既存のフレーム上のオーバーレイとして、ＡＲコンポーネント１０２によってビデオゲームに自動的に「注入」され得、これは、ゲーム開発者との調整に依存せずに、任意の追加のＡＲ関連コードをビデオゲーム内に実装する。この自動注入技法は、以下でより詳細に説明するように、同時ローカリゼーションおよびマッピング（ＳＬＡＭ）技術を使用して実現され得る。要するに、ＳＬＡＭプロセスは、図２に示されるリモートコンピューティングシステム２００によってオフラインで実施され得、多くの画像からゲームワールドジオメトリ（例えば、ゲームワールドの３Ｄモデル）を漸進的に再構築するために使用され得る。このバックエンドプロセスは、ビデオゲームプラットフォームのサービスプロバイダによって、ゲーム開発者によって、および／またはプレーヤクライアントマシン１００からゲームワールドの画像をクラウドソーシングすることによって行われ得る。このようにして、ＳＬＡＭを使用して、ビデオゲームコンテンツ１２４のスクリーンショットに描かれるゲームワールドジオメトリの認識を自動化することができ、ＳＬＡＭプロセスによって生成されるゲームワールドの３Ｄモデルをクライアントマシン１００によって使用して、ゲームワールドジオメトリのコンテキストでＡＲコンテンツ１２０を提示する方法で、ＡＲコンテンツ１２０でビデオゲームコンテンツ１２４を拡張することができる。これはまた、コードがもはやゲーム開発者によって更新されなくなったバックカタログゲームのビデオゲームコンテンツ１２４にＡＲコンテンツ１２０を追加することを可能にし得る。いくつかの実施形態では、ビデオゲーム１０６は、ＡＲコンポーネント１０２に依存することなく、ＡＲコンテンツ１２０自体を明示的に要求し、ＡＲコンテンツ１２０自体をレンダリングするように構成され得る。
【００４０】
いくつかの実施形態では、ＡＲコンテンツ１２０は、拡張フレーム１２２をレンダリングするプロセスにおいて、ビデオゲームコンテンツ１２４にオーバーレイされる。例えば、ビデオゲーム１０４は、拡張フレーム１２２のディスプレイ（複数可）１１０上にレンダリングされるグラフィックスに対応するピクセルデータ（例えば、色値、深度値など）を出力することができる。ビデオゲーム１０４によって出力されるピクセルデータは、例えば、不透明なグラフィックスが最初にレンダリングされ（例えば、プレーヤ制御キャラクタ１２６の現在の場所からより遠いより大きな深度値で）、半透明なグラフィックス（例えば、粒子、雲、ほこりなど）は、不透明なグラフィックスの後に（例えば、プレーヤ制御キャラクタ１２６の現在の場所により近いより浅い深度値で）レンダリングされることを示し得る。したがって、ＡＲコンテンツ１２０は、いくつかの場合には、それぞれ不透明なグラフィックスおよび半透明なグラフィックスの深度値の間の深度値でＡＲコンテンツ１２０をレンダリングすることによってなど、不透明なグラフィックスと半透明なグラフィックスとの間でレンダリングされ得る。
【００４１】
いくつかの実施形態では、ＡＲコンテンツ１２０は、例えば、ゲームワールドであまり空間をとらないアイコンを用いて、拡張フレーム１２２内に微細な方法で提示することができ、ユーザ１０６がＡＲコンテンツ１２０に焦点を合わせると（例えば、アイコンの上にポインタを置くこと、アイコンの近くに移動することによってなど）、ユーザ１０６にもっと見たいかどうかを尋ねるポップアップが提示されてもよい。ユーザ１０６が、ボタンの選択を介して、もっと見たいことを示した場合、ＡＲコンテンツ１２０のフルバージョンが提示され得る（例えば、アイコンをスクリーンショット、情報メッセージ、オブジェクト、または任意の他の形態のＡＲコンテンツ１２０に展開することによって）。いくつかの実施形態では、サブスクライブされていないＡＲコンテンツ１２０は、この方法で提示することができる。ＡＲチャネルについては、以下でより詳細に説明する（例えば、図３を参照）。要するに、ＡＲチャネルは、フィルタリングメカニズムとして機能し、その結果、ユーザ１０６は、１つ以上のＡＲチャネルにサブスクライブして、それらのサブスクライブされたＡＲチャネルに関連するＡＲコンテンツを見ることができる。しかしながら、サブスクライブされたＡＲチャネルからサブスクライブされたＡＲコンテンツを受信することに加えて、クライアントマシン１００は、ユーザ１０６がまだサブスクライブしておらず、サブスクライブされたＡＲコンテンツ１２０からサブスクライブされていないＡＲコンテンツ１２０を視覚的に区別するために拡張フレーム１２２内に微細な方法で提示されるＡＲコンテンツ１２０を受信することができる。このサブスクライブされていないＡＲコンテンツ１２０は、ビデオゲーム１０４のゲームワールドのレンダリングされる部分の現在のゲームワールド座標に基づいて、クライアントマシン１００に送信され得る。したがって、サブスクライブされていないＡＲコンテンツ１２０は、ユーザ１０６が現在体験しているゲームワールド内の場所に基づいて、サブスクリプションのためにユーザ１０６に提供され得る。
【００４２】
図２は、ＡＲコンテンツ１２０がビデオゲームで使用するためにクライアントマシンに選択的にプロビジョニングされるように、空間データベース２０４においてＡＲコンテンツ１２０および関連データを作成および維持するために、リモートコンピューティングシステム２００のコンポーネントを含む例示的なシステム２０２を示す図である。示された実装形態では、リモートコンピューティングシステム２００は、他のコンポーネントの中でもとりわけ、１つ以上のプロセッサ２０６、通信インターフェース（複数可）２０８、およびメモリ２１０（または非一時的コンピュータ可読媒体２１０）を含む。メモリ２１０（または非一時的コンピュータ可読媒体２１０）は、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなど、情報の記憶のための任意の方法または技術で実装される、揮発性および不揮発性メモリ、着脱可能媒体および着脱不能媒体を含み得る。そのようなメモリは、これらに限定されるものではないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリもしくは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）もしくは他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、ＲＡＩＤストレージシステム、または所望の情報を記憶するために使用することができ、かつコンピューティングデバイスからアクセスすることができる任意の他の媒体を含む。コンピュータ可読媒体２１０は、コンピュータ可読記憶媒体（「ＣＲＳＭ」）として実装されてもよく、これは、メモリ２１０に記憶された命令を実行するためにプロセッサ２０６によってアクセス可能な任意の利用可能な物理媒体であってもよい。１つの基本的な実装形態では、ＣＲＳＭには、ランダムアクセスメモリ（「ＲＡＭ」）およびフラッシュメモリを含んでもよい。他の実装形態では、ＣＲＳＭは、読み取り専用メモリ（「ＲＯＭ」）、電気的に消去可能なプログラム可能な読み取り専用メモリ（「ＥＥＰＲＯＭ」）、または所望の情報を記憶するために使用することができ、かつプロセッサ（複数可）２０６によってアクセスすることができる任意の他の有形媒体を含み得るが、これらに限定されない。拡張現実（ＡＲ）モジュール２１２は、プロセッサ（複数可）２０６によって実行されると、リモートコンピューティングシステム２００に、本明細書に記載の技法および動作を実施させる、メモリ２１０に記憶された命令を表し得る。メモリ２１０はまた、本明細書で説明されるように、クライアントマシン１００などのクライアントマシンに配信するために、ビデオゲーム１０４などのビデオゲームのカタログを記憶し得るビデオゲームカタログ２１４を維持するものとして示されている。
【００４３】
通信インターフェース（複数可）２０８は、有線インフラストラクチャ（例えば、同軸ケーブル、光ファイバケーブルなど）、無線インフラストラクチャ（例えば、無線周波数（ＲＦ）、セルラー、衛星など）、および／または他の接続技術を介して通信するための任意の好適な通信プロトコルを採用してもよい。図２に示される作成者２１６（１）および２１６（２）などの作成者は、それぞれのユーザコンピューティングデバイス２２０（１）および２２０（２）を使用して、コンピュータネットワーク２１８を介してリモートコンピューティングシステム２００にアクセスし得る。コンピュータネットワーク２１８は、これらに限定されないが、インターネット、他のタイプのデータおよび／または音声ネットワーク、有線インフラストラクチャ（例えば、同軸ケーブル、光ファイバケーブルなど）、無線インフラストラクチャ（例えば、無線周波数（ＲＦ）、セルラー、衛星など）、および／または他の接続技術を表し、および／または含み得る。リモートコンピューティングシステム２００は、いくつかの場合には、コンピュータネットワーク２１８を介して維持され、およびアクセス可能なネットワークアクセス可能なコンピューティングプラットフォームの一部であり得る。このようなネットワークアクセス可能なコンピューティングプラットフォームは、「オンデマンドコンピューティング」、「サービスとしてのソフトウェア（ＳａａＳ）」、「プラットフォームコンピューティング」、「ネットワークアクセス可能なプラットフォーム」、「クラウドサービス」、「データセンター」などの用語を使用して参照され得る。一般に、リモートコンピューティングシステム２００は、ＡＲコンテンツ１２０および関連データのための中央データウェアハウスとして機能するように構成される。
【００４４】
リモートコンピューティングシステム２００は、ユーザコンピューティングデバイス２２０が新しいＡＲコンテンツ１２０を作成するためのインターフェース（例えば、アプリケーションプログラミングインターフェース（ＡＰＩ））を提供するようにさらに構成され得る。したがって、リモートコンピューティングシステム２００は、コンテンツ作成インターフェース（例えば、ＡＰＩ）を介して、およびユーザコンピューティングデバイス２２０から、ＡＲコンテンツ１２０を作成するための命令２２２を受信することができる。図２は、第１のユーザコンピューティングデバイス２２０（１）を使用して、新しいＡＲコンテンツ１２０を作成するための第１の命令２２２（１）を提供する第１の作成者２１６（１）と、第２のユーザコンピューティングデバイス２２０（２）を使用して、新しいＡＲコンテンツ１２０を作成するための第２の命令２２２（２）を提供する第２の作成者２１６（２）と、を描く。リモートコンピューティングシステム２００は、ビデオゲームをプレイしている間にクライアントマシンがアクセスするためにリモートコンピューティングシステム２００によって維持されるように、新しいＡＲコンテンツ１２０を作成したいそのような作成者２１６のコミュニティをサポートすることができることを理解されたい。
【００４５】
作成者２１６がビデオゲーム１０４の実行外でＡＲコンテンツ１２０を作成することを可能にするＡＰＩに加えて、プラグインロジックを介してビデオゲーム１０４の実行中にクライアントマシン１００上に新しいＡＲコンテンツ１２０を作成することができる。例えば、クライアントマシン１００上で実行しているＡＲコンポーネント１０２は、ゲームプレイ中に新しいＡＲコンテンツ１２０（例えば、付箋、スクリーンショットなど）を作成するプラグイン（複数可）にビデオゲームデータ１２８を提供することができる。このプラグインによって作成されたＡＲコンテンツ１２０は、それが現在のプレーヤ１０６のゲームセッションの存続期間の間存在し、セッションが終了した後も持続されないという意味で一時的であり得る。代替的に、プラグインによって作成されたＡＲコンテンツ１２０は、後のゲームセッションでアクセス可能であるように、空間データベース２０４にアップロードされ得る。いくつかの実施形態では、プラグインによって作成されたＡＲコンテンツ１２０は、同じビデオゲーム１０４または異なるビデオゲームをプレイしている他のプレーヤ１０６とリアルタイムで共有される。このシナリオでは、リモートコンピューティングシステム２００は、ゲームセッション中にクライアントマシン１００間でＡＲコンテンツ１２０を中継するサーバとして機能する。作成者２１６はまた、コンテンツ作成ＡＰＩを使用して、新しいＡＲコンテンツ、および／または作成者２１６によって以前に作成されたコンテンツに関連付けられたアクセス権を指定することができる。コンテンツ作成ＡＰＩはまた、１つ以上のビデオゲーム１０４に関連付けられた既存のスクリーンショットまたはビデオクリップにＡＲコンテンツを追加することを可能にすることができる。
【００４６】
図２は、作成者２１６によって作成されたＡＲコンテンツ１２０を記憶するために使用される空間データベース２０４を示す。空間データベース２０４は、ＡＲコンテンツ１２０を、これに限定されないが、図２に示されるデータのタイプを含む様々なタイプのデータと関連付けることができる。例えば、図２は、空間データベース２０４が、ＡＲコンテンツ１２０（１）、１２０（２）、…、１２０（Ｎ）の複数のレコードをどのように含み得るかを示す。ＡＲコンテンツ１２０の各レコードは、例えば、ビデオゲームカタログ２１４内のビデオゲーム１０４を一意に識別するゲーム識別子（ＩＤ）２２４に関連付けられ得る。このようにして、ＡＲコンテンツ１２０の各レコードは、特定のビデオゲームに結び付けることができる。いくつかの実施形態では、ＡＲコンテンツ１２０の個々のレコードは、複数の異なるビデオゲームの複数のゲームＩＤ２２４に関連付けることができるか、または空間データベース２０４は、同じＡＲコンテンツ１２０を異なるビデオゲームの複数の異なるゲームＩＤ２２４に関連付けるために別個のレコードを維持することができる。いくつかの実施形態では、ゲームＩＤ２２４は、ビデオゲームが複数のレベルを有する場合、ビデオゲームのレベルなどの任意の好適なレベルの粒度でビデオゲームのアスペクトを指定することを可能にし得る。例として、ＡＲコンテンツ１２０のレコードは、特定のビデオゲームのレベル３に関連付けられ得るが、他のレベルには関連付けられない。
【００４７】
ＡＲコンテンツ１２０の個々のレコードはまた、ＡＲチャネルを一意に識別するＡＲチャネルＩＤ２３０に関連付けられ得る。ＡＲチャネルは、（例えば、図３を参照して）以下でより詳細に説明される。要するに、ＡＲチャネルは、無関係なＡＲコンテンツ１２０を除外し、ユーザ１０６のＡＲチャネルサブスクリプションに基づいて、そのユーザ１０６のクライアントマシンに関連するＡＲコンテンツ１２０を送信するためのフィルタリング基準として機能することができる。
【００４８】
ＡＲコンテンツ１２０の個々のレコードはまた、ゲームワールド座標２２６に関連付けられ得る。ゲームワールド座標２２６は、特定のビデオゲームのゲームワールド内の特定の座標を指定する空間データ２２７であると見なすことができ、ゲームワールドは座標系によって定義される。このようにして、ＡＲコンテンツ１２０のレコードに関連付けられたゲームワールド座標２２６が、ゲームワールドの一部をビデオゲーム１０４のプレーヤ１０６に提示するためにフレームにレンダリングされるときはいつでも、それらのゲームワールド座標２２６に関連付けられたＡＲコンテンツ１２０を識別し、それを使用して、ＡＲコンテンツ１２０を含む拡張フレーム１２２を生成することができる。例示的な例では、作成者２１６（１）は、ドアウェイが一連のフレームのうちの１つのフレームでレンダリングされるときはいつでもそのドアウェイに提示されるビデオゲームの所与のレベルについて、情報メッセージなどのＡＲコンテンツ１２０を作成することができる。ＡＲコンテンツ１２０の複数のレコードは、同じゲームワールド座標２２６（例えば、ビデオゲームの所与のレベルのドアウェイ）に関連付けられ得、それらのゲームワールド座標２２６に関連付けられたＡＲコンテンツ１２０の一部またはすべては、プレーヤ１０６がＡＲコンテンツ１２０にアクセスしなければならないアクセス権に応じて、ビデオゲームの所与のプレーヤ１０６に対して提示可能であることを理解されたい。例えば、複数の情報メッセージは、特定のビデオゲームのレベル３のドアウェイに関連付けられ得、これらの情報メッセージの一部またはすべては、ドアウェイがプレーヤ制御キャラクタ１２６の視野内にあるとき、ＡＲコンテンツ１２０として所与のプレーヤ１０６に可視であり得る。
【００４９】
再びゲームＩＤ２２４を参照すると、ゲームＩＤ２２４はまた、ビデオゲーム１０４のゲームワールド内のゲームワールド座標２２６の複数のインスタンス間での曖昧さを解消するために使用可能であり得る。言い換えれば、ゲームＩＤ２２４は、ゲームワールド座標が曖昧である場合に、ゲームワールド座標２２６を一意にすることができる。作成者２１６（２）が、ビデオゲームコンテンツ１２４として提供される自動車にＡＲコンテンツ１２０としてホログラムを取り付けたい例を検討する。クライアントマシン１００上で実行しているＡＲコンポーネント１０２は、ＡＲコンテンツ１２０（例えば、ホログラム）を取り付ける、同じメーカーおよびモデルの潜在的に多くの自動車を知る必要がある場合がある。ゲームワールドを動き回ることができる自動車のようなモバイルオブジェクトの場合、そのようなモバイルオブジェクトに関連付けられたゲームワールド座標２２６は、モバイルオブジェクトの外部のゲームワールド環境の一部に対して表現されるのではなく、モバイルオブジェクトに対して表現され得る。この場合、モバイルオブジェクトに関連付けられたゲームワールド座標２２６は、ＡＲコンテンツ１２０（例えば、ホログラム）が取り付けられるゲームワールドの部分の曖昧さを完全に解消するのに十分ではない可能性があり、ゲームＩＤ２２４は、したがって、ゲームワールド座標２２６の複数のインスタンス間での曖昧さを完全に解消するために使用可能である。
【００５０】
ゲームＩＤ２２４をどのように使用することができるかの別の例として、ビデオゲーム１０４のゲームワールドの周りの複数の異なる場所に現れる仮想ホテルを検討する。ビデオゲーム１０４は、ホテル自体に対する個々のホテルのゲームワールド座標２２６を表現し得るが（例えば、ホテル自体がミニチュアゲームワールドであるかのように）、ホテルの各インスタンスは、異なるゲームＩＤ２２４によって一意に識別され得る。一般に、ゲームワールド座標２２６は、実世界によって共有されないビデオゲームの様々なアスペクト（例えば、異なる場所を接続するポータル、ビデオゲームがロードされるたびに（各セッション）異なる順序で一緒にスティッチされる構築済みの部屋など）のために、実世界の座標に真に類似していない可能性があることを理解されたい。これらおよび他の理由のために、ゲームＩＤ２２４は、同じゲームワールド座標２２６の複数のインスタンス間での曖昧さを解消するのに役立つ可能性がある。
【００５１】
例示的な例では、ＡＲコンテンツ１２０のレコードは、プレーヤ制御キャラクタによってキャプチャされたゲームワールドの一部のスクリーンショット（例えば、図１に示される第１のＡＲコンテンツ１２０（１））に対応し得る。スクリーンショットがキャプチャされたとき、スクリーンショットがキャプチャされたときのカメラの向きだけでなく、ゲームワールド座標２２６およびゲームＩＤ２２４に関連付けられていた可能性がある。このデータは、関連するＡＲコンテンツ１２０とともにアップロードされて、空間データベース２０４に新しいレコードを作成することができる。したがって、ゲームプレイ中に、ビデオゲーム１０４が、現在のゲームワールド座標２２６およびプレーヤ制御キャラクタ１２６に関連付けられた現在のゲームＩＤ２２４を指定する空間データの形態でビデオゲームデータ１２８を提供するとき、その空間データに関連付けられたスクリーンショットは、そのフレームのビデオゲームコンテンツ１２４の上にＡＲコンテンツ１２０としてレンダリングすることができ、それによって、第１のゲーマー１０６は、第２のゲーマー１０６によって見られたゲームワールドの同じスナップショットを見ることができる。いくつかの実施形態では、実際のスクリーンショットは、現在のプレーヤのカメラの向きがスクリーンショットに関連付けられたカメラの向きと一致しない限り、およびそれまで表示されず、そうでなければ、カメラの向きが一致しない場合、これらのスクリーンショットは、ゲームワールドに、図１に示される例示的な第１のＡＲコンテンツ１２０（１）によく似た「フローティング」画像として提示され得る。このようにして、複数のスクリーンショットがゲームワールドの同じ場所でキャプチャされ、ＡＲコンテンツ１２０としてリモートコンピューティングシステム２００にアップロードされた場合、プレーヤ１０６が、プレーヤ制御キャラクタ１２６を、それらのスクリーンショットに関連付けられたカメラの向きに整列させるときはいつでも、所与のプレーヤ１０６は、視聴可能なフローティング画像のクラスタを見ることができる。
【００５２】
ＡＲコンテンツ１２０の個々のレコードはまた、状態２２８に関連付けられ得る。状態２２８がどのように使用され得るかを示すために、ゲームで起こっていることを変える特定のイベントが発生したときなど、時間とともに異なる状態間で動的に変化するゲームワールドを提示するビデオゲームを検討する。例示的な例では、ゲームワールドは、ボスを打ち負かす前の第１の状態で、およびボスを打ち負かした後の第２の状態で提示され得る。この意味で、ＡＲコンテンツ１２０の個々のレコードは、状態２２８によって、これらの異なるゲームワールドの状態に関連付けることができる。すなわち、特定のゲームワールド座標２２６に関連付けられた第１のＡＲコンテンツ１２０は、第１の状態２２８との関連付けによってゲームワールドの第１の状態で提示され得、ゲームワールドの状態が変化すると、第１のＡＲコンテンツ１２０は、削除され、同じゲームワールド座標２２６に関連付けられた第２のＡＲコンテンツは、第２の状態２２８との関連付けによって、ゲームワールドの第２の状態で提示され得るなど、以下同様である。例示的な例では、プレーヤ１０６がボス戦闘を開始すると、プレーヤ１０６は、プレーヤがボスと戦う際に健闘を祈る情報メッセージの形態で第１のＡＲコンテンツ１２０を見て、次いで、プレーヤ１０６がボスを打ち負かしたとき、プレーヤ１０６は、プレーヤがボスを打ち負かしたことを祝福する情報メッセージの形態で第２のＡＲコンテンツ１２０を見ることができる。
【００５３】
状態２２８がどのように使用され得るかのさらに別の例として、異なるモード（例えば、すべてのプレーヤが自分で戦うソロモード、プレーヤがペアでプレイするデュオモード、プレーヤがより大きなグループでプレイするスクワッドモードなど）でプレイ可能なビデオゲームを検討する。これらのモードは独立して、しかし、ビデオゲームの同じゲームワールド内でプレイすることができる。したがって、ＡＲコンテンツ１２０のレコードは、特定のゲームモードに対応する状態２２８に関連付けることができる。一般に、状態２２８は、ＡＲコンテンツ１２０が拡張フレーム１２２内にレンダリングされるコンテキスト（必ずしも空間コンテキストである必要はない）でフィルタリングするために使用されるあらゆるものであり得る。
【００５４】
ＡＲコンテンツ１２０の個々のレコードはまた、ピクセルデータ２３２に関連付けられ得る。ピクセルデータ２３２は、ビデオゲームのプレーヤ１０６によってキャプチャされたスクリーンショットの形態でＡＲコンテンツ１２０に特に関連付けられ得る。例えば、ピクセルデータ２３２は、ゲームワールドの２Ｄスクリーンショットを再構築するために、ピクセルごとの値（例えば、色値）の２Ｄアレイを含み得る。いくつかの実施形態では、ピクセルデータ２３２は、シーンに深度の感知を提供するピクセルごとの深度値を含む。シーンに関係する３Ｄ情報を含むピクセルデータ２３２は、ゲームワールドの３Ｄモデルを構築するために、クライアントマシン１００のＡＲコンポーネント１０２によって使用され得る。
【００５５】
空間データベース２０４のＡＲコンテンツ１２０のレコードに含まれるものとして図２に示されるデータの例示的なタイプは単なる例であり、ＡＲコンテンツ１２０の特定のレコードに関連付けられた他のタイプのデータがあり得る。例えば、アクセス権は、ビデオゲームをプレイしている間にＡＲコンテンツ１２０に対する可視性を有する特定のユーザまたはユーザグループを示すために、ＡＲコンテンツ１２０の個々のレコードに関連付けられ得る。例えば、ＡＲコンテンツ１２０は、一般大衆、ＡＲコンテンツ１２０を作成した作成者２１６の友人、または他の指定されたユーザもしくはユーザグループに対してＡＲコンテンツ１２０が可視かどうかを指定するタグに関連付けることができる。いくつかの例では、ＡＲコンテンツ１２０は、ユーザの興味、話されている言語（例えば、英語、日本語、スペイン語など）、地理的場所、時間帯などに関連付けることができる。これらのタイプのデータは、１つ以上の基準が満たされるときはいつでも、ＡＲコンテンツ１２０を要求側クライアントマシン１００に送信することを可能にするために、フィルタリング基準として機能し得る。これらのタイプのデータは、追加的に、または代替的に、ＡＲコンテンツ１２０をレンダリングするかどうかを決定するためのレンダリング基準として機能し得る（例えば、現在の時刻が特定の時刻に対応する場合（例えば、特定の時間範囲内）、ユーザ１０６が特定の地理的場所（例えば、特定の地理的エリア／地域内）に現在位置している場合、ユーザ１０６が特定の言語を話している場合、ユーザ１０６が特定のトピックに興味を持っている場合（例えば、ユーザの興味が指定されたユーザプロファイルに示されるように）など、ＡＲコンテンツ１２０をレンダリングする）。
【００５６】
様々な異なるタイプのＡＲコンテンツ１２０は、リモートコンピューティングシステム２００によって提供されるコンテンツ作成インターフェース（例えば、アプリケーションプログラミングインターフェース（ＡＰＩ））を介して、作成者２１６によって作成され得る。ＡＲコンテンツ１２０の例示的なタイプには、これらに限定されないが、情報メッセージ（例えば、ゲーマー１０６によって投稿されたメッセージ）、２Ｄおよび／または３Ｄオブジェクトを含む仮想オブジェクト（例えば、形状、アバター、射撃ターゲットなど）、２Ｄおよび／または３Ｄスクリーンショットを含むビデオゲームのプレイ中にプレーヤによってキャプチャされるスクリーンショット、ビデオクリップ、対話型オブジェクト（例えば、ゲームキャラクタ、またはゲームワールド内を移動する他の仮想オブジェクトもしくはグラフィックスなど）などを含む。
【００５７】
ＡＲコンテンツ１２０（例えば、静的、動的、またはそうでなければ対話型であるＡＲコンテンツ１２０）の作成を可能にするために、リモートコンピューティングシステム２００は、作成者２１６が空間データベース２０４内のＡＲコンテンツ１２０のレコードに記憶されるコード（例えば、ダイナミックリンクライブラリ（ＤＬＬ）、Ｊａｖａｓｃｒｉｐｔファイル、．ｅｘｅなどとして実装され得るプラグインなどの実行可能プログラム）を書くためのＡＰＩを提供し得る。このシナリオでは、既に作成されたＡＲコンテンツ１２０を取り出す代わりに、ビデオゲーム１０４の現在の状態に関するビデオゲームデータ１２８を、ＡＲコンテンツ１２０のレコードの実行可能プログラムへの入力として提供することができ、実行可能プログラムは、ビデオゲームデータ１２８のプログラムの処理に基づいて、ＡＲコンテンツ１２０を生成し、かつ出力し得る。この意味で、空間データベース２０４のレコードに記憶される「ＡＲコンテンツ」は、いくつかの実施形態では、実行可能プログラムに入力されるビデオゲームデータ１２８に基づいてＡＲコンテンツを生成するように構成される「実行可能プログラム」を含み得る。いくつかの実施形態では、クライアントマシン１００上で実行しているＡＲコンポーネント１０２は、セキュリティサンドボックスを作成し、クライアントマシン１００のユーザ１０６がサブスクライブするＡＲチャネル（複数可）に対応する１つ以上の実行可能プログラムまたはプラグイン（例えば、ＤＬＬ）をロードし、プラグインにビデオゲームデータ１２８を提供して、プラグインにそれぞれのロジックを実行させ、ＡＲコンテンツ１２０を返すようにしてもよい。例えば、ＤＬＬのフォルダがあり得、各ＤＬＬは異なるプラグインを表す。ユーザ１０６がＡＲチャネル（複数可）にサブスクライブするとき、ＡＲコンポーネント１０２は、セキュリティサンドボックス内の対応するＤＬＬ（複数可）をロードすることができ、次いで、レンダリングされるフレームごとに、ＡＲコンポーネント１０２は、ビデオゲームデータ１２８を、ロードされた対応するＤＬＬ（複数可）への入力として提供することができ、ＤＬＬ（複数可）からの出力として、拡張フレーム１２２としてフレームにレンダリングされるＡＲコンテンツ１２０を受信することができる。例示的な例では、プラグインを作成者２１６によって作成して、ＡＲコンテンツ１２０のオーバーレイとしてビデオゲーム１０４のゲームワールドにアニメーション化されたオブジェクト（例えば、ゲームキャラクタ）を追加することを可能にすることができる。そのようなプラグイン層を使用して、作成者２１６は、ベース（またはコア）ビデオゲーム１０４に関して別個に実行され、ビデオゲーム１０４のビデオゲームコンテンツ上のオーバーレイとして提示される二次ゲームを作成することができる。この意味で、ビデオゲーム１０４は、ビデオゲームコンテンツ１２４の上にレンダリングされるＡＲコンテンツ１２０について知る、または気にする必要もないが、それにもかかわらず、対話型ＡＲコンテンツ１２０は、ビデオゲーム１０４の現在の状態に関して、ビデオゲームデータ１２８に依存し得、その結果、対話型ＡＲコンテンツ１２０は、ゲームワールド内の適切なコンテキストで（例えば、ゲームワールドのジオメトリを考慮して、適切な場所で、および適切な方法で、適切な時間に、など）提示することができる。このようにして、プレーヤ１０６は、プレーヤ制御キャラクタ１２６を制御するためのユーザ入力を提供することによって、ＡＲコンテンツ１２０と対話することができる。ＡＲプラグインは、クライアントマシン１００上でローカルに、またはリモートコンピューティングシステム２００でリモートで実行することもできる。後者の場合、ＡＲコンテンツ１２０は、クライアントマシン１００によって、ネットワーク２１８を介してリアルタイムで受信することができる。リモートコンピューティングシステム２００からダウンロードするためにユーザ１０６によって選択可能な複数の実行可能プログラム（ＡＲプラグイン）があり得、個々のプラグインは、特定の目的のためにＡＲコンテンツ１２０を生成する。
【００５８】
いくつかの実施形態では、リモートコンピューティングシステム２００によって提供されるコンテンツ作成インターフェース（例えば、ＡＰＩ）は、作成者２１６が、入力として、クライアントマシン１００のスクリーン上にレンダリングされているゲームワールドの現在のシーン（例えば、３Ｄスクリーンショット）に関連するビデオゲームデータ１２８を受信するように構成された実行可能プログラム（例えば、プラグイン）を作成することを可能にし得、実行可能プログラムは、ＡＲコンテンツを出力し得る。このようにして、対話型ＡＲコンテンツ１２０は、クライアントマシン１００のスクリーン上に提示されているゲームワールドのコンテキストで提示することができる。例えば、作成者２１６は、プラグインを使用して、ＡＲゲームキャラクタに、プレーヤ１０６が撃ち、キャプチャし、またはそうでなければ対話しようとすることができる敵のように、ビデオゲームのゲームワールドを走り回らせる実行可能プログラムを書くことができる。３Ｄスクリーンショットデータは、例えば、キャラクタが、壁を走り抜けるのではなく、ゲームワールドの壁の周りを走り回ることによるなど、現実的な方法でそのような対話型コンテンツ１２０を追加することを可能にし得る。同様のプレーヤの移動挙動、同様のサイズのワールド、および／または同様のゲームロジックを有するビデオゲーム１０４の場合、作成者２１６は、複数のビデオゲームと互換性があり、複数のビデオゲームにわたって機能する実行可能プログラムを作成することができる。このようにして、ＡＲモジュール２１２を含むＡＲシステムは、作成者２１６がプラグイン作成ＡＰＩを使用して、複数の異なるビデオゲーム、特に同様のゲームワールドとプレーヤの移動挙動を持つゲームの「上で」実行する二次ＡＲベースのゲームを作成することを楽しむ二次ゲーム開発の文化を育むことができる。この意味で、本明細書に開示されるＡＲシステムを使用する作成者２１６は、実際には、二次ＡＲベースのゲームを開発する事業を行っているゲーム開発者である可能性がある。例えば、プラグインを使用して、ＡＲゲームセッションを作成することができ、これは、複数のゲームインスタンスからのゲーム状態を使用して、複数のクライアントマシン１００間で共有され得るＡＲコンテンツ１２０を生成する。それらのクライアントマシン１００のユーザ１０６は、同じビデオゲームを実行する必要なしにこれらのＡＲゲームセッションに参加することができる可能性があり、いくつかのＡＲゲームは、各ユーザが異なるゲームまたはＡＲビューアの形態のビデオゲーム内にいることを可能にするように設計され得る。「ＡＲゲームセッション」内のユーザ対話は、ネットワーク２１８によって媒介され得る（例えば、ＡＲプラットフォームは、ユーザがネットワーク２１８を介して対話するための特定のビデオゲーム（複数可）におけるサポートがなくても、ユーザが互いに対話することを可能にする）。
【００５９】
ゲーム開発者は、本明細書で説明されるように、対話型ＡＲコンテンツ１２０を提供する実行可能プログラムの使用をサポートするために、ゲームコードにマイナーな機能を追加することによって、このＡＲシステムに参加することができる。例えば、ビデオゲーム１０４は、ゲーム開発者によって開発することができ、それによって、ビデオゲームは、対話型ＡＲコンテンツ１２０をビデオゲームコンテンツ１２４の上の追加の層として追加する目的で、所与のクライアントマシン１００上で実行しているＡＲコンポーネント１０２にデータを放出し、ＡＲコンポーネント１０２からデータを受信するように構成される。例えば、ゲーム開発者は、ゲーム内で弾丸が発射されるたびにデータを放出する１行以上のコードをビデオゲーム１０４に追加し、データは、ビデオゲーム１０４において、プレーヤ制御キャラクタ１２６によって発射された弾丸に関係する方向性および場合によっては大きさ（例えば、速度）を提供するゲームワールド内のベクトル（または光線）を指定することができる。ＡＲコンポーネント１０２は、この放出されたデータを受信し、それを弾丸の発射に対応するイベントデータに関連付けられたＡＲコンテンツ１２０の特定のレコードのための実行可能プログラムへの入力として提供することができる。実行可能プログラムは、ゲームワールド内に配置され、プレーヤ１０６がプレーヤ制御キャラクタ１２６の武器（例えば、銃、ナイフなど）を使用して攻撃を試みることができる、ＡＲベースの射撃ターゲットを生成することによって、そのようなイベントに応答することができる。実行可能プログラムは、ＡＲベースの射撃ターゲットが攻撃されたかどうかについて実行可能プログラムに通知するビデオゲーム１０４によって放出されたデータを引き続き受信することができ、実行可能プログラムは、プレーヤ１０６がＡＲベースの射撃ターゲットを撃ち、爆発させることによって、プレーヤ１０６がＡＲベースの射撃ターゲットと対話することができるように、爆発するターゲットを出力することができる。これは、ビデオゲーム１０４のウォームアップ段階中に、プレーヤ１０６がゲームワールドをただぶらぶら走り回る代わりに、射撃を練習するのに役立つ可能性がある。この意味で、ゲーム開発者は、プラグイン層を使用して作成者２１６によって書かれた実行可能プログラムによって使用される特定のデータを放出および／または受信するために、ビデオゲーム１０４を更新することによって、ゲームにおけるそのようなＡＲベースの対話の継続的なサポートを提供することができる。
【００６０】
いくつかの実施形態では、リモートコンピューティングシステム２００によって提供されるコンテンツ作成インターフェース（例えば、ＡＰＩ）は、ビデオゲーム１０４との対話の追加の層としてビデオゲーム１０４にデータを提供する実行可能プログラム（例えば、プラグイン）を作成者２１６が書くことを可能にしてもよい。例えば、ＡＰＩを使用して、実行中にビデオゲーム１０４にデータを送信するプログラム（例えば、プラグイン）を書いて、プレーヤ制御キャラクタ１２６がいつ健康を獲得または喪失するかを制御するか、または特定のゲーム内の敵がいつおよび／またはどこに現れるかを制御することができる。ゲーム開発者は、クライアントマシン１００上で実行しているＡＲコンポーネント１０２とのこの種の双方向対話をサポートするゲームコードを書かなければならない場合があり、ゲーム開発者は、そのような機能がいつ有効になるかを決定することができる（例えば、不正行為を防止するためにオンラインの競争試合中は対話型ＡＲコンテンツ１２０を無効にするが、シングルプレーヤモード中に対話型ＡＲコンテンツ１２０が、ベースのビデオゲーム１０４の上に、よりドラマチックで興味深いＡＲエクスペリエンスを提供することを可能にすることによって）。いくつかの実施形態では、異なる作成者２１６によって書かれた異なるＡＲプラグイン（実行可能プログラム）は、ビデオゲームの実行中にＡＲコンポーネント１０２の管理でデータを前後に渡すことによって互いに対話することができる。例えば、作成者２１６は、プレーヤ制御キャラクタ１２６に「生活の質の改善」を提供する「ユーティリティ」プラグインを作成することができる（例えば、ビデオゲーム１０４の組み込みユーザインターフェースから省略される有用な情報を視覚化するためのＡＲプラグイン）。
【００６１】
いくつかの実施形態では、リモートコンピューティングシステム２００は、ゲームワールド２３４の３Ｄモデルのリポジトリを維持することができる。前述のように、ＳＬＡＭプロセスは、ゲームワールドジオメトリを再構築し、ゲームワールドジオメトリをゲームワールド２３４の３Ｄモデルに記憶するために、リモートコンピューティングシステム２００によってオフラインで実施され得る。３Ｄモデルは、複数の３Ｄモデルがゲームワールド全体を構築し得るように、ゲームワールドの一部であり得る。ＳＬＡＭは、その環境の少なくとも一部をキャプチャする画像データに基づいて、未知の地形環境に呈する認識された形状、点、線などに基づいて、計算アルゴリズムを使用して、とりわけ、モデル（またはマップ）を構築する技術である。例えば、３Ｄモデルは、多くのゲームフレームからＳＬＡＭを介して再構築された（例えば、（深度バッファデータの有無にかかわらず、カラーデータの）高密度の時間的に連続したビデオストリームから再構築された）、ゲームワールドの集約された地域を表す場合がある。この再構成は、ＡＲプラグインがクライアントマシン１００上で実行を開始する前に３Ｄモデル２３４が先験的に利用可能であるように、別個のバックエンドプロセスとして行うことができる。所与のビデオゲームについて、３Ｄ再構成プロセスは、ビデオゲームプラットフォームのサービスプロバイダによって、ビデオゲーム１０４のゲーム開発者によって、またはプレーヤクライアントマシン１００からビデオゲームスクリーンショットをクラウドソーシングすることによって実施され得る。ユーザ１０６のクライアントマシン１００からそのようなデータを取得する前に、ユーザの同意を取得することができる。さらに、ユーザ１０６は、３Ｄモデル２３４を構築する目的で、ゲームワールドを自発的に探索し、スクリーンショットデータをリモートコンピューティングシステム２００にアップロードすることによって、プロセスに参加することを選択することができる。
【００６２】
ＳＬＡＭによって作成された３Ｄモデル２３４は、ビデオゲームコンテンツ１２４の画像からゲームワールドを識別し、ゲーム内にＡＲコンテンツ１２０を追加する目的でカメラポーズを決定する目的で、クライアントマシン１００によって取り出され得る。いくつかの実施形態では、３Ｄモデル２３４は、ＡＲコンテンツ１２０を未修正のビデオゲームおよび／またはビデオゲームの既存のスクリーンショットおよび／またはビデオに自動的に注入するために、クライアントマシン１００によって取得され得る。これは、ビデオゲーム１０４がＡＲコンテンツ１２０なしでビデオストリームを出力し、ＡＲシステム（例えば、ＡＲコンポーネント１０２および／またはＡＲモジュール２１２）がビデオストリームの上にＡＲコンテンツ１２０をオーバーレイする（例えば、フレームごとのカメラポーズなど、ビデオゲームから十分な情報を取得することによって）「ストリーミング」ユースケースを可能にし得る。
【００６３】
図３は、クライアントマシン１００によって受信されるＡＲコンテンツ１２０を決定するＡＲチャネルにクライアントマシン１００がサブスクライブできる例示的なシステム３００を示す図である。一般に、図１を参照して説明したクライアントマシン１００と同じであり得るクライアントマシン１００は、ビデオゲーム１０４の実行前および／またはビデオゲーム１０４の実行中に、コンピュータネットワーク２１８を介してリモートコンピューティングシステム２００からＡＲコンテンツ１２０を受信することができる。これは、ビデオゲーム１０４の実行中のＡＲコンテンツ１２０のリアルタイムストリーミングを伴い得るか、または待ち時間および／もしくはネットワーク帯域幅消費を低減するために、ＡＲコンテンツ１２０が拡張フレーム１２２の一部としてレンダリングされるとき、ＡＲコンテンツ１２０は、リモートコンピューティングシステム２００からダウンロードされ、クライアントマシン１００のローカルメモリからアクセスされ得る。いくつかの実施形態では、ユーザ１０６がクライアントマシン１００上でビデオゲーム１０４を開始するときはいつでも、ビデオゲームクライアント１１６は、コンピュータネットワーク２１８を介して、ビデオゲーム１０４の識別子（例えば、ゲームＩＤ２２４）を含む要求をリモートコンピューティングシステム２００に送信し、リモートコンピューティングシステム２００は、ゲームＩＤ２２４を使用して、ゲームＩＤ２２４に関連付けられた空間データベース２０４内のＡＲコンテンツ１２０のレコードをルックアップする。したがって、空間データベース２０４に維持されている利用可能なＡＲコンテンツ１２０の中で、リモートコンピューティングシステム２００は、要求においてクライアントマシン１００から受信したゲームＩＤ２２４に関連付けられている利用可能なＡＲコンテンツ１２０のサブセットを識別し得る。この識別されたＡＲコンテンツ１２０は、１つ以上のフィルタリング基準に基づいてさらにフィルタリングされ得、最終的にクライアントマシン１００に送信されるＡＲコンテンツ１２０のフィルタリングされたサブセットをもたらし、ＡＲコンテンツ１２０のフィルタリングされたサブセットは、１つ以上のフィルタリング基準も満たすゲームＩＤ２２４に関連付けられたＡＲコンテンツ１２０である。このフィルタリング基準は、要求を送信したユーザ１０６がＡＲコンテンツ１２０へのアクセス権を有する場合に満たされる１つ以上の基準を含み得る。例えば、特定のユーザグループにのみ可視であるＡＲコンテンツ１２０のレコードが、要求を送信したログインユーザアカウントが特定のユーザグループに含まれている場合、そのＡＲコンテンツ１２０のレコードは、クライアントマシン１００に送信される。そうでなければ、その特定のユーザグループに含まれないユーザ１０６がＡＲコンテンツ１２０の要求を送信する場合、ＡＲコンテンツ１２０のそのレコードは、ユーザ１０６がそのＡＲコンテンツ１２０へのアクセス権を有していない可能性があることを見て、クライアントマシン１００に送信されない可能性がある。
【００６４】
図３に示される別の例示的なフィルタリング基準は、ＡＲコンテンツ１２０が、クライアントマシン１００のユーザ１０６がサブスクライブしたチャネルに関連付けられているかどうかである。図３は、ビデオゲームクライアント１１６がクライアントマシン１００上に表示することができるユーザインターフェース３０２を示す。ユーザインターフェース３０２は、リモートコンピューティングシステム２００によって提供されるビデオゲームサービスの異なるアスペクトにナビゲートするためにユーザが選択するためのメニュー項目３０４のリストを含み得る。例えば、「ストア」メニュー項目３０４は、クライアントマシン１００のユーザ１０６が、ビデオゲームカタログ２１４内のビデオゲームなどのコンテンツを閲覧することを可能にし得る。「ライブラリ」メニュー項目３０４は、ユーザ１０６がビデオゲームを取得（例えば、購入、レンタル、リースなど）した結果、ユーザ１０６が、クライアントマシン１００にアクセス可能なビデオゲームライブラリ１１８など、コンテンツのライブラリを閲覧することを可能にし得る。「ニュース」メニュー項目３０４は、ユーザ１０６が、コンテンツ公開エンティティによって公開されたニュース記事を閲覧することを可能にし得る。「コミュニティ」メニュー項目３０４は、ユーザ１０６が、友人およびコミュニティの他のユーザなど、ビデオゲームサービスの他のユーザ１０６と対話することを可能にし得る。「ゲーム内拡張現実」メニュー項目３０４は、クライアントマシン１００のユーザ１０６が、本明細書に開示されるＡＲシステムによって提供される様々なＡＲ機能にアクセスすることを可能にし得る。図３に描かれるそれらのＡＲ機能の１つは、「チャネル」ＡＲ機能であり、これにより、ユーザ１０６は、コンピュータネットワーク２１８を介してクライアントマシン１００に送信されるＡＲコンテンツ１２０のタイプを指示する異なるＡＲチャネル３０６にサブスクライブすることができ、それにより、クライアントマシン１００のユーザ１０６に可視になる。言い換えれば、リモートコンピューティングシステム２００によって維持される利用可能なＡＲコンテンツ１２０は、ＡＲチャネル３０６に分割することができ、ユーザ１０６は、それらのＡＲチャネル３０６の１つ以上にサブスクライブし、場合によっては、ビデオゲーム１０４の実行中に異なるタイプのＡＲコンテンツ１２０を視聴するためにチャネルを切り替えることができる。ＡＲチャネル３０６はまた、ユーザ１０６のチャネルサブスクリプションに基づいて可視化されるか、または非表示のままであるＡＲコンテンツ１２０の「層」と考えることができる。
【００６５】
図３は、ユーザ１０６がサブスクライブし得る４つの例示的なＡＲチャネル３０６（１）〜（４）を示し、ユーザ１０６がまだサブスクライブしていない各ＡＲチャネル３０６の隣に「サブスクライブ」ボタンがある。すでにサブスクライブされたチャネルの場合、ユーザ１０６がすでにＡＲチャネル３０６にサブスクライブしたことの表示は、ユーザ１０６がすでにそのＡＲチャネル３０６（２）にサブスクライブしていることを示す「スクリーンショット」チャネル３０６（２）の隣の「チェックボックス」など、ＡＲチャネル３０６の隣に提供され得る。例えば、ユーザ１０６は、「ファンフィクション」チャネル３０６（１）にサブスクライブして、ビデオゲーム１０４の実行中にファンフィクションに関連するＡＲコンテンツ１２０を可視化することができる（例えば、ストーリーを語り、場合によっては、ジオキャッシングと同様に、次の情報メッセージをどこで見つけるかについてのヒントを与える複数の情報メッセージをゲームワールド全体に配置することができる）。ユーザ１０６は、「スクリーンショット」チャネル３０６（２）にサブスクライブして、ビデオゲーム１０４の実行中にスクリーンショットから構成されるＡＲコンテンツ１２０を可視化することができる。ユーザ１０６は、「友人」チャネル３０６（３）にサブスクライブして、ビデオゲーム１０４の実行中に、ユーザ１０６の友人のうちの１人以上に関連付けられたＡＲコンテンツ１２０を可視化することができる。このタイプのＡＲチャネル３０６（３）は、ユーザ１０６がサブスクライブしたい特定の友人および／または友人のグループを選択するために、ドロップダウンメニューまたは同様の選択メカニズムを備えていてもよい。ユーザ１０６は、「プロゲーマー」チャネル３０６（４）にサブスクライブして、ビデオゲーム１０４の実行中に１人以上のプロゲーマーに関連付けられたＡＲコンテンツ１２０を可視化することができる。この場合も、ユーザ１０６がサブスクライブしたい特定のプロゲーマーまたはゲーマーのグループを選択するために、ドロップダウンメニューまたは同様の選択メカニズムが、このタイプのＡＲチャネル３０６（４）で提供され得る。これらは、ユーザ１０６がサブスクライブすることができるＡＲチャネル３０６のタイプの単なる例である。
【００６６】
いくつかの実施形態では、ユーザ１０６は、ＡＲチャネル３０６にサブスクライブし得、（例えば、ＡＲコンテンツ１２０のコミュニティアクティビティの量が閾値を超えていること、視聴回数または賛成投票数が閾値を超えていること、ユーザ１０６の友人の間でＡＲコンテンツ１２０がトレンドになっていることなど）現在トレンドになっているＡＲコンテンツ１２０のみを選択し、可視化する。言い換えれば、１つ以上のＡＲチャネル３０６は、コミュニティの他のユーザからのＡＲコンテンツ１２０に対する興味の特定のレベルを示すヒューリスティックに基づいて、ユーザ１０６にとって興味があり得るそのＡＲチャネル３０６のＡＲコンテンツ１２０のサブセットを選択的に可視化するように構成され得る。いくつかの実施形態では、リモートコンピューティングシステム２００のＡＲモジュール２１２は、現在ビデオゲームをプレイしているプレーヤ１０６に、ゲームプレイ中にその場でＡＲチャネル３０６にサブスクライブするオプションを提供するように構成され得る。例えば、プレーヤ１０６の友人は、現在、トレジャーハントタイプのＡＲベースの二次ゲームをプレイしている可能性があり、クライアントマシン１００を使用するプレーヤ１０６は、友人が現在楽しんでいるのと同じトレジャーハントのためにＡＲコンテンツ１２０を提供するＡＲチャネル３０６にサブスクライブするためのポップアップオプションを提示され得る。トレジャーハントのためにＡＲチャネル３０６にサブスクライブすると、クライアントマシン１００は、クライアントマシン１００上で実行しているコアビデオゲーム１０４の上で実行される二次ゲームとしてトレジャーハントを提供するＡＲコンテンツ１２０をダウンロードすることができる。別の例として、ゲーマー１０６は、ビデオゲーム１０４をプレイし得、ビデオゲームをユーザのコミュニティにストリーミングしている可能性がある。クライアントマシン１００を使用するプレーヤ１０６は、現在プレイしているビデオゲーム１０４のゲームワールド内で、ビデオゲームワールド内で提示されたそのゲーマー１０６のアバターを、アバターを介した視聴ユーザ数（例えば、１万人の視聴者の場合は１０ｋ）とともに見ることができ、ＡＲコンテンツ１２０が現在トレンドになっていることを示す。クライアントマシン１００を使用するプレーヤ１０６は、アバターまたはアバターの隣のサブスクライブボタンをクリックして、ゲーマー１０６のゲームプレイの２Ｄまたは３Ｄブロードキャストを起動することができる。
【００６７】
再び図２を特に参照すると、ユーザ１０６が特定のＡＲチャネル３０６に関連付けられたサブスクライブボタンを選択することに応答して、クライアントマシン１００は、コンピュータネットワーク２１８を介してリモートコンピューティングシステム２００にサブスクリプション要求を送信することができる。リモートコンピューティングシステム２００は、サブスクリプション要求を受信すると、このフィルタリング基準を満たすＡＲコンテンツ１２０（例えば、サブスクライブされたＡＲチャネル３０６に関連付けられたＡＲコンテンツ１２０）を識別し、ＡＲコンテンツ１２０を用いて拡張フレーム１２２を生成する際に使用するために、このＡＲコンテンツ１２０をクライアントマシン１００に送信することができる。したがって、クライアントマシン１００は、１つ以上のフィルタリング基準を満たすＡＲコンテンツ１２０（例えば、サブスクライブされたＡＲチャネル３０６に関連付けられたＡＲコンテンツ１２０）を受信し、クライアントマシン１００は、ＡＲコンテンツ１２０を、関連データ（例えば、ゲームワールド座標２２６、インデックス２２８、カメラの向きデータ、ピクセルデータ２３２、イベントデータなどの空間データ）と関連付けてクライアントマシン１００のローカルメモリに記憶することができる。このようにして、ＡＲコンテンツ１２０は、それが拡張フレーム１２２でレンダリングされるときはいつでもローカルメモリから取り出すことが可能であり、これによって、待ち時間および／またはネットワーク帯域幅消費を低減することができる。
【００６８】
いくつかの実施形態では、最終的にクライアントマシンに送信されるＡＲコンテンツ１２０をフィルタリングするための１つ以上のフィルタリング基準は、ローカルメモリ消費および／またはネットワーク帯域幅消費を低減することを意味するフィルタリング基準をさらに含み得る。例えば、特定のゲームに関連付けられたＡＲコンテンツ１２０の量が非常に多く、関連するすべてのＡＲコンテンツをクライアントマシン１００のローカルメモリにダウンロードすることが困難であるシナリオを検討する。そのようなシナリオでは、関連するＡＲコンテンツ１２０は、最新性（例えば、ＡＲコンテンツ１２０の作成日）、人気（例えば、視聴回数、賛成投票数などに基づいて）、ＡＲコンテンツ１２０の作成者（例えば、一般ユーザよりも友人によって作成されたＡＲコンテンツ１２０を優先する）、ユーザ１０６について知られているユーザの興味（例えば、ユーザプロファイルで指定されたユーザの興味、使用履歴に基づいて、など）、データ量（例えば、データの閾値量より少ないＡＲコンテンツ１２０のみをダウンロードする）などに基づいてフィルタリングされ得る。このようにして、最も関連性の高いＡＲコンテンツ１２０を選択し、関連性の低いＡＲコンテンツ１２０を除外して、クライアントマシン１２０が最も関連性の高いＡＲコンテンツ１２０のみを受信するようにすることができる。
【００６９】
図３に描かれる別のＡＲ機能は、「ＡＲビューア」３０８機能である。この機能は、ユーザ１０６がＡＲビューア３０８リンクを選択してＡＲビューアを呼び出すことを可能にし、ＡＲビューアは、本明細書では、ビデオゲームコンテンツ１２４のコンテキストからＡＲコンテンツ１２０を表示することができるタイプのビデオゲーム１０４であると見なされる。例えば、ＡＲビューアは、ＡＲコンテンツ１２０を空白の背景に提示するか、またはゲームワールドのＳＬＡＭによって作成された３Ｄモデル（複数可）上のオーバーレイとして提示することができる。いずれにせよ、ＡＲビューア３０８機能の使用は、ビデオゲーム１０４のロードに依存せず、したがって、ＰＣゲームを実行するのに好適ではない可能性がある処理リソース（例えば、電話）を備えたクライアントマシン１００上で実行され得る。例示的な例では、ユーザ１０６は、ＡＲコンテンツ１２０で拡張されたビデオゲーム１０４をプレイしている間、友人が現在見ているものを見たいと思う可能性がある。ユーザ１０６は、その電話で、ＡＲビューア３０８リンクを選択することができる。ＡＲビューア３０８リンク、および友人の現在のゲームセッションへのサブリンクにより、クエリは、ゲームＩＤ、友人のゲームキャラクタが現在位置しているゲームワールド内の場所、およびカメラの向きとともにリモートコンピューティングシステム２００に送信される。このデータに基づいて、リモートコンピューティングシステム２００は、空間データベース２０４にアクセスし、そのカメラの向きでその場所で可視であるＡＲコンテンツ１２０を返し得る。このＡＲコンテンツ１２０は、ユーザの電話上で一連のフレームで（例えば、３Ｄで）提示することができ、ユーザ１０６は、友人が現在体験しているゲームワールドを走り回っている友人のキャラクタを見回して見ることができる。このようにして、ユーザ１０６は、友人が遠隔地で現在体験しているＡＲコンテンツ１２０を観戦することができる。
【００７０】
本明細書で説明するプロセスは、ロジックフローグラフ内のブロックの集合として示され、ハードウェア、ソフトウェア、またはそれらの組み合わせで実装できる一連の動作を表す。ソフトウェアのコンテキストでは、ブロックは、１つ以上のプロセッサによって実行されると、列挙された動作を実施するコンピュータ実行可能命令を表す。一般に、コンピュータ実行可能命令は、特定の機能を実施するか、または特定の抽象データタイプを実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。動作が説明される順序は、限定として解釈されることを意図するものではなく、説明される任意の数のブロックは、プロセスを実装するために任意の順序で、および／または並列に組み合わせることができる。
【００７１】
図４は、作成者がＡＲコンテンツを作成するためのコンテンツ作成インターフェースを提供し、作成されたＡＲコンテンツを空間データベースに記憶し、１つ以上のフィルタリング基準に基づいて、選択したＡＲコンテンツを要求側クライアントマシンに送信するための例示的なプロセス４００の流れ図である。考察目的で、プロセス４００を前の図を参照して説明する。
【００７２】
４０２で、リモートコンピューティングシステム２００は、ユーザコンピューティングデバイス２２０が新しいＡＲコンテンツ１２０を作成するためのインターフェース（例えば、ＡＰＩ）を提供することができる。このコンテンツ作成インターフェースは、本明細書に記載されるように、任意の好適なタイプのＡＲコンテンツ１２０を作成するために、ユーザコンピューティングデバイス２２０を使用して作成者２１６によって使用可能であり得る。
【００７３】
サブブロック４０４によって示されるように、いくつかの実施形態では、ブロック４０２でコンテンツ作成インターフェースを提供することにより、作成者２１６は、実行可能プログラム（複数可）への入力として提供されるビデオゲームデータ１２８に基づいて対話型ＡＲコンテンツ１２０を生成するように構成された１つ以上の実行可能プログラム（例えば、プラグイン）を作成することが可能であり得る。そのようなビデオゲームデータ１２８は、これらに限定されないが、とりわけ、ビデオゲーム内のプレーヤ制御キャラクタまたは何らかの他のオブジェクトの現在の場所を指定する空間データ、ゲーム関連イベントの発生を示すイベントデータ（例えば、弾丸が発射される、ゲームキャラクタが車両のドアウェイに出入りするなど）を含み得る。
【００７４】
４０６で、リモートコンピューティングシステム２００は、インターフェースを介して、およびユーザコンピューティングデバイス２２０から、新しいＡＲコンテンツ１２０を作成するための命令を受信することができる。これらの命令は、ビデオゲームのゲームＩＤ２２４、ＡＲコンテンツ１２０がビデオゲーム、イベントデータなどのゲームワールド内に提示されるゲームワールド座標２２６などの特別なデータ２２７など、作成者２１６がＡＲコンテンツのタイプおよびＡＲコンテンツに関連する他のパラメータを指定することを可能にするグラフィカルユーザインターフェースの形態でインターフェースに提供されるユーザ入力を含み得る。
【００７５】
４０８で、リモートコンピューティングシステム２００は、新しいＡＲコンテンツ１２０を空間データベース２０４に記憶することができる。サブブロック４１０によって示されるように、空間データベース２０４における新しいＡＲコンテンツ１２０の記憶は、新しいＡＲコンテンツ１２０を空間データベース２０４内の関連データと関連付けることを伴い得る。関連データは、これには限定されないが、ビデオゲームのゲームＩＤ２２４、ビデオゲームのゲームワールド内のゲームワールド座標２２６、ゲームワールド座標２２６がそうでなければ曖昧である場合にゲームワールド座標２２６の曖昧さを解消するためのインデックス２２８、カメラの向きデータ（例えば、キャプチャされたスクリーンショットに関連付けられたカメラの向き）、ピクセルデータ２３２（例えば、キャプチャされたスクリーンショットに関連付けられたピクセルデータ）、イベントデータなどを含み得る。
【００７６】
サブブロック４１２によって示されるように、空間データベース２０４における新しいＡＲコンテンツ１２０の記憶は、本明細書に記載されるように、新しいＡＲコンテンツ１２０を１つ以上のＡＲチャネル３０６と関連付けることを伴い得る。このようにして、ユーザ１０６は、ＡＲチャネル３０６にサブスクライブして、ビデオゲームのゲームワールド内に表示することができる特定のＡＲコンテンツ１２０を受信することができる。
【００７７】
４１４で、リモートコンピューティングシステム２００は、クライアントマシン１００からコンピュータネットワーク２１８を介して、サブスクライブされたＡＲチャネル（複数可）３０６としてＡＲチャネル（複数可）３０６にサブスクライブするためのサブスクリプション要求をユーザアカウントから受信することができる。ＡＲチャネル３０６の例は、図３を参照して本明細書に記載されている。
【００７８】
４１６で、リモートコンピューティングシステム２００は、クライアントマシン１００からコンピュータネットワーク２１８を介して、ビデオゲーム１０４に関連付けられたビデオゲームデータ１２８を受信することができる。このビデオゲーム１０４は、クライアントマシン１００を介して実行しているビデオゲームであり得る（例えば、クライアントマシン１００上でビデオゲームクライアント１１６を起動し、ビデオゲームクライアント１１６を介してビデオゲーム１０４を実行し、ＡＲコンポーネント１０２に、リモートコンピューティングシステム２００にビデオゲームデータ１２８を送信させることによって）。
【００７９】
４１８で、リモートコンピューティングシステム２００は、空間データベース２０４に記憶されている利用可能なＡＲコンテンツ１２０の中から、ビデオゲームデータ１２８に少なくとも部分的に基づいて、ゲーム固有のＡＲコンテンツ１２０を識別し得る。例えば、空間データベース２０４内のＡＲコンテンツ１２０のレコードは、クライアントマシン１００上で実行している特定のビデオゲーム１０４のゲームＩＤ２２４、ゲームワールドのレンダリングされる部分に関連付けられる空間データ２２７などに関連付けられ得、そのＡＲコンテンツ１２０は、クライアントマシン１００上で実行している特定のビデオゲーム１０４、およびビデオゲームデータ１２８によって示されるビデオゲーム１０４の現在の状態に関連するので、ブロック４１８で識別され得る。
【００８０】
サブブロック４２０で、リモートコンピューティングシステム２００は、問題のユーザアカウントのサブスクライブされたＡＲチャネル（複数可）３０６に基づいて、ブロック４１８で識別されたゲーム固有のＡＲコンテンツ１２０をフィルタリングすることができる。これは、サブスクライブされたＡＲチャネル３０６に関連付けられたゲーム固有のＡＲコンテンツ１２０のサブセットをもたらす可能性がある。例えば、問題のビデオゲーム１０４に関連付けられたＡＲコンテンツ１２０は、複数のＡＲチャネル３０６に関係し得るので、問題のユーザアカウントがサブスクライブしていないＡＲチャネル３０６を使用して、無関係なＡＲコンテンツ１２０を除外することができ、残りのゲーム固有のＡＲコンテンツ１２０のサブセットは、サブスクライブされたＡＲチャネル（複数可）３０６に関連付けられたものであり得る。サブブロック４２２で、リモートコンピューティングシステム２００は、１つ以上のフィルタリング基準に基づいてゲーム固有のＡＲコンテンツ１２０をさらにフィルタリングして、最終的にクライアントマシン１００に送信されるゲーム固有のＡＲコンテンツ１２０のサブセットを取得することができる。ゲーム固有のＡＲコンテンツ１２０のサブセットの人気が人気閾値よりも大きい場合、例示的なフィルタリング基準がブロック４２２で満たされ得る。この例では、人気は、ゲーム固有のＡＲコンテンツ１２０のサブセットに関連付けられた視聴回数または賛成投票数のうちの少なくとも１つに基づいて、および／またはユーザの以前のアクティビティ、またはユーザのソーシャルネットワーク関係に基づいて決定され得る。ユーザアカウントに関連付けられたアクセス権に基づいて、ＡＲコンテンツ１２０の作成日に基づいて（閾値年齢よりも古いＡＲコンテンツをフィルタリングすること）、ユーザアカウントに関連付けられたユーザの興味に基づいて、時間帯に基づいて、クライアントマシン１００またはユーザアカウントに関連付けられた地理的場所に基づいて、ゲーム固有のＡＲコンテンツ１２０をフィルタリングすることなど、本明細書に記載されるような他のフィルタリング基準もまた企図される。
【００８１】
４２４で、リモートコンピューティングシステム２００は、コンピュータネットワーク２１８を介して、ゲーム固有のＡＲコンテンツ１２０のサブセットを、要求側クライアントマシン１００に送信することができる。このようにして、クライアントマシン１００は、ビデオゲームの実行中に、拡張フレーム１２２内のビデオゲームコンテンツ１２４の「上」にレンダリングされ得る関連するＡＲコンテンツ１２０へのアクセスを提供される。ネットワーク２１８を介してリアルタイムＡＲコンテンツ１２０をクライアントマシン１００に提供するために、ゲーム実行中に少なくともブロック４１６〜４２４がリアルタイムで発生し得ることを理解されたい。いくつかの実施形態では、プロセス４００は、ビデオゲームが実行を開始する時間の近くで実施され、その結果、クライアントマシン１００は、ゲーム実行中にアクセスするためにローカルに記憶できるフィルタリングされたゲーム固有のＡＲコンテンツ１２０を受信する。
【００８２】
いくつかの実施形態では、ブロック４１８で、リモートコンピューティングシステム２００は、空間データベース２０４に記憶され、ビデオゲームデータ１２８に少なくとも部分的に基づく利用可能なＡＲコンテンツの中から、サブスクライブされていないＡＲチャネル３０６に関連付けられたゲーム固有のＡＲコンテンツ１２０の追加のサブセットをさらに識別することができる。このシナリオでは、ブロック４２４で、リモートコンピューティングシステム２００はまた、ゲーム固有のＡＲコンテンツの追加のサブセットを、ゲーム固有のＡＲコンテンツのサブセットから視覚的に区別する方法で、クライアントマシン１００上に提示するために、コンピュータネットワークを介して、ゲーム固有のＡＲコンテンツ１２０の追加のサブセットをクライアントマシン１００に送信することができる。すなわち、ユーザ１０６がまだサブスクライブしていないＡＲコンテンツ１２０は、微細な方法で提示され得る（例えば、ユーザがそれをクリックすることに興味がある場合、ＡＲコンテンツが利用可能であることを示す比較的小さなアイコンを介して）。このサブスクライブされていないＡＲコンテンツは、ビデオゲームデータ１２８に基づいて空間的に関連し得る。
【００８３】
図５は、ビデオゲーム１０４の実行中に、リモートコンピューティングシステム２００からＡＲコンテンツを受信し、ＡＲコンテンツ１２０を含む拡張フレーム１２２を含むフレームをレンダリングするための例示的なプロセス５００の流れ図である。考察目的で、プロセス５００を前の図を参照して説明する。
【００８４】
５０２で、クライアントマシン１００は、コンピュータネットワーク２１８を介して、リモートコンピューティングシステム２００に、サブスクライブされたＡＲチャネル（複数可）３０６としてＡＲチャネル（複数可）３０６にサブスクライブするためのサブスクリプション要求を送信することができる。ＡＲチャネル３０６の例は、図３を参照して本明細書に記載されている。
【００８５】
５０４で、クライアントマシン１００は、ビデオゲーム１０４の実行を開始することができる。例えば、クライアントマシン１００のユーザ１０６は、ビデオゲームクライアント１１６を起動し、ビデオゲームライブラリ１１８からビデオゲーム１０４を選択して、ビデオゲーム１０４の実行を開始することができる。
【００８６】
５０６で、クライアントマシン１００は、コンピュータネットワーク２１８を介して、リモートコンピューティングシステム２００に、ビデオゲーム１０４のゲームＩＤ２２４を含む要求を送信することができる。これは、クライアントマシン１００上でビデオゲーム１０４の実行を開始するユーザ１０６に応答する自動化された論理であり得る。ゲームＩＤ２２４は、リモートコンピューティングシステム２００が、ゲームＩＤ２２４に関連付けられたゲーム固有のＡＲコンテンツ１２０をルックアップすることを可能にする。
【００８７】
５０８で、クライアントマシン１００は、コンピュータネットワーク２１８を介して、関連データとともに、リモートコンピューティングシステム２００からゲーム固有のＡＲコンテンツ１２０のサブセットを受信することができる。ブロック５０８で受信されたゲーム固有のＡＲコンテンツ１２０のサブセットは、ゲームＩＤ２２４およびサブスクライブされたＡＲチャネル（複数可）３０６に少なくとも部分的に基づいて、リモートコンピューティングシステム２００によって選択された可能性がある。したがって、ゲーム固有のＡＲコンテンツ１２０のサブセットは、ビデオゲーム１０４とサブスクライブされたＡＲチャネル（複数可）３０６との両方に関連付けられ得る。
【００８８】
サブブロック５１０で、クライアントマシン１００は、クライアントマシン１００のローカルメモリに、関連データに関連するゲーム固有のＡＲコンテンツ１２０のサブセットを記憶することができる。関連データは、これらに限定されないが、空間データ２２７、ピクセルデータ２３２、イベントデータなどを含み得、これらは、ゲーム実行中に、拡張フレーム１２２内の特定のＡＲコンテンツ１２０をいつレンダリングするかを決定するために使用され得る。
【００８９】
５１２で、クライアントマシン１００は、ビデオゲームクライアント１１６を介して、ビデオゲーム１０４の実行中に一連のフレームをレンダリングすることができる。例えば、ビデオゲーム１０４が第１のプロセス（またはスレッド（複数可））で実行されるとき、ビデオゲーム１０４は、一連のフレームでビデオゲームコンテンツ１２４を出力することができる。一連のフレーム内の個々のフレームをレンダリングするためにブロック５１２で繰り返し実施され得る動作は、サブブロック５１４〜５２４によって示されている。
【００９０】
５１４で、ＡＲコンポーネント１０２は、ビデオゲーム１０４とは別個のプロセス（例えば、スレッド（複数可））としてクライアントマシン１００上でビデオゲームクライアント１１６を介して実行し、ビデオゲーム１０４から、ビデオゲーム１０４の現在の状態に関するビデオゲームデータ１２８を取得することができる。このビデオゲームデータ１２８は、ビデオゲーム１０４のゲームワールド内のゲームワールド座標２２６に関連する空間データ２２７であり得る。例えば、空間データ２２７は、ビデオゲーム１０４のゲームワールド内のプレーヤ制御キャラクタの現在の場所、今後のフレームでレンダリングされるゲームワールドの一部のゲームワールド座標のセット２２６、インデックス２２８、プレーヤ制御キャラクタに関連付けられた仮想カメラの現在の向きなどを指定してもよい。ビデオゲームデータ１２８は、ビデオゲーム１０４に関連付けられたゲーム関連イベントを指定するイベントデータであり得る。いくつかの実施形態では、ブロック５１４でビデオゲーム１０４からビデオゲームデータ１２８を取得することは、必要に応じて、フレームを拡張フレーム１２２としてレンダリングするためにＡＲコンポーネント１０２からＡＲコンテンツ１２０を要求するためにビデオゲーム１０４によって行われた関数呼び出しの一部として、ＡＲコンポーネント１０２がビデオゲーム１０４からビデオゲームデータ１２８を受信することを含んでもよい。
【００９１】
５１６で、フレームは、ＡＲコンテンツ１２０のない通常のフレームとして（すなわち、ビデオゲームコンテンツ１２４のみで）レンダリングされ得る。５１８で、ＡＲコンポーネント１０２は、ビデオゲームデータ１２８に基づいてＡＲコンテンツ１２０を識別できるかどうかを決定することができる。例えば、ＡＲコンポーネント１０２は、ブロック５１４で取得されたビデオゲームデータ１２８の少なくとも一部を、アクセス可能なＡＲコンテンツ１２０とともに記憶された関連データ（例えば、クライアントマシン１００がブロック５０８で受信したゲーム固有のＡＲコンテンツ１２０のサブセット）と比較してもよい。ＡＲコンポーネント１０２が、表示されるべき識別可能なＡＲコンテンツ１２０がないと決定した場合、プロセス５００は、ブロック５１８からの「いいえ」ルートをたどって、ブロック５２０の次のフレームに進むことができる。一方、ＡＲコンポーネント１０２が、表示されるべき識別可能なＡＲコンテンツ１２０があると決定した場合、ＡＲコンポーネント１０２は、ビデオゲームデータ１２８に少なくとも部分的に基づいて（例えば、ビデオゲームデータ１２８をＡＲコンテンツ１２０とともに記憶された関連データ比較することによって）ＡＲコンテンツ１２０を識別し、プロセス５００は、ブロック５１８からブロック５２２への「はい」ルートをたどることができる。ＡＲコンテンツ１２０の識別は、ビデオゲーム１０４以外のソースから（例えば、クライアントマシン１００のローカルメモリから、リモートコンピューティングシステム２００からリアルタイムでなど）ＡＲコンテンツ１２０を取り出し／受信することを含み得る。ネットワーク２１８を介したＡＲコンテンツ１２０のリアルタイム取り出しの場合、ブロック５０８でのＡＲコンテンツの受信は、ブロック５１８でのＡＲコンテンツ１２０の識別と併せて（例えば、それに応答して）発生し得る。
【００９２】
５２２で、クライアントマシン１００は、ＡＲコンポーネント１０２を介して、ビデオゲーム１０４によって出力されたビデオゲームコンテンツ１２４と、ブロック５１６で識別され、取り出されたＡＲコンテンツ１２０と、を含む拡張フレーム１２２を生成することができる。前述のように、拡張フレーム１２２の生成は、ＡＲコンテンツ１２０をビデオゲームコンテンツ１２４にオーバーレイすることを含み得る。いくつかの実施形態では、ブロック５２２での動作は、所与のフレームのビデオゲームコンテンツ１２４に関連付けられた深度データを取得すること、および深度データに少なくとも部分的に基づいて拡張フレーム１２２内のビデオゲームコンテンツ１２４およびＡＲコンテンツ１２０をマージすることを含む。例えば、ＡＲコンテンツ１２０は、いくつかのビデオゲームコンテンツ１２４（例えば、不透明なグラフィックス）の上、および他のビデオゲームコンテンツ１２４（例えば、半透明のグラフィックス）の下に階層化され得る。
【００９３】
５２４で、クライアントマシン１００は、ＡＲコンポーネント１０２を介して、クライアントマシン１００に関連付けられたディスプレイ（複数可）１１０上に拡張フレーム１２２をレンダリングし得、次いで、ブロック５２０からブロック５１４への矢印で示されるように、ブロック５１４〜５２４を反復するために、ブロック５２０で次のフレームに進んでもよい。
【００９４】
プレーヤ１０６は、１つ以上の異なるＡＲチャネル３０６にサブスクライブすることによって、プロセス５００中いつでもＡＲチャネル３０６を効果的に変更することができ、これにより、クライアントマシン１００は、新しいサブスクリプション要求をリモートコンピューティングシステム２００に送信し、その結果、異なるまたは追加のＡＲコンテンツ１２０は、新たにサブスクライブされたＡＲチャネル（複数可）３０６に基づいて、リモートコンピューティングシステム２００から受信することができる。このようにして、プレーヤ１０６は、ゲームプレイ中にＡＲチャネル３０６を切り替えて、ビデオゲームの実行中に拡張フレーム１２２で提示される異なるＡＲコンテンツ１２０を有することができる。
【００９５】
図６は、ビデオゲーム１０４の実行中に空間的に関連するＡＲコンテンツ１２０でフレームを拡張するための例示的なプロセス６００の流れ図である。プロセス６００の動作は、ビデオゲームの実行中にレンダリングされる一連のフレーム内の拡張フレームとして個々のフレームをレンダリングすることを伴い得る。考察目的で、プロセス６００を前の図を参照して説明する。
【００９６】
６０２で、ＡＲコンポーネント１０２は、クライアントマシン１００上でビデオゲームクライアント１１６を介して実行し、ビデオゲーム１０４から、ビデオゲーム１０４の現在の状態に関する空間データ２２７の形態のビデオゲームデータ１２８を取得することができる。例えば、ブロック６０２で取得された空間データ２２７は、これに限定されないが、ビデオゲーム１０４のゲームワールド内のプレーヤ制御キャラクタ１２６の現在の座標（すなわち、現在の場所）、今後のフレームでレンダリングされるゲームワールドの一部のゲームワールド座標のセット２２６、ゲームＩＤ２２４、状態２２８、仮想カメラの現在のカメラの向き（例えば、プレーヤ制御キャラクタ１２６に関連付けられた仮想カメラ）、またはそれらの任意の組み合わせなど、現在のゲームワールド座標に関連し得る。
【００９７】
６０４で、ＡＲコンポーネント１０２は、空間データ２２７に少なくとも部分的に基づいて、利用可能なＡＲコンテンツ（例えば、リモートコンピューティングシステム２００から受信されたゲーム固有のＡＲコンテンツ１２０のサブセット）からＡＲコンテンツ１２０を識別し得る。
【００９８】
サブブロック６０６で、ＡＲコンテンツ１２０は、受信された空間データ２２７におけるゲームワールド座標２２６に少なくとも部分的に基づいて識別され得る。例えば、ＡＲコンポーネント１０２は、空間データ２２７のゲームワールド座標２２６のセットに含まれるか、またはプレーヤ制御キャラクタ１２６の現在の場所から閾値距離内にあり、仮想カメラの現在の向きから決定されるように、ゲームキャラクタ１２６の視野内にある、ゲームワールド座標２２６に関連付けられたＡＲコンテンツ１２０を識別し得る。
【００９９】
サブブロック６１０で、ＡＲコンテンツ１２０は、空間データ２２７で指定されたゲームＩＤ２２４に少なくとも部分的に基づいて識別され得る。例えば、ＡＲコンポーネント１０２は、空間データ２２７内のゲームＩＤ２２４と一致するゲームＩＤに関連付けられているＡＲコンテンツ１２０を識別し得る。このゲームＩＤは、ゲームワールドが空間データ２２７で指定されたゲームワールド座標２２６の複数のインスタンスを含む場合、ゲームワールド座標２２６の複数のインスタンス間での曖昧さを解消するために使用可能であり得る。
【０１００】
６１２で、クライアントマシン１００は、ＡＲコンポーネント１０２を介して、ブロック６０４で識別（および取り出し）されたＡＲコンテンツ１２０（および場合によってはビデオゲーム１０４によって出力されるビデオゲームコンテンツ１２４）を含む拡張フレーム１２２を生成することができる。サブブロック６１４によって示されるように、識別されたＡＲコンテンツ１２０が３Ｄスクリーンショット（例えば、深度データを含む画像）である場合、ブロック６１２での拡張フレーム１２２の生成は、３Ｄスクリーンショットに含まれるデータ（例えば、ピクセルデータの２Ｄアレイと深度バッファからの深度データ）に少なくとも部分的に基づいて、３Ｄスクリーンショットに呈されるゲームワールドの一部の３Ｄモデルを構築することを含み得る。結果として得られる３Ｄモデルは、ブロック６１２で拡張フレーム１２２内のビデオゲームコンテンツ１２４にオーバーレイすることができる。例えば、識別されたＡＲコンテンツ１２０は、クライアントマシン上で現在実行しているビデオゲーム１０４のゲームワールドの３Ｄスクリーンショット、または異なるビデオゲームの異なるゲームワールドであり得る。いずれの場合も、３Ｄスクリーンショットは、別のゲーマー１０６が、おそらく以前に、３Ｄスクリーンショットがキャプチャされたその瞬間にゲームワールドの完全なコンテキストをキャプチャすることによって、キャプチャされた可能性がある。ＡＲコンテンツ１２０としてビデオゲームコンテンツ１２４にオーバーレイされる構築された３Ｄモデルは、現在実行しているビデオゲーム１０４のプレーヤ１０６が構築された３Ｄモデルの周りをナビゲート（例えば、３Ｄスクリーンショットでキャプチャされたオブジェクトの周りを移動）して、他のゲーマー１０６によってキャプチャされたゲームワールドの「スライス」を、３Ｄスクリーンショットがキャプチャされたときに他のゲーマー１０６が見たものを模倣する方法で見ることを可能にし得る。サブブロック６１６によって示されるように、識別されたＡＲコンテンツ１２０が複数の連続する３Ｄスクリーンショットである場合、ブロック６１２での拡張フレーム１２２の生成は、複数の連続する３Ｄスクリーンショットに少なくとも部分的に基づいて３Ｄビデオの再生を開始することを含み得る。
【０１０１】
６１８で、クライアントマシン１００は、ＡＲコンポーネント１０２を介して、クライアントマシン１００に関連付けられたディスプレイ（複数可）１１０上に拡張フレーム１２２をレンダリングし、次いで、ビデオゲーム１０４の実行中に一連のフレームをレンダリングする反復プロセスの一部として次のフレームに進むことができる。
【０１０２】
図７は、ビデオゲーム１０４の実行中に動的および／または対話型ＡＲコンテンツ１２０でフレームを拡張するための例示的なプロセス７００の流れ図である。プロセス７００の動作は、ビデオゲームの実行中にレンダリングされる一連のフレーム内の拡張フレームとして個々のフレームをレンダリングすること伴い得る。考察目的で、プロセス７００を前の図を参照して説明する。
【０１０３】
７０２で、ＡＲコンポーネント１０２は、クライアントマシン１００上のビデオゲームクライアント１１６を介して実行され、本明細書で説明されるように、ビデオゲーム１０４の現在の状態に関するビデオゲームデータ１２８を取得することができる。サブブロック７０４によって示されるように、ビデオゲームデータ１２８を取得することは、今後のフレームでゲームワールドのレンダリングされる部分の３Ｄモデルを取得することを含み得る。この３Ｄモデルは、高密度で時間的に連続したビデオストリーム（例えば、深度バッファデータの有無にかかわらずカラーデータを含む）に基づいてビデオゲームのゲームワールドのための３Ｄモデルを以前に生成し、クライアントマシン１００がオンデマンドでアクセスできるように、この３Ｄモデルを記憶した可能性があるリモートコンピューティングシステム２００から取り出すことができる。ＳＬＡＭプロセスは、オフラインで実施され、多くの画像からゲームワールドジオメトリ（例えば、ゲームワールドの３Ｄモデル）を漸進的に再構築するために使用され得る。このバックエンドプロセスは、ビデオゲームプラットフォームのサービスプロバイダによって、ゲーム開発者によって、および／またはプレーヤクライアントマシン１００からゲームワールドの画像をクラウドソーシングすることによって行われ得る。
【０１０４】
７０６で、ＡＲコンポーネント１０２は、ビデオゲームデータ１２８に少なくとも部分的に基づいて、利用可能なＡＲコンテンツ（例えば、リモートコンピューティングシステム２００から受信されたゲーム固有のＡＲコンテンツ１２０のサブセット）からＡＲコンテンツ１２０を識別し得る。ＡＲコンテンツ１２０を識別するために、ＡＲコンポーネント１０２は、ビデオゲームデータ１２８を使用して利用可能なＡＲコンテンツからＡＲコンテンツ１２０のレコードをルックアップし得、ＡＲコンテンツ１２０のレコードが、動的および／または対話型ＡＲコンテンツ１２０を生成するように構成された実行可能プログラムを提供することを決定し得る。この実行可能プログラムは、本明細書で説明されるように、プラグインを使用して作成された可能性がある。
【０１０５】
サブブロック７０８で、ＡＲコンポーネント１０２は、ビデオゲームデータ１２８に少なくとも部分的に基づいて動的および／または対話型ＡＲコンテンツ１２０を生成するように構成された実行可能プログラムへの入力としてビデオゲームデータ１２８（例えば、ブロック７０４で取得された３Ｄモデル）を提供し得る。いくつかの実施形態では、ＡＲコンポーネント１０２は、セキュリティサンドボックスを作成し、クライアントマシン１００のユーザ１０６がサブスクライブするＡＲチャネル（複数可）に対応する１つ以上の実行可能プログラムまたはプラグイン（例えば、ＤＬＬ）をロードし、プラグインへの入力としてビデオゲームデータ１２８を提供して、プラグインにそれぞれのロジックを実行させ、ＡＲコンテンツ１２０を返すようにし得る。例えば、ＤＬＬのフォルダがあり得、各ＤＬＬは異なるプラグインを表す。ユーザ１０６がＡＲチャネル（複数可）にサブスクライブすると、ＡＲコンポーネント１０２は、セキュリティサンドボックス内に対応するＤＬＬ（複数可）をロードし、次いで、プロセス７００を実行し、サブブロック７０８で、ＡＲコンポーネント１０２は、ロードされた対応するＤＬＬ（複数可）への入力としてビデオゲームデータ１２８を提供し得る。
【０１０６】
サブブロック７１０で、ＡＲコンポーネント１０２は、実行可能プログラム（複数可）からの出力として、識別されたＡＲコンテンツを動的および／または対話型ＡＲコンテンツ１２０として受信することができる。ＡＲコンポーネント１０２はまた、実行可能プログラム（複数可）からの出力として、拡張フレーム１２２内に動的および／または対話型ＡＲコンテンツ１２０を配置するための位置データを受信し得、位置データは、ゲームワールドのレンダリングされる部分の３Ｄモデルに少なくとも部分的に基づく。
【０１０７】
７１２で、クライアントマシン１００は、ＡＲコンポーネント１０２を介して、ビデオゲーム１０４によって出力されたビデオゲームコンテンツ１２４と、ブロック７０６で識別されたＡＲコンテンツ１２０と、を含む拡張フレーム１２２を生成することができる。実行可能プログラムへの入力として３Ｄモデルを提供することにより、動的な（例えば、移動および／またはアニメーション化する）ＡＲオブジェクトを、ゲームワールドのジオメトリおよび／またはトポロジに関して適切である方法でゲームワールドに自動的に注入できる。例えば、移動またはアニメーション化するＡＲゲームキャラクタは、バリア、壁、ドアなどのゲームワールド内の仮想オブジェクトとの衝突を回避することによって、および／または壁に対して、床になど、ＡＲコンテンツを配置することによって、ゲームワールド内で移動することができる。
【０１０８】
７１８で、クライアントマシン１００は、ＡＲコンポーネント１０２を介して、クライアントマシン１００に関連付けられたディスプレイ（複数可）１１０上に拡張フレーム１２２をレンダリングし得、次いで、ビデオゲーム１０４の実行中に一連のフレームをレンダリングする反復プロセスの一部として次のフレームに進むことができる。
【０１０９】
図８は、開示されたＡＲシステムを使用して、シングルプレーヤビデオゲームにマルチプレーヤアスペクトを追加するための例示的な技法を示す図である。図８では、第１のクライアントマシン１００（１）および第２のクライアントマシン１００（２）は各々、コンピュータネットワーク２１８を介して、リモートコンピューティングシステム２００（図８には図示せず）と、および他のクライアントマシン１００とデータを交換するために、コンピュータネットワーク２１８に接続されている。図８の例では、第１のプレーヤ１０６（１）は、第１のクライアントマシン１００（１）上でビデオゲーム１０４をプレイしており、第２のプレーヤ１０６（２）もまた、第２のクライアントマシン１００（２）上で同じビデオゲーム１０４をプレイしている。ビデオゲーム１０４は、いかなるネットワークコードもなく、各クライアントマシン１００上で独立して実行することができ、その結果、ビデオゲーム１０４を実行するためにネットワーク接続に依存することはない。この意味で、各クライアントマシン上で実行されるビデオゲーム１０４は、いくつかの例では、個々のプレーヤ１０６が単独でプレイできるシングルプレーヤビデオゲームであり得る。
【０１１０】
しかしながら、ネットワーク接続は、図８に示されるように、リモートコンピューティングシステム２００を介して、同じシングルプレーヤビデオゲーム１０４を実行しているクライアントマシン１００間でデータ８００を転送することを可能にする。これにより、ゲーム開発者に依存せずにシングルプレーヤビデオゲームにマルチプレーヤアスペクトを追加して、マルチプレーヤアスペクトをビデオゲームに組み込むことが可能であり、これは、コストのかかる作業である可能性がある。代わりに、ビデオゲーム１０４のコードは、ビデオゲーム１０４の現在の状態に関するデータ８００を繰り返し放出するように構成され得る（例えば、フレームごと、２フレームごと、数フレームごとなどにデータ８００を放出する）。第２のクライアントマシン１００（２）上で実行しているビデオゲーム１０４から放出されるこのデータ８００は、コンピュータネットワーク２１８を介して、ローカルＡＲコンポーネント１０２を実行している第１のクライアントマシン１００（１）に送信され得る。第１のクライアントマシン１００（１）上のＡＲコンポーネント１０２は、第２のクライアントマシン１００（２）から送信されたデータ８００を受信し得、データ８００を処理して、第１のクライアントマシン１００（１）上でレンダリングされたゲームワールドの第１のインスタンスにマルチプレーヤアスペクトを追加するＡＲコンテンツ１２０（１）を含む拡張フレーム１２２を生成することができる。例えば、第２のプレーヤ１０６（２）のゲームキャラクタのゴースト画像をＡＲコンテンツ１２０（１）として第１のクライアントマシン１００（１）のスクリーン上にレンダリングして、第２のプレーヤ１０６（２）のゲームキャラクタが第１のプレーヤ１０６（１）のゲームキャラクタに対してどこにあるかを第１のプレーヤ１０６（１）が見ることができる「スピードランニング」のようなマルチプレーヤアスペクトを可能にすることができる。このようにして、第１のプレーヤ１０６（１）は、ビデオゲーム１０４自体のコードにマルチプレーヤアスペクトを実装する必要なしに、第２のプレーヤ１０６（２）と競争させることができる。ビデオゲーム１０４が各クライアントマシン１００上でプレイされるときに、ネットワーク２１８を介してリアルタイムでデータ８００を送信することによって、これらのマルチプレーヤアスペクトをリアルタイムで追加することができる。追加的に、または代替的に、第２のプレーヤ１０６（２）のゲームパフォーマンスは、後で第１のクライアントマシン１００（１）上でビデオゲーム１０４の実行中にＡＲコンテンツストリームとして保存し、再生することができる。このようにして、第１のクライアントマシン１００（１）でのゲームプレイ中にフレームを拡張するために取り出され、使用されるＡＲコンテンツ１２０（１）は、同じビデオゲーム１０４における第２のプレーヤ１０６（２）のゲームパフォーマンスのライブまたは再生ストリームであり得る。このようにして、第１のプレーヤ１０６（１）は、リアルタイムで競争することができ、および／または第１のプレーヤ１０６（１）は、第２のプレーヤ１０６（２）のゲームパフォーマンスの再生に対して何度も練習し続けることができる。いくつかの実施形態では、第１のクライアントマシン１００（１）上でレンダリングされた拡張フレーム１２２を含むフレームは、第１のプレーヤ１０６（１）によって見られるように、他の人が競争体験を再生できるように、ビデオクリップとして保存され、リモートコンピューティングシステム２００にアップロードされ得る。
【０１１１】
別のアスペクトでは、ゲームワールド８０２（２）は、第１のクライアントマシン１００（１）上のゲームワールド８０２（１）にスティッチされて、２つのゲームワールド８０２（１）および８０２（２）の座標系を整列させるように、２つのゲームワールド８０２（１）および８０２（２）を効果的に一緒にミックスさせることができる。例えば、２つのプレーヤ制御キャラクタ８２６（１）および８２６（２）が、同じビデオゲーム１０４の同じゲームワールド内で互いに近くに（例えば、閾値距離内に）位置する場合、同時に、第１のクライアントマシン１００（１）は、第２のクライアントマシン１００（２）から、第２のゲームワールド８０２（２）の３Ｄスクリーンショット（複数可）を、３Ｄスクリーンショット（複数可）に描かれた第２のゲームワールド８０２（２）のその部分（複数可）の一連の座標とともに受信することができ、第１のクライアントマシン１００（１）のＡＲコンポーネント１０２は、２つのゲームワールドを一緒にミックスさせるために、受信されたスクリーンショットのグラフィックスを、第１のゲームワールド８０２（１）の現在の座標のセットと整列させることができる。例えば、第１のプレーヤ１０６（１）は、第２のゲームワールド８０２（２）において第２のプレーヤ１０６（２）によって見られるＡＲコンテンツ１２０（２）としてオブジェクトを見ることができ得る。拡張フレーム１２２内の２つのゲームワールド８０２（１）と８０２（２）との間の違いは、ＡＲコンテンツ１２０としてレンダリングされたオブジェクトまたはグラフィックスを強調表示することによって視覚的に示すことができる（例えば、異なる色を使用するなど）。図８では、２つのゲームワールド８０２（１）と８０２（２）との間の違いは、破線で示される第２のゲームワールド８０２（２）からのオブジェクトによって拡張フレーム１２２に示され、一方、第１のゲームワールド８０２（１）におけるオブジェクトは実線で示されている。ＡＲコンテンツ１２０が、そうでなければ拡張フレーム１２２の中で何がＡＲコンテンツ１２０であるかの識別を困難にする方法で第１のゲームワールド１００２（１）にスティッチされているとき、視覚的な区別は、第１のプレーヤ１０６（１）がビデオゲームコンテンツ１２４とＡＲコンテンツ１２０とを区別するのに役立つ可能性がある。
【０１１２】
図８に示される技法の動作を示すために、ここで図９を参照し、図９は、ＡＲシステムを使用して、コンピュータネットワーク２１８を介したクライアントマシン１００間でのデータ交換により、シングルプレーヤゲームにマルチプレーヤアスペクトを追加する例示的なプロセス９００の流れ図である。ゲームワールド８０２（１）の第１のインスタンスが、第１のクライアントマシン上でビデオゲーム１０４の実行中に第１のクライアントマシン１００（１）上でレンダリングされ、同じゲームワールド８０２（２）の第２のインスタンスが、第２のクライアントマシン１００（２）上で同じビデオゲーム１０４の独立した実行中に第２のクライアントマシン１００（２）上でレンダリングされているシナリオを検討する。図８に示すように、各クライアントマシン１００上でのビデオゲーム１０４の独立した実行中に、第１のプレーヤ１０６（１）は、第１のプレーヤ制御キャラクタ８２６（１）を制御し得、一方で第２のプレーヤ１０６（２）は、第２のプレーヤ制御キャラクタ８２６（２）を制御し得る。
【０１１３】
９０２で、第１のクライアントマシン１００（１）は、第２のクライアントマシン１００（２）から、コンピュータネットワーク２１８を介して、ゲームワールド８０２（２）の第２のインスタンスとして第２のクライアントマシン１００（２）上にレンダリングされたゲームワールド内で第２のプレーヤ制御キャラクタ８２６（１）の現在の場所を指定する空間データ２２７の形態のデータ８００を受信することができる。
【０１１４】
９０４で、第１のクライアントマシン１００（１）上で拡張フレーム１２２をレンダリングするために（例えば、参照番号１２２によって図８に示されるように）、第１のクライアントマシン１００（１）上で実行しているＡＲコンポーネント１０２は、第１のクライアントマシン１００（１）上で実行しているビデオゲーム１０４からビデオゲームデータ１２８を取得することができ、ビデオゲームデータ１２８は、ゲームワールド８０２（１）の第１のインスタンスとして第１のクライアントマシン１００（１）上でレンダリングされるビデオゲーム１０４のゲームワールドの一部に関連付けられた第１のゲームワールド座標２２６を指定する空間データ２２７の形態である。
【０１１５】
９０６で、第１のクライアントマシン１００（１）のＡＲコンポーネント１０２は、拡張フレーム１２２を生成する際に使用するＡＲコンテンツ１２０を識別する。サブブロック９０８によって示されるように、ＡＲコンテンツ１２０は、第２のプレーヤ制御キャラクタ８２６（２）の現在の場所が、第１のゲームワールド座標２２６に少なくとも部分的に基づいて第１のクライアントマシン１００（１）のスクリーン上にレンダリングされるゲームワールドの一部内にあることを決定することによって識別され得る。サブブロック９１０によって示されるように、ＡＲコンテンツ１２０は、第２のプレーヤ制御キャラクタ８２６（２）のＡＲアバターとして取り出すことができる。例えば、第１のクライアントマシン１００（１）は、（ビデオゲーム１０４の実行前または実行中に）リモートコンピューティングシステム２００からＡＲアバターの形態でＡＲコンテンツ１２０を受信することができる。このようにして、ＡＲアバターを含むＡＲコンテンツのレコードは、第１のクライアントマシン１００（１）からアクセス可能である。
【０１１６】
９１２で、第１のクライアントマシン１００（１）は、ＡＲコンポーネント１０２を介して、第１のクライアントマシン１００（１）上で実行しているビデオゲーム１０４によって出力されるビデオゲームコンテンツ１２４と、ブロック９０６で識別（および取り出し）されたＡＲコンテンツ１２０と、を含む拡張フレーム１２２を生成することができる。サブブロック９１４によって示されるように、拡張フレーム１２２の生成は、ビデオゲームコンテンツ１２４上のＡＲコンテンツ１２０として、第２のプレーヤ制御キャラクタ８２６（２）の現在の場所に対応するゲームワールド８０２（１）の第１のインスタンス内のある場所で、第２のプレーヤ制御キャラクタ８２６（２）のＡＲアバターを提示することを含み得る。
【０１１７】
９１６で、第１のクライアントマシン１００（１）は、ＡＲコンポーネント１０２を介して、第１のクライアントマシン１００（１）に関連付けられたディスプレイ（複数可）１１０上に拡張フレーム１２２をレンダリングし得、次いで、ビデオゲーム１０４の実行中に一連のフレームをレンダリングする反復プロセスの一部として次のフレームに進むことができる。この拡張フレーム１２２の例を図８に示しており、拡張フレーム１２２内のＡＲコンテンツ１２０は、ゲームワールドでのそのゲームキャラクタの現在の場所に対応するある場所にある、第２のプレーヤ制御キャラクタ８２６（２）のＡＲアバターである。これにより、マルチプレーヤアスペクトを、シングルプレーヤゲームである可能性がある第１のクライアントマシン１００（１）上で実行しているビデオゲームの拡張機能として追加することができる。
【０１１８】
図１０は、開示されたＡＲシステムを使用して、クライアントマシン間でゲームワールドのアスペクトを共有するための例示的な技法を示す図である。図１０では、第１のクライアントマシン１００（１）および第２のクライアントマシン１００（２）は各々、コンピュータネットワーク２１８を介して、リモートコンピューティングシステム２００（図１０には図示せず）と、および他のクライアントマシン１００とデータを交換するために、コンピュータネットワーク２１８に接続されている。図１０の例では、第１のプレーヤ１０６（１）は、第１のクライアントマシン１００（１）上でビデオゲーム１０４をプレイしており、第２のプレーヤ１０６（２）は、第２のクライアントマシン１００（２）上でビデオゲーム１０４をプレイしている。各クライアントマシン１００上で実行しているビデオゲーム１０４は、同じビデオゲームまたは異なるビデオゲームであり得、それらは、シングルプレーヤまたはマルチプレーヤビデオゲームであり得る。
【０１１９】
ネットワーク接続は、データだけでなく、リモートコンピューティングシステム２００を介して、およびクライアントマシン１００間でＡＲコンテンツ１２０も転送することを可能にする。例えば、第２のクライアントマシン１００（２）から第１のクライアントマシン１００（１）に送信されるＡＲコンテンツ１２０は、第２のクライアントマシン１００（２）上でレンダリングされる第２のゲームワールド１００２（２）の一部のスクリーンショット（例えば、２Ｄまたは３Ｄスクリーンショット）を表すことができる。このＡＲコンテンツ１２０は、第２のクライアントマシン１００（２）上でのビデオゲーム１０４の実行中に繰り返し送信することができる（例えば、フレームごと、２フレームごと、数フレームごとなど）。第１のクライアントマシン１００（１）上のＡＲコンポーネント１０２は、第２のクライアントマシン１００（２）から送信されたＡＲコンテンツ１２０を受信し得、ＡＲコンテンツ１２０を使用して、受信されたＡＲコンテンツ１２０を含む拡張フレーム（複数可）１２２を生成し得る。したがって、スクリーンショットの形態でのＡＲコンテンツ１２０のネットワーク２１８を介したリアルタイム送信は、第１のクライアントマシン１００（１）上でレンダリングされている第１のゲームワールド１００２（１）内の第２のゲームワールド１００２（２）の共有など、クライアントマシン間でのゲームワールドの共有を可能にする。例えば、第２のプレーヤ１０６（２）が第２のゲームワールド１００２（２）の周りの第２のプレーヤ制御キャラクタ１０２６（２）の動きを制御すると、第２のプレーヤ制御キャラクタ１０２６（２）の視点から見た、第２のゲームワールド１００２（２）のスクリーンショットを、ＡＲコンテンツ１２０として、ネットワーク２１８を介して第１のクライアントマシン１００（１）に送信することができる。第１のプレーヤ１０６（１）が第１のゲームワールド１００２（１）の周りの第１のプレーヤ制御キャラクタ１０２６（１）の動きを制御すると、受信したスクリーンショットは、例えば第１のゲームワールド１００２（１）の壁上の「ポータル」を介してスクリーンショットをレンダリングすることによって、ＡＲコンテンツ１２０として拡張フレーム１２２に提示することができる。これにより、クライアントマシン間でのゲームワールドの共有に関連する異なるタイプの機能を可能にすることができる。
【０１２０】
例えば、ＡＲコンテンツ１２０は、第１のプレーヤ１０６（１）に第２のゲームワールド１００２（２）へのビューポートを提供することができる。このシナリオでは、第２のプレーヤ制御キャラクタ１０２６（２）の観点から見た、第２のゲームワールド１００２（２）の１つ以上のスクリーンショットを、第１のクライアントマシン１００（１）に送信して、第１のゲームワールド１００２（１）内にＡＲコンテンツ１２０として表示するようにしてもよい。一連のスクリーンショットをネットワーク２１８を介して送信して、第２のプレーヤ１０６（２）のゲームプレイのライブ観戦を可能にすることができる。例えば、第１のプレーヤ１０６（１）は、第２のゲームワールド１００２（２）へのビューポートとして提示されるＡＲコンテンツ１２０介して、第２のプレーヤ１０６（２）のゲームプレイを観戦することができ得る。ネットワーク２１８を介して送信される一連のスクリーンショットは、第２のプレーヤ制御キャラクタ１０２６（２）が第２のゲームワールド１００２（２）を動き回るのを第１のプレーヤ１０６（１）が見ることができるように、第１のクライアントマシン１００（１）上のＡＲコンポーネント１０２を介してライブＡＲビデオストリームとして提示することができる。第２のゲームワールド１００２（２）への３Ｄビューポートを可能にするために、第１のクライアントマシン１００（１）は、３Ｄスクリーンショット（複数可）の形態でＡＲコンテンツ１２０を受信し得、第１のクライアントマシン１００（１）上のＡＲコンポーネント１０２は、３Ｄスクリーンショットに描かれたゲームワールド１００２（２）の３Ｄモデルを構築し、および／または３Ｄスクリーンショットに関連付けられたカメラの向きに基づいて配置された３Ｄスクリーンショットを提示し得る。これにより、第１のプレーヤ１０６（１）は、第２のゲームワールド１００２（２）の再構築された３Ｄモデルを見回し、および／または動き回って、第２のプレーヤ制御キャラクタ１０２６（２）の環境に関してさらにより詳細に見ることができる。
【０１２１】
クライアントマシン１００間でゲームワールドを共有する別の例は、２つのゲームワールド１００２（１）および１００２（２）の座標系を整列させる方法で２つのゲームワールド１００２（１）および１００２（２）を一緒にスティッチ、またはミックスさせることを伴う。例えば、２つのプレーヤ制御キャラクタ１０２６（１）および１０２６（２）が、同じビデオゲーム１０４の同じゲームワールド内で互いに近くに（例えば、閾値距離内に）位置する場合、同時に、第１のクライアントマシン１００（１）は、第２のクライアントマシン１００（２）から、第２のゲームワールド１００２（２）の３Ｄスクリーンショット（複数可）を、３Ｄスクリーンショット（複数可）に描かれた第２のゲームワールド１００２（２）のその部分（複数可）の座標のセットとともに受信することができ、第１のクライアントマシン１００（１）のＡＲコンポーネント１０２は、２つのゲームワールドを一緒にミックスさせるために、受信されたスクリーンショットのグラフィックスを、第１のゲームワールド１００２（１）の現在の座標のセットと整列させることができる。第１のプレーヤ制御キャラクタ１０２６（１）がゲームワールド内の第２のプレーヤ制御キャラクタ１０２６（２）と同じ場所に位置し、第１のプレーヤ１０６（１）が、第２のゲームワールド１００２（２）における第２のプレーヤ１０６（２）が見た敵（ＡＲコンテンツ１２０）の３Ｄレンダリングを見ることができることを想像する。拡張フレーム１２２内の２つのゲームワールド１００２（１）と１００２（２）との間の違いは、ＡＲコンテンツ１２０としてレンダリングされたオブジェクトまたはグラフィックスを強調表示することによって視覚的に示すことができる（例えば、異なる色を使用するなど）。ＡＲコンテンツ１２０が、そうでなければ拡張フレーム１２２の中で何がＡＲコンテンツ１２０であるかの識別を困難にする方法で第１のゲームワールド１００２（１）にスティッチされているとき、これは、第１のプレーヤ１０６（１）がビデオゲームコンテンツ１２４とＡＲコンテンツ１２０とを区別するのに役立つ可能性がある。
【０１２２】
図１０を参照して説明した技法の動作を示すために、ここで図１１を参照し、図１１は、ＡＲシステムを使用して、クライアントマシン間でゲームワールドのアスペクトを共有するための例示的なプロセス１１００の流れ図である。
【０１２３】
１１０２で、ＡＲコンポーネント１０２は、第１のクライアントマシン１００（１）上でビデオゲームクライアント１１６を介して実行され、本明細書で説明されるように、第１のクライアントマシン１００（１）上で実行しているビデオゲーム１０４からビデオゲームデータ１２８を取得することができる。
【０１２４】
１１０４で、第１のクライアントマシン１００（１）のＡＲコンポーネント１０２は、拡張フレーム１２２を生成する際に使用するＡＲコンテンツ１２０を識別する。サブブロック１１０６によって示されるように、ＡＲコンテンツ１２０は、コンピュータネットワーク２１８を介して、第２のクライアントマシン１００（２）からＡＲコンテンツ１２０を受信することによって識別され得る。例えば、ＡＲコンテンツ１２０は、第１のクライアントマシン１００（１）上でレンダリングされたゲームワールド１００２（１）と同じゲームワールドまたは異なるゲームワールドであり得る第２のクライアントマシン１００（２）上でレンダリングされたゲームワールド１００２（２）の一部のスクリーンショット（複数可）の形態であり得る。いくつかの実施形態では、ＡＲコンテンツ１２０とともに、第１のクライアントマシン１００（１）は、第２のクライアントマシン１００（２）から、第２のクライアントマシン１００（２）上でレンダリングされた第２のゲームワールド１００２（２）のゲームワールド座標２２６に関連する空間データ２２７などの追加のデータ８００を受信してもよい。これは、第２のゲームワールド１００２（２）内の第２のプレーヤ制御キャラクタ１０２６（２）の現在の場所に対応する座標を含み得る。
【０１２５】
１１０８で、第１のクライアントマシン１００（１）は、ＡＲコンポーネント１０２を介して、ビデオゲーム１０４によって出力されたビデオゲームコンテンツ１２４と、ブロック１１０４で識別（および受信）されたＡＲコンテンツ１２０と、を含む拡張フレーム１２２を生成することができる。いくつかの実施形態では、ブロック１１０２で取得されたビデオゲームデータ１２８は、ゲームワールド１００２（１）の壁上にスクリーンショットの形態でＡＲコンテンツ１２０が位置する、またはそうでなければ、ＡＲコンテンツ１２０をゲームワールド１００２（１）のオブジェクトに取り付けるなど、ＡＲコンテンツ１２０が、レンダリングされる拡張フレーム１２２内にあるゲームワールド１００２（１）のコンテキストで提供されることを可能にし得る。サブブロック１１１０、１１１２、および１１１４によって示されるように、拡張フレーム１２２の生成は、様々な方法で実装することができる。
【０１２６】
サブブロック１１１０で、第１のクライアントマシン１００（１）のＡＲコンポーネント１０２は、ブロック１１０６で受信されたＡＲコンテンツ１２０（例えば、スクリーンショット（複数可））に少なくとも部分的に基づいて、第２のクライアントマシン１００（２）上にレンダリングされたゲームワールド１００２（２）へのビューポートを構築することができる。例えば、３Ｄスクリーンショットを使用して、第１のゲームワールド１００２（１）においてＡＲオブジェクトとしてレンダリングされたポータル内の第２のプレーヤ１０６（２）のゲームワールド１００２（２）の３Ｄビューを再構築することができる。一連のスクリーンショットは、ＡＲコンテンツ１２０のビデオストリームのようにレンダリングして、第２のプレーヤ１０６（２）のゲームプレイを観戦するために使用できるライブビューポートを提供することができる。いくつかの実施形態では、サブブロック１１１０で構築されたビューポートは、第２のゲームワールド１００２（２）内の第２のクライアントマシン１００（２）の第２のプレーヤ１０６（２）によって見られる他のＡＲコンテンツ１２０を含み得る。
【０１２７】
サブブロック１１１２で、第１のクライアントマシン１００（１）のＡＲコンポーネント１０２は、第２のクライアントマシン１００（２）から受信したゲームワールド座標２２６に少なくとも部分的に基づいて、第２のクライアントマシン１００（２）上でレンダリングされたゲームワールド１００２（２）を、第１のクライアントマシン１００（１）上でレンダリングされたゲームワールド１００２（１）と一緒にスティッチすることができる。例えば、ゲームワールドの両方のインスタンスが、ゲームワールド内の共通の場所から閾値距離内にある場合、現在のゲームワールド座標を整列させることができる。いくつかの実施形態では、ＡＲコンテンツ１２０は、ゲームワールド１００２（２）の３Ｄスクリーンショットの形態であり、これを使用して、この３Ｄスクリーンショットに関連付けられたカメラポーズを取得することができる。このカメラポーズは、ゲームワールド１００２（１）内の他のＡＲコンテンツ１２０（例えば、オブジェクト、ゲームキャラクタなど）を整列および／または配向するために使用することができる。
【０１２８】
１１１６で、第１のクライアントマシン１００（１）は、ＡＲコンポーネント１０２を介して、第１のクライアントマシン１００（１）に関連付けられたディスプレイ（複数可）１１０上に拡張フレーム１２２をレンダリングし得、次いで、ビデオゲーム１０４の実行中に一連のフレームをレンダリングする反復プロセスの一部として次のフレームに進むことができる。
【０１２９】
図１２は、ビデオゲームとクライアントマシン上で別個に実行しているＡＲコンポーネントとの間でイベントを交換するための例示的なプロセス１２００の流れ図である。
【０１３０】
１２０２で、ＡＲコンポーネント１０２は、クライアントマシン１００上で実行しているビデオゲーム１０４とは別個のプロセスとして、クライアントマシン１００上のビデオゲームクライアント１１６を介して実行され得る。
【０１３１】
１２０４で、ＡＲコンポーネント１０２は、ビデオゲーム１０４から１つ以上のゲーム放出イベントを受信することができる。例えば、ゲーム開発者は、ビデオゲームが実行中に放出するゲームイベントを指定することができ、ＡＲコンテンツ１２０の作成者２１６は、ＡＲコンテンツ１２０を生成し、ゲーム受け入れイベントをビデオゲーム１０４に返す目的のために、ビデオゲーム１０４で何が起こっているかを知るために、これらの「ゲーム放出イベント」にサブスクライブすることができる。
【０１３２】
１２０６で、ＡＲコンポーネント１０２は、ＡＲコンテンツ１２０を識別し得る。この識別は、実行可能プログラム（複数可）（例えば、プラグイン（複数可））への入力としてゲーム放出イベント（複数可）を提供することに基づき得る。いくつかの実施形態では、識別は、追加的に、または代替的に、ビデオゲーム１０４から取得されたビデオゲームデータ１２８（例えば、空間データ２２７）に基づき得る。
【０１３３】
１２０８で、ＡＲコンポーネント１０２は、１つ以上のゲーム放出イベントを受信したことに応答して、１つ以上のゲーム受け入れイベントをビデオゲーム１０４に送信することができる。この場合も、ゲーム開発者は、ビデオゲーム１０４が受け入れることができるイベントを指定することができる。いくつかの実施形態では、実行可能プログラム（複数可）（例えば、プラグイン（複数可））は、入力として提供されるゲーム放出イベントに少なくとも部分的に基づいて、これらのゲーム受け入れイベントを出力することができる。
【０１３４】
１２１０で、クライアントマシン１００は、ＡＲコンポーネント１０２を介して、ビデオゲーム１０４によって出力されたビデオゲームコンテンツ１２４およびブロック１２０６で識別されたＡＲコンテンツ１２０を含む拡張フレーム１２２を生成することができる。
【０１３５】
１２１２で、クライアントマシン１００は、ＡＲコンポーネント１０２を介して、クライアントマシン１００に関連付けられたディスプレイ（複数可）１１０上に拡張フレーム１２２をレンダリングし得、次いで、ビデオゲーム１０４の実行中に一連のフレームをレンダリングする反復プロセスの一部として次のフレームに進むことができる。
【０１３６】
主題は構造的機能に特有の言語で説明されているが、添付の特許請求の範囲に定義された主題は、必ずしも説明された特定の機能に限定されるものではないことを理解されたい。むしろ、特定の機能は、特許請求の範囲を実装する例示的な形態として開示されている。
【図１】
2022502759.tif 000003
【図２】
2022502759.tif 000004
【図３】
2022502759.tif 000005
【図４】
2022502759.tif 000006
【図５】
2022502759.tif 000007
【図６】
2022502759.tif 000008
【図７】
2022502759.tif 000009
【図８】
2022502759.tif 000010
【図９】
2022502759.tif 000011
【図１０】
2022502759.tif 000012
【図１１】
2022502759.tif 000013
【図１２】
2022502759.tif 000014
【国際調査報告】
2022502759.tif 000015