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

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

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

<>
  • 特表-トランザクショナルメモリ同期 図1
  • 特表-トランザクショナルメモリ同期 図2
  • 特表-トランザクショナルメモリ同期 図3
  • 特表-トランザクショナルメモリ同期 図4A
  • 特表-トランザクショナルメモリ同期 図4B
  • 特表-トランザクショナルメモリ同期 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-04-04
(54)【発明の名称】トランザクショナルメモリ同期
(51)【国際特許分類】
   H04L 67/1095 20220101AFI20220328BHJP
   A63F 13/352 20140101ALI20220328BHJP
   G06F 9/52 20060101ALI20220328BHJP
   H04L 67/131 20220101ALI20220328BHJP
【FI】
H04L67/1095
A63F13/352
G06F9/52 150B
H04L67/131
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2021549342
(86)(22)【出願日】2020-02-12
(85)【翻訳文提出日】2021-10-11
(86)【国際出願番号】 US2020018011
(87)【国際公開番号】W WO2020172027
(87)【国際公開日】2020-08-27
(31)【優先権主張番号】16/282,283
(32)【優先日】2019-02-21
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】518187455
【氏名又は名称】ソニー・インタラクティブエンタテインメント エルエルシー
(74)【代理人】
【識別番号】100105924
【弁理士】
【氏名又は名称】森下 賢樹
(72)【発明者】
【氏名】ペレイラ、エドワード
(57)【要約】
【解決手段】2つ以上のサーバを有するオンラインゲーミングサービスが提供され、2つ以上のサーバは、2つ以上のデータセンタに位置し、オンラインゲーミングサービスは、2つ以上のサーバによってそれぞれが実行されるビデオゲームの異なるセッションの間の同期を扱うための、2つ以上のサーバにわたって実装されたトランザクション層を含み、ビデオゲームの異なるセッションはそれぞれ、それぞれのクライアントデバイスを通じて仮想空間を見ることをもたらすように構成され、トランザクション層は、仮想空間の近接領域を見ることをもたらすセッションを識別し、識別されたセッションについてのトランザクショナルメモリ同期に影響をもたらすように構成され、その結果、識別されたセッションによって生成された仮想空間におけるイベントが識別されたセッションの各々にわたって同期される。
【選択図】図1
【特許請求の範囲】
【請求項1】
方法であって、
第1のデータセンタにおいてビデオゲームの第1のセッションを実行することと、
前記第1のセッションと同時に、第2のデータセンタにおいて前記ビデオゲームの第2のセッションを実行することと、を備え、
前記第1のセッション及び前記第2のセッションは、第1のゲーム状態及び第2のゲーム状態をそれぞれ独立して生成し、前記第1のゲーム状態及び前記第2のゲーム状態は、共有された仮想空間を同時に表し、
前記第1のセッションを介して影響がもたらされる前記共有された仮想空間におけるイベントは、前記第1のデータセンタに記憶されたメモリオブジェクトの第1のセットに対するトランザクションを通じて実施され、第1のライブラリにアクセスする前記第1のセッションは、前記メモリオブジェクトの第1のセットに対する前記トランザクションに基づいて、更新パッケージの第1のセットを生成し、前記第2のデータセンタに前記更新パッケージの第1のセットを送信するように構成され、
前記第2のセッションを介して影響がもたらされる前記共有された仮想空間におけるイベントは、前記第2のデータセンタに記憶されたメモリオブジェクトの第2のセットに対するトランザクションを通じて実施され、第2のライブラリにアクセスする前記第2のセッションは、前記メモリオブジェクトの第2のセットに対する前記トランザクションに基づいて、更新パッケージの第2のセットを生成し、前記第1のデータセンタに前記更新パッケージの第2のセットを送信するように構成され、
前記方法は、
前記第2のデータセンタにおいて前記メモリオブジェクトの第2のセットに前記更新パッケージの第1のセットを適用することと、
前記第1のデータセンタにおいて前記メモリオブジェクトの第1のセットに前記更新パッケージの第2のセットを適用することと、を更に備え、
前記更新パッケージの第1のセット及び前記更新パッケージの第2のセットを前記生成すること、前記送信すること、及び前記適用することは、前記第1のセッション及び前記第2のセッションを介した前記共有された仮想空間における共有されたリアルタイムの対話を可能にする、
方法。
【請求項2】
前記第1のセッションが前記第1のゲーム状態を継続的に更新するよう、前記第1のデータセンタにおいて受信された入力及び前記メモリオブジェクトの第1のセットを使用することによって実行し、前記第2のセッションが前記第2のゲーム状態を継続的に更新するよう、前記第2のデータセンタにおいて受信された入力及び前記メモリオブジェクトの第2のセットを使用することによって実行するように、前記第1のセッション及び前記第2のセッションは、相互に通信しない、請求項1に記載の方法。
【請求項3】
前記第1のデータセンタにおいて受信された前記入力は、第1のクライアントデバイスから受信され、
前記第2のデータセンタにおいて受信された前記入力は、第2のクライアントデバイスから受信される、請求項2に記載の方法。
【請求項4】
前記更新パッケージの第1のセット及び前記更新パッケージの第2のセットを前記生成すること、前記送信すること、及び前記適用することは、前記メモリオブジェクトの第1のセットの少なくともいくつかと、前記メモリオブジェクトの第2のセットの対応するものとの同期を可能にする、請求項1に記載の方法。
【請求項5】
前記更新パッケージの第1のセットを適用することは、前記メモリオブジェクトの第2のセットの前記対応するものの1つ以上の値を変化させ、
前記更新パッケージの第2のセットを適用することは、前記メモリオブジェクトの第1のセットの前記少なくともいくつかの1つ以上の値を変化させる、請求項4に記載の方法。
【請求項6】
前記更新パッケージの各々は、タイムスタンプ、メモリ識別子、及び前記メモリ識別子によって識別されたメモリオブジェクトについての値を含む、請求項1に記載の方法。
【請求項7】
前記更新パッケージの各々を適用することは、前記メモリ識別子によって識別された前記メモリオブジェクトの値を前記更新パッケージの前記値に設定することを含む、請求項6に記載の方法。
【請求項8】
前記更新パッケージの各々を適用することは、前記更新パッケージの前記タイムスタンプが前記メモリ識別子によって識別された前記メモリオブジェクトについての最新のタイムスタンプであるかどうかを判定し、そうである場合、前記メモリ識別子によって識別された前記メモリオブジェクトの値を前記更新パッケージの前記値に設定することを含む、請求項6に記載の方法。
【請求項9】
前記第1のセッションを介して影響がもたらされる前記共有された仮想空間における前記イベントは、前記第1のセッションを通じて制御される第1の仮想キャラクタの位置における変化を含み、
前記第2のセッションを介して影響がもたらされる前記共有された仮想空間における前記イベントは、前記第2のセッションを通じて制御される第2の仮想キャラクタの位置における変化を含む、請求項1に記載の方法。
【請求項10】
前記第1のセッションの実行は、前記共有された仮想空間の第1のビューをレンダリングし、
前記第2のセッションの実行は、前記共有された仮想空間の第2のビューをレンダリングし、
前記第1のセッション及び前記第2のセッションを通じて影響がもたらされる前記共有された仮想空間における前記イベントは、前記共有された仮想空間の前記第1のビュー及び前記第2のビューを通じて同時に視聴可能である、請求項1に記載の方法。
【請求項11】
2つ以上のサーバを有するオンラインゲーミングサービスであって、前記2つ以上のサーバは、2つ以上のデータセンタに位置し、
前記2つ以上のサーバによってそれぞれが実行されるビデオゲームの異なるセッションの間の同期を扱うための、前記2つ以上のサーバにわたって実装されたトランザクション層を備え、
前記ビデオゲームの前記異なるセッションはそれぞれ、それぞれのクライアントデバイスを通じて仮想空間を見ることをもたらすように構成され、
前記トランザクション層は、前記仮想空間の近接領域を見ることをもたらすセッションを識別し、前記識別されたセッションについてのトランザクショナルメモリ同期に影響をもたらすように構成され、前記識別されたセッションによって生成された前記仮想空間におけるイベントが前記識別されたセッションの各々にわたって同期される、
オンラインゲーミングサービス。
【請求項12】
前記ビデオゲームの各々のセッションが、前記ビデオゲームの他のセッションとの通信を管理せず、前記ビデオゲームの各々のセッションが、前記ビデオゲームの前記他のセッションを認識しないように、前記ビデオゲームの各々のセッションは、前記ビデオゲームの前記他のセッションとは独立して実行する、請求項11に記載のオンラインゲーミングサービス。
【請求項13】
前記識別されたセッションについてのトランザクショナルメモリ同期に影響をもたらすことは、前記識別されたセッションの1つによって生成された前記仮想空間においてイベントを生じさせるメモリトランザクションを識別することと、前記識別されたセッションの他のものに前記メモリトランザクションを伝達することとを含む、請求項12に記載のオンラインゲーミングサービス。
【請求項14】
前記識別されたセッションの他のものに前記メモリトランザクションを伝達することは、前記メモリトランザクションのタイムスタンプ、前記メモリトランザクションが適用されるメモリオブジェクトについての識別子、及び前記メモリトランザクションによって設定された値を含む更新パッケージを生成することを含む、請求項13に記載のオンラインゲーミングサービス。
【請求項15】
前記トランザクション層は、前記ビデオゲームの前記異なるセッションにそれぞれが関連付けられた前記仮想空間における仮想位置を分析することによって、前記仮想空間の近接領域を見ることをもたらすセッションを識別するように構成されている、請求項11に記載のオンラインゲーミングサービス。
【請求項16】
2つ以上のサーバを有するオンラインゲーミングサービスであって、前記2つ以上のサーバは、2つ以上のデータセンタに位置し、
前記2つ以上のサーバによってそれぞれが実行されるビデオゲームの異なるセッションの間の同期を扱うための、前記2つ以上のサーバにわたって実装されたトランザクション層を備え、
前記ビデオゲームの前記異なるセッションはそれぞれ、それぞれのクライアントデバイスを通じて仮想空間を見ることをもたらすように構成され、
前記異なるセッションによって生成された前記仮想空間におけるイベントが前記異なるセッションの各々にわたって同期されるように、前記異なるセッションについてのトランザクショナルメモリ同期に影響をもたらすように構成され、
前記ビデオゲームの各々のセッションが、前記ビデオゲームの他のセッションとの通信を管理せず、前記ビデオゲームの各々のセッションが、前記ビデオゲームの前記他のセッションを認識しないように、前記ビデオゲームの各々のセッションは、前記ビデオゲームの前記他のセッションとは独立して実行する、
オンラインゲーミングサービス。
【請求項17】
前記異なるセッションについてのトランザクショナルメモリ同期に影響をもたらすことは、前記セッションの1つによって生成された前記仮想空間においてイベントを生じさせるメモリトランザクションを識別することと、前記セッションの他のものに前記メモリトランザクションを伝達することとを含む、請求項16に記載のオンラインゲーミングサービス。
【請求項18】
前記セッションの他のものに前記メモリトランザクションを伝達することは、前記メモリトランザクションのタイムスタンプ、前記メモリトランザクションが適用されるメモリオブジェクトについての識別子、及び前記メモリトランザクションによって設定された値を含む更新パッケージを生成することを含む、請求項17に記載のオンラインゲーミングサービス。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ビデオゲームなどの対話型アプリケーションの異なるセッションの間でのトランザクショナルメモリ同期のためのシステム及び方法に関する。
【背景技術】
【0002】
急速に発達している技術の現在の領域は、ビデオゲーミングの分野であり、今では、専用ゲーミングコンソール、パーソナルコンピュータ(PC)、更に最近では、クラウドゲーミング及びモバイルデバイスを含む、多数のゲーミングプラットフォームを包含する。ネットワーク化されたゲーミングサービス/システムの1つの例は、コンソール方式ゲーミング及びクラウド方式ゲーミングの両方をサポートする様々なゲーミングサービスを含む、PlayStation(登録商標)Networkである。
【0003】
クラウドゲーミング設定では、ユーザは、インターネットなどのネットワークを通じてクラウドゲーミングサイト上でいくつかのゲームにアクセスすること、及び対話/ゲームをプレイすることを始めることが可能である。ゲームプレイのためのゲームを選択するために、ユーザは、クラウドゲーミングサイト上でユーザのアカウントにアクセスし、ゲームプレイのためにユーザアカウントに利用可能な複数のゲームのうちの1つを開始する。クラウドビデオゲームから生成されたビデオは、クライアントデバイスに搬送される。クラウドゲーミングシステムの1つの例は、Playstation(登録商標)Nowクラウドゲーミングサービスである。
【0004】
現在では、ビデオゲームなどのシミュレーションは、クラウドサーバコンピュータによって実行されることがあり、仮想世界を表すことがある。大規模な仮想世界を促進し、多くのプレイヤがそのような仮想世界において対話することを促進するために、仮想世界は、いくつかの異なるサーバコンピュータによって扱われることがある。仮想世界の異なる部分を各々が制御するビデオゲームの複数のセッションが存在することがあり、そのようなセッションは、異なるデータセンタに位置することがある異なるサーバコンピュータによって実行される。よって、所与のプレイヤは、プレイヤが仮想世界にわたって移動するにつれて異なるサーバコンピュータ(及び、異なるセッション)に接続することがある。よって、複数のセッションが存在することがあるが、それらは、同一の現実空間または仮想空間もしくは仮想世界の一部を同時に表さない。2人のプレイヤが同一の仮想空間を共有する場合、それらは典型的には、同一のサーバマシンに接続する。
【0005】
しかしながら、いくつかの問題を結果としてもたらすことがある。例えば、プレイヤが仮想世界の1つの部分から別の部分に遷移するにつれて、プレイヤが1つのサーバから別のサーバに切り替えるとき、プレイヤは、遷移するときにラグまたは遅延を経験することがある。更に、仮想世界の特定の領域において対話することを望む全てのユーザは、同一のサーバマシンまたはデータセンタに接続することが必要とされる。同一の仮想空間にアクセスするために同一のサーバマシンに接続することを望むユーザが多すぎることがあり、そのサーバマシンがゲームの品質を劣化させることなく全てのそのような接続を扱うためにリソースまたは帯域幅を十分に有さないことがあることを理由に、これが問題となることがある。別の問題は、特定のサーバマシンの位置が所与のプレイヤから遠隔にあるデータセンタにあることがあり、その結果、所与のプレイヤに対して高品質なゲームストリーミングをサポートするために強いネットワーク接続を確立することが困難になることである。よって、1つのサーバから別のサーバに切り替えることは、サーバの異なる位置から結果として生じる異なるネットワーク状況に起因して、ゲームストリーミング品質における変化を生じさせることがある。いくつかの例では、ゲームストリーミング品質は、レイテンシが増大し、ビデオ品質が低減することなどの形式で、劣化することがある。
【0006】
要するに、現在では、異なるサーバマシン、更に言うと、異なるデータセンタは、所与のシミュレーションまたはビデオゲームのコンテキストにおいて同一の(仮想)現実を同時に表さない。代わりに、異なるサーバマシンは、仮想世界の異なる部分を扱い、これは、上記説明されたように問題を生じさせることがある。
【0007】
このようなコンテキスト内で、本開示の実施形態は生じる。
【発明の概要】
【0008】
本開示の実装態様は、ビデオゲームまたはシミュレーションなどの対話型アプリケーションの異なるセッションの間でのトランザクショナルメモリ同期のための方法及びシステムを提供する。
【0009】
いくつかの実装態様では、以下の動作:第1のデータセンタにおいてビデオゲームの第1のセッションを実行することと、第1のセッションと同時に、第2のデータセンタにおいてビデオゲームの第2のセッションを実行することと、を含む方法が提供され、第1のセッション及び第2のセッションは、第1のゲーム状態及び第2のゲーム状態をそれぞれ独立して生成し、第1のゲーム状態及び第2のゲーム状態は、共有された仮想空間を同時に表し、第1のセッションを介して影響がもたらされる共有された仮想空間におけるイベントは、第1のデータセンタに記憶されたメモリオブジェクトの第1のセットに対するトランザクションを通じて実施され、第1のライブラリにアクセスする第1のセッションは、メモリオブジェクトの第1のセットに対するトランザクションに基づいて、更新パッケージの第1のセットを生成し、第2のデータセンタに更新パッケージの第1のセットを送信するように構成され、第2のセッションを介して影響がもたらされる共有された仮想空間におけるイベントは、第2のデータセンタに記憶されたメモリオブジェクトの第2のセットに対するトランザクションを通じて実施され、第2のライブラリにアクセスする第2のセッションは、メモリオブジェクトの第2のセットに対するトランザクションに基づいて、更新パッケージの第2のセットを生成し、第1のデータセンタに更新パッケージの第2のセットを送信するように構成され、方法は、第2のデータセンタにおいてメモリオブジェクトの第2のセットに更新パッケージの第1のセットを適用することと、第1のデータセンタにおいてメモリオブジェクトの第1のセットに更新パッケージの第2のセットを適用することと、を更に含み、更新パッケージの第1のセット及び更新パッケージの第2のセットを生成すること、送信すること、及び適用することは、第1のセッション及び第2のセッションを介した共有された仮想空間における共有されたリアルタイムの対話を可能にする。
【0010】
いくつかの実装態様では、第1のセッションが第1のゲーム状態を継続的に更新するよう、第1のデータセンタにおいて受信された入力及びメモリオブジェクトの第1のセットを使用することによって実行し、第2のセッションが第2のゲーム状態を継続的に更新するよう、第2のデータセンタにおいて受信された入力及びメモリオブジェクトの第2のセットを使用することによって実行するように、第1のセッション及び第2のセッションは、相互に通信しない。
【0011】
いくつかの実装態様では、第1のデータセンタにおいて受信された入力は、第1のクライアントデバイスから受信され、第2のデータセンタにおいて受信された入力は、第2のクライアントデバイスから受信される。
【0012】
いくつかの実装態様では、更新パッケージの第1のセット及び更新パッケージの第2のセットを生成すること、送信すること、及び適用することは、メモリオブジェクトの第1のセットの少なくともいくつかと、メモリオブジェクトの第2のセットの対応するものとの、の同期を可能にする。
【0013】
いくつかの実装態様では、更新パッケージの第1のセットを適用することは、メモリオブジェクトの第2のセットの対応するものの1つ以上の値を変化させ、更新パッケージの第2のセットを適用することは、メモリオブジェクトの第1のセットの少なくともいくつかの1つ以上の値を変化させる。
【0014】
いくつかの実装態様では、更新パッケージの各々は、タイムスタンプ、メモリ識別子、及びメモリ識別子によって識別されたメモリオブジェクトについての値を含む。
【0015】
いくつかの実装態様では、更新パッケージの各々を適用することは、メモリ識別子によって識別されたメモリオブジェクトの値を更新パッケージの値に設定することを含む。
【0016】
いくつかの実装態様では、更新パッケージの各々を適用することは、更新パッケージのタイムスタンプがメモリ識別子によって識別されたメモリオブジェクトについての最新のタイムスタンプであるかどうかを判定し、そうである場合、メモリ識別子によって識別されたメモリオブジェクトの値を更新パッケージの値に設定することを含む。
【0017】
いくつかの実装態様では、第1のセッションを介して影響がもたらされる共有された仮想空間におけるイベントは、第1のセッションを通じて制御される第1の仮想キャラクタの位置における変化を含み、第2のセッションを介して影響がもたらされる共有された仮想空間におけるイベントは、第2のセッションを通じて制御される第2の仮想キャラクタの位置における変化を含む。
【0018】
いくつかの実装態様では、第1のセッションの実行は、共有された仮想空間の第1のビューをレンダリングし、第2のセッションの実行は、共有された仮想空間の第2のビューをレンダリングし、その結果、第1のセッション及び第2のセッションを通じて影響がもたらされる共有された仮想空間におけるイベントは、共有された仮想空間の第1のビュー及び第2のビューを通じて同時に視聴可能である。
【0019】
いくつかの実装態様では、2つ以上のサーバを有するオンラインゲーミングサービスが提供され、2つ以上のサーバは、2つ以上のデータセンタに位置し、オンラインゲーミングサービスは、2つ以上のサーバによってそれぞれが実行されるビデオゲームの異なるセッションの間の同期を扱うための、2つ以上のサーバにわたって実装されたトランザクション層を含み、ビデオゲームの異なるセッションはそれぞれ、それぞれのクライアントデバイスを通じて仮想空間を見ることをもたらすように構成され、トランザクション層は、仮想空間の近接領域を見ることをもたらすセッションを識別し、識別されたセッションについてのトランザクショナルメモリ同期に影響をもたらすように構成され、その結果、識別されたセッションによって生成された仮想空間におけるイベントが識別されたセッションの各々にわたって同期される。
【0020】
いくつかの実装態様では、ビデオゲームの各々のセッションが、ビデオゲームの他のセッションとの通信を管理せず、ビデオゲームの各々のセッションが、ビデオゲームの他のセッションを認識しないように、ビデオゲームの各々のセッションは、ビデオゲームの他のセッションとは独立して実行する。
【0021】
いくつかの実装態様では、識別されたセッションについてのトランザクショナルメモリ同期に影響をもたらすことは、識別されたセッションの1つによって生成された仮想空間においてイベントを生じさせるメモリトランザクションを識別することと、識別されたセッションの他の1つにメモリトランザクションを伝達することとを含む。
【0022】
いくつかの実装態様では、識別されたセッションの他のものにメモリトランザクションを伝達することは、メモリトランザクションのタイムスタンプ、メモリトランザクションが適用されるメモリオブジェクトについての識別子、及びメモリトランザクションによって設定された値を含む更新パッケージを生成することを含む。
【0023】
いくつかの実装態様では、トランザクション層は、ビデオゲームの異なるセッションにそれぞれが関連付けられた仮想空間における仮想位置を分析することによって、仮想空間の近接領域を見ることをもたらすセッションを識別するように構成されている。
【0024】
いくつかの実装態様では、2つ以上のサーバを有するオンラインゲーミングサービスが提供され、2つ以上のサーバは、2つ以上のデータセンタに位置し、オンラインゲーミングサービスは、2つ以上のサーバによってそれぞれが実行されるビデオゲームの異なるセッションの間の同期を扱うための、2つ以上のサーバにわたって実装されたトランザクション層を含み、ビデオゲームの異なるセッションはそれぞれ、それぞれのクライアントデバイスを通じて仮想空間を見ることをもたらすように構成され、異なるセッションによって生成された仮想空間におけるイベントが異なるセッションの各々にわたって同期されるように、異なるセッションについてのトランザクショナルメモリ同期に影響をもたらすように構成され、ビデオゲームの各々のセッションが、ビデオゲームの他のセッションとの通信を管理せず、ビデオゲームの各々のセッションが、ビデオゲームの他のセッションを認識しないように、ビデオゲームの各々のセッションは、ビデオゲームの他のセッションとは独立して実行する。
【0025】
いくつかの実装態様では、識別されたセッションについてのトランザクショナルメモリ同期に影響をもたらすことは、セッションの1つによって生成された仮想空間においてイベントを生じさせるメモリトランザクションを識別することと、セッションの他のものにメモリトランザクションを伝達することとを含む。
【0026】
いくつかの実装態様では、セッションの他のものにメモリトランザクションを伝達することは、メモリトランザクションのタイムスタンプ、メモリトランザクションが適用されるメモリオブジェクトについての識別子、及びメモリトランザクションによって設定された値を含む更新パッケージを生成することを含む。
【0027】
本開示の他の態様及び利点は、添付の図面と併せて、本開示の原理を例として示す下記の詳細な説明から明らかになるであろう。
【図面の簡単な説明】
【0028】
本開示は、その更なる利点と共に、添付図面と併せて下記の説明を参照することにより、最も良く理解されるであろう。
【0029】
図1】開示の実装態様に従った、データセンタにわたるトランザクショナルメモリ同期を採用したクラウドゲーミングのためのシステムを概念的に例示する。
【0030】
図2】開示の実装態様に従った、アプリケーションセッションの間のメモリオブジェクトの同期のためのシステムを例示する。
【0031】
図3】開示の実装態様に従った、更新が仮想的な地理的近接性に基づいてフィルタリングされるシステムを概念的に例示する。
【0032】
図4A】開示の実装態様に従った、クラウドゲーミングサイトを通じて利用可能なゲームに対してゲームファイルをロードするために使用される例示的なシステムを例示する。
【0033】
図4B】開示の実装態様に従った、クライアントデバイスにクラウドビデオゲームをストリーミングするために実行される様々な動作を概念的に示すフローチャートである。
【0034】
図5】開示の実装態様に従った、情報サービスプロバイダアーキテクチャの実施形態を例示する。
【発明を実施するための形態】
【0035】
下記の説明では、本開示の完全な理解を提供するために、多くの具体的な詳細が述べられる。しかしながら、本開示は、これらの具体的な詳細の一部または全てがなくとも実践されてもよいことが、当業者には明らかであろう。他の例では、本開示を不明瞭にしないために、周知のプロセスステップについては詳細に説明していない。
【0036】
現在では、複数の異なるデータセンタにあることがある、複数のサーバコンピュータ/マシンは、所与のビデオゲームまたはシミュレーションのコンテキストにおいて同一の(仮想)現実を同時に表さないが、代わりに、その各々は、仮想世界の異なる部分を表す。仮想世界の特定の部分にアクセスすることを望む全てのユーザが同一のサーバ/データセンタにアクセスすることが必要とされるので、また、データセンタにおけるリソースが制限されているため、前に説明されたようなリソースの問題につながるという問題となり得る。
【0037】
そのような問題に対処するために、本開示に従った実装態様は、それらが同一の現実を表すことができるように、複数のデータセンタにわたるトランザクショナルメモリ同期をもたらす。データセンタの間で現実を共有するために、変更を追跡し、データセンタにわたってそれらを複製するトランザクション層が生成される。広義に言うと、所与のトランザクションは、トランザクションの時間を示すタイムスタンプ、メモリ位置、及び値または値における変化(例えば、更新されることになる変数の)を含む。データセンタにわたるトランザクショナルメモリ同期を有効にすることによって、複数のデータセンタは、同一の現実を表すことができ、リソース利用がデータセンタにわたって広がることを可能にし、また、ユーザがそれらの位置により近接したデータセンタに接続することを可能にすることによって、ユーザにより良好なネットワーク接続性をもたらす。
【0038】
更に、開示の実装態様は、メモリトランザクションを生成、送信、受信、及び適用するための自動化のシステムを設けることによって、開発者を支援する。よって、アプリケーション開発者は、ビデオゲームの共有された現実を表すデータセンタの数にとらわれずに開発することができる。更に、開発者が複数のデータセンタの間で状態を管理することに関与する必要がないように、トランザクション機構は、共有された現実の融合された状態を理解することができる。
【0039】
広義に言うと、開示の実装態様は、クラウドゲーミングシステムに適用される。クラウドゲーミングシステムの1つの例は、Playstation(登録商標)Nowクラウドゲーミングシステムである。そのようなシステムでは、クライアントデバイスは、Playstation(登録商標)4ゲームコンソールなどのゲームコンソールであってもよく、またはパーソナルコンピュータ、ラップトップ、タブレット、携帯電話、モバイルデバイスなどの別のデバイスであってもよい。PlayStation(登録商標)Networkなどのネットワーク化されたゲーミングサービス/システムは、クラウド方式ゲーミングをサポートする様々なゲーミングサービスを提供することができる。
【0040】
説明を容易にするために、本開示の全体を通じて、「ユーザ」または「プレイヤ」への言及は多くの場合、ユーザが典型的には、ユーザデバイスを使用または操作することによって本開示に従ったシステムと相互作用するので、ユーザと関連付けられ、またはユーザによって操作されるユーザ/プレイヤ(クライアント)デバイスと同義であることが認識されよう。よって、本開示では説明を容易にするために用語「ユーザ」が使用されるが、用語「ユーザ」は、ユーザ、並びにユーザが操作するあるいはユーザに関連付けられたユーザデバイスの両方を含み得ることが理解され、さらに用語「ユーザ」及び「ユーザデバイス」は、当業者には明らかなように、実施態様の本説明において互換的に使用され得ることが多い。
【0041】
図1は、開示の実装態様に従った、データセンタにわたるトランザクショナルメモリ同期を採用したクラウドゲーミングのためのシステムを概念的に例示する。示されるように、同一の現実を表すアプリケーションのコピーを各々が実行する複数のデータセンタが存在する。例えば、データセンタ100は、サーバリソース102を含む。サーバリソース102は、限定なしに例として、様々なサーバコンピュータ/マシン、ブレード型コンピューティングリソース、CPU/GPU/APU、揮発性及び不揮発性メモリまたは記憶装置、ローカルネットワーキングデバイスなどを含む、アプリケーションを実行およびストリーミングするために利用することができるデータセンタ100におけるいずれかのコンピューティングリソースを含んでもよい。いくつかの実装態様では、サーバリソース102は、下層のコンピューティングハードウェアを通じて抽象化された仮想化コンピューティングリソースであってもよい。
【0042】
アプリケーションセッション104は、データセンタ100におけるサーバリソース102上で実行される。いくつかの実装態様では、アプリケーションセッション104は、ビデオゲーム、シミュレーション、または他の対話型プログラムのセッションである。広義に言うと、アプリケーションセッション104は、アプリケーションセッション104の仮想空間/現実を定義したプログラム状態(または、ゲーム状態)を生成及び更新する。一般的に言うと、本開示の目的のために、アプリケーション/ビデオゲームの「現実」は、アプリケーション/ビデオゲームによって生成及び維持される仮想対話型環境であり、アプリケーション/ビデオゲームの中で、複数のユーザがそれぞれのクライアントデバイスを通じてオブジェクトの状態と相互作用し、影響を及ぼすことができる。
【0043】
仮想空間を表す際、アプリケーションセッション104は、メモリオブジェクト106上でトランザクションを実行する。メモリオブジェクト106は、仮想空間及びその中のオブジェクトの間の対話におけるオブジェクトの状態または特性を定義する、いずれかの変数、データ、またはデータ構造を含んでもよい。限定なしに単なる例として、メモリオブジェクトまたはメモリオブジェクトによって定義されたアイテムの例は、以下のもの及び/または以下のものの特性:キャラクタ、アバタ、人物、動物、衣服、移動、武器、盾、装甲、車両、シーン、仮想位置、仮想時間、インベントリ、経験、仮想通貨、ヘルス、残機、損害、仮想オブジェクト、仮想アクション、などを含んでもよい。
【0044】
開示の実装態様に従って、複数のデータセンタは、同一の現実を表すことができる。例えば、例示される実装態様では、同一のアプリケーションを実行することができる、追加のデータセンタ110及び120が示される。データセンタ110のケースでは、メモリオブジェクト116に対してトランザクションを実行する、アプリケーションセッション114を実行するためにサーバリソース112が利用される。同様に、データセンタ120は、メモリオブジェクト126に対してトランザクションを実行する、アプリケーションセッション124を実行するためにサーバリソース122を利用する。アプリケーションセッション114及び124は、アプリケーションセッション104と同一のアプリケーションの異なるセッションであり、メモリオブジェクト116及び126は、メモリオブジェクト106と同一のメモリオブジェクトの多くまたは全てを含んでもよい。データセンタ100、110、及び120が例示される実装態様において示されるが、追加のデータセンタが存在してもよいこと、及びデータセンタの数に関わらず、本開示の原理が同様に適用されてもよいことが認識されよう。
【0045】
各々のアプリケーションセッションは、それぞれのユーザによって操作される1つ以上のクライアントデバイスから入力を受信する。更に、各々のアプリケーションセッションは、ディスプレイ上での提示のために、クライアントデバイスに仮想空間のビューを提供するビデオ(画像データ及び音声データを含む)をレンダリングし、ディスプレイは、クライアントデバイス(例えば、ラップトップ、タブレット、携帯電話など)に統合されてもよく、またはクライアントデバイス(例えば、テレビ、ディスプレイ、もしくはゲームコンソールに接続されたヘッドマウントディスプレイ、パーソナルコンピュータなど)に接続されてもよい。例えば、例示される実装態様では、ユーザ134によって操作されるクライアントデバイス132は、アプリケーションセッション104に入力を提供し、アプリケーションセッション104からビデオをストリーミングする、データセンタ100にネットワーク130を通じて通信してもよい。入力は、クライアントデバイス132に接続または統合されてもよい、コントローラデバイスからのコントローラ入力に基づいて生成されてもよい。コントローラデバイスの例は、以下のもの:キーボード、マウス、トラックボール、トラックパッド、タッチスクリーン、ジョイスティック、モーションコントローラ、ゲームコントローラ、画像捕捉デバイスまたはカメラ、マイクロフォン、深度カメラ、などを含む。アプリケーションまたはビデオゲームとの対話/ゲームプレイを有効にするための説明されるような入力及びビデオの送信は、アプリケーションのストリーミングまたはビデオゲーム(のゲームプレイ)のストリーミングと称される。
【0046】
よって、例示される実装態様に更に従って、ユーザ138は、アプリケーションセッション114をストリーミングするためにクライアントデバイス136を操作することができ、ユーザ142は、アプリケーションセッション124をストリーミングするためにクライアントデバイス140を操作することができる。アプリケーションセッションと対話するためにデータセンタに接続する更に多くのクライアントデバイス及びユーザが、いくつかの実装態様では、数百または数千のクライアントデバイス及びユーザが存在してもよいことが認識されるべきである。様々なユーザは、異なるアプリケーションセッションからストリーミングすることができ、なお、ユーザは、それらの活動がセッションにわたって同期されるように、同一の仮想空間/現実に同時に参加することが可能である。
【0047】
例えば、例示される実装態様では、対話は、クライアントデバイス132、136、及び140にそれぞれストリーミングするために、アプリケーションセッション104、114、及び124を使用してデータセンタ100、110、及び120からストリーミングされる。アプリケーションセッションの各々は、同一の現実を表し、よって、アプリケーションセッションにわたる活動の同期を促進するために、トランザクションシステムがデータ変更を扱うために設けられる。広義に言うと、トランザクションシステムは、データの一部が変更されるとき、下層のトランザクション層が更新パッケージを生成し、他のサーバにそれを送信することができるように構成され、他のサーバは、そのような更新を扱うためにアプリケーションの構成に従って更新パッケージを適用することができる。
【0048】
同一の現実の異なるセッションにわたってデータがどのように変更されるかを促進するためにトランザクション層を設けることによって、これは、アプリケーション開発者が、そのデータをどのようにして送信するか、アプリケーションの異なるセッションの間で同期をどのようにして維持するかに関して考える必要がないように、アプリケーション開発者に対して容易にする。むしろ、開発者は、単一の意味においてアプリケーションを開発することができ、複数のサーバ上でまたは複数のデータセンタに同時に存在するオブジェクトの間での同期をサポートするための機構を開発する必要はない。
【0049】
続けて図1を参照して、データセンタの各々は、トランザクション層のインスタンスを実装する。示されるように、データセンタ100におけるサーバソース102は、トランザクション層108を実装し、データセンタ110におけるサーバソース112は、トランザクション層118を実装し、データセンタ120におけるサーバソース122は、トランザクション層128を実装する。トランザクション層の各々は、データセンタにわたるアプリケーションセッションによってメモリオブジェクトに対してトランザクションを同期するように構成される。
【0050】
限定なしに例として、クライアントデバイス132を操作するユーザ134は、アプリケーションセッション104によって生成された仮想空間と対話することができる。すなわち、アプリケーションセッション104は、クライアントデバイス132に仮想空間のビューを提供するビデオをストリーミングし、メモリオブジェクト106に対してトランザクションを実行することに部分的によって、アプリケーションセッション104のアプリケーション状態を更新する。アプリケーションセッション104の実行は、例えば、クライアントデバイス132に動作可能に接続または統合されたコントローラデバイスを使用してユーザ134によって提供されるコントローラ入力に基づいて、クライアントデバイス132から受信された入力に部分的によって駆動されてもよい。
【0051】
トランザクションがメモリオブジェクト106の1つである所与のメモリオブジェクトに対して実行されるとき、トランザクション層108は、データセンタにわたる同期に影響をもたらすように構成される。これを達成するために、トランザクション層108は、メモリオブジェクトの識別子/位置、トランザクションのタイムスタンプ、及びメモリオブジェクトを更新するために使用される値(例えば、メモリオブジェクトについての新たな値、既存の値からのオフセットなど)を含む更新パッケージを生成する。トランザクション層108は、更新パッケージを生成し、データセンタ110及び120に更新パッケージを送信し、データセンタ110及び120のそれぞれにおける対応するトランザクション層118及び128は、更新パッケージを扱い、適用する。例えば、トランザクション層118は、メモリオブジェクト116における対応するメモリオブジェクトの値を更新するために更新パッケージを適用してもよく、トランザクション層128は、メモリオブジェクト126における対応するメモリオブジェクトの値を更新するために更新パッケージを適用してもよい。
【0052】
限定なしに例として、メモリオブジェクトは、クライアントデバイス132を介してユーザ134によって制御されるキャラクタの位置を表すことができる。ユーザ134がキャラクタを移動させるとき、アプリケーションセッション104は、その位置が仮想空間において第1の位置から第2の位置に変化するようにキャラクタの移動に影響をもたらす、クライアントデバイス132からの入力を適用する。これは、第1の位置を識別する値から第2の位置を識別する値にその値を変更するメモリオブジェクトに対するトランザクションとして実装されてもよい。これが発生するとき、トランザクション層108は、トランザクションのタイムスタンプ、メモリオブジェクトの識別子、及び第2の位置を識別する値を含む更新パッケージを生成する。トランザクション層108は、他のトランザクション層118及び128に更新パッケージを送信し、他のトランザクション層118及び128は、第2の位置を識別する値によりメモリオブジェクト116及び126の対応するメモリオブジェクトを更新する、更新パッケージを適用する。このようにして、アプリケーションセッション104において変化したキャラクタの位置は、アプリケーションセッション114及び124にわたって更新される。よって、例えば、アプリケーションセッション114からストリーミングするためにクライアントデバイス136を使用するユーザ138は、キャラクタが位置する仮想空間を見るときにキャラクタが第2の位置に移動することを把握することができる。同様に、アプリケーションセッション124からストリーミングするためにクライアントデバイス140を使用するユーザ132は、キャラクタが位置する仮想空間を見るときにキャラクタが第2の位置に移動することを把握することができる。
【0053】
ユーザ134、138、及び142は、共有された空間にいながら、なお、ユーザの各々は、アプリケーションの別個の且つ異なるセッションから対話をストリーミングしていることが認識されよう。ある意味では、異なるアプリケーションセッション104、114、及び124は各々、仮想空間を独立して生成し、仮想空間は、共有されているが、トランザクション層を通じてメモリオブジェクト(共有される対話の目的のために重要である)の同期によって相互に同期される。トランザクション層は、各々のデータセンタから他のデータセンタの各々に変更を伝達し、それによって、異なるアプリケーションセッションの間で同期を維持する。これは、データセンタにわたって一貫した共有された空間におけるユーザの間のリアルタイムの対話を可能にする。
【0054】
上記説明されたシナリオを続けると、ユーザ134のキャラクタが岩をキックし、それが共有された仮想空間においてユーザ138のキャラクタを躓かせようとしている場合、データセンタ110においてアプリケーションセッション114によってこのアクションを示す情報をレンダリングすることができるように、それはデータセンタ100からデータセンタ110に送信されるべきである。また、ユーザ138のキャラクタが岩の上をジャンプする場合、データセンタ100におけるアプリケーションセッション104がジャンプをレンダリングすることができるように、このアクションについての情報は、再度送信される。上記原理に従って、岩をキックするユーザ134のアクションは、メモリオブジェクト106(例えば、ユーザ134のキャラクタの状態/移動/位置を定義したメモリオブジェクト(複数可)、岩の状態/移動/位置を定義したメモリオブジェクト(複数可)など)のうちの1つ以上に対する1つ以上のトランザクションにおいて反映される。それらのトランザクションは、トランザクション層108によってパッケージされ、トランザクション層118に送信され、トランザクション層118では、それらがメモリオブジェクト116に適用され、アプリケーションセッション114によってレンダリングされる。また、本開示の原理に更に従って、岩の上をジャンプするユーザ138のアクションは、メモリオブジェクト116(例えば、ユーザ138のキャラクタの状態/移動/位置を定義したメモリオブジェクト(複数可)、岩の状態/移動/位置を定義したメモリオブジェクト(複数可)など)のうちの1つ以上に対する1つ以上のトランザクションにおいて反映される。それらのトランザクションは、トランザクション層118によってパッケージされ、トランザクション層108に送信され、トランザクション層108では、それらがメモリオブジェクト106に適用され、アプリケーションセッション104によってレンダリングされる。加えて、仮想空間におけるユーザ142のキャラクタは、岩をキックすること及び岩の上をジャンプすることを視聴していることがあり、よって、トランザクション層128も、トランザクション層108及び118からパッケージされたトランザクションを受信し、トランザクション層108及び118は、トランザクション層128によって適用され、アプリケーションセッション124によってレンダリングされ、その結果、ユーザ142は、他のアプリケーションセッション104及び114によって表される現実と一致して、仮想空間において発生する活動を見ることができる。
【0055】
開示の実装態様に従って、データセンタは、相互に地理的に遠隔にあってもよい。例えば、データセンタ100(並びに、クライアントデバイス132及びユーザ134)は、アメリカ合衆国にあってもよいと共に、データセンタ110(並びに、クライアントデバイス136及びユーザ138)は、日本にあってもよく、データセンタ120(並びに、クライアントデバイス140及びユーザ142)は、英国にあってもよい。各々のプレイヤは、それらのそれぞれのクライアントに近接した、アプリケーションを実行するデータセンタに接続する。なお、各々のデータセンタは、それが複数のデータセンタにおいて稼働しているという事実に関わらず、アプリケーションを稼働させることができる。各々のデータセンタにおけるアプリケーションの各々のインスタンスは、独立して実行しており、各々のセッションは、フレームごとに、各セッションが有する利用可能なデータによりが処理しており、利用可能なメモリオブジェクトにおいて反映された入力によりフレームを生成している。また、メモリオブジェクトが同期されているので、セッションは、同期された現実を表すことが可能である。また、同期がアプリケーションレベルではない下層のトランザクション層によって扱われることを理由に、これは、アプリケーションについてのコードの開発を簡易化し、よって、アプリケーションは、異なるデータセンタにおいて同時セッションを稼働させることができるという事実にとらわれない。各々のセッションは、別のデータセンタと直接対話するように特に構成される必要はない。例えば、特定のプレイヤが特定のデータセンタに接続されているという知識に基づいて、各々のセッションがそのデータセンタにメッセージを送信することに関与しないことを理由に、各々のセッションは、様々なユーザが接続されたデータセンタを認識する必要がない。この意味では、各々のセッションは、他のセッションを認識せず、他のデータセンタにおける他のセッションとの通信を管理しない。むしろ、下層のトランザクション層は、メモリオブジェクトに対するトランザクションが発生するにつれて、データセンタの各々を更新する処理を行っている。
【0056】
いくつかの実装態様では、各々のデータセンタによる更新パッケージの適用は、新たに来る更新を扱うための予め定義された構成に従ってもよい。例えば、いくつかの実装態様では、新たに着信する更新は、常に適用される。いくつかの実装態様では、更新のタイムスタンプが、関連するメモリオブジェクトに適用された(例えば、ローカルアプリケーションセッションによって適用され、または別のデータセンタから受信された前の更新からの)最新のトランザクションのタイムスタンプに優先する(よりも遅い)場合、更新が適用される。いくつかの実装態様では、更新は、受信データセンタにおいてアプリケーションセッションによって最初に処理され、次いで、場合によってはアプリケーションセッションによる何らかの方式における修正の後に適用される。
【0057】
図2は、開示の実装態様に従った、アプリケーションセッションの間のメモリオブジェクトの同期のためのシステムを例示する。広義に言うと、いくつかの実装態様では、トランザクション層は、データのセットを識別するライブラリを通じて実装され、データのセットは、データセンタの間で同期されるべきであり、したがって、データのセットに対し、変更が検出されるときに更新が送信されるべきである。よって、そのようなデータに対するトランザクションが発生するとき、ライブラリを通じて変更に影響がもたらされる。概して、ライブラリは、そのようなメモリトランザクション(例えば、メモリ位置/識別子、タイムスタンプ、変化した/新たな値を含む)をパッケージアップし、他のデータセンタにトランザクションをブロードキャストするように構成される。各々のデータセンタによって受信されるとき、アプリケーションは、新たなデータ更新が受信されるときに何が発生するかを指定する。異なるアプリケーションは、変更されるデータをどのように管理するかについての異なる構成を有してもよい。いくつかの実装態様では、新たなデータが受信される時はいつでも、最新の更新である場合にそれが適用され(例えば、タイムスタンプに基づいて)、一方で、他の実装態様では、いずれかの新たなデータに対し、更新が評価されてもよく、場合によっては修正されてもよく、現在のアプリケーション状態に応じて異なって適用されてもよい。よって、あらゆるサーバは、サーバにわたって更新されるべきであるトランザクションを識別するライブラリモジュールのインスタンスを稼働させてもよい。そのようなトランザクションが発生するとき、それは、ライブラリモジュールによって識別され、他のデータセンタに送信される。
【0058】
続けて図2の実装態様を参照して、サーバリソース102に対してインスタンス化されたライブラリモジュール200が示され、ライブラリモジュール200はまた、前に説明されたように、アプリケーションセッション104を稼働させ、メモリオブジェクト106をホストする。ライブラリモジュール200は、データセンタにわたって同期されるべきメモリオブジェクト/データを識別するように構成された同期データ202を含む。いくつかの実装態様では、同期データ202は、メモリオブジェクト106の一部または全てについての論理メモリ位置または識別子を含み、論理メモリ位置または識別子は、ライブラリモジュールの全てのインスタンスにわたって一致しており、ライブラリモジュールが相互に更新を通信するとき、それらが異なるデータセンタにおいて同等のメモリオブジェクトを参照することができる。いくつかの実装態様では、同期データ202は、所与の論理メモリ位置/識別子が各々のデータセンタにおける同等のメモリオブジェクトにマッピングすることができるように、論理メモリ位置/識別子へのローカルメモリオブジェクトのマッピングを含む。
【0059】
述べられたように、同期データ202は、どのメモリオブジェクトがデータセンタにわたって同期されることになるかを識別するように構成されてもよい。いくつかの実装態様では、特定のメモリオブジェクトまたはメモリ識別子は、同期されることになるデータであるとして、同期データ202においてマーク付けまたは識別(または、事前マーク付け/事前識別)される。いくつかの実装態様では、同期データ202は、同期されることになるデータ/変数のタイプまたはクラスを識別する。いくつかの実装態様では、同期データ202は、同期されることになるトランザクションまたはトランザクションタイプを識別する。特定の実装態様に関わらず、同期データ202は、どのメモリオブジェクト106がデータセンタにわたって同期されることになるかの識別を可能にするように構成される。
【0060】
いくつかの実装態様では、アプリケーションセッション104は、どのメモリオブジェクトまたはメモリトランザクションが同期される必要があるかを判定するよう、ライブラリモジュール200を参照するように構成される。次いで、同期される必要があるメモリトランザクションが発生する場合、アプリケーションセッション104は、トランザクション及び/または同期を扱うよう、ライブラリモジュール200を起動してもよい。いくつかの実装態様では、ライブラリモジュール200は、アプリケーションセッション104からのメモリトランザクションを扱うように構成され、どのトランザクションが様々なアプリケーションセッションまたはデータセンタにわたって同期されるかを判定するように構成される。同期を必要としないメモリトランザクションに対して、影響が及ぼされたローカルメモリオブジェクト(複数可)のみがトランザクションの結果として変更され(メモリオブジェクト106のうちの1つ以上)、一方で、同期を必要とするメモリトランザクションに対して、ローカルメモリオブジェクトと共に他のセッション/データセンタにおける対応するメモリオブジェクトの両方がトランザクションの結果として変更されることが認識されよう。
【0061】
ライブラリモジュール200は、開発者が、どのメモリオブジェクト及び/またはトランザクションがデータセンタにわたって同期されるかを判定することを可能にするように構成可能であってもよいことが認識されよう。いくつかの実装態様では、ライブラリモジュール200は(例えば、ゲームエンジンの一部またはアプリケーションライブラリのセットとして含まれるとき)、特定のデータまたはトランザクションタイプを、ライブラリモジュール200によって同期されるものとして事前識別する標準の構成またはデフォルトの構成を含んでもよい。しかしながら、いくつかの実装態様では、この構成は、開発者によって調節されてもよい。いくつかの実装態様では、アプリケーションは、どのデータもしくはトランザクションを同期するか、またはどのデフォルトの構成を調節するかを指定するよう、開発者によって構成されてもよい。静的ライブラリのケースでは、これは、アプリケーションビルドの間に行われてもよく、一方で、動的ライブラリのケースでは、これは、ライブラリがランタイムにおいてロードされるときに行われてもよい。
【0062】
どのトランザクションまたはオブジェクトが同期されるのに重要であるかを開発者がマーク付けするので、ライブラリは、データセンタにわたってそのようなトランザクションまたはそのようなオブジェクトの状態を更新する処理を扱うように構成されることが認識されよう。仮想空間の全ての特徴が同期される必要がなくてもよいことが認識されよう。例えば、セッションにわたってプレイヤのキャラクタまたはアバタを同期することが望ましいことがあると共に、枝葉もしくはランダムに生成された頭上を飛ぶ鳥の移動などの仮想空間における他の要素、または共有された仮想空間におけるユーザの間の対話に全体的に影響を及ぼさない要素を同期する必要がないことがあることが認識されよう。全ての仮想オブジェクトまたは状態が同期されるわけではないので、同期のためにデータセンタの間で送信される必要があるデータの量が減少し、ネットワーク帯域幅が節約される。これは、不十分な帯域幅に起因してレイテンシが問題になる尤度を減少させることによって、セッションにわたるリアルタイムの同期または実質的にリアルタイムの同期を可能にすることの助けになる。
【0063】
続けて図2を参照して、メモリオブジェクトに対するトランザクションがセッション/データセンタにわたる同期を必要とすると判定されるとき、ライブラリモジュール200のパッケージングロジック204は、他のデータセンタを更新するための関連する情報をパッケージするように構成される。いくつかの実装態様では、パッケージングロジック204は、他のデータセンタにおける関連するメモリオブジェクトを更新及び同期するための情報を含む更新パッケージ208を構築する。いくつかの実装態様では、更新パッケージ208は、アプリケーションセッション104によって判定もしくは実行されるようなトランザクションの時間またはメモリオブジェクトへの変更を示すタイムスタンプ210、受信データセンタにおいて更新されることになるメモリオブジェクトを識別または特定するメモリ識別子/位置212、及びメモリオブジェクトについての新たな/現在の/更新された値を定義することができる値214を含む。いくつかの実装態様では、値214は、前の値または他の参照値からのオフセットまたは変更を定義する。パッケージングロジック208は、更新パッケージを生成するために、情報をパッケージアップし、他のデータセンタに更新パッケージ208を送信する。
【0064】
例示される実装態様では、データセンタ110に送信される更新パッケージ208が示され、データセンタ110では、ライブラリモジュール200と同様であるが、アプリケーションセッション114及びメモリオブジェクト116に対して構成されたそれぞれのライブラリモジュール216によってそれが扱われる。更新パッケージ208は、更新ハンドラ222によって扱われ、更新ハンドラ222は、いくつかの実装態様では、ライブラリモジュール216の一部として含まれる。他の実装態様では、更新ハンドラ222は、ライブラリモジュール216とは別個である。
【0065】
更新ハンドラ222は、更新パッケージ208を受信し、予め定義された設定に従って更新パッケージ208における情報を適用するように構成される。いくつかの実装態様では、更新ハンドラは、更新をどのように適用し、及び/または更新をいつ適用するかについてのルールを実装する。更新は、影響を及ぼされるトランザクションまたはメモリオブジェクトに応じて異なって処理されてもよいことが認識されよう。いくつかのトランザクションまたはメモリオブジェクトに対し、更新ハンドラ222は、最新の更新を常に適用するように構成されてもよい。すなわち、タイムスタンプ210がメモリオブジェクトへの最後の修正の時間よりも遅い場合、新たに来る更新パッケージ208が適用される。いくつかのトランザクションまたはメモリオブジェクトに対し、更新ハンドラ222は、更新パッケージ208を評価し、特定の基準を満たす場合にそれを適用し、またはいくつかの修正と共にそれを適用するように構成されてもよい。トランザクションごとに、それが受信されるときに更新データを扱う異なるモードが存在してもよいことが認識されよう。
【0066】
データセンタ100からデータセンタ110への更新の通信が上記説明されてきたが、データセンタ110においてアプリケーションセッション114によって生成されたメモリトランザクションも、データセンタ110からデータセンタ100に送信されることになる更新をトリガすることができることが認識されよう。各々のデータセンタは、上記説明されたものと実質的に同一のライブラリモジュールを含む。例示される実装態様では、ライブラリモジュール216は、同期データ202と同様の同期データ218及びパッケージングロジック204と同様のパッケージングロジック220を更に含む。同様に、データセンタ100におけるライブラリモジュール200は、他のデータセンタから受信された新たに来る更新パッケージを扱うための、更新ハンドラ222と同様の更新ハンドラ206を更に含む。よって、上述したことに従って、アプリケーションセッション114は、データセンタ110から他のデータセンタに送信されることになる更新(同期データ218に基づいて判定されるような)をトリガするメモリトランザクションを生成してもよい。よって、例示される実装態様では、パッケージングロジック220は、データセンタ100に送信され、更新ハンドラ206によってメモリオブジェクト106に適用される更新パッケージを生成する。
【0067】
同期が上記のデータセンタ100及び110に関連して説明されてきたが、データセンタ120、並びにアプリケーション及びライブラリモジュールの同時セッションをも実行させるその他など、いずれかの数のデータセンタに概念が拡張されてもよいことが認識されよう。よって、各々のサーバ/データセンタは、ライブラリモジュールを有し、ライブラリモジュールは、アプリケーションの様々なセッションの間で変更を伝達するよう相互に通信し、共有された仮想空間/環境の同期を保証する。このようにして、開発者は、トランザクションがデータセンタにわたってどのように更新するべきかを指定する必要がないが、単にローカルデータセンタ上で実行されるかのようにコーディングすることができる。ライブラリモジュールは、どのトランザクションが他のセッション/データセンタに伝達される必要があるかを識別し、そのようなトランザクションが発生するときに更新をトリガするよう、ライブラリモジュールにおいてそのようなトランザクションまたは関連するメモリオブジェクトを事前マーク付けまたは事前識別させるように構成される。
【0068】
限定なしに単なる例として、更新をトリガするとライブラリモジュールにおいて事前識別することができるトランザクションのいくつかの例は、以下のもの:ある程度の損害を受けた仮想オブジェクト(例えば、ドア);仮想世界から除去された(例えば、プレイヤによってピックアップされた)アイテム;増大/減少したプレイヤのインベントリ(例えば、仮想アイテムまたは所有物の);破壊された仮想オブジェクト(例えば、車両)など、を含む。そのようなトランザクションは、別のデータセンタに接続する別のプレイヤが、同一の共有された仮想空間/環境において対話するかどうかを認識することが重要または必要であるいずれかの情報を含んでもよいことが認識されよう。
【0069】
いくつかの実装態様では、更新は、他の因子に基づいて、送信されてもよく、または送信されなくてもよい。送信するためにトリガされる更新は、例えば、受信データセンタの仮想オブジェクトの仮想的な地理的近接性に基づいて、送信データセンタにおいてフィルタリングされてもよい。
【0070】
図3は、開示の実装態様に従った、更新が仮想的な地理的近接性に基づいてフィルタリングされるシステムを概念的に例示する。例示される実装態様では、仮想空間300において表されるプレイヤP、P、及びPと共に、仮想空間300が概念的に示される。プレイヤは、キャラクタ、アバタ、車両、またはプレイヤを表すことができる他の仮想オブジェクトによって仮想空間において表されてもよいことが認識されよう。よって、仮想空間におけるプレイヤの位置は実際には、説明を容易にするために同義的に参照された、プレイヤの表現の位置である。例示される実装態様に示されるように、プレイヤP及びPは、プレイヤPよりも仮想空間300において相互に近い。
【0071】
更に、プレイヤPは、データセンタ100によって制御され、プレイヤPは、データセンタ110によって制御され、プレイヤPは、データセンタ120によって制御される。すなわち、プレイヤPは、データセンタ100に接続するクライアントデバイスから制御され、プレイヤPは、データセンタ110に接続するクライアントデバイスから制御され、プレイヤPは、データセンタ120に接続するクライアントデバイスから制御される。
【0072】
述べられたように、いくつかの実装態様では、更新は、仮想空間300における地理的位置に部分的に基づいて送信され、または送信されない。この機能性を促進するために、ライブラリモジュールは、相互に位置データを共有するように構成されてもよく、位置データは、それらのデータセンタとそれぞれが関連付けられたプレイヤの位置を識別する。よって、例示される実装態様では、ライブラリモジュール200は、プレイヤPの位置を識別する位置データを、他のライブラリモジュール216及び230(データセンタ110及び120のそれぞれの)と共有してもよい。同様に、ライブラリモジュール216は、プレイヤPの位置を識別する位置データを、他のライブラリモジュール200及び230と共有してもよく、ライブラリモジュール230は、プレイヤPの位置を識別する位置データを、他のライブラリモジュール200及び216と共有してもよい。このようにして、データセンタの各々は、他のデータセンタについて関心のある地理的位置を示すデータを受信する。このケースでは、所与のデータセンタについての関心のある地理的位置は、そのデータセンタと関連付けられたプレイヤの位置によって定義される。
【0073】
例えば、プレイヤPに関連する変更が行われるとき(例えば、位置、インベントリ、ヘルス、損害、外観、関連する武器(発砲)などにおける変更)、これは、それに対してそのような更新が関連するデータセンタに更新パッケージを発行するようライブラリモジュール200をトリガすることができる。いくつかの実装態様では、これは、プレイヤPからの距離に基づいてもよい。例えば、いくつかの実装態様では、別のデータセンタに関連付けられたプレイヤがプレイヤPの予め定義された距離または半径以内にある場合に、ライブラリモジュール200は、そのデータセンタに更新パッケージを送信する。例示される実装態様では、これは、半径Rによって示される。プレイヤPが半径R以内にあることを理由に、プレイヤPに関連する変更がプレイヤPに影響を及ぼすことができ、またはそうでなければ、プレイヤPに対して関連することができるように、プレイヤPが十分に近いと見なされることができるので、ライブラリモジュール200は、ライブラリモジュール216に更新パッケージを送信する。反対に、プレイヤPが半径R以内にないことを理由に、プレイヤPに関連する変更がプレイヤPに影響を及ぼさないことができ、またはそうでなければ、プレイヤPに対して関連しないことができるように、プレイヤPが十分に遠いと見なされることができるので、ライブラリモジュール200は、ライブラリモジュール230に更新パッケージを送信しない。
【0074】
同様の方式で、プレイヤPに関連する変更は、プレイヤPの予め定義された半径R以内にあるプレイヤに伝達されてもよい。よって、データセンタ110(ライブラリモジュール216を使用した)は、データセンタ100にプレイヤPに関連する更新を送信するが、プレイヤPが半径Rの外側にあるので、データセンタ120にそのような更新を送信しない。また同様に、データセンタ120(ライブラリモジュール230を使用した)は、データセンタ100または110のいずれかにも、プレイヤPに関連する更新を送信しない(しかしながら、プレイヤが半径Rに入る場合にそれぞれのデータセンタにそのような更新を送信しない)。
【0075】
先述したことがプレイヤに関して説明されてきたが、仮想空間300におけるいずれかのタイプの仮想オブジェクトに原理が適用されてもよいことが認識されるべきである。すなわち、更新は、仮想空間における仮想的な地理的近接性に基づいて送信されてもよい。
【0076】
いくつかの実装態様では、地理的近接性に基づいた更新の通信は、開発者/アプリケーションによってターンオン/オフまたは活性化/非活性化することができる構成可能な機構としてライブラリモジュールを通じて実装されてもよい。
【0077】
近接性に基づいて更新の送信をフィルタリングすることによって、多数のプレイヤが存在することがある、大規模なゲームワールドにおいて有用であることができるリソースを節約することが可能であり、多数のプレイヤの何人かが、相互から遠隔であることがある。このようにして、送信サーバは、データが受信機に対して重要であるかどうかを判定することができる。よって、また、各々のサーバが別のサーバに更新を送信するかどうかを判定することができるように、どの位置がそれらのそれぞれのプレイヤに対して重要であるか、またはどの位置によってそれらが影響を及ぼされるかどうかについてサーバが相互に通信する、通信の別の層が設けられる。
【0078】
いくつかの実装態様では、トランザクションまたはメモリオブジェクトは、設定時に位置及び/または半径によりマーク付けされてもよい。概して、位置は、定期的に更新され、一方で、別のエンティティがどの程度離れようと、所与のトランザクションによって影響を及ぼされ、またはメモリオブジェクトが設定時に構成される。
【0079】
データの一部が変更されるとき、ライブラリモジュールは、サーバのリストを評価してもよく、更新がそのサーバに送信されるべきか否かを判定するよう、その各々をチェックしてもよい。よって、送信側上でフィルタリングすることによって、全ての更新が全てのサーバに送信されないことを理由に、リソースが節約される。各々のサーバは、どの位置、トランザクション、またはオブジェクトが相互に重要であるかを周期的に理解する。
【0080】
いくつかの他の実装態様では、トランザクション自体は、空間関係を通信してもよい。例えば、上記説明された更新パッケージは、位置または近接性情報を更に含んでもよい。更新ハンドラは、そのような位置/近接性情報に部分的に基づいて更新を適用するかどうかを判定してもよい。
【0081】
いくつかの実装態様では、異なるサーバ/データセンタは、特定のトランザクションまたはメモリオブジェクトに対する権限を有することができる。例えば、キャラクタまたは車両などの所与の仮想オブジェクトは、1つのデータセンタのみによって制御されてもよく、他のデータセンタは、その仮想オブジェクトに対してトランザクションを生成しない。むしろ、他のデータセンタは単に、権限を有するデータセンタからデータを受信し、それらの対応する仮想オブジェクトを更新するためにそれを適用する。いくつかの実装態様では、データセンタは、他のデータセンタにトランザクションに対するその権限を通知してもよく、その時から、他のデータセンタは、そのようなトランザクションを生成しない。または、別のデータセンタがトランザクションを生成することを試みる場合、ライブラリは、デバッグすることを目的に後に利用される障害状態を生成してもよい。
【0082】
広義に言うと、本開示の実装態様は、ゲームエンジンの一部として含まれてもよい。
【0083】
広義に言うと、ゲームエンジンは、ビデオゲームの効率的な開発を可能にする特徴をもたらすソフトウェア開発フレームワークである。ゲームエンジンは、限定なしに例として、グラフィックレンダリング(例えば、頂点処理、ポリゴン処理、シェーディング、ライティング、テクスチャリングなどを含む)、サウンド、物理演算(衝突処理を含む)、アニメーション、スクリプティング、人工知能、ネットワーキング、ストリーミング、メモリ管理、スレッディング、ローカリゼーションサポート、シーングラフ、シネマティックなどを含む、ゲーム機能性の様々な態様を扱うための再使用可能モジュールを有するソフトウェアライブラリを含んでもよい。
【0084】
ゲームエンジンは、ゲームコンソール、モバイルデバイス、パーソナルコンピュータなどの異なるハードウェアプラットフォームに対して最適化されてもよい。限定なしに例として、ゲームエンジンは、プラットフォームに応じて(例えば、グラフィックパイプラインなどにおいて様々なタスクをどのように優先付けるか)メモリ使用を最適化することができる。いくつかの実装態様では、ハードウェアは、ゲームコンソールなどのブレード型バージョンのいくつかの特定の処理エンティティであってもよい。よって、ユーザは、それに対してコンソールゲームが最適化された同一のハードウェアを与える特定のブレードに割り当てられてもよい。
【0085】
また、ストリーミング及び/または他のサービス(パケット化、符号化、サービス品質(QOS)監視、帯域幅テスト、ソーシャルネットワーク/フレンドへのアクセスなど)を提供するためのゲームサーバロジックが存在してもよいことが認識されよう。
【0086】
いくつかの実装態様では、クラウドインフラストラクチャは、ハイパーバイザを稼働させてもよく、ハイパーバイザは、ハードウェアを抽象化し、仮想マシンフレームワークを提供し、仮想マシンフレームワーク上で、オペレーティングシステム(OS)がロードされてもよい。よって、スタックは、OS上で稼働するアプリケーション/ビデオゲームを含んでもよく、アプリケーション/ビデオゲームは、下層のハードウェアにロードされる、ハイパーバイザによってインスタンス化される仮想マシン(VM)にロードされる。このようにして、アプリケーションの実行は、必ずしも特定のハードウェアに結合されない。
【0087】
いくつかの実装態様では、アプリケーション/ビデオゲームは、コンテナ上で実行されてもよく、コンテナは、アプリケーション層において、パッケージングコード及び伴う依存性を抽象化し、よって、OSまたはハードウェアプラットフォームに依存しないソフトウェア開発を可能にし、プラットフォームにわたるソフトウェア移植性を促進する。
【0088】
いくつかの実装態様では、分散ゲームエンジンが採用され、分散ゲームエンジンでは、ゲームエンジンの異なる部分が異なる計算エンティティによって処理されてもよい。例えば、物理演算エンジン、レンダリングエンジン(2D/3Dグラフィック)、サウンド、スクリプティング、アニメーション、AI、ネットワーキング、ストリーミング(符号化)、メモリ管理、スレッディングなどのゲームエンジンの機能性は、多数の異なる計算の間で分散される異なる機能的処理ブロック及び/またはサービスに分割されてもよい。分散ゲームエンジンに対し、低レイテンシ通信は、レイテンシ問題を回避するために必要とされる。所望のフレームレートを維持するために、計算及び通信の総時間は、特定の制約を満たすべきである。よって、より短い時間内に処理を完了することが可能であるかどうかに応じて、特定のタスクを分割することが効率的であることがあり、または効率的でないことがある。
【0089】
分散ゲームエンジンを使用する利点は、エラスティックコンピューティングを利用することが可能であることであり、コンピューティングリソースは、必要性に応じてスケールアップまたはスケールダウンされてもよい。例えば、単一のハードウェアサーバ上で従来から実行されている大規模マルチプレイヤゲームでは、例えば、約100人のプレイヤに、ハードウェアリソースが制限され、その後、それ以上のプレイヤを追加することができなくなる。ゲームは、追加のプレイヤを待ち行列に追加してもよく、それは、プレイヤがゲームに参加するのに持つ必要があることを意味する。しかしながら、分散ゲームエンジンにより、エラスティッククラウドコンピューティングリソースを使用することによって、より多くの計算ノードが要求を満たすよう追加されてもよく、よって、例えば、数千のプレイヤを可能にする。ゲームは、特定のハードウェアサーバの制限によってこれ以上制約されない。
【0090】
よって、クラウドゲームエンジンは、異なる処理エンティティに分散された機能性を有することができる。異なる機能が異なるフレームワークにおいて実行されてもよいことが認識されよう。例えば、一部の機能(例えば、ソーシャル)は、コンテナにおいて実行するのにより容易であることができ、一方で、グラフィックは、GPUに接続されたVMを使用してより良好に実行することができる。
【0091】
クラウドゲームエンジンの機能性の分散を促進するために、分散/同期層は、ジョブの分散を管理することができる。例えば、ジョブを送出すること、データを再度受信すること、どのタスクが実行されるかを識別すること、及び、待ち行列を処理するときに、例えば、ジョブが必要とされるよりも早期に終了するかどうかを識別することなどである。いくつかの実装態様では、所与のタスクは、必要である場合に動的に細分化されてもよい。例えば、アニメーションは、ライティングを有してもよく、ライティングが特に複合的である場合、ライティングは、計算のために送出され、戻されると再組立てされる3つのライティングジョブに細分化されてもよい。よって、ゲームエンジン機能は、それらがより多くの作業を必要とする場合に細分化されてもよい。
【0092】
クラウドサービスプロバイダは、例えば、毎秒の入力/出力操作(「IOPS」)において、指定された性能レベルでの計算をもたらす。よって、ゲーミングプロバイダは、クラウドサービスプロバイダから、VM、専用処理電力、メモリの量などを指定することができ、クラウドサービスプロバイダのシステムを使用して分散クラウドゲーミングエンジンをインスタンス化することができる。
【0093】
いくつかの実装態様では、ライブラリモジュール及び更新ハンドラは、ゲームエンジンの1つ以上のコンポーネントまたはモジュールであってもよい。いくつかの実装態様では、ライブラリモジュール及び更新ハンドラは、別個のコンポーネントであってもよく、または統合されてもよい。いくつかの実装態様では、ライブラリモジュール及び更新ハンドラは、ゲームエンジンへの追加として動作してもよい。いくつかの実装態様では、ゲームエンジンは、上述したように、分散ゲームエンジンであってもよい。
【0094】
述べられたように、開示の実装態様は、クラウドゲーミングシステムに適用されてもよい。クラウドゲーミングシステムの1つの例は、Playstation(登録商標)Nowクラウドゲーミングシステムである。そのようなシステムでは、クライアントデバイスは、Playstation(登録商標)4ゲームコンソールなどのゲームコンソールであってもよく、またはパーソナルコンピュータ、ラップトップ、タブレット、携帯電話、モバイルデバイスなどの別のデバイスであってもよい。
【0095】
広義に言うと、クラウドゲーミングを可能にするために、ゲームタイトルについてのユーザ要求が受信されるとき、いくつかの動作は、クラウドゲーミングサイトと関連付けられたデータセンタ内で1つ以上のサーバによって実行される。クラウドゲーミングサイトがユーザ要求を受信するとき、選択されたゲームタイトルと関連付けられたゲームをホストするデータセンタが識別され、選択されたゲームタイトルについてのゲームをインスタンス化するために、要求が識別されたデータセンタに送信される。要求に応答して、データセンタにおけるサーバは、ゲームコードを識別し、識別されたゲームコードをロードし、ユーザにゲームコンテンツを提示することを準備してゲームコードに関連するファイルを初期化する。ゲームと関連付けられたゲームデータは、汎用ゲームデータ及びユーザ特有ゲームデータを含んでもよい。したがって、ファイルを初期化することは、汎用ゲームデータ及びユーザ特有ゲームデータの両方を識別、ロード、及び初期化することを含んでもよい。汎用ゲームデータを初期化することは、グラフィックエンジンを初期化すること、グラフィックデータをインストールすること、サウンドファイルを初期化すること、アートワークをインストールすること、などを含んでもよい。ユーザ特有データを初期化することは、ユーザデータ、ユーザ履歴、ゲーム履歴などを特定、転送、及びインストールすることを含んでもよい。
【0096】
汎用ゲームデータがロード及び初期化されている間、クライアントデバイスにおいてレンダリングするために、「スプラッシュ」スクリーンが設けられてもよい。スプラッシュスクリーンは、ユーザがロードされているタイプのゲームをプレビューすることを可能にするよう、ロードされているゲームを表す画像を提供するように設計されてもよい。汎用ゲームデータがロードされると、特定の初期コンテンツがレンダリングされてもよく、ユーザ選択及びカスタマイズのために選択/ナビゲーションスクリーンが提示されてもよい。選択/ナビゲーションスクリーンに設けられるユーザ選択入力は、ゲームレベル選択、ゲームアイコン(複数可)選択、ゲームモード選択、ゲーム獲得物、及び追加のゲームコンテンツのアップロードを必要とすることがある他のユーザ関連データを含んでもよい。いくつかの実施形態では、視聴及び対話するために、ゲームクラウドシステムからユーザのコンピューティングデバイスにゲームコンテンツをストリーミングすることによって、ゲームコンテンツが利用可能にされる。いくつかの実装態様では、ユーザ特有データをロードした後、ゲームプレイのためにゲームコンテンツが利用可能である。
【0097】
図4Aは、クラウドゲーミングサイトを通じて利用可能なゲームに対してゲームファイルをロードするために使用される例示的なシステムを例示する。システムは、インターネットなどのネットワーク402を通じてクラウドゲーミングサイト404に通信可能に接続された複数のクライアントデバイス400を含む。クラウドゲーミングサイト404にアクセスする要求がクライアントデバイス400から受信されるとき、クラウドゲーミングサイト404は、それを通じて要求が開始されるクライアントデバイスと関連付けられたユーザを識別するよう、ユーザデータストア408に記憶されたユーザアカウント情報406にアクセスする。いくつかの実施形態では、クラウドゲーミングサイトも、ユーザが視聴/プレイするために権限が与えられた全てのゲームを判定するために、識別されたユーザを検証してもよい。ユーザアカウント識別/検証に続いて、クラウドゲーミングサイトは、要求を開始したユーザアカウントに対してゲームクラウドサイトにおいて利用可能なゲームタイトルを識別するよう、ゲームタイトルデータストア410にアクセスする。ゲームタイトルデータストア410は次いで、クラウドゲーミングサイトに対して利用可能な全てのゲームについてのゲームタイトルを取得するよう、ゲームデータベース412と対話する。新たなゲームが導入されるにつれて、ゲームデータベース412は、ゲームコードにより更新され、新たに導入されるゲームについてのゲームタイトル情報がゲームタイトルデータストア410に提供される。そこから要求が開始されるクライアントデバイスは、要求が開始されたとき、クラウドゲーミングサイトに登録されてもよく、または登録されなくてもよい。要求を開始したクライアントデバイスのユーザが登録されたユーザでない場合、クラウドゲーミングサイトは、新たなユーザとしてユーザを識別してもよく、新たなユーザに対して適切なゲームタイトル(例えば、デフォルトのゲームタイトルのセットについての)を選択してもよい。図4Aに示されるように、識別されたゲームタイトルは、ディスプレイスクリーン400-a上で提示するためにクライアントデバイスに戻される。
【0098】
クライアントデバイス上でレンダリングされたゲームのタイトルの1つにおけるユーザ対話が検出され、信号がクラウドゲーミングサイトに送信される。信号は、ユーザ対話が検出され、ユーザ対話がゲームタイトルにおいて登録されたゲームタイトル情報を含む。クライアントデバイスから受信された信号に応答して、クラウドゲーミングサイトは、ゲームがホストされているデータセンタを積極的に判定し、それに対してユーザ対話が検出されたゲームタイトルと関連付けられたゲームをロードする信号を、識別されたデータセンタに送信する。いくつかの実施形態では、1つよりも多いデータセンタが、ゲームをホストしていることがある。そのような実施形態では、クラウドゲーミングサイトは、要求を開始したクライアントデバイスの地理的位置を判定してもよく、クライアントデバイスに地理的に近いデータセンタを識別してもよく、ゲームを事前ロードするようデータセンタに信号を送ってもよい。ユーザの地理的位置は、2~3例を挙げると、クライアントデバイス内のグルーバルポジショニングシステム(GPS)機構、クライアントのIPアドレス、クライアントのping情報を使用して判定されてもよい。もちろん、ユーザの地理的位置を検出する前述した方式は、例示であってもよく、他のタイプの機構またはツールがユーザの地理的位置を判定するために使用されてもよい。クライアントデバイスに近いデータセンタの識別は、ゲームとのユーザ対話の間のレイテンシを最小にすることができる。いくつかの実施形態では、識別されたデータセンタは、ゲームをホストするために必要とされる帯域幅/能力を有さなくてもよく、または過度に使用されてもよい。それらの実施形態では、クラウドゲーミングサイトは、クライアントデバイスに地理的に近い第2のデータセンタを識別してもよい。ゲームをロードすることは、ゲームコードをロードすること及びゲームのインスタンスを実行することを含む。
【0099】
クラウドゲーミングサイトから信号を受信したことに応答して、識別されたデータセンタは、サーバ上でゲームをインスタンス化するよう、データセンタにおけるサーバを選択してもよい。サーバは、利用可能なハードウェア/ソフトウェア能力及びゲーム要件に基づいて選択される。サーバは、複数のゲームコンソールを含んでもよく、サーバは、ゲームをロードするために、複数のゲームコンソールのどれを使用するかを判定してもよい。ゲームコンソールは、独立したゲームコンソールと同様であってもよく、またはラックマウント型サーバもしくはブレードサーバであってもよい。ブレードサーバは次いで、ゲームなどの単一の専用アプリケーションをインスタンス化するために必要とされる回路を有するブレードを各々が有する複数のサーバブレードを含んでもよい。もちろん、上記説明されたゲームコンソールは例示であり、限定的であると考えられるべきではない。ゲームステーションなどを含む他のタイプのゲームコンソール、及び他の形式のブレードサーバも、識別されたゲームをホストすることに関与してもよい。
【0100】
ゲームコンソールが識別されると、ゲームについての汎用ゲーム関連コードがゲームコンソール上でロードされ、その上でゲームがインスタンス化されるゲームコンソールを識別する信号が、ネットワークを通じてクラウドゲーミングサイトを介してクライアントデバイスに戻される。よって、ロードされたゲームは、ユーザに対して利用可能にされる。
【0101】
図4Bは、開示の実装態様に従った、クライアントデバイスにクラウドビデオゲームをストリーミングするために実行される様々な動作を概念的に例示するフローチャートである。ゲーミングシステム418は、ビデオゲームを実行し、未処理(非圧縮)ビデオ420及び音声422を生成する。ビデオ420及び音声422は、例示される図では参照符号424において示されるように、ストリーミングの目的のために捕捉及び符号化される。符号化は、帯域幅使用率を低減させ、ゲーミング経験を最適化するためのビデオ及び音声ストリームの圧縮をもたらすことができる。符号化フォーマットの例は、H.265/MPEG-H、H.264/MPEG-4、H.263/MPEG-4、H.262/MPEG-2、WMV、VP6/7/8/9などを含む。
【0102】
符号化された音声426及び符号化されたビデオ428は、インターネットなどのネットワークを通じた送信の目的のために、参照符号432において示されるように、ネットワークパケットに更にパケット化される。ネットワークパケット符号化処理は、データ暗号化処理も採用してもよく、それによって、強化されたデータセキュリティをもたらす。例示される実装態様では、参照符号440において示されるように、ネットワークを通じた搬送のために音声パケット434及びビデオパケット436が生成される。
【0103】
ゲーミングシステム418は加えて、触覚フィードバックデータ430を生成し、触覚フィードバックデータ430も、ネットワーク送信のためにネットワークパケットにパケット化される。例示される実装態様では、参照符号440において更に示されるように、ネットワークを通じた搬送のために触覚フィードバックパケット438が生成される。
【0104】
未処理ビデオ及び音声並びに触覚フィードバックデータを生成し、ビデオ及び音声を符号化し、搬送のために符号化された音声/ビデオ及び触覚フィードバックデータをパケット化する、先述した動作は、集合的にクラウドゲーミングサービス/システムを定義した1つ以上のサーバ上で実行される。参照符号440において示されるように、音声、ビデオ、及び触覚フィードバックパケットは、インターネットなどのネットワーク及び/またはインターネットを含むネットワークを通じて搬送される。参照符号442において示されるように、音声パケット434、ビデオパケット436、及び触覚フィードバックパケット438は、クライアントデバイスにおいて符号化された音声446、符号化されたビデオ448、及び触覚フィードバックデータ450を定義するよう、クライアントデバイスによって復号/再組立てされる。データが暗号化されている場合、ネットワークパケットも複合化される。符号化された音声446及び符号化されたビデオ448は次いで、参照符号444において示されるように、ディスプレイデバイス452上でレンダリングするためにクライアント側未処理音声及びビデオデータを生成するよう、クライアントデバイスによって復号される。触覚フィードバックデータ450は、それを通じて触覚エフェクトをレンダリングすることができる、コントローラデバイス456または他のインタフェースデバイスにおいて触覚フィードバックエフェクトを生じさせるよう処理/通信されてもよい。触覚エフェクトの1つの例は、コントローラデバイス456の振動またはランブルである。
【0105】
ビデオゲームがユーザ入力に応答し、よって、クライアントデバイスからサーバへの逆方向であるが、ユーザ入力の送信及び処理のための上記説明された手順の流れと同様の手順の流れが実行されてもよいことが認識されよう。示されるように、コントローラデバイス456を操作するユーザは、入力データ458を生成することができる。この入力データ458は、ネットワークを通じたクラウドゲーミングシステムへの搬送のためにクライアントデバイスにおいてパケット化される。入力データパケット460は、サーバ側上で入力データ462を定義するよう、クラウドゲーミングサーバによってアンパック及び再組立てされる。入力データ462がゲーミングシステム418に供給され、ゲーミングシステム418は、ビデオゲームのゲーム状態を更新するよう入力データ462を処理する。
【0106】
音声パケット434、ビデオパケット436、及び触覚フィードバックパケット438の搬送(参照符号440)の間、ネットワークを通じたデータの送信は、クラウドゲームストリームのサービス品質を保証するよう監視されてもよい。例えば、参照符号464によって示されるように、アップストリームネットワーク帯域幅及びダウンストリームネットワーク帯域幅の両方を含むネットワーク状況が監視されてもよく、利用可能な帯域幅における変化に応答して、ゲームストリーミングが調節されてもよい。すなわち、ネットワークパケットの符号化及び復号化は、参照符号466によって示されるように、現在のネットワーク状況に基づいて制御されてもよい。
【0107】
図5は、情報サービスプロバイダアーキテクチャの実施形態を例示する。情報サービスプロバイダ(ISP)570は、ネットワーク586を介して、地理的に分散及び接続されたユーザ582に多数の情報サービスを配送する。ISPは、株価更新などのただ1つのタイプのサービス、またはブロードキャストメディア、ニュース、スポーツ、ゲーミングなどの様々なサービスを配送することができる。加えて、各々のISPによって供給されるサービスは、動的であり、すなわち、サービスがいずれかの時点で追加されてもよく、または取り除かれてもよい。よって、特定の個人に特定のタイプのサービスを提供するISPは、経時的に変化してもよい。例えば、ユーザがユーザのホームタウンにいる間、ユーザは、ユーザに近接したISPによってサービス供給されてもよく、ユーザが異なる都市に移動するとき、ユーザは、異なるISPによってサービス供給されてもよい。ホームタウンISPは、新たなISPに必要とされる情報及びデータを転送し、その結果、ユーザ情報は、新たな都市にユーザを「辿り」、データをユーザにより近くにし、アクセスするのにより容易にする。別の実施形態では、ユーザについての情報を管理するマスタISPとマスタISPからの制御の下にユーザと直接相互作用するサーバISPとの間で、マスタ-サーバ関係が確立されてもよい。別の実施形態では、ユーザにサービス供給するためにより良好な位置にあるISPを、それらのサービスを配送する1つにさせるために、クライアントが世界中を移動するにつれて、データが1つのISPから別のISPに転送される。
【0108】
ISP570は、ネットワークを通じて顧客にコンピュータ方式サービスを提供する、アプリケーションサービスプロバイダ(ASP)572を含む。ASPモデルを使用して供給されるソフトウェアも、オンデマンドソフトウェアまたはソフトウェアアズアサービス(SaaS)と呼ばれることがある。特定のアプリケーションプログラム(顧客関係管理など)にアクセスを提供する単純な形式は、HTTPなどの標準プロトコルを使用することによるものである。アプリケーションソフトウェアは、ベンダのシステム上に存在し、ベンダによって提供される特殊目的クライアントソフトウェア、またはシンクライアントなどの他のリモートインタフェースによって、HTMLを使用してウェブブラウザを通じてユーザによってアクセスされる。
【0109】
広範囲の地理的領域を通じて配送されるサービスは、クラウドコンピューティングを使用することが多い。クラウドコンピューティングは、動的に拡大縮小可能である、仮想化されることが多いリソースがインターネットを通じてサービスとして提供される、コンピューティングのスタイルである。ユーザは、それらをサポートする「クラウド」における技術インフラストラクチャでの専門家である必要はない。クラウドコンピューティングは、インフラストラクチャアズアサービス(IaaS)、プラットフォームアズアサービス(PaaS)、及びソフトウェアアズアサービス(SaaS)などの異なるサービスに分割されてもよい。クラウドコンピューティングサービスは、ソフトウェア及びデータがサーバに記憶された、ウェブブラウザからアクセスされる共通ビジネスアプリケーションオンラインを提供することが多い。クラウドという用語は、コンピュータネットワーク図においてインターネットがどのように描写されるかに基づいた、インターネット(例えば、サーバ、記憶装置、及びロジックを使用する)についてのメタファとして使用され、それが隠蔽する複雑なインフラストラクチャについての抽象化である。
【0110】
更に、ISP570は、シングルプレイヤビデオゲーム及びマルチプレイヤビデオゲームをプレイするためにゲームクライアントによって使用されるゲーム処理サーバ(GPS)574を含む。インターネット上でプレイされるほとんどのビデオゲームは、ゲームサーバへの接続を介して動作する。典型的には、ゲームは、プレイヤからデータを収集し、他のプレイヤにそれを配布する専用サーバアプリケーションを使用する。これは、ピアツーピア配列よりも効率的且つ効果的であるが、サーバアプリケーションをホストするために別個のサーバを必要とする。別の実施形態では、GPSは、中央GPSに依存することなく、情報を交換するために、プレイヤとそれらのそれぞれのゲームプレイデバイスとの間で通信を確立する。
【0111】
専用GPSは、クライアントとは独立して稼働するサーバである。そのようなサーバは通常、データセンタに位置する専用ハードウェア上で稼働し、より多くの帯域幅及び専用処理出力を提供する。専用サーバは、ほとんどのPC方式マルチプレイヤゲームに対してゲームサーバをホストするのに好ましい方法である。大規模なマルチプレイヤオンラインゲームは、ゲームタイトルを保有するソフトウェア会社によって通常はホストされる専用サーバ上で動作し、それらがコンテンツを制御及び更新することを可能にする。
【0112】
ブロードキャスト処理サーバ(BPS)576は、聴衆に音声信号またはビデオ信号を配布する。非常に狭い範囲の聴衆へのブロードキャストは、ナローキャスティングと呼ばれることがある。ブロードキャスト分散の最終工程は、リスナまたはビューアに信号がどのように到達するかであり、それは、無線機局またはTV局と同様に、アンテナ及び受信機に無線で来ることができ、または局を介してもしくはネットワークから直接、ケーブルTVもしくはケーブル無線(もしくは「無線ケーブル」)を通じて来ることができる。インターネットは、特に、信号及び帯域幅が共有されることを可能にするマルチキャスティングにより、受信側に無線機またはTVのいずれかを運ぶこともできる。歴史的に、ブロードキャストは、全国放送または地域放送など、地理的領域によって区切られてきた。しかしながら、高速インターネットの拡散と共に、コンテンツが世界のいずれかのほとんどの国に到達することができるように、ブロードキャストは地理によって定義されない。
【0113】
ストレージサービスプロバイダ(SSP)578は、コンピュータストレージスペース及び関連する管理サービスを提供する。SSPは、周期的バックアップ及びアーカイビングも供給する。サービスとしてストレージを供給することによって、ユーザは、必要に応じてより多くのストレージを注文することができる。別の主要な利点は、SSPがバックアップサービスを含み、ユーザのコンピュータのハードドライブが故障した場合に、ユーザが全てのユーザのデータを失わないことである。更に、複数のSSPは、ユーザデータの全複製または部分複製を有することができ、ユーザが位置する場所またはデバイスがデータにアクセスするために使用される場所に依存せず効率的な方式でユーザがデータにアクセスすることを可能にする。例えば、ユーザが移動している間、ユーザは、ホームコンピュータと共に携帯電話における個人ファイルにアクセスすることができる。
【0114】
通信プロバイダ580は、ユーザに接続性を提供する。1つの種類の通信プロバイダは、インターネットへのアクセスを供給するインターネットサービスプロバイダ(ISP)である。ISPは、ダイヤルアップ、DSL、ケーブルモデム、ファイバ、無線または専用高速相互接続など、インターネットプロトコルデータグラムを配送するために適切なデータ伝送技術を使用して、その顧客を接続する。通信プロバイダは、電子メール、インスタントメッセージング、及びSMSテキスティングなどのメッセージングサービスをも提供することができる。別のタイプの通信プロバイダは、インターネットへの直接バックボーンアクセスを提供することによって、帯域幅またはネットワークアクセスを販売するネットワークサービスプロバイダ(NSP)である。ネットワークサービスプロバイダは、電気通信会社、データキャリア、無線通信プロバイダ、インターネットサービスプロバイダ、高速インターネットアクセスを供給するケーブルテレビ事業者などから構成されてもよい。
【0115】
データ交換588は、ISP570の内部でいくつかのモジュールを相互接続し、ネットワーク586を介してユーザ582にそれらのモジュールを接続する。データ交換588は、ISP570の全てのモジュールが近接する小さな領域を網羅することができ、または異なるモジュールが地理的に分散される大きな地理的領域を網羅することができる。例えば、データ交換588は、データセンタのキャビネット内で高速ギガビットイーサネット(登録商標)(もしくは、より高速な)、または大陸間仮想エリアネットワーク(VLAN)を含んでもよい。
【0116】
ユーザ582は、クライアントデバイス584によりリモートサービスにアクセスし、クライアントデバイス584は、少なくともCPU、メモリ、ディスプレイ、及びI/Oを含む。クライアントデバイスは、PC、携帯電話、ネットブック、タブレット、ゲーミングシステム、PDAなどであってもよい。1つの実施形態では、ISP570は、クライアントによって使用されるデバイスのタイプを認識し、採用される通信方法を調節する。他のケースでは、クライアントデバイスは、ISP570にアクセスするために、htmlなどの標準的な通信方法を使用する。
【0117】
本開示の実施形態は、ハンドヘルドデバイス、マイクロプロセッサシステム、マイクロプロセッサベースもしくはプログラム可能な消費者向け電気製品、ミニコンピュータ、及びメインフレームコンピュータなどを含む様々なコンピュータシステム構成で実施されてよい。本開示はまた、有線ベースネットワークまたは無線ネットワークを介してリンクされたリモート処理デバイスによりタスクが行われる分散型コンピューティング環境においても、実施することができる。
【0118】
前述の実施形態を考慮に入れて、本開示は、コンピュータシステムに格納されたデータを伴う様々なコンピュータ実施動作を採用し得ることを理解されたい。これらの動作は、物理量の物理的操作を要する動作である。本開示の一部を形成する本明細書で説明される動作のいずれも、有用なマシン動作である。本開示はまた、これらの動作を実行するためのデバイスまたは装置に関する。装置は、必要な目的のために特別に構築され得る、または装置は、コンピュータに格納されたコンピュータプログラムにより選択的に有効化または構成される汎用コンピュータであってもよい。具体的には、様々な汎用マシンを、本明細書の教示に従って書かれたコンピュータプログラムと共に使用することができる、あるいは、必要な動作を実行するためにさらに特化した装置を構築するほうがより好都合であり得る。
【0119】
本開示はまた、コンピュータ可読媒体上のコンピュータ可読コードとしても具現化することができる。代わりに、コンピュータ可読コードは、前述のデータ交換相互接続を使用して、サーバからダウンロードされてもよい。コンピュータ可読媒体は、後でコンピュータシステムにより読み出され得るデータを格納できる任意のデータストレージデバイスである。コンピュータ可読媒体の例は、ハードドライブ、ネットワーク接続ストレージ(NAS)、読み出し専用メモリ、ランダムアクセスメモリ、CD-ROM、CD-R、CD-RW、磁気テープ、並びに他の光学及び非光学データストレージデバイスを含む。コンピュータ可読媒体は、コンピュータ可読コードが分散方式において記憶及び実行されるように、ネットワーク接続されたコンピュータシステムを通じて分散されたコンピュータ可読有形媒体を含んでもよい。
【0120】
方法動作が特定の順序で説明されたが、他のハウスキーピング操作が動作の間に実行されてもよく、または動作が、わずかに異なる時刻に生じるように調整されてもよく、もしくはオーバーレイ動作の処理が所望の手法で実行される限り、処理に関連する様々な間隔で処理動作の発生を可能にするシステム内に分散されてもよいことが理解されるべきである。
【0121】
前述の開示は、理解を明確にするためにある程度詳細に説明されたが、添付の特許請求の範囲内で特定の変更及び修正を実施できることは明らかであろう。したがって、本実施形態は、限定ではなく例示としてみなされるべきであり、本開示は、本明細書で提供される詳細に限定されるべきではなく、説明される実施形態の範囲内及び均等物内で変更されてもよい。
図1
図2
図3
図4A
図4B
図5
【国際調査報告】