(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-12-04
(45)【発行日】2024-12-12
(54)【発明の名称】コンピューティングシステム及び方法
(51)【国際特許分類】
A63F 13/352 20140101AFI20241205BHJP
A63F 13/355 20140101ALI20241205BHJP
A63F 13/30 20140101ALI20241205BHJP
A63F 13/86 20140101ALI20241205BHJP
G06F 9/50 20060101ALI20241205BHJP
【FI】
A63F13/352
A63F13/355
A63F13/30
A63F13/86
G06F9/50 150A
(21)【出願番号】P 2023061569
(22)【出願日】2023-04-05
(62)【分割の表示】P 2021531532の分割
【原出願日】2019-11-13
【審査請求日】2023-04-18
(32)【優先日】2018-12-03
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】518187455
【氏名又は名称】ソニー・インタラクティブエンタテインメント エルエルシー
(74)【代理人】
【識別番号】100099324
【氏名又は名称】鈴木 正剛
(72)【発明者】
【氏名】スティーブ・アゴストン
【審査官】松谷 洋平
(56)【参考文献】
【文献】米国特許出願公開第2016/0019094(US,A1)
【文献】米国特許出願公開第2013/0254417(US,A1)
【文献】米国特許出願公開第2010/0113159(US,A1)
【文献】米国特許出願公開第2018/0024868(US,A1)
【文献】米国特許出願公開第2018/0093191(US,A1)
【文献】米国特許出願公開第2014/0228108(US,A1)
【文献】国際公開第2018/187032(WO,A1)
【文献】特表2018-512907(JP,A)
【文献】特開2013-109548(JP,A)
【文献】特表2017-523014(JP,A)
【文献】米国特許出願公開第2015/0141152(US,A1)
【文献】米国特許出願公開第2014/0342819(US,A1)
【文献】米国特許出願公開第2015/0375113(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
A63F 13/352
A63F 13/355
A63F 13/30
A63F 13/86
G06F 9/50
(57)【特許請求の範囲】
【請求項1】
分散ゲームエンジンを記憶するためのメモリと、前記分散ゲームエンジンを実行するためのプロセッサとを有するコンピューティングシステムであって、前記分散ゲームエンジンは、前記プロセッサによって実行されるとオンラインゲームのためのリソースのプロビジョンを行うように構成され、前記分散ゲームエンジンは、
前記オンラインゲームの従来のゲームプレイセッションから集められたゲームプレイトレーニングデータから
機械学習アルゴリズムを用いて構築されたリソース配分モデルを有し、前記ゲームプレイトレーニングデータは、前記オンラインゲームの前記従来のゲームプレイの間にユーザから受け取った入力、前記オンラインゲームのゲーム状態、成功基準
、及び、前記オンラインゲームのさまざまな成功基準を満たすために必要とされたリソースタイプと各タイプのリソースの量を特定するために使用されたリソース配分モデルの出力を含むものであり、
前記リソース配分モデルの
前記出力を分析して
、リソースタイプの構成を規定する出力と、前記従来のゲームプレイセッションの間に前記オンラインゲーム用に規定された前記成功基準を満た
すために割り当てられた各タイプのリソースの
量と、を特定するリソース分配エージェントを有し、かつ、
特定された各リソースタイプは、前記オンラインゲームの前記ゲームプレイトレーニングデータの特定の特徴を処理するように構成され、前記特定の特徴は、前記分散ゲームエンジンの特定の機能部分に対応し、
前記オンラインゲーム用に規定された前記成功基準を満たすために、その後のゲームプレイセッションの間に異なるリソース
タイプに対して予測された需要を満たすために
前記リソースの前記構成に対する更新を受信する構成エージェントを有し、
前記分散ゲームエンジンは、
前記その後のゲームプレイセッションのための前記構成への前記更新に基づいて、前記異なるリソースタイプ及び前記異なるリソースタイプのそれぞれの前記量のプロビジョンを行うように構成される、
コンピューティングシステム。
【請求項2】
前記分散ゲームエンジンは、
前記分散ゲームエンジンの機能部分を複数の処理ノードにわたって分散させるように構成された複数の管理ノードを有し、
前記複数の処理ノードの各処理ノードが、前記分散ゲームエンジンの前記特定の機能部分に対応する前記オンラインゲームの前記特定の機能を処理するための前記リソースを提供し、
現在の構成に基づいた前記オンラインゲームの前記機能部分の特定の一つの
リソースの処理に必要な
リソースを有する前記複数の処理ノードのうちのいくつかの処理ノードを特定するように構成されたリソース分配エージェントを有し、
プロセス同期層を有し、前記プロセス同期層は、前記複数の各処理ノード及び前記複数の各管理ノードとのインターフェースとして機能して、前記ユーザのクライアントデバイスにおいてレンダリングするためのビデオフレームを生成する前記オンラインゲーム用の前記機能部分を実行するための
前記リソースのプロビジョンを行うものである、
請求項1に記載のコンピューティングシステム。
【請求項3】
前記リソース配分モデルは、前記分散ゲームエンジンの前記機能部分のうち前記特定のものを処理するために必要な
前記各タイプの処理ノードの
各タイプ及び数を特定する、
請求項2に記載のコンピューティングシステム。
【請求項4】
各機能部分は、前記分散ゲームエンジンの特定のゲームエンジンタスクを特定し、
前記プロセス同期層は、仮想バスを有して、
ゲームエンジンタスクのうち前記オンラインゲーム用の特定のものを処理するために前記複数の処理ノードのうち選ばれた処理ノードの割当てを管理し、
前記ゲームエンジンタスクのうち前記特定のものを前記選ばれた処理ノードに分散させて処理し、
処理結果を、前記複数の処理ノードのうち前記選ばれた処理ノードと残りのものとの間で、及び前記選ばれた処理ノードと前記構成エージェントとの間でルーティングし、かつ、
前記複数の処理ノードの間に分散された前記ゲームエンジンタスクの処理を同期させ、前記同期では、前記ゲームエンジンタスクのそれぞれにおける処理タイミングに従って前記ゲームエンジンタスクの待ち行列を管理する、
請求項2に記載のコンピューティングシステム。
【請求項5】
前記複数の各管理ノード及び前記複数の各処理ノードは、実行用にサーバを明確に分離するために割り当てられ、
前記サーバは、単一のデータセンタ内に分散されるか、または地理的に分散した複数のデータセンタにわたって分散される、
請求項2に記載のコンピューティングシステム。
【請求項6】
前記サーバは、スタンドアロン物理サーバ、または1つ以上のデータセンタの一部である物理サーバ、または仮想サーバ、またはコンテナサーバ、またはそれらの2つ以上の組み合わせである、
請求項
5に記載のコンピューティングシステム。
【請求項7】
前記オンラインゲームはゲームクラウドシステム上で実行される、
請求項1に記載のコンピューティングシステム。
【請求項8】
前記ユーザは、異なるジオロケーションから前記オンラインゲームをアクセスし、
かつ、前記分散ゲームエンジンは、地理的に分散したサーバのネットワークを介してリソースを供給するように構成される、
請求項
7に記載のコンピューティングシステム。
【請求項9】
オンラインゲーム用のリソースのプロビジョニングを行うための方法であって、
前記オンラインゲームの1つ以上の従来のゲームプレイセッションから集められたゲームプレイトレーニングデータから
機械学習アルゴリズムを用いてリソース配分モデルを構
築し、前記ゲームプレイトレーニングデータは、前記オンラインゲームの前記1つ以上の従来のゲームプレイセッションの間にユーザから受け取った入力、前記オンラインゲームのゲーム状態、及び成功基準を
有し、
リソース分配エージェントを用いて前記リソース配分モデルの出力を分析して、
リソースタイプの構成を規定する出力を特定し、前記1つ以上の従来のゲームプレイセッションの間に前記オンラインゲーム用に規定された前記成功基準を満たす
ために割り当てられた各タイプのリソースの
量と、を分析し、
特定された各リソースタイプは、前記オンラインゲームの
ゲームプレイから生成された前記ゲームプレイトレーニングデータの特定の特徴を処理するように構成され、前記特定の特徴は、分散ゲームエンジンの特定の機能部分に対応し、
前記オンラインゲームのその後のゲームプレイセッションの間に前記オンラインゲーム用に規定された前記成功基準を満たすために、異なるリソース
タイプに対して予測された需要を満たすための
前記リソースの
前記構成に対する更新を受信し、
分散ゲームエンジンを用いて、前記予測された需要を満たすために、
前記異なるリソースタイプ及び前記異なるリソースタイプのプロビジョンを行い、 前記プロビジョンは、前記その後のゲームプレイセッションのリソースの
前記構成への前記更新に基づくものであり、前記プロビジョンされたリソースは、前記オンラインゲームの前記成功基準を満たす、
方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、オンラインゲーム用のリソース配分に関し、より具体的には、人工知能(AI)モデルの構築及びAIモデルを用いたオンラインゲーム用のリソースの特定及び配分に関する。
【背景技術】
【0002】
オンラインゲームはゲーミング世界の中で非常に人気が高まっている。オンラインゲーム、特に、大規模なマルチプレイヤーオンライン(MMO)ゲームでは、膨大な数のユーザがコンピュータのネットワークを介してゲームに同時に参加する。その結果、MMOゲームでは、ユーザに満足のいくゲームプレイ経験を提供するために、オンラインゲームのゲームロジックを実行するためのリソースの多くの調整が必要となる。ある場合には、オンラインゲームはゲームコンソールのネットワークを用いてプレイされ、各ゲームコンソールは特定のユーザ専用である。ゲームプレイセッションの間、ゲームコンソールの数はオンラインゲームの需要に応じてスピンアップまたはスピンダウンされる。各ゲームコンソールによって、オンラインゲーム用の利用可能なリソースが、対応するユーザに対して提供される。個々のゲームコンソールのリソースは独立して制御されて、ユーザの間で共有されることはない。
【0003】
他の例では、オンラインゲームはゲームクラウドシステムのリソースを用いてゲームクラウド上で実行され、ユーザはクラウドサーバ上で実行されるオンラインゲームに接続することができる。ゲームクラウド上でオンラインゲームを実行する利点は、ゲームの実行に必要なリソースが1つに集まることである。しかし、オンラインゲームを同時にプレイするプレーヤの数が増えると、ゲームクラウドシステムリソースは次第に逼迫し、オンラインゲームのユーザに許容品質のサービスを提供することが難しくなる。リソース上が逼迫する原因としては、オンラインゲームに対して生成されるデータの量が挙げられる。たとえば、MMOゲームでは、各プレーヤに対して、自分たちの独自の知覚に基づくゲームデータを提供しなければならない。リソースが逼迫することを回避するために、ゲーム開発者は、ゲームプレイセッションにおいて同時にプレイすることができるユーザの数に制限を設けている。制限を設けても、リソースが逼迫することによって待ち時間が生じる場合があり、ユーザに対するゲームプレイ経験に著しく影響する。特にペースの速いゲームでそうであり、このようなゲームでは、ユーザが自分の次の動きに対する作戦を練ることができるように、ユーザにゲームデータを迅速に流す必要がある。さらに、ユーザの分布に基づいてクラウドサーバ上で実行されるオンラインゲームにリソースを配分することは、極めて複雑である。特許文献1には、このようなMMOゲームにおけるリソース管理システムが開示され、このリソース管理システムでは、リアルタイムにゲームサーバをスケールアップまたはスケールダウンすることでゲームサーバホストのリアルタイムなスケーリングを行っている。
【先行技術文献】
【特許文献】
【0004】
【0005】
本開示の実施形態は上記背景の下になされたものである。
【発明の概要】
【0006】
本開示の実施形態は、オンラインゲーム用リソースのプロビジョンニング(予め用意あるいは準備する)のためのシステム及び方法に関する。オンラインゲームは、複数の管理ノードと処理ノードとを含む分散ゲームエンジンを用いて実行される。管理ノードを用いて、分散ゲームエンジンの機能部分を特定し、複数の処理ノードに分散させて処理する。機能部分は、オンラインゲームに対する具体的な特徴を処理する分散ゲームエンジンのゲームエンジンタスクに関係する。機能部分はリソース配分モデルを用いて処理ノードに分散される。リソース配分モデルは、機械学習アルゴリズムを用いて構築されて、ゲームプレイトレーニングデータによってトレーニングされる。ゲームプレイトレーニングデータには、ユーザ(すなわち、プレーヤ、開発者)から受け取った入力、過去のゲームプレイから取得したオンラインゲームのゲーム状態、及び成功基準が含まれる。リソース配分モデルでは、オンラインゲームにとって必要なゲームエンジンの機能部分、機能部分を処理するために必要なリソース、及び特定した機能部分を処理するために必要なリソースをもたらすことができるクラウドゲーミングシステム内の処理ノードのうち特定のもの、を特定する。配分エージェントを用いて、構成エージェントと通信して、特定した機能部分を処理ノードのうち特定のものに配分して処理する。
機械学習アルゴリズムでは、オンラインゲームの開発者からの最初の入力を用いて配分モデルを作成する。作成した配分モデルを次に、ユーザ(プレーヤ、観戦者など)からの入力、以前及び現在のゲームプレイに対するオンラインゲームのゲーム状態(サーバのネットワークから集めた)を用いてトレーニングする。機械学習アルゴリズムは、オンラインゲームに対して規定した成功基準と照らし合わせてゲーム状態を分析して、オンラインゲーム用のゲームエンジンの機能部分を処理するリソースを有する適切な処理ノードの最適量を特定する。作成したリソース配分モデルには、複数の相互接続された処理ノードが含まれており、1つ以上の処理ノードが、ゲームエンジンの特定の機能部分を処理するために割り当てられている。各処理ノードはサーバによって表される。サーバは、スタンドアロン物理サーバ、またはデータセンタの一部である物理サーバ、仮想クラウドシステムの一部である仮想サーバ、またはコンテナサーバ、またはそれらの任意の組み合わせとすることができる。データセンタ内の物理サーバは、単一サーバとすることもできるし、またはラックルータ(たとえば、トップオブラックルータ)を通してアクセスされるデータセンタ内のサーバのラックの一部とすることもできる。
【0007】
分散ゲームエンジンは、ゲームエンジンタスク(すなわち、機能部分)のうちオンラインゲーム用の特定のものを、リソース配分モデル(あるいはリソースアロケーションモデル)から特定された処理ノードのうち対応するものへ割り当てることを管理すること、特定のゲームエンジンタスクを適切な処理ノードへ分散させて処理すること、処理結果を、処理ノード間で、及び処理ノードと構成エージェントとの間でルーティングすること、ならびにゲームエンジンタスクを処理するためのプロセスタイミングを考慮に入れながらゲームエンジンタスクの待ち行列を管理することによって、処理ノードの間に分散されたゲームエンジンタスクの処理を同期させること、を行うように構成される。
【0008】
処理ノードのリソースを用いて処理された機能部分には、オンラインゲームの特定のコア領域が含まれていてもよい。たとえば、いくつか例を挙げると、ゲーム物理、グラフィックス、オーディオ、ロジック、人工知能(AI)、スクリプティング、アニメーション、ネットワーキング、ストリーミング、最適化、メモリ管理、スレッディング、ローカリゼーションサポートである。前述の機能部分は単なる例として提供しており、これらに限定されるものではない。分散ゲームエンジンのリソース配分モデルによって、フレームワークとして、オンラインゲームを盛り上げるために用いられるオンラインゲームの基本的な特徴を処理するために多数の再利用可能なコンポーネント(すなわち、処理ノード)が特定されるフレームワークが提供される。リソース配分モデルは、ある時間に渡ってオンラインゲーム実行から集められたユーザ入力(すなわち、トレーニングデータの一部)により継続的に更新される。集めたユーザ入力を、配分モデルを更新する前に、成功基準により分析する。配分モデルへの更新には、ゲームエンジンの機能部分(すなわち、ゲームエンジンタスク)を処理するために必要とされ得るリソースの数及びタイプに対する調整が含まれていてもよい。入力を集めること及びリソース配分モデルを更新することは、ユーザがオンラインビデオゲームにアクセスしている間は継続される。
【0009】
一実施形態では、オンラインゲーム用のリソースのプロビジョニングを行うための分散ゲームエンジンが開示されている。分散ゲームエンジンは、複数の処理ノードにわたって分散ゲームエンジンの機能部分を分散させるように構成された複数の管理ノードを含む。分散ゲームエンジンはまた、ゲームプレイトレーニングデータから構成されたリソース配分モデルを含む。トレーニングデータには、ユーザから受け取った入力、オンラインゲームのゲーム状態、及び成功基準を含む。分散ゲームエンジンはさらに、リソース配分モデルにアクセスし、構成エージェントと通信して、機能部分のうちオンラインゲーム用の特定のものを処理するために必要な複数の処理ノードを特定するためのリソース配分エージェントを含む。機能部分の各1つを処理するために必要な処理ノードのタイプ及び数は、リソース配分モデルが指示するリソース配分に基づく。分散ゲームエンジンは、プロセス同期層であって、複数の各処理ノード及び複数の各管理ノードと接続して機能して、ユーザのクライアントデバイスにおいてレンダリングするためのビデオフレームを形成するオンラインゲームを実行するための処理ノードのリソースをもたらすプロセス同期層を含む。
【0010】
別の実施形態では、オンラインゲーム用のリソースのプロビジョニングを行うための方法が開示されている。本方法は、オンラインゲーム用のトレーニングデータを受け取ることを含む。トレーニングデータによって、ユーザ入力、オンラインゲームに対するゲーム状態及び成功基準が特定される。本方法はまた、トレーニングデータからオンラインゲーム用のリソース配分モデルを作成することを含む。作成したリソース配分モデルによって、オンラインゲームに対して用いられる分散ゲームエンジンの機能部分を処理するように構成された複数の処理ノードが特定される。複数の処理ノードのうち選ばれたものは、分散ゲームエンジンの特定の機能部分を処理する処理リソースをもたらすように構成されている。複数の処理ノードは、リソース配分モデルが指示するリソース配分により、オンラインゲーム用の機能部分を処理するように配分される。各機能部分によって特定のゲームエンジンタスクが特定される。配分は、ゲームエンジンタスクのうち、オンラインゲーム用の特定の機能部分に対応付けられる選ばれたものを処理するために、選ばれた処理ノードを割り当てることを管理すること、ゲームエンジンタスクのうち選ばれたものを選ばれた処理ノードに分散させて処理すること、処理結果を、複数の処理ノードのうち選ばれた処理ノードと残りのものとの間で、及び選ばれた処理ノードと処理ノード用にリソースのプロビジョニングを行うために用いられる構成エージェントとの間でルーティングすること、複数の処理ノードの間で分散されたゲームエンジンタスクの処理を同期させること、を含む。
【0011】
本開示の他の態様は、以下の詳細な説明とともに添付図面から明らかになる。添付図面では本開示の原理を一例として例示している。
【0012】
本開示は、以下の説明とともに添付図面を参照することにより最良に理解され得る。
【図面の簡単な説明】
【0013】
【
図1】本開示の一実施形態により、リソースのプロビジョニングを行う際に用いるゲームクラウドシステムの単純化した物理的な図である。
【
図2】本開示の一実施形態により、オンラインゲーム用のリソースのプロビジョニングを行う際にゲームクラウドシステム内で用いる分散ゲームエンジンの単純化したブロック図である。
【
図3】本開示の一実施形態により、オンラインゲーム用のリソースのプロビジョニングを行う際に用いる分散ゲームエンジンの種々のコンポーネントを例示する図である。
【
図3A】本開示の一実施形態により、オンラインゲーム用のリソースのプロビジョニングを行う際に用いるリソース配分モデルを作成してレーニングするために用いるトレーニングデータのコンポーネントを例示する図である。
【
図4A】本開示の一実施形態により、分散ゲームエンジンの機能部分を処理するためのリソースを伴う配分された処理ノードの単純化したブロック図である。
【
図4B】本開示の一実施形態により、分散ゲームエンジンの機能部分を処理するために配分された処理ノードの代替的な実施形態を例示する図である。
【
図4C】本開示の一実施形態により、分散ゲームエンジンの機能部分を処理するために用いる処理ノードの構成に対する更新を示す単純化したブロック図である。
【
図5】本開示の一実施形態により、オンラインゲーム用のリソースのプロビジョニングを行うために分散ゲームエンジンと連結するゲームクラウドシステムの論理構造の単純化したブロック図である。
【
図6】A~Cは、本開示の一実施形態により、オンラインゲーム用の分散ゲームエンジンの機能部分を処理するためのリソースのプロビジョニングを行うために用いる種々のタイプの処理ノードサーバを例示する図である。
【
図7】本開示の一実施形態により、リソースのプロビジョニングを行うために用いることができるデータセンタ内のサーバラックの単純化したブロック図である。
【
図8】本開示の一実施形態により、オンラインゲームを実行するために用いるクラウドゲーミングシステムであって、1つ以上のクライアントデバイスに対するクラウドゲームネットワークを介してゲームデータのフレームをもたらすクラウドゲーミングシステムのシステム図である。
【
図9】本開示の一実施形態により、リソース配分モデルを用いてオンラインゲーム用のリソースのプロビジョニングを行うための方法のフロー動作を例示する図である。
【
図10】本開示の一実施形態により、モデラーを用いてリソース配分モデル(人工知能(AI)モデル)を構築してトレーニングするために用いるコンピューティングデバイス例のコンポーネントを例示する図である。
【発明を実施するための形態】
【0014】
以下の詳細な説明には、説明の目的上、多くの具体的な詳細が含まれるが、当業者であれば、以下の詳細に対する多くの変形及び変更が本開示の範囲内であることが理解されよう。したがって、以下に説明する本開示の形態は、請求項の一般性を何ら失わせるものではなく、また請求項に制限を課すものでもない。
【0015】
概して言えば、本開示の種々の実施形態では、オンラインゲームによって提供されるトレーニングデータを用いてゲームアプリケーション用のリソースアロケーションもでるあるいはリソース配分モデル(すなわち、AIモデル)を構築するために機械学習アルゴリズムを実施するシステム及び方法について説明する。トレーニングデータには、オンラインゲームに対してユーザによって提供される入力、ユーザの入力の影響を受けるゲーム状態、及びオンラインゲームに対して規定した成功基準が含まれる。ユーザの入力は、プレーヤが知ることなくバックエンドサーバ(たとえば、ゲームコンソール、ゲーミングサーバなど)のネットワークを介して集められて、人工知能(AI)ベースのアルゴリズムを用いた機械学習を用いてAIモデルを構築してトレーニングする際に用いられる。トレーニングしたAIモデルを用いて、オンラインゲームの複雑さ(ゲームデータをどのように処理するかを含む)を学習する。たとえば、所与のゲームデータに対してトレーニングしたAIモデルからの出力を分析して、オンラインゲームに対して規定した成功基準を満たすために必要であったリソースを特定する。
【0016】
いくつかの実施形態では、成功基準を、ユーザに対して最適なゲーム経験を実現するためのゲーム関連データを処理するための十分なリソースのプロビジョニングを行うことと規定してもよい。成功基準は、ユーザ入力、ユーザのタイプ(プレーヤ、観戦者など)、及びプレイしているゲームのタイプに基づいてもよい。たとえば、成功基準は、最小待ち時間、または高品質な画像もしくはオーディオ、または効率的なメモリ管理、またはより大きな通信帯域幅などを含むように規定してもよい。このような実施形態では、機械学習アルゴリズムによってトレーニングデータを分析して、所与の入力セットと相関する出力を見つけて、オンラインゲームに対して規定した成功基準を満たす出力になったゲーム関連データを処理するために配分されるリソースを特定する。
こうして、アルゴリズムは、規定した成功基準に対してユーザ入力に対する出力パターンをマッピングして、AIモデルを作成及び/またはトレーニングする。トレーニングしたAIモデルのマッピングを用いて、オンラインゲームの以後のゲームプレイの間に生じる入力セットに対して、リソースに対する予測される需要を決定してもよい。異なる成功基準を満たすユーザの入力に対する異なる出力のマッピングを提供するようにAIモデルをトレーニングしてもよく、アルゴリズムは異なるマッピングを用いて、規定した成功基準に関するオンラインゲームに対するリソース需要を予測することができる。
【0017】
たとえば、高い強度のゲームの場合、成功基準は、オンラインゲームをプレイするユーザが、ゲームデータをタイムリーに受け取ってユーザが自分の次の動きに対する作戦を練ることができるように、ゲームデータに対してより速い処理及びより高い送信速度となることと規定してもよい。ゲームデータの伝送にわずかでも遅れがあると、ユーザのゲームプレイに著しく影響する可能性がある。この例では、アルゴリズムは、トレーニングしたAIモデルを用いて、フレームを処理してクライアントデバイスに伝送する必要な速度(すなわち、特定された成功基準)を達成するために必要なリソースのタイプを特定する。
その結果、トレーニングしたAIモデル内のマッピングを用いて、アルゴリズムは以下のこと、すなわち、以前のゲームプレイ(複数可)の1つ以上において、処理リソースのうち、ゲームデータを処理し、ゲームデータをエンコードし、ゲームデータを速くて効率的な方法でフレームにアセンブルしたより速いCPUを伴うものを用いたということを特定できてもよい。クライアントデバイスにフレームを伝送するためのより高い帯域幅をもたらしたさらなるリソースを特定してもよい。この情報に基づいて、アルゴリズムは、極めて最小の遅れでクライアントデバイスにゲームデータをもたらすためにゲームプレイはこれらのリソースを必要とし得ると予想して、処理リソースを特定し、これらの処理リソースをプロビジョンしてもよい。オンラインゲームにプロビジョンするためにアルゴリズムが特定するリソースは、オンラインゲームにこれまでに割り当てられた同じリソースであってもよいし、または同様もしくはより良好な能力を有するリソースであってもよい。
【0018】
機械学習アルゴリズムは分類子エンジンを用いて、オンラインゲームの異なる特徴を処理するために用いるゲームエンジンの種々の機能部分を特定し、特徴と出力との間の関係を規定するルールを学習し、及び異なる層内に配置されて階層的に相互接続された複数のノード(1つ以上のノードが特徴を特定する)を伴うAIモデルを構築する。またノードは、特徴を処理するために用いたリソースを特定する。AIモデルのノードにおける各特徴を、ルールによって規定された関係パラメータを用いて、他の層における他のノードの1つ以上の特徴とリンクしてもよい。作成したAIモデルを、ゲームプレイ中にユーザから受け取った入力に基づいて各ノードにおける特徴を精緻なものにすることによって、さらにトレーニングしてもよい。
トレーニングしたAIモデルは、成功基準によって規定されたルールに基づいて、入力を異なる出力にマッピングする。ユーザが以後のゲームプレイを開始したときに、トレーニングしたAIモデルを用いて、所望の結果をもたらすために必要なリソースを、現在のゲーム状態(複数可)とオンラインゲームに対して規定した成功基準とに基づいて特定することができる。AIモデルをトレーニングして、異なる成功基準を満たすための種々の結果を特定する。こうして、AIモデルを用いて、特定の成功基準を満たす特定のタイプのリソースに対する需要を予測することができ、オンラインゲームを以後に実行する間に、成功基準を満たすためにリソースの適切なタイプ及び量を迅速にプロビジョンすることができる。
【0019】
最初にAIモデルに基づいて処理リソースを配分した後で、進行中のゲームプレイからユーザ入力を継続的に集めて、AIモデルをトレーニングする際に用いる。トレーニングしたAIモデルのノードにおいて提供された情報を、オンラインゲームに配分されたリソースを調整する際に用いる。たとえば、オンラインゲームの複数の各ユーザが自分たちの独自のペースで進むときに、リソースに対して予測される需要は変化する場合がある。これは、個々のユーザ入力によって生成したゲームデータ及び結果として生じるオンラインゲームのゲーム状態の変化に起因する場合がある。その結果、精緻化されたAIモデルを用いて、オンラインゲーム用の必要なリソースを特定して予測的にプロビジョンする。
【0020】
種々の実施形態の前述した一般的な理解を用いて、次に実施形態の詳細例について、種々の図面を参照して説明する。
【0021】
図1は、機械学習アルゴリズムを用いてトレーニングされたリソース配分モデルを用いてオンラインゲーム用のリソースのプロビジョニングを行うために用いるシステムの単純化した物理的な図である。システムには、ユーザ1~nに対応付けられる複数のクライアントデバイス100が含まれており、これらはネットワーク200(たとえば、インターネット)を介してゲームクラウドシステム(GCS)300にアクセスする。ゲームクラウドシステムには、本開示の一実施形態により、1つ以上のオンラインゲームアプリケーションのインスタンスを実行するバックエンドサーバのネットワークが含まれている。
バックエンドサーバは、1つ以上のゲームの1つ以上のインスタンスを実行するように構成されたゲームサーバである。ゲームサーバは、ゲームクラウドシステムにおいて利用可能な任意のタイプのサーバコンピューティングデバイスであってもよい。たとえば、ゲームサーバは、ホスト上でユーザに対するオンラインゲームのインスタンスを実行するゲームプロセッサをサポートする仮想マシンを管理してもよい。クライアントデバイスは、ネットワーク200にアクセスすることによってバックエンドサーバと相互に作用するためにメモリ、プロセッサ、及びネットワークインターフェースを含む任意のコンピューティングデバイス(たとえば、携帯電話、タブレットコンピュータ、パーソナルコンピュータなど)とすることもできるし、またはバックエンドサーバと相互に作用して計算機能を得るためのインターフェースをもたらすシンクライアントとすることもできる。
【0022】
いくつかの実施形態では、オンラインゲームを、ゲームクラウドシステムの複数のサーバと、ネットワーク200を介してプレーヤのクライアントデバイスにストリーミングされるゲームデータとによって遠隔に実行してもよい。プレーヤは、ゲームのゲームプレイに参加しているユーザである。オンラインゲームのゲームプレイは、プレーヤによって、クライアントデバイス内に設けられたコントロールオプションを用いるかまたはクライアントデバイスに通信可能に接続されたコントローラを用いて制御される。他の実施形態では、オンラインゲームをクライアントデバイスにおいてローカルに実行してもよく、オンラインゲームを実行することに由来するメタデータを、ネットワーク200を介してバックエンドサーバに伝送して、ゲーム状態に影響を与え、またAIモデルを作成してレーニングする目的でトレーニングデータとして用いる。
【0023】
AIモデルをトレーニングするために用いるトレーニングデータには、ゲームプレイの特定の時点におけるオンラインゲームのゲーム状態が含まれる。ゲーム状態は、オンラインゲームのゲームプレイの複雑さを与える。したがって、ゲーム状態には、たとえば、ゲームキャラクター、ゲームオブジェクト、ゲームオブジェクト属性、ゲーム属性、ゲームオブジェクト状態、グラフィックオーバーレイなどが含まれていてもよい。またゲーム状態には、オンラインゲームのインスタンスを実行する際に用いるサーバのネットワークのあらゆるデバイスまたはモジュールまたはコンポーネントの状態が含まれる(たとえば、ゲームプレイデータを生成してレンダリングするために用いる、CPU、GPU、メモリ、レジスタ値、プログラムカウンタ値、プログラマブルDMA状態、DMAに対するバッファリングされたデータ、オーディオチップ状態、CD-ROM状態、利用可能な通信帯域幅など)。
またゲーム状態は、現時点でレンダリングしている実行可能コードの部分と、ゲームプレイを継続するためにロードする必要がある実行可能コードの部分とを特定する。ゲーム状態に含まれるプレーヤに対するユーザ保存データには、プレーヤのユーザプロファイル、ゲームオブジェクトに対するユーザカスタマイゼーション、ゲームタイプ、プレーヤが選択したゲームレベル/難易度、ゲームツールの量/勝利/ポイント/キャッシュ/賞などが含まれていてもよい。またゲーム状態には、オンラインゲームのゲームプレイに対応付けられるゲーム詳細を理解する際に有用なランダムに発生させた特徴またはAIオーバーレイまたはゲーム複雑さが含まれていてもよい。
【0024】
ゲームクラウドシステム上で実行されるオンラインゲームは、大規模なマルチプレイヤーオンライン(MMO)ゲームであってもよく、ゲームサーバには、プレーヤ(すなわち、ユーザ)のゲームロジックとのやり取り及び各プレーヤの対応するゲーム環境内でのプレーヤ間のやり取りを可能にするようにオンラインゲームのゲームロジックと通信するマルチプレイヤー分散ゲームエンジン310が含まれていてもよい。ゲームロジックは、MMOゲームセッションの間に各プレーヤに対するゲーム状態を管理するように構成されている。ゲーム状態には、特定の時点における各プレーヤに対するゲームプレイのゲーム状態、及び各プレーヤの保存データ(プレーヤによって提供される任意のオンラインゲーム用ゲームカスタマイゼーションを含む)が含まれる。マルチプレイヤー分散ゲームエンジン310は、ゲーム状態を用いて、MMOゲームセッションに参加しているプレーヤの各ゲーミング環境内にオブジェクト及びキャラクタをオーバーレイ/挿入することができる。
【0025】
分散ゲームエンジン310は複数のモジュール(たとえば、いくつか例を挙げると、ユーザアカウントモジュール310a、ゲームタイトルモジュール310b、ユーザ評価基準モジュール310c、及びゲーム状態評価基準310dである)と相互に作用する。ユーザアカウントモジュール310aを用いて、オンラインゲームのゲームプレイ用にGCS300にアクセスするユーザを認証する。ゲームタイトルモジュール310bを用いて、無料のゲーム、ユーザが購入したゲームなどを含むゲームプレイ用に、ユーザアカウントに対応付けられるユーザに対してGCS300において利用可能なゲームタイトルを決定する。分散ゲームエンジン310は、ゲームプレイ用のゲームのユーザの選択に応じて、GCS300内の複数のサーバ上でゲームのインスタンスを実行する。ユーザがオンラインゲームをプレイすると、ユーザ入力が集められて、ユーザ及びゲーム評価基準を更新するために用いられる。
ユーザ入力はゲームロジックによって処理されて、ゲームのゲーム状態に影響を与え、ユーザのクライアントデバイスに伝送するためのゲームプレイデータを生成する。オンラインゲームのゲーム状態が分析されて、ユーザのユーザ評価基準とオンラインゲームのゲーム状態評価基準とが特定される。ユーザ評価基準モジュール310cはユーザのユーザ評価基準によって更新される。ユーザ評価基準モジュール310cに更新されるユーザ評価基準の一部には、ゲーム識別子、ユーザがオンラインゲームにアクセスした時間、ユーザがゲームのプレイに費やした時間、プレイしたゲームレベル、各ゲームレベルで費やした時間、各ゲームレベル内で打開した問題の数、各問題の打開を試みた数、ゲームスコア/勝利、ユーザの技術レベルなどが含まれる。同様に、ゲーム状態評価基準モジュール310dは、オンラインゲームのゲームプレイデータからオンラインゲームのゲーム状態評価基準を抽出する。
【0026】
分散ゲームエンジン310はリソース配分エージェント315と相互に作用して、ゲームの最適なゲームプレイを実現するのに必要なリソース320a~320mを特定する。リソース配分エージェント315は、機械学習アルゴリズムを用いて作成されたリソース配分モデルを参照して、オンラインゲームの実行にとって必要なリソースのタイプ及びリソースの各タイプの量を予測する。予測は、オンラインゲームの状態、ユーザ入力、及びオンラインゲームに対して規定した成功基準に基づく。成功基準が指示する異なるタイプのリソース対して予測される需要に基づいて、リソース配分エージェントは構成エージェントに信号を送って、オンラインゲームを効率的に実行できるように、オンラインゲーム用のリソース320~320mのプロビジョニングを行う。
【0027】
図2に、ゲームプレイ中に受け取ったユーザの入力に応じて、オンラインゲームに対して生成されたゲームデータの特徴に関係づけられる分散ゲームエンジンの機能部分を処理するための物理リソースを用いる分散ゲームエンジンの実施形態を例示する。オンラインゲームは、複数のユーザがアクセスする大規模なマルチプレイヤーオンライン(MMO)ゲームであってもよい。複数のユーザはチームの一部、もしくはソーシャルコンタクトであってもよいし、または独立したユーザが、都市にまたがる地理的領域にわたって、または複数の都市にわたって、または国じゅうから、または地球全体からオンラインゲームにアクセスするものであってもよい。ユーザがオンラインゲームに効率的にアクセスできるように、地理的領域にわたって分散したサーバ/システムリソースのネットワークを用いる分散ゲームエンジンを用いてオンラインゲームを実行して、オンラインゲームのゲームエンジン及びゲームロジックのインスタンスを実行する。
【0028】
概して言えば、ゲームエンジンは、ゲーム(たとえば、MMOゲーム)に対する土台として機能するソフトウェア層であり、オンラインゲームを開発するために用いるフレームワークをもたらす。ゲームエンジンは、あらゆるゲームにとって必要な共通の関連タスク(すなわち、ゲームエンジンタスク)を行う詳細を抽出し、一方で、オンラインゲーム開発者は、どのようにオンラインゲームをプレイすべきかについての詳細を提供するゲームロジックを示す。
ゲームエンジンフレームワークには、オンラインゲームを盛り上げるオンラインゲーム用のいくつかの機能部分(すなわち、基本的な特徴)を処理するための複数の再利用可能なコンポーネントが含まれる。ゲームエンジンによって処理される基礎となる基本的な特徴には、物理(たとえば、衝突検出、衝突応答、軌跡、重力に基づいたオブジェクトの動き、摩擦など)、グラフィックス、オーディオ、人工知能、スクリプティング、アニメーション、ネットワーキング、ストリーミング、最適化、メモリ管理、スレッディング、ローカリゼーションサポート、その他多くが含まれていてもよい。
再利用可能なコンポーネントには、オンラインゲームに対して特定された基本的な特徴を処理するために用いるプロセスエンジンが含まれる。ゲーム実行時の間、ゲームエンジンは、オンラインゲームのゲームロジックを管理し、ゲームデータを処理するためにゲームエンジンの機能部分の配分及び同期を最適な方法で管理し、レンダリングするためにクライアントデバイスに伝送して戻されるゲームデータのフレームを作成する。現在利用できる種々のゲームエンジンによって、異なるコア機能が得られ、オンラインゲームを実行するために利用可能な機能に基づいて適切なゲームエンジンを選択してもよい。
【0029】
図2に例示する実施形態では、ゲームエンジン及びゲームロジックのインスタンスは複数のサーバ(各サーバはゲームエンジンの特定の機能部分を実行する)にわたって分散されている。異なるサーバが異なるインスタンスを同時に実行することによってゲームデータを並列に処理してもよい。このように、分散ゲームエンジンによって、ゲームデータのより速くて効率的な処理が可能になる。ゲームエンジンは、オンラインゲームを盛り上げるために必要な複数の機能部分を処理するように構成してもよい。いくつかの実施形態では、MMOゲーム環境に対して開発される各オンラインゲームが、オンラインゲームが機能するために必要なゲームエンジンの異なる機能部分を特定してもよい。
他の実施形態では、MMOゲーム環境に対して開発されるオンラインゲームのすべてが、オンラインゲームの対応するものを盛り上げるために同じタイプの機能部分を必要としてもよい。すべてのオンラインゲームが同じタイプの機能部分を特定する実施形態では、オンラインゲームのうち特定のものが、機能部分のうち選ばれたものを他のものよりも強調してもよい。この強調は、オンラインゲームにアクセスするユーザのタイプ、ゲームのタイプ、オンラインゲームのゲーム状態、及びオンラインゲームに対して規定した成功基準に基づくものであってもよい。たとえば、ユーザはプレーヤタイプまたは観戦者タイプであってもよい。したがって、オンラインゲームにプレーヤがアクセスしたときには、この強調は、ゲームデータを速くて効率的な方法で提供することができる機能部分(すなわち、ゲームデータをクライアントデバイスに最小待ち時間で提供するために物理、アセンブリング/エンコーディング、及び帯域幅に関係する機能部分)に関するものであってもよい。
オンラインゲームに観戦者がアクセスしたときには、強調は、観戦者が追うことを選んだ特定のプレーヤのゲームプレイまたは全般的なオンラインゲームにアクセスすることができる機能部分(たとえば、高品質なゲームデータをもたらすために物理、オーディオ、スクリプティング、及びシーングラフに関係する機能部分)に基づいてもよい。他の形態では、オンラインゲームは高い強度のタイプまたは低い強度のタイプであってもよい。したがって、オンラインゲームが高い強度タイプであるときには、強調は、物理、より速い処理、アセンブリング及び伝送に対しであってもよく、一方で低い強度のゲームの場合には、強調は、物理、テクスチャリング、シェーディング、アニメーション、シーングラフ、スクリプティング及び/または音に対してであってもよい。同様に、プレーヤは高レベルプレーヤまたは初心者または中間レベルプレーヤであってもよい。したがって、プレーヤが高レベルプレーヤであるときには、強調は、より速い処理、アセンブリング/エンコーディング及び帯域幅に対してであってもよく、一方で中間レベルまたは初心者レベルプレーヤの場合には、強調は、異なる機能部分に対してであってもよい。他の実施形態では、異なるMMOゲームは、異なるタイプの機能部分を強調してもよい。
【0030】
機能部分は、オンラインゲームの開発者が特定してもよいし、またはオンラインゲームのゲームロジックを分析することによって決定してもよい。オンラインゲームの使用要求事項に基づいて、ゲームエンジン及びゲームロジックのインスタンスを複数のサーバ(すなわち、処理ノード)上で実行してもよい。各ゲームエンジンインスタンスは、特定のプロセスエンジンと連結するサーバ上で実行されて、オンラインゲームのゲームプレイから生成されたゲームデータの具体的な特徴に関する機能部分を、規定した成功基準に基づいて処理する。
図2に例示する単純化した実施例では、ゲームエンジン、オンラインゲームのゲームロジック、ゲーム1のインスタンスは、6サーバ(サーバ1~6)上でインスタンス化されている。各サーバは、オンラインゲームのゲーム1に対するゲームデータの特定の特徴に関するゲームエンジンの特定の機能部分を処理するために用いられている。たとえば、サーバ1(すなわち、処理ノード1)を用いて物理エンジンと連結してオンラインゲーム用のゲームデータのゲーム物理特徴を処理してもよく、サーバ2(すなわち、処理ノード1)を用いてテクスチャリングを処理してもよく、サーバ3(すなわち、処理ノード1)をシェーディングに対して用いる等してもよい。ゲームエンジンのインスタンスは、第2のサーバに対する入力として働く第1のサーバからの出力(すなわち、機能部分の処理からの結果)、第3のサーバに対する(または第1のサーバに対する)入力として働く第2のサーバからの出力などを有することによって、ゲームデータの反復処理をもたらす。
図2に例示する実施形態では、単一サーバ(すなわち、処理ノード)が、ゲームエンジンの特定の機能部分を処理するために用いるゲームエンジン及びゲームロジックのインスタンスを実行するために割り当てられている。他の実施形態では、複数のサーバ(それぞれ、ゲームエンジン及びゲームロジックのインスタンスを実行する)が、ユーザ入力及び成功基準が指示する処理に対して予測される需要に基づいて特定の機能部分を処理するために割り当てられていてもよい。ゲームエンジン及びゲームロジックは、オンラインゲームを盛り上げるために必要なゲームエンジンの異なる機能部分を処理するために複数のサーバ上でインスタンス化されているため、ゲームエンジンは「分散されている」と言われる。したがって、本出願で用いる分散ゲームエンジンに対するいかなる言及も、ゲームエンジンとゲームロジックの対応部分とが複数のサーバ上でインスタンス化される構成を指している。
【0031】
異なるサーバから出力されるゲームデータは同期され、アセンブルされ、エンコードされ、クライアントデバイスの対応するものに伝送されてレンダリングが行われる。またゲームエンジンには、同期エンジン(図示せず)であって、異なるサーバへのゲームエンジンの種々の機能部分の分配を同期させること、異なるサーバに割り当てられたゲームエンジンの異なる機能部分の処理を同期させること、及び処理結果をサーバ間及びサーバと構成エージェントとの間でルーティングすることを行うために用いられる同期エンジンが含まれる。分散ゲームエンジンの構成エージェント(図示せず)を用いて、特定のタイプのゲームエンジンの機能部分を処理するために用いられているサーバ、ならびに特定のタイプの機能部分を処理するために割り当てられるサーバのタイプ及び数の経過を追う。構成エージェントは、分散ゲームエンジンのリソース配分エージェント315と相互に作用して、特定のタイプ(複数可)のゲームエンジンの機能部分をオンラインゲームに対して規定した成功基準に基づいて処理するためにさらなるサーバ(すなわち、処理リソース320)をプロビジョンしてもよい。
【0032】
処理リソースの配分は、ユーザがゲームプレイのためにオンラインゲームにアクセスする前に行ってもよく、このような配分は、機械学習アルゴリズムを用いて開発されたAIモデルから決定されるリソースに対して予測される需要に基づいている。ユーザがゲームプレイのためにオンラインゲームにアクセスするとき、クライアントデバイスから受け取ったユーザの入力をモニタして、オンラインゲームのゲーム状態に影響を与えるために用いる。ユーザの入力及びオンラインゲームのゲーム状態を分散ゲームエンジンが用いてAIモデルを作成し、AIモデルからの情報を用いて、オンラインゲームの最適なゲームプレイ経験を実現するためにさらなる処理リソースのプロビジョニングを行う必要があるかどうかを判定する。
【0033】
図3に、オンラインゲーム用のリソースのプロビジョニングを行うために用いる分散ゲームエンジンの種々のコンポーネントを特定する実施例を例示する。オンラインゲームは、異なるジオロケーションからユーザがオンラインゲームにアクセスすることができるように、ゲームクラウドシステム300の複数のサーバ上でインスタンス化され得る大規模なマルチプレイヤーオンラインゲームであってもよい。分散ゲームエンジン310は、ゲームクラウドシステム300の一部であり、オンラインゲームを盛り上げるために必要な機能部分が含まれている。機能部分は別個のサーバ上で実行することができる。
分散ゲームエンジン310は、複数のユーザのクライアントデバイス100と、ネットワークインターフェースを用いてネットワーク200を介して、オンラインゲームのゲームプレイ(たとえば、ゲーム1)中に通信し、オンラインゲームに対するユーザの入力を受け取る。ユーザの入力に応じて、ビデオゲームデータのフレームが作成され、エンコードされ、クライアントデバイス100に戻されて、レンダリングが行われる。分散ゲームエンジン310にはグルーロジック306が含まれている。グルーロジック306は、異なるクライアントデバイスから異なるユーザの入力を受け取り、それに応じて、各クライアントデバイスを対象とすべきゲームデータのフレームを特定し、ゲームデータを共に束ねて、ユーザのクライアントデバイスにゲームデータのフレームを転送する。
【0034】
ゲームエンジンは、ゲームクラウドシステム300の1つ以上のバックエンドサーバ上で実行される。バックエンドサーバは機械学習エンジンを提供し、たとえば、ユーザから受け取った入力に応じて生成されたゲームデータを分析し、ユーザがゲームプレイ用に選択したオンラインゲームに対するリソース配分モデル(AIモデル)315をトレーニングする。AIモデルは、最初に、オンラインゲームの開発者により提供される入力を処理することで得られるゲームデータから作成される。開発者により提供される入力は、開発者が行うシミュレートされたゲームプレイからであってもよいし、またはオンラインゲームをプレイする制御されたユーザグループから取得される入力であってもよい。作成したAIモデルを次に、進行中に、異なるユーザのゲームプレイからの入力を用いてトレーニングする。ユーザの入力を用いてオンラインゲームのゲーム状態を推進する。AIモデルは、相互接続されたノードの層を用いて作成される。各ノードはゲームデータの異なる特徴に関する。AIモデルのノードには特徴が実装され、オンラインゲームのゲームプレイの複雑さを理解するために相互関係が設けられている。AIモデルへのゲームデータ入力によって、種々のリソース構成出力が、オンラインゲームに対して規定された異なる成功基準に基づいて特定される。異なる成功基準に対する出力は、AIモデルの異なる相互関係経路をたどることによって特定される。たとえば、特定の成功基準、ゲーム入力、及びゲーム状態が入力として提供されているとき、AIモデルを用いて、オンラインゲームのゲーム状態に対する特定の成功基準を達成するために必要な特定のリソース構成を特定することができる。
【0035】
図3に例示した分散ゲームエンジンには、複数の管理ノード302及び複数の処理ノード308(オンラインゲームに対して生成されるゲームデータを処理するために用いられる)が含まれている。処理したゲームデータからの情報を用いて、AIモデルを構築及びトレーニングし、またAIモデルを用いて、オンラインゲームにとって必要な特定のリソース構成を予測する。複数の各管理ノード302及び処理ノード308は、オンラインゲームのゲームエンジン及びゲームロジックのインスタンスを実行する。各処理ノードまたは管理ノードは、オンラインゲームのゲームエンジン及びゲームロジックのインスタンスを実行するように構成された別個のサーバと考えることができる。管理ノード302はAIモデル315を参照して、異なる処理ノード上で実行する必要があり、割り当てられたゲームエンジンタスクを処理するために必要なリソースをもたらす適切な処理ノードへのゲームエンジンタスクの割当てを管理し、処理するために処理ノード(すなわち、サーバ)にゲームエンジンタスクを分散させ、処理されたゲームエンジンタスクからの情報を用いてAIモデルを構築し、AIモデルに基づいて種々の処理ノードに対するリソースの配分管理し、またある処理ノードから別の処理ノードへ処理結果をルーティングする、ゲームエンジンタスクを特定する。
少なくとも1つの処理ノードは、種々の処理ノードによって出力される種々のゲームエンジンタスクの結果をアセンブリし、処理ノードからの結果をエンコードしてストリーミングゲームデータ135のビデオフレームを作成して、レンダリング用に個々のクライアントデバイスに前方伝送するように構成されている。少なくとも1つの処理ノードはさらに、ビデオフレームが、ユーザの異なるクライアントデバイスに対する共通フォーマットとなるように、ビデオフレームをフォーマットするよう構成されている。いくつかの実施形態では、ビデオフレームのフォーマッティングを、ビデオフレームを伝送するために用いる利用可能な帯域幅及びプロトコルを決定するために処理ノードが行うテストに基づいて行う。
ストリーミングゲームデータ135のビデオフレームをグルーロジック306によって処理して、各クライアントデバイスを対象とするビデオフレームを特定し、それに応じてビデオフレームをルーティングする。さらなるノード(たとえば、マスタサーバノード304)を分散ゲームエンジン310内に設けて、異なる処理ノード(すなわち、サーバ)に割り当てられたゲームエンジンタスクの同期を調整し、及び/またはゲームエンジンタスクの待ち行列を管理してもよい。新しいユーザがゲームクラウドシステムに参加すると、分散ゲームエンジンは、ゲームクラウドシステムの処理ノードにおいて実行するオンラインゲームのインスタンスに新しいユーザをルーティングするようにも構成されている。
【0036】
一実施形態では、複数の各管理ノード302を用いて特定の管理タスクを行う。たとえば、第1の管理ノード(ノードm1)302-m1(構成エージェント311を備える)は、オンラインゲームを実行する処理ノードサーバからシステム入力を受け取り、システム入力を分析して現在のリソース構成を特定し、オンラインゲーム用のリソース構成を管理するように構成されている。システム入力によって、システム構成情報、ならびにユーザのゲームプレイから受け取ったゲーム入力の処理から生じるオンラインゲームのゲーム状態が提供される。第2の管理ノード(ノードm2)302-m2(データ収集エンジンを備える)は、オンラインゲームをプレイする複数のユーザ(すなわち、プレーヤ)からのユーザ入力と構成エージェント311からのシステム入力とを受け取り、入力を処理してゲームデータを生成し、処理したゲームデータからリソース配分モデル(AIモデル)をトレーニングするためのトレーニングデータを生成するように構成されている。第3の管理ノード(ノードm3)302-m3(リソース配分エージェント313を備える)は、オンラインゲーム用のリソース配分を最適化するように構成されている。具体的には、リソース配分エージェント313は、最適量のリソースがオンラインゲームに対して提供されているかどうか、また特定のリソースをいつどこでスピンアップまたはスピンダウンする必要があるのかを判定してもよい。
リソース配分エージェントを用いて、現時点で提供されているオンラインゲーム用のリソースのタイプ及び量と成功基準を達成するために必要なリソースのタイプ及び量とを決定し、また「エラスティックコンピュート」コンセプトに従って、構成エージェントに信号を送り、リソースのうちオンラインゲームに対する変化する需要を満たす特定のものを拡大または縮小する。リソース配分エージェントによって、ゲームプレイ中の任意の時点におけるゲーム状態及び成功基準に基づいてリソースのプロビジョニング及びプロビジョン解除を制御することによって、作業負荷変化に適合する柔軟性がもたらされて、システムは、システムリソースの現在の需要にできるだけ厳密にマッチするように利用可能な十分なリソースを有する。第4の管理ノード(ノードm4)302-m4(1つ以上の分類子エンジン314を伴う)は、ユーザ入力及びシステム入力を含むトレーニングデータを用いて、オンラインゲームに対して規定した成功基準により、オンラインゲーム用のリソース配分モデル315を作成及びトレーニングするように構成されている。リソース配分モデル315をリソース配分エージェントが用いて構成エージェントに信号を送って、オンラインゲームに対して配分されたリソースを調整する。
【0037】
図3Aに、リソース配分モデル315をトレーニングする際に用いるトレーニングデータ例の種々のコンポーネントを例示する。図示したように、トレーニングデータには、ゲームプレイ中に受け取る複数のユーザからのユーザ入力312a、ユーザ入力の影響を受ける複数の各ユーザに対するオンラインゲームのゲーム状態312b、及び成功基準312cが含まれる。当然のことながら、トレーニングデータの前述のコンポーネントは単なる例として示しており、他のタイプの入力もリソース配分モデル315のトレーニング用に考えてもよい。入力を提供するユーザは、プレーヤ、観戦者、及び/または開発者とすることができ、リソース配分モデル315は、ユーザの各タイプに対する適切なリソースを特定するようにデザインされている。
【0038】
リソース配分モデル315は機械学習アルゴリズムを用いてモデル315をトレーニングする。機械学習アルゴリズムを、具体的にはリソース配分モデル315を作成及びトレーニングする1つ以上の分類子エンジンを含むように構成してもよい機械学習サーバ(すなわち、MLプロセッサ)302-m4上に提供してもよい。トレーニングされたモデル315によって、オンラインゲームに対して規定した成功基準を満たす出力をユーザ入力にマッピングすることが得られる。ユーザ入力は、オンラインゲームのゲーム状態に影響を与えるように処理された。機械学習アルゴリズムは、ユーザの入力に応じて、ゲームロジックによって生成されたゲームデータを分析して、ゲームデータの具体的な特徴を処理するために用いるゲームエンジンの種々の機能部分と、具体的な特徴を処理してオンラインゲームに対する異なる成功基準を達成するために用いるシステムリソースとを特定する。ゲームデータの特徴には、物理、テクスチャリング、シェーディング、アセンブリング/エンコーディング、オーディオ処理、スクリプティング、アニメーション、メモリ管理、シーングラフィックスなどが含まれていてもよく、ゲームエンジンの機能部分は、具体的な特徴の対応するものを処理するために連結する特定のコンポーネント(すなわち、エンジンまたはモジュール)を特定してもよい。
トレーニングされたモデル315を分散ゲームエンジンが用いて、ゲームデータの異なる特徴を処理するために必要なゲームエンジンの異なる機能部分、ならびに異なる特徴を処理するために必要なリソースのタイプ及び各タイプの量を決定する。リソースのタイプ及び各タイプの量は、オンラインゲームのゲームプレイの異なる時点に対して規定した成功基準によって推進され、成功基準自体は、ユーザのタイプ、ユーザのユーザ評価基準のうち特定のもの、オンラインゲームのゲーム状態などに依存する。たとえば、オンラインゲームをプレイするプレーヤに対して規定した成功基準は、特定のプレーヤのゲームプレイまたは全般的なオンラインゲームのゲームプレイを追っている観戦者に対して規定した成功基準とは異なり得る。同様に、経験豊富または極めて熟練したプレーヤに対して規定した成功基準は、初心者または中間レベルプレーヤに対して規定した成功基準とは異なり得る。
【0039】
リソース配分モデル315は、リソース配分モデル(AIモデル)315の相互接続されたノードのネットワーク内に種々のノードを実装するように、ゲームデータの特徴を特定及び分類するために用いる分類子エンジンを用いて構築/トレーニングされる。各分類子エンジンは、ゲームデータ内の特徴の特定の1つを特定及び分類するように予め規定されている。たとえば、リソース配分モデル315を、オンラインゲームの最適な性能を特定する成功基準に対してトレーニングすべき場合には、特徴のうち性能(たとえば、待ち時間、画像の品質、帯域幅などの特徴)に影響を与えるものを特定及び分類するように、分類子エンジンのうちの特定のものを提供してもよい。
AIモデルを構築/トレーニングするために用いる分類子エンジンは、処理したゲームデータ内のこれらの特徴を特定すること、ゲームエンジンの機能部分を用いて処理したゲームデータのこれらの特徴を分析すること(AIモデルにおいて用いるゲームデータは、過去のユーザ入力及びゲーム状態を処理することによって生成された)、分析から得た情報を伴う相互接続されたノードの層内のノードを更新すること、相互接続を用いて特定の成功基準に対する出力を得ること、を学習する。成功基準には、許容できる待ち時間、または各サーバに対する許容できる負荷、または待ち行列の好ましい長さ、または待ち行列タイミング、またはゲームデータの品質、または伝送の速度など、またはそれらの任意の組み合わせが含まれていてもよい。異なる成功基準の前述のリストは単なる例として示しており、これらに限定されるものではない。
前述したように、ゲームエンジンの機能部分によって処理されるゲームデータのいくつかの特徴例には、いくつか例を挙げると、物理、テクスチャリング、シェーディング、アセンブリング/エンコーディング、オーディオ、スクリプティング、アニメーション、メモリ管理、シーングラフが含まれる。当然のことながら、ゲームデータ内で処理するために特定することができるより少ないまたはより多い特徴があってもよい。したがって、ゲームエンジンの機能部分は、ゲームデータ内で特定される特徴を処理する関連するゲームエンジンタスクを実行する。その結果、前述のゲームデータの特徴を実行するために用いられ得るゲームエンジンのいくつかの機能部分には、物理エンジン、テクスチャリングモジュール/エンジン、シェーディングモジュール/エンジン、アセンブリングモジュール、オーディオエンジン、スクリプティングエンジン、アニメーションエンジンなどが含まれていてもよい。前述の機能部分は単なる例として示しており、これらに限定されるものではない。
【0040】
AIモデルの構築は、ゲームデータを処理すること、及びAIモデルの各ノードに、ゲームデータから抽出した特徴と特徴を処理するために用いるリソースの詳細とを実装することによって行う。前述したように、AIモデルを実装するために用いるゲームデータはゲームプレイ履歴から取得する。作成したAIモデルを次に、現在または今後のゲームプレイセッションから取得するさらなるゲームプレイデータを用いてリアルタイムで更新する。AIモデル内のノードにゲームデータの処理からの情報を実装し、AIモデルのノードを実装する際に従う手順は、ゲームデータをゲームエンジンの機能部分によって処理したときに従った同じ手順に従ってもよい。すなわち、第1のノードからの処理された出力をゲームデータとともに、相互接続された第2のノードに伝送してさらなる処理を行う。
第1及び第2のノードは、ゲームデータを処理する間に従った手順に基づいて特定する。たとえば、ゲームデータは、最初に、物理コンポーネントを処理するために物理エンジンによる処理を受けてもよい。物理エンジン処理からの情報を第1のノードにアップロードしてもよく、処理した物理コンポーネントを伴うゲームデータを、テクスチャリングに関する接続した第2のノードに入力として提供してもよく、物理及びテクスチャリングコンポーネントを伴うゲームデータを、シェーディング用の接続した第3のノードに提供してもよい。ゲームデータが、相互接続されたノードの多層を通って進むにつれ、それぞれの処理された特徴からの知識が集められて、出力が生成される。生成された出力は特定の成功基準に関する。入力ノードから出力ノードへの経路は、特定の成功基準と相関する1つ以上の所定のルールによって決定してもよい。
リソース配分モデル315は、入力ノードと出力ノードとの間のAIモデルの相互接続されたノードの異なる経路をたどることによって複数の出力を生成してもよい。各出力は、特定の成功基準を満たすように規定された対応する所定のルールによって推進される。分類子エンジンからの出力は、オンラインゲームに対して規定された所定の成功基準を出力(すなわち、リソース配分)が満たすかどうかを判定するのに必要な情報を提供する。たとえば、リソース配分モデル315から出力された情報は、ユーザXがゲーム1をレベルJでプレイしていて、xレベルの性能、yレベルの待ち時間、及びzレベルの品質を受け取ったと特定してもよい。さらに、成功基準を最小待ち時間であると規定してもよい。すなわち、ゲームデータを速く処理し、迅速にアセンブル及びエンコードして伝送して、ゲームデータがクライアントデバイスにリアルタイムで与えられたことを明らかにしなければならない。
リソース配分モデル315からの出力を、成功基準を規定する予め規定されたルールに従ってリソース配分エージェントが分析して、成功基準を満たすために用いたリソース構成のタイプを決定してもよい。この情報を用いて、異なるリソースに対する予測をオンラインゲームに対して行ってもよい。たとえば、提供されるかまたは特定されるリソース構成は、オンラインゲームに対して受け取った特定のゲーム状態及びゲーム入力に基づいて、以後のゲームプレイセッションに対して微調整する必要があるか否かである。微調整には、オンラインゲームが成功基準を達成するために、「いつ」どんなタイプ(複数可)のリソースを調整する(すなわち、弾性的に拡大または縮小する)必要があるかの決定が含まれていてもよい。
【0041】
簡単に言えば、機械学習を用いて、ユーザからの生の入力データの意味を、リソース配分モデル(すなわち、AIモデル)を用いてユーザの入力を解釈することによって理解する。たとえば、ユーザの入力を用いて、ゲーム状態評価基準及びユーザのユーザ評価基準を特定する。ゲーム状態評価基準及びユーザのユーザ評価基準を機械学習アルゴリズムが用いて、ゲームプレイ中に種々のリソースに課されたストレスを特性評価する。
このようなストレスはオンラインゲームのゲーム状態に基づいて変化する可能性がある。機械学習アルゴリズムは、ノードのニューラルネットワークを伴うAIモデルを作成し、これらのノードにオンラインゲームのゲームプレイの種々の段階で用いるリソースを実装して、(a)異なるゲームデータの特徴はどのように互いに関係づけられているか、及び(b)配分されたリソースを用いて異なる特徴を処理することによって生成された出力が、オンラインゲームに対して規定した成功基準にどのように関係しているかを学習する。分類子エンジンを用いて、異なる特徴を特定し、AIモデルの異なるノードを実装する。
配分されたリソースを用いて異なる特徴が処理されると、対応するノードがゲームデータの具体的な特徴の処理の出力によって更新される。機械学習は、異なる特徴の処理からの出力を分析して、処理から生じるパターンを特定し、オンラインゲームに対して規定した成功基準にAIモデルの出力を関係づける。分析は、成功基準を規定する予め規定されたルールを用いて行う。分析に基づいて、機械学習は、現在の配分が最適であるかどうか、または特徴のうち特定のものを処理するために配分されたリソースの選ばれたものを、選択的にスケール変更(拡大または縮小)して、全体的なパターンを改善し、出力を成功基準により良好に合わせる必要があるかどうかを判定する。
【0042】
現在のリソース配分が最適である(すなわち、出力が、ゲーム状態及びユーザの入力に基づいてオンラインゲームに対して規定した成功基準に合っている)と示されたときには、システムは現在のリソース配分を維持することを選択してもよい。他方で、出力は成功基準を満たしていたが、リソースのうち使われないままであったものの過剰配分があったことを、AIモデルの分析から決定してもよい。処理リソースは費用がかかるため、オンラインゲームプレイに対して提供されるありとあらゆるリソースの最適化は重要である。その結果、リソース配分エージェントは、分析の結果を用いて、構成エージェントに信号を送って、リソースのうち、特定の特徴を処理するために過剰配分されたと示されたものを縮小する。人工知能は、教師あり学習、教師なし学習、半教師あり学習、または任意の他の機械学習を用いて、出力を成功基準に合わせるために用いるリソース配分モデルを作成及びトレーニングしてもよい。
【0043】
一実施形態では、ゲームデータの特徴のそれぞれを、考慮すべきパラメータとして含むように、予め規定されたルールを規定してもよく、出力を、ゲームデータの各パラメータに割り当てられた重み(すなわち、どのパラメータを他よりも多く重み付けする必要があるか)を用いることによって生成してもよい。リソース配分エージェントは、AIモデル出力の分析を、予め規定されたルールの1つ以上に従って用いて、リソースの現在の配分が成功基準を満たすのに十分であるかどうかを判定してもよく、また、特徴を処理するために配分された1つ以上のリソースが最適でないと判定されたときに、構成エージェントに信号を送ってシステムリソースを予防的に調整してもよい。
たとえば、成功基準は、オンラインゲームのプレーヤ(すなわち、ゲームプレイに参加しているユーザ)に、オンラインゲームの以後のゲームプレイ中に最小待ち時間でゲームデータを提供する必要があると特定してよい。特定された成功基準に基づいて、リソース配分モデルからの異なる出力を分析して、ゲーム入力の組に対して規定される出力を特定する。これは、ゲームのゲーム状態に対して特定された成功基準をこれまでに満たしたシステムリソース構成を用いて行う。リソース配分モデルが提供する情報を用いて、リソース配分エージェントは、現在のゲームプレイ中のリソースの配分が、特定された成功基準を満たすのに十分であるかどうか、またはシステムリソースを拡大もしくは縮小する必要があるかどうかを判定する。
現在のゲームプレイに対するリソース配分が、成功基準を達成するために予測される需要を満たすのに十分でないと判定されたときには、リソース配分エージェントが構成エージェントに信号を送って、システムリソースのうちオンラインゲームに対するゲームプレイの現在のセッション用の特定のものを、予測したリソース需要に基づいて予防的に拡大または縮小してもよい。プレーヤの現在のゲームプレイセッションに対する成功基準が、ゲームデータの品質のフレームとは関係なく、高レベルプレーヤに対する最小待ち時間を特定する前述の例の場合には、高レベルプレーヤのゲーム入力にマッチするゲーム入力に対する最小待ち時間の成功基準を満たす出力を、リソース配分モデルから特定して、現在のリソース配分を決定するために用いる。
現在のリソース配分を決定したら、機械学習アルゴリズムは、出力をさらに分析して、オンラインゲームに対して配分されたリソース(たとえば、ゲーム及び通信帯域幅に配分されたCPUリソースの量)を、現在のゲームプレイが同じ成功基準を満たすために調整する必要があるかどうかを判定する。同様に、クライアントデバイスに戻されるゲームデータの品質を成功基準が特定する場合には、ゲームデータの品質に対応する出力を用いて、リソースのうちオンラインゲームの現在のセッションに割り当てられた特定のものを、成功基準を満たすために拡大または縮小する必要があるかどうかを判定してもよい。判定に基づいて、リソース配分エージェントは信号を生成して構成エージェントに転送して、オンラインゲームに対して配分されたリソースを調整する。
【0044】
何らかの調整を行う必要があるかどうかを判定するために、リソース配分エージェント313は構成エージェント311と相互に作用して、現在のシステムリソース配分を決定してもよく、また現在のシステムリソース配分が、ゲームのゲーム状態に対する成功基準を満たしたリソース配分モデル315からのリソース配分にマッチしないときに、構成エージェント311に信号を送ってもよい。構成エージェント311への信号は、リソースのタイプと、オンラインゲームに対して規定した成功基準を達成するために行う必要がある調整のタイプ(拡大する、縮小する、新しいものについてはプロビジョニングを行い、既に存在するものについてはプロビジョニングを解除するなど)とを特定してもよい。構成エージェント311は、リソース配分エージェント313からの信号に応じて、リソースを適切に弾性的に調整するように構成されている。
【0045】
図3に、現在のゲームセッションからのゲームデータの具体的な特徴を処理するように割り当てられた種々の処理ノード(ノードp1~p8)308を示す。各処理ノードには、ゲームエンジンの特定の機能部分を処理するためのゲームエンジン及びゲームロジックのインスタンスが含まれている。処理ノードは、サーバ、またはゲームコンソール、またはコンピューティングデバイスであって、ゲームエンジンの特定の機能部分を処理するために必要なリソースを提供するように構成されたものであってもよい。簡素化のため、
図3に示す各処理ノードは、ゲームエンジンの特定の機能部分を処理するように構成されているが、実際には、複数の処理ノードを連結させて特定の機能部分を処理してもよい。これについては、
図4A~4Cを参照してより詳細に説明する。
【0046】
マスタノード304を用いて、ゲームデータの種々の特徴の処理を同期させてもよい。マスタノードのプロセス同期層304aは、ゲームデータの種々の特徴を処理するためのゲームエンジンの機能部分を実行するためのリソースの割当てを管理するために、複数の各処理ノードと複数の各管理ノードとの間の通信インターフェースを提供する。ゲームエンジンの各機能部分はゲームエンジンタスクを表し、プロセス同期層304aは、管理ノードのリソース配分モデルが提供する情報に基づいてゲームエンジンタスクの機能部分を管理する仮想バスとして働く。
具体的には、プロセス同期層304aは、異なる処理ノードへのゲームエンジンタスクの割当てを管理し、ゲームエンジンタスクのうちの特定のものを選ばれた処理ノードに分散させ、処理結果を選ばれた処理ノード(すなわち、相互接続されたノード)間及び選ばれた処理ノードと構成エージェントとの間でルーティングする。構成エージェントに提供される結果を、ゲームエンジンタスクを処理するために割り当てられたリソースを、出力が成功基準を満たすように弾性的にスケール変更するために用いる。弾性的にスケール変更することには、特定の特徴を処理するためにさらなる処理ノード(たとえば、さらなるサーバ)を加えること、またはプロビジョンした処理ノード内でリソースを拡大する(たとえば、サーバノードのさらなるCPUコアを加えるかまたは取り除く)ことが含まれていてもよい。ゲームエンジンタスクの同期には、各ゲームエンジンタスクのプロセスタイミングを考慮に入れてタスク待ち行列を管理することが含まれる。
【0047】
図4Aに、オンラインゲームに対して規定した成功基準を満たすためにゲームデータを処理するためのリソース配分の際に用いてもよい処理ノードの一実施形態例を例示する。処理ノードはそれぞれ、ゲームエンジンを備えており、特定のゲームエンジンタスクを処理するために必要なリソースを含んでいる。
図4Aに例示する実施形態は、各処理ノードが、処理するために特定のゲームエンジンタスクに割り当てられているリソース配分の非常に基本的な形態を示す。
したがって、いくつか例を挙げると、ノードp1は、サーバ1のリソースを用いてゲームデータの物理コンポーネントを処理するために用いられ、ノードp2は、サーバ2のリソースを用いてゲームデータのテクスチャリングコンポーネントを処理するために用いられ、ノードp3は、サーバ3のリソースを用いてシェーディングコンポーネントを処理するために用いられ、ノードp4は、サーバkのリソースを用いて異なる処理ノードから受け取ったゲームデータをアセンブリ及びエンコードするために用いられ、ノードp5は、サーバmのリソースを用いてオーディオコンポーネント(すなわち、音)を処理するために用いられ、ノードp6は、サーバm+1のリソースを用いてスクリプティングコンポーネントを処理するために用いられ、ノードp7は、サーバm+2のリソースを用いてアニメーションコンポーネントを処理するために用いられ、ノードp8は、サーバpのリソースを用いてメモリ管理を行うために用いられ、ノードp9は、サーバp+1のリソースを用いてシーングラフコンポーネントを処理するために用いられる。
図4Aで特定したゲームエンジンタスクのタイプは、例示を目的として与えており、網羅的または限定であると考えてはならない。より少ないまたはさらなるタイプのゲームエンジンタスクを、異なるサーバ上で実行されるゲームエンジンのインスタンスを用いて特定及び処理してもよい。処理ノードはそれぞれ、他の処理ノードと相互に作用してもよく、このような相互作用は、仮想バスとして働くプロセス同期層を通して行ってもよい。同様に、各管理ノードは、仮想バスを通してまたは直接に、互いと相互に作用してもよい。また、各管理ノードは、プロセス同期層を通して、1つ以上の処理ノードと相互に作用してもよい。
図4Aに例示した例では、各サーバは1つのゲームエンジンタスクのみを行うように構成されている。代替的な例では、複数のゲームエンジンタスクを単一サーバによって行ってもよい。同様に、複数のサーバを連結させてゲームエンジンタスクを行ってもよい。
【0048】
図4Bに、このような例の1つを例示する。リソース配分エージェントは、ゲームデータの具体的な特徴を処理するためにさらなるリソースが必要であるということを示していてもよく、それに応じて、構成エージェント311は、具体的な特徴を処理するためのさらなる処理ノードをプロビジョンしていてもよい。したがって、
図4Bに例示した例では、ゲームデータの物理コンポーネントを処理するために必要な処理リソースを得るために、複数の物理ノードをプロビジョンしており、テクスチャリングコンポーネントを処理するために必要な処理リソースを得るために、複数のテクスチャリングノードをプロビジョンしており、スクリプティングを処理するために必要な処理リソースを得るために、複数のスクリプティングノードをプロビジョンしている。
処理ノードにはそれぞれ、シングルコアプロセッサもしくはマルチコアプロセッサ、規定された帯域幅、または対応するコンポーネントを処理するための単一のサブコンポーネントもしくは複数のサブコンポーネントが含まれていてもよい。ゲームデータの残りのコンポーネントを、個々の単一の処理ノードに対応付けられるサーバの処理リソースを用いて処理してもよい。
【0049】
図4Cに、ゲームに対して規定した成功基準に対して、リソース配分モデル315の出力を分析した後でリソース配分エージェントが生成し得る信号を例示する。成功基準を、1つ以上のゲーム状態評価基準(たとえば、ゲームタイプ、ゲームのゲーム状態、生成されたゲームデータ量など)及び1つ以上のユーザ評価基準(たとえば、ユーザのタイプ(開発者、プレーヤまたは観戦者)、ユーザの技能レベルなど)によって推進してもよい。
たとえば、高い強度のゲームをエキスパートプレイヤーがプレイする場合、成功基準を、最小待ち時間でゲームデータをプロビジョンしていることに規定してもよい。観戦者に対しては、成功基準は、オンラインゲームのゲームプレイを見るためにすべての観戦者に提供される共通のビューウィンドウ、またはゲームプレイのゲームシーンを通って独立してナビゲートするためのカスタマイズされたビューウィンドウ、または観戦者がエキスパートプレイヤーのゲームプレイを独立して追うことができる別個のビューウィンドウ、またはエキスパートプレイヤーが観戦者として機能し、初心者プレーヤのゲームプレイを追ってガイダンスを提供することができるビューウィンドウなどを提供することであってもよい。
成功基準に基づいて、配分モデル315から出力を特定し、オンラインゲームの各ユーザに対して所望のゲームプレイ経験を提供するようにシステムのリソースを調整する。
図4Cに例示した例では、リソース配分エージェントは、リソース配分モデル315の出力を分析して、オンラインゲームの現在の構成370を得てもよく、またオンラインゲームに対して規定した成功基準を満たすために、オンラインゲームの現在のゲーム状態及び現在の構成370に基づいて信号に構成更新372を提供してもよい。
図示したように、リソース配分エージェント313が構成エージェント311に伝達した信号は、物理コンポーネント、スクリプティングコンポーネント、アニメーションコンポーネントを処理するため、及びアセンブリングするために用いる処理ノードをもっと生成する必要があり、一方で、シェーディング、音、メモリ管理、及びシーングラフに対して配分された処理ノードの量を現在のレベルに維持すべきであり、テクスチャリングコンポーネントを処理するために用いる処理ノードの数を縮小する必要があることを示してもよい。
リソース配分エージェントが伝送する信号は、AIモデルの分析から特定した異なるリソースに対して予測される需要に基づき、成功基準に基づくとともに、予測される需要を見越して、必要なリソースがオンラインゲームに対してタイムリーにプロビジョンされることを確実にするために用いられる。その結果、ユーザがオンラインゲームと相互に作用するときに、ゲームデータが、配分されたリソースを用いて、ユーザのユーザ評価基準及びオンラインゲームのゲーム状態評価基準に対して規定した成功基準により処理され、示されたユーザのクライアントデバイスに戻される。
【0050】
図5に、オンラインゲームの従来のゲームプレイの間に集められたトレーニングデータの分析に基づいて、予測される需要を見越して、オンラインゲーム用のリソースのプロビジョニングを行うために用いるゲームクラウドシステムの論理構造例を例示する。オンラインゲームは、複数のユーザが同時にプレイする大規模なマルチプレイヤーオンライン(MMO)ゲームである。ゲームは、ゲームクラウドシステム上で実行され、ネットワーク200(たとえば、インターネット)を介してアクセスされる。オンラインゲームにアクセスするユーザは、ユーザアカウント310a内に保持される対応するユーザプロファイルと照らし合わせて検証される。検証を用いて、ユーザのアクセスが認められているオンラインゲーム310bのゲームタイトルを特定する。検証が成功すると、ユーザはオンラインゲームにアクセスしてゲームプレイすることができる。
ユーザは、異なるジオロケーションからオンラインゲームにアクセスしてもよく、ゲームクラウドシステムは、地理的に分散されたサーバのネットワークにわたってオンラインゲームをインスタンス化することによってオンラインゲームへのアクセスを提供する。分散ゲームエンジン310を用いて、オンラインゲームのゲームロジックを実行する。オンラインゲームをインスタンス化することには、サーバのネットワークの各1つ上でゲームエンジン310e及びゲームロジック310fのインスタンスを実行することが含まれる。ゲームエンジンは、ゲームエンジンの異なる機能部分を処理するために必要なエンジン/モジュールを提供する。各機能部分はゲームデータの対応する特徴を処理するように構成されている。たとえば、ゲームデータの物理コンポーネントを処理するために物理エンジンを提供してもよく、シェーディングコンポーネントを処理するためにシェーディングエンジンを提供してもよい等である。
【0051】
複数のユーザからオンラインゲームのゲームプレイ中のユーザ入力を集め、これを用いて、ゲームのゲーム状態に影響を与え、レンダリング用にクライアントデバイスに戻すためのゲームデータを生成する。ユーザの入力を用いてユーザのユーザ評価基準310cを更新して、ゲームのゲーム状態をゲーム状態評価基準310dに更新する。ユーザのユーザ評価基準310cとゲーム状態評価基準310dとを分散ゲームエンジン310が用いて、リソース配分モデル315(AIモデル)を作成する。リソース配分モデル315を用いて、オンラインゲーム用のリソースに対する需要を予測し、オンラインゲームのゲームプレイ中にリソースを用いるということを予想して、必要なリソースを前もって予防的にスケール変更する。予測される需要では、拡大する必要があるリソースと縮小する必要があるリソースとを特定する。
【0052】
前述したように、分散ゲームエンジンは、ゲームクラウドシステム上で実行されるゲームの結果に影響するゲームロジックを管理し、オンラインゲームを盛り上げるために用いるオンラインゲームの特定の基本的な特徴を処理するための複数の再利用可能なコンポーネントを提供する。
ゲームエンジンの再利用可能なコンポーネントによって処理される基本的な特徴としては、いくつか例を挙げると、グラフィックス、オーディオ、物理、人工知能、スクリプティング、アニメーション、ネットワーキング、ストリーミング、最適化、メモリ管理、スレッディング、ローカリゼーションサポートが挙げられる。ゲームロジックは、ユーザから受け取った入力に基づいて、ゲームのゲーム状態(すなわち、結果)を決定する。オンラインゲームを実行することから生成されるゲームデータには、ゲームを盛り上げる処理された特徴、ならびにゲームの結果が含まれる。
【0053】
分散ゲームエンジンは、オンラインゲームの基本的な特徴を処理することに加えて、機械学習アルゴリズムを用いて、AIモデル315のノードのニューラルネットワークをオンラインゲームのゲームデータを用いて更新する。機械学習アルゴリズムには、リソース配分モデルを作成し/精緻なものにする出力を提供するために用いる分類子が含まれる。各分類子は、ゲームデータの具体的な特徴を特定及び処理するように、またAIモデルの対応するノードを、特徴の処理及び特徴を処理するために用いるリソースに関連する情報によって更新するように構成されているエンジン/モジュールを有する。
処理された情報は、ゲームデータと一緒に下流に他の分類子へ転送されて、さらなる処理に備える。たとえば、分類子は物理特徴の品質を決定するように構築されてもよい。別のものは、シェーディングの品質を決定するように構築されてもよい。さらに別のものは、スレッディングを管理する(すなわち、存在する異なる特徴を処理するゲームスライスの数及びそれらがどのように相互接続されているか、異なる特徴に対応付けられるゲームスライスの処理時間、待ち行列における具体的な特徴に対するゲームスライスの数などを特定する)ように構築されてもよい。他の分類子は、いくつか例を挙げると、テクスチャリング、メモリ管理、スクリプティング、シーングラフ、アニメーションの品質を特定するように構築されてもよい。
【0054】
ニューラルネットワークには、複数のノード(2つの連続ノードがエッジを介して接続されている)が含まれている。ノードを他のノードに、異なるエッジを介して接続してもよい。入力ノードから相互接続されたノードの組を通って出力ノードに至るエッジによって、経路が規定される。相互接続するエッジに基づいて、入力ノードと出力ノードとの間に規定される多くの経路が存在することができる。AIモデルを用いて、ゲームデータ(オンラインゲームのゲームプレイ中にユーザの入力に応じて生成される)を、入力ノードを出力ノードに接続する相互接続されたノード(すなわち、隠れノード)のネットワークを通して処理する。各ノードを用いてゲームデータを分析して、ゲームデータの具体的な特徴を処理する有効性を決定し、ゲームデータを処理することから実現されるパターンにおける整合性を決定する。
たとえば、パターンは、物理またはテクスチャリングまたはシェーディングの品質は最適であった/なかった、オーディオは常に明瞭であった/なかった、ゲームスライスのスレッディングからの待ち時間は許容できた/容認できなかった等を示してもよい。リソース配分エージェント313は、所定の分析器ルール313aの組を用いてAIモデルの分類子が提供するパターンを分析して、出力を得る。出力は、特定の成功基準を満たしていたか満たしていなかったか、及び提供されたリソースは十分であったかまたは拡大/縮小する必要があったかどうかを示す。AIモデルは、相互接続されたノードの異なる経路をたどること及びパターンを特定することによって、異なる出力に対するゲームデータのマッピングをもたらす。異なる経路からの出力は、ゲーム状態に対して満たされたかまたは満たされなかったオンラインゲームの成功基準に関してもよい。さらに、出力はそれぞれ、対応する経路に沿って処理されたゲームデータの各特徴を処理するために提供された各タイプのリソースのタイプ及び量を特定する。分析に基づいて、リソース配分エージェントは、分散ゲームエンジン構成エージェント311に対する信号を生成して、リソースをスピンアップまたはスピンダウンする。
【0055】
構成エージェントはリソース管理サービス330と連結して、オンラインゲーム用のリソースの配分を管理してもよい。リソース管理サービス330は、ハードウェアスケジューラ332と相互に作用して、ゲームクラウドシステム内で利用可能な各ハードウェアリソース320のステータスを決定する。ハードウェアスケジューラ332内のスケジューラキャッシュ332aは、リソースのうちどれがジョブ(すなわち、ゲームエンジンタスク)を行うように現在割り当てられているか、どのリソースがジョブに割り当てられるようにスケジュールされているか、リソースのうちどれがフリーであるか、資源能力など、を特定してもよい。ハードウェアスケジューラ332から得られた情報に基づいて、リソース管理サービス330は、リソースのうちゲームエンジンタスクを行うための配分に利用可能な特定のものを特定してもよい。リソース管理サービス330が共有する情報を用いて、構成エージェント311は、ゲームデータの特徴のうちオンラインゲーム用のものを処理するためのリソースを配分してもよい。新しいユーザがゲームセッションに参加したときには、新しいユーザをルーティングする際に分散ゲームエンジンシステム構成を用いて、オンラインゲームのユーザが満足なゲームプレイ経験を持てるようにする。
【0056】
図6A~6Cに、いくつかの実施例において、ゲームエンジン及びゲームロジックをインスタンス化するために、及びオンラインゲームに対して生成されたゲームデータの特徴を処理するために、プロビジョンすることができる種々のタイプのサーバを例示する。
図6Aに示すように、サーバは物理サーバ308aとすることができる。サーバ308aは、スタンドアロンのサーバであってもよいし、ゲームクラウドシステム内のデータセンタの一部であってもよい。データセンタ内のサーバは、データセンタ内の独立したサーバであってもよいし、ラックの一部であってもよい(各ラックは複数のサーバコンピューティングデバイスを収容する)。サーバラックについてのさらなる情報について、
図7を参照して説明する。物理サーバには、必要なリソース、たとえば、ゲームエンジンの1つ以上のアプリケーション及び/または1つ以上の機能部分を実行するためのオペレーティングシステム、メモリ、マイクロプロセッサが含まれている。ゲームエンジンのアプリケーションまたは機能部分はメモリ内に記憶され、マイクロプロセッサを用いて処理され、及びオペレーティングシステムによって管理される。
【0057】
ゲームの世界では、ユーザは任意のジオロケーションからMMOゲームにアクセスしてプレイし得るが、1つの仮想ゲーム空間内で一緒になってもよい。複数のサーバを連結させて、ゲームプレイするためのオンラインゲームへのより速いアクセスをユーザに提供してもよい。異なるサーバ上で実行されるオンラインゲームのゲームプレイから得られるゲーム状態を速くて効率的な方法によりサーバ間で共有し、仮想ゲーム空間内にいるかまたは仮想ゲーム空間内でゲームプレイを見ているユーザに、ゲームシーンの彼ら独自の(すなわち、各ユーザ独自の)視野を実質的にリアルタイムで提供できるようにしなければならない。
一実施形態では、ゲームデータにより速くアクセスするために、分散ゲームエンジンのインスタンスを、単一のデータセンタの一部である異なるサーバ上で実行してもよい。この構成は効率的に機能する。なぜならば、データセンタ内の異なるサーバ間で、それほどの待ち時間なくデータを交換することができるからである。単一のデータセンタのサーバ間でデータを交換する際に用いるネットワークアーキテクチャの詳細について、
図7を参照してより詳細に説明する。代替的な実施形態では、分散ゲームエンジン及びゲームロジックのインスタンスを実行する複数のサーバは、地理的に分散された複数のデータセンタの一部であってもよい。このような実施形態では、ユーザにゲームシーンの彼らの独自視野を提供することができるように、オンラインゲームのゲームプレイから得られるゲーム状態を異なるサーバ内のサーバ間で交換する。ゲーム状態の交換中に含まれる待ち時間はほとんどない場合があるが、待ち時間を減らすためにリソースを提供してもよい。
【0058】
図6Bに例示するように、サーバは、ゲームクラウドシステムの一部である仮想マシンとすることができる。ゲームクラウドシステムには、ホストマシンのハイパーバイザ上で実行される複数の仮想マシン(VM)308bが含まれていてもよい。1つ以上の仮想マシンは、ホストのハイパーバイザにとって利用可能なハードウェアリソースを用いるオンラインゲームのインスタンスを実行するゲームプロセッサをサポートするように構成されている。複数の仮想マシンに対応付けられる複数のゲームプロセッサがオンラインゲームのインスタンスを実行すると、ユーザの入力が集められ、ゲームクラウドシステムの1つ以上のバックエンドサーバ(すなわち、物理サーバまたは仮想サーバ)によって編成されて、オンラインゲームのゲーム状態に影響を与えるように処理される。
ユーザの入力に応じてオンラインゲームによって生成されたゲームデータはアセンブルされ、エンコードされ、ゲームデータのストリーミングフレームとしてユーザのクライアントデバイスに転送されて、レンダリングされる。またユーザの入力を用いて、AIモデルをトレーニングするためのトレーニングデータを生成する。これを用いてオンラインゲーム用のリソースを管理する。各仮想マシンには、ホストマシンの仮想化層(すなわち、ハイパーバイザ)にとって利用可能なハードウェアリソースを用いてオペレーティングシステムが実行する1つ以上のアプリケーション(たとえば、1つ以上のオンラインゲームアプリケーション)が含まれていてもよい。
【0059】
図6Cに、一実施形態において、オンラインゲーム用のリソースのプロビジョニングを行うために用いることができるサーバの別の例を例示する。サーバは、クラウドコンテナ308cの一部とすることができる。クラウドコンテナ308cは、オンラインゲームアプリケーションなどのアプリケーション及びそのすべての依存関係、ライブラリ、ならびにオンラインゲームアプリケーションを実行するために必要な構成ファイルを、互いに束ねて仮想コンテナに入れることができ、アプリケーションは、アプリケーションを実行するためのコンテナ内の配分されたリソースを用いる。コンテナは完全なオペレーティングシステムを伴わずに動作し、その結果、オペレーティングシステムレベルの仮想化が得られる。
コンテナは、タスクを行う(たとえば、オンラインゲーム用のゲームエンジン及びゲームロジックのインスタンスを実行する)ために、最小量のリソースを用いて動作することができる。リソース(すなわち、物理ハードウェアリソース)は仮想化されている。クラウドコンテナは、異なるサーバに対して十分に展開することができるため、持ち運び可能である。一実施形態では、コンテナによってアプリケーション分離が、プロセス及び名前空間分離技術を介して、コンテナホストとカーネルを共有することによって得られる。代替的な実施では、コンテナホストのカーネルを共有せず、その結果、コンテナ化されたアプリケーションを仮想マシンから実行することによって分離が強化される。前述のタイプのサーバは単なる例として示しており、限定であると考えてはならない。ゲームエンジン及びゲームロジックをインスタンス化するためのリソースを提供するサーバまたはコンピューティングデバイスの他の形態を用いてもよい。
【0060】
図7に、一実施形態において、オンラインゲームを実行するために用いるサーバが配置されたデータセンタ例を例示する。サーバは、複数のサーバ(308-r11~308-r1m、308-r21~308-r2m、308-r31~308-r3mなど)の一部とすることができる。複数のサーバは、オンラインアプリケーション(たとえば、大規模なマルチプレイヤーオンライン(MMO)ゲーム)を実行するために必要な算出能力を提供するために互いにネットワーク接続されている。データセンタには、サーバ及び/または記憶機器の複数のラック(またはタワー)が含まれている。
図7には3つのラック/タワー(ラック1~3)を示す。しかし、データセンタにはサーバ/記憶機器の3つを超えるラック及びしばしば数百のラックを含めることができる。データセンタ内のラックは、トップオブラック(TOR)デザインまたはエンドオブロー(EOR)デザインを用いてネットワーク接続することができる。
【0061】
TORデザインでは、各ラック/タワーにはラックルータ(ラック1に対するルータ350-a、ラック2に対する350-b、ラック3に対する350-cなど)が含まれて、これらは対応するラックのトップに配置され、各ラックのコンピューティングデバイス(すなわち、サーバ/記憶機器)は、対応するラックルータに接続されている。各ラックルータ自体は集約スイッチ360に接続されている。データセンタ内の異なるラック内のサーバ間で交換されるデータは、個々のラックルータ(350-a~350-c)を通って流れ、一方で、異なるデータセンタ内のサーバ間またはデータセンタとデータセンタの外側の別のコンピューティングデバイスとの間で交換されるデータは、個々のラックルータ(350-a~350-c)及び対応する集約スイッチ360を通って流れる。
たとえば、オンラインゲーム用のゲームデータの処理を、データセンタ内でラック1内のサーバ1(308-r11)からラック3内のサーバ3(308-r33)まで移動させて(赤実線で示す)、オンラインゲームのゲームプレイから生成された他のデータに近づける必要があるときには、転送プロセスは以下のように進む。(a)サーバ308-r33をスピンアップする(すでにアップして実行されてはいない場合)。(b)ラック1のサーバ1(308-r11)内のデータをラック3のサーバ3(308-r33)に転送して、データをサーバ1 308-r11とサーバ3 308-r33との間で同期させる。データの転送及び同期は、対応するトップオブラックルータ350-a及び350-cを介して操作する。(c)制御をサーバ3に引き渡す(
図7の赤い点線を参照)。トップオブラックデザインアプローチを用いる利点の1つは、特定のラックのすべてのサーバが特定のラックの対応するトップオブラックルータに接続されるためにケーブリングの複雑さが最小限になり、限定された数のケーブルのみが他のラック及び集約スイッチまで延びて接続されることである。他の利点、たとえば、各データセンタラックに固有のケーブリングが備わっているために、必要となるケーブル量、データセンタラックのモジュラ展開が少ないことなどを、当業者であれば証明することができる。
【0062】
他方では、EORネットワークデザインでは、個々のラック内の各サーバは共通のEOR集約スイッチに直接接続されている。すなわち、接続は直接的であり、対応するラックの個々のTORルータを通っていない。その結果は、データフローはEOR集約スイッチを通る。このアプローチの利点のいくつかは、データセンタ内でのサーバの拡張を容易に行うことができ、サーバの配置を何らサーバラック制限を考慮する必要なく独立に行うことができ、データが通るルータ/スイッチの数が少なくなるために待ち時間が最小限になることである。このデザイン実施形態の他の利点については、当業者であれば想定することができる。
【0063】
いくつかの実施形態では、ユーザは、クラウドゲームシステムのオンラインゲームアプリケーションに世界のどこからでも接続し得る。オンラインゲームアプリケーションによって、このような接続が、世界にわたって分散された異なるデータセンタの異なるサーバ上で複数のゲームインスタンスを開始することによって可能になる。オンラインゲームのゲームプレイ中に対応するクライアントデバイスにおいて生じたユーザの入力データをサーバのネットワークから集め、ゲームデータのフレームを、ネットワークモデルのいずれか1つを用いて、対応するクライアントデバイスに戻す。本出願で説明したゲームクラウドシステムのサーバ間で通信するために用いてもよいネットワークモデルのいくつかの例としては、TCP/IPネットワークモデルまたは国際標準化機構(ISO)ベースの開放型システム間相互接続(OSI)ネットワークアーキテクチャが挙げられる。分散サーバ間のデータ処理及び通信は、複数の既存のプロトコルのうちのいずれか1つに従ってもよい。
ISOモデルには、アプリケーション層(アプリケーション層、プレゼンテーション層、セッション層)及びデータフロー層(トランスポート層、ネットワーク層、データリンク層、及び物理層)の組が含まれる。アプリケーション層は、送受信エンティティを特定し、送受信エンティティ間でオンラインゲームなどのアプリケーションのデータを対応するエンティティが理解する方法で転送し、送受信エンティティ間の通信を管理して最小のデータ損失と同期させるように構成されている。データフロー層は、データ送信を順次経路で行うべきかまたは並列経路で行うべきか、データをパケット化するために従うべきプロトコルを決定して、パケット化データをフレーム内にアセンブリし、データのフレームを好ましいルートに沿って伝送するように構成されている。なお、前述した説明は、オンラインゲーム用のサーバのネットワークを通してデータを通信する際に用いるISOモデルの概略のみを与えており、種々の層の役割のより細かい詳細については当業者であれば理解する。したがってより詳しく説明することはしないことに注意されたい。
【0064】
図8に、システム例300Aの概略を例示する。システム例300Aは、本開示の一実施形態により、ユーザ入力の収集をサポートしてトレーニングデータを更新し、更新さしたトレーニングデータを用いて、オンラインゲームのゲームプレイに関係するリソース配分モデルを構築及び/またはトレーニングする。詳細には、システム
図300Aによって、ゲームクラウドシステム(GCS)300内に記憶されたビデオゲームにアクセスしてプレイすることができる。概して言えば、ゲームクラウドシステムGCS300は、対応するゲームプレイを通してオンラインゲームアプリケーションをプレイする複数のプレーヤをサポートするために、ネットワーク200上で動作するクラウドコンピューティングシステムであってもよい。
これらのゲームプレイに関するデータを、オンラインゲームアプリケーションのゲームプレイに関係するAIモデルを構築及び/またはトレーニングするために用いるトレーニングデータとして提供してもよい。詳細には、システム300Aには、GCS300、1つ以上のソーシャルメディアプロバイダ240、及びクライアントデバイス100が含まれている。これらはすべて、ネットワーク200(たとえば、インターネット)を介して接続されている。複数のユーザに対応付けられる複数のクライアントデバイスをネットワーク200に接続して、GCS300及びソーシャルメディアプロバイダ240が提供するサービスにアクセスしてもよい。ユーザは、プレーヤ、または特定のプレーヤまたはオンラインゲームのゲームプレイを追う観戦者であってもよい。
【0065】
一実施形態では、ゲームクラウドシステム300には、ゲームサーバ205、ビデオレコーダ271、タグプロセッサ273、ユーザプロファイルマネージャを含むアカウントマネージャ274、ゲーム選択エンジン(すなわち、ゲームセレクタ)275、ゲームセッションマネージャ285、ユーザアクセスロジック280、ネットワークインターフェース290、及びソーシャル接続マネージャ295が含まれている。GCS300にはさらに、複数の記憶システム(たとえば、ゲーム状態ストア、ユーザアカウント、ユーザデータストアなど)が含まれていてもよい。これらは通常、データストア260に保存されていてもよい。他のゲーム記憶システムには、ゲームコードストア261、記録ゲームストア262、タグデータストア263、ビデオゲームタイトルストア264、及びゲームネットワークユーザストア265が含まれていてもよい。
一実施形態では、GCS300は、オンラインゲームアプリケーション、サービス、ゲーミング関連デジタルコンテンツ、及びシステム間の相互接続性、アプリケーション、ユーザ、及びソーシャルネットワークを提供することができるシステムである。GCS300は、ユーザデバイス100及びソーシャルメディアプロバイダ240と、ソーシャル接続マネージャ295を通して、ネットワークインターフェース290を介して通信してもよい。ソーシャル接続マネージャ295は1人以上の友人に関係するように構成してもよい。一実施形態では、各ソーシャルメディアプロバイダ240には、ユーザソーシャルネットワーク接続を示す少なくとも1つのソーシャルグラフ245が含まれている。
【0066】
プレーヤ(すなわち、ユーザ)は、GCS300が提供するサービスにゲームセッションマネージャ285を介してアクセスすることができる。たとえば、アカウントマネージャ274によって、GCS300上でプレーヤの認証及びゲームタイトルへのプレーヤのアクセスが可能にする。アカウントマネージャ274は、ユーザ(プレーヤ、観戦者)についての情報を記憶し、各ユーザに対するユーザプロファイルを管理する。ユーザ情報は認証目的でアカウントマネージャ274が用いることができる。さらに、ユーザが所有するゲームタイトルをアカウントマネージャ274が管理してもよい。たとえば、ゲームタイトルストア264に記憶されたビデオゲームは、これらのビデオゲームへのアクセスを所有するかまたはアクセスが与えられたユーザにとって利用可能になっている。
【0067】
一実施形態では、ユーザは、GCS300及びソーシャルメディアプロバイダ240が提供するサービスに、ネットワーク200を介した接続を通してクライアントデバイス100によってアクセスすることができる。クライアントデバイス100には、プロセッサ及びメモリを有する任意のタイプのデバイスであって、有線または無線、携帯型または非携帯型のものを含めることができる。一実施形態では、クライアントデバイス100は、スマートフォン、タブレットコンピュータ、または携帯型形状因子においてタッチスクリーン能力を提供するハイブリッドの形態とすることができる。1つの典型的なクライアントデバイスとしては、オペレーティングシステムを実行し、種々のアプリケーション(アプリ)へのアクセスが与えられる電話デバイスを挙げることができる。アプリケーションは、ネットワーク200を介して取得して、ローカルな携帯装置(たとえば、スマートフォン、タブレット、ラップトップ、デスクトップなど)上で実行し得る。
【0068】
クライアントデバイス100には、ディスプレイ132が含まれている。ディスプレイ132は、ユーザが入力コマンド236を送り、GCS300及びソーシャルメディアプロバイダ240から受け取ったデータ及び/または情報135を表示するインターフェースとして機能する。ディスプレイ132は、タッチスクリーン、または典型的にフラットパネルディスプレイによって提供されるディスプレイ、陰極線管(CRT)、または他のデバイスであって、ディスプレイをレンダリングすることができるものとして構成することができる。代替的に、デスクトップコンピュータまたはラップトップコンピュータと同様に、クライアントデバイス100はそのディスプレイ132をデバイスから分離することができる。
【0069】
一実施形態では、クライアントデバイス100は、ユーザ(プレーヤ)がビデオゲームをプレイできるようにGCS300と通信するように構成されている。たとえば、プレーヤは、ゲームタイトルデータストア264内で利用可能なビデオゲームを、ゲーム選択エンジン275を介して選択してもよい(たとえば、ゲームタイトルなどによって)。選択したビデオゲームは有効にされ、ビデオゲームのインスタンスがロードされて、GCS300上でゲームサーバ205が実行する。一実施形態では、ゲームプレイは主にGCS300内で実行されて、クライアントデバイス100がGCS300からゲームビデオフレーム135のストリームを受け取って、ゲームプレイを推進するためのユーザ入力コマンド236がGCS300に伝送して戻される。ストリーミングゲームプレイから受け取ったビデオフレーム135は、クライアントデバイス100のディスプレイ132上でレンダリングされる。
【0070】
一実施形態では、プレーヤがプレイに利用できるゲームタイトルを選択した後で、選択したゲームタイトルに対するゲームセッションを、ゲームセッションマネージャ285を通してプレーヤが開始してもよい。ゲームセッションマネージャ285は最初に、データストア260内のゲーム状態ストアにアクセスして、もしあれば、プレーヤが(選択したゲームに対して)プレイした最後のセッションの保存されたゲーム状態を取り出して、プレーヤが前回のゲームプレイ停止点からゲームプレイを再開できるようにする。再開または開始点を特定したら、ゲームセッションマネージャ285は、ゲームサーバ205内のゲーム実行エンジンに通知して、選択したゲームタイトルのゲームコードをゲームコードストア261から実行してもよい。ゲームセッションが開始された後で、ゲームセッションマネージャ285は、ゲームビデオフレーム135(すなわち、ストリーミングビデオデータ)を、ネットワークインターフェース290を介してクライアントデバイス(たとえば、クライアントデバイス100)に送ってもよい。
【0071】
ゲームプレイ中に、ゲームセッションマネージャ285は、ゲームサーバ205、ビデオレコーダ271内の記録エンジン、及びタグプロセッサ273と通信して、ゲームプレイまたはゲームプレイセッションの記録(たとえば、ビデオ)を生成または保存してもよい。一実施形態では、ゲームプレイのビデオ録画には、ゲームプレイ中に入力されるかまたは提供されるタグ内容、及び他のゲーム関連メタデータを含めることができる。タグ内容はスナップショットを介して保存してもよい。ゲームプレイのビデオ録画を、そのゲームプレイに対応する任意のゲーム評価基準と共に、記録ゲームストア262に保存してもよい。任意のタグ内容をタグデータストア263に保存してもよい。
【0072】
ゲームプレイ中に、ゲームセッションマネージャ285は、ゲームサーバ205と通信して、ビデオゲームの対応するゲームプレイの結果に影響を与えるために用いるユーザ入力コマンド236を送出して取得してもよい。プレーヤが入力した入力コマンド236を、クライアントデバイス100からGCS300のゲームセッションマネージャ285に伝送してもよい。入力コマンド(たとえば、コントローラ入力またはユーザ入力)236には、ゲームプレイを推進するために用いる入力コマンド及びユーザ対話型入力、たとえば、タグ内容(たとえば、テキスト、画像、ビデオ録画クリップなど)が含まれる。ゲーム入力コマンドならびに任意のユーザプレイ指標(どのくらい長くユーザがゲームをプレイしているのかなど)を、ゲームネットワークユーザストアに記憶してもよい。ビデオゲームに対するゲームプレイに関連する選ばれた情報を用いて、ユーザにとって利用可能であり得る複数の特徴を可能にしてもよい。
【0073】
したがって、本開示では、種々の実施形態において、機械学習(深層学習とも言われる)アルゴリズムを実施して、1つ以上のゲームプレイをサポートするオンラインゲームアプリケーションのインスタンスを実行するサーバのネットワークから集めたトレーニングデータを用いてAIモデルを構築し、またトレーニングしたAIモデルを用いてオンラインゲームアプリケーション及び/またはオンラインゲームアプリケーションのゲームプレイに関係する種々の機能を提供するためのシステム及び方法について説明した。
【0074】
前述したように、AIモデルは相互接続されたノードのネットワークを用いて構築する。各ノードは、AIモデルに入力として提供されるゲームデータからのいくつかの情報を学習する。知識を、相互接続を通してネットワーク内の異なるノード間で交換する。AIモデルへのゲームデータ入力によって、ネットワーク内の最初の組のノードが起動する。そして、この最初の組のノードによって他のノードが起動し、その結果、ゲーム入力についての知識が、あるノードから次のノードへ伝搬する。この起動プロセスは他のノードにわたって繰り返され、その結果、知識が構築されて、出力が得られる。
出力は、所与の組のゲームデータに対して予想または予測される結果を表している。所与の組のトレーニングデータには特定の組のユーザの入力及びオンラインゲームのゲーム状態が含まれる。次にAIモデルからの出力を用いて、処理ノード(すなわち、ゲームデータの特定の特徴を処理するためのサーバリソース)の配分を精緻なものにして、オンラインゲームを以後に実行する間に、成功基準を満たすことができる。AIモデルをトレーニングするために用いるゲームデータはオンラインゲームのゲームプレイに関するために、AIモデルをトレーニングして、異なる成功基準に対応付けられるオンラインゲームのゲームプレイの異なる出力を得るために用い得るリソースの可能なすべての構成を学習する。したがって、AIモデルに、オンラインゲームの以後のゲームプレイに関係するゲームデータの組(たとえば、ユーザの入力、ゲーム状態など)を提供すると、AIモデルはそのゲームプレイに対する成功基準とほとんど合っている出力を提供することができる。
AIモデルを、種々の機械学習(すなわち、AI)アルゴリズムを通して作成してもよい。たとえば、深層学習(すなわち、機械学習)、強化学習、教師あり学習、教師なし学習、半教師あり学習、増分学習、報酬ベースの学習などである。前述で列記したAIアルゴリズムのタイプは、単に説明を目的として与えたものであり、網羅的でも限定でもない。分類子エンジンを用いてAIモデルのノードに対する特徴を特定し、ルールによって、ノードに関連付けられる所与の組の特徴が特定の出力にリンクされる。たとえば、教師あり学習環境では、所与の組の特徴に対して出力が予め決定され、深層学習エンジンは、特徴の組を出力にリンクするルールを学習する。各ルールは出力に関連付けられ、成功基準を適用してルールを規定する。教師なし学習環境では、所与の組の特徴が出力に自動的に結合されるわけではないが、類似性、または他の同様の組の特徴に関係するデータ点のクラスタを探すことによってルールを学習し得る。深層学習は、教師あり学習を用いて最初のAIモデルを構築し、教師なし学習を用いてAIモデルを精緻なものにし得る。トレーニングしたAIモデルを用いて、オンラインゲームに対する現在のリソース配分及び所与の成功基準に対して予測されるリソース配分を決定し、オンラインゲームに対して配分されるリソースを弾性的に調整してオンラインゲームのゲームプレイ中に所望の結果を得る。
【0075】
図9に、一実施形態により、オンラインゲームのゲームプレイに対するリソースのプロビジョニングを行うための方法のサンプルフロー動作を例示する。本方法が開始される動作910では、オンラインゲーム用のトレーニングデータを受け取る。オンラインゲームは、マルチプレイヤーゲームであり、複数のプレーヤがオンラインゲームにアクセスしてゲームプレイセッションに参加する。プレーヤは、どこからでもオンラインゲームにアクセスしてゲームプレイを行い得る。その結果、オンラインゲームの複数のインスタンス(オンラインゲームのゲームエンジン及びゲームロジックを含む)が複数のサーバ上で実行され、オンラインゲームを実行することから生じるオンラインゲームからのゲームデータが、プレーヤのクライアントデバイスの個々に転送される。
プレーヤに加えて、複数の観戦者がオンラインゲームにアクセスして、特定のプレーヤのゲームプレイまたはオンラインゲームのゲームプレイを追ってもよい。ゲームプレイ中のユーザの入力が、ゲームクラウドシステムのゲームサーバによって複数のプレーヤから集められ、オンラインゲームのゲーム状態に影響を与えるように、またゲームデータを生成するように処理される。トレーニングデータには、ユーザの入力及びオンラインゲームのゲーム状態、ならびにオンラインゲームに対して規定された成功基準が含まれる。
【0076】
トレーニングデータを用いてリソース配分モデルを作成する。これを動作920に例示する。リソース配分モデルの作成は、機械学習アルゴリズムと連結する人工知能(AI)モデラーを用いて行う。モデラーは、オンラインゲームに対して生成されたゲームデータの具体的な特徴を処理するために用いる分散ゲームエンジンの機能部分を特定し、機能部分に関係する情報をAIモデルの複数のノードのうち相互接続された特定のものにアップロードする。ノードにアップロードされた情報には、ゲームデータの具体的な特徴、具体的な特徴を処理するために用いたリソースのタイプ及び量を、オンラインゲームのゲーム状態及びユーザの入力に基づいて、またオンラインゲームのゲーム状態に対して規定した成功基準を満たしていたか満たしていなかったかに基づいて、処理するために用いるゲームエンジンの機能部分が含まれていてもよい。
【0077】
動作930に例示するように、リソース配分モデルが提供する情報を用いて、オンラインゲームに対する機能部分を実行するためにリソースを配分する。機能部分は、ゲームエンジンタスクのうち、ゲームデータの特徴の特定のものに関係する選ばれたものを行う。配分されたリソースは、個々のゲームエンジンタスクを処理するための十分なリソースを提供し、機能部分を実行するために配分されたリソースのタイプ及び量はリソース配分モデルが指示する。
【0078】
リソースの配分には、処理ノードのうち特定のゲームエンジンタスクを処理するために特定した選ばれたものの割当てを管理すること、処理するために、選ばれた処理ノードに特定のゲームエンジンタスクを分散させること、処理結果を、選ばれた処理ノードと複数の処理ノードの残りのものとの間、及び選ばれた処理ノードと構成エージェントとの間でルーティングすること、ならびに複数の処理ノード間に分散させたゲームエンジンタスクの処理を同期させること、が含まれていてもよい。オンラインゲームに対して規定した成功基準を満たして、オンラインゲームのユーザが満足のいくゲームプレイ経験を持つように、ゲームデータの処理に成功する最適なリソースをもたらすように処理ノードの配分を行う。
【0079】
図10に、本開示の種々の実施形態の態様を行うために用いることができるデバイス例600のコンポーネントを例示する。たとえば、
図10に例示するのは、本開示の一実施形態により、オンラインゲーム及び/またはオンラインゲームのゲームプレイに関連する種々の機能を行うことができるAIモデルをトレーニングすることに適した典型的なハードウェアシステムである。このブロック図に例示するデバイス600は、パーソナルコンピュータ、サーバコンピュータ、ゲーミングコンソール、モバイルデバイス、または他のデジタルデバイス(それぞれ本発明の実施形態を実施することに適している)を組み込むことができるかまたはそれらとすることができる。代替的に、デバイスの機能を、物理サーバ内でまたは仮想マシンもしくはコンテナサーバ上で実施することができる。デバイス600には、ソフトウェアアプリケーション及び任意的にオペレーティングシステムを実行するための中央演算処理装置(CPU)602が含まれている。CPU602は1つ以上の同種または異種の処理コアから構成してもよい。
【0080】
種々の実施形態により、CPU602は、1つ以上の処理コアを有する1つ以上の汎用マイクロプロセッサである。さらなる実施形態を、1つ以上のCPUであって、マイクロプロセッサアーキテクチャが、深層学習、コンテンツ分類、及びユーザ分類用に構成されたアプリケーションの高並列及びコンピュータ集約アプリケーション(たとえば、メディア及び双方向エンターテインメントアプリケーション)用に具体的に適応されたCPUを用いて実施することができる。たとえば、CPU602は、オンラインゲーム及び/またはオンラインゲームのゲームプレイに関連する種々の機能(たとえば、予測すること)をもたらすことに関する学習動作をサポートし及び/または行うように構成されたAIエンジンを含むように構成してもよい。
深層学習エンジンには、オンラインゲーム及び/またはオンラインゲームのゲームプレイに関する種々の機能をもたらすように構成されたAIモデルを構築及び/またはトレーニングするように構成されたモデラー120が含まれていてもよい。さらに、CPU602には、AIモデルを作成してレーニングするように構成された分析器140が含まれている。トレーニングしたAIモデルは、特定の組のユーザの入力に応じて出力をもたらす。出力は、トレーニングしたAIモデルの所定の機能に依存している。トレーニングしたAIモデルを用いて、オンラインゲームに対して規定した成功基準を満たすようにゲームプレイ中に実施すべきリソース配分を決定してもよい。分析器140は、オンラインゲーム及び/またはオンラインゲームのゲームプレイに関連する種々の機能を行い(たとえば、所与の入力(たとえば、コントローラ入力、ゲーム状態データ、成功基準)に対してトレーニングしたAIモデル160からの出力を分析する)、応答を提供するように構成されている。
【0081】
メモリ604は、CPU602が用いるアプリケーション及びデータを記憶する。記憶装置606は、アプリケーション及びデータ用の不揮発性記憶装置及び他のコンピュータ可読媒体を提供し、固定ディスクドライブ、リムーバブルディスクドライブ、フラッシュメモリデバイス、及びCD-ROM、DVDROM、ブルーレイ(登録商標)、HDDVD、または他の光学記憶装置、ならびに信号伝送及び記憶媒体を含んでもよい。ユーザ入力デバイス608は、1人以上のユーザからのユーザ入力をデバイス600に伝達する。ユーザ入力デバイス608の例として、キーボード、マウス、ジョイスティック、タッチパッド、タッチスクリーン、スチールまたはビデオレコーダ/カメラ、ゲームコントローラ、及び/またはマイクロフォンを挙げてもよい。
ネットワークインターフェース614は、デバイス600が電子通信ネットワークを介して他のコンピュータシステムと通信することを可能にし、ローカルエリアネットワーク及びワイドエリアネットワーク(たとえば、インターネット)を介した有線または無線通信を含んでもよい。オーディオプロセッサ612は、CPU602、メモリ604、及び/または記憶装置606が与える命令及び/またはデータから、アナログまたはデジタルオーディオ出力を生成するように構成されている。デバイス600のコンポーネント(たとえば、CPU602、メモリ604、データ記憶装置606、ユーザ入力デバイス608、ネットワークインターフェース610、及びオーディオプロセッサ612)は、1つ以上のデータバス622を介して接続されている。
【0082】
グラフィックスサブシステム613はさらに、データバス622及びデバイス600のコンポーネントと接続されている。グラフィックスサブシステム613には、グラフィックス処理装置(GPU)616及びグラフィックスメモリ618が含まれている。グラフィックスメモリ618には、出力画像の各画素に対する画素データを記憶するために用いるディスプレイメモリ(たとえば、フレームバッファ)が含まれている。
グラフィックスメモリ618は、GPU616と同じデバイス内に組み込むことができ、別個のデバイスとしてGPU616と接続することができ、及び/またはメモリ604内で実施され得る。画素データを、CPU602から直接グラフィックスメモリ618に提供することができる。
他の形態では、CPU602は、GPU616に、所望の出力画像を規定するデータ及び/または命令を提供する。このデータ及び/または命令から、GPU616は1つ以上の出力画像の画素データを生成する。所望の出力画像を規定するデータ及び/または命令を、メモリ604及び/またはグラフィックスメモリ618内に記憶することができる。一実施形態では、GPU616には、シーンに対するジオメトリ、照明、シェーディング、テクスチャリング、動き、及び/またはカメラパラメータを規定する命令及びデータから出力画像に対する画素データを生成するための3Dレンダリング能力が含まれている。GPU616にはさらに、シェーダープログラムを実行することができる1つ以上のプログラム可能な実行ユニットを含めることができる。一実施形態では、GPU616をAIエンジン内で実施して、たとえばAIまたは深層学習機能用のさらなる処理能力を提供してもよい。
【0083】
グラフィックスサブシステム613は、ディスプレイデバイス610上に表示すべきかまたは投影システム640によって投影すべきグラフィックスメモリ618からの画像用の画素データを周期的に出力する。ディスプレイデバイス610は、デバイス600からの信号に応じて視覚情報を表示することができる任意のデバイスとすることができ、CRT、LCD、プラズマ、及びOLEDディスプレイを含む。デバイス600は、たとえば、ディスプレイデバイス610にアナログまたはデジタル信号を提供し得る。
【0084】
当然のことながら、本明細書で規定した種々の実施形態を組み合わせるかまたはアセンブルして、本明細書で開示した種々の特徴を用いた具体的な実施を行ってもよい。したがって、提示した例は単にいくつかの可能な例であり、種々の要素を組み合わせることによってさらに多くの実施形態を規定することができる種々の実施形態に対する限定を伴うものではない。いくつかの例では、開示した実施形態または同等な実施形態の趣旨から逸脱することなく、いくつかの実施形態に含まれる要素は、より少なくてもよい。
【0085】
本開示の実施形態は、種々のコンピュータシステム構成(たとえば、ハンドヘルドデバイス、マイクロプロセッサシステム、マイクロプロセッサベースまたはプログラマブル民生用エレクトロニクス、ミニコンピュータ、メインフレームコンピュータなど)を用いて実施してもよい。また本開示の実施形態を、有線ベースまたは無線ネットワークを通してリンクされたリモート処理装置によってタスクが行われる分散コンピューティング環境において実施することができる。
【0086】
前述の実施形態を念頭において、本開示の実施形態では、コンピュータシステムに記憶されたデータを伴う種々のコンピュータ実装動作を利用できることを理解されたい。これらの動作は、物理量の物理的な操作を必要とするものである。本開示の実施形態の一部を構成する本明細書で説明した動作のいずれかは有用なマシン動作である。また本開示の実施形態はこれらの動作を行うためのデバイスまたは装置に関する。装置を必要な目的に対して特別に構成することもできるし、または装置を、コンピュータ内に記憶されたコンピュータプログラムによって選択的に起動または構成される汎用コンピュータとすることもできる。詳細には、本明細書の教示に従って書かれたコンピュータプログラムを用いて種々の汎用マシンを用いることもできるし、または必要な動作を行うために、より特化された装置を構築する方が好都合な場合もある。
【0087】
また本開示を、コンピュータ可読媒体上でのコンピュータ可読コードとして具体化することもできる。コンピュータ可読媒体は、データを記憶することができる任意のデータ記憶装置である。データはその後、コンピュータシステムによって読み出すことができる。コンピュータ可読媒体の例としては、ハードドライブ、ネットワーク接続ストレージ(NAS)、読み出し専用メモリ、ランダムアクセスメモリ、CD-ROM、CD-R、CD-RW、磁気テープ、ならびに他の光学及び非光学データ記憶装置を挙げることができる。コンピュータ可読媒体に、ネットワーク結合コンピュータシステム上で分散されたコンピュータ可読有形的表現媒体を含めて、コンピュータ可読コードが分散的に記憶及び実行されるようにすることができる。
【0088】
本方法の動作を特定の順序で説明したが、当然のことながら、オーバーレイ動作の処理が所望の方法で行われる限り、動作の間に他のハウスキーピング動作を行ってもよいし、またはわずかに異なる時間で動作が生じるように動作を調整してもよいし、または処理に関連付けられる種々の間隔で処理動作が生じ得るシステム内で動作を分散させてもよい。
【0089】
前述の開示は、理解を明瞭にするために少し詳しく説明しているが、ある変形及び変更を添付の特許請求の範囲内で実施することができることが明らかである。したがって、本実施形態は例示的であって、限定的ではないと考えるべきであり、本開示の実施形態は本明細書で示した詳細に限定してはならないが、添付の特許請求の範囲及び均等物内で変更してもよい。