(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-07-05
(54)【発明の名称】アンチチートデータフローにおけるレイテンシーの低減
(51)【国際特許分類】
A63F 13/75 20140101AFI20240628BHJP
A63F 13/216 20140101ALI20240628BHJP
A63F 13/35 20140101ALI20240628BHJP
A63F 13/79 20140101ALI20240628BHJP
【FI】
A63F13/75
A63F13/216
A63F13/35
A63F13/79
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024502426
(86)(22)【出願日】2022-07-15
(85)【翻訳文提出日】2024-03-18
(86)【国際出願番号】 IB2022056553
(87)【国際公開番号】W WO2023286032
(87)【国際公開日】2023-01-19
(32)【優先日】2021-07-16
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】519087723
【氏名又は名称】ナイアンティック, インコーポレイテッド
【氏名又は名称原語表記】NIANTIC,INC.
【住所又は居所原語表記】One Ferry Building,Suite 200 San Francisco,CA 94111 United States of America
(74)【代理人】
【識別番号】110001243
【氏名又は名称】弁理士法人谷・阿部特許事務所
(72)【発明者】
【氏名】ピアウ ナー
(72)【発明者】
【氏名】サヴィサ カヤラット ジャヤサンカー
(57)【要約】
メトリックを生成および格納するシステムならびに方法がここに説明される。特に、ゲームサーバは、ネットワークを介してゲームサーバに接続された1つまたは複数のクライアントデバイスからゲーム活動データを受信し得る。ゲームサーバは、1つまたは複数のメトリックを生成するために、1つまたは複数のノードを使用して活動データの一部をそれぞれ計算するアンチチートサーバへ、活動データを送信する。メトリックは、データがパラレルリアリティゲーム内の不正行為を示すかどうかを示し得る。ノードは、それぞれの生成されたメトリックを、プリペアド挿入ステートメントを使用してリレーショナルデータベースに追加する。アンチチートサーバは、不正行為がデータ内に存在したとメトリックが示した場合に、1つまたは複数のクライアントデバイスに関してアクションを取るようにゲームサーバに指示し得る。
【特許請求の範囲】
【請求項1】
1つまたは複数のクライアントデバイスからデータを受信することと、
所定のノードのセットにデータをブロードキャストすることと、
各ノードで、前記データの一部を計算して1つまたは複数のメトリックを生成することと、
少なくともいくつかの前記ノードによって、それらのノードによって生成された前記1つまたはメトリックを、プリペアド挿入ステートメントを使用してリレーショナルデータベースに追加することと、
を備える方法。
【請求項2】
前記データは、パラレルリアリティゲームのプレーヤーの活動データである、
請求項1に記載の方法。
【請求項3】
前記パラレルリアリティゲームのプレーヤーの識別子のリストを読み出すことと、
前記識別子のリスト内の識別子に関連付けられた活動データを読み出すことであって、前記活動データは、前記所定のノードのセット内の前記ノードにブロードキャストされるデータである、読み出すことと、
をさらに備える、請求項2に記載の方法。
【請求項4】
前記メトリックは、前記プレーヤーの活動データが前記パラレルリアリティゲーム中に実行された不正行為を示すかどうかを示す、
請求項2に記載の方法。
【請求項5】
前記識別子のリストの前記識別子に関連付けられた活動データを読み出すことは、範囲スキャンを介して、圧縮データ記憶システムにアクセスすることを含む、
請求項3に記載の方法。
【請求項6】
前記圧縮データ記憶システムは、BigTable記憶システムである、
請求項5に記載の方法。
【請求項7】
前記リレーショナルデータベースは、PostgreSQLリレーショナルデータベースである、
請求項1に記載の方法。
【請求項8】
前記データをブロードキャストすることは、combine.globally.withfanoutを使用して実行される、
請求項1に記載の方法。
【請求項9】
外部オペレータが、前記セットに含む所定のノードの数を選択する、
請求項1に記載の方法。
【請求項10】
前記所定のノードのセットは、24から200のノードを含む、
請求項1に記載の方法。
【請求項11】
コンピューティングデバイスによって実行されると、前記コンピューティングデバイスに、
1つまたは複数のクライアントデバイスからデータを受信することと、
所定のノードのセットにデータをブロードキャストすることと、
各ノードで、前記データの一部を計算して1つまたは複数のメトリックを生成することと、
少なくともいくつかの前記ノードによって、それらのノードによって生成された前記1つまたはメトリックを、プリペアド挿入ステートメントを使用してリレーショナルデータベースに追加することと、
を含む動作を実行させる命令を格納する、非一時的コンピュータ可読記憶媒体。
【請求項12】
前記データは、パラレルリアリティゲームのプレーヤーの活動データである、
請求項11に記載の非一時的コンピュータ可読記憶媒体。
【請求項13】
前記命令は、
前記パラレルリアリティゲームのプレーヤーの識別子のリストを読み出す命令と、
前記識別子のリスト内の識別子に関連付けられた活動データを読み出す命令であって、前記活動データは、前記所定のノードのセット内の前記ノードにブロードキャストされるデータである、読み出す命令と、
をさらに備える、請求項12に記載の非一時的コンピュータ可読記憶媒体。
【請求項14】
前記メトリックは、前記プレーヤーの活動データが前記パラレルリアリティゲーム中に実行された不正行為を示すかどうかを示す、
請求項12に記載の非一時的コンピュータ可読記憶媒体。
【請求項15】
前記識別子のリストの前記識別子に関連付けられた活動データを読み出す命令は、範囲スキャンを介して、圧縮データ記憶システムにアクセスする命令を含む、
請求項13に記載の非一時的コンピュータ可読記憶媒体。
【請求項16】
前記圧縮データ記憶システムは、BigTable記憶システムである、
請求項15に記載の非一時的コンピュータ可読記憶媒体。
【請求項17】
前記リレーショナルデータベースは、PostgreSQLリレーショナルデータベースである、
請求項11に記載の非一時的コンピュータ可読記憶媒体。
【請求項18】
前記データをブロードキャストすることは、combine.globally.withfanoutを使用して実行される、
請求項11に記載の非一時的コンピュータ可読記憶媒体。
【請求項19】
外部オペレータが、前記セットに含む所定のノードの数を選択する、
請求項11に記載の非一時的コンピュータ可読記憶媒体。
【請求項20】
パラレルリアリティゲームをホストするように構成されたユニバーサルゲームモジュールと、
前記パラレルリアリティゲームのデータおよびメトリックを格納するように構成されたリレーショナルデータベースを備えるゲームデータベースと、
1つまたは複数のクライアントデバイスからデータを受信することと、
所定のノードのセットに前記データをブロードキャストすることと、
各ノードで、前記データの一部を計算して1つまたは複数のメトリックを生成することと、
少なくともいくつかの前記ノードによって、それらのノードによって生成された前記1つまたはメトリックを、プリペアド挿入ステートメントを使用して前記リレーショナルデータベースに追加することと、
を含む動作を実行するように構成された処理モジュールと、
を備える、ゲームサーバ。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、データ処理、特に、所定のセット内のノードでデータを処理することおよびノードを介してデータを格納することに関する。
【背景技術】
【0002】
本出願は、米国特許法第119条(e)の下、参照により本明細書に組み込まれる、2021年7月16日に出願された米国特許仮出願第63/222,919号「Reducing Latency In Anticheat Dataflow」の優先権を主張する。
【0003】
コンピュータネットワークは、データを交換するコンピューティングデバイスの相互接続されたセットである。データの交換は、拡張現実アプリケーションを含む、多数のアプリケーションのために、コンピューティングデバイスと1つまたは複数のサーバとの間でなされ得、そこでは、高いレイテンシーが、拡張現実アプリケーションを使用するユーザのエクスペリエンスに影響し得る。1つまたは複数のサーバは、大量のデータを受信し、所与の時間期間内にアプリケーションにより使用されるデータに基づいてメトリックを計算する必要がある。多くの場合、1つまたは複数のサーバは、計算に結合機を使用し、これは、全ての計算が完了するまで、1つまたは複数のサーバがデータおよびメトリックを格納すること(または、1つまたは複数のコンピューティングデバイスへデータおよびメトリックを送信すること)を妨げる。さらに、1つまたは複数のサーバは、データフローが限定されたデータベースにデータを格納し得、またはそうでなければ、レートが限定されたインターフェース(例えば、アプリケーションプログラミングインターフェース)でデータを使用する。それゆえ、データの生成と、関連するメトリックの計算との間で大きなタイムラグが生じ得、これは、それらのメトリックに頼るアプリケーションの性能に有害である。したがって、低減されたレイテンシーで、メトリックを計算すること、および、データを格納すること、のためのシステムが必要である。
【発明の概要】
【0004】
限定された時間期間内に大量のデータを処理および格納することが望ましい様々なアプリケーションが存在する。例えば、パラレルリアリティゲームでは、アンチチートサーバは、ゲームサーバから来るプレーヤーの活動データの閾値バッチ量(例えば、1時間分)を処理して、不正行為を示す活動データを特定するための限定されたタイムウィンドウ(例えば、30分未満)のみを有し得る。アンチチートサーバがデータ処理にそれ以上の時間を要する場合、次のバッチのデータが利用可能になるまで、処理は完了し得ない。それゆえ、アンチチートサーバは、処理を遅らすか、いくつかの活動データをスキップして未分析のままにし得る。既存の技術を使用すると、アンチチートサーバは、処理の前に全てのデータが受信されるまで待機し、処理されたデータを格納するかアクションを起こすシステムに渡す前に、全ての処理を完了する必要があり得る。
【0005】
この問題や他の問題は、処理中にメトリックを独立して計算し、格納するためにノードを並列化することにより対処し得る。メトリックを格納するためのデータベースに、一度にデータベースに書き込み得るノード数のフロー制限がある場合、全てのノードが処理を終了したときではなく、各ノードが処理を終了したときにデータベースにデータを書き込むように、独立したノードで並列にデータを処理することによりレイテンシーを低減し得る。
【0006】
様々な実施形態では、データを処理するための方法は、1つまたは複数のクライアントデバイスからデータを受信するアンチチートサーバを含む。アンチチートサーバのデータ受信モジュールは、アンチチートサーバに含まれるか、またはアンチチートサーバの外部にある所定のノードのセットにデータをブロードキャストし得る。いくつかの実施形態では、データ受信モジュールは、combine.globally.withfanoutを使用してデータをブロードキャストし得る。各ノードは、データセット全体の受信を待たずに、受信したデータを処理して1つまたは複数のメトリックを生成し得る。各ノードは、プリペアド挿入ステートメントを使用してリレーショナルデータベースに書き込み得る。いくつかの実施形態では、リレーショナルデータベースは、PostgreSQLである。
【0007】
いくつかの実施形態では、データは、可能性のある不正行為を特定するために処理される、パラレルリアリティゲームのプレーヤーの活動データである。アンチチートサーバは、範囲スキャン(range scan)を介して、圧縮データ記憶システム(例えば、BigTable)にアクセスすることにより、パラレルリアリティゲームのプレーヤーの識別子のリストを読み出す。活動データは分析され、プレーヤーに関連付けられた活動データから、そのプレーヤーが不正行為(例えば、位置情報の偽装)を行っている可能性が高いかどうかを示す1つまたは複数のメトリックが計算される。アンチチートサーバは、識別子のリスト内の識別子に関連付けられた活動データを読み出し得る。アンチチートサーバは、各ノードでデータの一部を計算し、1つまたは複数のメトリックを生成する。メトリックは、データが、パラレルリアリティゲーム中にプレーヤーにより実行された不正行為を示すかどうかを示し得る。
【図面の簡単な説明】
【0008】
【
図1】
図1は、一実施形態による、パラレルリアリティゲームのメトリックを生成することおよび格納することに適したネットワーク化されたコンピューティング環境を示すブロック図である。
【
図2】
図2は、一実施形態による、クライアントデバイスを示すブロック図である。
【
図3】
図3は、一実施形態による、ゲームサーバを示すブロック図である。
【
図4】
図4は、一実施形態による、アンチチートサーバを示すブロック図である。
【
図5】
図5は、一実施形態による、メトリックをリレーショナルデータベースに追加する処理を示すフローチャートである。
【
図6】
図6は、一実施形態による、
図1のネットワーク化されたコンピューティング環境内での使用に適したコンピュータシステムの一例を示す図である。
【
図7】
図7は、一実施形態による、現実世界と並行する地理を有する仮想世界の表現を描写する図である。
【
図8】
図8は、一実施形態による、パラレルリアリティゲームの例示的なゲームインターフェースを描写する図である。
【発明を実施するための形態】
【0009】
図及び以下の説明は、例示のみを目的として特定の実施形態を説明する。当業者は、構造および方法の代替的な実施形態が、説明される原理から逸脱することなく採用され得ることを以下の説明から認識するであろう。可能な限り、図中では類似または同種の参照番号を使用し、類似または同種の機能を示す。要素に共通する数字の後に異なる文字が続く場合、これは、要素が、類似または同一であることを示す。数字のみへの言及は、文脈から別段の指示がない限り、一般に、そのような要素のいずれか1つまたは任意の組み合わせを指す。
【0010】
様々な実施形態が、現実世界におけるプレーヤーの移動および行動が、仮想世界における行動に影響を及ぼすように、現実世界の地理の少なくとも一部と並行する仮想世界の地理の中に拡張現実コンテンツを含むパラレルリアリティゲームの文脈で説明される(例示的なパラレルリアリティゲームは、
図7-8に関してさらに説明される)。記載された主題は、メトリックを生成および格納することが望ましい他の状況においても適用可能である。さらに、コンピュータベースのシステム固有の柔軟性により、システムの構成要素間および構成要素中のタスクおよび機能の多種多様な可能な構成、組み合わせ、および分割が可能になる。
【0011】
例示的なコンピューティング環境
図1は、一実施形態によるゲームサーバ130の環境100(本明細書でコンピュータネットワークとも呼ばれる)を示す。図は、明確性を目的としてブロック図を用いて簡略な例を示している。環境100は、3つのクライアントデバイス110、ネットワーク120、ゲームサーバ130、およびアンチチートサーバ140を含む。環境100は、クライアント-サーバアーキテクチャを含み、ゲームサーバ130は、ネットワーク120を通じてクライアントデバイス10と通信し、クライアントデバイス110においてプレーヤーへ1つまたは複数のパラレルリアリティゲームを提供する。他の実施形態では、環境100は、スポンサー/広告主システムまたは企業システム、追加のクライアントデバイス110、ネットワーク120、ゲームサーバ130、アンチチートサーバ140、または他のネットワークのノードなどの、より少ない構成要素、追加の構成要素、または他の構成要素を含み得る。そのうえさらに、構成要素の機能は、以下で説明されるのとは異なるように分散され得る。
【0012】
ネットワーク化されたコンピューティング環境100は、現実世界と並行する地理を有する仮想世界におけるプレーヤーの相互作用を提供する。特に、現実世界の地理的領域は、仮想世界の対応する領域に直接リンクする、またはマップすることが可能である。プレーヤーは、現実世界の様々な地理的位置に移動することで、仮想世界内を移動することが可能である。例えば、現実世界におけるプレーヤーの位置は追跡されることが可能であり、仮想世界におけるプレーヤーの位置を更新するために使用することが可能である。典型的には、現実世界におけるプレーヤーの位置は、プレーヤーが仮想世界と相互作用しているクライアントデバイス110の位置を見つけ、プレーヤーが同じ(またはほぼ同じ)位置にいると仮定することによって決定される。例えば、様々な実施形態では、現実世界におけるプレーヤーの位置が、仮想世界における仮想要素の仮想位置に対応する現実世界の位置から閾値距離(例えば、10メートル、20メートルなど)以内である場合、プレーヤーは、仮想要素と相互作用し得る。便宜上、様々な実施形態を「プレーヤーの位置」を参照して説明するが、当業者であれば、このような参照はプレーヤーのクライアントデバイス110の位置を指し得ることを理解されよう。
【0013】
クライアントデバイス110(「クライアント」とも呼ばれる)は、プレーヤーがゲームサーバ100と相互作用することが可能であるコンピューティングデバイスである。例えば、クライアントデバイス110は、スマートフォン、ポータブルゲーミングデバイス、タブレット、パーソナルデジタルアシスタント(PDA)、携帯電話、ナビゲーションシステム、ハンドヘルドGPSシステム、または他のデバイスであることが可能である。クライアントデバイス110は、ソフトウェア(例えば、ゲーミングアプリケーションまたはアプリ)を実行して、プレーヤーに、仮想世界と相互作用することを可能にし得る。クライアントデバイス110はまた、パラレルリアリティゲーム(本明細書で位置ベースのゲームとも呼ばれる)のためのユーザインターフェースを提供するために、ハードウェア、ソフトウェア、またはその両方を含み得る。そのうえさらに、クライアントデバイス110は、ビルトイン(built-in)コンピューティングデバイスを有する車両であり得る。クライアントデバイスは、
図2に関連してさらに説明される。
【0014】
ネットワーク120は、ローカルエリアネットワーク(例えばイントラネット)、ワイドエリアネットワーク(例えばインターネット)、またはそれらのいくつかの組み合わせなどの、任意のタイプの通信ネットワークであることが可能である。ネットワーク120は、クライアント110とゲームサーバ130との間の直接接続を含むことも可能である。一般に、ゲームサーバ130とクライアント110との間の通信は、様々な通信プロトコル(例えば、TCP/IP、HTTP、S1v1TP、FTP)、エンコーディングまたはフォーマット(例えば、HTML、JSON、XML)、および/または保護スキーム(例えば、VPN、セキュアHTTP、SSL)を用いて、ワイヤードおよび/またはワイヤレス接続の任意のタイプを用いて、ネットワークインタフェースを介して実行することが可能である。
【0015】
ゲームサーバ130は、パラレルリアリティゲームのマスター状態をホストし、プレーヤーのクライアントデバイス110にゲーム状態の更新を提供する(例えば、ゲーム内の他のプレーヤーが取った行動、現実世界の状況の変化、ゲーム状態または条件の変化などに基づいて)。ゲームサーバ130は、パラレルリアリティゲーム内のプレーヤーの行動を受信して処理する。ゲームサーバ130は、処理のためにデータをアンチチートサーバ140に送信し、アンチチートサーバ140から、プレーヤーに関連して講じるべき措置に関する情報を受信し得る。ゲームサーバ130は、
図3に関連してさらに説明される。
【0016】
アンチチートサーバ140は、ゲームサーバ130(または、いくつかの実施形態では、クライアントデバイス110)から受信したデータに基づいて、メトリックを計算し、格納する。アンチチートサーバ140は、様々なシステムおよびアプリケーションのメトリックを計算および格納し得るが、本明細書では、パラレルリアリティゲーム(例えば、現実世界におけるプレーヤーの位置が、ゲーム世界におけるプレーヤーの位置と相関する共有AR環境)について説明される。例えば、アンチチートサーバ140は、リレーショナルデータベースに格納するデータを受信する。データは、パラレルリアリティゲームで発生した行動を記述する活動データであり得る。メトリックは、パラレルリアリティゲームにおける不正行為に対応する可能性が高い活動データを特定することに関連し得る。アンチチートサーバ140は、複数のノードを採用して、データに基づいてメトリックを計算し、計算が完了するとメトリックを格納する。このように計算と格納を分散させることで、アンチチートサーバ140は、メトリックの計算と格納におけるレイテンシーを低減することが可能になる。アンチチートサーバ140は、
図4に関連してさらに説明される。
【0017】
本開示は、サーバ、データベース、ソフトウェアアプリケーション、および他のコンピュータベースのシステム、ならびにそのようなシステムとの間で行われるアクションおよび送信される情報について言及する。当業者であれば、コンピュータベースのシステム固有の柔軟性により、構成要素間および構成要素中のタスクおよび機能の多種多様な可能な構成、組み合わせ、および分割が可能であることを認識するであろう。例えば、サーバにより実装されるとして開示された処理は、単一のサーバを使用して、または、組み合わせて動作する複数のサーバを使用して、実装され得る。データベースおよびアプリケーションは、単一のシステムで、または、複数のシステムに分散させて、実装され得る。分散された構成要素は、逐次的に、または、並列的に動作し得る。
【0018】
開示されたシステムおよび方法が、ユーザの個人情報にアクセスし分析する、または位置情報などの個人情報を利用する状況では、ユーザは、プログラムまたは特徴が情報を収集するかどうかを制御し、システムまたは他のアプリケーションからコンテンツを受信するかどうか、または、どのように受信するかを制御する機会が提供され得る。どのような情報が収集され、その情報がどのように使用されるかについて、ユーザに意味のある通知が提供されるまでは、そのような情報またはデータは、収集または使用されない。ユーザが同意しない限り、情報は、収集または使用されず、その同意は、ユーザによりいつでも取消または変更することが可能である。それゆえ、ユーザは、ユーザに関する情報がどのように収集され、アプリケーションまたはシステムにより使用されるかを制御することが可能である。さらに、特定の情報またはデータは、格納または使用される前に、個人を特定できる情報が削除されるように、1つまたは複数の方法で処理することが可能である。例えば、ユーザの身元は、そのユーザについて個人を特定できる情報を特定できないように処理され得る。
【0019】
例示的なクライアントデバイス
図2は、一実施形態による、
図1に示されるクライアントデバイス110のブロック図である。ゲームサーバ130は、位置ベースのゲームを提供し得るため、クライアントデバイス110は、プレーヤーが容易に持っていく、ないしは他のやり方により運ぶことが可能である、スマートフォンまたは他のポータブルデバイスなどのポータブルコンピューティングデバイスであることが好ましい。プレーヤーは、実際の世界において、単にクライアントデバイス110を持っていくことまたは運ぶことにより、仮想世界と相互作用することが可能である。
【0020】
クライアントデバイス110は、ゲームサーバ130と通信して、物理的な環境の感覚データを提供し得る。一実施形態では、クライアントデバイス110は、カメラアセンブリ212、ゲームモジュール214、測位モジュール216、位置特定モジュール218、およびローカルデータストア240を含む。クライアントデバイス110はまた、ネットワーク120を通じて通信を提供するためのネットワークインターフェース(図示せず)を含む。様々な実施形態では、クライアントデバイス110は、追加のセンサ、ディスプレイ、およびソフトウェアモジュール等の、異なる、または追加の構成要素を含み得る。
【0021】
カメラアセンブリ212は、画像データを捕捉する1つまたは複数のカメラを含む。カメラは、特定のポーズ(環境内のカメラの位置および方向)で、クライアントデバイス110を取り囲む環境のシーンを描写する画像データを捕捉する。カメラアセンブリ212は、様々なカラー捕捉範囲および様々な捕捉レートを有する様々なフォトセンサを使用し得る。同様に、カメラアセンブリ212は、広角レンズや望遠レンズなどの種々のレンズ範囲を有するカメラを含み得る。カメラアセンブリ212は、単一の画像または複数の画像をビデオのフレームとして捕捉するように構成され得る。
【0022】
クライアントデバイス110はまた、動作センサ、加速度計、ジャイロスコープ、気圧計、温度計、光センサ、マイクロフォンなど、クライアントデバイスを取り囲む環境に関するデータを収集するための追加のセンサを含み得る。カメラアセンブリ212により捕捉された画像データは、追加の感覚データ(例えば、温度、環境の明るさ、気圧、位置、ポーズなど)または補足データ(例えば、露出長、シャッター速度、焦点距離、撮影時間など)など、画像データに関する他の情報を記述するメタデータを付加することが可能である。
【0023】
クライアントデバイス110は、現実世界におけるクライアントデバイス110の位置を監視する測位デバイス210を含むことが可能である。測位デバイス210は、クライアント110の位置を監視するための任意のデバイスまたは回路とすることが可能である。例えば、測位デバイス210は、衛星ナビゲーション測位システム(例えば、GPSシステム、ガリレオ測位システム、グローバルナビゲーション衛星システム(Global Navigation satellite system:GLONASS)、北斗衛星導航測位システム)、慣性ナビゲーションシステム、デッドレコニングシステム、IPアドレスに基づいて、三角測量および/またはセルラタワーもしくはWiFiホットスポットへの近接を使用して、および/または位置を決定するための他の適切な技術を使用して、実際の位置または相対的な位置を決定することが可能である。
【0024】
ゲームモジュール214は、パラレルリアリティゲームに参加するために、プレーヤーにインターフェースを提供する。ゲームサーバ320は、ネットワーク120を介して、ゲームモジュール214により使用されるゲームデータをクライアントデバイス110に送信し、ゲームサーバから離れた位置に居るプレーヤーにゲームのローカルバージョンを提供する。一実施形態では、ゲームモジュール214は、仮想世界を描写(例えば、仮想世界の画像をレンダリング)し、様々なゲーム目標を実行するために、ユーザに仮想世界と相互作用することを可能にさせるクライアントデバイス110のディスプレイ上に、ユーザインターフェースを提示する。いくつかの実施形態では、ゲームモジュール214は、パラレルリアリティゲームからの仮想要素で拡張された現実世界の(例えば、カメラアセンブリ212で捕捉した)画像を提示する。これらの実施形態では、ゲームモジュール214は、クライアントデバイス110の他の構成要素から受信した他の情報に応じて、仮想コンテンツを生成または調整し得る。例えば、ゲームモジュール214は、画像データの捕捉されたシーンの深度マップに応じて、ユーザインターフェース上に表示される仮想オブジェクトを調整し得る。
【0025】
ゲームモジュール214はまた、プレーヤーが表示画面を見ることなくゲームと相互作用を行えるように、他の様々な出力を制御することが可能である。例えば、ゲームモジュール214は、プレーヤーが表示画面を見ることなくゲームを実行できるように、様々な音声、振動、またはその他の通知を制御することが可能である。
【0026】
測位モジュール216は、クライアントデバイス110の位置を決定するための任意のデバイスまたは回路とすることが可能である。例えば、測位モジュール216は、衛星ナビゲーション測位システム(例えば、GPSシステム、ガリレオ測位システム、グローバルナビゲーション衛星システム(Global Navigation satellite system:GLONASS)、北斗衛星導航測位システム)、慣性ナビゲーションシステム、デッドレコニングシステム、IPアドレス分析、三角測量および/またはセルラタワーもしくはWiFiホットスポットへの近接、または他の適切な技術を使用して、実際の位置または相対的な位置を決定することが可能である。
【0027】
プレーヤーが現実世界でクライアントデバイス110を持って動き回る際、測位モジュール216は、プレーヤーの位置を追跡し、ゲームモジュール214にプレーヤーの位置情報を提供する。ゲームモジュール214は、現実世界におけるプレーヤーの実際の位置に基づいて、ゲームに関連付けられた仮想世界におけるプレーヤーの位置を更新する。それゆえ、プレーヤーは、現実世界において、単にクライアントデバイス110を持っていくことまたは運ぶことにより、仮想世界と相互作用することが可能である。特に、仮想世界におけるプレーヤーの位置は、現実世界におけるプレーヤーの位置と対応することが可能である。ゲームモジュール214は、ネットワーク120を通じて、ゲームサーバ320にプレーヤーの位置情報を提供することが可能である。これに応じて、ゲームサーバ320は、不正行為者が位置を偽装することを防ぐために、クライアントデバイス110の位置を検証する様々な技術を実行し得る。位置情報がアクセスされること、および、ゲームの文脈の中でその位置情報がどのように利用されるか(例えば、仮想世界におけるプレーヤーの位置を更新する)をプレーヤーが知らされた後で許可された場合にのみ、プレーヤーに関連付けられた位置情報が利用されることが理解されなければならない。さらに、プレーヤーに関連付けられた任意の位置情報は、プレーヤーのプライバシーを保護する方法で格納および維持される。
【0028】
位置特定モジュール218は、クライアントデバイス110について測位モジュール216により決定された位置を受信し、カメラアセンブリ212の1つまたは複数のカメラのポーズを決定することにより、それを絞り込む。一実施形態では、位置特定モジュール218は、測位モジュール216により生成された位置を使用して、クライアントデバイス110を取り囲む環境の3Dマップを選択する。位置特定モジュール218は、ローカルストレージから、またはゲームサーバ320から、3Dマップを取得し得る。3Dマップは、クライアントデバイス110を取り囲む環境の、点群、メッシュ、または任意の他の適切な3D表現であり得る。
【0029】
一実施形態では、位置特定モジュール218は、訓練されたモデルを適用して、3Dマップに関連してカメラアセンブリ212により捕捉された画像のポーズを決定する。それゆえ、位置特定モデルは、クライアントデバイス110の位置および方向の正確な(例えば、数センチメートルおよび数度以内に)決定をすることが可能である。その後、クライアントデバイス110の位置は、センサの読み取りに基づくデッドレコニング、定期的な再位置特定、またはその両方の組み合わせを使用して、経時的に追跡することが可能である。クライアントデバイス110の正確なポーズを有することは、ゲームモジュール314が、仮想オブジェクトが現実世界と相互作用しているかのような印象を与える方法で、(例えば、カメラアセンブリ212からのリアルタイムフィードと連動して仮想要素をディスプレイ上に表示することにより)現実世界の画像に重ねた仮想コンテンツを提示すること、または(例えば、ARヘッドセットの透明ディスプレイ上に仮想要素を表示することにより)現実世界そのものを提示することを可能にし得る。例えば、仮想キャラクタが現実の木の後ろに隠れたり、仮想帽子が現実の彫像の上に置かれたり、仮想クリーチャーが、現実の人が近づきすぎると走って隠れたりし得る。
【0030】
ローカルデータストア240は、クライアントデバイス110により使用されるデータを格納するように構成された1つまたは複数のコンピュータ可読媒体である。例えば、ローカルデータストア240は、測位モジュール216により追跡されたプレーヤーの位置情報、パラレルリアリティゲームの現在の状態のローカルコピー、または任意の他の適切なデータを格納し得る。ローカルデータストア240は、単一のエンティティとして示されているが、データは、複数の媒体に分割され得る。その上さらに、データは、他の場所に(例えば、分散データベースに)格納され得、ネットワーク120を介してリモートアクセスされ得る。
【0031】
例示的なゲームサーバ
ゲームサーバ130は、クライアントデバイス110にゲーム機能を提供する1つまたは複数のコンピューティングデバイスを含む。
図3は、パラレルリアリティゲームをホストすることに適したゲームサーバ130の一実施形態を示す。示される実施形態では、ゲームサーバ130は、ユニバーサルゲームモジュール321、商用ゲームモジュール323、データ収集モジュール324、イベントモジュール326、マッピングシステム327、3Dマップ328、データ管理モジュール330、およびゲームデータベース331を含む。他の実施形態では、ゲームサーバ130は、異なる、または追加の要素を含み、パラレルリアリティゲーム以外のアプリケーションおよびシステムの処理を提供する目的のモジュールを含み得る。さらに、機能は、説明されるのとは異なるように、要素間に分散され得る。
【0032】
ゲームデータベース331は、ゲームサーバ320の一部、またはサーバ320とは別個であってリモートアクセスされるものであり得る(例えば、ゲームデータベース331は、ネットワーク120を介してアクセスされる分散データベースであり得る)。ゲームデータベース331は、ネットワーク120を通じてクライアントデバイス320に供給または提供されるパラレルリアリティゲームで使用されるゲームデータを格納する。ゲームデータベース331に格納されるゲームデータは、(1)パラレルリアリティゲーム内の仮想世界に関連付けられたデータ(例えば、表示デバイス上で仮想世界をレンダリングするために使用される画像データ、仮想世界における位置の地理的座標など)、(2)パラレルリアリティゲームのプレーヤーに関連付けられたデータ(例えば、プレーヤー情報、プレーヤーの経験レベル、プレーヤーの通貨、仮想世界/現実世界における現在のプレーヤーの位置、プレーヤーのエネルギーレベル、プレーヤーの嗜好、チーム情報、派閥情報などを含むがこれらに限定されないプレーヤーのプロファイル)、(3)ゲーム目標に関連付けられたデータ(例えば、現在のゲーム目標、ゲーム目標の状況、過去のゲーム目標、未来のゲーム目標、所望のゲーム目標に関連付けられたデータなど)、(4)仮想世界における仮想要素に関連付けられたデータ(例えば、仮想要素の位置、仮想要素のタイプ、仮想要素に関連付けられたゲーム目標、仮想要素に対応する実際の世界の位置、仮想要素の挙動、仮想要素の関連性など)、(5)現実世界の、オブジェクト、ランドマーク、仮想世界の要素とリンクされた位置、に関連付けられたデータ(例えば、現実世界のオブジェクト/ランドマークの位置、現実世界のオブジェクト/ランドマークの記述、現実世界のオブジェクトにリンクされた仮想要素の関連性など)、(6)ゲームの状態(例えば、現在のプレーヤーの数、ゲーム目標の現在の状態、プレーヤーのリーダーボードなど)、(7)プレーヤーの行動/入力に関連付けられたデータ(例えば、現在のプレーヤーの位置、過去のプレーヤーの位置、プレーヤーの移動、プレーヤーの入力、プレーヤーの問い合わせ、プレーヤーの通信など)、または(8)パラレルリアリティゲームの実装中に使用され、関連し、あるいは取得された任意の他のデータ、を含むことが可能である。ゲームデータベース331に格納されるゲームデータは、システム管理者により、または、ネットワーク120を通じてクライアントデバイス110からなど、システム300のユーザ(例えば、プレーヤー)から受信したデータにより、オフラインまたはリアルタイムのいずれかで追加することが可能である。
【0033】
ゲームサーバ130は、1つまたは複数のクライアントデバイス110からゲームデータについての要求を受信し(例えば、遠隔手続き呼出し(RPCs)を介して)、ネットワーク120を介して、それらの要求に応答するように構成されることが可能である。ゲームサーバ130は、1つまたは複数のデータファイル内のゲームデータを符号化し、そのデータファイルをクライアントデバイス110へ提供することが可能である。さらに、ゲームサーバ130は、ネットワーク120を介して、1つまたは複数のクライアントデバイス110からゲームデータ(例えば、プレーヤーの位置、プレーヤーの行動、プレーヤーの入力など)を受信し、そのゲームデータに基づいてメトリックを計算するように構成されることが可能である。例えば、クライアントデバイス110は、プレーヤーの入力、プレーヤーの位置、および他の更新を、ゲームサーバ130に定期的に送信するように構成されることが可能であり、ゲームサーバ130は、ゲームの変更条件を反映するために、これを使用してゲームデータベース331内のゲームデータを更新する。ゲームサーバ130はまた、クライアントデバイス110へゲームデータを送信し、メトリックを計算し得る。
【0034】
ユニバーサルゲームモジュール321は、プレーヤーのセット(例えば、パラレルリアリティゲームの全てのプレーヤー)のためのパラレルリアリティゲームのインスタンスをホストし、プレーヤーのセットのためのパラレルリアリティゲームの現在の状態の権威あるソースとして機能する。ホストとして、ユニバーサルゲームモジュール321は、プレーヤーに提示するためのゲームコンテンツを生成する(例えば、それぞれのクライアントデバイス310を介して)。ユニバーサルゲームモジュール321は、パラレルリアリティゲームをホストするときに、ゲームデータベース331にアクセスして、ゲームデータを読み出すまたは格納し得る。ユニバーサルゲームモジュール321はまた、クライアントデバイス310からゲームデータを受信し得(例えば、深度情報、プレーヤーの入力、プレーヤーの位置、プレーヤーの動作、プレーヤーの状態、ランドマーク情報など)、受信したゲームデータを、パラレルリアリティゲームのプレーヤーのセット全体のパラレルリアリティゲームに組み込み得る。ユニバーサルゲームモジュール321はまた、ネットワーク120を介してクライアントデバイス110へのゲームデータの配信を管理し得る。いくつかの実施形態では、ユニバーサルゲームモジュール321はまた、クライアントデバイスとゲームサーバ320との間の通信を確かにすること、様々なクライアントデバイス間の接続の確立、またはプレーヤーが自分の位置を偽装して不正行為を行うことを防止するための様々なクライアントデバイス310の位置の検証など、クライアントデバイス110とパラレルリアリティゲームとの相互作用のセキュリティ面を管理する。
【0035】
商用ゲームモジュール323は、ユニバーサルゲームモジュール321とは別個で、またはユニバーサルゲームモジュール321の一部であることが可能である。商用ゲームモジュール323は、パラレルリアリティゲーム内に、現実世界における商業活動とリンクする様々なゲーム特徴を含めることを管理することが可能である。例えば、商用ゲームモジュール323は、ネットワーク120を通じて、スポンサー/広告主、企業、または他のエンティティなどの外部システムから、現実世界における商業活動にリンクされたゲーム特徴を含める要求を受信することが可能である。そして、商用ゲームモジュール323は、リンクされた商業活動が発生したことを確認した上で、パラレルリアリティゲームにこれらのゲーム特徴を含めるように手配することが可能である。例えば、ある企業が、パラレルリアリティゲームのプロバイダに合意された金額を支払うと、その企業を特定する仮想オブジェクトが、その企業(例えば、店舗やレストラン)の現実世界の位置に対応するパラレルリアリティゲームの仮想の位置に現れ得る。
【0036】
データ収集モジュール324は、ユニバーサルゲームモジュール321とは別個で、またはユニバーサルゲームモジュール321の一部であることが可能である。データ収集モジュール324は、パラレルリアリティゲーム内に、現実世界におけるデータ収集活動とリンクされた様々なゲーム特徴を含めることを管理することが可能である。例えば、データ収集モジュール324は、ゲームデータベース331に格納されたゲームデータを変更して、パラレルリアリティゲーム内のデータ収集活動にリンクされたゲーム特徴を含めることが可能である。データ収集モジュール324はまた、データ収集活動に従ってプレーヤーによって収集されたデータを分析し、様々なプラットフォームによるアクセスのためにデータを提供することが可能である。
【0037】
イベントモジュール326は、パラレルリアリティゲームにおけるイベントへのプレーヤーのアクセスを管理する。「イベント」という用語が便宜上使用されているが、この用語は、特定の位置または時間における特定のイベントを指す必要がないことを理解されたい。むしろ、プレーヤーがそのコンテンツにアクセスできるかどうかを決定するために、1つまたは複数のアクセス基準が使用される、アクセス制御されたゲームコンテンツのあらゆる提供を指し得る。このようなコンテンツは、アクセス制御の少ないゲームコンテンツやアクセス制御のないゲームコンテンツを含む、より大規模なパラレルリアリティゲームの一部であり得、単独でアクセス制御されたパラレルリアリティゲームであり得る。
【0038】
マッピングシステム327は、画像のセットに基づいて、地理的領域の3Dマップを生成する。3Dマップは、点群、ポリゴンメッシュ、または地理的領域の3Dジオメトリのあらゆる他の適切な表現であり得る。3Dマップは、オブジェクト(テーブル、椅子、時計、街灯、木など)、材料(コンクリート、水、レンガ、草など)、またはゲーム特性(キャラクタが移動可能、特定のゲーム内アクションに適しているなど)を特定するなど、追加のコンテキスト情報を提供するセマンティックラベルを含み得る。一実施形態では、マッピングシステム327は、3Dマップをあらゆるセマンティック/コンテキスト情報とともに3Dマップストア328に格納する。3Dマップは、位置情報(例えば、3Dマップの中心のGPS座標、3Dマップの範囲を定義するリングフェンスなど)と共に3Dマップストア328に格納し得る。それゆえ、ゲームサーバ320は、3Dマップによってカバーされる地理的領域内またはその近くにいることを示す位置データを提供するクライアントデバイス310に3Dマップを提供することが可能である。
【0039】
データ管理モジュール330は、データ収集モジュール324とは別個で、またはデータ収集モジュール324の一部とすることが可能である。データ管理モジュール330は、
図4に関連して説明されるように、処理のためにデータをアンチチートサーバ140に通信し、データが不正行為を示す場合にアンチチートサーバ140が決定した措置を受信する。特に、データ管理モジュール330は、1つまたは複数のクライアントデバイス110、ゲームデータベース331、またはネットワーク120を介してゲームサーバ130に接続された他のサーバからデータを受信する。データは、クライアントデバイス110を介してパラレルリアリティゲーム内でプレーヤーにより実行された行動(例えば、プレーヤーが行った行動、行動が行われた時間、行動が行われたときのプレーヤーの移動速度など)を記述する活動データであり得る。いくつかの実施形態では、データを自動的に受信する代わりに、データ管理モジュール330は、パラレルリアリティゲームのプレーヤー(またはプレーヤーのクライアントデバイス110)の識別子のリストを読み出し得、リスト内の識別子に関連付けられたデータを(例えば、関連するクライアントデバイス110またはゲームデータベース331から)読み出し得る。いくつかの実施形態では、データ管理モジュール330は、識別子に関連する活動データを格納する圧縮データ記憶システムに、範囲スキャンを介してアクセスすることによって、識別子に関連付けられた活動データを読み出し得る。圧縮データ記憶システムは、ゲームデータベース331の一部であり得、いくつかの実施形態では、BigTableまたは標準的なクラウドストレージであり得る。データ管理モジュール330は、読み出したデータをアンチチートサーバ140に送信してメトリックを決定し、データが不正行為を示す場合に取るべき行動に関してアンチチートサーバ140と通信する。
【0040】
例示的なアンチチートサーバ
図4は、アンチチートサーバ140の一実施形態を示す。アンチチートサーバ140は、データ受信モジュール405、複数のノード410(
図4において、410A、410B・・・410Nとラベリングされた)、およびデータ記憶モジュール415を含む。データ記憶モジュール415は、介入モジュール420、リレーショナルデータベース425、介入データベース430、およびキーバリューストア435を含む。アンチチートサーバ140は、単一のサーバとして説明および図示されているが、複数のサーバを使用して実装され得る。アンチチートサーバ140は、図示されているよりも少ない構成要素、追加の構成要素、または他の構成要素を含み得る。いくつかの実施形態では、ノード410は、アンチチートサーバ140の外部にあり得、アンチチートサーバ140は、受信モジュール350およびデータ記憶モジュール415を介してノード410と通信し得る。
【0041】
データ受信モジュール405は、ゲームサーバ130(例えば、データ管理モジュール330)からデータを受信し、データを分析して、データをどこに格納するか、または分析のためにデータを送信するかを決定する。クライアントデバイス110のローカル状態を示すデータについて、データ記憶モジュール415は、データをキーバリューストア435に書き込み得る。データ受信モジュール405は、ローカル状態データを、ローカル状態データに関連付けられたプレーヤー(例えば、ユーザ名またはプレーヤー名)またはクライアントデバイス110の識別子とともに格納し得、各プレーヤーおよびクライアントデバイス110に関連付けられたデータの実行記録をキーバリューストアに保持し得る。いくつかの実施形態では、キーバリューストア435は、プレーヤーの状態に関するトランザクションデータを含む。キーバリューストア435はまた、(1)一定期間のプレーヤーまたはクライアントデバイス110の位置履歴(例えば、過去30日間の位置履歴)、(2)プレーヤーまたはクライアントデバイス110に適用された過去および現在の措置、(3)プレーヤーのゲームセッションに関する情報およびそれらのセッションのために生成された信号(例えば、データ)、のうちの1つまたは複数を含み得る。キーバリューストア435に格納されるプレーヤーまたはクライアントデバイス110のデータは、プレーヤーがゲームでアクティブであるときに生成され、アンチチートサーバ140に転送され得る。
【0042】
プレーヤーの行動を示すデータ(例えば、キーバリューストア435に格納されていないデータ)について、データ受信モジュール405は、データを1つまたは複数のノード410にブロードキャストし得る。いくつかの実施形態では、データ受信モジュール405は、ゲームサーバ130から全てのデータを受信する前に、ノード410にデータをブロードキャストする。
【0043】
いくつかの実施形態では、データ受信モジュール405は、combine.globally.withfanoutを使用してデータをブロードキャストする。combine.globally.withfanoutは、分散データ処理のための分割統治アプローチである。一般に、データの一部が他の部分よりも負荷が高い場合に使用され得る。それゆえ、combine.globally.withfanoutは、不均等な負荷分散に対する処理のチューニングを可能にする。具体的には、combine.globally.withfanoutによって、いくつかの中間ワーカー(例えば、ノード、サブノード、シャードなど)を定義できる。これらのワーカーは、部分的な結果を計算する。中間ノードが、割り当てられた作業を完了すると、その結果は、最終ワーカー(例えば、最終ノードなど)に送信され得る。最終ワーカーは、最終的なコンバインステップでこれらの結果を併合することを担当する。Combine.globally.withfanoutは、最終計算の前に行う中間ステップの数を指定するパラメータを含み得る。
【0044】
いくつかの実施形態では、データ受信モジュール405は、外部オペレータからの入力に基づいて、どのノード410が所定のセットにあるかを示す識別子のセットにアクセスし得る。例えば、データ受信モジュール405は、範囲スキャンを介して、圧縮データ記憶システム(例えば、GCP BigTableまたはApache HBase)にアクセスすることによって、パラレルリアリティゲームのプレーヤーの識別子(例えば、ユーザ名もしくはプレーヤー名、またはゲームセッションごとのプレーヤー固有の識別子)のリストを読み出す。圧縮データストレージは、プレーヤーのゲームプレイに関連する追跡可能な情報を格納する。いくつかの実施形態では、プレーヤーにより実行された全てのゲームプレイアクションが記録され、圧縮データストレージに格納される。
【0045】
追加的、または代替的に、ノードのセットが外部オペレータからの入力に基づいていることに対して、データ受信モジュール405は、データのそれぞれのサブセットを分析するための可能性または能力を有するノードのセットを決定し得る。これに応じて、データ受信モジュール405は、データのそれぞれのサブセットを、決定されたセット内のノード410のみにブロードキャストし得る。例えば、100分の10のノード410のみが処理のために利用可能な場合、データ受信モジュール405は、それら10のノード410のみにデータを送信し得る。いくつかの例では、データ受信モジュール405は、24から200のノード410を選択し得る。
【0046】
データ受信モジュール405は、類似の(または同一の)タイプのデータを一緒に集約し得、集約されたデータを単一のノードに送信し得る。これは、類似のタイプのデータが異なるノード410に送信されることを防ぐことに役立つ。これはまた、ノードがメトリックを正確に計算することを保証することにも役立つ。いくつかの実施形態では、ノードに送信される前に、ハッシュ関数がデータと類似のタイプのデータを集約するために使用される。いくつかの実施形態では、ノードの所定のセットは、特定のタイプのデータを受信するように指定される。
【0047】
上述のように、アンチチートサーバ140は、複数のノード410を使用して、データ受信モジュール405により受信されたデータに基づいてメトリックを計算する。アンチチートサーバ140は、任意の数のノード410を含み得る。ノード410は、データの受信、操作、生成、および通信が可能な独立した処理ユニットである。例えば、ノード(例えば、410A)は、CPU、RAM、およびストレージなどの処理リソースの集合体である。いくつかの実施形態では、ノード410は、GOOGLE CLOUD SPANNERのスパナーノードである。いくつかの実施形態では、各ノード(またはノードのセット)は、互いに独立してリレーショナルデータベース425に書き込む(ノードが全ての処理を行い、結果を集約し、次に全ての集約結果を一度にリレーショナルデータベース425に書き込むのではなく)。
【0048】
各ノード410は、受信したデータを使用して、1つまたは複数のメトリックを生成する。例示的なメトリックは、不正行為インジケータまたは不正行為信号、不正行為インジケータまたは信号を生成したイベント、クライアントデバイスブランド、バックグラウンドセッションID、不正行為が検出されたときのタイムスタンプ、セッションタイプ(例えば、フォアグラウンドまたはアドベンチャー同期またはフィットネス関連セッション)、またはクライアントデバイスOSバージョンが含まれる。メトリックは、(データによって記述される)プレーヤーのどの行動がパラレルリアリティゲーム内での不正行為を示すかを示し得る。パラレルリアリティゲームの1つまたは複数のルールに違反する行動(例えば、閾値よりも速い速度で移動する、地理的位置を偽装する、など)は、不正行為を示す。いくつかの実施形態では、ノードは、データのセットにおける不正行為の兆候を検出するように訓練された1つまたは複数の機械学習モデルを使用し得る。各機械学習モデルは、データのセットが、不正行為の兆候であるという尤度(例えば、メトリック)を出力し得る。尤度が閾値を超える場合、ノードは、不正行為の兆候を生成し、データとともにメトリックとして格納し得る
【0049】
いくつかの実施形態では、ノードは、データ受信モジュール405からデータを受信する蓄積層を含む。蓄積層が、閾値量のデータを受信した後、ノードは、メトリックの計算を開始し得る。閾値自体は、受信されるデータのタイプまたは計算されるメトリックに依存し得る。場合によっては、ノードは、閾値量のデータを受信した後も新しいデータを受信し続け得る。このような場合、ノードは、新しく受信したデータを、メトリックを決定するための計算に組み込み得る。それゆえ、ノードは、そのメトリックに関連するデータを全て受信する前にメトリックの計算を開始し得る。他の利点の中でも、これは、データの全バッチが受信されるのを待つのではなく、(例えば、直ちに)作業を開始できるため、ノードの処理時間をより効率的に使用することができる。
【0050】
データ受信したデータに基づいて各ノードがメトリックを生成すると、ノードは、リレーショナルデータベース425にメトリックを格納する。その名前が示すように、リレーショナルデータベース425は、PostgreSQLデータベースなどのリレーショナルデータベースである。リレーショナルデータベースは、非リレーショナルデータベースでは利用できない多くの機能を提供する。例えば、リレーショナルデータベースは、非リレーショナルデータベースでは利用できないフォールトトレランス能力を提供し得る。しかしながら、リレーショナルデータベースは、書き込み動作のレートが制限され得、これは、一度に大量のデータをリレーショナルデータベースに書き込むことを困難にし得る。それゆえ、ノード410が異なる時間に独立してリレーショナルデータベース425にデータを書き込むことを可能にすることで、大量のデータをリレーショナルデータベース425に書き込むことが可能になり得る。いくつかの実施形態では、ノード410は、プリペアド挿入ステートメントを使用してメトリックを格納し得る。プリペアド挿入ステートメントは、書き込み関数を繰り返し再コンパイルすることなくデータを繰り返し書き込むことを可能にする機能である。例えば、プリペアド挿入ステートメントは、各実行中にデータの値が代入される、事前にコンパイルされたステートメント(例えば、コード)の形態をとる。いくつかの実施形態では、プリペアド挿入ステートメントは、最終ノードが余分な計算を実行する必要がないように、前もって作成され、データで満たされる。いくつかの実施形態では、ノード410は、作成されたプリペアド挿入ステートメントの数に関するいくつかのデータポイントを生成する。このデータはまた、アンチチートサーバ140のスケーラビリティを向上させるために格納され得る。
【0051】
本明細書で説明するように、メトリックの計算のためにノード410を採用することにより、各ノード410がメトリックの生成を完了すると、アンチチートサーバ140が、メトリックを生成してリレーショナルデータベース425に格納することが可能になる。それゆえ、ノードは、他のノードがメトリックの計算を完了することを待つことなく、格納のためにリレーショナルデータベース425にメトリックを送信し得る。これにより、メトリックの計算および格納の効率が向上し得る。例えば、フロー制限のために、リレーショナルデータベース425は、全てのノードからメトリックを一度に受信できない場合がある。各ノードがメトリックの計算を完了したときに(他の全てのノードを待つ代わりに)メトリックの計算を格納することにより、リレーショナルデータベース425のフロー制限が尊重され得る。これは、フローが制限されたAPI呼び出しに応答する場合、または、フローが制限された関数に呼び出しを行う場合に、レイテンシーを大幅に増加させることなくフロー制限が尊重されるようにするために有用である。
【0052】
リレーショナルデータベース425内のメトリックは、タイムスタンプが付され得る。例えば、メトリックは、(a)メトリックのデータが生成されたとき、または(b)プレーヤーがメトリックデータに関連付けられた行動を(パラレルリアリティゲームにおいて)実行したとき、に対応するタイムスタンプを有し得る。このバックデートは、不正行為が発生したかどうかを決定することに役立ち得る。タイムスタンプは、異なるアプリケーションやユーザに合わせてカスタマイズ可能であり得る。
【0053】
介入モジュール420は、不正行為が発生したかどうかを決定し得、ノードで生成されたメトリックに基づいて、1人または複数のプレーヤーに対して講じる措置を決定し得る。措置は、プレーヤーに警告を送ること、プレーヤーをパラレルリアリティゲームから一定期間追放すること、プレーヤーをパラレルリアリティゲームから永久に停止すること、またはデータに不正行為が存在することに基づいて取られる他の措置が含まれ得る。介入モジュール420は、1つまたは複数のノードがリレーショナルデータベース425に新しいメトリックを格納したと決定したときに、リレーショナルデータベース425からメトリックを読み出し得る。介入モジュール420は、メトリックを、1つまたは複数の閾値と比較し得、比較されたメトリックに基づいて、メトリックに関連付けられたプレーヤーに対して取るべき措置を決定し得る。いくつかの実施形態では、介入モジュール420はまた、プレーヤーに対して取られた以前の措置、および/またはプレーヤーについて計算された以前のメトリックに基づいて、措置を決定し得る。例えば、介入モジュール420は、「ストライク」システムを採用し得、プレーヤーの不正行為が検出されるたびに、講じられる措置がエスカレートする(例えば、ファーストストライクでは警告、セカンドストライクでは1日禁止など)。
【0054】
介入モジュール420は、プレーヤーに関連付けて介入データベース430に措置を格納する。介入モジュール420は、ゲームサーバ130がそのような措置を実行することができるように、決定された措置についてゲームサーバ130と通信し得、措置がいつ実行されたかを反映するように介入データベース430を更新し得る。
【0055】
例示的な方法
図5は、一実施形態による、メトリックを生成し、メトリックをリレーショナルデータベースに格納する処理を示す。
図5のステップは、方法600を実行するアンチチートサーバ(例えば、140)の構成要素の観点から図示されている。しかしながら、ステップの一部または全部は、他のエンティティまたは構成要素により実行され得る。さらに、いくつかの実施形態では、ステップを並行して実行してもよく、ステップを異なる順序で実行してもよく、または異なるステップを実行してもよい。方法500の1つまたは複数のステップは、非一時的コンピュータ可読記憶媒体に格納され得る。
【0056】
アンチチートサーバは、1つまたは複数のクライアントデバイス110からデータを受信する(510)(例えば、データ受信モジュール405は、ゲームサーバ(例えば、110)を介してデータを受信する)。いくつかの実施形態では、アンチチートサーバは、追加的または代替的に、他のサーバまたはコンピューティングデバイスからデータを受信する。アンチチートサーバの構成要素(例えば、データ受信モジュール405)は、アンチチートサーバの1つまたは複数のノード(例えば、410)にデータをブロードキャストする(510)。ノードは、所定のノードのセットに含まれ得る。所定のセット内のノード410は、データを処理するために利用可能であること、および/または外部オペレータによって示されたノード410の数に基づいて、アンチチートサーバ140によって予め選択され得る。いくつかの実施形態では、ノードの数は、外部オペレータによって選択される。各ノードは、データの一部を計算し、1つまたは複数のメトリックを生成する(530)。メトリックは、データの一部で不正行為が検出されたかどうかを示し得る。各ノードは、個別のメトリックの生成が完了すると、プリペアド挿入ステートメントを使用して、1つまたは複数のメトリックをリレーショナルデータベース(例えば、425)に追加する(540)。
【0057】
図5の処理は、アンチチートサーバがクライアントデバイス(例えば、110)からのデータを分析して、データが不正行為を示しているかを決定する、パラレルリアリティゲームに組み込まれる共有AR環境の例に関連してさらに説明され得る。パラレルリアリティゲームにおける不正行為の例としては、プレーヤーがゲーム中に歩かずに車で移動する場合がある。ゲームサーバ(例えば、130)は、パラレルリアリティゲームの共有AR環境をアクティブにプレーヤーに提供する複数のクライアントデバイスからデータを受信し得る。ゲームサーバは、データをアンチチートサーバに送信し得、アンチチートサーバは、ノードを使用して1つまたは複数のメトリックを生成する。アンチチートサーバのデータ受信モジュール(例えば、405)は、データ受信モジュールが、ゲームサーバから全てのデータを受信する前に、データをノードにブロードキャストし得る。前述のように、ノードは、1つまたは複数のメトリックをリレーショナルデータベースに追加する。各ノードは、他の全てのノードがメトリックを生成し終えるのを待つのではなく、メトリックが生成されると、それぞれの生成されたメトリックを追加する。1つまたは複数のメトリックが不正行為を示すものである場合、アンチチートサーバは、データが不正行為を示すものであったプレーヤーに対してゲームサーバがとるべき措置、そのプレーヤーをパラレルリアリティゲームから一時停止または追放するなどの措置を決定し得る。
【0058】
例示的なコンピューティングシステム
図6は、クライアントデバイス110またはゲームサーバ130としての使用に適した例示的なコンピュータ600を示すブロック図である。例示的なコンピュータ600は、チップセット604に接続された少なくとも1つのプロセッサ602を含む。チップセット604は、メモリコントローラハブ620および入力/出力(IO)コントローラハブ622を含む。メモリ606およびグラフィックアダプタ612は、メモリコントローラハブ620に接続され、ディスプレイ618は、グラフィックアダプタ612に接続される。ストレージデバイス608、キーボード610、ポインティングデバイス614、およびネットワークアダプタ616は、IOコントローラハブ622に接続される。コンピュータ600の他の実施形態では、異なるアーキテクチャを有する。
【0059】
図6に示される実施形態では、ストレージデバイス608は、ハードドライブ、コンパクトディスク、リードオンリーメモリ(CD-ROM)、DVD、またはソリッドステートメモリデバイスなどの非一時的なコンピュータ可読記憶媒体である。メモリ606は、プロセッサ602により使用される命令およびデータを保持する。ポインティングデバイス614は、マウス、トラックボール、タッチスクリーン、または他のタイプのポインティングデバイスであり、キーボード610(オンスクリーンキーボードであり得る)と組み合わせて使用され、コンピュータシステム600にデータを入力し得る。グラフィックアダプタ612は、画像および他の情報をディスプレイ618に表示する。ネットワークアダプタ616は、ネットワーク120などの、1つまたは複数のコンピュータネットワークにコンピュータシステム600を接続する。
【0060】
図1-4のエンティティによって使用されるコンピュータのタイプは、実施形態およびエンティティにより必要とされる処理能力に応じて変化し得る。例えば、ゲームサーバ320は、説明した機能を提供するために協働する複数のブレードサーバを含み得る。その上さらに、コンピュータは、キーボード610、グラフィックアダプタ612、およびディスプレイ618など、上述した構成要素のいくつかを欠くことが可能である。
【0061】
例示的な位置ベースのパラレルリアリティゲーム
図7は、現実世界と並行する仮想世界710の概念図である。仮想世界710は、パラレルリアリティゲームのプレーヤーのためのゲーム盤として機能することが可能である。示されるように、仮想世界710は、現実世界700の地理と並行する地理を含む。特に、現実世界700の地理的領域または空間を定義する座標の範囲は、仮想世界710の仮想空間を定義する対応する座標の範囲にマッピングされる。現実世界700の座標の範囲は、町、近隣、都市、キャンパス、ロケール、国、大陸、地球全体、または他の地理的領域と関連付けられることが可能である。地理的座標の範囲内の各地理的座標は、仮想世界710の仮想空間内の対応する座標にマッピングされる。
【0062】
仮想世界710におけるプレーヤーの位置は、現実世界700におけるプレーヤーの位置に対応する。例えば、現実世界700における位置712に位置するプレーヤーAは、仮想世界710における対応する位置722を有する。同様に、現実世界700における位置714に位置するプレーヤーBは、仮想世界710における対応する位置724を有する。プレーヤーが、現実世界700における、地理的座標の範囲内で動き回るとき、プレーヤーはまた、仮想世界710における仮想空間を定義する、座標の範囲内で動き回る。特に、プレーヤーが、現実世界における、地理的座標の範囲をナビゲートするとき、プレーヤーによって搬送されるモバイルコンピューティングデバイスに関連付けられた測位システム(例えば、GPSシステム、位置特定システム、またはその両方)は、プレーヤーの位置を追跡するために使用されることが可能である。現実世界700におけるプレーヤーの位置に関連付けられたデータは、仮想世界710における仮想空間を定義する対応する座標の範囲内でのプレーヤーの位置を更新するために使用される。このようにして、プレーヤーは、現実世界700における特定の個別の位置おいて、位置情報をチェックインするかまたは定期的に更新する必要なしに、現実世界700における対応する地理的座標の範囲の間を単に進むことによって、仮想世界710における仮想空間を定義する座標の範囲内での連続トラックに沿ってナビゲートすることが可能である。
【0063】
位置ベースのゲームは、仮想世界710の様々な仮想位置に散らばった様々な仮想要素または仮想オブジェクトに進む、またはそれと相互作用することをプレーヤーに要求するゲーム目標を含むことができる。プレーヤーは、現実世界700における仮想要素またはオブジェクトの対応する位置に進むことにより、これらの仮想位置に進むことが可能である。例えば、測位システムは、プレーヤーが現実世界700をナビゲートするときに、プレーヤーがパラレル仮想世界710もナビゲートするように、プレーヤーの位置を追跡することが可能である。プレーヤーは、特定の位置で様々な仮想要素やオブジェクトと相互作用して、1つまたは複数のゲーム目標を達成または実行することが可能である。
【0064】
ゲーム目標は、仮想世界710の様々な仮想位置に位置する仮想要素730と相互作用するプレーヤーを有し得る。これらの仮想要素730は、現実世界700におけるランドマーク、地理的位置、またはオブジェクト740にリンクされることが可能である。現実世界のランドマークまたはオブジェクト740は、芸術作品、モニュメント、建築物、企業、図書館、博物館、または他の適切な現実世界のランドマークもしくはオブジェクトであることが可能である。相互作用には、仮想アイテムの獲得、所有権の主張、使用、仮想通貨の消費などが含まれる。これらの仮想要素730を獲得するために、プレーヤーは、現実世界で仮想要素730にリンクされたランドマークまたは地理的位置740に進み、仮想世界710における仮想要素730と任意の必要な(ゲームルールにより定義される)相互作用を実行する。例えば、プレーヤーA712は、その特定のランドマーク740にリンクされた仮想要素730と、相互作用するかまたは獲得するために、現実世界700におけるランドマーク740に進まなければならないことがある。仮想要素730との相互作用は、仮想要素730に関連付けられたランドマークまたはオブジェクト740に関する写真を撮ること、または、それに関する他の情報を検証、取得もしくは獲得することなど、現実世界での行動を必要とすることが可能である。
【0065】
ゲーム目標は、位置ベースのゲーム内でプレーヤーによって収集された1つまたは複数の仮想アイテムをプレーヤーが使用することを必要とし得る。例えば、プレーヤーは、ゲーム目標を完了することに有用であり得る仮想アイテム732(例えば、武器、クリーチャー、パワーアップ、または他のアイテム)を探索しながら仮想世界710を進み得る。これらの仮想アイテム732は、現実世界700で異なる位置に進むことによって、または、仮想世界710もしくは現実世界700のいずれかで様々な行動を完了すること(仮想要素730と相互作用すること、プレーヤーでないキャラクタもしくは他のプレーヤーと戦うこと、または要求を完了すること、など)によって発見または収集されることが可能である。
図7に示された例では、プレーヤーは、1つまたは複数の仮想要素730を獲得するために仮想アイテム732を使用する。特に、プレーヤーは、仮想要素730に近接したまたはそれの内の仮想世界710の位置に仮想アイテム732を展開することが可能である。このようにして、1つまたは複数の仮想アイテム732を展開することにより、プレーヤーに対してまたはプレーヤーのチーム/派閥に対して、仮想要素730の獲得をもたらすことが可能である。
【0066】
特定の一実装では、プレーヤーは、パラレルリアリティゲームの一部として仮想エネルギーを収集しなければならないことがある。仮想エネルギー750は、仮想世界710の異なる位置に散らばり得る。プレーヤーは、仮想世界710の仮想エネルギーの位置に対応する現実世界700の位置に進む(またはその閾値距離内に)ことにより仮想エネルギー750を収集することが可能である。仮想エネルギー750は、ゲーム中で仮想アイテムにパワー供給するため、または様々なゲーム目標を実行するために使用されることが可能である。全ての仮想エネルギー750を失ったプレーヤーは、ゲームから切断されるか、一定時間または追加の仮想エネルギー750を収集するまでプレイすることを妨げられ得る。
【0067】
本開示の態様によれば、パラレルリアリティゲームは、ゲーム中のあらゆる参加者が同じ仮想世界を共有する大規模なマルチプレーヤの位置ベースのゲームであることが可能である。プレーヤーは、別個のチームまたは派閥に分割され、仮想要素の所有権を獲得するまたは主張するなどのために、1つまたは複数のゲーム目標を達成するために協力することが可能である。このようにして、パラレルリアリティゲームは、本質的に、ゲーム内のプレーヤー間での協働を奨励するソーシャルゲームであり得る。対立するチームのプレーヤーは、パラレルリアリティゲーム中に互いに足を引っ張り合うこと(または、時々、相互目標を達成するために共同すること)が可能である。プレーヤーは、仮想アイテムを使用して、対立するチームのプレーヤーを攻撃するか、またはその進行を妨害し得る。場合によっては、プレーヤーは、パラレルリアリティゲームでの協働型または対話型イベントのために現実世界の位置に集合することを奨励される。これらの場合、ゲームサーバは、プレーヤーが実際に物理的に存在し、位置偽装していないことを保証しようとする。
【0068】
図8は、プレーヤーと仮想世界710との間のインターフェースの一部として提示されることが可能な(例えば、プレーヤーのスマートフォン上に)ゲームインターフェース800の一実施形態を示す。ゲームインターフェース800は、仮想世界710と、プレーヤーの位置722および仮想要素730の位置、仮想アイテム732、ならびに仮想世界710の仮想エネルギー750の位置などの、ゲームの様々な他の態様とを表示するために使用され得る表示ウィンドウ810を含む。ユーザインターフェース800はまた、ゲームデータ情報、ゲーム通信、プレーヤー情報、クライアント位置検証命令、およびゲームに関連付けられた他の情報などの、他の情報を表示することが可能である。例えば、ユーザインターフェースは、プレーヤーの名前、経験レベルおよび他の情報などのプレーヤー情報815を表示することが可能である。ユーザインターフェース800は、ゲームに関連付けられた様々なゲーム設定および他の情報にアクセスするためのメニュー820を含むことが可能である。ユーザインターフェース800はまた、ゲームシステムとプレーヤーとの間の、およびパラレルリアリティゲームの1人または複数人のプレーヤーとの間の通信を可能にする通信インターフェース830を含むことが可能である。
【0069】
本開示の態様によれば、プレーヤーは、単に現実世界においてクライアントデバイス710を持ち運ぶことによってパラレルリアリティゲームと相互作用することが可能である。例えば、プレーヤーは、単にスマートフォン上のパラレルリアリティゲームに関連付けられたアプリケーションにアクセスし、スマートフォンとともに現実世界を動き回ることによってゲームをプレイすることが可能である。この点について、プレーヤーは、位置ベースのゲームをプレイするために、表示画面上で仮想世界の視覚的表現を連続的に閲覧する必要がない。したがって、ユーザインターフェース800は、ユーザがゲームと相互作用することを可能にする非視覚的要素を含むことが可能である。例えば、ゲームインターフェースは、プレーヤーが、ゲームの仮想要素またはオブジェクトに接近しているときに、または重要なイベントがパラレルリアリティゲーム内で起こるときに、プレーヤーに可聴通知を提供することが可能である。いくつかの実施形態では、プレーヤーは、音声制御840を用いてこれらの可聴通知を制御することが可能である。仮想要素またはイベントのタイプに応じて、ユーザに異なるタイプの可聴通知が提供され得る。可聴通知は、プレーヤーの仮想要素またはオブジェクトに対する近接度に応じて周波数またはボリュームを増加または減少することが可能である。振動通知または他の適切な通知もしくは信号などの、他の非視覚的な通知および信号がユーザに提供され得る。
【0070】
パラレルリアリティゲームは、パラレルリアリティゲーム内でのゲームプレイを向上させ、奨励するための様々な特徴を有することが可能である。例えば、プレーヤーは、ゲーム全体を通じて使用可能な(例えば、ゲーム内アイテムを購入するため、他のアイテムと交換するため、アイテムをクラフトするためなど)仮想通貨または別の仮想報酬(例えば、仮想トークン、仮想ポイント、仮想材料リソースなど)を蓄積することが可能である。プレーヤーは、1つまたは複数のゲーム目標を完了し、ゲーム内で経験を積むことで、様々なレベルに進むことが可能である。プレーヤーはまた、ゲーム内のゲーム目標を完了するために使用されることが可能な強化された「力」または仮想アイテムを取得することが可能であり得る。
【0071】
当業者であれば、提供された開示を使用することにより、多数のゲームインターフェース構成および基礎となる機能が可能であることを理解するであろう。本開示は、それに反することが明示されていない限り、いずれか1つの特定の構成に限定されることを意図するものではない。
【0072】
その他の考慮事項
上記の説明のいくつかの部分は、アルゴリズム的処理または動作に関して実施形態を説明する。これらのアルゴリズム的記述および表現は、コンピューティング分野の当業者によって、その作業の内容を、他の当業者に効果的に伝えるために一般的に使用される。これらの動作は、機能的、計算的、または論理的に説明されるが、プロセッサまたは等価な電気回路、マイクロコードなどによる実行のための命令を含むコンピュータプログラムによって実装されることが理解される。さらに、一般性を失うことなく、機能的動作のこれらの構成をモジュールと呼ぶことが、時には便利であることも分かっている。
【0073】
「1つの実施形態」または「一実施形態」への任意の言及は、その実施形態に関連して記載された特定の要素、特徴、構造、または特性が少なくとも1つの実施形態に含まれることを意味する。本明細書の様々な場所における「1つの実施形態では」という語句の出現は、必ずしも全てが同じ実施形態を指すわけではない。同様に、要素または構成要素に先行する「a」または「an」の使用は、単に便宜上行われる。この説明は、別の意味であることが明白でない限り、要素または構成要素の1つまたは複数が存在することを意味すると理解されるべきである。
【0074】
値が「近似的」または「実質的」(またはそれらの派生物)として記載される場合、そのような値は、別の意味が文脈から明らかでない限り、正確な+/-10%として解釈されるべきである。例えば、「約10」は「9から11の範囲内」を意味すると理解されるべきである。
【0075】
「備える(comprises)」、「備えている(comprising)」、「含む(includes)」、「含んでいる(including)」、「有する(has)」、「有している(having)」またはそれらの任意の他の変形は、非排他的な内容をカバーすることを意図する。例えば、要素のリストを備える処理、方法、条項、または装置は、必ずしもそれらの要素のみに限定されるのではなく、そのような処理、方法、条項、または装置に明示的に記載されていない、または内在する他の要素を含んでもよい。さらに、そうではないと明示的に述べられていない限り、「または」は、包括的な「または」に言及し、排他的な「または」に言及しない。例えば、状態AまたはBは、以下のいずれかを充足する:Aは真であり(または現在)Bは偽(または現在でない)である、Aは偽であり(または現在でない)Bは真(または現在)である、およびAとBの両方が真(または現在)である。
【0076】
本開示を読めば、当業者であれば、記載された機能を提供するためのシステムおよび処理のための、さらなる代替的な構造設計および機能設計を理解するであろう。したがって、特定の実施形態および用途が図示され、記載されてきたが、記載された主題は、開示された正確な構造および構成要素に限定されないことを理解されたい。保護範囲は、以下の特許請求の範囲によってのみ限定されるべきである。
【手続補正書】
【提出日】2024-03-19
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
1つまたは複数のクライアントデバイスからデータを受信することと、
所定のノードのセットにデータをブロードキャストすることと、
各ノードで、前記データの一部を計算して1つまたは複数のメトリックを生成することと、
少なくともいくつかの前記ノードによって、それらのノードによって生成された前記1つまたは
複数のメトリックを、プリペアド挿入ステートメントを使用してリレーショナルデータベースに追加することと、
を備える方法。
【請求項2】
前記データは、パラレルリアリティゲームのプレーヤーの活動データである、
請求項1に記載の方法。
【請求項3】
前記パラレルリアリティゲームのプレーヤーの識別子のリストを読み出すことと、
前記識別子のリスト内の識別子に関連付けられた活動データを読み出すことであって、前記活動データは、前記所定のノードのセット内の前記ノードにブロードキャストされるデータである、読み出すことと、
をさらに備える、請求項2に記載の方法。
【請求項4】
前記メトリックは、前記プレーヤーの活動データが前記パラレルリアリティゲーム中に実行された不正行為を示すかどうかを示す、
請求項2に記載の方法。
【請求項5】
前記識別子のリストの前記識別子に関連付けられた活動データを読み出すことは、範囲スキャンを介して、圧縮データ記憶システムにアクセスすることを含む、
請求項3に記載の方法。
【請求項6】
前記圧縮データ記憶システムは、BigTable記憶システムである、
請求項5に記載の方法。
【請求項7】
前記リレーショナルデータベースは、PostgreSQLリレーショナルデータベースである、
請求項1に記載の方法。
【請求項8】
前記データをブロードキャストすることは、combine.globally.withfanoutを使用して実行される、
請求項1に記載の方法。
【請求項9】
外部オペレータが、前記セットに含む所定のノードの数を選択する、
請求項1に記載の方法。
【請求項10】
前記所定のノードのセットは、24から200のノードを含む、
請求項1に記載の方法。
【請求項11】
コンピューティングデバイスによって実行されると、前記コンピューティングデバイスに、
1つまたは複数のクライアントデバイスからデータを受信することと、
所定のノードのセットにデータをブロードキャストすることと、
各ノードで、前記データの一部を計算して1つまたは複数のメトリックを生成することと、
少なくともいくつかの前記ノードによって、それらのノードによって生成された前記1つまたは
複数のメトリックを、プリペアド挿入ステートメントを使用してリレーショナルデータベースに追加することと、
を含む動作を実行させる命令を格納する、非一時的コンピュータ可読記憶媒体。
【請求項12】
前記データは、パラレルリアリティゲームのプレーヤーの活動データである、
請求項11に記載の非一時的コンピュータ可読記憶媒体。
【請求項13】
前記命令は、
前記パラレルリアリティゲームのプレーヤーの識別子のリストを読み出す命令と、
前記識別子のリスト内の識別子に関連付けられた活動データを読み出す命令であって、前記活動データは、前記所定のノードのセット内の前記ノードにブロードキャストされるデータである、読み出す命令と、
をさらに備える、請求項12に記載の非一時的コンピュータ可読記憶媒体。
【請求項14】
前記メトリックは、前記プレーヤーの活動データが前記パラレルリアリティゲーム中に実行された不正行為を示すかどうかを示す、
請求項12に記載の非一時的コンピュータ可読記憶媒体。
【請求項15】
前記識別子のリストの前記識別子に関連付けられた活動データを読み出す命令は、範囲スキャンを介して、圧縮データ記憶システムにアクセスする命令を含む、
請求項13に記載の非一時的コンピュータ可読記憶媒体。
【請求項16】
前記圧縮データ記憶システムは、BigTable記憶システムである、
請求項15に記載の非一時的コンピュータ可読記憶媒体。
【請求項17】
前記リレーショナルデータベースは、PostgreSQLリレーショナルデータベースである、
請求項11に記載の非一時的コンピュータ可読記憶媒体。
【請求項18】
前記データをブロードキャストすることは、combine.globally.withfanoutを使用して実行される、
請求項11に記載の非一時的コンピュータ可読記憶媒体。
【請求項19】
外部オペレータが、前記セットに含む所定のノードの数を選択する、
請求項11に記載の非一時的コンピュータ可読記憶媒体。
【請求項20】
パラレルリアリティゲームをホストするように構成されたユニバーサルゲームモジュールと、
前記パラレルリアリティゲームのデータおよびメトリックを格納するように構成されたリレーショナルデータベースを備えるゲームデータベースと、
1つまたは複数のクライアントデバイスからデータを受信することと、
所定のノードのセットに前記データをブロードキャストすることと、
各ノードで、前記データの一部を計算して1つまたは複数のメトリックを生成することと、
少なくともいくつかの前記ノードによって、それらのノードによって生成された前記1つまたは
複数のメトリックを、プリペアド挿入ステートメントを使用して前記リレーショナルデータベースに追加することと、
を含む動作を実行するように構成された処理モジュールと、
を備える、ゲームサーバ。
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、データ処理、特に、所定のセット内のノードでデータを処理することおよびノードを介してデータを格納することに関する。
【背景技術】
【0002】
コンピュータネットワークは、データを交換するコンピューティングデバイスの相互接続されたセットである。データの交換は、拡張現実アプリケーションを含む、多数のアプリケーションのために、コンピューティングデバイスと1つまたは複数のサーバとの間でなされ得、そこでは、高いレイテンシーが、拡張現実アプリケーションを使用するユーザのエクスペリエンスに影響し得る。1つまたは複数のサーバは、大量のデータを受信し、所与の時間期間内にアプリケーションにより使用されるデータに基づいてメトリックを計算する必要がある。多くの場合、1つまたは複数のサーバは、計算に結合機を使用し、これは、全ての計算が完了するまで、1つまたは複数のサーバがデータおよびメトリックを格納すること(または、1つまたは複数のコンピューティングデバイスへデータおよびメトリックを送信すること)を妨げる。さらに、1つまたは複数のサーバは、データフローが限定されたデータベースにデータを格納し得、またはそうでなければ、レートが限定されたインターフェース(例えば、アプリケーションプログラミングインターフェース)でデータを使用する。それゆえ、データの生成と、関連するメトリックの計算との間で大きなタイムラグが生じ得、これは、それらのメトリックに頼るアプリケーションの性能に有害である。したがって、低減されたレイテンシーで、メトリックを計算すること、および、データを格納すること、のためのシステムが必要である。
【発明の概要】
【0003】
限定された時間期間内に大量のデータを処理および格納することが望ましい様々なアプリケーションが存在する。例えば、パラレルリアリティゲームでは、アンチチートサーバは、ゲームサーバから来るプレーヤーの活動データの閾値バッチ量(例えば、1時間分)を処理して、不正行為を示す活動データを特定するための限定されたタイムウィンドウ(例えば、30分未満)のみを有し得る。アンチチートサーバがデータ処理にそれ以上の時間を要する場合、次のバッチのデータが利用可能になるまで、処理は完了し得ない。それゆえ、アンチチートサーバは、処理を遅らすか、いくつかの活動データをスキップして未分析のままにし得る。既存の技術を使用すると、アンチチートサーバは、処理の前に全てのデータが受信されるまで待機し、処理されたデータを格納するかアクションを起こすシステムに渡す前に、全ての処理を完了する必要があり得る。
【0004】
この問題や他の問題は、処理中にメトリックを独立して計算し、格納するためにノードを並列化することにより対処し得る。メトリックを格納するためのデータベースに、一度にデータベースに書き込み得るノード数のフロー制限がある場合、全てのノードが処理を終了したときではなく、各ノードが処理を終了したときにデータベースにデータを書き込むように、独立したノードで並列にデータを処理することによりレイテンシーを低減し得る。
【0005】
様々な実施形態では、データを処理するための方法は、1つまたは複数のクライアントデバイスからデータを受信するアンチチートサーバを含む。アンチチートサーバのデータ受信モジュールは、アンチチートサーバに含まれるか、またはアンチチートサーバの外部にある所定のノードのセットにデータをブロードキャストし得る。いくつかの実施形態では、データ受信モジュールは、combine.globally.withfanoutを使用してデータをブロードキャストし得る。各ノードは、データセット全体の受信を待たずに、受信したデータを処理して1つまたは複数のメトリックを生成し得る。各ノードは、プリペアド挿入ステートメントを使用してリレーショナルデータベースに書き込み得る。いくつかの実施形態では、リレーショナルデータベースは、PostgreSQLである。
【0006】
いくつかの実施形態では、データは、可能性のある不正行為を特定するために処理される、パラレルリアリティゲームのプレーヤーの活動データである。アンチチートサーバは、範囲スキャン(range scan)を介して、圧縮データ記憶システム(例えば、BigTable)にアクセスすることにより、パラレルリアリティゲームのプレーヤーの識別子のリストを読み出す。活動データは分析され、プレーヤーに関連付けられた活動データから、そのプレーヤーが不正行為(例えば、位置情報の偽装)を行っている可能性が高いかどうかを示す1つまたは複数のメトリックが計算される。アンチチートサーバは、識別子のリスト内の識別子に関連付けられた活動データを読み出し得る。アンチチートサーバは、各ノードでデータの一部を計算し、1つまたは複数のメトリックを生成する。メトリックは、データが、パラレルリアリティゲーム中にプレーヤーにより実行された不正行為を示すかどうかを示し得る。
【図面の簡単な説明】
【0007】
【
図1】
図1は、一実施形態による、パラレルリアリティゲームのメトリックを生成することおよび格納することに適したネットワーク化されたコンピューティング環境を示すブロック図である。
【
図2】
図2は、一実施形態による、クライアントデバイスを示すブロック図である。
【
図3】
図3は、一実施形態による、ゲームサーバを示すブロック図である。
【
図4】
図4は、一実施形態による、アンチチートサーバを示すブロック図である。
【
図5】
図5は、一実施形態による、メトリックをリレーショナルデータベースに追加する処理を示すフローチャートである。
【
図6】
図6は、一実施形態による、
図1のネットワーク化されたコンピューティング環境内での使用に適したコンピュータシステムの一例を示す図である。
【
図7】
図7は、一実施形態による、現実世界と並行する地理を有する仮想世界の表現を描写する図である。
【
図8】
図8は、一実施形態による、パラレルリアリティゲームの例示的なゲームインターフェースを描写する図である。
【発明を実施するための形態】
【0008】
図及び以下の説明は、例示のみを目的として特定の実施形態を説明する。当業者は、構造および方法の代替的な実施形態が、説明される原理から逸脱することなく採用され得ることを以下の説明から認識するであろう。可能な限り、図中では類似または同種の参照番号を使用し、類似または同種の機能を示す。要素に共通する数字の後に異なる文字が続く場合、これは、要素が、類似または同一であることを示す。数字のみへの言及は、文脈から別段の指示がない限り、一般に、そのような要素のいずれか1つまたは任意の組み合わせを指す。
【0009】
様々な実施形態が、現実世界におけるプレーヤーの移動および行動が、仮想世界における行動に影響を及ぼすように、現実世界の地理の少なくとも一部と並行する仮想世界の地理の中に拡張現実コンテンツを含むパラレルリアリティゲームの文脈で説明される(例示的なパラレルリアリティゲームは、
図7-8に関してさらに説明される)。記載された主題は、メトリックを生成および格納することが望ましい他の状況においても適用可能である。さらに、コンピュータベースのシステム固有の柔軟性により、システムの構成要素間および構成要素中のタスクおよび機能の多種多様な可能な構成、組み合わせ、および分割が可能になる。
【0010】
例示的なコンピューティング環境
図1は、一実施形態によるゲームサーバ130の環境100(本明細書でコンピュータネットワークとも呼ばれる)を示す。図は、明確性を目的としてブロック図を用いて簡略な例を示している。環境100は、3つのクライアントデバイス110、ネットワーク120、ゲームサーバ130、およびアンチチートサーバ140を含む。環境100は、クライアント-サーバアーキテクチャを含み、ゲームサーバ130は、ネットワーク120を通じてクライアントデバイス
110と通信し、クライアントデバイス110においてプレーヤーへ1つまたは複数のパラレルリアリティゲームを提供する。他の実施形態では、環境100は、スポンサー/広告主システムまたは企業システム、追加のクライアントデバイス110、ネットワーク120、ゲームサーバ130、アンチチートサーバ140、または他のネットワークのノードなどの、より少ない構成要素、追加の構成要素、または他の構成要素を含み得る。そのうえさらに、構成要素の機能は、以下で説明されるのとは異なるように分散され得る。
【0011】
ネットワーク化されたコンピューティング環境100は、現実世界と並行する地理を有する仮想世界におけるプレーヤーの相互作用を提供する。特に、現実世界の地理的領域は、仮想世界の対応する領域に直接リンクする、またはマップすることが可能である。プレーヤーは、現実世界の様々な地理的位置に移動することで、仮想世界内を移動することが可能である。例えば、現実世界におけるプレーヤーの位置は追跡されることが可能であり、仮想世界におけるプレーヤーの位置を更新するために使用することが可能である。典型的には、現実世界におけるプレーヤーの位置は、プレーヤーが仮想世界と相互作用しているクライアントデバイス110の位置を見つけ、プレーヤーが同じ(またはほぼ同じ)位置にいると仮定することによって決定される。例えば、様々な実施形態では、現実世界におけるプレーヤーの位置が、仮想世界における仮想要素の仮想位置に対応する現実世界の位置から閾値距離(例えば、10メートル、20メートルなど)以内である場合、プレーヤーは、仮想要素と相互作用し得る。便宜上、様々な実施形態を「プレーヤーの位置」を参照して説明するが、当業者であれば、このような参照はプレーヤーのクライアントデバイス110の位置を指し得ることを理解されよう。
【0012】
クライアントデバイス110(「クライアント」とも呼ばれる)は、プレーヤーがゲームサーバ1
30と相互作用することが可能であるコンピューティングデバイスである。例えば、クライアントデバイス110は、スマートフォン、ポータブルゲーミングデバイス、タブレット、パーソナルデジタルアシスタント(PDA)、携帯電話、ナビゲーションシステム、ハンドヘルドGPSシステム、または他のデバイスであることが可能である。クライアントデバイス110は、ソフトウェア(例えば、ゲーミングアプリケーションまたはアプリ)を実行して、プレーヤーに、仮想世界と相互作用することを可能にし得る。クライアントデバイス110はまた、パラレルリアリティゲーム(本明細書で位置ベースのゲームとも呼ばれる)のためのユーザインターフェースを提供するために、ハードウェア、ソフトウェア、またはその両方を含み得る。そのうえさらに、クライアントデバイス110は、ビルトイン(built-in)コンピューティングデバイスを有する車両であり得る。クライアントデバイスは、
図2に関連してさらに説明される。
【0013】
ネットワーク120は、ローカルエリアネットワーク(例えばイントラネット)、ワイドエリアネットワーク(例えばインターネット)、またはそれらのいくつかの組み合わせなどの、任意のタイプの通信ネットワークであることが可能である。ネットワーク120は、クライアント110とゲームサーバ130との間の直接接続を含むことも可能である。一般に、ゲームサーバ130とクライアント110との間の通信は、様々な通信プロトコル(例えば、TCP/IP、HTTP、S1v1TP、FTP)、エンコーディングまたはフォーマット(例えば、HTML、JSON、XML)、および/または保護スキーム(例えば、VPN、セキュアHTTP、SSL)を用いて、ワイヤードおよび/またはワイヤレス接続の任意のタイプを用いて、ネットワークインタフェースを介して実行することが可能である。
【0014】
ゲームサーバ130は、パラレルリアリティゲームのマスター状態をホストし、プレーヤーのクライアントデバイス110にゲーム状態の更新を提供する(例えば、ゲーム内の他のプレーヤーが取った行動、現実世界の状況の変化、ゲーム状態または条件の変化などに基づいて)。ゲームサーバ130は、パラレルリアリティゲーム内のプレーヤーの行動を受信して処理する。ゲームサーバ130は、処理のためにデータをアンチチートサーバ140に送信し、アンチチートサーバ140から、プレーヤーに関連して講じるべき措置に関する情報を受信し得る。ゲームサーバ130は、
図3に関連してさらに説明される。
【0015】
アンチチートサーバ140は、ゲームサーバ130(または、いくつかの実施形態では、クライアントデバイス110)から受信したデータに基づいて、メトリックを計算し、格納する。アンチチートサーバ140は、様々なシステムおよびアプリケーションのメトリックを計算および格納し得るが、本明細書では、パラレルリアリティゲーム(例えば、現実世界におけるプレーヤーの位置が、ゲーム世界におけるプレーヤーの位置と相関する共有AR環境)について説明される。例えば、アンチチートサーバ140は、リレーショナルデータベースに格納するデータを受信する。データは、パラレルリアリティゲームで発生した行動を記述する活動データであり得る。メトリックは、パラレルリアリティゲームにおける不正行為に対応する可能性が高い活動データを特定することに関連し得る。アンチチートサーバ140は、複数のノードを採用して、データに基づいてメトリックを計算し、計算が完了するとメトリックを格納する。このように計算と格納を分散させることで、アンチチートサーバ140は、メトリックの計算と格納におけるレイテンシーを低減することが可能になる。アンチチートサーバ140は、
図4に関連してさらに説明される。
【0016】
本開示は、サーバ、データベース、ソフトウェアアプリケーション、および他のコンピュータベースのシステム、ならびにそのようなシステムとの間で行われるアクションおよび送信される情報について言及する。当業者であれば、コンピュータベースのシステム固有の柔軟性により、構成要素間および構成要素中のタスクおよび機能の多種多様な可能な構成、組み合わせ、および分割が可能であることを認識するであろう。例えば、サーバにより実装されるとして開示された処理は、単一のサーバを使用して、または、組み合わせて動作する複数のサーバを使用して、実装され得る。データベースおよびアプリケーションは、単一のシステムで、または、複数のシステムに分散させて、実装され得る。分散された構成要素は、逐次的に、または、並列的に動作し得る。
【0017】
開示されたシステムおよび方法が、ユーザの個人情報にアクセスし分析する、または位置情報などの個人情報を利用する状況では、ユーザは、プログラムまたは特徴が情報を収集するかどうかを制御し、システムまたは他のアプリケーションからコンテンツを受信するかどうか、または、どのように受信するかを制御する機会が提供され得る。どのような情報が収集され、その情報がどのように使用されるかについて、ユーザに意味のある通知が提供されるまでは、そのような情報またはデータは、収集または使用されない。ユーザが同意しない限り、情報は、収集または使用されず、その同意は、ユーザによりいつでも取消または変更することが可能である。それゆえ、ユーザは、ユーザに関する情報がどのように収集され、アプリケーションまたはシステムにより使用されるかを制御することが可能である。さらに、特定の情報またはデータは、格納または使用される前に、個人を特定できる情報が削除されるように、1つまたは複数の方法で処理することが可能である。例えば、ユーザの身元は、そのユーザについて個人を特定できる情報を特定できないように処理され得る。
【0018】
例示的なクライアントデバイス
図2は、一実施形態による、
図1に示されるクライアントデバイス110のブロック図である。ゲームサーバ130は、位置ベースのゲームを提供し得るため、クライアントデバイス110は、プレーヤーが容易に持っていく、ないしは他のやり方により運ぶことが可能である、スマートフォンまたは他のポータブルデバイスなどのポータブルコンピューティングデバイスであることが好ましい。プレーヤーは、実際の世界において、単にクライアントデバイス110を持っていくことまたは運ぶことにより、仮想世界と相互作用することが可能である。
【0019】
クライアントデバイス110は、ゲームサーバ130と通信して、物理的な環境の感覚データを提供し得る。一実施形態では、クライアントデバイス110は、カメラアセンブリ212、ゲームモジュール214、測位モジュール216、位置特定モジュール218、およびローカルデータストア240を含む。クライアントデバイス110はまた、ネットワーク120を通じて通信を提供するためのネットワークインターフェース(図示せず)を含む。様々な実施形態では、クライアントデバイス110は、追加のセンサ、ディスプレイ、およびソフトウェアモジュール等の、異なる、または追加の構成要素を含み得る。
【0020】
カメラアセンブリ212は、画像データを捕捉する1つまたは複数のカメラを含む。カメラは、特定のポーズ(環境内のカメラの位置および方向)で、クライアントデバイス110を取り囲む環境のシーンを描写する画像データを捕捉する。カメラアセンブリ212は、様々なカラー捕捉範囲および様々な捕捉レートを有する様々なフォトセンサを使用し得る。同様に、カメラアセンブリ212は、広角レンズや望遠レンズなどの種々のレンズ範囲を有するカメラを含み得る。カメラアセンブリ212は、単一の画像または複数の画像をビデオのフレームとして捕捉するように構成され得る。
【0021】
クライアントデバイス110はまた、動作センサ、加速度計、ジャイロスコープ、気圧計、温度計、光センサ、マイクロフォンなど、クライアントデバイスを取り囲む環境に関するデータを収集するための追加のセンサを含み得る。カメラアセンブリ212により捕捉された画像データは、追加の感覚データ(例えば、温度、環境の明るさ、気圧、位置、ポーズなど)または補足データ(例えば、露出長、シャッター速度、焦点距離、撮影時間など)など、画像データに関する他の情報を記述するメタデータを付加することが可能である。
【0022】
クライアントデバイス110は、現実世界におけるクライアントデバイス110の位置を監視する測位デバイス210を含むことが可能である。測位デバイス210は、クライアント110の位置を監視するための任意のデバイスまたは回路とすることが可能である。例えば、測位デバイス210は、衛星ナビゲーション測位システム(例えば、GPSシステム、ガリレオ測位システム、グローバルナビゲーション衛星システム(Global Navigation satellite system:GLONASS)、北斗衛星導航測位システム)、慣性ナビゲーションシステム、デッドレコニングシステム、IPアドレスに基づいて、三角測量および/またはセルラタワーもしくはWiFiホットスポットへの近接を使用して、および/または位置を決定するための他の適切な技術を使用して、実際の位置または相対的な位置を決定することが可能である。
【0023】
ゲームモジュール214は、パラレルリアリティゲームに参加するために、プレーヤーにインターフェースを提供する。ゲームサーバ130は、ネットワーク120を介して、ゲームモジュール214により使用されるゲームデータをクライアントデバイス110に送信し、ゲームサーバから離れた位置に居るプレーヤーにゲームのローカルバージョンを提供する。一実施形態では、ゲームモジュール214は、仮想世界を描写(例えば、仮想世界の画像をレンダリング)し、様々なゲーム目標を実行するために、ユーザに仮想世界と相互作用することを可能にさせるクライアントデバイス110のディスプレイ上に、ユーザインターフェースを提示する。いくつかの実施形態では、ゲームモジュール214は、パラレルリアリティゲームからの仮想要素で拡張された現実世界の(例えば、カメラアセンブリ212で捕捉した)画像を提示する。これらの実施形態では、ゲームモジュール214は、クライアントデバイス110の他の構成要素から受信した他の情報に応じて、仮想コンテンツを生成または調整し得る。例えば、ゲームモジュール214は、画像データの捕捉されたシーンの深度マップに応じて、ユーザインターフェース上に表示される仮想オブジェクトを調整し得る。
【0024】
ゲームモジュール214はまた、プレーヤーが表示画面を見ることなくゲームと相互作用を行えるように、他の様々な出力を制御することが可能である。例えば、ゲームモジュール214は、プレーヤーが表示画面を見ることなくゲームを実行できるように、様々な音声、振動、またはその他の通知を制御することが可能である。
【0025】
測位モジュール216は、クライアントデバイス110の位置を決定するための任意のデバイスまたは回路とすることが可能である。例えば、測位モジュール216は、衛星ナビゲーション測位システム(例えば、GPSシステム、ガリレオ測位システム、グローバルナビゲーション衛星システム(Global Navigation satellite system:GLONASS)、北斗衛星導航測位システム)、慣性ナビゲーションシステム、デッドレコニングシステム、IPアドレス分析、三角測量および/またはセルラタワーもしくはWiFiホットスポットへの近接、または他の適切な技術を使用して、実際の位置または相対的な位置を決定することが可能である。
【0026】
プレーヤーが現実世界でクライアントデバイス110を持って動き回る際、測位モジュール216は、プレーヤーの位置を追跡し、ゲームモジュール214にプレーヤーの位置情報を提供する。ゲームモジュール214は、現実世界におけるプレーヤーの実際の位置に基づいて、ゲームに関連付けられた仮想世界におけるプレーヤーの位置を更新する。それゆえ、プレーヤーは、現実世界において、単にクライアントデバイス110を持っていくことまたは運ぶことにより、仮想世界と相互作用することが可能である。特に、仮想世界におけるプレーヤーの位置は、現実世界におけるプレーヤーの位置と対応することが可能である。ゲームモジュール214は、ネットワーク120を通じて、ゲームサーバ130にプレーヤーの位置情報を提供することが可能である。これに応じて、ゲームサーバ130は、不正行為者が位置を偽装することを防ぐために、クライアントデバイス110の位置を検証する様々な技術を実行し得る。位置情報がアクセスされること、および、ゲームの文脈の中でその位置情報がどのように利用されるか(例えば、仮想世界におけるプレーヤーの位置を更新する)をプレーヤーが知らされた後で許可された場合にのみ、プレーヤーに関連付けられた位置情報が利用されることが理解されなければならない。さらに、プレーヤーに関連付けられた任意の位置情報は、プレーヤーのプライバシーを保護する方法で格納および維持される。
【0027】
位置特定モジュール218は、クライアントデバイス110について測位モジュール216により決定された位置を受信し、カメラアセンブリ212の1つまたは複数のカメラのポーズを決定することにより、それを絞り込む。一実施形態では、位置特定モジュール218は、測位モジュール216により生成された位置を使用して、クライアントデバイス110を取り囲む環境の3Dマップを選択する。位置特定モジュール218は、ローカルストレージから、またはゲームサーバ130から、3Dマップを取得し得る。3Dマップは、クライアントデバイス110を取り囲む環境の、点群、メッシュ、または任意の他の適切な3D表現であり得る。
【0028】
一実施形態では、位置特定モジュール218は、訓練されたモデルを適用して、3Dマップに関連してカメラアセンブリ212により捕捉された画像のポーズを決定する。それゆえ、位置特定モジュール218は、クライアントデバイス110の位置および方向の正確な(例えば、数センチメートルおよび数度以内に)決定をすることが可能である。その後、クライアントデバイス110の位置は、センサの読み取りに基づくデッドレコニング、定期的な再位置特定、またはその両方の組み合わせを使用して、経時的に追跡することが可能である。クライアントデバイス110の正確なポーズを有することは、ゲームモジュール214が、仮想オブジェクトが現実世界と相互作用しているかのような印象を与える方法で、(例えば、カメラアセンブリ212からのリアルタイムフィードと連動して仮想要素をディスプレイ上に表示することにより)現実世界の画像に重ねた仮想コンテンツを提示すること、または(例えば、ARヘッドセットの透明ディスプレイ上に仮想要素を表示することにより)現実世界そのものを提示することを可能にし得る。例えば、仮想キャラクタが現実の木の後ろに隠れたり、仮想帽子が現実の彫像の上に置かれたり、仮想クリーチャーが、現実の人が近づきすぎると走って隠れたりし得る。
【0029】
ローカルデータストア240は、クライアントデバイス110により使用されるデータを格納するように構成された1つまたは複数のコンピュータ可読媒体である。例えば、ローカルデータストア240は、測位モジュール216により追跡されたプレーヤーの位置情報、パラレルリアリティゲームの現在の状態のローカルコピー、または任意の他の適切なデータを格納し得る。ローカルデータストア240は、単一のエンティティとして示されているが、データは、複数の媒体に分割され得る。その上さらに、データは、他の場所に(例えば、分散データベースに)格納され得、ネットワーク120を介してリモートアクセスされ得る。
【0030】
例示的なゲームサーバ
ゲームサーバ130は、クライアントデバイス110にゲーム機能を提供する1つまたは複数のコンピューティングデバイスを含む。
図3は、パラレルリアリティゲームをホストすることに適したゲームサーバ130の一実施形態を示す。示される実施形態では、ゲームサーバ130は、ユニバーサルゲームモジュール321、商用ゲームモジュール323、データ収集モジュール324、イベントモジュール326、マッピングシステム327、3Dマップ
ストア328、データ管理モジュール330、およびゲームデータベース331を含む。他の実施形態では、ゲームサーバ130は、異なる、または追加の要素を含み、パラレルリアリティゲーム以外のアプリケーションおよびシステムの処理を提供する目的のモジュールを含み得る。さらに、機能は、説明されるのとは異なるように、要素間に分散され得る。
【0031】
ゲームデータベース331は、ゲームサーバ320の一部、またはサーバ320とは別個であってリモートアクセスされるものであり得る(例えば、ゲームデータベース331は、ネットワーク120を介してアクセスされる分散データベースであり得る)。ゲームデータベース331は、ネットワーク120を通じてクライアントデバイス110に供給または提供されるパラレルリアリティゲームで使用されるゲームデータを格納する。ゲームデータベース331に格納されるゲームデータは、(1)パラレルリアリティゲーム内の仮想世界に関連付けられたデータ(例えば、表示デバイス上で仮想世界をレンダリングするために使用される画像データ、仮想世界における位置の地理的座標など)、(2)パラレルリアリティゲームのプレーヤーに関連付けられたデータ(例えば、プレーヤー情報、プレーヤーの経験レベル、プレーヤーの通貨、仮想世界/現実世界における現在のプレーヤーの位置、プレーヤーのエネルギーレベル、プレーヤーの嗜好、チーム情報、派閥情報などを含むがこれらに限定されないプレーヤーのプロファイル)、(3)ゲーム目標に関連付けられたデータ(例えば、現在のゲーム目標、ゲーム目標の状況、過去のゲーム目標、未来のゲーム目標、所望のゲーム目標に関連付けられたデータなど)、(4)仮想世界における仮想要素に関連付けられたデータ(例えば、仮想要素の位置、仮想要素のタイプ、仮想要素に関連付けられたゲーム目標、仮想要素に対応する実際の世界の位置、仮想要素の挙動、仮想要素の関連性など)、(5)現実世界の、オブジェクト、ランドマーク、仮想世界の要素とリンクされた位置、に関連付けられたデータ(例えば、現実世界のオブジェクト/ランドマークの位置、現実世界のオブジェクト/ランドマークの記述、現実世界のオブジェクトにリンクされた仮想要素の関連性など)、(6)ゲームの状態(例えば、現在のプレーヤーの数、ゲーム目標の現在の状態、プレーヤーのリーダーボードなど)、(7)プレーヤーの行動/入力に関連付けられたデータ(例えば、現在のプレーヤーの位置、過去のプレーヤーの位置、プレーヤーの移動、プレーヤーの入力、プレーヤーの問い合わせ、プレーヤーの通信など)、または(8)パラレルリアリティゲームの実装中に使用され、関連し、あるいは取得された任意の他のデータ、を含むことが可能である。ゲームデータベース331に格納されるゲームデータは、システム管理者により、または、ネットワーク120を通じてクライアントデバイス110からなど、システム300のユーザ(例えば、プレーヤー)から受信したデータにより、オフラインまたはリアルタイムのいずれかで追加することが可能である。
【0032】
ゲームサーバ130は、1つまたは複数のクライアントデバイス110からゲームデータについての要求を受信し(例えば、遠隔手続き呼出し(RPCs)を介して)、ネットワーク120を介して、それらの要求に応答するように構成されることが可能である。ゲームサーバ130は、1つまたは複数のデータファイル内のゲームデータを符号化し、そのデータファイルをクライアントデバイス110へ提供することが可能である。さらに、ゲームサーバ130は、ネットワーク120を介して、1つまたは複数のクライアントデバイス110からゲームデータ(例えば、プレーヤーの位置、プレーヤーの行動、プレーヤーの入力など)を受信し、そのゲームデータに基づいてメトリックを計算するように構成されることが可能である。例えば、クライアントデバイス110は、プレーヤーの入力、プレーヤーの位置、および他の更新を、ゲームサーバ130に定期的に送信するように構成されることが可能であり、ゲームサーバ130は、ゲームの変更条件を反映するために、これを使用してゲームデータベース331内のゲームデータを更新する。ゲームサーバ130はまた、クライアントデバイス110へゲームデータを送信し、メトリックを計算し得る。
【0033】
ユニバーサルゲームモジュール321は、プレーヤーのセット(例えば、パラレルリアリティゲームの全てのプレーヤー)のためのパラレルリアリティゲームのインスタンスをホストし、プレーヤーのセットのためのパラレルリアリティゲームの現在の状態の権威あるソースとして機能する。ホストとして、ユニバーサルゲームモジュール321は、プレーヤーに提示するためのゲームコンテンツを生成する(例えば、それぞれのクライアントデバイス110を介して)。ユニバーサルゲームモジュール321は、パラレルリアリティゲームをホストするときに、ゲームデータベース331にアクセスして、ゲームデータを読み出すまたは格納し得る。ユニバーサルゲームモジュール321はまた、クライアントデバイス110からゲームデータを受信し得(例えば、深度情報、プレーヤーの入力、プレーヤーの位置、プレーヤーの動作、プレーヤーの状態、ランドマーク情報など)、受信したゲームデータを、パラレルリアリティゲームのプレーヤーのセット全体のパラレルリアリティゲームに組み込み得る。ユニバーサルゲームモジュール321はまた、ネットワーク120を介してクライアントデバイス110へのゲームデータの配信を管理し得る。いくつかの実施形態では、ユニバーサルゲームモジュール321はまた、クライアントデバイスとゲームサーバ320との間の通信を確かにすること、様々なクライアントデバイス間の接続の確立、またはプレーヤーが自分の位置を偽装して不正行為を行うことを防止するための様々なクライアントデバイス110の位置の検証など、クライアントデバイス110とパラレルリアリティゲームとの相互作用のセキュリティ面を管理する。
【0034】
商用ゲームモジュール323は、ユニバーサルゲームモジュール321とは別個で、またはユニバーサルゲームモジュール321の一部であることが可能である。商用ゲームモジュール323は、パラレルリアリティゲーム内に、現実世界における商業活動とリンクする様々なゲーム特徴を含めることを管理することが可能である。例えば、商用ゲームモジュール323は、ネットワーク120を通じて、スポンサー/広告主、企業、または他のエンティティなどの外部システムから、現実世界における商業活動にリンクされたゲーム特徴を含める要求を受信することが可能である。そして、商用ゲームモジュール323は、リンクされた商業活動が発生したことを確認した上で、パラレルリアリティゲームにこれらのゲーム特徴を含めるように手配することが可能である。例えば、ある企業が、パラレルリアリティゲームのプロバイダに合意された金額を支払うと、その企業を特定する仮想オブジェクトが、その企業(例えば、店舗やレストラン)の現実世界の位置に対応するパラレルリアリティゲームの仮想の位置に現れ得る。
【0035】
データ収集モジュール324は、ユニバーサルゲームモジュール321とは別個で、またはユニバーサルゲームモジュール321の一部であることが可能である。データ収集モジュール324は、パラレルリアリティゲーム内に、現実世界におけるデータ収集活動とリンクされた様々なゲーム特徴を含めることを管理することが可能である。例えば、データ収集モジュール324は、ゲームデータベース331に格納されたゲームデータを変更して、パラレルリアリティゲーム内のデータ収集活動にリンクされたゲーム特徴を含めることが可能である。データ収集モジュール324はまた、データ収集活動に従ってプレーヤーによって収集されたデータを分析し、様々なプラットフォームによるアクセスのためにデータを提供することが可能である。
【0036】
イベントモジュール326は、パラレルリアリティゲームにおけるイベントへのプレーヤーのアクセスを管理する。「イベント」という用語が便宜上使用されているが、この用語は、特定の位置または時間における特定のイベントを指す必要がないことを理解されたい。むしろ、プレーヤーがそのコンテンツにアクセスできるかどうかを決定するために、1つまたは複数のアクセス基準が使用される、アクセス制御されたゲームコンテンツのあらゆる提供を指し得る。このようなコンテンツは、アクセス制御の少ないゲームコンテンツやアクセス制御のないゲームコンテンツを含む、より大規模なパラレルリアリティゲームの一部であり得、単独でアクセス制御されたパラレルリアリティゲームであり得る。
【0037】
マッピングシステム327は、画像のセットに基づいて、地理的領域の3Dマップを生成する。3Dマップは、点群、ポリゴンメッシュ、または地理的領域の3Dジオメトリのあらゆる他の適切な表現であり得る。3Dマップは、オブジェクト(テーブル、椅子、時計、街灯、木など)、材料(コンクリート、水、レンガ、草など)、またはゲーム特性(キャラクタが移動可能、特定のゲーム内アクションに適しているなど)を特定するなど、追加のコンテキスト情報を提供するセマンティックラベルを含み得る。一実施形態では、マッピングシステム327は、3Dマップをあらゆるセマンティック/コンテキスト情報とともに3Dマップストア328に格納する。3Dマップは、位置情報(例えば、3Dマップの中心のGPS座標、3Dマップの範囲を定義するリングフェンスなど)と共に3Dマップストア328に格納し得る。それゆえ、ゲームサーバ320は、3Dマップによってカバーされる地理的領域内またはその近くにいることを示す位置データを提供するクライアントデバイス110に3Dマップを提供することが可能である。
【0038】
データ管理モジュール330は、データ収集モジュール324とは別個で、またはデータ収集モジュール324の一部とすることが可能である。データ管理モジュール330は、
図4に関連して説明されるように、処理のためにデータをアンチチートサーバ140に通信し、データが不正行為を示す場合にアンチチートサーバ140が決定した措置を受信する。特に、データ管理モジュール330は、1つまたは複数のクライアントデバイス110、ゲームデータベース331、またはネットワーク120を介してゲームサーバ130に接続された他のサーバからデータを受信する。データは、クライアントデバイス110を介してパラレルリアリティゲーム内でプレーヤーにより実行された行動(例えば、プレーヤーが行った行動、行動が行われた時間、行動が行われたときのプレーヤーの移動速度など)を記述する活動データであり得る。いくつかの実施形態では、データを自動的に受信する代わりに、データ管理モジュール330は、パラレルリアリティゲームのプレーヤー(またはプレーヤーのクライアントデバイス110)の識別子のリストを読み出し得、リスト内の識別子に関連付けられたデータを(例えば、関連するクライアントデバイス110またはゲームデータベース331から)読み出し得る。いくつかの実施形態では、データ管理モジュール330は、識別子に関連する活動データを格納する圧縮データ記憶システムに、範囲スキャンを介してアクセスすることによって、識別子に関連付けられた活動データを読み出し得る。圧縮データ記憶システムは、ゲームデータベース331の一部であり得、いくつかの実施形態では、BigTableまたは標準的なクラウドストレージであり得る。データ管理モジュール330は、読み出したデータをアンチチートサーバ140に送信してメトリックを決定し、データが不正行為を示す場合に取るべき行動に関してアンチチートサーバ140と通信する。
【0039】
例示的なアンチチートサーバ
図4は、アンチチートサーバ140の一実施形態を示す。アンチチートサーバ140は、データ受信モジュール405、複数のノード410(
図4において、410A、410B・・・410Nとラベリングされた)、およびデータ記憶モジュール415を含む。データ記憶モジュール415は、介入モジュール420、リレーショナルデータベース425、介入データベース430、およびキーバリューストア435を含む。アンチチートサーバ140は、単一のサーバとして説明および図示されているが、複数のサーバを使用して実装され得る。アンチチートサーバ140は、図示されているよりも少ない構成要素、追加の構成要素、または他の構成要素を含み得る。いくつかの実施形態では、ノード410は、アンチチートサーバ140の外部にあり得、アンチチートサーバ140は、
データ受信モジュール
405およびデータ記憶モジュール415を介してノード410と通信し得る。
【0040】
データ受信モジュール405は、ゲームサーバ130(例えば、データ管理モジュール330)からデータを受信し、データを分析して、データをどこに格納するか、または分析のためにデータを送信するかを決定する。クライアントデバイス110のローカル状態を示すデータについて、データ記憶モジュール415は、データをキーバリューストア435に書き込み得る。データ受信モジュール405は、ローカル状態データを、ローカル状態データに関連付けられたプレーヤー(例えば、ユーザ名またはプレーヤー名)またはクライアントデバイス110の識別子とともに格納し得、各プレーヤーおよびクライアントデバイス110に関連付けられたデータの実行記録をキーバリューストアに保持し得る。いくつかの実施形態では、キーバリューストア435は、プレーヤーの状態に関するトランザクションデータを含む。キーバリューストア435はまた、(1)一定期間のプレーヤーまたはクライアントデバイス110の位置履歴(例えば、過去30日間の位置履歴)、(2)プレーヤーまたはクライアントデバイス110に適用された過去および現在の措置、(3)プレーヤーのゲームセッションに関する情報およびそれらのセッションのために生成された信号(例えば、データ)、のうちの1つまたは複数を含み得る。キーバリューストア435に格納されるプレーヤーまたはクライアントデバイス110のデータは、プレーヤーがゲームでアクティブであるときに生成され、アンチチートサーバ140に転送され得る。
【0041】
プレーヤーの行動を示すデータ(例えば、キーバリューストア435に格納されていないデータ)について、データ受信モジュール405は、データを1つまたは複数のノード410にブロードキャストし得る。いくつかの実施形態では、データ受信モジュール405は、ゲームサーバ130から全てのデータを受信する前に、ノード410にデータをブロードキャストする。
【0042】
いくつかの実施形態では、データ受信モジュール405は、combine.globally.withfanoutを使用してデータをブロードキャストする。combine.globally.withfanoutは、分散データ処理のための分割統治アプローチである。一般に、データの一部が他の部分よりも負荷が高い場合に使用され得る。それゆえ、combine.globally.withfanoutは、不均等な負荷分散に対する処理のチューニングを可能にする。具体的には、combine.globally.withfanoutによって、いくつかの中間ワーカー(例えば、ノード、サブノード、シャードなど)を定義できる。これらのワーカーは、部分的な結果を計算する。中間ノードが、割り当てられた作業を完了すると、その結果は、最終ワーカー(例えば、最終ノードなど)に送信され得る。最終ワーカーは、最終的なコンバインステップでこれらの結果を併合することを担当する。Combine.globally.withfanoutは、最終計算の前に行う中間ステップの数を指定するパラメータを含み得る。
【0043】
いくつかの実施形態では、データ受信モジュール405は、外部オペレータからの入力に基づいて、どのノード410が所定のセットにあるかを示す識別子のセットにアクセスし得る。例えば、データ受信モジュール405は、範囲スキャンを介して、圧縮データ記憶システム(例えば、GCP BigTableまたはApache HBase)にアクセスすることによって、パラレルリアリティゲームのプレーヤーの識別子(例えば、ユーザ名もしくはプレーヤー名、またはゲームセッションごとのプレーヤー固有の識別子)のリストを読み出す。圧縮データストレージは、プレーヤーのゲームプレイに関連する追跡可能な情報を格納する。いくつかの実施形態では、プレーヤーにより実行された全てのゲームプレイアクションが記録され、圧縮データストレージに格納される。
【0044】
追加的、または代替的に、ノードのセットが外部オペレータからの入力に基づいていることに対して、データ受信モジュール405は、データのそれぞれのサブセットを分析するための可能性または能力を有するノードのセットを決定し得る。これに応じて、データ受信モジュール405は、データのそれぞれのサブセットを、決定されたセット内のノード410のみにブロードキャストし得る。例えば、100分の10のノード410のみが処理のために利用可能な場合、データ受信モジュール405は、それら10のノード410のみにデータを送信し得る。いくつかの例では、データ受信モジュール405は、24から200のノード410を選択し得る。
【0045】
データ受信モジュール405は、類似の(または同一の)タイプのデータを一緒に集約し得、集約されたデータを単一のノードに送信し得る。これは、類似のタイプのデータが異なるノード410に送信されることを防ぐことに役立つ。これはまた、ノードがメトリックを正確に計算することを保証することにも役立つ。いくつかの実施形態では、ノードに送信される前に、ハッシュ関数が類似のタイプのデータを集約するために使用される。いくつかの実施形態では、ノードの所定のセットは、特定のタイプのデータを受信するように指定される。
【0046】
上述のように、アンチチートサーバ140は、複数のノード410を使用して、データ受信モジュール405により受信されたデータに基づいてメトリックを計算する。アンチチートサーバ140は、任意の数のノード410を含み得る。ノード410は、データの受信、操作、生成、および通信が可能な独立した処理ユニットである。例えば、ノード(例えば、410A)は、CPU、RAM、およびストレージなどの処理リソースの集合体である。いくつかの実施形態では、ノード410は、GOOGLE CLOUD SPANNERのスパナーノードである。いくつかの実施形態では、各ノード(またはノードのセット)は、互いに独立してリレーショナルデータベース425に書き込む(ノードが全ての処理を行い、結果を集約し、次に全ての集約結果を一度にリレーショナルデータベース425に書き込むのではなく)。
【0047】
各ノード410は、受信したデータを使用して、1つまたは複数のメトリックを生成する。例示的なメトリックは、不正行為インジケータまたは不正行為信号、不正行為インジケータまたは信号を生成したイベント、クライアントデバイスブランド、バックグラウンドセッションID、不正行為が検出されたときのタイムスタンプ、セッションタイプ(例えば、フォアグラウンドまたはアドベンチャー同期またはフィットネス関連セッション)、またはクライアントデバイスOSバージョンが含まれる。メトリックは、(データによって記述される)プレーヤーのどの行動がパラレルリアリティゲーム内での不正行為を示すかを示し得る。パラレルリアリティゲームの1つまたは複数のルールに違反する行動(例えば、閾値よりも速い速度で移動する、地理的位置を偽装する、など)は、不正行為を示す。いくつかの実施形態では、ノードは、データのセットにおける不正行為の兆候を検出するように訓練された1つまたは複数の機械学習モデルを使用し得る。各機械学習モデルは、データのセットが、不正行為の兆候であるという尤度(例えば、メトリック)を出力し得る。尤度が閾値を超える場合、ノードは、不正行為の兆候を生成し、データとともにメトリックとして格納し得る
【0048】
いくつかの実施形態では、ノードは、データ受信モジュール405からデータを受信する蓄積層を含む。蓄積層が、閾値量のデータを受信した後、ノードは、メトリックの計算を開始し得る。閾値自体は、受信されるデータのタイプまたは計算されるメトリックに依存し得る。場合によっては、ノードは、閾値量のデータを受信した後も新しいデータを受信し続け得る。このような場合、ノードは、新しく受信したデータを、メトリックを決定するための計算に組み込み得る。それゆえ、ノードは、そのメトリックに関連するデータを全て受信する前にメトリックの計算を開始し得る。他の利点の中でも、これは、データの全バッチが受信されるのを待つのではなく、(例えば、直ちに)作業を開始できるため、ノードの処理時間をより効率的に使用することができる。
【0049】
受信したデータに基づいて各ノードがメトリックを生成すると、ノードは、リレーショナルデータベース425にメトリックを格納する。その名前が示すように、リレーショナルデータベース425は、PostgreSQLデータベースなどのリレーショナルデータベースである。リレーショナルデータベースは、非リレーショナルデータベースでは利用できない多くの機能を提供する。例えば、リレーショナルデータベースは、非リレーショナルデータベースでは利用できないフォールトトレランス能力を提供し得る。しかしながら、リレーショナルデータベースは、書き込み動作のレートが制限され得、これは、一度に大量のデータをリレーショナルデータベースに書き込むことを困難にし得る。それゆえ、ノード410が異なる時間に独立してリレーショナルデータベース425にデータを書き込むことを可能にすることで、大量のデータをリレーショナルデータベース425に書き込むことが可能になり得る。いくつかの実施形態では、ノード410は、プリペアド挿入ステートメントを使用してメトリックを格納し得る。プリペアド挿入ステートメントは、書き込み関数を繰り返し再コンパイルすることなくデータを繰り返し書き込むことを可能にする機能である。例えば、プリペアド挿入ステートメントは、各実行中にデータの値が代入される、事前にコンパイルされたステートメント(例えば、コード)の形態をとる。いくつかの実施形態では、プリペアド挿入ステートメントは、最終ノードが余分な計算を実行する必要がないように、前もって作成され、データで満たされる。いくつかの実施形態では、ノード410は、作成されたプリペアド挿入ステートメントの数に関するいくつかのデータポイントを生成する。このデータはまた、アンチチートサーバ140のスケーラビリティを向上させるために格納され得る。
【0050】
本明細書で説明するように、メトリックの計算のためにノード410を採用することにより、各ノード410がメトリックの生成を完了すると、アンチチートサーバ140が、メトリックを生成してリレーショナルデータベース425に格納することが可能になる。それゆえ、ノードは、他のノードがメトリックの計算を完了することを待つことなく、格納のためにリレーショナルデータベース425にメトリックを送信し得る。これにより、メトリックの計算および格納の効率が向上し得る。例えば、フロー制限のために、リレーショナルデータベース425は、全てのノードからメトリックを一度に受信できない場合がある。各ノードがメトリックの計算を完了したときに(他の全てのノードを待つ代わりに)メトリックの計算を格納することにより、リレーショナルデータベース425のフロー制限が尊重され得る。これは、フローが制限されたAPI呼び出しに応答する場合、または、フローが制限された関数に呼び出しを行う場合に、レイテンシーを大幅に増加させることなくフロー制限が尊重されるようにするために有用である。
【0051】
リレーショナルデータベース425内のメトリックは、タイムスタンプが付され得る。例えば、メトリックは、(a)メトリックのデータが生成されたとき、または(b)プレーヤーがメトリックデータに関連付けられた行動を(パラレルリアリティゲームにおいて)実行したとき、に対応するタイムスタンプを有し得る。このバックデートは、不正行為が発生したかどうかを決定することに役立ち得る。タイムスタンプは、異なるアプリケーションやユーザに合わせてカスタマイズ可能であり得る。
【0052】
介入モジュール420は、不正行為が発生したかどうかを決定し得、ノードで生成されたメトリックに基づいて、1人または複数のプレーヤーに対して講じる措置を決定し得る。措置は、プレーヤーに警告を送ること、プレーヤーをパラレルリアリティゲームから一定期間追放すること、プレーヤーをパラレルリアリティゲームから永久に停止すること、またはデータに不正行為が存在することに基づいて取られる他の措置が含まれ得る。介入モジュール420は、1つまたは複数のノードがリレーショナルデータベース425に新しいメトリックを格納したと決定したときに、リレーショナルデータベース425からメトリックを読み出し得る。介入モジュール420は、メトリックを、1つまたは複数の閾値と比較し得、比較されたメトリックに基づいて、メトリックに関連付けられたプレーヤーに対して取るべき措置を決定し得る。いくつかの実施形態では、介入モジュール420はまた、プレーヤーに対して取られた以前の措置、および/またはプレーヤーについて計算された以前のメトリックに基づいて、措置を決定し得る。例えば、介入モジュール420は、「ストライク」システムを採用し得、プレーヤーの不正行為が検出されるたびに、講じられる措置がエスカレートする(例えば、ファーストストライクでは警告、セカンドストライクでは1日禁止など)。
【0053】
介入モジュール420は、プレーヤーに関連付けて介入データベース430に措置を格納する。介入モジュール420は、ゲームサーバ130がそのような措置を実行することができるように、決定された措置についてゲームサーバ130と通信し得、措置がいつ実行されたかを反映するように介入データベース430を更新し得る。
【0054】
例示的な方法
図5は、一実施形態による、メトリックを生成し、メトリックをリレーショナルデータベースに格納する処理を示す。
図5のステップは、方法
500を実行するアンチチートサーバ(例えば、140)の構成要素の観点から図示されている。しかしながら、ステップの一部または全部は、他のエンティティまたは構成要素により実行され得る。さらに、いくつかの実施形態では、ステップを並行して実行してもよく、ステップを異なる順序で実行してもよく、または異なるステップを実行してもよい。方法500の1つまたは複数のステップは、非一時的コンピュータ可読記憶媒体に格納され得る。
【0055】
アンチチートサーバは、1つまたは複数のクライアントデバイス110からデータを受信する(510)(例えば、データ受信モジュール405は、ゲームサーバ(例えば、130)を介してデータを受信する)。いくつかの実施形態では、アンチチートサーバは、追加的または代替的に、他のサーバまたはコンピューティングデバイスからデータを受信する。アンチチートサーバの構成要素(例えば、データ受信モジュール405)は、アンチチートサーバの1つまたは複数のノード(例えば、410)にデータをブロードキャストする(520)。ノードは、所定のノードのセットに含まれ得る。所定のセット内のノード410は、データを処理するために利用可能であること、および/または外部オペレータによって示されたノード410の数に基づいて、アンチチートサーバ140によって予め選択され得る。いくつかの実施形態では、ノードの数は、外部オペレータによって選択される。各ノードは、データの一部を計算し、1つまたは複数のメトリックを生成する(530)。メトリックは、データの一部で不正行為が検出されたかどうかを示し得る。各ノードは、個別のメトリックの生成が完了すると、プリペアド挿入ステートメントを使用して、1つまたは複数のメトリックをリレーショナルデータベース(例えば、425)に追加する(540)。
【0056】
図5の処理は、アンチチートサーバがクライアントデバイス(例えば、110)からのデータを分析して、データが不正行為を示しているかを決定する、パラレルリアリティゲームに組み込まれる共有AR環境の例に関連してさらに説明され得る。パラレルリアリティゲームにおける不正行為の例としては、プレーヤーがゲーム中に歩かずに車で移動する場合がある。ゲームサーバ(例えば、130)は、パラレルリアリティゲームの共有AR環境をアクティブにプレーヤーに提供する複数のクライアントデバイスからデータを受信し得る。ゲームサーバは、データをアンチチートサーバに送信し得、アンチチートサーバは、ノードを使用して1つまたは複数のメトリックを生成する。アンチチートサーバのデータ受信モジュール(例えば、405)は、データ受信モジュールが、ゲームサーバから全てのデータを受信する前に、データをノードにブロードキャストし得る。前述のように、ノードは、1つまたは複数のメトリックをリレーショナルデータベースに追加する。各ノードは、他の全てのノードがメトリックを生成し終えるのを待つのではなく、メトリックが生成されると、それぞれの生成されたメトリックを追加する。1つまたは複数のメトリックが不正行為を示すものである場合、アンチチートサーバは、データが不正行為を示すものであったプレーヤーに対してゲームサーバがとるべき措置、そのプレーヤーをパラレルリアリティゲームから一時停止または追放するなどの措置を決定し得る。
【0057】
例示的なコンピューティングシステム
図6は、クライアントデバイス110またはゲームサーバ130としての使用に適した例示的なコンピュータ600を示すブロック図である。例示的なコンピュータ600は、チップセット604に接続された少なくとも1つのプロセッサ602を含む。チップセット604は、メモリコントローラハブ620および入力/出力(IO)コントローラハブ622を含む。メモリ606およびグラフィックアダプタ612は、メモリコントローラハブ620に接続され、ディスプレイ618は、グラフィックアダプタ612に接続される。ストレージデバイス608、キーボード610、ポインティングデバイス614、およびネットワークアダプタ616は、IOコントローラハブ622に接続される。コンピュータ600の他の実施形態では、異なるアーキテクチャを有する。
【0058】
図6に示される実施形態では、ストレージデバイス608は、ハードドライブ、コンパクトディスク、リードオンリーメモリ(CD-ROM)、DVD、またはソリッドステートメモリデバイスなどの非一時的なコンピュータ可読記憶媒体である。メモリ606は、プロセッサ602により使用される命令およびデータを保持する。ポインティングデバイス614は、マウス、トラックボール、タッチスクリーン、または他のタイプのポインティングデバイスであり、キーボード610(オンスクリーンキーボードであり得る)と組み合わせて使用され、コンピュータシステム600にデータを入力し得る。グラフィックアダプタ612は、画像および他の情報をディスプレイ618に表示する。ネットワークアダプタ616は、ネットワーク120などの、1つまたは複数のコンピュータネットワークにコンピュータシステム600を接続する。
【0059】
図1-4のエンティティによって使用されるコンピュータのタイプは、実施形態およびエンティティにより必要とされる処理能力に応じて変化し得る。例えば、ゲームサーバ320は、説明した機能を提供するために協働する複数のブレードサーバを含み得る。その上さらに、コンピュータは、キーボード610、グラフィックアダプタ612、およびディスプレイ618など、上述した構成要素のいくつかを欠くことが可能である。
【0060】
例示的な位置ベースのパラレルリアリティゲーム
図7は、現実世界と並行する仮想世界710の概念図である。仮想世界710は、パラレルリアリティゲームのプレーヤーのためのゲーム盤として機能することが可能である。示されるように、仮想世界710は、現実世界700の地理と並行する地理を含む。特に、現実世界700の地理的領域または空間を定義する座標の範囲は、仮想世界710の仮想空間を定義する対応する座標の範囲にマッピングされる。現実世界700の座標の範囲は、町、近隣、都市、キャンパス、ロケール、国、大陸、地球全体、または他の地理的領域と関連付けられることが可能である。地理的座標の範囲内の各地理的座標は、仮想世界710の仮想空間内の対応する座標にマッピングされる。
【0061】
仮想世界710におけるプレーヤーの位置は、現実世界700におけるプレーヤーの位置に対応する。例えば、現実世界700における位置712に位置するプレーヤーAは、仮想世界710における対応する位置722を有する。同様に、現実世界700における位置714に位置するプレーヤーBは、仮想世界710における対応する位置724を有する。プレーヤーが、現実世界700における、地理的座標の範囲内で動き回るとき、プレーヤーはまた、仮想世界710における仮想空間を定義する、座標の範囲内で動き回る。特に、プレーヤーが、現実世界における、地理的座標の範囲をナビゲートするとき、プレーヤーによって搬送されるモバイルコンピューティングデバイスに関連付けられた測位システム(例えば、GPSシステム、位置特定システム、またはその両方)は、プレーヤーの位置を追跡するために使用されることが可能である。現実世界700におけるプレーヤーの位置に関連付けられたデータは、仮想世界710における仮想空間を定義する対応する座標の範囲内でのプレーヤーの位置を更新するために使用される。このようにして、プレーヤーは、現実世界700における特定の個別の位置おいて、位置情報をチェックインするかまたは定期的に更新する必要なしに、現実世界700における対応する地理的座標の範囲の間を単に進むことによって、仮想世界710における仮想空間を定義する座標の範囲内での連続トラックに沿ってナビゲートすることが可能である。
【0062】
位置ベースのゲームは、仮想世界710の様々な仮想位置に散らばった様々な仮想要素または仮想オブジェクトに進む、またはそれと相互作用することをプレーヤーに要求するゲーム目標を含むことができる。プレーヤーは、現実世界700における仮想要素またはオブジェクトの対応する位置に進むことにより、これらの仮想位置に進むことが可能である。例えば、測位システムは、プレーヤーが現実世界700をナビゲートするときに、プレーヤーがパラレル仮想世界710もナビゲートするように、プレーヤーの位置を追跡することが可能である。プレーヤーは、特定の位置で様々な仮想要素やオブジェクトと相互作用して、1つまたは複数のゲーム目標を達成または実行することが可能である。
【0063】
ゲーム目標は、仮想世界710の様々な仮想位置に位置する仮想要素730と相互作用するプレーヤーを有し得る。これらの仮想要素730は、現実世界700におけるランドマーク、地理的位置、またはオブジェクト740にリンクされることが可能である。現実世界のランドマークまたはオブジェクト740は、芸術作品、モニュメント、建築物、企業、図書館、博物館、または他の適切な現実世界のランドマークもしくはオブジェクトであることが可能である。相互作用には、仮想アイテムの獲得、所有権の主張、使用、仮想通貨の消費などが含まれる。これらの仮想要素730を獲得するために、プレーヤーは、現実世界で仮想要素730にリンクされたランドマークまたは地理的位置740に進み、仮想世界710における仮想要素730と任意の必要な(ゲームルールにより定義される)相互作用を実行する。例えば、プレーヤーA712は、その特定のランドマーク740にリンクされた仮想要素730と、相互作用するかまたは獲得するために、現実世界700におけるランドマーク740に進まなければならないことがある。仮想要素730との相互作用は、仮想要素730に関連付けられたランドマークまたはオブジェクト740に関する写真を撮ること、または、それに関する他の情報を検証、取得もしくは獲得することなど、現実世界での行動を必要とすることが可能である。
【0064】
ゲーム目標は、位置ベースのゲーム内でプレーヤーによって収集された1つまたは複数の仮想アイテムをプレーヤーが使用することを必要とし得る。例えば、プレーヤーは、ゲーム目標を完了することに有用であり得る仮想アイテム732(例えば、武器、クリーチャー、パワーアップ、または他のアイテム)を探索しながら仮想世界710を進み得る。これらの仮想アイテム732は、現実世界700で異なる位置に進むことによって、または、仮想世界710もしくは現実世界700のいずれかで様々な行動を完了すること(仮想要素730と相互作用すること、プレーヤーでないキャラクタもしくは他のプレーヤーと戦うこと、または要求を完了すること、など)によって発見または収集されることが可能である。
図7に示された例では、プレーヤーは、1つまたは複数の仮想要素730を獲得するために仮想アイテム732を使用する。特に、プレーヤーは、仮想要素730に近接したまたはそれの内の仮想世界710の位置に仮想アイテム732を展開することが可能である。このようにして、1つまたは複数の仮想アイテム732を展開することにより、プレーヤーに対してまたはプレーヤーのチーム/派閥に対して、仮想要素730の獲得をもたらすことが可能である。
【0065】
特定の一実装では、プレーヤーは、パラレルリアリティゲームの一部として仮想エネルギーを収集しなければならないことがある。仮想エネルギー750は、仮想世界710の異なる位置に散らばり得る。プレーヤーは、仮想世界710の仮想エネルギーの位置に対応する現実世界700の位置に進む(またはその閾値距離内に)ことにより仮想エネルギー750を収集することが可能である。仮想エネルギー750は、ゲーム中で仮想アイテムにパワー供給するため、または様々なゲーム目標を実行するために使用されることが可能である。全ての仮想エネルギー750を失ったプレーヤーは、ゲームから切断されるか、一定時間または追加の仮想エネルギー750を収集するまでプレイすることを妨げられ得る。
【0066】
本開示の態様によれば、パラレルリアリティゲームは、ゲーム中のあらゆる参加者が同じ仮想世界を共有する大規模なマルチプレーヤの位置ベースのゲームであることが可能である。プレーヤーは、別個のチームまたは派閥に分割され、仮想要素の所有権を獲得するまたは主張するなどのために、1つまたは複数のゲーム目標を達成するために協力することが可能である。このようにして、パラレルリアリティゲームは、本質的に、ゲーム内のプレーヤー間での協働を奨励するソーシャルゲームであり得る。対立するチームのプレーヤーは、パラレルリアリティゲーム中に互いに足を引っ張り合うこと(または、時々、相互目標を達成するために共同すること)が可能である。プレーヤーは、仮想アイテムを使用して、対立するチームのプレーヤーを攻撃するか、またはその進行を妨害し得る。場合によっては、プレーヤーは、パラレルリアリティゲームでの協働型または対話型イベントのために現実世界の位置に集合することを奨励される。これらの場合、ゲームサーバは、プレーヤーが実際に物理的に存在し、位置偽装していないことを保証しようとする。
【0067】
図8は、プレーヤーと仮想世界710との間のインターフェースの一部として提示されることが可能な(例えば、プレーヤーのスマートフォン上に)ゲームインターフェース800の一実施形態を示す。ゲームインターフェース800は、仮想世界710と、プレーヤーの位置722および仮想要素730の位置、仮想アイテム732、ならびに仮想世界710の仮想エネルギー750の位置などの、ゲームの様々な他の態様とを表示するために使用され得る表示ウィンドウ810を含む。ユーザインターフェース800はまた、ゲームデータ情報、ゲーム通信、プレーヤー情報、クライアント位置検証命令、およびゲームに関連付けられた他の情報などの、他の情報を表示することが可能である。例えば、ユーザインターフェースは、プレーヤーの名前、経験レベルおよび他の情報などのプレーヤー情報815を表示することが可能である。ユーザインターフェース800は、ゲームに関連付けられた様々なゲーム設定および他の情報にアクセスするためのメニュー820を含むことが可能である。ユーザインターフェース800はまた、ゲームシステムとプレーヤーとの間の、およびパラレルリアリティゲームの1人または複数人のプレーヤーとの間の通信を可能にする通信インターフェース830を含むことが可能である。
【0068】
本開示の態様によれば、プレーヤーは、単に現実世界においてクライアントデバイス710を持ち運ぶことによってパラレルリアリティゲームと相互作用することが可能である。例えば、プレーヤーは、単にスマートフォン上のパラレルリアリティゲームに関連付けられたアプリケーションにアクセスし、スマートフォンとともに現実世界を動き回ることによってゲームをプレイすることが可能である。この点について、プレーヤーは、位置ベースのゲームをプレイするために、表示画面上で仮想世界の視覚的表現を連続的に閲覧する必要がない。したがって、ユーザインターフェース800は、ユーザがゲームと相互作用することを可能にする非視覚的要素を含むことが可能である。例えば、ゲームインターフェースは、プレーヤーが、ゲームの仮想要素またはオブジェクトに接近しているときに、または重要なイベントがパラレルリアリティゲーム内で起こるときに、プレーヤーに可聴通知を提供することが可能である。いくつかの実施形態では、プレーヤーは、音声制御840を用いてこれらの可聴通知を制御することが可能である。仮想要素またはイベントのタイプに応じて、ユーザに異なるタイプの可聴通知が提供され得る。可聴通知は、プレーヤーの仮想要素またはオブジェクトに対する近接度に応じて周波数またはボリュームを増加または減少することが可能である。振動通知または他の適切な通知もしくは信号などの、他の非視覚的な通知および信号がユーザに提供され得る。
【0069】
パラレルリアリティゲームは、パラレルリアリティゲーム内でのゲームプレイを向上させ、奨励するための様々な特徴を有することが可能である。例えば、プレーヤーは、ゲーム全体を通じて使用可能な(例えば、ゲーム内アイテムを購入するため、他のアイテムと交換するため、アイテムをクラフトするためなど)仮想通貨または別の仮想報酬(例えば、仮想トークン、仮想ポイント、仮想材料リソースなど)を蓄積することが可能である。プレーヤーは、1つまたは複数のゲーム目標を完了し、ゲーム内で経験を積むことで、様々なレベルに進むことが可能である。プレーヤーはまた、ゲーム内のゲーム目標を完了するために使用されることが可能な強化された「力」または仮想アイテムを取得することが可能であり得る。
【0070】
当業者であれば、提供された開示を使用することにより、多数のゲームインターフェース構成および基礎となる機能が可能であることを理解するであろう。本開示は、それに反することが明示されていない限り、いずれか1つの特定の構成に限定されることを意図するものではない。
【0071】
その他の考慮事項
上記の説明のいくつかの部分は、アルゴリズム的処理または動作に関して実施形態を説明する。これらのアルゴリズム的記述および表現は、コンピューティング分野の当業者によって、その作業の内容を、他の当業者に効果的に伝えるために一般的に使用される。これらの動作は、機能的、計算的、または論理的に説明されるが、プロセッサまたは等価な電気回路、マイクロコードなどによる実行のための命令を含むコンピュータプログラムによって実装されることが理解される。さらに、一般性を失うことなく、機能的動作のこれらの構成をモジュールと呼ぶことが、時には便利であることも分かっている。
【0072】
「1つの実施形態」または「一実施形態」への任意の言及は、その実施形態に関連して記載された特定の要素、特徴、構造、または特性が少なくとも1つの実施形態に含まれることを意味する。本明細書の様々な場所における「1つの実施形態では」という語句の出現は、必ずしも全てが同じ実施形態を指すわけではない。同様に、要素または構成要素に先行する「a」または「an」の使用は、単に便宜上行われる。この説明は、別の意味であることが明白でない限り、要素または構成要素の1つまたは複数が存在することを意味すると理解されるべきである。
【0073】
値が「近似的」または「実質的」(またはそれらの派生物)として記載される場合、そのような値は、別の意味が文脈から明らかでない限り、正確な+/-10%として解釈されるべきである。例えば、「約10」は「9から11の範囲内」を意味すると理解されるべきである。
【0074】
「備える(comprises)」、「備えている(comprising)」、「含む(includes)」、「含んでいる(including)」、「有する(has)」、「有している(having)」またはそれらの任意の他の変形は、非排他的な内容をカバーすることを意図する。例えば、要素のリストを備える処理、方法、条項、または装置は、必ずしもそれらの要素のみに限定されるのではなく、そのような処理、方法、条項、または装置に明示的に記載されていない、または内在する他の要素を含んでもよい。さらに、そうではないと明示的に述べられていない限り、「または」は、包括的な「または」に言及し、排他的な「または」に言及しない。例えば、状態AまたはBは、以下のいずれかを充足する:Aは真であり(または現在)Bは偽(または現在でない)である、Aは偽であり(または現在でない)Bは真(または現在)である、およびAとBの両方が真(または現在)である。
【0075】
本開示を読めば、当業者であれば、記載された機能を提供するためのシステムおよび処理のための、さらなる代替的な構造設計および機能設計を理解するであろう。したがって、特定の実施形態および用途が図示され、記載されてきたが、記載された主題は、開示された正確な構造および構成要素に限定されないことを理解されたい。保護範囲は、以下の特許請求の範囲によってのみ限定されるべきである。
【国際調査報告】