(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-02-22
(54)【発明の名称】予測可能なクエリ応答時間を有するジオロケーションデータのシャードストレージ
(51)【国際特許分類】
A63F 13/35 20140101AFI20230215BHJP
G06Q 50/10 20120101ALI20230215BHJP
A63F 13/65 20140101ALI20230215BHJP
G06F 16/2458 20190101ALI20230215BHJP
【FI】
A63F13/35
G06Q50/10
A63F13/65
G06F16/2458
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2022538067
(86)(22)【出願日】2020-12-18
(85)【翻訳文提出日】2022-08-22
(86)【国際出願番号】 IB2020062239
(87)【国際公開番号】W WO2021124287
(87)【国際公開日】2021-06-24
(32)【優先日】2019-12-20
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】519087723
【氏名又は名称】ナイアンティック, インコーポレイテッド
【氏名又は名称原語表記】NIANTIC,INC.
【住所又は居所原語表記】One Ferry Building,Suite 200 San Francisco,CA 94111 United States of America
(74)【代理人】
【識別番号】110001243
【氏名又は名称】弁理士法人谷・阿部特許事務所
(72)【発明者】
【氏名】ダーリニ クリシュナ
(72)【発明者】
【氏名】ピーター ジェームズ ターナー
(72)【発明者】
【氏名】ガンディヴァン ラグラマン
(72)【発明者】
【氏名】ベンジャミン ピーク
【テーマコード(参考)】
5B175
5L049
【Fターム(参考)】
5B175DA03
5B175KA04
5L049CC18
(57)【要約】
システムは、任意の数のアイテムに、シャードデータベースにわたって、予測可能なクエリ応答時間を提供する地理的なリージョンにおいてインデックスをつけられることができるようにする。地理的なリージョンにインデックスをつけられたアイテムは、単一のシャードに格納され、追加のアイテムは、望ましくないクエリ応答時間を示すオーバーフロー条件が満たされない限り、そのシャードに追加される。オーバーフロー条件が満たされるならば、システムは、予測可能なクエリ応答時間を維持するために、地理的なリージョンにインデックスをつけられたアイテムのストレージを1つまたは複数の追加のシャードに拡張する。システムは、1つまたは複数の関連シャードに問い合わせるのに用いられることが可能である、地理的なリージョンに対応するアイテムを格納するのに用いられているシャードの総数を表すシャードカウントを維持することがある。システムは、シャードデータベースのデータベースノードにわたって、シャードを均等に分散させるために、決定論的なハッシングを適用することがある。
【特許請求の範囲】
【請求項1】
ジオロケーションデータを検索するための方法であって、
ジオロケーションを示す要求を受信することと、
前記ジオロケーションに基づいて地理的なリージョンを識別することと、
データベースの複数のデータベースシャードのうちのデータベースシャードを識別することであって、前記複数のデータベースシャードは、前記地理的なリージョンに対応する、ことと、
前記地理的なリージョンに対応するジオロケーションデータに対して、前記識別されたデータベースシャードに問い合わせることであって、前記データベースシャードの前記クエリは、予測可能な応答時間を有する、ことと、
前記問い合わされたジオロケーションデータに基づいてクエリ結果を処理することと、
前記要求に応答して前記クエリ結果を戻すことと
を備えることを特徴とする方法。
【請求項2】
前記問い合わせることは、
前記地理的なリージョンに対応するジオロケーションデータに対して、前記複数のデータベースシャードを並列に問い合わせることであって、前記複数のデータベースシャードの前記並列クエリは、前記予測可能な応答時間を有する、こと
をさらに含むことを特徴とする請求項1に記載の方法。
【請求項3】
オーバーフロー条件に従って、前記複数のデータベースシャードのうちのデータベースシャード内に格納されたジオロケーションデータを評価することであって、前記データベースシャードのクエリに対して応答時間を示す前記オーバーフロー条件は、望ましくない、ことと、
前記評価することに基づいて、前記データベースシャード内に格納された前記ジオロケーションデータが前記オーバーフロー条件を満たすことを決定することと、
前記オーバーフロー条件が満たされると決定することに応答して、前記地理的なリージョンに対応する前記複数のデータベースシャードに新しいデータベースシャードを追加することと、
格納に対して、前記地理的なリージョンに関連付けられた追加のジオロケーションデータを受信することに応答して、前記新しいデータベースシャードに前記追加のジオロケーションデータを格納することと
をさらに備えることを特徴とする請求項1に記載の方法。
【請求項4】
前記オーバーフロー条件は、前記データベースシャード内に格納されるジオロケーションデータのしきい値メモリーサイズ、前記データベースシャード内に格納されるデータベースレコードのしきい値数、または前記データベースシャードのクエリに対するしきい値クエリ応答時間のうちの1つまたは複数を含むことを特徴とする請求項3に記載の方法。
【請求項5】
前記ジオロケーションデータが前記オーバーフロー条件を満たすことを決定することに応答して、前記地理的なリージョンに対応するデータベースシャードの数が増加したことを示す、前記データベースシャードに関連付けられたフラグを設定すること
をさらに備えることを特徴とする請求項3に記載の方法。
【請求項6】
前記要求は、前記地理的なリージョンのサイズを示すセルレベルを含み、前記地理的なリージョンを識別することは、
前記地理的なリージョンに対応する地理的なセルに対して、前記ジオロケーションおよびセルレベルを用いて地理的なセルのインデックスを問い合わせること
を含むことを特徴とする請求項1に記載の方法。
【請求項7】
前記地理的なセルは、セル識別子とデータベースシャードの数とに関連付けられ、前記識別されたデータベースシャードに問い合わせることは、
前記地理的なセルに対する前記セル識別子と、前記地理的なセルに関連付けられたデータベースシャードの前記数とに基づいて、前記地理的なセルの前記データベースシャードに対して一意的なキーを決定することと、
前記一意的なキーに対応する前記データベースシャードを格納するデータベースノードを決定することと、
前記一意的なキーに対応する前記データベースシャードに含まれるジオロケーションデータに対して、前記データベースノードに問い合わせることと
を含むことを特徴とする請求項6に記載の方法。
【請求項8】
前記一意的なキーに対応する前記データベースシャードを格納する前記データベースノードを決定することとは、
前記一意的なキー、および前記データベースのスロットの最大数をハッシュ関数に適用することによって、スロット番号を生成することと、
前記スロット番号に関連付けられたデータベーススロットが前記データベースノードに格納されることを示すデータベースマッピングと、前記スロット番号を比較することと
を含むことを特徴とする請求項7に記載の方法。
【請求項9】
前記要求は、クライアントデバイスから受信され、前記ジオロケーションは、前記クライアントデバイスの地理的な位置に対応することを特徴とする請求項1に記載の方法。
【請求項10】
前記ジオロケーションデータは、前記地理的なリージョン内のロケーションに関連付けられた1つまたは複数の仮想要素を含むことを特徴とする請求項1に記載の方法。
【請求項11】
前記1つまたは複数の仮想要素は、前記クライアントデバイスにおけるパラレルリアリティゲームアプリケーションの仮想世界と関連付けられることを特徴とする請求項10に記載の方法。
【請求項12】
コンピューターのプロセッサーによって実行されると、前記プロセッサーに、
ジオロケーションを示す要求を受信することと、
前記ジオロケーションに基づいて地理的なリージョンを識別することと、
データベースの複数のデータベースシャードのうちのデータベースシャードを識別することであって、前記複数のデータベースシャードは、前記地理的なリージョンに対応する、ことと、
前記地理的なリージョンに対応するジオロケーションデータに対して、前記識別されたデータベースシャードに問い合わせることであって、前記データベースシャードの前記クエリは、予測可能な応答時間を有する、ことと、
前記問い合わされたジオロケーションデータに基づいてクエリ結果を処理することと、
前記要求に応答して前記クエリ結果を戻すことと
を含む動作を行わせる命令を含むことを特徴とする非一時的なコンピューター読取り可能記録媒体。
【請求項13】
前記問い合わせることは、
前記地理的なリージョンに対応するジオロケーションデータに対して、前記複数のデータベースシャードを並列に問い合わせることであって、前記複数のデータベースシャードの前記並列クエリは、前記予測可能な応答時間を有する、こと
をさらに含むことを特徴とする請求項12に記載のコンピューター読取り可能記録媒体。
【請求項14】
前記命令は、前記プロセスに、
オーバーフロー条件に従って、前記複数のデータベースシャードのうちのデータベースシャード内に格納されたジオロケーションデータを評価することであって、前記データベースシャードのクエリに対して応答時間を示す前記オーバーフロー条件は、望ましくない、ことと、
前記評価することに基づいて、前記データベースシャード内に格納された前記ジオロケーションデータが前記オーバーフロー条件を満たすことを決定することと、
前記オーバーフロー条件が満たされると決定することに応答して、前記地理的なリージョンに対応する前記複数のデータベースシャードに新しいデータベースシャードを追加することと、
格納に対して、前記地理的なリージョンに関連付けられた追加のジオロケーションデータを受信することに応答して、前記新しいデータベースシャードに前記追加のジオロケーションデータを格納することと
を含む動作をさらに行わせることを特徴とする請求項12に記載のコンピューター読取り可能記録媒体。
【請求項15】
前記オーバーフロー条件は、前記データベースシャード内に格納されるジオロケーションデータのしきい値メモリーサイズ、前記データベースシャード内に格納されるデータベースレコードのしきい値数、または前記データベースシャードのクエリに対するしきい値クエリ応答時間のうちの1つまたは複数を含むことを特徴とする請求項14に記載のコンピューター読取り可能記録媒体。
【請求項16】
前記命令は、前記プロセスに、
前記ジオロケーションデータが前記オーバーフロー条件を満たすことを決定することに応答して、前記地理的なリージョンに対応するデータベースシャードの数が増加したことを示す、前記データベースシャードに関連付けられたフラグを設定すること
を含む動作をさらに行わせることを特徴とする請求項14に記載のコンピューター読取り可能記録媒体。
【請求項17】
前記要求は、前記地理的なリージョンのサイズを示すセルレベルを含み、前記地理的なリージョンを識別することは、
前記地理的なリージョンに対応する地理的なセルに対して、前記ジオロケーションおよびセルレベルを用いて地理的なセルのインデックスを問い合わせること
を含むことを特徴とする請求項12に記載のコンピューター読取り可能記録媒体。
【請求項18】
前記地理的なセルは、セル識別子とデータベースシャードの数とに関連付けられ、前記識別されたデータベースシャードに問い合わせることは、
前記地理的なセルに対する前記セル識別子と、前記地理的なセルに関連付けられたデータベースシャードの前記数とに基づいて、前記地理的なセルの前記データベースシャードに対して一意的なキーを決定することと、
前記一意的なキーに対応する前記データベースシャードを格納するデータベースノードを決定することと、
前記一意的なキーに対応する前記データベースシャードに含まれるジオロケーションデータに対して、前記データベースノードに問い合わせることと
を含むことを特徴とする請求項17に記載のコンピューター読取り可能記録媒体。
【請求項19】
前記一意的なキーに対応する前記データベースシャードを格納する前記データベースノードを決定することとは、
前記一意的なキー、および前記データベースのスロットの最大数をハッシュ関数に適用することによって、スロット番号を生成することと、
前記スロット番号に関連付けられたデータベーススロットが前記データベースノードに格納されることを示すデータベースマッピングと、前記スロット番号を比較することと
を含むことを特徴とする請求項18に記載のコンピューター読取り可能記録媒体。
【請求項20】
前記要求は、クライアントデバイスから受信され、前記ジオロケーションは、前記クライアントデバイスの地理的な位置に対応することを特徴とする請求項12に記載のコンピューター読取り可能記録媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、一般に、データストレージに関し、特に、予測可能なクエリ応答時間を有する任意の数のジオロケーションアイテム(geolocated item)のシャードストレージに関する。
【背景技術】
【0002】
現実世界の少なくとも一部とパラレルである共有仮想世界を提供するパラレルリアリティゲームは、プレイヤーのコミュニティを魅了することが可能であるいろいろなインタラクションをホストすることがある。現実世界の少なくとも一部とパラレルである地形を有する仮想世界を提供することは、プレイヤーに、現実世界を進むことによって仮想世界を進むことを可能にする。仮想環境における仮想要素を、現実世界における物体、ロケーション、および活動とリンクさせることは、プレイヤーがふつうは無視するだろう現実世界における特徴に移動するように、および気づくようにプレイヤーに勧めることが可能である。現実世界において対をなす現実世界における物体またはロケーションと同一の仮想世界のロケーションにおいて仮想要素を提供することは、仮想要素が現実世界における隠れた一部であるという印象を増大させるだろう。
【0003】
パラレルリアリティゲームをプレイするとき、プレイヤーのクライアントデバイスは、通常、プレイヤーの近くの仮想要素に対応するデータを受信する。仮想要素の密度が大きくなり、利用可能な情報の豊かさが増大すると、ゲームデータベースにおけるデータ量は増大する。従来のデータベースストレージを用いると、今述べたことは、クエリ応答時間における増加に帰着する。しかしながら、パラレルリアリティゲームが、プレイヤーと仮想世界との間のリアルタイムインタラクションに向けられることがあると、許容し得る応答時間に上限がある。それゆえ、地理的なリージョンに対して格納されるデータが増大すると、予測可能なクエリ応答時間を提供する効率的なストレージアプローチに対する要求がある。
【発明の概要】
【0004】
上記および他の問題は、任意の数のアイテムに、シャードデータベース(sharded database)にわたって、予測可能なクエリ応答時間を提供する地理的なリージョンにおいてインデックスをつけられることができるようにする(例えば、地理的なインデックスをつけるフレームワーク、たとえばS2ライブラリなどを用いて)ためのシステムおよび方法によって取り組まれることがある。種々の態様において、地理的なリージョンにインデックスをつけられたアイテムは、単一のシャードに格納され、追加のアイテムは、望ましくないクエリ応答時間を示すオーバーフロー条件が満たされない限り(例えば、クエリ応答時間が、望ましいしきい値未満のままである)、そのシャードに追加される。オーバーフロー条件が満たされるならば、システムは、予測可能なクエリ応答時間を維持するために、地理的なリージョンにインデックスをつけられたアイテムのストレージを1つまたは複数のシャードに拡張する。システムは、1つまたは複数の関連シャードに(例えば、並列に)問い合わせるのに用いられることが可能である、地理的なリージョンに対応するアイテムを格納するのに用いられているシャードの総数を表すシャードカウントを維持することがある。システムは、たとえば仮想または物理データベースサーバーなど、シャードデータベースのデータベースノードにわたって、シャードを均等に分散させるために、決定論的なハッシングを適用することがある。データベースのクライアントは、地理的なリージョンに対するアイテムが格納されるあらゆるデータベースノードのリストを格納することよりもむしろ、地理的なリージョンに対応する各シャードがシャードカウントに基づいて格納されるデータベースノードを決定することがある。今述べたことは、例えば、単一のシャードまたは複数のシャードを並行して問い合わせるとき、予測可能な応答時間を提供している間、広い地形上領域に対して多くのアイテムの格納を可能にする。
【0005】
一態様では、システムは、ジオロケーションを示す要求を受信する。ジオロケーションに基づいて、システムは、地理的なリージョンを識別する。地理的なリージョンに基づいて、システムは、データベースの複数のデータベースシャード(database shard)のうちのデータベースシャードを識別し、複数のデータベースシャードが、地理的なリージョンに対応する。システムは、地理的なリージョンに対応するジオロケーションデータ(geolocated data)に対して、識別されたデータベースシャードに問い合わせ、データベースシャードのクエリが、予測可能な応答時間を有する。問い合わされたジオロケーションデータに基づいて、システムは、クエリ結果を処理する。システムは、要求に応答して、クエリ結果を戻す。
【図面の簡単な説明】
【0006】
【
図1】一態様に係る任意の数のジオロケーションアイテムに対するゲームデータが予測可能なクエリ応答時間により格納されることがあるネットワーク化されたコンピューティング環境のブロック図である。
【
図2】一態様に係る現実世界とパラレルである地形を有する仮想世界の表現を示す図である。
【
図3】一態様に係るパラレルリアリティゲームの例示的なゲームインターフェースを示す図である。
【
図4】一態様に係る
図1に示されるゲームデータベースのブロック図である。
【
図5】一態様に係る予測可能なクエリ時間を有する任意の数のジオロケーションアイテムにゲームデータを提供する方法のフローチャートである。
【
図6】一態様に係る
図1のネットワーク化されたコンピューティング環境における使用に適した例示的なコンピューターを例示するブロック図である。
【発明を実施するための形態】
【0007】
ゲームサーバーは、実世界の地形の少なくとも一部にパラレルである地形を有する仮想世界を含むプレイヤーゲーミング領域を有するパラレルリアリティゲームをホストすることが可能である。プレイヤーは、現実世界において地理座標の範囲を進むことによって、仮想世界において仮想空間を定義する座標の範囲を進むことが可能である。特に、プレイヤーの位置は、例として、モバイルコンピューティングデバイスであり得る、プレイヤーのクライアントデバイスに関連付けられた測位システム(例えば、GPSシステム)を用いて、監視されるまたはトラッキングされることが可能である。プレイヤーの位置情報は、ネットワークを介してパラレルリアリティゲームをホストするゲームサーバーに提供されることが可能であり、ゲームによって用いられて、仮想世界におけるプレイヤーのロケーションを更新することが可能である。結果として、プレイヤーが、クライアントデバイスを有して、現実世界における座標の範囲においてあちこちと連続して移動する時に、ゲームサーバーは、プレイヤーがパラレルな仮想世界の座標の範囲においてあちこちと連続して移動するように、更新することがある。
【0008】
仮想世界は、実世界のポイントオブインタレストとリンクされる1つまたは複数の仮想要素を含むことが可能である。例として、仮想世界は、たとえば、現実世界における、ランドマーク、博物館、美術品、図書館、または関心のある他の領域など、ポイントオブインタレストに関連付けられた種々の仮想要素を含むことが可能である。実世界のポイントオブインタレストとリンクされる仮想要素は、仮想世界が、プレイヤーがパラレルリアリティゲームをプレイすることによってインタラクションすることが可能である、現実世界の隠れた次元であるという錯覚を与えることが可能である。例として、プレイヤーが現実世界における地理座標を進む時に、プレイヤーは、パラレルな仮想世界に提供される仮想要素を発見し、インタラクションすることが可能である。種々のゲームの目的は、パラレルリアリティゲームの一部として、プレイヤーに、今述べた仮想要素とのインタラクションするように勧めることが可能である。いくつかの態様では、ゲームサーバーは、実世界のポイントオブインタレストの周りにパラレルリアリティゲームにおける仮想イベントを統制することがある。
【0009】
仮想世界は、現実世界の連続した地理的なリージョンに対応する部分(例えば、セル)に区分されることがある。種々の態様において、仮想世界の部分は、地理的なインデックスをつけるフレームワークに従って、定義される。例として、仮想世界の一部は、地球、3次元物体を、粒度の異なるレベルにて2次元セルのセットに区分するセルの階層を定義するS2ライブラリに従って定義されることがある。他の場合では、異なる、地理的なインデックスをつけるフレームワークが、用いられることがある。仮想世界の部分は、たとえば、上に説明された仮想要素に関連付けられた情報など、ストレージに対して、対応する地理的なリージョンに関連付けられた種々のジオロケーションデータにインデックスをつけるのに用いられることが可能である。時間をかけて、新しい仮想要素が、仮想世界に追加されることがあり、仮想要素に関連付けられたデータ量が、増加することがある。例えば、仮想要素は、現実世界におけるポイントオブインタレストに対応することがあり、新しい仮想要素は、システムが新しいポイントオブインタレストを学習する時に(例えば、ポイントオブインタレストの所有者または管理者による提出のために、クラウドソーシングを通じて、またはどんな他適切な技法でも用いてなど)、加えられることがある。同様に、仮想要素に関連付けられた新しい情報(例えば、新しい写真、ビデオ、歴史の情報など)が取得される時、仮想要素に結合して格納されることがある。ゆえに、仮想世界の一部に対応するデータ量は、時間をかけて増えることがある。
【0010】
従来のアプローチを用いて、データ量が増える時に、さらに、そのデータを識別するためのクエリ応答時間も増大する。しかしながら、パラレルリアリティゲームの首尾一貫したパフォーマンスを提供するために、仮想世界の与えられた部分に対して格納されるデータ量に関係なく、予測可能なクエリ応答時間を提供することが望ましい。以下により詳細に説明されるように、種々の態様は、望ましくないクエリ応答時間を示すオーバーフロー条件に従って、与えられたシャードに格納されるデータ量を制限することによって、予測可能なクエリ応答時間を提供する。各部分に対するシャードカウント値は、格納されることがあり、仮想世界の与えられた部分に対するデータを含む単数のシャードまたは複数のシャードを識別するのに用いられることが可能である。決定論的なハッシングのアプローチが用いられて、仮想世界の与えられた部分に対するデータを含む単数のシャードまたは複数のシャードを識別し、シャードは、関連データに対して(例えば、並列に)問い合わせられる。ゆえに、クエリ応答時間は、仮想世界の与えられた部分に対して格納されたデータ量にかかわらず、いずれか1つのシャードのデータ量がしきい値を越えないので、予測可能である。
【0011】
説明される態様が、パラレルリアリティゲームに対して、ジオロケーションデータをアクセスすることに関係するが、当業者であれば、同一のまたは同様の技法が、他の目的に対して、ジオロケーションデータにより用いられることがあることを認識するだろう。例えば、地元の名所、レストラン、美術館、他のランドマークについてのジオロケーション情報(geolocated information)を有する旅行者ガイドアプリケーションは、予測可能なクエリ応答時間を提供する同様のやり方においてシャーディングされることがある。
【0012】
例示的なロケーションベースのパラレルリアリティゲーミングシステム
パラレルリアリティゲームは、実世界におけるプレイヤーの移動およそ活動が仮想世界における活動に影響を与え、また与えられるような、実世界の地理の少なくとも一部にパラレルである仮想世界の地理を有するロケーションベースゲームである。当業者であれば、本明細書に提供される開示を用いて、説明される主題が、ユーザーのロケーションを照合することが望ましい他の状況において適用可能であることを理解するだろう。さらに、コンピュータベースシステムに固有の柔軟性が、システムの2つのコンポーネント間および3つ以上のコンポーネント間のタスクおよび機能性のバラエティに富む可能な構成、組み合わせ、および分割を考慮することを認めるだろう。例として、本開示の様相に従うシステムおよび方法は、単一のコンピューティングデバイスを用いて、または複数のコンピューティングデバイスにわたって(例えば、コンピューターネットワークに接続されて)実装されることが可能である。
【0013】
図1は、プレイヤーの実世界のロケーションが、パラレルリアリティゲーム内の活動に基づいて、照合されることがあるネットワークコンピューティング環境100の一態様を示す図である。ネットワークコンピューティング環境100は、現実世界とパラレルである地理を有する仮想世界におけるプレイヤーのインタラクションに対して提供する。特に、現実世界における地理的な領域は、仮想世界において対応する領域に直接的にリンクされるまたはマッピングされることが可能である。プレイヤーは、現実世界における種々の地理的なロケーションに対して移動することによって、仮想世界において、あちこちと移動することが可能である。例として、現実世界におけるプレイヤーの位置は、トラッキングされ、仮想世界におけるプレイヤーの位置を更新するのに用いられることが可能である。通常、現実世界におけるプレイヤーの位置は、プレイヤーが仮想世界とインタラクションしているクライアントデバイス120のロケーションを見つけ、同一の(またはほぼ同一の)ロケーションにプレイヤーがいると仮定することによって、決定される。例えば、種々の態様において、プレイヤーは、現実世界におけるプレイヤーのロケーションが、仮想世界における仮想要素の仮想ロケーションに対応する実世界のロケーションのしきい値距離(例えば、10メートル、20メートルなど)以内にあるならば、仮想要素とインタラクションすることがある。便利なように、種々の態様は、「プレイヤーのロケーション」に関して説明されるが、当業者であれば、上記の参照が、プレイヤーのクライアントデバイス120のロケーションを引用することがあることを理解するだろう。
【0014】
さて、参照は、一態様に係るパラレルリアリティゲームのプレイヤーに対してゲームボードとして作動することが可能である、現実世界200とパラレルである仮想世界210の概念図を描く
図2になされる。例示されている仮想世界210は、現実世界200の地形とパラレルである地形を含むことが可能である。特に、現実世界200における地理的な領域または空間を定義する座標の範囲は、仮想世界210における仮想空間を定義する座標の対応する範囲にマッピングされる。現実世界200における座標の範囲は、町、街区、都市、キャンパス、現場、国、大陸、地球全体、または他の地理的な領域と関連付けられることが可能である。地理座標の範囲の中の各地理座標は、仮想世界の中の仮想空間における対応する座標にマッピングされる。
【0015】
仮想世界210におけるプレイヤーの位置は、現実世界200におけるプレイヤーの位置に対応する。例として、現実世界200において位置212に位置されるプレイヤーAは、仮想世界210において対応する位置222を有する。同様に、現実世界において位置214に位置されるプレイヤーBは、仮想世界において対応する位置224を有する。プレイヤーが現実世界における地理座標の範囲においてあちこちと動く時、さらに、プレイヤーは、仮想世界210における仮想空間を定義する座標の範囲においてあちこちと動く。特に、プレイヤーが持って行くモバイルコンピューティングデバイスに関連付けられた測位システム(例えば、GPSシステム)が用いられて、プレイヤーが現実世界における地理座標の範囲を進む時、プレイヤーの位置をトラッキングすることが可能である。現実世界200におけるプレイヤーの位置に関連付けられたデータは、仮想世界210における仮想空間を定義する座標の対応する範囲においてプレイヤーの位置を更新するのに用いられる。このようにして、プレイヤーは、現実世界200における特定の離散的なロケーションにチェックインすることなく、または現実世界200における特定の離散的なロケーションにてロケーション情報を周期的に更新することなく、現実世界200における地理座標の対応する範囲の間を単に移動することによって、仮想世界210における仮想空間を定義する座標の範囲において連続的なトラッキングを操縦することが可能である。
【0016】
ロケーションベースゲームは、仮想世界において種々の仮想ロケーションに散在する種々の仮想要素および/または仮想物体に移動することをおよび/またはこれらとインタラクションすることを、プレイヤーに要求する複数のゲームの目的を含むことが可能である。プレイヤーは、今述べた仮想的なロケーションに、現実世界において仮想要素または仮想物体の対応するロケーションに移動することによって、移動することが可能である。例として、測位システムは、プレイヤーが連続して現実世界を進む時、さらにプレイヤーが連続してパラレルな仮想世界も進むように、プレイヤーの位置を連続してトラッキングすることが可能である。次に、プレイヤーは、特定のロケーションにて種々の仮想要素および/または仮想物体とインタラクションして、1つまたは複数のゲームの目的を達成する、または成し遂げることが可能である。
【0017】
例えば、ゲームの目的は、プレイヤーに、仮想世界210における種々の仮想ロケーションにて仮想要素230を捕らえる、または所有権を主張することを要求することが可能である。今述べた仮想要素230は、現実世界200におけるランドマーク、地理的なロケーション、または物体240にリンクさせることが可能である。実世界のランドマークまたは物体240は、芸術作品、モニュメント、建物、企業、図書館、博物館、または他の適切な実世界のランドマークもしくは物体であることが可能である。今述べた仮想要素230を捕らえるために、プレイヤーは、現実世界において、仮想要素230にリンクされたランドマークまたは地理的なロケーション240に移動しなければならず、仮想世界210において、仮想要素230との必要などんなインタラクションでも行わなければならない。例えば、
図2のプレイヤーAは、特定のランドマーク240にリンクされた仮想要素230とインタラクションするために、またはそれらを捕らえるために、現実世界200において、ランドマーク240に移動しなければならないことがある。仮想要素230とのインタラクションは、たとえば、仮想要素230に関連付けられたランドマークまたは物体240について、写真を撮る、および/または他の情報を照合する、取得する、または捕らえるなど、実世界における活動を必要とすることが可能である。いくつかの態様では、仮想要素230とのインタラクションは、現実世界200におけるプレイヤーのロケーションが、仮想世界210におけるプレイヤーのロケーションとマッチすることの照合をさらに促すことがある。
【0018】
ゲームの目的は、プレイヤーが、ロケーションベースゲームにてプレイヤーによって収集された1つまたは複数の仮想アイテムを用いることを要求することがある。例として、プレイヤーは、ゲームの目的を完了するために有用であることが可能である仮想アイテム(例えば、武器、クリーチャー、パワーアップ、または他のアイテム)を捜し求めて、仮想世界210を移動することがある。今述べた仮想アイテムは、現実世界200において異なるロケーションに移動すること、または仮想世界210か現実世界200かのいずれかにおいて種々の活動を完了することによって、見つけられるまたは収集されることが可能である。
図2に示される例では、プレイヤーは、仮想アイテム232を用いて、1つまたは複数の仮想要素230を捕らえる。特に、プレイヤーは、仮想要素230に最も近いまたは仮想要素230内の仮想世界210におけるロケーションに仮想アイテム232を配置させることが可能である。このようにして、1つまたは複数の仮想アイテム232を配置させることは、特定のプレイヤーに対して、または特定のプレイヤーのチーム/ファクションに対して、仮想要素230の捕獲に帰着することが可能である。
【0019】
1つの特定の実装では、プレイヤーは、パラレルリアリティゲームの一部として、仮想エネルギーを蓄えなければならないことがある。
図2に描かれている仮想エネルギー250は、仮想世界210において、異なるロケーションに散在させることが可能である。プレイヤーは、現実の世界200において、仮想エネルギー250の対応するロケーションに移動することによって、仮想エネルギー250を収集することが可能である。仮想エネルギー250は、仮想アイテムにパワーを供給するのに、および/またはゲームにおける種々のゲームの目的を成し遂げるのに、用いられることが可能である。すべての仮想エネルギー250を失ったプレイヤーは、ゲームから切断されることが可能である。
【0020】
本開示の様相によれば、パラレルリアリティゲームは、ゲームにおけるあらゆる参加者が同一の仮想世界を共有する大規模マルチプレイヤーロケーションベースゲームであることが可能である。プレイヤーは、別個のチームまたはファクションに区分されることが可能であり、たとえば、仮想要素を捕らえる、または仮想要素の所有権を主張するなど、1つまたは複数のゲームの目的を達成するためにいっしょに働くことが可能である。このようにして、パラレルリアリティゲームは、本質的に、ゲーム内のプレイヤー間の協力を勧めるソーシャルゲームであることが可能である。プレイヤーは、対抗するチームから、パラレルリアリティゲームの間、お互いに抵抗して働く(または、時々、共同して互いの目的を達成する)ことが可能である。プレイヤーは、仮想アイテムを用いて、対抗するチームのプレイヤーを攻撃する、または対抗するチームのプレイヤーの進行を妨げることがある。時には、プレイヤーは、パラレルリアリティゲームにおいて、協同のまたは双方向のイベントに対して、実世界のロケーションにて集まるように勧められる。今述べた場合、ゲームサーバーは、プレイヤーが本当に物理的に存在し、なりすましをしていないことを確実にしようとする。
【0021】
パラレルリアリティゲームは、パラレルリアリティゲーム内のゲームプレイを強化し、勧める種々の特徴を有することが可能である。例として、プレイヤーは、ゲームじゅうくまなく用いられることが可能である(例えば、インゲームアイテム(in-game item)を購入する)仮想通貨または他の仮想報酬を蓄積することが可能である。プレイヤーは、ゲーム内の1つまたは複数のゲームの目的を完了し、ゲーム内の経験を得る時、種々のレベルを通して前進することが可能である。いくつかの態様では、プレイヤーは、ゲームの中に提供される1つまたは複数の通信インターフェースを介して、お互い通信することが可能である。さらに、プレイヤーは、ゲーム内のゲームの目的を完了するのに用いられることが可能である強化された「パワー」またはバーチャルアイテムを取得することも可能である。当業者は、本明細書に提供される開示を用いて、種々の他のゲーム特徴が、本開示の範囲から逸脱することなく、パラレルリアリティゲームを有して含まれることが可能であることを理解すべきである。
【0022】
図3は、プレイヤーと仮想世界210との間のインターフェースの一部としてクライアント120のディスプレイに与えられることが可能であるゲームインターフェース300の一態様を描く。ゲームインターフェース300は、仮想世界210と、たとえば、仮想世界210における、プレイヤーの位置222、ならびに仮想要素230、仮想アイテム232、および仮想エネルギー250のロケーションなど、ゲームの種々の他の様相とを表示するのに用いられることが可能である表示ウィンドウ310を含む。さらに、ユーザーインターフェース300は、他の情報を、たとえば、ゲームデータ情報、ゲーム通信、プレイヤー情報、クライアントロケーション照合命令、およびゲームに関連付けられた他の情報などを、表示することも可能である。例えば、ユーザーインターフェースは、たとえば、プレイヤー名、経験レベル および他の情報など、プレイヤー情報315を表示することが可能である。ユーザーインターフェース300は、種々のゲーム設定、およびゲームに関連付けられた他の情報にアクセスするためのメニュー320を含むことが可能である。ユーザーインターフェース300は、ゲームシステムとプレイヤーとの間の、およびパラレルリアリティゲームの1人または複数のプレイヤーとの間の通信を可能にする通信インターフェース330も含むことが可能である。
【0023】
本開示の様相によれば、プレイヤーは、現実世界において、あちこちとクライアントデバイス120を単に持って行くことによって、パラレルリアリティゲームとインタラクションすることが可能である。例として、プレイヤーは、単に、スマートフォンのパラレルリアリティゲームに関連付けられたアプリケーションにアクセスし、スマートフォンを持って現実世界においてあちこちと動くことによって、ゲームをプレイすることが可能である。この点については、プレイヤーは、ロケーションベースゲームをプレイするために、ディスプレイ画面の仮想世界の視覚表現を連続して見る必要はない。結果として、ユーザーインターフェース300は、ユーザーに、ゲームとインタラクションすることができるようにする複数の非視覚的な要素を含むことが可能である。例として、ゲームインターフェースは、プレイヤーがゲームの中の仮想要素または仮想物体に近づく時、または重要なイベントがパラレルリアリティゲームにで生じる時、プレイヤーに可聴通知を提供することが可能である。プレイヤーは、音声制御340により、今述べた可聴通知を制御することが可能である。別々のタイプの可聴通知は、仮想要素または仮想イベントのタイプによって決まり、ユーザーに提供されることが可能である。可聴通知は、仮想要素または仮想物体へのプレイヤーの接近によって決まる頻度または音量において、増えるまたは減ることが可能である。他の非視覚的な通知または信号は、たとえば振動通知または他の適切な通知もしくは信号など、ユーザーに提供されることが可能である。
【0024】
当業者であれば、本明細書に提供される開示を用いて、多数のゲームインターフェース構成および基本的な機能性が、本開示を考慮して明らかになることを理解するだろう。本開示は、どの1つの特定の構成をとっても限定されることを意図しない。
【0025】
図1に戻って参照すると、クライアント120は、ゲームシステム100とインターフェースするプレイヤーによって用いられることが可能である、いずれかのポータブルコンピューティングデバイスであることが可能である。例として、クライアント120は、ワイヤレスデバイス、パーソナルデジタルアシスタント(PDA)、ポータブルゲーミングデバイス、携帯電話、スマートフォン、タブレット、ナビゲーションシステム、ハンドヘルドGPSシステム、ウェアラブルコンピューティングデバイス、1つまたは複数のプロセッサーを有するディスプレイ、または他のそのようなデバイスであることが可能である。手短に言えば、クライアント120は、プレイヤーに、ゲームシステム100とインタラクションできるようにすることを可能にする、いずれかのコンピューターデバイスまたはシステムであることが可能である。
【0026】
クライアント120は、1つまたは複数のプロセッサーと、1つまたは複数のコンピューター読取り可能媒体とを含むことが可能である。コンピューター読取り可能媒体は、プロセッサーに、動作を行わせる命令を格納することが可能である。クライアント120は、たとえば、ディスプレイ画面、タッチスクリーン、タッチパッド、データ入力キー、スピーカー、カメラ、および/または音声認識に適したマイクなど、プレイヤーからの情報を提供するおよび受信するための種々の入力/出力デバイスを含むことが可能である。さらに、クライアント120は、限定されないが、動作センサー、加速度センサー、ジャイロスコープ、他の慣性測定装置(IMU)、気圧計、測位システム、温度計、光センサーなどを含む、クライアント120からのデータを記録するための他の種々のセンサーを含むこともある。クライアント120は、ネットワーク130を介して通信を提供するためのネットワークインターフェースをさらに含むことが可能である。ネットワークインターフェースは、例えば、トランスミッター、レシーバー、ポート、コントローラー、アンテナ、または他の適切なコンポーネントを含む、1つ、複数のネットワークとインターフェースするためのどんな適切なコンポーネントでも含むことが可能である。
【0027】
ネットワークコンピューティング環境100が、ロケーションベースゲームを提供するので、好ましくは、クライアント120は、たとえばスマートフォンまたはタブレットなど、プレイヤーが容易に持って行くないしは別のやり方により運ぶことが可能であるポータブルコンピューティングデバイスである。
図1に示される態様では、各クライアント120は、たとえばゲーミングモジュール122およびポジショニングモジュール124など、ソフトウェアコンポーネントを含む。他の態様では、クライアント120は、たとえば、(クライアント120のコンポーネントとしての、またはクライアント120の外部の)ディスプレイ、種々の入力デバイス(例えば、タッチスクリーン、マウス、スタイラスなど)などの異なるまたは追加の要素を含むことがある。
【0028】
ゲーミングモジュール122は、パラレルリアリティゲームに参加するインターフェースをプレイヤーに提供する。ゲームサーバー110は、クライアント120のゲーミングモジュール122による使用のために、ネットワーク130を介してクライアント120にゲームデータを送信して、ゲームサーバー110から離れたロケーションのプレイヤーにゲームのローカルバージョンを提供する。サーバー110は、ネットワーク130を介して通信を提供するためのネットワークインターフェースを含むことが可能である。ネットワークインターフェースは、例えば、トランスミッター、レシーバー、ポート、コントローラー、アンテナ、または他の適切なコンポーネントを含む、1つ、複数のネットワークとインターフェースするためのどんな適切なコンポーネントでも含むことが可能である。
【0029】
クライアント120によって実行されるゲーミングモジュール122は、プレイヤーとパラレルリアリティゲームとの間のインターフェースを提供する。ゲーミングモジュール122は、ゲームに関連付けられた仮想世界を表示する(例えば、仮想世界のイメージをレンダリングする)クライアント120に関連付けられたディスプレイデバイスにユーザーインターフェースを与え、ユーザーに、仮想世界において、インタラクションし、種々のゲームの目的を成し遂げることを可能にすることが可能である。さらに、ゲーミングモジュール122は、プレイヤーに、ディスプレイ画面を見ることを必要とすることなく、ゲームとインタラクションすることを可能にする種々の他の出力を制御することも可能である。例として、ゲーミングモジュール122は、プレイヤーに、ディスプレイ画面を見ることなく、ゲームをプレイすることが可能である種々の音声、振動、または他の通知を制御することが可能である。ゲーミングモジュール122は、ゲームサーバー110から受信したゲームデータにアクセスして、ゲームの正確な表現をユーザーに提供することが可能である。ゲーミングモジュール122は、プレイヤーの入力を受信し処理し、ネットワーク130を介してゲームサーバー110に更新を提供することが可能である。
【0030】
ポジショニングモジュール124は、クライアント120の位置を監視するためのいずれかのデバイスまたは回路であることが可能である。例えば、ポジショニングモジュール124は、衛星ナビゲーション測位システム(例えば、GPSシステム、ガリレオ測位システム、グローバルナビゲーション衛星システム(Global Navigation satellite system:GLONASS)、BeiDou衛星ナビゲーションおよび測位システム)、慣性ナビゲーションシステム、デッドレコニングシステム、IPアドレスに基づいて、三角測量および/またはセルラータワーもしくはWiFiホットスポットへの接近を用いることによって、および/または位置を決定する他の適切な技法を用いて、実際のまたは相対的な位置を決定することが可能である。ポジショニングモジュール124は、クライアント120のロケーションを正確に測位することを支援することがある種々の他のセンサーをさらに含むことがある。
【0031】
プレイヤーが現実世界においてクライアント120を持ってあちこちと動く時、ポジショニングモジュール124は、プレイヤーの位置をトラッキングし、プレイヤーの位置情報をゲーミングモジュール122に提供する。ゲーミングモジュール122は、現実世界におけるプレイヤーの実際の位置に基づいて、ゲームに関連付けられた仮想世界におけるプレイヤーの位置を更新する。ゆえに、プレイヤーは、現実世界において、単に、クライアント120を持って行くことまたは運ぶことによって、仮想世界とインタラクションすることが可能である。特に、仮想世界におけるプレイヤーのロケーションは、現実世界におけるプレイヤーのロケーションと対応させることが可能である。ゲーミングモジュール122は、ユニバーサルゲームモジュール112がゲームの至る所におけるすべてのプレイヤーの位置についてのトラッキングを保持するように、ネットワーク130を介してプレイヤーの位置情報をゲームサーバー110に提供することが可能である。プレイヤーに関連付けられたロケーション情報は、プレイヤーのロケーション情報がアクセスされることが、およびロケーション情報がゲームという状況ではどのように利用されるか(例えば、仮想世界におけるプレイヤーの位置を更新すること)がプレイヤーに通知された後、許可が与えられる場合のみ利用されることは、理解されるべきである。さらに、プレイヤーに関連付けられたどんなロケーション情報でも、プレイヤーのプライバシーを保護するやり方により格納され管理されるだろう。
【0032】
ネットワークコンピューティング環境100は、ゲームサーバー110が、ネットワーク130を介して1つまたは複数のクライアント120と通信して、クライアント120のプレイヤーにパラレルリアリティゲームを提供する、クライアントサーバーアーキテクチャを用いる。さらに、ネットワークコンピューティング環境100は、たとえばスポンサー/広告主システムまたは企業システムなど、他の外部システムを含むこともある。1つのクライアント120のみが
図1に例示されるが、何台のクライアント120または他の外部システムでも、ネットワーク130を介してゲームサーバー110に接続されることがある。その上さらに、ネットワークコンピューティング環境100は、異なるまたは追加の要素を含むことがあり、機能性は、以下に説明されるのとは異なるやり方によりクライアント120とサーバー110との間に分散されることがある。
【0033】
ゲームサーバー110は、いずれかのコンピューティングデバイスであることが可能であり、1つまたは複数のプロセッサーと1つまたは複数のコンピューター読取り可能媒体とを含むことが可能である。コンピューター読取り可能媒体は、プロセッサーに、動作を行わせる命令を格納することが可能である。ゲームサーバー110は、ゲームデータベース115を含むことが可能である、またはゲームデータベース115と通信をしていることが可能である。ゲームデータベース115は、ネットワーク130を介してクライアント(複数可)120に供されるまたは提供されるパラレルリアリティゲームに用いられるゲームデータを格納する。
【0034】
ゲームデータベース115に格納されるゲームデータは、(1)パラレルリアリティゲームにおける仮想世界に関連付けられたデータ(例えば、ディスプレイデバイスに仮想世界をレンダリングするのに用いられるイメージデータ、仮想世界におけるロケーションの地理座標など)、(2)パラレルリアリティゲームのプレイヤーに関連付けられたデータ(例えば、限定されないが、プレイヤー情報、プレイヤー体験レベル、プレイヤー通貨、仮想世界/現実世界における現在のプレイヤー位置、プレイヤーエネルギーレベル、プレイヤープリファレンス、チーム情報、ファクション情報などを含むプレイヤープロファイル)、(3)ゲームの目的に関連付けられたデータ(例えば、現在のゲームの目的、ゲームの目的の状態、過去のゲームの目的、将来のゲームの目的、望ましいゲームの目的に関連付けられたデータなど)、(4)仮想世界における仮想要素関連のデータ(例えば、仮想要素の位置、仮想要素のタイプ、仮想要素に関連付けられたゲームの目的、仮想要素に対応する現実の世界の位置情報、仮想要素の挙動、仮想要素の関連性など)、(5)仮想世界の要素にリンクした実世界の物体、ランドマーク、位置に関連付けられたデータ(例えば、実世界の物体/ランドマークのロケーション、実世界の物体/ランドマークの説明、実世界の物体にリンクした仮想要素の関連性など)、(6)ゲーム状態(例えば、プレイヤーの現在の数、ゲームの目的の現在の状態、プレイヤーリーダーボードなど)、(7)プレイヤーの活動/入力に関連付けられたデータ(例えば、現在のプレイヤー位置、過去のプレイヤー位置、プレイヤー移動、プレイヤー入力、プレイヤー問い合わせ、プレイヤー通信など)、および(8)パラレルリアリティゲームの実装の間、用いられる、関係する、または取得される他のデータを含むことが可能である。ゲームデータベース115に格納されたゲームデータは、システム管理者によってオフラインかリアルタイムにかのいずれか、および/または、たとえばネットワーク130を介して1つまたは複数のクライアント120からなど、システム100のユーザー/プレイヤーから受信されるデータによって、居住することが可能である。
【0035】
ゲームサーバー110は、1つまたは複数のクライアント120から(例として、リモートプロシージャコール(RPC)を介して)ゲームデータに対する要求を受信し、ネットワーク130を介してそれらの要求に応答するように構成されることが可能である。例として、ゲームサーバー110は、ゲームデータを1つまたは複数のデータファイルにエンコードし、データファイルをクライアント120に提供することが可能である。さらに、ゲームサーバー110は、ネットワーク130を介して1つまたは複数のクライアント120からゲームデータ(例えば、プレイヤー位置、プレイヤー活動、プレイヤー入力など)を受信するように構成されることが可能である。例として、クライアント120は、ゲームサーバー110が、ゲームに対して変化した周囲のどんな状況でもおよびすべての状況を反映するために、ゲームデータベース115においてゲームデータを更新するのに用いるプレイヤー入力および他の更新を、ゲームサーバー110に周期的に送るように構成されることが可能である。
【0036】
示される態様では、サーバー110は、ユニバーサルゲームモジュール112、コマーシャルゲーム特徴モジュール114、データ収集モジュール116、イベントモジュール118、およびクエリモジュール119を含む。ゲームサーバー110は、遠隔の分散ゲームデータベース115、ゲームデータフォームにアクセスする。クエリモジュール119およびゲームデータベース115の種々の態様は、
図4に関して、以下により詳細に説明される。他の態様では、ゲームサーバー110は、異なるおよび/または追加の要素を含む。さらに、機能は、説明されるのとは異なるように、要素の間に、分散されることがある。例として、ゲームデータベース115は、ゲームサーバー110に統合されることが可能である。
【0037】
ユニバーサルゲームモジュール112は、すべてのプレイヤーに対して、パラレルリアリティゲームをホストし、すべてのプレイヤーに対して、パラレルリアリティゲームの現在の状態に対する権威あるソースとして作動する。ユニバーサルゲームモジュール112は、クライアントデバイス120からのゲームデータ(例えば、プレイヤーの入力、プレイヤーの位置、プレイヤーの活動、ランドマーク情報など)を受信し、受信したゲームデータを、パラレルリアリティゲームのすべてのプレイヤーに対して、全パラレルリアリティゲームに組み入れる。さらに、ユニバーサルゲームモジュール112は、ネットワーク130を介して、クライアント120へのゲームデータの配信を管理することも可能である。さらに、ユニバーサルゲームモジュール112は、限定されないが、クライアント120とゲームサーバー110との間の接続をセキュアにすること、種々のクライアント120間の接続を確立すること、および種々のクライアント120のロケーションを照合することを含む、クライアント120のセキュリティの側面を管理することもある。
【0038】
コマーシャルゲーム特徴モジュール114は、1つが含まれる態様では、ユニバーサルゲームモジュール112から分離される、またはユニバーサルゲームモジュール112の一部であることが可能である。コマーシャルゲーム特徴モジュール114は、現実世界における商業活動とリンクされる、パラレルリアリティゲーム内の種々のゲーム特徴についての含有を管理することが可能である。例として、コマーシャルゲーム特徴モジュール114は、たとえば、ネットワーク130を介して(ネットワークインターフェースを介して)スポンサー/広告主、企業、または他のエンティティなど、外部システムから要求を受信して、パラレルリアリティゲームにおいて商業活動とリンクしたゲーム特徴を含むことが可能である。次に、コマーシャルゲーム特徴モジュール114は、パラレルリアリティゲームにおける今述べたゲーム特徴の含有を手配することが可能である。
【0039】
ゲームサーバー110は、データ収集モジュール116をさらに含むことが可能である。データ収集モジュール116は、1つが含まれる態様では、ユニバーサルゲームモジュール112から分離される、またはユニバーサルゲームモジュール112の一部であることが可能である。データ収集モジュール116は、現実世界におけるデータ収集活動とリンクされる、パラレルリアリティゲーム内の種々のゲーム特徴についての含有を管理することが可能である。例として、データ収集モジュール116は、ゲームデータベース115に格納されたゲームデータを変更して、パラレルリアリティゲームにおけるデータ収集活動とリンクしたゲーム特徴を含むことが可能である。さらに、データ収集モジュール116は、データ収集活動に応じて、プレイヤーによって収集されたデータおよび分析し、種々のプラットフォームによるアクセスのためにデータを提供することが可能である。
【0040】
イベントモジュール118は、パラレルリアリティゲームにおけるイベントへのプレイヤーのアクセスを管理する。用語「イベント」が、便利なように用いられるが、この用語が、特定のロケーションまたは時間における特定のイベントに言及する必要はないことは、理解されるべきである。むしろ、1つまたは複数のアクセス基準が用いられて、プレイヤーがゲームコンテンツにアクセスしてもよいかどうかを決定する、アクセス制御されたゲームコンテンツのいずれかの供給に言及することがある。上記のコンテンツは、アクセス制御の少ないまたはないゲームコンテンツを含む、より大きなパラレルリアリティゲームの一部であり得る、またはスタンドアロンのアクセス制御されたパラレルリアリティゲームであり得る。
【0041】
クエリモジュール119は、ゲームデータベース115に対するクエリを構築しおよび実行し、結果を、ネットワークコンピューティング環境100の他のコンポーネント(例えば、パラレルリアリティゲームにおける使用のためのクライアントデバイス120のゲーミングモジュール122)に提供する。
図4は、ゲームデータベース115の一態様を示す図である。示される態様では、ゲームデータベース115は、N個のノード410A~Nを含む。各ノード410は、異なる物理マシン、または異なる仮想マシンであり得る。ゆえに、ノード410は、独立して問い合わされることがある。地理的なリージョンを表すセルに対応するシャードに対するジオロケーションデータがノード410に追加される時、クエリモジュール119は、ノードに格納されたデータのクエリに対する、および拡張としてシャードのクエリに対する応答時間が望ましくないことを示すオーバーフロー条件に対して、ノードを監視する。オーバーフロー条件は、ノードに格納されるデータ量の制限、ノードに格納されるアイテム数の制限、ノードにおけるクエリ応答時間の制限、またはノードに格納されるデータ量を示す、ゆえに、予想されるクエリ応答時間を示すどんな他の適切なパラメーターでもあることが可能である。オーバーフロー条件が満たされるならば、クエリモジュール119は、セルに対してャードカウントをインクリメントし、異なるノード410のセルに対して新しいシャードを開始する。ゆえに、与えられたセルに対してデータ量が増加する時、セルに対応するジオロケーションデータが動的に格納されるノード410の数が増加する一方、いずれか1つのノードのデータ量は、クエリ応答時間が予測可能のままであるように制限される。いくつかの態様では、クエリモジュール119は、セルに関連付けられたシャードが別のノードに展開したことを示すノードのシャードに関連付けられたフラグ(例えば、格納されたパラメーター)を設定する。例えば、クエリモジュール119は、セルに対して新しいデータを格納するとき、セルに対して、関連付けられた1つまたは複数の共有されるためのフラグが設定されているかどうかを検査することがある。今述べた場合、クエリモジュール119が特定のシャードに対するフラグが設定されていることを決定するならば、クエリモジュール119が、フラグが設定されていないシャードを識別するまで、または新しいシャードがセルに対して生成されるまで、別のシャードにデータを格納しようとすることがある。
【0042】
図1に戻って参照すると、クエリモジュール119は、クライアントデバイス120のロケーションに基づいて、クライアントデバイス120から受信した要求に応答して、ジオロケーションデータに対するクエリを生成する。クエリは、ジオロケーションデータを検索する、更新する、ないしは別のやり方により操作することがある。さらに、クエリモジュール119は、問い合わされたジオロケーションデータの処理に基づいて、たとえば、要求されたジオロケーションデータを含むクエリ応答など、クエリ応答をクライアントデバイス120に提供する。一態様では、クエリモジュール119は、クライアント120からロケーション(例えば、ポジショニングモジュール124によって生成されたGPSロケーション)を受信し、たとえばロケーションを含む地理的なリージョンに対応する仮想世界の部分を表すセルに対して地理的なセルのインデックスを問い合わせることによってなど、ロケーションに基づいて関心のある仮想世界の1つまたは複数の部分を識別する。例えば、S2セルが用いられる場合、クエリモジュールは、クライアント120が位置される指定されたレベル(例えば、レベル12)のS2セル、少なくとも一部がロケーションの指定された半径(例えば、2キロメートル)内にある指定されたレベル(例えば、レベル16)のいずれかのS2セル、指定された半径内に完全にある指定されたレベルのいずれかのS2セル、またはS2セルのどんな他の適切なセット(例えば、クライアントの現在の移動方向を説明する楕円内)でも識別することがある。
【0043】
各S2セルには、セルIDを有する。さらに、クエリモジュール119は、セルに対してデータを含むシャードの数を示すシャード番号も格納する。クエリモジュール119は、セルIDおよびシャード番号を用いて、セルに対してデータを含む各シャードに対して一意的なキーを生成する。1つの一意的なキーまたは複数の一意的なキーは、セルIDを、0からシャード番号までの各整数値と組み合わせて、生成されることがある。例えば、7686のセルID、および3のシャード番号に対して、3つのキーは、7686-0、7686-1、7686-2として生成されることがある。一意的なキーを生成するどんな適切な組み合わせのメソッドでも、たとえば連接(concatenation)など、用いられることがある。
【0044】
クエリモジュール119は、関連データを有する各シャードが一意的なキーに基づいて位置される、分散データベース115のノードを決定する。いくつかの態様では、クエリモジュール119は、一意的なキーをスロット番号に変換する、決定論的なハッシングの技法を適用する。例として、データベース115は、スロットの最大数(例えば、16565)を有することがあり、クエリモジュール119は、スロットの最大数を用いて一意的なキーにモジュラーハッシング(modular hashing)の技法を適用して、スロット番号(例えば、一意的なキーのモジュロマキシマム(modulo maximum)なスロット番号)を生成することがある。他の態様では、他の決定論的なハッシングの技法を用いて、一意的なキーをスロット番号に変換することがある。
【0045】
クエリモジュール119は、データベース115のどのノード410が各スロットを格納しているかを示すマッピングを格納する。マッピングに基づいて、クエリモジュール119は、セルデータに対して、示されたノード410の各々に対して並列クエリを生成する。並列クエリの各々は、予測可能な応答時間を有し、および拡張として並列クエリ全体は、上に説明されたクエリモジュール119の条件によるオーバーフローに対する監視のために、予測可能な応答時間を有する。各並列クエリは、対応するノード410によって格納されるシャードに対するジオロケーションデータを戻す。クエリモジュール119は、各クエリからの結果を集約(例えば、連接)し、要求するクライアント120に提供する。
【0046】
ネットワーク130は、いずれかのタイプの通信ネットワーク、たとえば、ローカルエリアネットワーク(例えばイントラネット)、ワイドエリアネットワーク(例えばインターネット)、またはそれらのいくつかの組み合わせなどであることが可能である。さらに、ネットワークは、クライアント120とゲームサーバー110との間の直接接続を含むことも可能である。一般に、ゲームサーバー110とクライアント120との間の通信は、いろいろの通信プロトコル(例えば、TCP/IP、HTTP、SMTP、FTP)、エンコーディングまたはフォーマット(例えば、HTML、XML、JSON)、および/または保護スキーム(例えば、VPN、セキュアHTTP、SSL)を用いて、ワイヤードおよび/またはワイヤレス接続のどのタイプでも用いて、ネットワークインターフェースを介して行うことが可能である。
【0047】
本明細書に述べられる技術は、サーバー、データベース、ソフトウェアアプリケーション、および他のコンピュータベースシステムに、とられる作動および上記システムへの送信情報および上記システムからの送信情報も同様に、言及する。当業者であれば、コンピュータベースシステムに固有の柔軟性が、2つのコンポーネント間および3つ以上のコンポーネント間のタスクおよび機能性のバラエティに富む可能な構成、組み合わせ、および分割を考慮することを認めるだろう。例として、本明細書に述べられるサーバー処理は、単一のサーバー、または協働して働く複数のサーバーを用いて実装されることがある。特段の明言がある場合を除き、データベースおよびアプリケーションは、単一のシステムに実装されることがある、または複数のシステムにわたって分散されることがある。同様に、分散されたコンポーネントは、順次にまたは並列に動作することがある。
【0048】
さらに、本明細書で述べられるシステムおよび方法がユーザーについての個人情報にアクセスおよび分析する、または、たとえばロケーション情報など、個人情報の使用がなされるという状況では、ユーザーは、プログラムまたは特徴が情報を収集するかどうかを制御し、システムまたは他のアプリケーションからコンテンツを、受信するかどうかおよび/またはどのように受信するかを制御する機会を提供されることがある。ユーザーが、どの情報が収集され、どのように情報が用いられるかについての意味のある通知を提供されるまで、収集されるまたは用いられる上記の情報はない。情報は、ユーザーが、ユーザーによっていつでも取り消せるまたは修正されることが可能である同意を提供しない限り、収集されないまたは用いられない。ゆえに、ユーザーは、アプリケーションまたはシステムによって、情報が、ユーザーについてどのように収集され用いられるかに対する制御を有することが可能である。さらに、ある情報またはデータは、個人の識別が可能な情報が取り除かれるように、格納されるまたは用いられる前に1つまたは複数のやり方により扱われることが可能である。例えば、ユーザーの身元は、ユーザーに対して決定されることが可能である個人的に識別可能な情報がないように、扱われることがある。
【0049】
例示的な方法
図5は、予測可能なクエリ応答時間を有する任意の数のアイテムを含むジオロケーションデータを提供するための例示的な方法500を示す図である。
図5のステップは、方法500を行うクエリモジュール119の視点から例示される。しかしながら、ステップのいくつかまたはすべては、他のエンティティおよび/またはコンポーネントによって行われることがある。さらに、いくつかの態様は、ステップを並列に行う、ステップを異なる順に行う、または異なるステップを行うことがある。
【0050】
図5に示される態様では、方法500は、クエリモジュール119が、ジオロケーション(例えば、クライアント120のGPS座標)を示す要求を受信することにより始まる。先に述べている要求は、たとえば、ジオロケーションデータを検索する、更新する、ないしは別のやり方により変更するなど、種々のデータベースクエリを説明することがある。クエリモジュール119は、ジオロケーションに基づいて、1つまたは複数の地理的なリージョンを識別する520。例えば、先に述べている地理的なリージョンは、ロケーションから予め決められた距離内の特定のレベルについてのS2セルであり得る。
【0051】
クエリモジュール119は、データベースの1つまたは複数のデータベースシャードを識別し、ただし、1つまたは複数のデータベースシャードは、各々、1つまたは複数の地理的なリージョンのうちのそれぞれの地理的なリージョンに対応する530。先に述べているシャードは、決定論的なハッシングの技法を用いて識別されることがある。クエリモジュール119は、1つまたは複数の地理的なリージョンに対応するジオロケーションデータに対して識別されたシャードに問い合わせること540をし、ただし、問い合わせること540は、予測可能なクエリ応答時間を有する。上に説明されている、識別されたデータベースシャードが複数のデータベースシャードを含むならば、クエリモジュール119は、複数のシャードに並列に問い合わせをすることがある。クエリモジュール119は、問い合わされたジオロケーションデータを用いてクエリ結果を処理し550、受信した要求に対する応答としてクエリ結果を戻す560。例えば、クエリモジュール119が複数のシャードを並列に問い合わせるならば、クエリモジュール119は、並列のクエリの各々からクエリ結果(例えば、それぞれのシャードの各々から検索されるジオロケーションデータ)を全クエリ結果に集約し、受信した要求への応答として全クエリ結果を提供することがある。
【0052】
例示的なコンピューティングシステム
図6は、マシン読取り可能媒体から命令を読み、プロセッサー(またはコントローラー)において実行することができる例示的なマシンの構成要素を例示するブロック図である。具体的には、
図6は、コンピューターシステム600の例示的なかたちにおけるマシンの図式的な表現を示す。コンピューターシステム600は、マシンに、本明細書に説明されるメソドロジー(またはプロセス)のいずれかを行わせるための命令624(例えば、プログラムコードまたはソフトウェア)を実行するのに用いられることが可能である。マシンは、スタンドアロンデバイスとして動作する、または、説明される機能性を、他の接続された(例えば、ネットワーク接続された)デバイスと協働して提供することがある。マシンは、サーバークライアントネットワーク環境におけるサーバーもしくはクライアントの性能において、またはピアツーピア(または分散)ネットワーク環境におけるピアマシンとして、動作することがある。
【0053】
マシンは、サーバーコンピューター、クライアントコンピューター、パーソナルコンピュータ(PC)、タブレットPC、スマートフォン、ネットワークルータ、またはそのマシンによってとられることになる作動を指定する命令1024を(連続的にまたは別のやり方により)実行できるどんな他のマシンでもあり得る。さらに、単一のマシンのみが例示されているが、用語「マシン」は、本明細書に述べられる手順のうちのいずれか1つまたは複数を行う命令624を個別にまたは共同で実行するマシンのどんな集まりでも含むとも受け取られるべきである。
【0054】
例示的なコンピューターシステム600は、1つまたは複数の処理ユニット(一般に、1つまたは複数のプロセッサー602)を含む。プロセッサー602は、例えば、中央処理装置(CPU)、GPU(graphics processing unit)、デジタル信号プロセッサー(DSP)、コントローラー、ステートマシン、1つまたは複数の特定用途向け集積回路(ASIC)、1つまたは複数のRFIC(radio-frequency integrated circuit)、またはこれらのいずれかの組み合わせである。プロセッサー602へのどんな参照でも、単一のプロセッサーまたは複数のプロセッサーを引用することがある。さらに、コンピューターシステム600は、メインメモリー604も含む。コンピューターシステムは、ストレージユニット616を含むことがある。プロセッサー602、メモリー604、およびストレージユニット616は、バス608を介して通信する。
【0055】
さらに、コンピューターシステム600は、スタティックメモリー606、ディスプレイドライバー610(例えば、プラズマディスプレイパネル(PDP)、液晶ディスプレイ(LCD)、またはプロジェクタを駆動するために)を含むことが可能である。さらに、コンピューターシステム600は、英数字入力デバイス612(例えば、キーボード)、カーソル制御デバイス614(例えば、マウス、トラックボール、ジョイスティック、モーションセンサー、タッチスクリーン、または他のポインティング機器)、信号生成デバイス618(例えば、スピーカー)、およびネットワークインターフェースデバイス620も含むことがあり、さらにこれらはバス608を介して通信するようにも構成される。さらに、コンピューターシステム600は、たとえば、マイク、カメラ、気圧計、ジャイロスコープ、加速度計など、他の入力デバイス/センサーを含むこともある。
【0056】
ストレージユニット616は、本明細書に説明される手順または機能のうちのいずれか1つまたは複数を具象化する命令624(例えば、ソフトウェア)を格納されるマシン読取り可能媒体622を含む。さらに、命令624は、コンピューターシステム600による実行中に、完全にまたは少なくとも部分的に、メインメモリー604内にまたはプロセッサー602内に(例えば、プロセッサーのキャッシュメモリ内に)常駐することもあり、さらに、メインメモリー604およびプロセッサー602は、マシン読取り可能媒体も構成する。命令624は、ネットワークインターフェースデバイス620を介して、ネットワーク130によって送信されるまたは受信されることがある。
【0057】
マシン読取り可能媒体622は、例示的な態様では単一の媒体であるように示されるが、用語「マシン読取り可能媒体」は、命令624を格納することができる単一の媒体または複数の媒体(例えば、集中データベースもしくは分散データベース、または関連するキャッシュおよびサーバー)を含むことを受け取られるだろう。さらに、用語「マシン読取り可能媒体」は、マシンによる実行のための命令624を格納する性能があり、マシンに、本明細書に開示された手順のいずれか1つまたは複数を行わせるどんな媒体でも含むことも受け取られるべきである。用語「マシン読取り可能媒体」は、限定されないが、ソリッドステートメモリー、光学媒体、および磁気媒体のかたちにおいてデータリポジトリを含む。
【0058】
追加の考慮事項
態様の前述の説明は、例示の目的のために与えられ、包括的であること、または開示された正確なかたちに対して特許権を限定することを意図しない。関連当業者は、多くの変更および変形が、上記の開示を考慮して可能であることを理解することが可能である。
【0059】
今述べた説明のいくつかの部分は、情報の動作のアルゴリズムおよび記号表現に関して態様を説明する。通例、今述べたアルゴリズムの説明および表現は、効果的に他の当業者に研究内容を伝達するデータ処理技術の当業者によって用いられる。今述べた動作は、機能的に、計算的に、または論理的に説明される一方、コンピュータープログラムにまたは同等の電気回路、マイクロコード等によって実装されることが理解される。その上さらに、動作の今述べた配置をモジュールと呼ぶことは、一般性を損なうことなく、ときどき便利であることが示されている。説明した動作および関連モジュールは、ソフトウェア、ファームウェア、ハードウェア、またはどんなそれらの組み合わせにでも、具象化されることがある。
【0060】
本書に説明されたステップ、動作、または処理のいずれも、1つまたは複数のハードウェアまたはソフトウェアモジュールにより、単独にてまたは他のデバイスとの組み合わせにて、行われるまたは実装されることがある。一態様では、ソフトウェアモジュールは、説明したステップ、動作、または処理のいずれかまたはすべてを行うために、コンピュータープロセッサーによって実行されることが可能であるコンピュータープログラムコードを含むコンピューター読取り可能媒体を含むコンピュータープログラム製品により実装される。
【0061】
さらに、態様は、本明細書の動作を行うための装置に関することもある。今述べた装置は、必要とされる目的に対して特別に構築されることがある、および/または、コンピューターに格納されたコンピュータープログラムによって選択的にアクティベートされるもしくは再構成される汎用コンピューティングデバイスを含むことがある。コンピュータープログラムは、コンピュータシステムバスに結合される、非一時的な有形のコンピューター読取り可能媒体に、または、電子命令を記憶するのに適したどんなタイプの媒体にも、格納されることがある。その上さらに、本明細書にて言及されるどんなコンピューティングシステムでも、単一のプロセッサーを含むことがある、またはコンピューティング能力を高めるために複数のプロセッサー設計を利用するアーキテクチャであり得る。
【0062】
さらに、態様は、本明細書に説明されたコンピューター処理によって生成される製品に関することもある。製品は、コンピューター処理に起因する情報を含むことがあり、ただし、情報は、非一時的な有形の非一時的なコンピューター読取り可能記録媒体に格納され、本明細書に説明されるコンピュータープログラム製品または他のデータの組み合わせのどんな態様でも含むことがある。
【0063】
本明細書に用いられている、「一態様」または「ある態様」へのどんな言及でも、態様に関連して説明される特定の要素、特徴、構造、または特性が、少なくとも1つの態様に含まれることを意味する。本明細書の種々の場所における語句「一態様では」の出現は、同一の態様にすべて言及しているとは限らない。同様に、要素またはコンポーネントの前の「a」または「an」の使用は、単に便利なようになされる。今述べた説明は、そうは意味されないことが明白でない限り、1つまたは複数の要素またはコンポーネントが存在していることを意味することが理解されるべきだろう。
【0064】
値が「おおよその」または「実質的に」(または、それらの派生語)として記述される場合、上記の値は、別の意味が文脈から明らかでない限り、正確な±10%として構築されるべきだろう。例えば、「およそ10」は、「9から11の範囲にある」ことを意味することを理解されるべきだろう。
【0065】
本明細書に用いられている、用語「備える」、「備えている」、「含む」、「含んでいる」、「有する」、「有している」またはどんな変形でも、非排他的な包含に及ぶよう意図される。例えば、要素のリスト含む処理、方法、物品、または装置は、必ずしもそれらの要素のみに限定されず、明白にリストアップされない他の要素、または上記の処理、方法、物品、または装置に固有の他の要素を含むことがある。さらに、明白に反対のことが述べられない限り、「または」は、包括的な「または」に言及し、排他的な「または」に言及しない。例えば、条件AまたはBは、次の、Aが真である(または存在する)かつBが偽である(または存在しない)、Aが偽である(または存在しない)かつBが真である(または存在する)、ならびに、AおよびBの両方が真である(または存在する)、のうちのいずれか1つによって満たされる。
【0066】
本開示を読むとすぐに、当業者は、説明された技法およびアプローチを利用するのに用いられることがある、さらに追加の代替の構造設計および機能設計を理解するだろう。ゆえに、特定の態様および適用が例示され説明された一方、説明された主題は、開示された厳密な構造およびコンポーネントに限定されないことが理解されることである。保護の範囲は、次の特許請求の範囲によってのみ制限されるべきだろう。
【0067】
最後に、原則として、明細書に用いられた言葉は、読みやすさと教育の目的とのために選択され、特許権の境界を明示する、または境界を定めるために選択されていないことがある。それゆえ、特許権の範囲は、本詳細な説明によって限定されず、むしろ、本明細書に基づく出願に得られる特許請求の範囲によって限定されることが意図される。したがって、態様の開示は、次の特許請求の範囲に記載される特許権の範囲の例証であることを意図され、限定していない。
【手続補正書】
【提出日】2022-08-22
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
ジオロケーションデータを検索するための方法であって、
ジオロケーションを示す要求を受信することと、
前記ジオロケーションに基づいて地理的なリージョンを識別することと、
データベースの複数のデータベースシャードのうちのデータベースシャードを識別することであって、前記複数のデータベースシャードは、前記地理的なリージョンに対応する、ことと、
前記地理的なリージョンに対応するジオロケーションデータに対して、前記識別されたデータベースシャードに問い合わせることであって、前記データベースシャードの前記クエリは、予測可能な応答時間を有する、ことと、
前記問い合わされたジオロケーションデータに基づいてクエリ結果を処理することと、
前記要求に応答して前記クエリ結果を戻すことと
を備えることを特徴とする方法。
【請求項2】
前記問い合わせることは、
前記地理的なリージョンに対応するジオロケーションデータに対して、前記複数のデータベースシャードを並列に問い合わせることであって、前記複数のデータベースシャードの前記並列クエリは、前記予測可能な応答時間を有する、こと
をさらに含むことを特徴とする請求項1に記載の方法。
【請求項3】
オーバーフロー条件に従って、前記複数のデータベースシャードのうちのデータベースシャード内に格納されたジオロケーションデータを評価することであって、前記データベースシャードのクエリに対して応答時間を示す前記オーバーフロー条件は、望ましくない、ことと、
前記評価することに基づいて、前記データベースシャード内に格納された前記ジオロケーションデータが前記オーバーフロー条件を満たすことを決定することと、
前記オーバーフロー条件が満たされると決定することに応答して、前記地理的なリージョンに対応する前記複数のデータベースシャードに新しいデータベースシャードを追加することと、
格納に対して、前記地理的なリージョンに関連付けられた追加のジオロケーションデータを受信することに応答して、前記新しいデータベースシャードに前記追加のジオロケーションデータを格納することと
をさらに備えることを特徴とする請求項1に記載の方法。
【請求項4】
前記オーバーフロー条件は、前記データベースシャード内に格納されるジオロケーションデータのしきい値メモリーサイズ、前記データベースシャード内に格納されるデータベースレコードのしきい値数、または前記データベースシャードのクエリに対するしきい値クエリ応答時間のうちの1つまたは複数を含むことを特徴とする請求項3に記載の方法。
【請求項5】
前記ジオロケーションデータが前記オーバーフロー条件を満たすことを決定することに応答して、前記地理的なリージョンに対応するデータベースシャードの数が増加したことを示す、前記データベースシャードに関連付けられたフラグを設定すること
をさらに備えることを特徴とする請求項3に記載の方法。
【請求項6】
前記要求は、前記地理的なリージョンのサイズを示すセルレベルを含み、前記地理的なリージョンを識別することは、
前記地理的なリージョンに対応する地理的なセルに対して、前記ジオロケーションおよびセルレベルを用いて地理的なセルのインデックスを問い合わせること
を含むことを特徴とする請求項1に記載の方法。
【請求項7】
前記地理的なセルは、セル識別子とデータベースシャードの数とに関連付けられ、前記識別されたデータベースシャードに問い合わせることは、
前記地理的なセルに対する前記セル識別子と、前記地理的なセルに関連付けられたデータベースシャードの前記数とに基づいて、前記地理的なセルの前記データベースシャードに対して一意的なキーを決定することと、
前記一意的なキーに対応する前記データベースシャードを格納するデータベースノードを決定することと、
前記一意的なキーに対応する前記データベースシャードに含まれるジオロケーションデータに対して、前記データベースノードに問い合わせることと
を含むことを特徴とする請求項6に記載の方法。
【請求項8】
前記一意的なキーに対応する前記データベースシャードを格納する前記データベースノードを決定することとは、
前記一意的なキー、および前記データベースのスロットの最大数をハッシュ関数に適用することによって、スロット番号を生成することと、
前記スロット番号に関連付けられたデータベーススロットが前記データベースノードに格納されることを示すデータベースマッピングと、前記スロット番号を比較することと
を含むことを特徴とする請求項7に記載の方法。
【請求項9】
前記要求は、クライアントデバイスから受信され、前記ジオロケーションは、前記クライアントデバイスの地理的な位置に対応することを特徴とする請求項1に記載の方法。
【請求項10】
前記ジオロケーションデータは、前記地理的なリージョン内のロケーションに関連付けられた1つまたは複数の仮想要素を含むことを特徴とする請求項1に記載の方法。
【請求項11】
前記1つまたは複数の仮想要素は、前記クライアントデバイスにおけるパラレルリアリティゲームアプリケーションの仮想世界と関連付けられることを特徴とする請求項10に記載の方法。
【請求項12】
コンピューターのプロセッサーによって実行されると、前記プロセッサーに、
ジオロケーションを示す要求を受信することと、
前記ジオロケーションに基づいて地理的なリージョンを識別することと、
データベースの複数のデータベースシャードのうちのデータベースシャードを識別することであって、前記複数のデータベースシャードは、前記地理的なリージョンに対応する、ことと、
前記地理的なリージョンに対応するジオロケーションデータに対して、前記識別されたデータベースシャードに問い合わせることであって、前記データベースシャードの前記クエリは、予測可能な応答時間を有する、ことと、
前記問い合わされたジオロケーションデータに基づいてクエリ結果を処理することと、
前記要求に応答して前記クエリ結果を戻すことと
を含む動作を行わせる命令を含むことを特徴とする非一時的なコンピューター読取り可能記録媒体。
【請求項13】
前記問い合わせることは、
前記地理的なリージョンに対応するジオロケーションデータに対して、前記複数のデータベースシャードを並列に問い合わせることであって、前記複数のデータベースシャードの前記並列クエリは、前記予測可能な応答時間を有する、こと
をさらに含むことを特徴とする請求項12に記載のコンピューター読取り可能記録媒体。
【請求項14】
前記命令は、前記プロセッサーに、
オーバーフロー条件に従って、前記複数のデータベースシャードのうちのデータベースシャード内に格納されたジオロケーションデータを評価することであって、前記データベースシャードのクエリに対して応答時間を示す前記オーバーフロー条件は、望ましくない、ことと、
前記評価することに基づいて、前記データベースシャード内に格納された前記ジオロケーションデータが前記オーバーフロー条件を満たすことを決定することと、
前記オーバーフロー条件が満たされると決定することに応答して、前記地理的なリージョンに対応する前記複数のデータベースシャードに新しいデータベースシャードを追加することと、
格納に対して、前記地理的なリージョンに関連付けられた追加のジオロケーションデータを受信することに応答して、前記新しいデータベースシャードに前記追加のジオロケーションデータを格納することと
を含む動作をさらに行わせることを特徴とする請求項12に記載のコンピューター読取り可能記録媒体。
【請求項15】
前記オーバーフロー条件は、前記データベースシャード内に格納されるジオロケーションデータのしきい値メモリーサイズ、前記データベースシャード内に格納されるデータベースレコードのしきい値数、または前記データベースシャードのクエリに対するしきい値クエリ応答時間のうちの1つまたは複数を含むことを特徴とする請求項14に記載のコンピューター読取り可能記録媒体。
【請求項16】
前記命令は、前記プロセッサーに、
前記ジオロケーションデータが前記オーバーフロー条件を満たすことを決定することに応答して、前記地理的なリージョンに対応するデータベースシャードの数が増加したことを示す、前記データベースシャードに関連付けられたフラグを設定すること
を含む動作をさらに行わせることを特徴とする請求項14に記載のコンピューター読取り可能記録媒体。
【請求項17】
前記要求は、前記地理的なリージョンのサイズを示すセルレベルを含み、前記地理的なリージョンを識別することは、
前記地理的なリージョンに対応する地理的なセルに対して、前記ジオロケーションおよびセルレベルを用いて地理的なセルのインデックスを問い合わせること
を含むことを特徴とする請求項12に記載のコンピューター読取り可能記録媒体。
【請求項18】
前記地理的なセルは、セル識別子とデータベースシャードの数とに関連付けられ、前記識別されたデータベースシャードに問い合わせることは、
前記地理的なセルに対する前記セル識別子と、前記地理的なセルに関連付けられたデータベースシャードの前記数とに基づいて、前記地理的なセルの前記データベースシャードに対して一意的なキーを決定することと、
前記一意的なキーに対応する前記データベースシャードを格納するデータベースノードを決定することと、
前記一意的なキーに対応する前記データベースシャードに含まれるジオロケーションデータに対して、前記データベースノードに問い合わせることと
を含むことを特徴とする請求項17に記載のコンピューター読取り可能記録媒体。
【請求項19】
前記一意的なキーに対応する前記データベースシャードを格納する前記データベースノードを決定することとは、
前記一意的なキー、および前記データベースのスロットの最大数をハッシュ関数に適用することによって、スロット番号を生成することと、
前記スロット番号に関連付けられたデータベーススロットが前記データベースノードに格納されることを示すデータベースマッピングと、前記スロット番号を比較することと
を含むことを特徴とする請求項18に記載のコンピューター読取り可能記録媒体。
【請求項20】
前記要求は、クライアントデバイスから受信され、前記ジオロケーションは、前記クライアントデバイスの地理的な位置に対応することを特徴とする請求項12に記載のコンピューター読取り可能記録媒体。
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】0004
【補正方法】変更
【補正の内容】
【0004】
上記および他の問題は、任意の数のアイテムに、シャードデータベース(sharded database)にわたって、予測可能なクエリ応答時間を提供する地理的なリージョンにおいてインデックスをつけられることができるようにする(例えば、地理的なインデックスをつけるフレームワーク、たとえばS2ライブラリなどを用いて)ためのシステムおよび方法によって取り組まれることがある。種々の態様において、地理的なリージョンにインデックスをつけられたアイテムは、単一のシャードに格納され、追加のアイテムは、望ましくないクエリ応答時間を示すオーバーフロー条件が満たされない限り(例えば、クエリ応答時間が、望ましいしきい値未満のままである)、そのシャードに追加される。オーバーフロー条件が満たされるならば、システムは、予測可能なクエリ応答時間を維持するために、地理的なリージョンにインデックスをつけられたアイテムのストレージを1つまたは複数のシャードに拡張する。システムは、1つまたは複数の関連シャードに(例えば、並列に)問い合わせるのに用いられることが可能である、地理的なリージョンに対応するアイテムを格納するのに用いられているシャードの総数を表すシャードカウントを維持することがある。システムは、シャードデータベースのデータベースノードにわたって、シャードを均等に分散させるために、決定論的なハッシングを適用することがある(たとえば仮想または物理データベースサーバーなど)。データベースのクライアントは、地理的なリージョンに対するアイテムが格納されるあらゆるデータベースノードのリストを格納することよりもむしろ、地理的なリージョンに対応する各シャードがシャードカウントに基づいて格納されるデータベースノードを決定することがある。今述べたことは、例えば、単一のシャードまたは複数のシャードを並行して問い合わせるとき、予測可能な応答時間を提供している間、広い地形上領域に対して多くのアイテムの格納を可能にする。
【手続補正3】
【補正対象書類名】明細書
【補正対象項目名】0026
【補正方法】変更
【補正の内容】
【0026】
クライアント120は、1つまたは複数のプロセッサーと、1つまたは複数のコンピューター読取り可能媒体とを含むことが可能である。コンピューター読取り可能媒体は、プロセッサーに、動作を行わせる命令を格納することが可能である。クライアント120は、たとえば、ディスプレイ画面、タッチスクリーン、タッチパッド、データ入力キー、スピーカー、カメラ、および/または音声認識に適したマイクなど、プレイヤーからの情報を提供するおよび受信するための種々の入力/出力デバイスを含むことが可能である。さらに、クライアント120は、限定されないが、動作センサー、加速度センサー、ジャイロスコープ、他の慣性測定装置(IMU)、気圧計、測位システム、温度計、光センサーなどを含む、クライアント120からのデータを記録するための他の種々のセンサーを含むこともある。クライアント120は、ネットワーク130を介して通信を提供するためのネットワークインターフェースをさらに含むことが可能である。ネットワークインターフェースは、例えば、トランスミッター、レシーバー、ポート、コントローラー、アンテナ、または他の適切なコンポーネントを含む、1つまたは複数のネットワークとインターフェースするためのどんな適切なコンポーネントでも含むことが可能である。
【手続補正4】
【補正対象書類名】明細書
【補正対象項目名】0028
【補正方法】変更
【補正の内容】
【0028】
ゲーミングモジュール122は、パラレルリアリティゲームに参加するインターフェースをプレイヤーに提供する。ゲームサーバー110は、クライアント120のゲーミングモジュール122による使用のために、ネットワーク130を介してクライアント120にゲームデータを送信して、ゲームサーバー110から離れたロケーションのプレイヤーにゲームのローカルバージョンを提供する。サーバー110は、ネットワーク130を介して通信を提供するためのネットワークインターフェースを含むことが可能である。ネットワークインターフェースは、例えば、トランスミッター、レシーバー、ポート、コントローラー、アンテナ、または他の適切なコンポーネントを含む、1つまたは複数のネットワークとインターフェースするためのどんな適切なコンポーネントでも含むことが可能である。
【手続補正5】
【補正対象書類名】明細書
【補正対象項目名】0032
【補正方法】変更
【補正の内容】
【0032】
ネットワークコンピューティング環境100は、ゲームサーバー110が、ネットワーク130を介して1つまたは複数のクライアント120と通信して、クライアント120のプレイヤーにパラレルリアリティゲームを提供する、クライアントサーバーアーキテクチャを用いる。さらに、ネットワークコンピューティング環境100は、たとえばスポンサー/広告主システムまたは企業システムなど、他の外部システムを含むこともある。1つのクライアント120のみが
図1に例示されるが、何台のクライアント120または他の外部システムでも、ネットワーク130を介してゲームサーバー110に接続されることがある。その上さらに、ネットワークコンピューティング環境100は
、以下に説明されるのとは異なるやり方によりクライアント120とサーバー110との間に分散されることがある
、異なるまたは追加の要素および機能性を含むことがある。
【手続補正6】
【補正対象書類名】明細書
【補正対象項目名】0034
【補正方法】変更
【補正の内容】
【0034】
ゲームデータベース115に格納されるゲームデータは、(1)パラレルリアリティゲームにおける仮想世界に関連付けられたデータ(例えば、ディスプレイデバイスに仮想世界をレンダリングするのに用いられるイメージデータ、仮想世界におけるロケーションの地理座標など)、(2)パラレルリアリティゲームのプレイヤーに関連付けられたデータ(例えば、限定されないが、プレイヤー情報、プレイヤー体験レベル、プレイヤー通貨、仮想世界/現実世界における現在のプレイヤー位置、プレイヤーエネルギーレベル、プレイヤープリファレンス、チーム情報、ファクション情報などを含むプレイヤープロファイル)、(3)ゲームの目的に関連付けられたデータ(例えば、現在のゲームの目的、ゲームの目的の状態、過去のゲームの目的、将来のゲームの目的、望ましいゲームの目的に関連付けられたデータなど)、(4)仮想世界における仮想要素に関連付けられたデータ(例えば、仮想要素の位置、仮想要素のタイプ、仮想要素に関連付けられたゲームの目的、仮想要素に対応する現実の世界の位置情報、仮想要素の挙動、仮想要素の関連性など)、(5)仮想世界の要素にリンクした実世界の物体、ランドマーク、位置に関連付けられたデータ(例えば、実世界の物体/ランドマークのロケーション、実世界の物体/ランドマークの説明、実世界の物体にリンクした仮想要素の関連性など)、(6)ゲーム状態(例えば、プレイヤーの現在の数、ゲームの目的の現在の状態、プレイヤーリーダーボードなど)、(7)プレイヤーの活動/入力に関連付けられたデータ(例えば、現在のプレイヤー位置、過去のプレイヤー位置、プレイヤー移動、プレイヤー入力、プレイヤー問い合わせ、プレイヤー通信など)、および(8)パラレルリアリティゲームの実装の間、用いられる、関係する、または取得される他のデータを含むことが可能である。ゲームデータベース115に格納されたゲームデータは、システム管理者によってオフラインかリアルタイムにかのいずれか、および/または、たとえばネットワーク130を介して1つまたは複数のクライアント120からなど、システム100のユーザー/プレイヤーから受信されるデータによって、居住することが可能である。
【手続補正7】
【補正対象書類名】明細書
【補正対象項目名】0036
【補正方法】変更
【補正の内容】
【0036】
示される態様では、サーバー110は、ユニバーサルゲームモジュール112、コマーシャルゲーム特徴モジュール114、データ収集モジュール116、イベントモジュール118、およびクエリモジュール119を含む。ゲームサーバー110は、遠隔の分散ゲームデータベース115
からゲームデー
タにアクセスする。クエリモジュール119およびゲームデータベース115の種々の態様は、
図4に関して、以下により詳細に説明される。他の態様では、ゲームサーバー110は、異なるおよび/または追加の要素を含む。さらに、機能は、説明されるのとは異なるように、要素の間に、分散されることがある。例として、ゲームデータベース115は、ゲームサーバー110に統合されることが可能である。
【手続補正8】
【補正対象書類名】明細書
【補正対象項目名】0039
【補正方法】変更
【補正の内容】
【0039】
ゲームサーバー110は、データ収集モジュール116をさらに含むことが可能である。データ収集モジュール116は、1つが含まれる態様では、ユニバーサルゲームモジュール112から分離される、またはユニバーサルゲームモジュール112の一部であることが可能である。データ収集モジュール116は、現実世界におけるデータ収集活動とリンクされる、パラレルリアリティゲーム内の種々のゲーム特徴についての含有を管理することが可能である。例として、データ収集モジュール116は、ゲームデータベース115に格納されたゲームデータを変更して、パラレルリアリティゲームにおけるデータ収集活動とリンクしたゲーム特徴を含むことが可能である。さらに、データ収集モジュール116は、データ収集活動に応じて、プレイヤーによって収集されたデータを分析し、種々のプラットフォームによるアクセスのためにデータを提供することが可能である。
【手続補正9】
【補正対象書類名】明細書
【補正対象項目名】0041
【補正方法】変更
【補正の内容】
【0041】
クエリモジュール119は、ゲームデータベース115に対するクエリを構築しおよび実行し、結果を、ネットワークコンピューティング環境100の他のコンポーネント(例えば、パラレルリアリティゲームにおける使用のためのクライアントデバイス120のゲーミングモジュール122)に提供する。
図4は、ゲームデータベース115の一態様を示す図である。示される態様では、ゲームデータベース115は、N個のノード410A~Nを含む。各ノード410は、異なる物理マシン、または異なる仮想マシンであり得る。ゆえに、ノード410は、独立して問い合わされることがある。地理的なリージョンを表すセルに対応するシャードに対するジオロケーションデータがノード410に追加される時、クエリモジュール119は、ノードに格納されたデータのクエリに対する、および拡張としてシャードのクエリに対する応答時間が望ましくないことを示すオーバーフロー条件に対して、ノードを監視する。オーバーフロー条件は、ノードに格納されるデータ量の制限、ノードに格納されるアイテム数の制限、ノードにおけるクエリ応答時間の制限、またはノードに格納されるデータ量を示す、ゆえに、予想されるクエリ応答時間を示すどんな他の適切なパラメーターでもあることが可能である。オーバーフロー条件が満たされるならば、クエリモジュール119は、セルに対してャードカウントをインクリメントし、異なるノード410のセルに対して新しいシャードを開始する。ゆえに、与えられたセルに対してデータ量が増加する時、セルに対応するジオロケーションデータが動的に格納されるノード410の数が増加する一方、いずれか1つのノードのデータ量は、クエリ応答時間が予測可能のままであるように制限される。いくつかの態様では、クエリモジュール119は、セルに関連付けられたシャードが別のノードに展開したことを示すノードのシャードに関連付けられたフラグ(例えば、格納されたパラメーター)を設定する。例えば、クエリモジュール119は、セルに対して新しいデータを格納するとき、セル
に関連付けられた1つまたは複数の共有されるためのフラグが設定されているかどうかを検査することがある。今述べた場合、クエリモジュール119が特定のシャードに対するフラグが設定されていることを決定するならば、クエリモジュール119が、フラグが設定されていないシャードを識別するまで、または新しいシャードがセルに対して生成されるまで、別のシャードにデータを格納しようとすることがある。
【手続補正10】
【補正対象書類名】明細書
【補正対象項目名】0042
【補正方法】変更
【補正の内容】
【0042】
図1に戻って参照すると、クエリモジュール119は、クライアントデバイス120のロケーションに基づいて、クライアントデバイス120から受信した要求に応答して、ジオロケーションデータに対するクエリを生成する。クエリは、ジオロケーションデータを検索する、更新する、ないしは別のやり方により操作することがある。さらに、クエリモジュール119は、問い合わされたジオロケーションデータの処理に基づいて、たとえば、要求されたジオロケーションデータを含むクエリ応答など、クエリ応答をクライアントデバイス120に提供する。一態様では、クエリモジュール119は、クライアント120からロケーション(例えば、ポジショニングモジュール124によって生成されたGPSロケーション)を受信し、たとえばロケーションを含む地理的なリージョンに対応する仮想世界の部分を表すセルに対して地理的なセルのインデックスを問い合わせることによってなど、ロケーションに基づいて関心のある仮想世界の1つまたは複数の部分を識別する。例えば、S2セルが用いられる場合、クエリモジュールは、クライアント120が位置される指定されたレベル(例えば、レベル12)のS2セル、
その少なくとも一部がロケーションの指定された半径(例えば、2キロメートル)内にある指定されたレベル(例えば、レベル16)のいずれかのS2セル、指定された半径内に完全にある指定されたレベルのいずれかのS2セル、またはS2セルのどんな他の適切なセット(例えば、クライアントの現在の移動方向を説明する楕円内)でも識別することがある。
【手続補正11】
【補正対象書類名】明細書
【補正対象項目名】0045
【補正方法】変更
【補正の内容】
【0045】
クエリモジュール119は、データベース115のどのノード410が各スロットを格納しているかを示すマッピングを格納する。マッピングに基づいて、クエリモジュール119は、セルデータに対して、示されたノード410の各々に対して並列クエリを生成する。並列クエリの各々は、予測可能な応答時間を有し、および拡張として並列クエリ全体は、上に説明されたクエリモジュール119によるオーバーフロー条件に対する監視のために、予測可能な応答時間を有する。各並列クエリは、対応するノード410によって格納されるシャードに対するジオロケーションデータを戻す。クエリモジュール119は、各クエリからの結果を集約(例えば、連接)し、要求するクライアント120に提供する。
【国際調査報告】