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

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

▶ ソニー・インタラクティブエンタテインメント エルエルシーの特許一覧

<>
  • 特許-マッシブマルチプレーヤコンピュート 図1
  • 特許-マッシブマルチプレーヤコンピュート 図2
  • 特許-マッシブマルチプレーヤコンピュート 図3A
  • 特許-マッシブマルチプレーヤコンピュート 図3B
  • 特許-マッシブマルチプレーヤコンピュート 図4A
  • 特許-マッシブマルチプレーヤコンピュート 図4B
  • 特許-マッシブマルチプレーヤコンピュート 図4C
  • 特許-マッシブマルチプレーヤコンピュート 図5
  • 特許-マッシブマルチプレーヤコンピュート 図6
  • 特許-マッシブマルチプレーヤコンピュート 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-04-07
(45)【発行日】2023-04-17
(54)【発明の名称】マッシブマルチプレーヤコンピュート
(51)【国際特許分類】
   A63F 13/352 20140101AFI20230410BHJP
   A63F 13/65 20140101ALI20230410BHJP
   A63F 13/86 20140101ALI20230410BHJP
   G06F 9/50 20060101ALI20230410BHJP
【FI】
A63F13/352
A63F13/65
A63F13/86
G06F9/50 120A
【請求項の数】 28
(21)【出願番号】P 2021534171
(86)(22)【出願日】2019-11-18
(65)【公表番号】
(43)【公表日】2022-02-09
(86)【国際出願番号】 US2019062069
(87)【国際公開番号】W WO2020131274
(87)【国際公開日】2020-06-25
【審査請求日】2021-08-05
(31)【優先権主張番号】16/228,401
(32)【優先日】2018-12-20
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】518187455
【氏名又は名称】ソニー・インタラクティブエンタテインメント エルエルシー
(74)【代理人】
【識別番号】100099324
【弁理士】
【氏名又は名称】鈴木 正剛
(72)【発明者】
【氏名】ケルビン ヤング
【審査官】赤坂 祐樹
(56)【参考文献】
【文献】特開2017-037446(JP,A)
【文献】特表2016-528761(JP,A)
【文献】特開2018-89425(JP,A)
【文献】特開2005-182116(JP,A)
【文献】榎原 博之 ほか,MMORPGにおける動的領域分割結合アルゴリズム,電子情報通信学会論文誌 A,一般社団法人電子情報通信学会,2015年04月01日,第J98-A巻 第4号,337-356頁
【文献】ASAVEI, V et al.,Lightweight 3D MMO Framework with high GPU offloading,PROCEEDINGS OF THE 18TH INTERNATIONAL CONFERENCE ON SYSTEM THEORY, CONTROL AND COMPUTING,2014年10月
(58)【調査した分野】(Int.Cl.,DB名)
A63F 13/00-13/98、9/24
G06F 9/50
(57)【特許請求の範囲】
【請求項1】
ゲーミング世界を提示するオンラインゲームのための処理リソースを管理する方法であって、
複数のユーザーのために前記オンラインゲームを実行し、前記複数のユーザーの各々は、前記ゲーミング世界の1つ以上の仮想ロケーションへのアクセスを与えられるものであり、
前記ゲーミング世界のゲーミングインタラクティビティを処理するために前記複数のユーザーにコンピュートを割り当て、
前記ユーザーのうち前記仮想ロケーションの1つ内のリージョンにアクセスしているユーザー数が前記リージョン内の前記ユーザーに割り当てられた前記コンピュートの所定の制限を超えていると判断し、
前記ユーザー数が前記所定の制限を超えたことに応じて、前記リージョンを複数のサブリージョンに分割し、
前記リージョンに追加のコンピュートを割り当て、前記コンピュート及び前記追加のコンピュートが、前記サブリージョンの各々の前記ユーザーの前記ゲーミング世界のゲーミングインタラクティビティを処理するように構成され
前記リージョンの前記ゲーミングインタラクティビティが、前記複数のユーザーが提供するユーザー入力に対応し、
前記複数のユーザーが、プレーヤと観客とを含み、
前記プレーヤは、ゲーム状態に影響を与えるためのユーザー入力を提供することによってゲームのゲームプレイに参加するユーザーであり、
前記観客は、前記ゲーム状態に影響を与えるためのユーザー入力を行わないユーザーであり、
前記コンピュートには、処理できる前記プレーヤの数及び前記観客の数に対して別個の所定の制限が定義される、方法。
【請求項2】
前記リージョンで作成されるサブリージョンの数は、前記リージョンに存在する前記プレーヤの数と前記観客の数とに基づく、請求項1に記載の方法。
【請求項3】
前記プレーヤをフォローする観客の各々に対して、対応するプレーヤのオンラインゲームの視点が提示される、請求項1に記載の方法。
【請求項4】
追加のコンピュートを割り当てることが、対応する前記サブリージョンゲーミングインタラクティビティを表すユーザー入力を処理するために、サブリージョンごとに別個のコンピュートを割り当てることを含む、請求項1に記載の方法。
【請求項5】
前記ゲーミングインタラクティビティの処理では、
前記ユーザーの各々がユーザー入力を通じて提供する前記ゲーミングインタラクティビティの相対的なコンテキストに基づいて、前記複数のサブリージョンの各々の前記ゲーミングインタラクティビティの最適な処理シーケンスを決定し、
前記最適な処理シーケンスに従って前記複数のサブリージョンの各々の前記ゲーミングインタラクティビティを処理し、前記最適な処理シーケンスは、レンダリングのために、各前記ユーザーのそれぞれのクライアントデバイスに提供されるゲームビデオデータのシーケンスを決定するものである、請求項1に記載の方法。
【請求項6】
各ユーザーの前記ゲームビデオデータの前記最適な処理シーケンスが優先順位、または重要性、または重大性、または必要性、またはその2つ以上の任意の組み合わせに基づいて決定される、請求項5に記載の方法。
【請求項7】
前記ゲーミングインタラクティビティの処理では、
前記オンラインゲームのゲームプレイ中にユーザーによって提供される、ゲーミングインタラクティビティを表すユーザー入力の異なる入力のために最適な処理シーケンスを識別し、
前記識別した最適な処理シーケンスに基づいて前記ユーザーの前記ゲーミングインタラクティビティの前記異なるインタラクティビティを処理し、前記最適な処理シーケンスが、前記ユーザーのために生成されたゲームビデオデータのシーケンスを決定する、請求項1に記載の方法。
【請求項8】
前記最適な処理シーケンスは、ゲームプレイ中に提供される前記ユーザーの前記ユーザー入力の各々に関連するタイミングに基づくものである、請求項7に記載の方法。
【請求項9】
別個のコンピュートの割り当てが、マクロレベルまたはマイクロレベルで実行される、請求項1に記載の方法。
【請求項10】
前記リージョンにアクセスする前記ユーザーの数決定では、前記複数のサブリージョンの各々内での前記複数のユーザーの各々の移動を追跡し、前記ユーザーの移動が前記リージョンに割り当てられた前記コンピュートを調整するために使用される、請求項1に記載の方法。
【請求項11】
前記コンピュートの前記調整では、前記リージョン内の前記ユーザーの数が、前記複数のユーザーの移動に基づいて前記コンピュートの前記所定の制限を下回ると、前記リージョンに割り当てられた前記追加のコンピュートを割り当てを解除することを含む、請求項10に記載の方法。
【請求項12】
前記リージョンにアクセスする前記ユーザー数の決定では、
前記ユーザーの1人以上が前記リージョンを出ていくことを検出し、
前記リージョンに割り当てられた前記コンピュートまたは前記追加のコンピュートの1つを割り当て解除することによって、前記リージョンに割り当てられた前記コンピュートを調整し、前記割り当て解除は、前記コンピュートと前記追加のコンピュートとの間で前記ゲーミング世界のゲーム関連データが無事に同期された後に実行され、前記ゲーム関連データは、前記リージョンの前記ユーザーの前記ゲーミングインタラクティビティの処理から生成される、請求項10に記載の方法。
【請求項13】
前記調整は、前記コンピュート及び前記追加のコンピュートのリソース能力及び前記リージョンのリソース要件に基づいて行われる、請求項12に記載の方法。
【請求項14】
前記複数のサブリージョンの各サブリージョンが境界によって画定され、前記サブリージョンの前記ユーザーのゲーミングインタラクティビティを処理するために別個のコンピュートが割り当てられ、
前記複数のユーザーの各々の移動の追跡では、
前記リージョンのサブリージョンから、前記リージョンで画定された前記複数のサブリージョンのうちの2つの連続するサブリージョン間の境界にユーザーが移動したことを検出し、
前記ユーザーのゲーミングインタラクティビティの処理を可能にするために、前記境界で前記ユーザーを検出したことに応じて、前記2つの連続するサブリージョンの各々に割り当てられたコンピュート間の通信を管理し、前記ゲーミングインタラクティビティの処理が前記コンピュート間で同期される、請求項10に記載の方法。
【請求項15】
前記複数のユーザーの各々の移動の追跡では、
前記仮想ロケーション内の前記リージョンの前記ユーザーの前記移動を追跡し、
前記リージョンにアクセスするユーザーの数に基づいて前記リージョン内の前記サブリージョンを調整し、この調整では、前記リージョン内の1つ以上のサブリージョンをマージすること、または前記リージョン内の追加のサブリージョンを作成し、前記サブリージョンの前記調整により、前記リージョンに割り当てられた前記コンピュートに対する調整が生じる、請求項1に記載の方法。
【請求項16】
オンラインゲームのリソースの管理方法であって、
複数のユーザーから受け取るユーザー入力に応じて、前記オンラインゲームを実行し、
前記オンラインゲームのゲーミング世界内の仮想ロケーションへのアクセスを提供し、
各仮想ロケーションに存在する前記複数のユーザーのうちの人以上のユーザーにコンピュートを割り当て、前記コンピュートは、前記人以上のユーザーの各々にゲームビデオデータを生成するために、対応する前記仮想ロケーション内に存在する前記人以上のユーザーの前記ユーザー入力を処理するように構成されるものであり、
前記ゲーミング世界内の前記複数のユーザーの各々の移動を追跡して、前記複数のユーザーのうち所定数のユーザーが前記仮想ロケーションの1つ内のリージョンにいつアクセスしたかを決定し、
前記リージョンの前記ユーザーに割り当てられた前記コンピュートの所定の制限を前記ユーザーの数が超えると、前記リージョンを複数のサブリージョンに分割し、
前記コンピュート及び追加のコンピュートが、前記ユーザーの各々のために対応するビデオゲームデータを生成するために前記リージョンの前記ユーザーの各々によって提供される前記ユーザー入力を処理するように、前記リージョンに前記追加のコンピュートを割り当て、
前記2人以上のユーザーが、プレーヤと観客とを含み、
前記プレーヤは、ゲーム状態に影響を与えるためのユーザー入力を提供することによってゲームのゲームプレイに参加するユーザーであり、
前記観客は、前記ゲーム状態に影響を与えるためのユーザー入力を行わないユーザーであり、
前記コンピュートには、前記プレーヤの数と前記観客の数とに対して別個の制限が定義され、
前記方法の操作が、クラウドゲームシステムの1つ以上のプロセッサで実行する分散型ゲームエンジンによって処理される、方法。
【請求項17】
前記リージョン内で作成されるサブリージョンの数が、前記リージョン内の前記プレーヤの数と前記観客の数とに基づいて決定される、請求項16に記載の方法。
【請求項18】
追加のコンピュートの割り当てには、前記リージョン内で作成される前記複数のサブリージョンの各サブリージョンに別個の追加のコンピュートを割り当てが含まれ、別個の各追加のコンピュートは、前記対応するサブリージョン内で生成される前記ユーザー入力を処理するように構成される、請求項16に記載の方法。
【請求項19】
前記リージョンに割り当てられた前記コンピュートが、前記サブリージョンの各々に割り当てられた前記追加のコンピュートを管理して、前記ユーザーの各々に前記ゲームビデオデータを生成するように構成され、
前記管理では、前記コンピュートと前記追加のコンピュートとの間の前記リージョンの各ユーザーに生成された前記ゲームビデオデータが同期される、請求項18に記載の方法。
【請求項20】
前記ユーザー入力が、ゲームプレイの一部として前記リージョンの1人以上のプレーヤが提供するゲーミングインタラクティビティと、1人以上のプレーヤの前記ゲームプレイを見るために前記オンラインゲームにアクセスした1人以上の前記観客から受け取る入力と、を含む、請求項18に記載の方法。
【請求項21】
前記リージョン内で受け取った前記ユーザー入力の処理では、
前記リージョンで発生する前記オンラインゲームのゲームプレイの相対的なコンテキストを判定し、
前記オンラインゲームの前記ゲームプレイの前記相対的なコンテキストに基づいて各ユーザーの前記ユーザー入力を処理するための最適な処理シーケンスを決定し、
前記最適な処理シーケンスに従って前記リージョンに存在する各ユーザーの前記ユーザー入力を処理し、前記最適な処理シーケンスは、前記リージョンの各ユーザーと関連するクライアントデバイスのそれぞれのクライアントデバイスに提供されるゲームビデオデータのシーケンスを定義する、請求項16に記載の方法。
【請求項22】
前記リージョン内で受け取られた前記ユーザー入力の処理では、
ユーザーのために前記オンラインゲームのゲームプレイのコンテキストを判定し、前記コンテキストが、前記リージョンの前記ユーザーが提供する前記ユーザー入力を処理するための処理シーケンスを識別する際に使用され、
前記識別した処理シーケンスに従って前記ユーザーの前記ユーザー入力を処理する、請求項16に記載の方法。
【請求項23】
ユーザーは、前記ユーザーのアバターまたはゲームオブジェクトに基づいて前記リージョンで識別される、請求項16に記載の方法。
【請求項24】
前記複数のユーザーの各々の移動の追跡では、1人以上のユーザーの第1の仮想ロケーションから第2の仮想ロケーションへの移動を検出し、移動の検出に応じて、前記第1の仮想ロケーションと前記第2の仮想ロケーションに割り当てられた前記コンピュートが調整される、請求項16に記載の方法。
【請求項25】
各仮想ロケーションが、前記オンラインゲームの1人以上のユーザーが中に存在する境界によって画定される、請求項16に記載の方法。
【請求項26】
ゲーミング世界を提示するオンラインゲームのための処理リソースを管理するためにゲームクラウドシステムで実行する分散型ゲームエンジンであって、
前記オンラインゲームのゲームプレイ中に、複数のユーザーから受け取るゲーミングインタラクティビティを使用し、ゲームデータを生成するように構成されたゲームロジックを有し、
前記複数のユーザーのうちの1人以上のユーザーが存在する前記ゲーミング世界内の複数の仮想ロケーションを識別するように構成されたユーザー位置トラッカを有し、
前記複数の仮想ロケーションの各仮想ロケーションにコンピュートを割り当てるように構成されたコンピュートアロケータを有し、前記割り当てたコンピュートは、前記ゲーミング世界のゲーミングインタラクティビティを処理するためにリソースを有するものであり、
リージョン内のユーザー数を判定して、前記リージョン内の前記ユーザーに割り当てられた前記コンピュートの所定の制限を前記リージョン内の前記ユーザー数が超えたときを判定するように構成されたロケーション負荷アナライザを有し、
前記リージョン内の前記ユーザーの数が前記所定の制限を超えたことに応じて、前記リージョンを複数のサブリージョンに分割するように構成されたコンピュートリージョンマネージャを有し、各サブリージョンは前記リージョンの少なくとも1人のユーザーを含むものであり、
前記コンピュートアロケータは、前記リージョン内の前記サブリージョンの作成を検出するために、及び前記リージョンに追加のコンピュートを自動的に割り当てるために、前記コンピュートリージョンマネージャとインタラクションを行い、前記コンピュート及び前記追加のコンピュートが、前記サブリージョンの各々の前記ユーザーの前記ゲーミング世界のゲーミングインタラクティビティを処理するように構成され、
前記複数のユーザーが、プレーヤと観客とを含み、
前記プレーヤは、ゲーム状態に影響を与えるためのユーザー入力を提供することによってゲームのゲームプレイに参加するユーザーであり、
前記観客は、前記ゲーム状態に影響を与えるためのユーザー入力を行わないユーザーであり、
前記コンピュートには、前記プレーヤの数と前記観客の数とに対して別個の制限が定義される
分散型ゲームエンジン。
【請求項27】
前記コンピュートリージョンマネージャは、前記リージョンの前記ユーザーの各々を前記サブリージョンの特定のサブリージョンに割り当て、ゲームプレイ中に使用するために各ユーザーの位置情報をローカルに格納するように構成されたユーザーリージョン割り当てマネージャを有する、請求項26に記載の分散型ゲームエンジン。
【請求項28】
前記コンピュートリージョンマネージャは、
前記仮想ロケーション内の各サブリージョンの前記ユーザーを識別して各ユーザーの前記ゲーミングインタラクティビティ対応する前記サブリージョンに割り当てられた前記コンピュートに移行するために前記ユーザーリージョン割り当てマネージャとインタラクションするように構成されたユーザーデータ移行エージェントを有し、
前記ユーザーデータ移行エージェントは、前記サブリージョンの前記それぞれのサブリージョンに割り当てられた前記コンピュートと、前記仮想ロケーションに割り当てられた前記コンピュートとの間で、各ユーザーの前記ゲームデータを同期させる、請求項27に記載の分散型ゲームエンジン。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、オンラインゲームにリソースのアロケーションあるいは割り当てに関し、より詳細には、多数のプレーヤが特定の仮想ゲーム領域に入るときにコンピュート割り当てあるいはコンピュートアロケーションを行う決定論的方法に関する。
【背景技術】
【0002】
オンラインゲームは、ゲーミング世界で人気を博してきた。従来、ゲームは、ゲームプレイのためにゲームを実行するためのクライアントサーバセットアップまたはピアツーピアセットアップのどちらかを使用していた。典型的なクライアント-サーバセットアップでは、サーバは、ゲームのゲームプレイ中に生成されるゲームデータの物理特性、音声、伝送などを処理するために十分な計算能力を提供する必要がある。
マッシブマルチプレーヤオンラインゲーム(MMO)の人気が高まるにつれ、従来のクライアント-サーバセットアップは、ゲームプレイ中に複数のユーザー(例えば、数千人のプレーヤ)によって提供される入力から生じる処理負荷(つまり、ゲームデータ)を処理できなくなっている。MMOゲームでは、複数のプレーヤの各々がゲームプレイ中にゲーミング世界の独自の認識を与えられる必要がある。例えば、第1のプレーヤは、ゲーミング世界の右側から特定の課題にアプローチしている場合があり、第2のプレーヤは、ゲーミング世界の左側から同じ課題にアプローチしている場合があり、一方、第3のプレーヤは、ゲーミング世界の前方から課題にアプローチしている場合がある。
これらのプレーヤの各々は、特定の課題を克服するために入力を提供し得る。サーバは、どのプレーヤの入力を最初に処理する必要があるのかを判断し、ゲームの全体的なゲーム状態を生成する必要がある。また、サーバは、ゲーミング世界のプレーヤ独自の認識を提供するように、プレーヤの各々に異なるゲームデータを生成することができる必要がある。サーバは限られたリソースを有し、一定数のプレーヤ(つまり、ユーザー)しかサポートせず、プレーヤの数がこの特定の数を超えると、サーバのリソースはぎりぎりまで酷使され、ゲームのゲームプレイの最適ではない品質につながる場合がある。ピアツーピアセットアップでは、処理の負荷はゲームデータを交換するために使用されるネットワークにより多くかかり、一方、処理はピア間で分散される。さらに、ピアの1つは「サーバとして機能し、追加の処理負荷をとり、これがそのピアのリソースに対するストレスを増加させる場合がある。
【0003】
典型的なMMOゲームでは、いつでもオンラインゲームにアクセスし得る数百または数千のプレーヤがいる可能性がある。プレーヤが最適なゲームプレイ体験を有することを可能にするために、複数のサーバが使用されて、数百または数千のプレーヤのゲームプレイをサポートし得、プレーヤは、各論理グループがサーバレルム(server realm)に割り当てられる論理グループに編成され得る。しかしながら、上記のクライアント-サーバセットアップでのように、サーバレルムは、ユーザー(つまり、ゲームプレイキャラクタ)の数に制限を有している。新しいユーザーが、特定のサーバレルムでゲームプレイにアクセスする要求を開始すると、新しいユーザーは、サーバレルム内のユーザーの数がサーバの制限に達し、新しいユーザーがゲームプレイを開始するために不必要な遅延を生じさせる場合、新しいユーザーはサーバレルムのための待ち行列に入れられる場合がある。
さらに、新しいユーザーが異なるタイムゾーンにある特定のサーバレルムに加わる要求を行う場合、新しいユーザーは、たとえ特定のサーバレルムが最適なオプションでなくても、ユーザーの現在のジオロケーションに基づいて、特定のサーバレルムに割り当てられる場合がある。新しいユーザーが友人とオンラインゲームのゲームプレイに参加することを望み、特定のレベルのゲームプレイの開始を望む場合、これは特に問題となる。新しいユーザーを特定のサーバレルムに割り当てた結果、新しいユーザーがレイテンシを経験することになり、これは、新しいユーザーに満足のいかない体験を生じさせる可能性がある。
【0004】
本開示の実施形態は、このような背景の下になされたものである。
【発明の概要】
【0005】
本開示の実施形態は、オンラインゲームのためのリソースをプロビジョニングするためのシステム及び方法に関する。オンラインゲームは、オンラインゲームをプレイまたは見ているユーザーのクライアントデバイスでのレンダリングのために、ゲームのゲーミング世界のビューを含むゲームデータのビデオフレームを提供するために分散型ゲームエンジンを使用し、実行される。
分散型ゲームエンジンは、オンラインゲームのコンテキスト(つまり、ゲーム状態)、各ユーザーのオンラインゲーム内でのロケーションを追跡するために、及び先を見越して必要なコンピュート/コンピューティングリソースをプロビジョニングして、ユーザーによって提供されるユーザーの入力を処理してオンラインゲームの各ユーザーにゲームデータを生成するのを支援するために、複数のコンポーネントを含む。分散型ゲームエンジンのコンポーネントは、オンラインゲーム内の複数の仮想ロケーションを識別し、オンラインゲームの各仮想ロケーションに存在するユーザーに割り当てられた1つ以上のコンピュート(つまり、コンピューティングデバイス)に対する処理負荷を識別し、各仮想ロケーションで処理負荷を処理するように各仮想ロケーションに割り当てられたコンピュートを、先を見越して拡大または縮小するように構成される。
【0006】
まず、分散型ゲームエンジンは、最初に、オンラインゲームで識別された各仮想ロケーションに存在するユーザーにコンピュートを割り当て、オンラインゲームと関連する割り当てられたコンピュート(複数可)に対する処理負荷を監視し得る。処理負荷は、ユーザーが、オンラインゲームの仮想ロケーション内に画定されたリージョンに出入りすることによって影響を受ける場合がある。監視に基づいて、分散型ゲームエンジンは、割り当てられたコンピュートがそれぞれの仮想ロケーションで処理負荷を処理するように構成されるように、オンラインゲームの各仮想ロケーションに割り当てられたコンピュートを調整し得る。コンピュートに対する調整は、特定の仮想ロケーションでの処理負荷の増加を処理するために追加のコンピュート(複数可)を割り当てること、または処理負荷の減少に基づいて特定の仮想ロケーションに割り当てられた1つ以上のコンピュートを割り当て解除することを含み得る。追加のコンピュートを加えるために、分散型ゲームエンジンは、特定の仮想ロケーションのリージョン内のユーザーの数を監視し、ユーザーの数が、特定の仮想ロケーションに割り当てられたコンピュートの所定の制限を超えているかどうかを判断する。リージョン内のユーザーの数が、割り当てられたコンピュートの所定の数を超えると、分散型ゲームエンジンは、特定の仮想ロケーション内のリージョンを複数のサブリージョンに再分割し、追加のコンピュートを割り当てて、リージョン内のユーザーによって提供されるゲーミングのインタラクティビティあるいは対話性を定義するユーザー入力を処理し得る。いくつかの実施態様では、各サブリージョンのユーザーのユーザー入力を処理するために、別個のコンピュートが割り当てられてよい。いくつかの実施形態では、リージョンまたは特定の仮想ロケーションに割り当てられたコンピュートは、リージョン内で定義されたサブリージョンの1つに割り当てられてよい。別の実施形態では、特定の仮想ロケーションまたはリージョンに割り当てられたコンピュートは、特定の仮想ロケーションのリージョン内で生成された様々なサブリージョンに割り当てられた別個のコンピュートによって処理されるゲーミングの対話性の処理を調整するために使用され得る。
【0007】
他の形態では、分散型ゲームエンジンは、オンラインゲームに割り当てられたコンピュートの一部を割り当て解除することによって、オンラインゲームに割り当てられたコンピュートの量を最適化し得る。コンピュートの一部を割り当て解除するために、分散型ゲームエンジンは、第1の仮想ロケーションで生成されたゲーミング対話性あるいはゲーミングインタラクティビティを処理して、第1の仮想ロケーションと第2の仮想ロケーションの両方のゲーミンングインタラクティビティ(つまり、処理負荷)を処理するためにも使用された第1のコンピュートを割り当て、第2の仮想ロケーションでゲーミング対話性を処理するために割り当てられた第2のコンピュートを割り当て解除し得る。この場合、第2の仮想ロケーションに割り当てられたコンピュートは、ゲーミング対話性を処理することから生じたゲームデータが、第1のコンピュートと第2のコンピュートとの間で同期された後に、割り当て解除される。分散型ゲームエンジンは、仮想ロケーションの各々の各リージョン内のユーザーの数を監視し、オンラインゲームに割り当てられるコンピュートを、プロアクティブに、あるいは、先を見越して管理し続ける。
【0008】
一実施形態では、ゲーミング世界を提示するオンラインゲームのための処理リソースを管理する方法が開示されている。方法は、1人以上のユーザーのためにオンラインゲームを実行することを含む。1人以上のユーザーの各々は、ゲーミング世界の1つ以上の仮想ロケーションへのアクセスを与えられる。コンピュートは、ゲーミング世界でゲーミング対話性を処理するために1人以上のユーザーに割り当てられる。オンラインゲームで識別された仮想ロケーション内のリージョンにアクセスするユーザーの数が、ユーザーに割り当てられた該コンピュートの所定の制限を超えると、リージョンは複数のサブリージョンに分割される。追加のコンピュートはリージョンに割り当てられ、その結果、コンピュート及び追加のコンピュートは、サブリージョンの各々内のユーザーのゲーミング世界のゲーミング対話性を処理するように構成される。
【0009】
いくつかの実施形態では、リージョン内で作成されるサブリージョンの数は、リージョン内に存在するユーザーの数に基づいている。リージョン内で作成された各サブリージョンは、リージョンの少なくとも1人のユーザーを含む。
【0010】
いくつかの実施形態では、リージョン内で受け取るゲーミング対話性は、リージョン内の1人以上のユーザーによって提供されるユーザー入力に対応する。1人以上のユーザーは、プレーヤまたは観客である。
【0011】
いくつかの実施形態では、リージョン内で作成された各サブリージョンは、該サブリージョンのためのゲーミング対話性を表すユーザー入力を処理するために別個のコンピュートを割り当てられる。
【0012】
いくつかの実施形態では、ゲーミング対話性の処理は、各ユーザーによって提供されるゲーミング対話性の相対的な状況に基づいて、各サブリージョンでのゲーミング対話性の最適な処理シーケンスを決定することを含む。ゲーミング対話性は、最適な処理シーケンスに従って各サブリージョンで処理され、最適な処理シーケンスは、レンダリングのためにユーザーのクライアントデバイスで各ユーザーに提供されるゲームビデオデータのシーケンスを決定する。
【0013】
いくつかの実施形態では、各ユーザーのゲームビデオデータの最適な処理シーケンスは、優先順位、または重要性、または重大性、または必要性、またはその2つ以上の任意の組み合わせに基づいて決定される。
【0014】
いくつかの実施形態では、最適な処理シーケンスは、ゲームプレイ中に発生するゲーミング対話性のタイミングに基づく。
【0015】
いくつかの実施形態では、リージョンの各サブリージョン内のユーザーの移動は、リージョンにアクセスしているユーザーの数を決定するために追跡される。ユーザーの移動は、リージョンに割り当てられるコンピュートを調整するために使用される。
【0016】
いくつかの実施形態では、コンピュートを調整することは、リージョン内のユーザーの数がコンピュートの所定の制限を下回ると、1人以上のユーザーの移動に基づいて、リージョンに割り当てられた追加のコンピュートを割り当て解除することを含む。
【0017】
いくつかの実施形態では、リージョンに割り当てられたコンピュートは、1人以上のユーザーがリージョンを出るのを検出し、それに応じてリージョンに割り当てられたコンピュートまたは追加のコンピュートを割り当て解除することによって調整される。割り当て解除は、コンピュートと追加のコンピュートとの間でゲーミング世界のゲーム関連データの同期が成功した後に実行される。ゲーム関連データは、リージョン内のユーザーのゲーミング対話性の処理から生成される。
【0018】
いくつかの実施形態では、調整は、コンピュート及び追加のコンピュートのリソース能力、ならびにリージョンのリソース要件に基づいて行われる。
【0019】
いくつかの実施形態では、リージョンの各サブリージョンは、境界によって画定され、対応するサブリージョン内のユーザーのためのゲーミング対話性を処理するために別個のコンピュートを割り当てられる。リージョン内のユーザーの移動は追跡され、リージョンのサブリージョンからのユーザーが、2つの連続するサブリージョン間の境界に移動したと判断されると、2つの連続するサブリージョンの各々に割り当てられたコンピュート間の通信が、ユーザーのゲーミング対話性の処理を可能にするように管理される。ゲーミング対話性の処理は、コンピュート間で同期される。
【0020】
いくつかの実施形態では、仮想ロケーション内のリージョン内のユーザーの移動は追跡され、リージョン内のサブリージョンは、リージョンにアクセスするユーザーの数に基づいて調整される。調整することは、リージョン内の1つ以上のサブリージョンをマージすること、またはリージョン内に追加のサブリージョンを作成することを含む。サブリージョンの調整によって、リージョンに割り当てられたコンピュートに対する調整が生じる。
【0021】
他の実施形態では、オンラインゲームのリソースを管理するための方法が開示される。方法は、複数のユーザーから受け取るユーザー入力に応じて、オンラインゲームを実行することを含む。オンラインゲームの実行は、オンラインゲームのゲーミング世界内の仮想ロケーションへのアクセスを提供する。コンピュートは、各仮想ロケーションに存在する1人以上のユーザーに割り当てられる。コンピュートは、各ユーザーにゲームビデオデータを生成するために、対応する仮想ロケーション内に存在する1人以上のユーザーのユーザー入力を処理するように構成される。各ユーザーの移動は、いつ仮想ロケーションの1つ内のリージョンにいくつかのユーザーがアクセスするのかを判定するために、ゲーミング世界内で追跡される。ユーザーの数が、リージョン内のユーザーに割り当てられたコンピュートの所定の制限を超えると、リージョンは複数のサブリージョンに細分化される。追加のコンピュートがリージョンに割り当てられ、その結果、コンピュート及び追加のコンピュートは、ユーザーの各々に対応するビデオゲームデータを生成するために、リージョン内のユーザーの各々によって提供されるユーザー入力を処理する。
【0022】
本開示の他の形態は、本開示の原理を例として示す添付図面と併せて解釈することで、下記の詳細な説明から明らかになるであろう。
【0023】
本開示は、添付図面と併せて解釈される以下の説明を参照することにより、最も良く理解され得る。
【図面の簡単な説明】
【0024】
図1】本開示の一実施形態に係る、オンラインゲームのためのリソースをプロビジョニングするために使用されるゲームクラウドシステム上で実行中の分散型ゲームエンジンの簡略化されたブロック図を示す。
図2】本開示の一実施形態に係る、オンラインゲームのためのリソースをプロビジョニングするために使用されるコンポーネントのいくつかを識別する分散型ゲームエンジンの簡略化されたブロック図を示す。
図3A】本開示の一実施形態に係る、オンラインゲームのためのリソースをプロビジョニングする際に使用される分散型ゲームエンジンのコンピュートリージョン管理モジュールのコンポーネントのいくつかの詳細を識別する簡略化されたブロック図を示す。
図3B】本開示の一実施形態に係る、オンラインゲームのためのリソースをプロビジョニングする際に使用される分散型ゲームエンジンの中のコンピュートリージョンマネージャモジュールのコンポーネントのいくつかの詳細を識別する簡略化されたブロック図を示す。
図4A】本開示の一実施形態に係る、オンラインゲームのゲーミング世界内の仮想ロケーションのためにサブリージョンを生成することができる異なる方法を示す。
図4B】本開示の一実施形態に係る、オンラインゲームのゲーミング世界内の仮想ロケーションのためにサブリージョンを生成することができる異なる方法を示す。
図4C】本開示の一実施形態に係る、オンラインゲームのゲーミング世界内の仮想ロケーションのためにサブリージョンを生成することができる異なる方法を示す。
図5】本開示の一実施形態に従って、クラウドゲームネットワークを介して1つ以上のクライアントデバイスのゲームデータのフレームを提供する目的でオンラインゲームを実行するために使用されるクラウドゲーミングシステムのシステム図を示す。
図6】本開示の一実装形態に従って、リソースアロケーションモデルを使用し、オンラインゲームのためのリソースをプロビジョニングするための方法の流れ操作を示す。
図7】本開示の一実装形態に従って、モデラーを使用し、リソースアロケーションモデル(人工知能(AI)モデル)を構築し、訓練するために使用される例のコンピューティングデバイスのコンポーネントを示す。
【発明を実施するための形態】
【0025】
以下の詳細な説明は、例示の目的で多くの具体的な詳細を含むが、当業者であれば、以下の詳細に対する多くの変形及び変更が本開示の範囲内にあることを理解するであろう。したがって、以下で説明される本開示の形態は、この説明に続く特許請求の範囲への一般性を失うことなく、また限定を課すことなく示される。
【0026】
一般的に言えば、本開示の様々な実施形態は、オンラインゲームのリソース要件、オンラインゲームに割り当てられた各コンピュートのリソース機能を理解し、オンラインゲームに最適なリソースアロケーションを提供するように、ゲームプレイ中にオンラインゲームに割り当てられるコンピュータを動的に調整する方法を提供するシステム及び方法を説明する。オンラインゲームは、複数のユーザーがアクセスするマッシブマルチプレーヤオンライン(MMO)ゲームであってよい。複数のユーザーは、ゲームプレイのためにオンラインゲームにアクセスしているプレーヤである場合もあれば、ゲームプレイを見るために、またはオンラインゲームをプレイしている特定の1人以上のプレーヤをフォローするためにオンラインゲームにアクセスしている観客である場合もあれば、プレーヤと観客の両方の組み合わせである場合もある。MMOゲームは、ゲーミング対話性あるいはゲーミングインタラクティビティを介して複数のユーザーから受け取るユーザー入力に基づいてゲームデータを提供する。プレーヤのために、及びそのプレーヤをフォローする観客のために生成されるゲームデータは、プレーヤと関連するオンラインゲームのゲーム状態を含む。複数のプレーヤのために生成されるゲームデータは、オンラインゲームのゲーミング世界のビューを含む。
【0027】
複数の仮想ロケーションがゲーミング世界で識別される。各仮想ロケーションは、オンラインゲームの1人以上のユーザー(プレーヤ及び/または観客)が中に存在する画定された境界を有するゲーミング世界のリージョンである。各仮想ロケーションのユーザー入力の形をとるゲーミング対話性は、各仮想ロケーションで生成されているゲーミング対話性の量を決定するために監視される。コンピュートは、ゲーミング世界で生成されたゲーミング対話性の処理に対処するためにオンラインゲームのユーザーに割り当てられる。オンラインゲームに割り当てられたコンピュートは、ゲーミング対話によって定義される処理負荷に対応するために利用可能な処理リソースに基づいて識別される。各ユーザーがオンラインゲームを進めるにつれ、ゲーミング世界でのユーザーのロケーションは第1の仮想ロケーションから第2の仮想ロケーションに変化する場合がある。
分散型ゲームエンジンは、いつ多くのユーザーが特定の仮想ロケーションのリージョンにアクセスしているのかを判断するためにゲーミング世界の各ユーザーの移動を監視する。リージョン内のユーザーの数によって、特定の仮想ロケーション内のリージョンのゲーミング対話性の増加が生じる場合がある。各コンピュートは、コンピュートがそのゲーミング対話性を処理できるユーザーの数に対して所定の制限を有する。リージョン内のユーザーの数が割り当てられたコンピュートの所定の制限を超える場合、特定の仮想ロケーションのリージョンは、複数のサブリージョンに動的に細分化され、各サブリージョンは、リージョンから少なくとも1人のユーザーを有する。
追加のコンピュートは、ユーザーのゲーミング世界でのゲーミング対話性から生じる処理負荷を処理するために、及びサブリージョンの各々でのユーザーの各々にゲームビデオデータを生成するためにリージョンに割り当てられる。いくつかの実施形態では、各サブリージョンは、対応するサブリージョン内のユーザーのゲーミング対話性を処理するために別個のコンピュートを割り当てられる。サブリージョンの各々に割り当てられたコンピュートは、サブリージョンでのゲーミング対話性から生成される処理負荷を処理するために必要とされたリソースに基づいて識別される。
【0028】
コンピュートの割り当て後、ユーザーの移動は、1人以上のユーザーがいつあるリージョンを出て別のリージョンに移動するのかを判断するために監視される。監視に応じて、オンラインゲームに割り当てられたコンピュートは、オンラインゲーム内の異なる仮想環境のユーザーのゲーミング対話性を処理するために、コンピュートの一部を割り当て解除することができるのか、それとも再割り当てできるのかを判断するために評価され得る。コンピュートの割り当て解除または再割り当ては、ユーザーのゲーミング対話性の処理から生成されたゲームデータを、割り当て解除されているコンピュートから、オンラインゲームのゲーミング対話性を処理するために割り当てられたコンピュートに無事に移行させた後に実行される。
【0029】
様々な実施形態の上記の概要的理解をもって、ここで、実施形態の例示的な詳細を様々な図面を参照して説明する。
【0030】
図1は、一実施形態で、異なるジオロケーションから複数のユーザーがアクセスするMMOゲーム(つまり、オンラインゲーム)を実行するためのゲームクラウドシステムで使用される分散型ゲームエンジン100の簡略化されたブロック図である。分散型ゲームエンジン100は、オンラインゲームの特定の特徴を処理するために使用される機能コンポーネントを含む。オンラインゲームのゲームロジックとともに分散型ゲームエンジン100のインスタンスは、ゲームクラウドシステムの1つ以上のサーバ(つまり、コンピュート102a~102n)で実行でき、インスタンスの1つ以上は、オンラインゲームの特定の特徴を処理するために使用され得る。
機能コンポーネントは、オンラインゲームの特定の特徴を処理するためのエンジン/モジュールを含む。分散型ゲームエンジンの異なる機能コンポーネントによって処理され得るオンラインゲームの特徴のいくつかは、例を挙げると、物理特性、音声、シェーディング、テクスチャリング、アセンブル/符号化、スクリプト記述、人工知能(AI)、メモリ管理、スクリプト記述、アニメーション、シーングラフを含み得る。
【0031】
ゲームクラウドシステムは、本開示の一実施形態に従って、1つ以上のオンラインゲームアプリケーションのインスタンスを実行するバックエンドサーバ(例えば、コンピュート1~n)のネットワークを含む。1つ以上のクライアントデバイス(図示せず)は、インターネットなどのネットワーク200を介してゲームクラウドシステムのゲームサーバ上で実行しているオンラインゲームにアクセスするために使用される。クライアントデバイスは、少なくともメモリ、プロセッサ、及びネットワーク200を介してバックエンドサーバとインタラクションするためのネットワークインタフェースを含む携帯電話、タブレットコンピュータ、パーソナルコンピュータなどの任意のコンピューティングデバイスである場合もあれば、計算機能を提供するバックエンドサーバとインタラクションするためのインタフェースを提供するシンクライアントである場合もある。
バックエンドサーバは、1つ以上のゲームの1つ以上のインスタンスを実行するように構成されたゲームサーバである。ゲームサーバは、ゲームクラウドシステムで利用可能な任意のタイプのサーバコンピューティングデバイスであってよい。1つの例示的な実施形態では、ゲームサーバは、ホストのリソースを使用し、ユーザーのためにオンラインゲームのインスタンスを実行するゲームプロセッサをサポートする仮想マシンであってよい。別の例の実施形態では、ゲームサーバは、スタンドアロン物理サーバ、または単一のデータセンタの一部または複数のデータセンタの一部である物理サーバであってよい。
一実施形態では、分散型ゲームエンジン100及びゲームロジックを実行している中央サーバ(つまり、中央コンピュート)102は、ネットワーク200を介して異なるサーバ(つまり、コンピュート)102a~102nへの入力と出力を調整し、異なるサーバからの出力をアセンブルし、ネットワーク200を介した1つ以上のクライアントデバイスへのオンワード伝送のためにオンラインゲームの出力を符号化し得る。ネットワーク200は、インターネット、広域ネットワーク、ローカルエリアネットワーク、プライベートネットワーク、ゲームネットワークなどを含む任意のタイプのネットワークであってよい。
【0032】
オンラインゲームは、ゲームクラウドシステムの複数のサーバ(つまり、コンピュート102a~102n)によってリモートで実行され得、ゲームデータは、ネットワーク200を介してユーザー(プレーヤまたは観客)のクライアントデバイスにストリーミングされ得る。プレーヤは、オンラインゲームのゲーム状態に影響を与えるためにゲーミンングインタラクティビティ(ユーザー入力)を提供することによってゲームのゲームプレイに参加するユーザーである。観客は、複数のプレーヤからのゲーミンングインタラクティビティ(ユーザー入力)を含むオンラインゲームの一般的なゲームプレイをフォローする、または特定のプレーヤのゲームプレイをフォローするユーザーである。
オンラインゲームのゲームプレイは、クライアントデバイスで提供される制御オプションを使用し、またはクライアントデバイスに通信で接続されたコントローラを使用し、プレーヤによって制御される。他の実施形態では、オンラインゲームは、クライアントデバイスでローカルに実行され得、実行するオンラインゲームからのメタデータは、ネットワーク200を介して、ゲーム状態に影響を与えるためにゲームクラウドシステムのバックエンドサーバに送信される。
【0033】
図2は、一実施形態において、オンラインゲームのゲームプレイ中に生成されるゲーミング対話性を処理するために、コンピュート及びコンピューティングリソースをプロビジョニングする際に使用される分散型ゲームエンジン100のブロック図を示す。オンラインゲームは、複数のユーザーがプレイまたはアクセスするMMOゲームであってよい。複数のユーザーは、1つのジオロケーションからまたは様々なジオロケーションからオンラインゲームにアクセスしている場合がある。分散型ゲームエンジンは、オンラインゲームのゲーミング世界の中でユーザーの移動を絶えず追跡し、異なるコンピュートをオンラインゲームに割り当てて、オンラインゲームのゲーミング世界で生成されたゲーミング対話性を処理するためのアルゴリズムを含む。
アルゴリズムは、ゲーミング世界の異なる仮想ロケーションへのユーザーアクセスを提供し、仮想ロケーションのそれぞれで生成されるゲーミング対話性の処理を管理する。オンラインゲームのユーザーのゲーミング対話性を高速かつ効率的に処理するために、分散型ゲームエンジンのインスタンス及びオンラインゲームのゲームロジックは、ゲーミング世界で識別される各仮想ロケーションで生成されるゲーミング対話性を処理するために使用されるコンピュートとともに、異なるコンピュート(つまり、サーバ)で実行される。さらに、ゲームエンジンのインスタンスを実行しているコンピュート(例えば、中央サーバ)の1つは、オンラインゲームに割り当てられるコンピュートの各々の入力及び出力を管理し、すべてのコンピュートから出力をアセンブルし、オンラインゲームをプレイまたはフォローするユーザーの各々のために、オンラインゲームのゲーム状態を含むゲームビデオデータを生成するために使用され得る。
オンラインゲームに割り当てられるコンピュートは、単一のデータセンタまたは複数のデータセンタの一部であってよい。分散型ゲームエンジンは、異なるユーザーによって提供されるゲーミンングインタラクティビティ(ユーザー入力)から生じた絶えず変化するゲームビデオを処理するために並列処理を使用し、異なるユーザーと関連するそれぞれのクライアントデバイスにゲームビデオデータのフレームを提供する。
【0034】
分散型ゲームエンジン100は、オンラインゲームのゲーミング世界で識別された異なる仮想ロケーションで生成されるゲーミング対話性を処理するために割り当てられたコンピュート及びコンピューティングリソースを管理するために使用される複数のコンポーネントを含む。分散型ゲームエンジン100のコンポーネントのいくつかは、ユーザー位置トラッカ105、ロケーション負荷アナライザ107、コンピュートアロケータ109、ゲームコンテキストプロセッサ111、及び動的コンピュートリージョンマネージャ120を含む。
ユーザー位置トラッカ105は、ゲーミング世界での各ユーザーの移動を監視するために、及び各ユーザーがゲーミング世界の中に存在している仮想ロケーションを識別するために使用される。追跡の一部として、ユーザー位置トラッカ105は、オンラインゲームの多くのユーザーがいつ特定の仮想ロケーションの中のリージョンにアクセスするのかを判断し得る。リージョン内のユーザーの数は、オンラインゲームにアクセスしているユーザーのサブセットであってよい。ますます多くのユーザーがリージョンにアクセスするにつれ、リージョンは、リージョン内のユーザーによるゲーミング対話性の増加に遭遇する場合がある。ゲーミング対話性が高まると、リージョン内の各ユーザーはオンラインゲームの独自の視点を与えられなければならないので、リージョンで生成される(本明細書ではゲームデータとも呼ばれる)ゲームビデオデータの増加が生じる。
ユーザーはプレーヤまたは観客である場合がある。プレーヤのためのゲームデータは、そのプレーヤのオンラインゲームのゲーム状態を含む。観客のために生成されるゲームデータは、オンラインゲームのリージョン内で観客がフォローしているプレーヤのオンラインゲームのゲーム状態を含む。いくつかの実施形態では、コンピュートは、それが処理できるプレーヤの数及び観客の数に対する別個の所定の制限を定義し得る。所定の制限は、ゲーミング世界内のリージョンまたは仮想ロケーションにアクセスしているプレーヤのタイプ(例えば、専門家レベルプレーヤ、中級レベルプレーヤ、または初心者レベルプレーヤ)に特有のものであってもよい。そのような実施形態では、ユーザー位置トラッカ105は、ゲーミング世界の特定の仮想ロケーションのリージョンにアクセスしている各タイプのユーザーのタイプ及び数を判定し、オンラインゲームに割り当てられたコンピュートを評価するために、及びオンラインゲームに割り当てられるコンピュートがリージョン内のユーザーの数に対処するように構成されているかどうかを判断するためにロケーション負荷アナライザ107に信号を生成し得る。
【0035】
いくつかの実施形態では、オンラインゲームは、対応する仮想ロケーションのユーザーによって生成されたゲーミング対話性を処理するために、別個のコンピュートがオンラインゲームのゲーミング世界で識別された各仮想ロケーションのユーザーに割り当てられるように、複数のコンピュートを割り当てられ得る。オンラインゲームに割り当てられる各コンピュートは、コンピュートが処理できるユーザーの数に対して所定の制限を有する場合がある。上述のように、各コンピュートは、オンラインゲームにアクセスしている各タイプのユーザーに対して所定の制限を有する場合がある。ユーザー位置トラッカ105からの信号に応じて、ロケーション負荷アナライザ107は、ユーザーのタイプ及びリージョン内の各タイプのユーザーの数を評価する。各タイプのユーザーの数が対応する所定の制限を超えると、ロケーション負荷アナライザ107は、リージョンのコンピュートを調整するためにコンピュートアロケータ109とインタラクションを行う。
【0036】
コンピュートアロケータ109は、ロケーション負荷アナライザ107によって交換された情報に基づいて、ゲーミング世界の各仮想ロケーションに割り当てられたコンピュート(複数可)の機能を判定し、特定の仮想ロケーションのリージョンに割り当てるための追加のコンピュートを識別する。コンピュートアロケータ109は識別された追加のコンピュートを動的にプロビジョニングし、その結果、コンピュート及び追加のコンピュートは、特定の仮想ロケーションのリージョンでのゲーミング対話性を処理することができる。
コンピュートアロケータ109は、既存のコンピュート(複数可)などに対する追加のCPUコアなどのマイクロレベルで、または特定の仮想ロケーションへの追加の1つ以上のサーバ(つまり、コンピュート)などのマクロレベルで追加のコンピュートをプロビジョニングし得る。追加のコンピュートの割り当てあるいはアロケーションは、追加のコンピュートが、リージョン内で生成されたゲーミング対話性の処理に対処することができるように、特定の仮想ロケーションのリージョン内のユーザーの特定のユーザーのゲーミング対話性を追加のコンピュートへ移行させることを含む。特定の仮想ロケーションでユーザーに割り当てられたコンピュート及び追加のコンピュートは連携して、リージョンでの及び特定の仮想ロケーションでのゲーミング対話性を処理し、特定の仮想ロケーション内のユーザーの各々にゲームデータを生成する。
【0037】
オンラインゲームでのユーザーのゲーミング対話性から生じる処理負荷を処理するために追加のコンピュートをオンラインゲームに割り当てた後、分散型ゲームエンジンは、ゲーミング世界の中のユーザーの移動を連続的に監視するために、及びオンラインゲームに割り当てられたコンピュートを管理するために、動的コンピュートリージョンマネージャ120を使用する。監視した結果、オンラインゲームに割り当てられたコンピュートが調整される場合がある。例えば、ゲームプレイ中、仮想ロケーションでのゲーミング対話性の量は、仮想ロケーションの中もしくは外へのユーザーの移動によって、または仮想ロケーション内のもしくは2つの異なる仮想ロケーション内の任意の2人のユーザー間のインタラクションの増加などによって影響を受ける場合がある。
コンピュートリージョンマネージャ120は、ゲーミング世界で識別された異なる仮想ロケーション内でのユーザーの移動及びゲーミング対話性を追跡し、異なる仮想ロケーションでのユーザーの数、ユーザーのゲーミング対話性を評価し、オンラインゲームの異なる各々の仮想ロケーションでのユーザーのゲーミング対話性を処理するために割り当てられたコンピュートを拡大または縮小することによって、オンラインゲームに割り当てられたコンピュート(複数可)を動的に調整する。
【0038】
いくらかのユーザーが、所与のときに仮想ロケーション内の特定のリージョンにアクセスすると、ユーザーの数は、仮想ロケーションでのユーザーのゲーミング対話性を処理するために割り当てられたコンピュートに定義された所定の制限に対して検証される。特定のリージョン内のユーザーの数が、仮想ロケーションに割り当てられた1つ以上のコンピュートの能力を超えていると判断されると、コンピュートリージョンマネージャ120は、いくつかの実施形態で、特定のリージョンを複数のサブリージョンに分割する。
各サブリージョンは、サブ境界によって画定される。作成されたサブリージョンの数は、特定のリージョンに存在する各タイプのユーザーのタイプ及び数に基づいている。いくつかの実施形態では、ユーザーのタイプ(例えば、プレーヤまたは観客)及び各タイプのユーザーの数を識別する細分化基準は、特定のリージョン内で作成するためのサブリージョンの数を決定する際に使用され得る。リージョン内で作成されるサブリージョンは、等しいサイズである場合もあれば、異なるサイズである場合もある。サブリージョンの各々は、リージョンからの少なくとも1人のユーザーを含む。
【0039】
図4A図4Cは、サブリージョンが、ゲーミング世界で識別された仮想ロケーションのリージョン内でどのように画定され得るのかの様々なシナリオを示す。上述したように、仮想ロケーションは、各々を複数のサブリージョンに細分化できるリージョンを含み得、サブリージョンの数は、仮想ロケーションの特定のリージョンでのユーザーの密度に基づいている。ユーザーがゲームプレイのためにオンラインゲームを選択すると、ユーザーは、オンラインゲームに定義されたゲーミング世界の仮想ロケーションへのアクセスを与えられる。
ユーザーがゲーミング世界で動き回るにつれ、多くのユーザーが、所与のときに特定の仮想ロケーション内の特定のリージョンに入る場合がある。特定のリージョンは、特定の仮想ロケーションの一部分として画定される。特定のリージョン内のユーザーの数が、オンラインゲームに割り当てられたコンピュートに定められた所定の制限を超えると、リージョンは複数のサブリージョンに分割され、各リージョンは、特定の仮想ロケーションの特定のリージョンでの処理負荷を分散させるように別個のコンピュートを割り当てられる。
特定の仮想ロケーションに割り当てられたコンピュートに対する処理負荷は、特定の仮想ロケーションのユーザーが提供するゲーミング対話性の量に対応する。サブリージョンの数は、リージョン内のユーザーの密度に基づいている。いくつかの実施形態では、サブリージョンは、リージョン内でのユーザーの分布に基づいてリージョンの全領域をカバーし得る。代替の実施形態では、サブリージョンは、リージョン内でのユーザーの分布に基づいてリージョンの一部分だけしかカバーしない場合がある。
【0040】
図4Aは、特定の仮想ロケーション、つまりロケーション1の一部分を表すリージョン、つまりリージョンAが所与のときに多くのユーザーによってアクセスされる1つの表現を示す。リージョンAのユーザーの数は、ロケーション1のユーザーのゲーミング対話性を処理するために割り当てられたコンピュートの所定の制限を超えると判断される。その結果、リージョンAは、4つの異なるサブリージョン-サブリージョンA1、A2、A3、及びA4に細分化される。図4Aの例示的な図では、サブリージョンの数は、仮想ロケーション1のユーザーの数に基づく。
サブリージョンは等しいサイズであり、サブリージョンの各々は、リージョンAからの1人以上のユーザーを含む。サブリージョンの各々のユーザーの数は、同じである場合もあれば、同じではない場合もある。各サブリージョン内のユーザーは、オンラインゲームのプレーヤ及び/または観客を含む。ユーザーが、オンラインゲームのゲーム状態に影響を与えるためにゲーミンングインタラクティビティ(つまり、ユーザー入力)を提供していない観客であっても、プレーヤをフォローする観客の各々は、対応するプレーヤのオンラインゲームの視点を提示されなければならない場合があることに留意されたい。代わりに、観客の各々は、一般的なオンラインゲームの全体的な流れをフォローする場合があり、ゲーミング世界のビューを提供され得る。
【0041】
作成された各サブリージョンは、対応するサブリージョン内の各ユーザーにゲームデータを提供するためにサブリージョン内で生成されたゲーミング対話性を処理するために別個のコンピュート(複数可)を割り当てられる。
例えば、サブリージョンA1はCPU1を割り当てられ、サブリージョンA2はCPU2を割り当てられ、サブリージョンA3はCPU3を割り当てられ、サブリージョンA4はCPU4を割り当てられ、それぞれサブリージョンA1、A2、A3、及びA4に割り当てられたコンピュート(CPU1、CPU2、CPU3、及びCPU4)の各々は、それぞれのサブリージョンで生成されるゲーミング対話性から生じる処理負荷を処理するために利用可能なリソースに基づいて識別される。
図4Aに示す例では、各サブリージョンは1つのコンピュートを割り当てられる。他の例では、各サブリージョンは、その中で生成される処理負荷を処理するために複数のコンピュートを割り当てられ得る。
【0042】
図4Bは、仮想ロケーション1が、複数のリージョン、つまりリージョンA~Cを含み、各リージョンの中で生成されたゲーミング対話性を処理するために、各リージョンに別個のコンピュート(それぞれCPU1~3)が割り当てられる。仮想ロケーション1内の他のリージョンから、またはゲーミング世界の他の仮想ロケーションからの多くのユーザーが、所与のときに仮想ロケーション1のリージョンAにアクセスすると、リージョンAは、リージョンAにアクセスするユーザーの量に基づいて複数のサブリージョンに分割される。
各サブリージョンは、リージョンAの1人以上のユーザーを含み、それぞれのサブリージョン内の処理負荷を処理するために別個のコンピュートを割り当てられる。仮想ロケーション1内で生成されたサブリージョンの数は、単に例にすぎず、そのより少ないまたはより多い数のサブリージョンが、仮想ロケーション1内で生成され得る。
図4B-1、図4B-2、及び図4B-3は、リージョンAを分割できる異なる方法を示す。例えば、図4B-1に示すように、リージョンAは、垂直軸に沿ってリージョンAを分割することによって3つの追加のサブリージョンA-1、A-2、及びA-3に分割される。図4B-2に示すように、リージョンAは、水平軸に沿ってリージョンAを分割することによって3つの追加のサブリージョンA’-1、A’-2、及びA’-3に分割される。図4B-3は、リージョンAが6つのサブリージョン(A’’-1~A’’-6)に細分化される例を示す。リージョンAの分割から作成されるサブリージョンの数は、リージョンA内のユーザーの量に基づいて変わる場合がある。
【0043】
図4B-1、図4B-2、及び図4B-3に示す例では、リージョンAを分割することによって作成されるサブリージョンは、サイズが等しく、サブリージョンの各々は、リージョンAの1人以上のユーザーを含む。図4B-1~図4B-3は、仮想ロケーション内のリージョンがサブリージョンに分割されるときの例を示す。同じ例は、仮想ロケーションまたは仮想ロケーションのリージョン内に画定されたサブリージョンを分割することに拡張することができる。
サブリージョンの数及びリージョンを分割する方向は、単なる例として提供され、その各リージョンは、垂直に、水平に、斜めに、または任意の他の方法でより少ないまたはより多い数のサブリージョンに細分化され得、サブリージョンの数は、ユーザーの密度、及びリージョンに割り当てられたコンピュートの所定の制限に基づいている。新規に作成されたサブリージョンの各々は、リージョンAに割り当てられたコンピュートとは別個である別のコンピュートを割り当てられる。
例えば、図4B-1では、リージョンA内で作成されたサブリージョンA-1~A-3は、それぞれCPU4~6を割り当てられ、CPU1~3は、仮想ロケーション1で作成されたリージョンA~Cに割り当てられる(図4Bを参照)。同様に、図4B-2では、サブリージョンA’-1~A’-3は、それぞれCPU4~6を割り当てられ、図4B-3では、サブリージョンA’’-1~A’’-6は、それぞれCPU4~9を割り当てられる。
【0044】
図4B-1、図4B-2、及び図4B-3に示される例示的なシナリオでは、リージョンAに割り当てられたコンピュートは、リージョンA内で作成されたすべてのサブリージョン(図4B-1のサブリージョンA-1~A-3、図4B-2のサブリージョンA’-1~A’-3、または図4B-3のサブリージョンA’’-1~A’’-6)のゲーミング対話性の処理を調整し得る。
他の実施形態では、リージョンA内の各サブリージョンは、1人以上のユーザーによって対応するサブリージョンで生成されたゲーミング対話性を処理するために別個のコンピュートを割り当てられ、リージョンA内のサブリージョンの1つに割り当てられたコンピュートは、リージョンAのサブリージョン内のゲーミング対話性の処理を調整し得る。調整は、リージョンA内の異なるコンピュートの入力と出力を管理すること、及びリージョンAに割り当てられたコンピュートに調整するコンピュートの出力を提供することを含む。上述したように、仮想ロケーション内で及び仮想ロケーションのサブリージョン内で作成されるリージョンの数、ならびに作成された各サブリージョンに割り当てられたコンピュートの数は、例として提供され、限定的なもの見なされるべきではない。
【0045】
代替の実施形態では、ゲームプレイ中にリージョンまたはサブリージョンの特定の一部分にアクセスしているユーザーの数に基づいて、サブリージョンは、仮想ロケーションのリージョンの特定の一部分内で作成される場合もあれば、追加のサブリージョンが、サブリージョンの特定の一部分内で作成される場合もある。図4Cは1つのそのような実施形態を示し、仮想ロケーション1内で識別されたリージョンAの一部分は、リージョンAのその部分でのユーザーの密度に基づいて、それぞれ3つの追加のサブリージョンA’’’-1~A’’’-3にさらに分割される。
本実施形態では、リージョンAの残りの部分は、第4のサブリージョンA’’’-4と見なされる。3つのサブリージョンA’’’-1~A’’’-3は、等しいサイズであり、第4のサブリージョンA’’’-4は、リージョンAの一部分内で作成された3つのサブリージョンとはサイズが異なる。図4Cに示す例では、サブリージョンA’’’-1~A’’’-3の各々は、リージョンAの1人以上のユーザーを含み、一方、サブリージョンA’’’-4は、リージョンAからの任意のユーザーを含む場合もあれば、含まない場合もある。これは、リージョンAのユーザーがすべて、サブリージョンが作成されたリージョンAの一部分にアクセスしており、一方、リージョンAの残りの部分にはユーザーがいない場合である場合がある。
ゲームが進むにつれ、1人以上のユーザーが、サブリージョンA’’’-1~A’’’-3の1つ以上から、または特定の仮想ロケーションの他のリージョンから、または他の仮想ロケーションからサブリージョンA’’’-4の中に入る場合がある。結果として、サブリージョンを作成すると、サブリージョンA’’’-1~A’’’-4の各々は、一実施形態で、別個のコンピュート(それぞれ、CPU4~7)を割り当てられる。
他の実施形態では、サブリージョンA’’’-1~A’’’-3の各々は、別個のコンピュート(CPU4~6)を割り当てられ、一方、サブリージョンA’’’-4は、リージョンAのコンピュート(CPU3)を割り当てられる。図4Cに示す例は、1つのコンピュートがサブリージョンA’’’-1~A’’’-4の各々に割り当てられていることを示すが、各サブリージョンで検出される処理負荷に応じて、サブリージョンの各々に割り当てられる複数のコンピュートがあるであろう。
【0046】
仮想ロケーション1のリージョンAのサブリージョンA内で作成されたサブリージョンの各々に1つ以上のコンピュートを割り当てると、コンピュートリージョンマネージャ120は、リージョンA内のユーザーの各々の関連するゲーミング対話性を、新規に作成されたサブリージョンに割り当てられたコンピュートのそれぞれのコンピュートに移行させる。リージョン、サブリージョンを生成し、異なる仮想ロケーション、リージョン、及びサブリージョンにコンピュートを割り当てることによって仮想ロケーションを管理するプロセスは、ユーザーが1つ以上のリージョンまたは仮想ロケーションにアクセスし続け、オンラインゲームのゲーミング対話性に関与する限り続行し、その結果十分なリソースが、ゲーミング対話性を処理するためにオンラインゲームにプロビジョニングされる。
【0047】
ゲームコンコンテキストプロセッサ111は、入力として、ロケーション負荷アナライザ107から、異なる仮想ロケーションに割り当てられたコンピュートの処理負荷情報(つまり、ゲーミング対話性の量)を受け取り、コンピュートリージョンマネージャ120から、仮想ロケーションの1つ以上内で作成された特定のリージョンまたはサブリージョンにアクセスするユーザーに関連する情報を含むゲーミング世界でのユーザーの移動を受け取り、その情報を使用して、各ユーザーのゲーミング対話性の処理を最適化し、ユーザーにゲームデータを生成する。
ゲームデータの最適化は、各ユーザーに対するデータの重大性に基づいて、異なるユーザーによって、各ユーザーのゲーミング対話性の異なる部分について提供されるゲーミング対話性の処理シーケンスを決定すること、及び各ユーザーのゲーミング対話性を表すユーザー入力を相応して処理することを含み得る。処理シーケンスによって、各ユーザーのユーザー入力のいくつかの部分を最初に処理し、残りの部分を後に処理することが可能になる。各ユーザーのユーザー入力のいくつかの部分だけがただちに処理される必要があるので、ゲーミング対話性の処理を最適化することは、コンピュートに対するストレスを削減するのに役立つ。
ゲーミング対話性及びユーザー入力が、オンラインゲームのゲームプレイ中にユーザーによって提供される入力を参照するために、本願では互換的に使用されることに留意されたい。プレーヤによって提供される入力は、プレーヤのためにゲームのゲーム状態を制御するためであってよく、一方、観客によって提供される入力は、観客がどのプレーヤのゲームプレイのフォローを希望するのかを制御するためであってよい。
【0048】
例えば、3つのリージョンが仮想ロケーションで識別された仮想ロケーションを考慮すると、第1のリージョンのユーザーの第1のセットは、ゲーミング世界の右側に面している、または右側から近づいており、右側に及び第1のリージョンにすぐ隣接して配置された第2のリージョンのユーザーまたはゲームオブジェクトの第2のセットを見ている/それらとインタラクションを行っている場合がある。同様に、第2のリージョンのユーザーの第2のセットは、ゲーミング世界の左側に面しているまたは左側から近づいており、第2のリージョンの左側に配置された第1のリージョン内のユーザーまたはゲームオブジェクトの第1のセットを見ている/第1のセットとインタラクションを行っている場合がある。
この状況では、第1のリージョンのユーザーの第1のセットのゲーミング対話性を処理するための処理シーケンスは、ユーザーの第1のセットの右側に向けられた対話性の部分(つまり、第1のサブリージョンのユーザーが面している方向に関連するゲームデータ)が第1に処理され、ユーザーの第1のセットの左側に向けられた対話性(つまり、第1のサブリージョンのユーザーが面している方向とは反対である方向に関連するゲームデータ)が第2にまたは後に処理されるように定義される。
これは、第1のサブリージョンのユーザーの第1のセットが、自分の左側(つまり、彼らの後方である方向-彼らが面している方向とは反対方向で)よりも自分の右側で(つまり、彼らが面している方向で)起こっていることにより関心があるためである。各ユーザーの対話性の処理のシーケンスは、対応するユーザーのビューの視野に基づいてよい。
【0049】
同様に、第2のリージョンのユーザーの第2のセットの対話性を処理するための処理シーケンスは、ユーザーの第2のセットの左側に向けられた対話性(つまり、ユーザーが面している方向に関連するゲームデータ)が先に処理され、ユーザーの第2のセットの右側に向けられた対話性(つまり、ユーザーが面している方向に反対である方向に関連したゲームデータ)が後に処理されるように定義される。
他の形態では、処理シーケンスは、対話性と関連するタイミングに基づいてもよい。例えば、リージョンAの第1のユーザーは、リージョンBの第2のユーザーに向けて発砲し、結果として第2のユーザーは負傷する。これに応じて、リージョンBの第3のユーザーは、リージョンAの第1のユーザーまたは第4のユーザーに向けて発砲し、結果として第1のユーザーまたは第4のユーザーは負傷する。ゲームコンテキストプロセッサ111は、各ユーザーの活動のタイミングを使用し、オンラインゲームのゲーム状態に到達するために、相応して異なるユーザーの対話性を処理することによってどの対話性が最初に処理される必要があるのかを判断し、その結果、ユーザーの各々(第1のユーザー、第2のユーザー、第3のユーザー、及び第4のユーザー)に、ユーザーにとって適切であるゲームデータを提示することができる。
コンピュートリージョンマネージャは、異なる仮想ロケーション及び1つ以上の仮想ロケーション内の異なるリージョン、サブリージョンに位置するユーザーからの入力(対話性)を管理し、異なる仮想ロケーションと、1つ以上の仮想ロケーション内のリージョンと、サブリージョンとの間でゲーム状態を共有する。コンピュートリージョンマネージャ120からの情報は、仮想ロケーション内の異なるサブリージョンに、及び/または異なる仮想ロケーションにユーザーを割り当てるために使用される。コンピュートリージョンマネージャによって生成される各ユーザーのゲーム状態を含むゲームデータは、レンダリングのためにユーザーのそれぞれのクライアントデバイスに転送される。
【0050】
図3Aは、一実施形態で、オンラインゲームのためのリソースをプロビジョニングする際に使用されるコンポーネントのいくつかを示す。分散型ゲームエンジン100は、複数のユーザーのユーザー入力を処理して、各ユーザーにゲームデータを生成し、ゲーミング世界内のユーザーの仮想ロケーションを識別し、ユーザーが所与のときにいつ特定の仮想ロケーション内のリージョンにアクセスするのかを検出し、対応して、リージョン内のユーザーのゲーミング対話性をタイムリに処理できるようにコンピュートリソースをリージョンにプロビジョニングするために使用される複数のコンポーネントを含む。
複数のユーザーが、ゲームプレイのためにゲームクラウドシステム上で実行しているMMOゲームなどのオンラインゲームにアクセスすると、分散型ゲームエンジン100は、ユーザーがオンラインゲームを進めるにつれユーザーをフォローするためにユーザー位置トラッカ105を使用する。ゲーミング対話性を通して提供されたユーザーの入力は、それぞれのユーザーにゲームデータを生成するために使用される。
オンラインゲームの仮想ロケーションは、オンラインゲームの特定のレベルのゲームオブジェクト及び課題を含むゲーミング世界内のリージョンとして定義され得る。例えば、銀河間宇宙ゲームでは、仮想ロケーションは、惑星、星、小惑星、宇宙船などの天文学的なオブジェクトによってカバーされる領域などの銀河系内の領域、またはユーザーがアクセスできる任意の2つの天文学的オブジェクト間の空間として定義され得る。同様に、世界を対象とする国家間の戦争ゲームでは、仮想ロケーションは、国または大陸として定義され得、リージョンは、国内の州または都市または山または川またはダムなどとして定義され得る。
【0051】
ユーザーがゲームプレイのためにオンラインゲームを選択すると、ユーザーは、オンラインゲームのゲーミング世界内の1つ以上の仮想ロケーションへのアクセスを与えられる。ユーザー位置トラッカ105は、ゲームプレイでの各ユーザーの現在の仮想ロケーションを識別するために使用される。ユーザー位置トラッカ105によって提供される情報は、多くのユーザーがいつ特定の仮想ロケーション内のリージョンにアクセスするのかを決定するために使用され得る。複数のユーザーは、ゲームプレイの課題を克服しようと試みながら、所与のときに特定の仮想ロケーションのリージョン内で集まった可能性がある。リージョン内のユーザーの数は、リージョン内のユーザー入力(つまり、ゲーミンングインタラクティビティ)の増加、結果としてリージョン内で生成されるゲームデータの増加を引き起こし得る。
【0052】
ゲーミング世界内の各仮想ロケーションのユーザーは、そのゲーミング対話性を処理するために、及び各ユーザーにゲームデータを生成するために少なくとも1つのコンピュートを割り当てられる。いくつかの実施形態では、各コンピュートは、それが処理できるユーザーの数に対して所定の制限を有する場合がある。ロケーション負荷アナライザ107は、仮想ロケーションのリージョンにアクセスするユーザーの数が、仮想ロケーションに割り当てられたコンピュートによって処理できるのか、それともコンピュートの所定の制限を超えているかどうかを判断するために使用される。ユーザー数がコンピュートの容量を超えると、ロケーション負荷アナライザ107は、コンピュートアロケータ109に、追加のコンピュートをプロビジョニングして、既存のコンピュートが仮想ロケーション内のゲーミング対話性を処理するのを支援するように信号を送る。
コンピュートアロケータ109は、ゲーミング対話性の増加が、既存のコンピュートのコンピューティングリソースを単に増加させることによって処理できるのか、それとも仮想ロケーションに新しいコンピュートを割り当てる必要があるのかを判断する。判断に基づいて、コンピュートアロケータは、既存のコンピュートに追加リソースをプロビジョニングするか、または動的リージョン作成エンジン121に、仮想ロケーションに追加のコンピュートを提供するように信号を送るかのどちらかである。
【0053】
動的リージョン作成エンジン121は、プレイされているゲームのタイプ(例えば、グラフィック重視またはコンピュート重視)、ゲーミング世界の特定の仮想ロケーション内のリージョンにアクセスしたユーザーのタイプ(例えば、高レベルプレーヤ、中級レベルプレーヤ、初心者レベルプレーヤ、または観客)を分析し、オンラインゲームに割り当てられた既存のコンピュートが、仮想ロケーションのリージョンにアクセスしているユーザーの数を処理するために十分であるかどうかを判断する。
オンラインゲームに割り当てられた各コンピュートは、それが処理できるユーザーの数に対して所定の制限を有する場合があり、この所定の制限は、コンピュートで利用できるリソースのタイプ及び量に基づいてよい。オンラインゲームをプレイしている複数のユーザーの各々にゲームデータを提供するのを支援するために、1つ以上のコンピュートが、1人以上のユーザーが存在するゲーミング世界の各仮想ロケーションに提供され得る。分析に基づいて、特定の仮想ロケーション内のリージョン内のユーザーの数が、割り当てられたコンピュートの所定の制限を超えると、動的リージョン作成エンジン121は、特定の仮想ロケーションのリージョンを複数のサブリージョンに分割し得る。
各サブリージョンは、リージョンの少なくとも1人のユーザーが存在する境界によって画定される。動的リージョン作成エンジン121は、次にコンピュートアロケータ109とインタラクションを行って、追加のコンピュートをリージョンに割り当て、リージョンのゲーミング対話性の処理を支援する。いくつかの実施形態では、各サブリージョンは、サブリージョン内のユーザー(複数可)のゲーミング対話性を処理するために、及び対応するサブリージョン内の各ユーザーにゲームデータを生成するために、別個の1つ以上のコンピュートを割り当てられる。
各ユーザーのゲームデータは、ユーザーによって提供される対話性に基づいて、ユーザーのオンラインゲームのゲーム状態を含む。サブリージョンによって割り当てられたコンピュートによって生成されるゲームデータは、サブリージョンのコンピュートの1つによって、またはリージョンもしくは特定の仮想ロケーションに割り当てられたコンピュートによってアセンブルされる。アセンブルされたゲームデータは、オンラインゲームのゲーム状態を生成するために使用される。ゲーム状態コーディネータ121aは、異なるコンピュートのゲームデータを調整するために、及びオンラインゲームのゲーム状態を生成するために動的リージョン作成エンジン121によって使用される。
【0054】
ゲーム状態情報及びユーザー位置情報は、動的リージョン作成エンジン121によってユーザーリージョン割り当てマネージャ125に転送される。ユーザーリージョン割り当てマネージャ125は、オンラインゲームのためにユーザーの現在位置をローカルに記憶し、位置情報をユーザーデータ移行エージェント127と共有する。ユーザーデータ移行エージェント127は、ユーザーの各々の位置情報を使用して、各ユーザーに提供する必要があるゲームデータのシーケンスを決定し、ゲームデータのフレームをそれぞれのクライアントデバイスに相応して転送する。ゲームデータのシーケンスは、ゲームコンテキストプロセッサ111によって決定される。
【0055】
各仮想ロケーション内のユーザーの入力は、オンラインゲームの現在のコンテキスト及び各ユーザーのゲームデータの処理シーケンスを決定することによってゲームコンテキストプロセッサ111によって処理される。例えば、各ユーザーの処理シーケンスは、各ユーザーのビューの視野、ゲームデータの異なる部分の重大性、ゲームデータと関連するタイミングなどに基づいて、データプライオリタイザ111aによって決定され得る。データプライオリタイザ111aは、各ユーザーがゲームプレイ中に向いている方向及び/またはユーザーがオンラインゲーム内で進んでいる方向を調べることによって各ユーザーのビューの視野を決定し得る。
ユーザーがゲーミング世界の左側から右側に進んでいる場合、ビューの視野は、ユーザーがゲーミング世界で向いている側(つまり、右側)であるであろう。その結果、ユーザーの右側のゲーミング世界に関連するゲームデータは、ユーザーが右側に向いている間、ユーザーの後方に(つまり、ゲーミング世界の左側に)あるゲーミング世界よりもより高い優先順位を与えられるであろう。右側での課題を克服後、ユーザーがゲーミング世界の左側の課題に取り組むために跳ね回る場合、ユーザーのビューの視野であるゲーミング世界の左側は、ユーザーが左側を向いている時間の間、より高い優先順位を与えられ、同時にユーザーの後方であるゲーミング世界の右側はより低い優先順位を与えられる。
ゲームコンテキストプロセッサ111は、データプライオリタイザ111aによって提供される処理シーケンス情報を使用し、各ユーザーのゲーミング対話性を処理する。オンラインゲームが、任意の所与のときに複数のプレーヤ(つまり、数百人のまたは数千人のプレーヤ)から入力を受け取ると、各ユーザーのゲーミング対話性に優先順位を付け、ゲーミング対話性の部分を処理することによって、仮想ロケーションに割り当てられた各コンピュートが生成しているゲームデータの量は削減され、それによってユーザーがタイムリに適切なゲームデータを提示されて自分のゲームプレイ体験を豊かにすることを確実にしつつ、割り当てられた処理リソースが効率的に利用される。
【0056】
各ユーザーの処理されたゲームデータは、各ユーザーのゲームデータをアセンブルし、ゲームデータを符号化し、ゲームデータのフレームをユーザーのそれぞれのクライアントデバイスにストリーミングするためにユーザーデータ移行エージェント127に転送される。各ユーザーのゲームデータは、ユーザー移行エージェント127で受け取られ、アセンブルされ、ユーザーごとに決定された処理シーケンスに従って送信される。また、処理されたゲームデータは、オンラインゲームのユーザーメトリックとゲームデータメトリックを決定するためにデータストア260に格納され、これはユーザーを分類するために、及びオンラインゲームに割り当てる必要のあるコンピュートのタイプを決定するために使用できる。
ユーザーがオンラインゲームとインタラクションし続けると、より多くのユーザーが特定の仮想ロケーション内のリージョンの中に移動する場合もあれば、既存のユーザーが特定の仮想ロケーションのリージョンから移動する場合もある。動的リージョン作成エンジン121及びゲームコンテキストプロセッサ111は連携して、各仮想ロケーション及び所与の仮想ロケーション内の各サブリージョン内のユーザーのゲーム対話性を処理するために割り当てられたコンピュートが、オンラインゲームの処理負荷を処理するために十分なリソースを有することを確実にする。
【0057】
図3Bは、代替の実施形態で、オンラインゲームのゲーミング世界内でのユーザーの仮想ロケーションを追跡し、ゲーミング世界内の仮想ロケーションに割り当てられたコンピュートを管理し、ユーザーのゲームデータを異なるコンピュートに移行させるために使用される分散型ゲームエンジン100のコンピュートリージョンマネージャ120の様々なコンポーネントを示す。
本実施形態では、動的リージョン作成エンジン121は、サブリージョンを生成することによって、及びオンラインゲームの異なる仮想ロケーションのためのコンピュート/コンピューティングリソースをスピンアップまたはスピンダウンさせるために信号を生成することによって、オンラインゲーム内のユーザーのゲーミング対話性の処理を調整するために、コンピュートリージョンマネージャ120内の追加のコンポーネントとインタラクションを行い得る。
コンピュートリージョンマネージャ120内のコンポーネントのいくつかは、例を挙げると、動的リージョン作成エンジン121、リージョン境界コーディネータ123、ユーザーリージョン割り当てマネージャ125、ユーザーデータ移行エージェント127、データシンクロナイザ129、及びスピンアップ/スピンオフディレクタ131を含む。
【0058】
分散型ゲームエンジンは、複数のユーザーから受け取ったゲーミング対話性を処理するMMOゲーム(つまり、オンラインゲーム)のゲームロジックを実行し、オンラインゲームのゲームデータを生成する。オンラインゲームが、様々なジオロケーションにわたって分布する複数のユーザーによってアクセスされると、分散型ゲームエンジン及びゲームロジックのインスタンスは、ゲームクラウドシステム内の複数のサーバで実行され、インターネットなどのネットワーク200を介してユーザーによってアクセスされる。分散型ゲームエンジン内のユーザー位置トラッカ105は、オンラインゲームのゲーミング世界の仮想ロケーションを用いてユーザーの移動を監視するために使用される。
ユーザーは、ゲームオブジェクトまたはアバターを使用し、ゲーミング世界の仮想ロケーション内で識別され得る。異なる仮想ロケーションは、異なるレベルのゲームプレイに対して定義され得、ユーザーは、ゲームプレイのレベル及びオンラインゲーム内でなされた進捗に基づいて異なる仮想ロケーションで識別され得る。ユーザー位置トラッカ105は、オンラインゲームのユーザーの各々の仮想ロケーションを決定するために、及び多くのユーザーがいつゲーミング世界の1つの仮想ロケーション内のリージョンにアクセスするのかを検出するために、ゲームプレイ中に生成されたゲームデータを分析し得る。
【0059】
特定の仮想ロケーションのリージョンで多くのユーザーを検出すると、分散型ゲームエンジン100のロケーション負荷アナライザ107は、リージョン内のユーザーの数が、ゲーミング世界で識別された仮想ロケーション内で生成された対話性を処理するために割り当てられたコンピュートのために定義された所定の制限を超えるかどうかを判断するために使用される。各ユーザーがゲームプレイ中にゲーミング世界内で動き回ると、特定の仮想ロケーションのリージョンにアクセスするユーザーの数は変わる場合がある。結果として、ロケーション負荷アナライザ107は、ユーザーの数が、特定の仮想ロケーションに割り当てられたコンピュートの所定の制限を超えているかどうかを判断するために、特定の仮想ロケーションのリージョンに存在するユーザーの数を絶えず監視する。
【0060】
ロケーション負荷アナライザ107及びユーザー位置トラック105からの情報は、特定の仮想ロケーションでゲームデータ処理負荷を処理するために必要とされるコンピュートの量を決定するために、コンピュートアロケータ109によって使用される。また、コンピュートアロケータ109は、ゲーミング世界で識別された異なる仮想ロケーションで生成されたゲームデータを処理するためにオンラインゲームにすでに割り当てられているコンピュートのタイプ及び量を決定してもよい。
すでに割り当てられたコンピュートの量とオンラインゲームに必要とされるコンピュートの量、及びゲームプレイ中の所与のときにリージョンにアクセスするユーザーの数に関連する情報を使用し、コンピュートアロケータは、オンラインゲームに割り当てられたコンピュートが、仮想ロケーションのリージョン、したがってオンラインゲームの対話性を処理するために十分であるのか、またはオンラインゲームに割り当てられたコンピュートに対してならかの調整を加える必要があるのかを判断し得る。
例えば、現在割り当てられているコンピュートは、特定の仮想ロケーションのリージョンに集まってきた多くのユーザーの対話性を処理するために十分ではない場合があり、特定の仮想ロケーションでの多くのユーザーの対話性を処理するために追加のコンピュートを割り当てる必要がある場合がある。そのような状況では、ロケーション負荷アナライザ107は、コンピュートリージョンマネージャ120内の動的リージョン作成エンジン121に信号を送信して、追加のコンピュートを特定の仮想ロケーションに割り当て得る。
【0061】
代わりに、オンラインゲームの特定の仮想ロケーションに現在割り当てられているコンピュートは、リージョンに集まってきたユーザーの数を処理するために必要とされることを超えている場合がある。結果として、仮想ロケーションに割り当てられたコンピュートの一部は、割り当て解除される必要があり、ユーザーの対話性は、オンラインゲームに割り当てられた他のコンピュートに移行される必要がある。ロケーション負荷アナライザ107は、コンピュートリージョンマネージャ120内の動的リージョン作成エンジン121に信号を送信して、追加のコンピュートを特定の仮想ロケーションに割り当て得る。ユーザー位置トラッカ105からのユーザー位置情報、コンピュートアロケータ109によって提供されるコンピュート情報、及びロケーション負荷アナライザ107によって提供されるロケーション負荷情報は、動的リージョン作成エンジン121と共有される。
【0062】
動的リージョン作成エンジン121は、オンラインゲームの特定の仮想ロケーションに割り当てられたコンピュートを調整するためにロケーション負荷アナライザ107からの信号を使用する。オンラインゲームは、複数のプレーヤ(つまり、ユーザー)がオンラインゲームにアクセスし、プレイしているMMOゲームであるので、プレーヤの各々は、独自の速度でオンラインゲームを進めている場合がある。
結果として、プレーヤの各々はオンラインゲームの異なる仮想ロケーションにいる場合がある。結果的に、異なるコンピュートが対応する仮想ロケーションでユーザーの対話性を処理することができるように異なるコンピュートがオンラインゲームに割り当てられる。多くのユーザーが特定の仮想ロケーション内の特定のリージョンにアクセスすると、割り当てられたコンピュートが処理できる場合もあれば、できない場合もあるリージョン内の対話性が増加する。
現在割り当てられているコンピュートが特定の仮想ロケーションのリージョン内の多くのユーザーを処理できない場合、動的リージョン作成エンジン121は、リージョンを複数のサブリージョンに分割し、各サブリージョンは、リージョンの少なくとも1人のユーザーを有する。各サブリージョンは、サブリージョンのユーザーが中に存在する境界を有するように画定される。動的リージョン作成エンジンは、次に追加のコンピュートをリージョンに割り当てるためにスピンアップ/スピンダウンディレクタ131とインタラクションする。いくつかの実施形態では、スピンアップ/スピンダウンディレクタ131は、マイクロレベルまたはマクロレベルで追加のコンピュートを割り当て得る。
【0063】
ユーザーはプレーヤまたは観客である可能性がある。プレーヤは、初心者、中級者、または専門家のカテゴリにさらに分類され得る。同様に、観客は、オンラインゲームの一般的なゲームプレイをフォローする観客、またはプレーヤのタイプ(専門家、中級レベル、または初心者)の1つをフォローする観客に分類され得る。動的リージョン作成エンジン121は、特定の仮想ロケーション内のリージョンに集まったユーザーの数が、特定の仮想ロケーションに割り当てられたコンピュートの所定の制限内にあるかどうかを判断し得る。
ユーザーの数が閾値パーセント(例えば、5%または10%)以内である所定の制限を超える場合、次に動的リージョン作成エンジン121は、マイクロレベルでコンピュートを調整するためにスピンアップ/スピンダウンディレクタ131に信号を送信し得る。しかしながら、特定の仮想ロケーションのリージョンのユーザーの数が閾値パーセントよりも大きく、コンピュートの所定の制限を超える場合、次に動的リージョン作成エンジン121は、マクロレベルでコンピュートを調整するためにスピンアップ/スピンダウンディレクタ131に信号を送信し得る。動的リージョン作成エンジン121は、オンラインゲームの特定の仮想ロケーションに割り当てられたコンピュートを調整するときにリージョンに集まったユーザータイプ及び各タイプのユーザーの数を決定し得ることに留意されたい。
【0064】
マイクロレベル調整は、一実施形態では、追加のコンピューティングリソースが特定の仮想ロケーションでゲームデータを処理するのを支援できるようにするために、追加のCPUコア、GPUが共有される場合CPU帯域幅、メモリ、または他のコンピューティングリソースコンポーネントを、既存のコンピュートに追加することを含み得る。上述のマイクロレベル調整は一例であり、他の形のマイクロレベル調整も実施され得る。
マクロレベル調整は、一実施形態では、特定の仮想ロケーションの中で生成されたゲームデータの処理を支援するために、追加のサーバまたはサーバのクラスタを特定の仮想ロケーションに追加することを含み得る。追加のサーバは、物理サーバ、ホストコンピューティングリソースを使用し、実行する仮想サーバ、コンテナサーバ、またはその任意の組み合わせであってよい。上述のマクロレベル調整は一例であり、他の形のマクロレベル調整も実施され得る。
【0065】
サブリージョンが作成されると、サブリージョンを画定するために使用される仮想サブ境界などのサブリージョンに関連する情報は、リージョン境界コーディネータ123と共有される。リージョン境界コーディネータ123は、特定の仮想ロケーションのリージョンで作成されたサブリージョンの各々でユーザーを識別し、管理するために、境界画定ロジック123a及びリージョンスティッチャ123bを作動させる。
境界画定ロジック123aは、リージョンスティッチャ123bとインタラクションすることによって、1人以上のユーザーが2つの連続するサブリージョンまたは2つの連続するリージョンまたは2つの連続する仮想ロケーションを分ける境界上に存在するかどうかを判断するために、リージョン内で作成されたサブリージョンを画定する境界、仮想ロケーション内のリージョンの境界、及びゲーミング世界内で識別された仮想ロケーションの境界を使用する。リージョンスティッチャ123bは、サブリージョン、リージョン、及び仮想ロケーション内の各ユーザーのゲーム状態をともに調整して、オンラインゲームのゲーミング世界のシームレスな仮想世界ビューを提供することによって、各リージョン内のサブリージョン、各仮想ロケーション内のリージョン、ゲーミング世界内の仮想ロケーションをスティッチあるいは繋ぐ。
ゲーミング世界のシームレスな仮想世界ビューからの情報は、任意のユーザーが、特定の仮想ロケーション内で作成された任意の2つのサブリージョン間の境界上に位置しているのか、それとも仮想ロケーション内の任意の2つの連続して画定されたリージョン間の境界上に位置しているのかを判断するために、リージョン境界コーディネータ123によって使用される。例えば、サブリージョンを作成している間、動的リージョン作成エンジン121は、リージョン内のユーザーの大部分が各サブリージョンの境界内に含まれるように、特定の仮想ロケーション内のリージョンを細分化しようと試みる。
しかしながら、ユーザーの1人以上が、2つの連続して画定されたサブリージョンを分ける境界の上にいる場合がある。結果的に、リージョン境界コーディネータ123は、任意の2つの連続するサブリージョン間の境界の上にいるそれらのユーザーを識別し、それぞれのサブリージョンに割り当てられたコンピュート間でそれらのユーザーのためにゲーム状態同期を調整し、その結果、境界上に存在するユーザーは、オンラインゲームの適切なゲーム状態を与えられる。
【0066】
リージョン境界コーディネータ123によって提供される仮想世界ビューからの情報は、ユーザーの各々が属するサブリージョン及び/または仮想ロケーションを識別し、ゲームプレイ中に使用するためにこの情報をローカルに格納するために、ユーザーリージョン割り当てマネージャ125によって使用される。ユーザーがゲーミング世界を動き回るにつれ、ユーザーのロケーションは絶えず変化し、各ユーザーに関連する変化は、変化が検出される限り、リージョン割り当てマネージャ125によって更新される。
また、ユーザーの現在位置は、ユーザーリージョン割り当てマネージャ125によって、ユーザーデータ移行エージェント127及びスピンアップ/スピンダウンディレクタ131と共有される。スピンアップ/スピンダウンディレクタ131は、ゲーミング世界内の各ユーザーの現在ロケーションを取得し、コンピュートアロケータ109に問い合わせることによって対応する仮想ロケーション/サブリージョンに割り当てられたコンピュートを識別し、各サブリージョンの追加コンピュートをスピンアップするためにコンピュートアロケータ109に信号を送信する。特定の仮想ロケーションにプロビジョニングされた追加のコンピュートは、各サブリージョン内のユーザーによって生成されたゲーミング対話性を処理するために、以前にプロビジョニングされたコンピュートとともに使用される。
【0067】
他の実施形態では、サブリージョン及び/または仮想ロケーションのいくつかは、それらを互いにマージして1つの洗練されたサブリージョン/仮想ロケーションを形成することによって再設定され得る。例えば、ゲーミング世界の特定の仮想ロケーション内のリージョンは、各サブリージョンが、サブリージョン内に存在するユーザーによって生成されたゲーミング対話性を処理するために別個のコンピュートを割り当てられた、複数のサブリージョンに細分化された可能性がある。ゲームプレイ中、第1のサブリージョン内にいた1人以上のユーザーが、第1のサブリージョンの中から第2のサブリージョンに、または別のリージョンもしくは別の仮想ロケーションに移動すると、第1のサブリージョンに割り当てられたコンピュートは、十分に利用されないまたはアイドル状態になる場合がある。
オンラインゲームに割り当てられたコンピューティングリソースを最適化するために、1つ以上のサブリージョンに割り当てられたコンピュートは、特定の仮想ロケーションの1つ以上のサブリージョンを再設定することによって再割り当てされてもよい。1つ以上のサブリージョンの再設定は、第1のサブリージョンを第2のサブリージョンとマージして、1つの結合されたサブリージョンを生成することを含み得、第1のサブリージョンに割り当てられたコンピュートは、結合されたサブリージョンに割り当てられ、第2のサブリージョンに割り当てられたコンピュートは、なんらかの他のサブリージョン、仮想ロケーションに、または別のオンラインゲームに再割り当てされる。
同様に、特定の仮想ロケーション内のリージョンが複数のサブリージョンに細分化され、サブリージョンのいくつかしかゲームプレイ中にユーザーを有さない場合、ユーザーを含むサブリージョンの1つに割り当てられたコンピュートがユーザーを含まないサブリージョンにも割り当てられるように、コンピュートが割り当てられる。例えば、図4Cに示す例では、1人以上のユーザーを含む3つの第1のサブリージョンの各々は、別個のコンピュートを割り当てられ、いずれのユーザーも含まない第4のサブリージョンは、仮想ロケーションのまたはサブリージョンの1つのコンピュートを割り当てられる。
【0068】
第1のサブリージョンからのユーザーの1人以上が第1のサブリージョンを出て第2のサブリージョンに移動すると、第2のサブリージョンに割り当てられたコンピュートは、1人以上のユーザーが第2のサブリージョンに移動したことから生じた余分な処理負荷を処理するために割り当てられ得る。第1のサブリージョンからのユーザーの移動のため、第1のコンピュートはアイドル状態になる、または十分に利用されなくなる場合がある。結果として、第1のコンピュートは、第1のサブリージョンを第2のサブリージョンとマージし、第2のコンピュートが、結合されたサブリージョンでゲーミング対話性から生じた処理負荷を処理できるようにすることによって、異なる仮想ロケーションまたはオンラインゲームに再割り当てされ得る。
スピンアップ/スピンダウンディレクタ131は、各コンピュートが処理できる処理負荷、コンピュートのコンピューティングリソースの各々を拡張できる範囲、及びどのコンピュート/コンピューティングリソースがアクティブに使用する必要があるのか、及びどのコンピュート/コンピューティングリソースを削減または非アクティブにするのかを決定するために使用される。いくつかの実施形態では、スピンアップ/スピンダウンディレクタ131は、コストまたは需要に基づいて、オンラインゲームに割り当てられるコンピュートを追加または削減するために信号を送信し得る。例えばスピンアップ/スピンダウンディレクタ131は、どのコンピュートをアクティブにしておくのか、及びどのコンピュートを非アクティブにするのかを決定するために電力マネージャスケジューラ133とインタラクションすることができ、そのような決定は、電力コストに基づいて下され得る。
例えば、ある時に電力コストが高い場合、次に電力マネージャスケジューラ133は、仮想ロケーションまたはサブリージョンに割り当てられたコンピュート(複数可)を維持するために、及び仮想ロケーションまたはサブリージョンの処理負荷を処理するために追加のコンピュートを割り当てる代わりに、割り当てられたコンピュート(複数可)によりストレスを加えるためにスピンアップ/スピンダウンディレクタ131に信号を送信し得る。
同様に電力のコストが他のときに低い場合、次に電力マネージャスケジューラ133は、追加のコンピュートを追加して、仮想ロケーションまたはサブリージョンの処理負荷を処理するためにより多くの処理能力を提供するためにスピンアップ/スピンダウンディレクタ131に信号を送信し得る。したがって、電力マネージャスケジューラ133は、オンラインゲームのゲーミング世界の異なる仮想ロケーションに提供されるコンピュートが、割り当てられたリソースが、費用効果が高くなると同時に効率的に処理負荷を処理することができるように、最適にプロビジョニングされ、利用されることを確実にするために使用される。
【0069】
コンピュートは異なるサブリージョン及び/または仮想ロケーションに割り当てられると、ユーザーデータ移行エージェント127は、異なるユーザーに関連する適切なゲーミング対話性を、それぞれのサブリージョン/仮想ロケーションに割り当てられたコンピュートの対応するコンピュートに移行するために使用される。異なるユーザーのゲーミング対話性を移行することは、ユーザーのオンラインゲームのゲーム状態を、ユーザーが存在するサブリージョンまたは仮想ロケーションに割り当てられた対応するコンピュートに移行することを含む。
オンラインゲームのゲーム状態を移行することは、物理特性状態、レンダリング状態、ゲーミング世界内で接続された任意の損傷情報、及び1人以上のユーザーのオンラインゲームの他のゲームプレイデータを、あるコンピュートから別のコンピュートに移行することを含む。例えば、サブリージョンが特定の仮想ロケーションのリージョン内で作成されている場合、それぞれのサブリージョンに存在するユーザーのゲーム状態及びゲーミング対話性は、リージョンまたは特定の仮想ロケーションに割り当てられたコンピュートから、異なるサブリージョンに割り当てられた対応するコンピュートに移行される必要がある。
ゲーミング対話性は、対話性の部分を、各部分に与えられる優先順位に基づいて移行することによって適切なコンピュートに移行され得、部分に与えられる優先順位は、対話性と関連するタイミング、重要性、重大性、必要性、各ユーザーの視野などに基づいてよい。例えば、ゲーミング世界が、ユーザーのゲームオブジェクトとのインタラクションによって引き起こされたゲームオブジェクトの大爆発を含むとき、ユーザーのインタラクションが最初に処理され、爆発に関連するゲームデータがユーザーに提示されるように、爆発と関連するユーザーのインタラクションの部分は最初に移行される必要がある。
ユーザーの他のインタラクションは、他のインタラクションに与えられる優先順位に従って後に移行されてよい。各ユーザーの異なるゲーミング対話性に与えられる処理優先順位に関連する情報は、ゲームコンテキストプロセッサ111によって提供され得る。処理優先順位は、各ユーザーがタイムリに適切なゲームデータを提示されることを確実にしつつ、コンピューティングリソースが効率的に使用されるように、コンピュートによるデータ処理を最適化するために使用される。
【0070】
ゲームコンテキストプロセッサ111は、リージョン境界コーディネータ123から、オンラインゲームのゲーミング世界に画定されたユーザー及び仮想ロケーションの位置情報を受け取り、各ユーザーの対話性を処理する。いくつかの実施形態では、ゲームコンテキストプロセッサ111は、各ユーザーの対話性の処理に優先順位を付けるためにデータプライオリタイザ111aを作動させる。データプライオリタイザ111aは、ユーザーに提供されたゲームデータが、ユーザーに対する関連性の順に提示されるゲーミングコンテンツを含むように、相対的なコンテキストに基づいてゲーミング世界に関連する対話性を処理し得る。
例えば、上記の例のゲームオブジェクトの爆発など、ユーザーのビューの視野内のゲーミング世界に関連するゲームデータの部分が先に提供され得、ユーザーのビューの視野の外にある他のゲーミングコンテキストは後に提供される。ゲームコンテキストプロセッサ111は、関連性の順に各ユーザーと関連するゲームデータの異なる部分を処理し、ユーザーデータ移行エージェント127が、各ユーザーのそれぞれのクライアントデバイスに対する関連性の順にゲームデータの異なる部分を符号化し、転送し得るように、ゲームデータの異なる部分をユーザーデータ移行エージェント127に提供する。
【0071】
ユーザーが、2つの連続するサブリージョン間の境界上に、または仮想ロケーション内の2つの連続するリージョン間の境界上に存在する状況では、データシンクロナイザ129は、ユーザーのために2つの連続するサブリージョン/リージョンに割り当てられた2つ以上のコンピュート間でデータを同期させるために使用される。例えば、第1のコンピュートが第1のサブリージョンに割り当てられ、第2のコンピュートが第2のサブリージョンに割り当てられる場合、次に第1のサブリージョンと第2のサブリージョンの境界上に存在する(ゲーム状態を含む)ユーザーのゲームデータは、第1のコンピュートと第2のコンピュートとの間で同期される。
データシンクロナイザ129は、2つの連続するサブリージョン/リージョンに割り当てられた第1のコンピュートと第2のコンピュートを識別し、第1のコンピュートと第2のコンピュートが、ユーザーと関連するゲームデータを同期させることができるようにするために、第1のコンピュートと第2のコンピュートへの同期信号を生成する。ユーザーのためのゲームデータの同期は、ゲームデータの異なる部分に与えられた優先順位に従い、同期したデータは、ユーザーデータ移行エージェント127によってユーザーのクライアントデバイスに転送される。
【0072】
ユーザー位置情報及びコンピュート割り当ては、オンラインゲームにアクセスする各ユーザーのユーザープロファイルに記憶される。新しいユーザーがオンラインゲームにアクセスし、オンラインゲームのゲーミング世界内の特定の仮想ロケーションに入ると、コンピュート割り当てとともにユーザープロファイル情報が分散型ゲームエンジン100によって使用されて、新しいユーザーを、新しいユーザーが生成するゲームデータを処理するための適切なコンピュートに割り当てる。
【0073】
いくつかの実施形態では、分散型ゲームエンジンは、異なるユーザーのオンラインゲームのゲーム状態、異なる仮想ロケーションでユーザーによって提供される入力のタイプと量、ユーザーの専門レベルなどに基づいて、異なるレベルのオンラインゲームに、及び異なるユーザーに必要とされるコンピュートのタイプ及び量を決定するように人工知能(AI)モデルを訓練し得、分散型ゲームエンジンのコンピュートリージョンマネージャ120は、ゲーミング世界の異なる仮想ロケーションのために必要とされるコンピューティングリソースを識別し、プロビジョニングするために、AIモデルに含まれる情報を使用し得、コンピューティングリソースは、マイクロレベルまたはマクロレベルでプロビジョニングすることができる。
【0074】
ゲーム状態は、特定の時点でのオンラインゲームのゲームプレイの複雑さを提供する。ゲーム状態は、例えば、ゲームキャラクタ、ゲームオブジェクト、ゲームオブジェクト属性、ゲーム属性、ゲームオブジェクト状態、グラフィックオーバレイなどを含み得る。また、ゲーム状態は、レンダリングのためのゲームプレイデータを生成し、処理するために使用される、CPU、GPU、メモリ、レジスタ値、プログラムカウンタ値、プログラマブルDMA状態、DMAのためにバッファに入れられたデータ、音声チップ状態、CD-ROM状態、利用可能な帯域幅などのオンラインゲームのインスタンスの実行で使用されるサーバのネットワークのあらゆるデバイスまたはモジュールまたはコンポーネントの状態も含む。
また、ゲーム状態は、現在実行中であるオンラインゲームの実行可能コードの部分、及びゲームプレイを続行するためにロードする必要のある実行可能コードの部分も識別する。また、ゲーム状態は、プレーヤのユーザープロファイル、ゲームオブジェクトに対するユーザーカスタマイズ、ゲームタイプ、プレーヤが選択したゲームレベル/難易度、ゲームツールの量、賞金、ポイント、現金、賞品などを含む、各ユーザーの保存されたデータを含んでもよい。また、ゲーム状態は、オンラインゲームのゲームプレイと関連するゲーム詳細を理解する際に役立つ、無作為に生成された特徴またはAIオーバーレイまたはゲームの複雑さも含み得る。ゲーム状態及び他の適切なゲーム関連データは、オンラインゲームの処理負荷を容易に推定できる包括的な詳細を提供する。
【0075】
ゲームクラウドシステムで実行されるオンラインゲームは、マッシブマルチプレーヤオンライン(MMO)ゲームであってよく、オンラインゲームに割り当てられるゲームサーバは、プレーヤ(つまり、ユーザー)の活動を取り込むためにオンラインゲームのゲームロジックと通信するマルチプレーヤ分散型ゲームエンジンのインスタンスを含み、各プレーヤのためのオンラインゲームのゲームデータを生成するためにプレーヤの活動を使用し得る。
ゲームロジックは、MMOゲームセッション中にプレーヤの各々のゲーム状態を管理し、分散型ゲームエンジンにゲーム状態を提供するように構成され、分散型ゲームエンジンは、MMOゲームセッションに参加している各プレーヤまたは観客のために生成されるゲームデータのために、ゲーム物理特性、シェーディング、スクリプト記述、テクスチャリング、音声、アニメーション、メモリ管理、シーングラフ、アセンブル、符号化などのオンラインゲームの異なる特徴を処理するための機能コンポーネントを提供する。
【0076】
分散型ゲームエンジン100は、オンラインゲームのゲームプレイ中に提供されるユーザーの入力に応じて生成されるゲームデータの異なる特徴の並行処理を可能にするために複数のプロセスエンジンまたはコンポーネントを含む。したがって、分散型ゲームエンジン100のインスタンスは、ゲームロジックのインスタンスとともに、分散型ゲームエンジンが高速かつ効率的にゲームデータを処理できるように、オンラインゲームのゲームプレイセッション中にゲームクラウドシステム(GCS)内の複数のサーバで実行される。
ユーザーがオンラインゲームをプレイすると、ユーザーの入力は収集され、ゲームのゲーム状態に影響を与え、ユーザーのクライアントデバイスに送信するためのゲームプレイデータを生成するために処理される。オンラインゲームのゲーム状態は、ユーザーのユーザーメトリック及びオンラインゲームのゲーム状態メトリックを識別するために分析される。ユーザーメトリックは、ユーザーのユーザーデータに更新される。同様に、オンラインゲームのゲーム状態メトリックは、オンラインゲームのゲームデータに更新される。ユーザーメトリック及びゲーム状態メトリックは、ゲームプレイ中に異なるユーザーによって生成されるゲームデータに優先順位を付ける際に使用され、それぞれのユーザーのクライアントデバイスに転送される。
【0077】
分散型ゲームエンジン100の様々なコンポーネントは、オンラインゲームのゲーミング世界の各仮想ロケーションで生成されるゲームデータを処理するために必要とされるリソースのタイプ、及び各タイプのリソースの量を決定するために使用される。決定は、各ユーザーのオンラインゲームのゲーム状態、ユーザー入力、及びオンラインゲームのために定義された処理基準に基づく。
例えば、処理基準は、プレーヤのゲームデータの特定の部分が、ゲームデータの他の特定の部分よりも高く優先順位を付けられなければならないことを示す場合がある。決定に基づいて、ゲームコンテキストプロセッサ111は、ゲームデータの異なる部分を処理し、スピンアップ/スピンダウンディレクタは、オンラインゲームのゲームが、どのプレーヤにとっても高速かつ効率的な方法で処理されるように、オンラインゲームのゲーミング世界で識別される異なる仮想ロケーションにコンピューティングリソースまたはコンピュートをプロビジョニングする。
【0078】
一般的に言えば、ゲームエンジンは、MMOゲームなどのゲームの基盤になり、オンラインゲームを開発するために使用されるフレームワークを提供するソフトウェア層である。ゲームエンジンは、あらゆるオンラインゲームに必要になる共通の関連タスク(つまり、ゲームエンジンタスク)の実行の詳細を抽出し、一方、対応するオンラインゲームのゲームロジックは、各オンラインゲームがどのようにプレイされるのかの詳細を提供する。
ゲームエンジンフレームワークは、オンラインゲームに命を吹き込むオンラインゲームのコア特徴を処理するための再利用可能な複数の機能コンポーネントを含む。ゲームエンジンによって処理される基本的なコア特徴は、(例えば、衝突検出、衝突反応、軌跡、重力などに基づいたオブジェクトの移動、摩擦の)物理特性、グラフィックス、音声、人工知能、スクリプト記述、アニメーション、ネットワーキング、ストリーミング、最適化、メモリ管理、スレッド化、ローカリゼーションサポート、及び他に多くを含み得る。
再利用可能なコンポーネントは、オンラインゲームのために識別されたコア特徴を処理するために使用されるプロセスエンジンを含む。ゲーム実行時中、ゲームエンジンは、オンラインゲームのゲームロジックを管理し、ゲームデータを処理するためのゲームエンジンの機能部分あるいはファンクショナルコンポーネントの割り当て及び同期を最適な方法で管理し、レンダリングのためにクライアントデバイスに送り返されるゲームデータのフレームを生成する。現在利用できる様々なゲームエンジンは、異なるコア機能を提供しており、適切なゲームエンジンは、オンラインゲームを実行するために利用できる機能に基づいて選択され得る。
【0079】
いくつかの実施形態では、ゲームエンジン及びゲームロジックのインスタンスは複数のサーバにわたって分散されており、各サーバはゲームエンジン部分の特定の機能部分を実行する。異なるサーバは、異なるインスタンスを同時に実行することによってゲームデータを並行して処理し得る。このようにして、分散型ゲームエンジンは、ゲームデータのより高速かつ効率的な処理を可能にする。ゲームエンジンは、オンラインゲームに命を吹き込むために必要とされる複数の機能部分を処理するように構成される。MMOゲーム環境のために開発された各オンラインゲームは、オンラインゲームが機能するために必要とされるゲームエンジンの異なる機能部分を識別し得る。
【0080】
機能部分は、オンラインゲームの開発者によって識別される場合もあれば、オンラインゲームのゲームロジックを分析することによって決定される場合もある。オンラインゲームの仕様要件に基づいて、サーバ上で実行している各ゲームエンジンインスタンス(つまり、「コンピュート」と称する場合もある)は、オンラインゲームのゲームプレイから生成されるゲームデータの特定の特徴に関係する機能部分を処理するために、分散型ゲームエンジンの特定のプロセスエンジンを作動させる。
ゲームエンジンのインスタンスは、第1のサーバからの出力(つまり、機能部分の処理の結果)を第2のサーバへの入力として機能させ、第2のサーバからの出力を第3のサーバへの(または第1のサーバへの)入力として機能させる等々によって、ゲームプレイの反復処理を提供する。いくつかの実施形態では、単一のサーバは、ゲームエンジンの特定の機能部分を処理するために使用されるゲームエンジン及びゲームロジックのインスタンスを実行するために割り当てられ得る。他の実施形態では、各々がゲームエンジン及びゲームロジックのインスタンスを実行する複数のサーバは、特定の機能部分を処理するために割り当てられ得る。
複数のサーバは、仮想ロケーションで生成された処理データの量に基づいて識別され、割り当てられ得る。ゲームエンジン及びゲームロジックは、オンラインゲームに命を吹き込むために必要とされるゲームエンジンの異なる機能部分を処理するために複数のサーバ上でインスタンス化されるので、ゲームエンジンは「分散型」であると言われる。したがって、本願で使用される分散型データエンジンに対する任意の言及は、ゲームエンジン及びゲームロジックの対応する部分が複数のサーバ上でインスタンス化されるこの構成に言及している。
【0081】
異なるサーバから出力されるゲームデータは、同期され、アセンブルされ、符号化され、レンダリングのためにクライアントデバイスのそれぞれのクライアントデバイスに送信される。ゲームデータのアセンブルを支援するために、ゲームエンジンは、ゲームエンジンの様々な機能部分の異なるサーバへの分散を同期させ、異なるサーバに割り当てられたゲームエンジンの異なる機能部分の処理を同期させ、処理結果をサーバ間で及びサーバとユーザー移行エージェントとの間でルーティングするために同期エンジンを含み得る。
分散型ゲームエンジンのユーザーデータ移行エージェントは、特定のユーザーのゲームデータを処理するために使用されているサーバ(つまり、コンピュート)を追跡し、異なるサーバ/コンピュートから出力ゲームデータを収集し、各ユーザーの出力ゲームデータをアセンブルし、符号化し、符号化したゲームデータを、レンダリングのために異なるクライアントデバイスに転送するために使用される。
【0082】
分散型ゲームエンジンが、AIモデルを使用してゲームデータを処理するために必要とされるコンピュート/コンピューティングリソースのタイプを決定するとき、分散型ゲームエンジンは、以前のゲームプレイセッション中に生成されたオンラインゲームのゲームデータからの情報を使用し、AIモデルのノードのニューラルネットワークにデータを入力するために機械学習アルゴリズムを使用し得る。機械学習アルゴリズムは、出力を提供してAIモデルを生成/改良するために使用される分類器を含み得る。各分類器は、ゲーミング世界で識別される特定の仮想ロケーションまたはサブリージョンで生成されるゲームデータの特定の特徴を識別及び処理し、処理負荷とタイプ、特定の特徴を処理するために使用されるリソースの量に関連する情報でAIモデルのノードを更新するように構成されたエンジン/モジュールを有し得る。
処理された情報は、ゲームデータとともに、追加の処理のために他の分類器の下流に転送される。AIモデルからの出力は、オンラインゲームへコンピュート/コンピューティングリソースをプロビジョニングする際に、既存のコンピューティングリソースまたはサーバコンピュートがゲームデータを処理するために十分であるかどうか、またはオンラインゲームのゲームデータの最適な処理のためにサーバ/サーバリソースに対する調整を行う必要があるかどうかを判断する際に使用される。
【0083】
スピンアップ/スピンダウンディレクタ131は、オンラインゲームのゲーミング世界の各仮想ロケーションに割り当てられたコンピュート/コンピューティングリソースを動的に調整するために、及び各ユーザーの対話性を効率的に処理し、生成したゲームデータをレンダリングのためにタイムリにユーザーのクライアントデバイスに送信できるように、適切なコンピュート/コンピューティングリソースに、異なるユーザーに関連するゲーミング対話性を割り当てるために使用される。
各ユーザーに提供されるゲームデータは、ゲーミング世界のそれぞれのユーザー自身の認識を含む。観客であるユーザーの場合、観客に提供されるゲームデータは、観客自身のオンラインゲームに対する認識、または観客がフォローしているプレーヤの認識を含み得る。新しいユーザーがゲームセッションに参加すると、分散型ゲームエンジンシステム構成は、新しいユーザーをルーティングする際に使用され、その結果オンラインゲームのユーザー(つまり既存のユーザーと新しいユーザー)は、満足のいくゲームプレイ体験を有することができる。
【0084】
様々なタイプのサーバは、いくつかの例示的な実施形態で、オンラインゲームの分様々散型ゲートエンジン及びゲームロジックのインスタンスを実行するために、及びオンラインゲームのために生成されたゲームデータを処理するためにプロビジョニングすることができる。サーバは物理サーバである場合がある。物理サーバ(または単に「サーバ」)は、スタンドアロンサーバである場合もあれば、ゲートクラウドシステム内のデータセンタの一部である場合もある。
データセンタのサーバは、データセンタ内の独立したサーバである場合もあれば、各ラックが複数のサーバコンピューティングデバイスを含む、ラックの一部である場合もある。物理サーバは、オペレーティングシステム、メモリ、1つ以上のアプリケーション及び/またはゲームエンジンの1つ以上の機能部分を実行するためのマイクロプロセッサなどの必要なリソースを含む。アプリケーションまたはゲームエンジンの機能部分は、メモリに格納され、マイクロプロセッサを使用して処理され、オペレーティングシステムによって管理される。
【0085】
他の形態では、サーバは、ゲームクラウドシステムの一部である仮想マシンであるであろう。ゲームクラウドシステムは、ホストマシンのハイパーバイザで実行中の複数の仮想マシン(VM)を含み得、1つ以上の仮想マシンは、ホストのハイパーバイザが利用できるハードウェアリソースを利用してオンラインゲームのインスタンスを実行するゲームプロセッサをサポートするように構成される。複数の仮想マシンと関連する複数のゲームプロセッサがオンラインゲームのインスタンスを実行するとき、ユーザーの入力は、ゲームクラウドシステムの1つ以上のバックエンドサーバ(つまり、物理サーバまたは仮想サーバ)によって収集、編成され、オンラインゲームのゲーム状態に影響を与えるために処理される。
ユーザーの入力に応じてオンラインゲームのために生成されるゲームデータは、アセンブルされ、符号化され、ゲームデータのストリーミングフレームとして、レンダリングのためにユーザーのクライアントデバイスに転送される。AIモデルが、コンピュート及びコンピューティングリソースをプロビジョニングするために分散型ゲームデータによって使用される場合、ユーザーの入力も、AIモデルを訓練するための訓練データを生成するために使用される。仮想マシンの各々は、ホストマシンの仮想化層(つまり、ハイパーバイザ)が利用できるハードウェアリソースを使用し、オペレーティングシステムによって実行される1つ以上のアプリケーション(例えば、1つ以上のオンラインゲームアプリケーション)を含み得る。
【0086】
別の代替実施形態では、サーバは、オンラインゲームアプリケーションなどのアプリケーション及びすべてのその依存関係、ライブラリ、及びオンラインゲームアプリケーションを実行するために必要になる構成ファイルをともに、アプリケーションがアプリケーションを実行するためのコンテナ内の割り当てられたリソースを使用する仮想コンテナ(またはこれ以降単に「コンテナ」と呼ぶ)にバンドルできるようにするクラウドコンテナの一部であるだろう。
コンテナは、完全なオペレーティングシステムなしでも動作し、それによってオペレーティングシステムレベルの仮想化を提供する。コンテナは、オンラインゲームのためにゲームエンジン及びゲームロジックのインスタンスを実行するなどのタスクを実行するために最小量のリソースで動作することができ、リソース(つまり、物理的なハードウェアリソース)は仮想化される。
クラウドコンテナは、異なるサーバに完全に展開することができるので移植可能である。一実施形態では、コンテナは、カーネルをコンテナホストと共有することによってプロセス及び名前空間分離技術を通じてアプリケーションの分離を提供する。他の実施形態では、コンテナホストのカーネルは共有されておらず、その結果、仮想マシンからコンテナ化されたアプリケーションを実行することで強化された分離を提供する。上述のタイプのコンピュート(つまり、サーバ)は、単なる例として提供されており、制限的と見なされるべきではない。ゲームエンジン及びゲームロジックをインスタンス化するためのリソースを提供する他の形サーバまたはコンピュート(例えば、コンピューティングデバイス)も使用され得る。
【0087】
いくつかの実施形態では、ユーザーは、世界のどこからでもクラウドゲームシステムのオンラインゲームアプリケーションに接続し得る。オンラインゲームアプリケーションは、世界中に分散している異なるデータセンタの異なるサーバ上で複数のゲームインスタンスを起動することによってそのような接続を可能にする。オンラインゲームのゲームプレイ中にそれぞれのクライアントデバイスで生成されるユーザーの入力は、サーバのネットワークから収集され、ゲームデータが生成される。ゲームデータは、ネットワークモデルのいずれか1つを使用し、ゲームデータのフレームとしてそれぞれのクライアントデバイスに返される。
本願に説明するゲームクラウドシステムのサーバ間で通信するために使用され得るネットワークモデルのいくつかの例は、TCP/UDPネットワークモデルまたは国際標準化機構(ISO)ベースのオープンシステム相互接続(OSI)ネットワークアーキテクチャを含む。分散されたサーバ間のデータの処理及び通信は、複数の既存のプロトコルのいずれか1つに従い得る。ISOモデルは、アプリケーション層(アプリケーション層、データリンク層、セッション層)及びデータフロー層(トランスポート層、ネットワーク層、データリンク層、及び物理層)のセットを含む。アプリケーション層は、送信側エンティティと受信側エンティティを識別し、それぞれのエンティティによって理解される方法で、送信側エンティティと受信側エンティティとの間でオンラインゲームなどのアプリケーションのデータを転送し、最小のデータ損失で送信側エンティティと受信側エンティティの間の通信を管理し、同期させるように構成される。
データフロー層は、データ送信を連続経路で実施すべきか、それとも並列経路で実施するべきか、データをパケット化し、パケット化したデータをフレームにアセンブルし、データのフレームを好ましいルートに沿って送信するために従うべきであるプロトコルを決定するように構成される。上述の説明は、オンラインゲーム用のサーバのネットワークを通してデータを通信する際に使用されるISOモデルの概要のみを提供すること、及び様々な層の役割のより細かい詳細は当業者によって理解されているため、さらに詳細に説明されないことに留意されたい。
【0088】
図5は、本開示の一実施形態に従って、ゲームデータを更新するためにユーザー入力の収集をサポートし、オンラインゲームのゲームプレイに関連するAIモデルを構築及び/または訓練するために更新したゲームデータを使用する例示的なシステム300Aの概要を示す。特に、システム300Aは、ゲームクラウドシステム(GCS)300に格納されたビデオゲームへのアクセス及びプレイを可能にする。一般的に言えば、ゲームクラウドシステムGCS300は、対応するゲームプレイを通してオンラインゲームアプリケーションをプレイする複数のプレーヤをサポートするために、ネットワーク200を介して動作するクラウドコンピューティングシステムであってよい。
それらのゲームプレイに関連するデータは、オンラインゲームアプリケーションのゲームプレイに関係するAIモデルを構築及び/または訓練するために使用され得る。特に、システム300Aは、GCS300、1つ以上のソーシャルメディアプロバイダ240、及び複数のクライアントデバイス101を含み、そのすべてはネットワーク200(例えば、インターネット)を介して接続されている。複数のユーザーと関連する複数のクライアントデバイスは、GCS300及びソーシャルメディアプロバイダ240によって提供されるサービスにアクセスするためにネットワーク200に接続され得る。ユーザーは、プレーヤまたは特定のプレーヤのもしくはオンラインゲームのゲームプレイをフォローする観客であってよい。
【0089】
一実施形態では、ゲームクラウドシステム300は、ゲームサーバ205、ビデオレコーダ271、タグプロセッサ273、及びアカウントマネージャ274を含み、アカウントマネージャ274は、ユーザープロファイルマネージャ、ゲーム選択エンジン(つまり、ゲームセレクタ)275、ゲームセッションマネージャ285、ユーザーアクセスロジック280、ネットワークインタフェース290、及びソーシャル接続マネージャ295を含む。GCS300は、一般にデータストア260に格納され得る、ゲーム状態ストア、ユーザーアカウント、ユーザーデータストアなどの複数のストレージシステムをさらに含み得る。
他のゲームストレージシステムは、ゲームコードストア261、記録ゲームストア262、タグデータストア263、ビデオゲームタイトルストア264、及びゲームネットワークユーザーストア265を含み得る。一実施形態では、GCS300は、オンラインゲームアプリケーション、サービス、ゲーミング関連デジタルコンテンツ、ならびにシステム、アプリケーション、ユーザー、及びソーシャルネットワークの中の対話性を提供できるシステムである。GCS300は、ネットワークインタフェース290を介してソーシャル接続マネージャ295を通してユーザーのクライアントデバイス101及びソーシャルメディアプロバイダ240と通信し得る。ソーシャル接続マネージャ295は、1人以上の友人を関連付けるように構成され得る。一実施形態では、各ソーシャルメディアプロバイダ240は、ユーザーソーシャルネットワーク接続を示す少なくとも1つのソーシャルグラフ245を含む。
【0090】
プレーヤ(つまり、ユーザー)は、ゲームセッションマネージャ285を介してGCS300によって提供されたサービスにアクセスできる。例えば、アカウントマネージャ274は、プレーヤのために、GCS300上で、認証及びゲームタイトルへのアクセスを可能にする。アカウントマネージャ274は、ユーザー(プレーヤ、観客)についての情報を格納し、各ユーザーのユーザープロファイルを管理する。ユーザー情報は、認証のためにアカウントマネージャ274が使用できる。さらに、ユーザーが所有するゲームタイトルは、アカウントマネージャ274によって管理され得る。例えば、ゲームタイトルストア264に格納されるビデオゲームは、それらのビデオゲームを所有する、またはそれらのビデオゲームへのアクセスを与えられるユーザーが利用できる。
【0091】
一実施形態では、ユーザーは、ネットワーク200を介して接続によって、クライアントデバイス101を経由してGCS300及びソーシャルメディアプロバイダ240によって提供されるサービスにアクセスできる。クライアントデバイス101は、有線または無線、移植可能または移植可能ではないプロセッサ及びメモリを有する任意のタイプのデバイスを含むことができる。一実施形態では、クライアントデバイス101は、スマートフォン、タブレットコンピュータ、または移植可能なフォームファクタでタッチスクリーン機能を提供するハイブリッドの形をとることができる。1つの例示的なクライアントデバイスは、オペレーティングシステムを実行し、ネットワーク200を介して取得され得る様々なアプリケーション(アプリ)を具備し、ローカルポータブルデバイス(例えば、スマートフォン、タブレット、ラップトップ、デスクトップなど)で実行される携帯電話装置を含む場合がある。
【0092】
クライアントデバイス101は、ユーザーが入力コマンド236及びディスプレイデータ及び/またはGCS300及びソーシャルメディアプロバイダ240から受け取った情報135を送信するためのインタフェースとして機能するディスプレイ132を含む。ディスプレイ132は、タッチスクリーン、または通常はフラットパネルディスプレイ、ブラウン管(CRT)によって提供されるディスプレイ、または表示をレンダリングできる他のデバイスとして構成することができる。代わりに、クライアントデバイス100は、デスクトップコンピュータまたはラップトップコンピュータと同様に、そのディスプレイ132をデバイスとは別に有することができる。
【0093】
一実施形態では、クライアントデバイス101は、ユーザー(プレーヤ)がビデオゲームをプレイできるようにするためにGCS300と通信するように構成される。例えば、プレーヤは、ゲーム選択エンジン275を介してゲームタイトルデータストア264で利用できるビデオゲームを(例えば、ゲームタイトル別になど)選択し得る。選択したビデオゲームは有効化され、ビデオゲームのインスタンスは、GCS300でゲームサーバ205による実行のためにロードされる。一実施形態では、ゲームプレイはおもにGCS300で実行され、そのためクライアントデバイス101はGCS300からゲームビデオフレーム135のストリームを受け取り、ゲームプレイを駆動するためのユーザー入力コマンド236は、GCS300に送り返される。ストリーミングゲームプレイから受け取られたビデオフレーム135は、クライアントデバイス101のディスプレイ132でレンダリングされる。
【0094】
一実施形態では、プレーヤが、プレイするために利用可能なゲームタイトルを選んだ後、選ばれたゲームタイトルのゲームセッションは、ゲームセッションマネージャ285を介してプレーヤによって開始され得る。ゲームセッションマネージャ285は、最初にデータストア260内のゲーム状態ストアにアクセスし、もしあれば、(選択されたゲームの)プレーヤによってプレイされた最後のセッションの保存されたゲーム状態を取り出すため、プレーヤは、以前のゲームプレイ停止ポイントからゲームプレイを再開できる。
再開ポイントまたは開始ポイントが識別されると、ゲームセッションマネージャ285は、ゲームサーバ205内のゲーム実行エンジンに知らせて、ゲームコードストア261から選ばれたゲームタイトルのゲームコードを実行し得る。ゲームセッションが開始された後、ゲームセッションマネージャ285は、ネットワークインタフェース290を介して、例えばクライアントデバイス100などのクライアントデバイスにゲームビデオフレーム135(つまり、ストリーミングビデオデータ)を渡し得る。
【0095】
ゲームプレイ中、ゲームセッションマネージャ285は、ゲームプレイまたはゲームプレイセッションの記録(例えば、ビデオ)を生成または保存するために、ゲームサーバ205、ビデオレコーダ271の記録エンジン、及びタグプロセッサ273と通信し得る。一実施形態では、ゲームプレイの録画は、ゲームプレイ中に入力または提供されるタグコンテンツ、及び他のゲーム関連メタデータを含む場合がある。また、タグコンテンツはスナップショットを介して保存され得る。ゲームプレイの録画は、そのゲームプレイに対応する任意のゲームメトリックとともに、記録ゲームストア262に保存され得る。任意のタグコンテンツは、タグデータストア263に保存され得る。
【0096】
ゲームプレイ中、ゲームセッションマネージャ285は、ビデオゲームの対応するゲームプレイの結果に影響を与えるために使用されるユーザー入力コマンド236を配信し、取得するためにゲームサーバ205と通信し得る。プレーヤによって入力される入力コマンド236は、クライアントデバイス101からGCS300のゲームセッションマネージャ285に送信され得る。
入力コマンド(例えば、コントローラ入力またはユーザー入力)236は、ゲームプレイ、及びタグコンテンツ(例えば、テキスト、画像、録画クリップなど)などのユーザーインタラクティブ入力を駆動するために使用される入力コマンドを含む。ゲーム入力コマンド、及び任意のユーザープレイメトリック(どれほど長くユーザーがゲームをプレイするのかなど)は、ゲームネットワークユーザーストアに格納され得る。ビデオゲームのゲームプレイに関連する選択情報は、ユーザーが利用し得る複数の特徴を有効化にするために使用され得る。
【0097】
したがって、本開示は、オンラインゲームのゲーミング世界内の仮想ロケーションを識別し、各仮想ロケーションで処理負荷を処理してオンラインゲームの効率的な処理を確実にするためにコンピュート及びコンピューティングリソースをプロビジョニングするためのアルゴリズムを実装するためのシステム及び方法を説明する。
【0098】
図6は、一実施形態に従って、ゲーミング世界を提示するオンラインゲームのための処理リソースを管理するための方法のサンプル操作フローを示す。方法は、オンラインゲームが1人以上のユーザーのために実行される操作610で始まる。オンラインゲームの1つ以上のインスタンスは、複数のユーザーがゲームプレイのためにオンラインゲームにアクセスするのに応じて実行され得る。1人以上のユーザーの各々は、オンラインゲームのゲーミング世界で定義された仮想ロケーションへのアクセスを与えられる。コンピュートは、操作620に示すように、ゲーミング世界の1人以上のユーザーのゲーミング対話性を処理するために割り当てられる。
ゲーミング世界の各仮想ロケーションに存在するユーザーによって生成されるゲーミング対話性を処理するために別個のコンピュートが割り当てられ得る。各仮想ロケーションに割り当てられるコンピュートは、割り当てられたコンピュートが処理できるユーザーの数に対して所定の制限を含む場合がある。所定の制限は、ユーザーによって生成されるゲーミング対話性の量に基づいてよく、ゲーミング対話性は、ゲームプレイ中にプレーヤなどのユーザーによって提供されるユーザー入力を含む。
【0099】
オンラインゲーム内のユーザーの移動は監視され、オンラインゲーム内の特定の仮想ロケーション内のリージョンにアクセスするユーザーの数が決定される。動作630に示すように、リージョン内のユーザーの数が特定の仮想ロケーションに割り当てられたコンピュートの所定の制限を超えると、動作640に示すように、リージョンは複数のサブリージョンに動的に分割される。リージョンのために作成されるサブリージョンの数は、リージョン内のユーザーの密度に、及び分散型ゲームエンジンが使用する分割基準に基づいてよい。
サブリージョンは、画定された境界で作成されるため、サブリージョンの各々は、少なくとも1人のリージョンのユーザーを含む。いくつかの実施形態では、リージョンの全体的な部分はサブリージョンに分割される。他の実施形態では、リージョン内のどこにユーザーが集まるのかに応じて、特定の仮想ロケーション内のリージョンの一部分はサブリージョンに細分化され、一方、リージョンの残りの部分は別個のサブリージョンとして扱われる。そのような実施形態では、特定の仮想ロケーションの一部分で作成されたサブリージョンは、各々、特定の仮想ロケーションの1人以上のユーザーを含み得、一方、残りの部分はユーザーを含む場合もあれば、含まない場合もある。
【0100】
リージョンをサブリージョンに分割した後、操作650に示すように、割り当てられたコンピュート及び追加のコンピュートが、サブリージョンの各々のユーザーのゲーミング対話性を処理するように追加のコンピュートがリージョンに割り当てられる。いくつかの実施形態では、別個のコンピュートが各サブリージョンに割り当てられ、別個の各コンピュートは、サブリージョンのユーザーのゲーミング対話性を処理するように構成される。
リージョンに割り当てられたコンピュート及び追加のコンピュートの処理は、各ユーザーにゲームのゲーム状態を生成するために調整される。ゲームのゲーム状態は、各ユーザーのゲームデータとともに、各ユーザーのそれぞれのクライアントデバイスに転送される。各ユーザーのゲームデータは、ユーザーのオンラインゲームのゲーミング世界に対する認識を含み、そのような認識は、オンラインゲームのゲーム状態に基づいて決定される。
【0101】
したがって、分散型ゲームエンジンは、ゲーミング世界内のユーザーの移動を追跡し、各仮想ロケーション/各仮想ロケーション内のリージョンが、中で生成された処理負荷を処理するために必要とされるコンピュート/コンピューティングリソースを与えられることを確実にするように、コンピュート/コンピューティングリソースをプロビジョニングして、オンラインゲーム中に各仮想ロケーション/各仮想ロケーション内のリージョンの処理負荷を処理するために先を見越してアクションをとる方法を提供する。
アクションとしては、リージョン内にサブリージョンもしくはサブリージョン内にサブリージョンを生成すること、または仮想ロケーション内のサブリージョン/リージョンのユーザーの数に基づいて2つ以上のサブリージョンを再設定すること、及びコンピュート/コンピューティングリソースを相応して割り当てる/割り当て解除することを含み得る。オンラインゲームに対するコンピュート/コンピューティングリソースの動的な割り当て/割り当て解除によって、コンピュート/コンピューティングリソースの最適な使用が確実にされ、一方、ゲームデータは高速かつ効率的に各ユーザーのために生成される。
【0102】
プロアクティブな(あるいは先を見越した)追跡及びプロビジョニングは、ユーザーが待ち行列または遅れにさらされることなくシームレスに、ある時間帯のユーザーが、別の時間帯の自分の友人サークルなどの他のユーザーとのオンラインゲームのゲームプレイに参加できるようにする。オンラインゲームのゲームプレイは、各ユーザーのゲーミング世界に対する独自の認識を含むゲームデータを各ユーザーに提供するように、ゲーミング世界で識別された異なる仮想ロケーションに割り当てられた異なるコンピュート/コンピューティングリソースによって対応される。
仮想ロケーションに割り当てられたコンピュート/コンピューティングリソースは、異なるデータセンタからプロビジョニングされ得、ゲームデータは、同期され、処理され、アセンブルされ、最小の遅延で送信される。言うまでもなく、コンピュート間での、及びコンピュートと、異なる時間帯に位置するクライアントデバイスとの間でのゲームデータの処理及び送信は、コンピュート、クライアントデバイスの伝送距離に起因する時間遅延を考慮に入れる必要があり、ゲームデータがリアルタイムでユーザーに提示されているように見えるようにするために、利用可能な帯域幅に従ってゲームデータを送信するまたは優先順位を付けるために追加の帯域幅を提供しなければならない場合がある。
【0103】
ユーザーのロケーションに関連する情報は、ユーザーリージョン割り当てマネージャから取得され、コンピュート/コンピューティングリソースをプロビジョニングするためにスピンアップ/スピンダウンディレクタ131によって使用したり、ユーザーのデータを同期させるためにデータシンクロナイザ129によって使用したりされ得る。データシンクロナイザ129は、ユーザーがオンラインゲームに対する独自の認識をタイムリに提供されるように、ゲームプレイのコンテキストに基づいて、及びデータプライオリタイザ111aによって提供される情報に基づいて、ゲームデータを生成するために仮想ロケーションでのユーザーのインタラクションの処理に優先順位を付ける。
各プレーヤは、オンラインゲームに対する独自の認識を必要とするので、コンピュート/コンピューティングリソースがぎりぎりまで酷使されないように、各仮想ロケーションで生成される処理データを処理するために、別々のコンピュート/コンピューティングリソースをプロビジョニングする方がより効率的である。仮想ロケーションのリージョン内に作成されたサブリージョンは、ユーザーの大半が各サブリージョンの境界内にあるように画定される。仮想ロケーションに割り当てられるコンピュートは、絶えず変化する空間内のユーザーのために生成されるゲームデータの処理を並行処理するように構成される。
【0104】
本明細書に説明する様々な実施形態は、多数のプレーヤが、所与のときにオンラインゲームのゲーミング世界内の同じ仮想ロケーションに入ると、計算を分散させる決定論的な方法を説明する。異なる仮想ロケーションに割り当てられるコンピュート/コンピューティングリソースは、対応する仮想ロケーションでの処理ニーズに基づいて弾性的に拡大または縮小され、その結果、コンピュート/コンピューティングリソースが効果的に使用されることを確実にする。仮想ロケーションの細分化及びコンピュート/コンピューティングリソースの分散は、ゲーミング世界の各仮想ロケーション内で(キャラクタ/ゲームオブジェクト/アバターによって表される)ユーザーの密度に基づく。
【0105】
図7は、本開示の様々な実施形態の形態を実行するために使用できる例示的なデバイス700のコンポーネントを示す。例えば、図7は、本開示の一実施形態に従って、オンラインゲーム及び/またはオンラインゲームのゲームプレイに関連して様々な機能を実行することができるAIモデルを訓練するために適した例示的なハードウェアシステムを示す。このブロック図は、各々が本発明の実施形態を実施するために適した、パーソナルコンピュータ、サーバコンピュータ、ゲーム機、モバイル機器、または他のデジタルデバイスを組み込むことができる、またはそれらである場合があるデバイス700を示す。代わりに、デバイスの機能は、物理サーバに、または仮想マシンもしくはコンテナサーバに実装されるであろう。デバイス700は、ソフトウェアアプリケーション及び任意選択でオペレーティングシステムを実行するための中央演算処理装置(CPU)702を含む。CPU702は、1つ以上の同種のまたは異種の処理コアから成る場合がある。
【0106】
様々な実施形態によれば、CPU702は、1つ以上の処理コアを有する1つ以上の汎用マイクロプロセッサである。さらなる実施形態は、深層学習(deep learning)、コンテンツ分類、及びユーザー分類のために構成されたアプリケーションの、媒体及び双方向エンターテインメントアプリケーションなどのきわめて並列かつ計算集約的なアプリケーションに特に適合されたマイクロプロセッサアーキテクチャを有する1つ以上のCPUを使用し、実装することができる。例えば、CPU702は、オンラインゲーム及び/またはオンラインゲームのゲームプレイに関連して様々な機能(例えば、予測)を提供することに関して学習操作を支援及び/または実行するように構成された深層学習(AI)エンジン701を含むように構成され得る。
深層学習エンジン701は、オンラインゲーム及び/またはオンラインゲームのゲームプレイに関連する様々な機能性を提供するように構成されたAIモデルを構築及び/または訓練するために構成されたモデラー720を含み得る。さらに、CPU702は、AIモデルを生成及び訓練するために構成されたアナライザ740を含む。訓練されたAIモデルは、ユーザー入力の特定のセットに応じて出力を提供し、出力は訓練されたAIモデルの所定の機能に依存する。訓練されたAIモデルは、オンラインゲームに定義された成功基準を満たすためにゲームプレイ中に実装されるリソース割り当てを決定するために使用され得る。アナライザ740は、所与の入力(例えば、コントローラ入力、ゲーム状態データ、成功基準)について訓練されたAIモデルからの出力を分析することを含む、オンラインゲーム及び/またはオンラインゲームのゲームプレイに関連して様々な機能を実行し、応答を提供するように構成される。
【0107】
メモリ704は、CPU702によって使用されるアプリケーション及びデータを記憶する。ストレージ706は、アプリケーション及びデータに不揮発性ストレージ及び他のコンピュータ可読媒体を提供し、固定ディスクドライブ、取り外し可能ディスクドライブ、フラッシュメモリデバイス、及びCD-ROM、DVD-ROM、Blu-ray(登録商標)、HD-DVD、または他の光学記憶デバイス、ならびに信号伝送及び記憶媒体を含んでもよい。ユーザー入力デバイス708は、1人以上のユーザーからのユーザー入力をデバイス700に通信し、ユーザー入力デバイス708の例は、キーボード、マウス、ジョイスティック、タッチパッド、タッチスクリーン、スチルレコーダ/カメラもしくはビデオレコーダ/カメラ、ゲームコントローラ、及び/またはマイクロフォンを含んでもよい。
ネットワークインタフェース714は、デバイス700が電子通信ネットワークを介して他のコンピュータシステムと通信することを可能にし、ローカルエリアネットワーク、及びインターネットなどのワイドエリアネットワークにわたる有線または無線通信を含んでもよい。音声プロセッサ712は、CPU702、メモリ704、及び/またはストレージ706によって提供される命令及び/またはデータから、アナログまたはデジタル音声出力を生成するように適合される。CPU702、メモリ704、データストレージ706、ユーザー入力装置708、ネットワークインタフェース710、及び音声プロセッサ712を含むデバイス700のコンポーネントは、1つ以上のデータバス722を介して接続される。
【0108】
グラフィックサブシステム713は、データバス722及びデバイス700のコンポーネントとさらに接続される。グラフィックサブシステム713は、グラフィックプロセシングユニット(GPU)716及びグラフィックメモリ718を含む。グラフィックメモリ718は、出力画像の各々の画素に対する画素データを記憶するために使用される表示メモリ(例えばフレームバッファ)を含む。グラフィックメモリ718は、GPU716と同じデバイスに統合することができ、GPU716と別個のデバイスとして接続することもできる、及び/またはメモリ704内に実装することもできる。
画素データは、CPU702からグラフィックメモリ718に直接提供されてもよい。代わりに、CPU702は、所望の出力画像を定義するデータ及び/または命令をGPU716に提供し、データ及び/または命令をGPU716に提供し、GPU716は、そこから1つ以上の出力画像の画素データを生成する。所望の出力画像を定義するデータ及び/または命令は、メモリ704及び/またはグラフィックメモリ718に記憶されてもよい。
1つの実施形態では、GPU716は、シーンに対するジオメトリ、照明、シェーディング、テクスチャリング、動き、及び/またはカメラパラメータを定義する命令及びデータから、出力画像の画素データを生成する3Dレンダリング能力を含む。GPU716は、シェーダプログラムを実行することが可能な1つ以上のプログラム可能実行ユニットを含むことができる。一実施形態では、GPU716は、AIまたは深層学習機能のためになど、追加の処理能力を提供するためにAIエンジン内で実装され得る。
【0109】
グラフィックサブシステム713は、ディスプレイデバイス710に表示される、または投影システム740によって投影されるグラフィックメモリ718からの画像の画素データを周期的に出力する。ディスプレイデバイス710は、CRT、LCD、プラズマ、及びOLEDディスプレイを含む、デバイス700からの信号に応答して、視覚情報を表示することが可能な任意のデバイスであってもよい。デバイス700は、ディスプレイデバイス710に、例えば、アナログ信号またはデジタル信号を提供することができる。
【0110】
本明細書で定義される様々な実施形態が、本明細書に開示す様々な特徴を使用し、特定の実施形態に結合され得る、または組み込まれ得ることを理解されたい。従って、提供される例は、可能な例の一部にすぎず、様々な要素を組み合わせることでより多くの実施形態を規定することが可能な様々な実施形態に制限を加えるものではない。ある例では、ある実施形態は、開示されたまたは同等の実施形態の趣旨から逸脱することなく、より少ない要素を含んでもよい。
【0111】
本開示の実施形態は、ハンドヘルドデバイス、マイクロプロセッサシステム、マイクロプロセッサベースもしくはプログラム可能な消費者向け電気製品、ミニコンピュータ、及びメインフレームコンピュータなどを含む様々なコンピュータシステム構成で実施されてよい。本開示の実施形態はまた、有線ベースまたは無線のネットワークを介してリンクされるリモート処理デバイスによりタスクが行われる分散コンピューティング環境においても、実施することができる。
【0112】
上記の実施形態を念頭に置いて、本開示の実施形態がコンピュータシステムに格納されたデータを含む様々なコンピュータ実装の動作を使用し得ることを理解されたい。これらの動作は、物理量の物理的操作を要する動作である。本開示の実施形態の一部を形成する、本明細書で説明される動作のうちのいずれも、有用な機械動作である。開示の実施形態はまた、これら動作を実行するためのデバイスまたは装置に関する。
装置は、必要な目的のために特別に構築されてもよい、または装置は、コンピュータに記憶されたコンピュータプログラムにより選択的に起動または構成される汎用コンピュータであってもよい。具体的には、本明細書の教示に従って書かれたコンピュータプログラムと共に様々な汎用マシンを使用することができる、あるいは、必要な動作を実行するためにさらに特化した装置を構築するほうがより好都合である場合もある。
【0113】
本開示はまた、コンピュータ可読媒体上のコンピュータ可読コードとしても具現化され得る。コンピュータ可読媒体は、後でコンピュータシステムにより読み取ることができるデータを格納できる任意のデータストレージデバイスである。コンピュータ可読媒体の例には、ハードドライブ、ネットワーク接続ストレージ(NAS)、読み出し専用メモリ、ランダムアクセスメモリ、CD-ROM、CD-R、CD-RW、磁気テープ、並びに他の光学及び非光学データストレージデバイスが含まれる。コンピュータ可読媒体には、コンピュータ可読コードが分散方式で格納され実行されるように、ネットワーク接続されたコンピュータシステムにわたり分散されたコンピュータ可読有形媒体が含まれ得る。
【0114】
方法動作が特定の順序で説明されたが、他のハウスキーピング操作が動作の間に実行されてもよく、または動作が、わずかに異なる時刻に生じるように調整されてもよく、もしくはオーバーレイ動作の処理が所望の手法で実行される限り、処理に関連する様々な間隔で処理動作の発生を可能にするシステム内に分散されてもよいことが理解されるべきである。
【0115】
前述の開示は、理解を明確にするためにある程度詳細に説明されたが、添付の特許請求の範囲内で特定の変更及び修正を実施できることは明らかであろう。したがって、本実施形態は、限定ではなく例示としてみなされるべきであり、本開示の実施形態は、本明細書に提供される詳細に限定されるものではなく、添付の特許請求の範囲内及び均等物内で変更されてもよい。
図1
図2
図3A
図3B
図4A
図4B
図4C
図5
図6
図7