(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-04-03
(45)【発行日】2024-04-11
(54)【発明の名称】ピアツーピアマルチプレイヤークラウドゲーミングアーキテクチャ
(51)【国際特許分類】
A63F 13/30 20140101AFI20240404BHJP
A63F 13/33 20140101ALI20240404BHJP
A63F 13/34 20140101ALI20240404BHJP
A63F 13/45 20140101ALI20240404BHJP
A63F 13/42 20140101ALI20240404BHJP
【FI】
A63F13/30
A63F13/33
A63F13/34
A63F13/45
A63F13/42
(21)【出願番号】P 2022520283
(86)(22)【出願日】2021-03-10
(86)【国際出願番号】 US2021021734
(87)【国際公開番号】W WO2021183664
(87)【国際公開日】2021-09-16
【審査請求日】2022-11-21
(32)【優先日】2020-03-13
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】トドロビッチ,ミハル
【審査官】上田 泰
(56)【参考文献】
【文献】米国特許出願公開第2017/0354878(US,A1)
【文献】米国特許出願公開第2009/0265473(US,A1)
【文献】特開2013-126496(JP,A)
【文献】特開2009-119150(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
A63F 13/00 - 13/98
(57)【特許請求の範囲】
【請求項1】
メッセージングバスと、
複数のサーバとを備え、前記複数のサーバは、前記メッセージングバスを介して相互接続され、前記複数のサーバの各々は、1つ以上のネットワークを介して1つ以上のクライアントデバイスに通信可能に結合され、
各サーバは、複数のプレイヤーのうちの1以上のプレイヤーのうちの各プレイヤーについてゲームシミュレーションインスタンスを実行し、各プレイヤーは、前記1つ以上のクライアントデバイスのうちの1つに関連付けられ、
ゲームワールドの指定領域内の各プレイヤーに関連付けられる各ゲームシミュレーションインスタンスは、前記各プレイヤーによるプレイヤー入力を、1つ以上の他のゲームシミュレーションインスタンスに、前記指定領域内のプレイヤーに関連付けられる複数のゲームシミュレーションインスタンス間に形成されたアドホックピアツーピアネットワークを介して伝達し、
前記指定領域内のプレイヤーに関連付けられる各ゲームシミュレーションインスタンスは、前記各ゲームシミュレーションインスタンスの現在の状態を、前記アドホックピアツーピアネットワークを介して受信されるプレイヤー入力に基づいて計算する、クラウドゲーミングシステム。
【請求項2】
前記ゲームワールドの前記指定領域内の各プレイヤーに関連付けられる各ゲームシミュレーションインスタンスはさらに、前記各プレイヤーによるプレイヤー入力を、1つ以上の追加のゲームシミュレーションインスタンスに伝達し、前記1つ以上の追加のゲームシミュレーションインスタンスの各々は、前記指定領域に隣接する、前記ゲームワールドの追加領域内の、追加のプレイヤーに関連付けられる、請求項1に記載のクラウドゲーミングシステム。
【請求項3】
前記ゲームワールドの第1の領域は、第1のアドホックピアツーピアネットワークに関連付けられ、前記ゲームワールドの前記第1の領域内の第1のプレイヤーに関連付けられる第1のゲームシミュレーションインスタンスを実行することは、第2の領域から前記第1の領域に入場する第2のプレイヤーの1つ以上の表示に応じて、前記第2のプレイヤーに関連付けられる第2のゲームシミュレーションインスタンスが前記第1のアドホックピアツーピアネットワークに参加することを容易にすることを含む、請求項1または2に記載のクラウドゲーミングシステム。
【請求項4】
前記第2のゲームシミュレーションインスタンスが前記第1のアドホックピアツーピアネットワークに参加することを容易にすることは、前記第1のゲームシミュレーションインスタンスの前記現在の状態に関する情報を、前記第2のゲームシミュレーションインスタンスに提供することを含む、請求項3に記載のクラウドゲーミングシステム。
【請求項5】
前記第1のゲームシミュレーションインスタンスの前記現在の状態に関する情報を提供することは、前記第2のゲームシミュレーションインスタンスからの要求に応じて実行される、請求項4に記載のクラウドゲーミングシステム。
【請求項6】
前記第2のゲームシミュレーションインスタンスが前記第1のアドホックピアツーピアネットワークに参加することを容易にすることは、前記第1のゲームシミュレーションインスタンスの前記現在の状態の計算以降に前記第1のゲームシミュレーションインスタンスが受信する1つ以上のプレイヤー入力を、前記第2のゲームシミュレーションインスタンスに伝達することをさらに含む、請求項4または5に記載のクラウドゲーミングシステム。
【請求項7】
前記ゲームワールドのゲームプレイは、プレイヤー入力に依存し、
(a)前記指定領域のゲームプレイは、すべてのプレイヤーが前記指定領域から退場するときにデフォルト状態に戻
ること、およ
び(b)前記指定領域の状態は、最後のプレイヤーが前記指定領域から退場するときにクラウドドライブまたはその他のネットワークアクセス可能ストレージに格納される
こと、のいずれか1つが生じる、請求項1~6のいずれか1項に記載のクラウドゲーミングシステム。
【請求項8】
各ゲームシミュレーションインスタンスは、前記各ゲームシミュレーションインスタンスについての状態情報の1つ以上のスナップショットを格納し、前記各ゲームシミュレーションインスタンスの現在の状態をプレイヤー入力に基づいて計算することは、前記各ゲームシミュレーションインスタンスの前記現在の状態を、プレイヤー入力を受信することに応じて前記状態情報の1つ以上のスナップショットのうち最新のスナップショットにロールバックすることを含む、請求項1~7のいずれか1項に記載のクラウドゲーミングシステム。
【請求項9】
前記各ゲームシミュレーションインスタンスの現在の状態を、前記アドホックピアツーピアネットワークを介して受信されるプレイヤー入力に基づいて計算することは、
複数のプレイヤー入力を評価して前記複数のプレイヤー入力のうち最も早いプレイヤー入力を特定することと、
前記各ゲームシミュレーションインスタンスの前記現在の状態を、特定された前記最も早いプレイヤー入力よりも前の時間に関連付けられる前の状態に修正することと、
前記複数のプレイヤー入力を時系列で処理することとを含む、請求項1~7のいずれか1項に記載のクラウドゲーミングシステム。
【請求項10】
前記現在の状態を計算することは、前記複数のプレイヤー入力を時系列で処理した後に、前記複数のプレイヤー入力のうちの最新のプレイヤー入力以降に受信される任意の追加のプレイヤー入力を処理することをさらに含む、請求項9に記載のクラウドゲーミングシステム。
【請求項11】
前記複数のプレイヤー入力を時系列で処理することは、前記複数のプレイヤー入力を、前記複数のプレイヤー入力のうちの各々に関連付けられる各タイムスタンプに基づいて処理することを含む、請求項9または10に記載のクラウドゲーミングシステム。
【請求項12】
請求項1~11のいずれか1項に記載のクラウドゲーミングシステムのサーバを動作させる、方法。
【請求項13】
請求項12に記載の方法を実行するためにサーバの少なくとも1つのプロセッサを操作するように構成された実行可能命令を格納する、コンピュータプログラム。
【請求項14】
メッセージングバスを介して相互接続された複数のサーバによって実行される方法であって、前記複数のサーバの各々は、1つ以上のネットワークを介して1つ以上のクライアントデバイスに通信可能に結合され、前記方法は、
各サーバが複数のプレイヤーのうちの1以上のプレイヤーのうちの各プレイヤーについてゲームシミュレーションインスタンスを実行するステップを含み、
各プレイヤーは、前記1つ以上のクライアントデバイスのうちの1つに関連付けられ、各ゲームシミュレーションインスタンスを実行する前記ステップは、
前記各プレイヤーによるプレイヤー入力を、1つ以上の他のゲームシミュレーションインスタンスに、ゲームワールドの指定領域内のプレイヤーに関連付けられる複数のゲームシミュレーションインスタンス間に形成されたアドホックピアツーピアネットワークを介して、伝達することと、
プレイヤー入力を、前記アドホックピアツーピアネットワークを介して受信することと、
前記各ゲームシミュレーションインスタンスの現在の状態を、前記各プレイヤーによる前記プレイヤー入力と前記受信されるプレイヤー入力とに基づいて、計算することとを含む、方法。
【請求項15】
各ゲームシミュレーションインスタンスを実行する前記ステップは、前記各プレイヤーによるプレイヤー入力を、1つ以上の追加のゲームシミュレーションインスタンスに伝達することをさらに含み、前記1つ以上の追加のゲームシミュレーションインスタンスの各々は、前記指定領域に隣接する、前記ゲームワールドの追加領域内の、追加のプレイヤーに関連付けられる、請求項14に記載の方法。
【請求項16】
前記各ゲームシミュレーションインスタンスのうちの少なくとも1つのゲームシミュレーションインスタンスを実行することは、前記指定領域に入場する追加のプレイヤーの1つ以上の表示に応じて、追加のゲームシミュレーションインスタンスが前記アドホックピアツーピアネットワークに参加することを容易にすることをさらに含み、前記追加のゲームシミュレーションインスタンスは、前記追加のプレイヤーに関連付けられる、請求項14または15に記載の方法。
【請求項17】
前記追加のゲームシミュレーションインスタンスが前記アドホックピアツーピアネットワークに参加することを容易にすることは、前記少なくとも1つのゲームシミュレーションインスタンスの前記現在の状態に関する情報を、前記追加のゲームシミュレーションインスタンスに提供することを含む、請求項16に記載の方法。
【請求項18】
前記少なくとも1つのゲームシミュレーションインスタンスの前記現在の状態に関する情報を提供することは、前記追加のゲームシミュレーションインスタンスからの要求に応じて実行される、請求項17に記載の方法。
【請求項19】
前記追加のゲームシミュレーションインスタンスが前記アドホックピアツーピアネットワークに参加することを容易にすることは、前記少なくとも1つのゲームシミュレーションインスタンスの前記現在の状態の計算以降に前記少なくとも1つのゲームシミュレーションインスタンスが受信する1つ以上のプレイヤー入力を、前記追加のゲームシミュレーションインスタンスに伝達することをさらに含む、請求項17または18に記載の方法。
【請求項20】
各ゲームシミュレーションインスタンスを実行する前記ステップは、前記各ゲームシミュレーションインスタンスについての状態情報の1つ以上のスナップショットを格納することをさらに含み、前記各ゲームシミュレーションインスタンスの現在の状態をプレイヤー入力に基づいて計算することは、前記各ゲームシミュレーションインスタンスの前記現在の状態を、プレイヤー入力を受信することに応じて前記状態情報の1つ以上のスナップショットのうち最新のスナップショットにロールバックすることを含む、請求項14~19のいずれか1項に記載の方法。
【請求項21】
前記各ゲームシミュレーションインスタンスの現在の状態をプレイヤー入力に基づいて計算することは、
複数のプレイヤー入力のうち最も早いプレイヤー入力を特定することと、
前記各ゲームシミュレーションインスタンスの前記現在の状態を、特定された前記最も早いプレイヤー入力よりも前の時間に関連付けられる前の状態に修正することと、
前記複数のプレイヤー入力を時系列で処理することとを含む、請求項14~20のいずれか1項に記載の方法。
【請求項22】
前記現在の状態を計算することは、前記複数のプレイヤー入力を時系列で処理した後に、前記複数のプレイヤー入力のうちの最新のプレイヤー入力以降に受信した任意の追加のプレイヤー入力を処理することをさらに含む、請求項21に記載の方法。
【請求項23】
前記複数のプレイヤー入力を時系列で処理することは、前記複数のプレイヤー入力を、前記複数のプレイヤー入力のうちの各々に関連付けられる各タイムスタンプに基づいて処理することを含む、請求項21または22に記載の方法。
【請求項24】
請求項14~23のいずれか1項に記載の方法を実行するためにサーバの少なくとも1つのプロセッサを操作するように構成された実行可能命令を格納する、コンピュータプログラム。
【請求項25】
ゲーミングサーバであって、
1つ以上のプロセッサと、
前記1つ以上のプロセッサのうちの少なくとも1つを操作するように構成された実行可能命令を格納する1つ以上のメモリと、
メッセージングバスと1つ以上のクライアントデバイスとに通信可能に結合されたネットワークインターフェイスと、
シミュレーション管理モジュールとを備え、前記シミュレーション管理モジュールは、前記1つ以上のクライアントデバイスのうちの第1のクライアントデバイスに関連付けられる第1のプレイヤーについて第1のゲームシミュレーションインスタンスを実行し、かつ、前記第1のプレイヤーによるプレイヤー入力を、1つ以上の他のゲームシミュレーションインスタンスに、ゲームワールドの指定領域内のプレイヤーに関連付けられる複数のゲームシミュレーションインスタンス間に形成された第1のアドホックピアツーピアネットワークを介して伝達し、前記ゲーミングサーバはさらに、
状態管理モジュールを備え、前記状態管理モジュールは、プレイヤー入力の表示を前記第1のアドホックピアツーピアネットワークを介して受信し、前記第1のゲームシミュレーションインスタンスの現在の状態を、前記プレイヤー入力の表示に基づいて計算する、ゲーミングサーバ。
【請求項26】
前記シミュレーション管理モジュールはさらに、前記第1のプレイヤーによるプレイヤー入力を、1つ以上の追加のゲームシミュレーションインスタンスに伝達し、前記1つ以上の追加のゲームシミュレーションインスタンスの各々は、前記指定領域に隣接する、前記ゲームワールドの追加領域内の、追加のプレイヤーに関連付けられる、請求項25に記載のゲーミングサーバ。
【請求項27】
前記プレイヤーは、前記第1のアドホックピアツーピアネットワークに関連付けられる、前記ゲームワールドの第1の領域内に存在し、前記状態管理モジュールはさらに、第2の領域から前記第1の領域に入場する第2のプレイヤーの1つ以上の表示に応じて、前記第2のプレイヤーに関連付けられる第2のゲームシミュレーションインスタンスが前記第1のアドホックピアツーピアネットワークに参加することを容易にする、請求項25または26に記載のゲーミングサーバ。
【請求項28】
前記第2のゲームシミュレーションインスタンスが前記第1のアドホックピアツーピアネットワークに参加することを容易にすることは、前記第1のゲームシミュレーションインスタンスの前記現在の状態に関する情報を、前記第2のゲームシミュレーションインスタンスに提供することを含む、請求項27に記載のゲーミングサーバ。
【請求項29】
前記第1のゲームシミュレーションインスタンスの前記現在の状態に関する情報を提供することは、前記第2のゲームシミュレーションインスタンスからの要求に応じて実行される、請求項28に記載のゲーミングサーバ。
【請求項30】
前記第2のゲームシミュレーションインスタンスが前記第1のアドホックピアツーピアネットワークに参加することを容易にすることは、前記第1のゲームシミュレーションインスタンスの前記現在の状態の計算以降に前記第1のゲームシミュレーションインスタンスが受信する1つ以上のプレイヤー入力を、前記第2のゲームシミュレーションインスタンスに伝達することをさらに含む、請求項28または29に記載のゲーミングサーバ。
【請求項31】
前記シミュレーション管理モジュールはさらに、前記第1のゲームシミュレーションインスタンスについての状態情報の1つ以上のスナップショットを格納し、前記第1のゲームシミュレーションインスタンスの現在の状態をプレイヤー入力に基づいて計算することは、前記第1のゲームシミュレーションインスタンスの前記現在の状態を、プレイヤー入力を受信することに応じて前記状態情報の1つ以上のスナップショットのうち最新のスナップショットにロールバックすることを含む、請求項25~30のいずれか1項に記載のゲーミングサーバ。
【請求項32】
前記第1のゲームシミュレーションインスタンスの現在の状態を、前記第1のアドホックピアツーピアネットワークを介して受信されるプレイヤー入力に基づいて計算することは、
複数のプレイヤー入力を評価して前記複数のプレイヤー入力のうち最も早いプレイヤー入力を特定することと、
前記第1のゲームシミュレーションインスタンスの前記現在の状態を、特定された前記最も早いプレイヤー入力よりも前の時間に関連付けられる前の状態に修正することと、
前記複数のプレイヤー入力を時系列で処理することとを含む、請求項25~31のいずれか1項に記載のゲーミングサーバ。
【請求項33】
前記現在の状態を計算することは、前記複数のプレイヤー入力を時系列で処理した後に、前記複数のプレイヤー入力のうちの最新のプレイヤー入力以降に受信される任意の追加のプレイヤー入力を処理することをさらに含む、請求項32に記載のゲーミングサーバ。
【請求項34】
前記複数のプレイヤー入力を時系列で処理することは、前記複数のプレイヤー入力を、前記複数のプレイヤー入力のうちの各々に関連付けられる各タイムスタンプに基づいて処理することを含む、請求項32または33に記載のゲーミングサーバ。
【発明の詳細な説明】
【背景技術】
【0001】
背景
マルチプレイヤービデオゲームのための従来のクライアント-サーバネットワークは、多くの場合、複雑であり実装および維持コストが高い。なぜなら、集中管理型サーバがプレイヤーのすべてに対してゲーム状態を調整すること、およびスタッフがそのような集中管理型サーバをサポートすることが要求されるからである。集中管理型調整サーバの費用および複雑さは、多くの場合、地理的に分散した多数のプレイヤーにゲームプレイを拡大することを困難にし、典型的に、同一のゲームタイトルに対してシングルプレイヤーのサポートとマルチプレイヤーのサポートとの両方を提供するために実質的に異なる開発手法をゲーム開発者が実現することを要求する。
【発明の概要】
【課題を解決するための手段】
【0002】
実施形態の簡単な概要
一例において、クラウドゲーミングシステムは、メッセージングバスと、複数のサーバとを備え、複数のサーバは、メッセージングバスを介して相互接続され、複数のサーバの各々は、1つ以上のネットワークを介して1つ以上のクライアントデバイスに通信可能に結合される。各サーバは、複数のプレイヤーのうちの1以上のプレイヤーのうちの各プレイヤーについてゲームシミュレーションインスタンスを実行し得る。各プレイヤーは、1つ以上のクライアントデバイスのうちの1つに関連付けられる。ゲームワールドの指定領域内の各プレイヤーに関連付けられる各ゲームシミュレーションインスタンスは、各プレイヤーによるプレイヤー入力を、1つ以上の他のゲームシミュレーションインスタンスに、指定領域内のプレイヤーに関連付けられる複数のゲームシミュレーションインスタンス間に形成されたアドホックピアツーピアネットワークを介して伝達し得る。指定領域内のプレイヤーに関連付けられる各ゲームシミュレーションインスタンスは、各ゲームシミュレーションインスタンスの現在の状態を、アドホックピアツーピアネットワークを介して受信されるプレイヤー入力に基づいて計算し得る。
【0003】
ゲームワールドの指定領域内の各プレイヤーに関連付けられる各ゲームシミュレーションインスタンスはさらに、各プレイヤーによるプレイヤー入力を、1つ以上の追加のゲームシミュレーションインスタンスに伝達し得る。1つ以上の追加のゲームシミュレーションインスタンスの各々は、指定領域に隣接する、ゲームワールドの追加領域内の、追加のプレイヤーに関連付けられる。ゲームワールドの第1の領域は、第1のアドホックピアツーピアネットワークに関連付けられ得る。ゲームワールドの第1の領域内の第1のプレイヤーに関連付けられる第1のゲームシミュレーションインスタンスを実行することは、第2の領域から第1の領域に入場する第2のプレイヤーの1つ以上の表示に応じて、第2のプレイヤーに関連付けられる第2のゲームシミュレーションインスタンスが第1のアドホックピアツーピアネットワークに参加することを容易にすることを含み得る。この文脈において、「隣接」は、ゲームワールドの2つの(第1および第2の)領域に対してそれぞれ設定された、隣接しきい値未満の隣接パラメータに基づいていてもよい。したがって、たとえば、「隣接」は、ゲームワールド内の地理的な隣接、ゲームプレイという観点における論理的な隣接(たとえば離れている領域が一方の領域から他方の領域にプレイヤーを直接輸送するポータルを介して接続されている場合)などを表し得る。
【0004】
第2のゲームシミュレーションインスタンスが第1のアドホックピアツーピアネットワークに参加することを容易にすることは、第1のゲームシミュレーションインスタンスの現在の状態に関する情報を、第2のゲームシミュレーションインスタンスに提供することを含む。第1のゲームシミュレーションインスタンスの現在の状態に関する情報を提供することは、第2のゲームシミュレーションインスタンスからの要求に応じて実行され得る。第2のゲームシミュレーションインスタンスが第1のアドホックピアツーピアネットワークに参加することを容易にすることは、第1のゲームシミュレーションインスタンスの現在の状態の計算以降に第1のゲームシミュレーションインスタンスが受信する1つ以上のプレイヤー入力を、第2のゲームシミュレーションインスタンスに伝達することをさらに含み得る。
【0005】
いくつかの実装形態において、ゲームワールドのゲームプレイは、プレイヤー入力に依存し得る。そのため、ゲームワールドの領域において、それに影響を与えるプレイヤーが存在しない場合、その領域では何も起こらない。その結果、この領域のゲームプレイは、すべてのプレイヤーがこの領域から退場するときに、デフォルト状態に戻る可能性がある。これに代わるものとして、領域の状態は、最後のプレイヤーがその領域から退場するときにクラウドドライブまたはその他のネットワークアクセス可能ストレージに格納されてもよく、その後、この状態は、プレイヤーがこの領域に来たときに、リロードされる。このことは、状態を、調整ゲームサーバなしで維持するゲームワールドを(さらに)サポートし得る。
【0006】
各ゲームシミュレーションインスタンスは、各ゲームシミュレーションインスタンスについての状態情報の1つ以上のスナップショットを格納し得る。よって、各ゲームシミュレーションインスタンスの現在の状態をプレイヤー入力に基づいて計算することは、各ゲームシミュレーションインスタンスの現在の状態を、プレイヤー入力を受信することに応じて状態情報の1つ以上のスナップショットのうち最新のスナップショットにロールバックすることを含み得る。
【0007】
各ゲームシミュレーションインスタンスの現在の状態を、アドホックピアツーピアネットワークを介して受信されるプレイヤー入力に基づいて計算することは、複数のプレイヤー入力を評価して複数のプレイヤー入力のうち最も早いプレイヤー入力を特定することと、各ゲームシミュレーションインスタンスの現在の状態を、特定された最も早いプレイヤー入力よりも前の時間に関連付けられる前の状態に修正することと、複数のプレイヤー入力を時系列で処理することとを含み得る。現在の状態を計算することは、複数のプレイヤー入力を時系列で処理した後に、複数のプレイヤー入力のうちの最新のプレイヤー入力以降に受信される任意の追加のプレイヤー入力を処理することをさらに含み得る。複数のプレイヤー入力を時系列で処理することは、複数のプレイヤー入力を、複数のプレイヤー入力のうちの各々に関連付けられる各タイムスタンプに基づいて処理することを含み得る。
【0008】
もう1つの例は、上記例におけるクラウドゲーミングシステムのサーバを動作させる方法を含み得る。
【0009】
さらに他の例は、クラウドゲーミングシステムのサーバを動作させる方法を実行するためにサーバの少なくとも1つのプロセッサを操作するように構成された実行可能命令を格納する非一時的なコンピュータ読取可能記憶媒体を含み得る。
【0010】
別の例において、ある方法は、複数のプレイヤーのうちの1以上のプレイヤーのうちの各プレイヤーについてゲームシミュレーションインスタンスを実行するステップを含み得る。よって、各ゲームシミュレーションインスタンスを実行するステップは、各プレイヤーによるプレイヤー入力の表示を、1つ以上の他のゲームシミュレーションインスタンスに、ゲームワールドの指定領域内のプレイヤーに関連付けられる複数のゲームシミュレーションインスタンス間に形成されたアドホックピアツーピアネットワークを介して、提供することと、プレイヤー入力を、アドホックピアツーピアネットワークを介して受信することと、各ゲームシミュレーションインスタンスの現在の状態を、各プレイヤーによるプレイヤー入力と受信されるプレイヤー入力とに基づいて、計算することとを含む。
【0011】
各ゲームシミュレーションインスタンスを実行するステップは、各プレイヤーによるプレイヤー入力を、1つ以上の追加のゲームシミュレーションインスタンスに伝達することをさらに含み得る。1つ以上の追加のゲームシミュレーションインスタンスの各々は、指定領域に隣接する、ゲームワールドの追加領域内の、追加のプレイヤーに関連付けられる。
【0012】
各ゲームシミュレーションインスタンスのうちの少なくとも1つのゲームシミュレーションインスタンスを実行することは、指定領域に入場する追加のプレイヤーの1つ以上の表示に応じて、追加のゲームシミュレーションインスタンスがアドホックピアツーピアネットワークに参加することを容易にすることをさらに含み得る。追加のゲームシミュレーションインスタンスは、追加のプレイヤーに関連付けられる。追加のゲームシミュレーションインスタンスがアドホックピアツーピアネットワークに参加することを容易にすることは、少なくとも1つのゲームシミュレーションインスタンスの現在の状態に関する情報を、追加のゲームシミュレーションインスタンスに提供することを含み得る。少なくとも1つのゲームシミュレーションインスタンスの現在の状態に関する情報を提供することは、追加のゲームシミュレーションインスタンスからの要求に応じて実行され得る。追加のゲームシミュレーションインスタンスがアドホックピアツーピアネットワークに参加することを容易にすることは、少なくとも1つのゲームシミュレーションインスタンスの現在の状態の計算以降に少なくとも1つのゲームシミュレーションインスタンスが受信する1つ以上のプレイヤー入力を、追加のゲームシミュレーションインスタンスに伝達することをさらに含み得る。
【0013】
各ゲームシミュレーションインスタンスを実行するステップは、各ゲームシミュレーションインスタンスについての状態情報の1つ以上のスナップショットを格納することをさらに含み得る。よって、各ゲームシミュレーションインスタンスの現在の状態をプレイヤー入力に基づいて計算することは、各ゲームシミュレーションインスタンスの現在の状態を、プレイヤー入力を受信することに応じて状態情報の1つ以上のスナップショットのうち最新のスナップショットにロールバックすることを含み得る。
【0014】
各ゲームシミュレーションインスタンスの現在の状態をプレイヤー入力に基づいて計算することは、複数のプレイヤー入力のうち最も早いプレイヤー入力を特定することと、ゲームシミュレーションインスタンスの現在の状態を、特定された最も早いプレイヤー入力よりも前の時間に関連付けられる前の状態に修正することと、数のプレイヤー入力を時系列で処理することとを含み得る。現在の状態を計算することは、複数のプレイヤー入力を時系列で処理した後に、複数のプレイヤー入力のうちの最新のプレイヤー入力以降に受信した任意の追加のプレイヤー入力を処理することをさらに含み得る。複数のプレイヤー入力を時系列で処理することは、複数のプレイヤー入力を、複数のプレイヤー入力のうちの各々に関連付けられる各タイムスタンプに基づいて処理することを含み得る。
【0015】
さらに他の例において、ゲーミングサーバは、1つ以上のプロセッサと、1つ以上のプロセッサのうちの少なくとも1つを操作するように構成された実行可能命令を格納する1つ以上のメモリと、メッセージングバスと1つ以上のクライアントデバイスとに通信可能に結合されたネットワークインターフェイスと、シミュレーション管理モジュールと、状態管理モジュールとを含み得る。シミュレーション管理モジュールは、1つ以上のクライアントデバイスのうちの第1のクライアントデバイスに関連付けられる第1のプレイヤーについて第1のゲームシミュレーションインスタンスを実行し、かつ、第1のプレイヤーによるプレイヤー入力を、1つ以上の他のゲームシミュレーションインスタンスに、ゲームワールドの指定領域内のプレイヤーに関連付けられる複数のゲームシミュレーションインスタンス間に形成された第1のアドホックピアツーピアネットワークを介して伝達し得るものである。状態管理モジュールは、プレイヤー入力の表示を第1のアドホックピアツーピアネットワークを介して受信し、第1のゲームシミュレーションインスタンスの現在の状態を、プレイヤー入力の表示に基づいて計算し得るものである。
【0016】
シミュレーション管理モジュールはさらに、第1のプレイヤーによるプレイヤー入力を、1つ以上の追加のゲームシミュレーションインスタンスに伝達し得る。1つ以上の追加のゲームシミュレーションインスタンスの各々は、指定領域に隣接する、ゲームワールドの追加領域内の、追加のプレイヤーに関連付けられる。
【0017】
プレイヤーは、第1のアドホックピアツーピアネットワークに関連付けられる、ゲームワールドの第1の領域内に存在し得る。よって、状態管理モジュールはさらに、第2の領域から第1の領域に入場する第2のプレイヤーの1つ以上の表示に応じて、第2のプレイヤーに関連付けられる第2のゲームシミュレーションインスタンスが第1のアドホックピアツーピアネットワークに参加することを容易にする。第2のゲームシミュレーションインスタンスが第1のアドホックピアツーピアネットワークに参加することを容易にすることは、第1のゲームシミュレーションインスタンスの現在の状態に関する情報を、第2のゲームシミュレーションインスタンスに提供することを含み得る。第1のゲームシミュレーションインスタンスの現在の状態に関する情報を提供することは、第2のゲームシミュレーションインスタンスからの要求に応じて実行され得る。第2のゲームシミュレーションインスタンスが第1のアドホックピアツーピアネットワークに参加することを容易にすることは、第1のゲームシミュレーションインスタンスの現在の状態の計算以降に第1のゲームシミュレーションインスタンスが受信する1つ以上のプレイヤー入力を、第2のゲームシミュレーションインスタンスに伝達することをさらに含み得る。
【0018】
シミュレーション管理モジュールはさらに、第1のゲームシミュレーションインスタンスについての状態情報の1つ以上のスナップショットを格納し得る。よって、第1のゲームシミュレーションインスタンスの現在の状態をプレイヤー入力に基づいて計算することは、第1のゲームシミュレーションインスタンスの現在の状態を、プレイヤー入力を受信することに応じて状態情報の1つ以上のスナップショットのうち最新のスナップショットにロールバックすることを含み得る。
【0019】
第1のゲームシミュレーションインスタンスの現在の状態を、第1のアドホックピアツーピアネットワークを介して受信されるプレイヤー入力に基づいて計算することは、複数のプレイヤー入力を評価して複数のプレイヤー入力のうち最も早いプレイヤー入力を特定することと、第1のゲームシミュレーションインスタンスの現在の状態を、特定された最も早いプレイヤー入力よりも前の時間に関連付けられる前の状態に修正することと、複数のプレイヤー入力を時系列で処理することとを含み得る。現在の状態を計算することは、複数のプレイヤー入力を時系列で処理した後に、複数のプレイヤー入力のうちの最新のプレイヤー入力以降に受信される任意の追加のプレイヤー入力を処理することをさらに含み得る。複数のプレイヤー入力を時系列で処理することは、複数のプレイヤー入力を、複数のプレイヤー入力のうちの各々に関連付けられる各タイムスタンプに基づいて処理することを含み得る。
【0020】
添付の図面の参照により、本開示は一層理解され、その数多くの特徴および利点が当業者に明らかになる。異なる図面で使用される同一の参照符号は同様または同一のアイテムを示す。
【図面の簡単な説明】
【0021】
【
図1】いくつかの実施形態に係る、分散させたピアツーピアプレイヤー入力および状態メッセージングを通してマルチプレイヤーゲーミングを容易にするクラウドゲーミングシステムを示すブロック図である。
【
図2】いくつかの実施形態に係る、ゲームワールドの対応する領域におけるサーバのプレイヤーシミュレーションインスタンスの構成例を示すブロック図である。
【
図3】いくつかの実施形態に係る、
図1および
図2のクラウドゲーミングシステムのサーバのハードウェア構成およびソフトウェア構成を示すブロック図である。
【
図4】いくつかの実施形態に係る、分散型の大規模ピアツーピアマルチプレイヤーゲーミングを提供するシステム実装の手法を示す図である。
【発明を実施するための形態】
【0022】
詳細な説明
図1~
図4は、メッセージングバスを介して相互接続されたサーバによって実行される、プレイヤーゲームシミュレーションインスタンス間における、プレイヤー入力およびゲーム状態の送信のために、ピアツーピアネットワーキングを採用することにより、マルチプレイヤーオペレーションを調整するために集中管理型ゲームサーバを利用する必要をなくした、大規模マルチプレイヤークラウドゲーミングのための、さまざまなシステムおよび技術を示す。この手法は、調整サーバを管理する費用およびその複雑さを減じつつ、ゲーム開発者が、あるビデオゲームタイトルのためのシングルプレイヤー構成を大規模マルチプレイヤーゲームプレイにより簡単に適合させることも可能にする。
【0023】
図1を参照すると、少なくとも1つの実施形態に係る、ピアツーピアネットワーキングを通して大規模マルチプレイヤーゲーミングを容易にするクラウドゲーミングシステム100が示される。クラウドゲーミングシステム100はクラウドプラットフォーム102を含み、クラウドプラットフォーム102は複数のサーバ104を有し、複数のサーバ104は、対応する、複数のクライアントデバイス106のサブセットに、1つ以上のネットワークを通して結合される。サーバ104はまた、高帯域低遅延サーバ間メッセージングバス108を通して相互接続される。典型的に、サーバ104は、物理的な近さによって送信遅延を短縮するために、ある地理的領域にわたり、1つ以上のデータセンターに分散配置される。
図1の簡略化された例において、クラウドプラットフォーム102は、9個のクライアントデバイス106-1~106-9をサポートする3つのサーバ104-1~104-3を含み、クライアントデバイス106-1~106-4はサーバ104-1によってサービスされ、クライアントデバイス106-5および106-6はサーバ104-2によってサービスされ、クライアントデバイス106-7~106-
9はサーバ104-3によってサービスされる。典型的な実世界の実装において、典型的にサーバ104の数およびクライアントデバイス106の数は、これよりもかなり多いことが理解されるであろう。
【0024】
以下で
図2を参照しながらより詳細に説明するように、各サーバ104は、対応するプレイヤーのためのビデオゲームアプリケーションの1つ以上のシミュレーションインスタンスの実行を容易にする、対応するゲームプラットフォームインスタンスを実行するように動作し、これらのシミュレーションインスタンスの各々を、本明細書では「プレイヤーシミュレーションインスタンス」と呼ぶ。すなわち、ゲームプラットフォームインスタンスは、通信/ネットワーク管理、リソース管理、メディアレンダリング符号化などのようなさまざまなリソースを提供することにより、対応するプレイヤーのためのビデオゲームアプリケーションの実行を、あたかもそのビデオゲームアプリケーションがパーソナルコンピュータ(PC)またはゲームコンソールのようなローカルゲーミングデバイスでプレイされるかのように、シミュレートする。よって、各プレイヤーシミュレーションインスタンスは、対応するプレイヤーのためのビデオゲームの実行またはシミュレーションを表す。説明のために、あるプレイヤーインスタンスを仮想ゲームコンソールとみなしてもよく、そうすると、そのようなインスタンスは、マルチプレイヤーネットワーキング、レンダリング、オーディオおよびビデオ符号化、ストリーミングおよびユーザ入力受信を含む、1つのゲームランタイムを可能にするコンテナである。
【0025】
各クライアントデバイス106は、少なくとも1人のプレイヤーのための1つ以上の入出力デバイスの操作によるプレイヤー入力を受信するために、かつ、この少なくとも1人のプレイヤーのためのゲームプレイの視覚および聴覚コンテンツをそれぞれ表すビデオおよびオーディオコンテンツを提示するために利用される、ハードウェアおよびソフトウェアリソースを表す。クライアントデバイス106の例は、デスクトップコンピュータ、ノートブックコンピュータ、タブレットコンピュータ、計算対応携帯電話(すなわち「スマートフォン」)、計算対応テレビ(すなわち「スマートテレビ」)などを含む。クライアントデバイス106-1を参照して説明すると、各クライアントデバイス106は、ディスプレイ110と、少なくとも1つのゲームコントローラ112と、クライアントデバイス106を対応するサーバ104に接続するネットワークに結合するための1つ以上のネットワークインターフェイスと、プロセッサと、メモリと、大容量記憶装置と、スピーカと、当技術分野で周知の、着信メディアストリームを処理するための他のコンピューティングリソースとを含む。
【0026】
クライアントデバイス106は、対応するサーバ104における対応するプレイヤーシミュレーションインスタンスの実行によって生成されたビデオおよびオーディオストリーム(図示せず)を受信し、送信されたビデオストリームのビデオフレームを復号および表示するため、ならびに対応するオーディオコンテンツを復号および出力するために、その計算リソース、記憶リソース、および表示リソースを利用する。いくつかの実施形態において、サーバ104で実行されるビデオゲームからのビデオおよびオーディオコンテンツの処理および表示は、クライアントデバイス106で実行される(
図1ではグラフィカルユーザインターフェイス(GUI:graphical user interface)114によって表される)ソフトウェアアプリケーションによって容易にされる。このソフトウェアアプリケーションは、たとえば、クラウドゲーミング固有のソフトウェアアプリケーションを含み得る。他の実施形態では、より一般的なソフトウェアアプリケーションが利用され、ビデオストリームおよびオーディオストリームは、このソフトウェアアプリケーションとの互換性を確立するためにサーバ104によってフォーマットされ送信される。たとえば、一実施形態において、クライアントデバイス106は、ビデオによって表されるビデオコンテンツの表示および関連付けられるオーディオストリームによって表されるオーディオコンテンツの出力のためにハイパーテキストマークアップ言語(HTML:hypertext markup language)フォーマットを利用するウェブブラウザを利用し、サーバ104は、ウェブブラウザを介した表示のためにHTMLフォーマットと互換性のあるフォーマットのビデオストリームおよびHTMLフォーマットと互換性のあるフォーマットのオーディオストリームを提供する。
【0027】
対話式なので、実行中のプレイヤーシミュレーションインスタンスは、プレイヤー入力を利用して、プレイヤーとのゲーミングセッションのゲームプレイ体験を、少なくとも部分的に指示する。このプレイヤー入力の少なくとも一部を、ゲームパッド、ジョイスティック、キーボード、マウス、タッチパッド、トラックボール、ステアリングホイールまたはヨーク、ペダル、ダンスパッド、シミュレートされた銃、光学モーショントラッカー、慣性センサ、光源/レーザ源および検出器などのような、さまざまなI/Oデバイスまたはそれらの組み合わせのうちのいずれかを含む、ゲームコントローラ112を介して受ける。いくつかの実施形態において、ゲームコントローラ112は、プレイヤーによるゲームコントローラ112の操作によって生成されたプレイヤー入力データが、クライアントデバイス106を介して対応するサーバ104に提供されるように、クライアントデバイス106に繋がれる。例示すると、ゲームコントローラ112は、ゲームコントローラ112から出力されるすべてのデータが、クライアントデバイス106とクライアントデバイス106をサーバ104に接続するネットワークとの間のネットワークインターフェイスを通してルーティングされるように、クライアントデバイス106に有線または無線で接続することができる。他の実施形態において、ゲームコントローラ112は、ネットワークを介した、対応するサーバ104との別個の独立したネットワーク接続を有する。たとえば、クラウドゲーミングシステム100は、クライアントデバイス106およびゲームコントローラ112に対してローカルな、インターネットに接続された無線ローカルエリアネットワーク(WLAN:wireless local area network)アクセスポイント(図示せず)を採用してもよく、この場合のクライアントデバイス106およびゲームコントローラ112の各々は、WLANアクセスポイントを介してインターネット上で対応するサーバ104と独立して通信するために、WLANアクセスポイントとの別個のワイヤレス接続を確立する。
【0028】
クラウドゲーミングシステム100の概要として、サーバ104は、各ゲームプラットフォームインスタンスによってサポートされる個々のプレイヤーシミュレーションインスタンス間でのゲームプレイの調整を可能にする、ピアツーピアインフラストラクチャの使用を通して、サーバ間メッセージングバス108の高帯域幅および低遅延を活用することで、大規模なマルチプレイヤーゲームを実現し、これを、集中管理型マルチプレイヤーゲーミングサーバを必要とせずに実現することで、典型的には従来の集中管理技術を通して大規模マルチプレイヤーゲームをサポートする際に必要な、高コストのサーバファーム、サーバ運用チームおよびその他の費用を不要にする。
【0029】
説明のために、
図2は、クラウドゲーミングシステム100によってサポートされているマルチプレイヤービデオゲームの対応するマルチプレイヤーゲームワールド202に関連する、サーバ104のハイレベル構成の一例を示す。図示の例において、サーバ104のハードウェアリソース204(たとえばプロセッサ、メモリ、ネットワークインターフェイス、大容量記憶装置など)は、図示の例に示される2つのゲームプラットフォームインスタンス206-1および206-2等の、1つ以上のゲームプラットフォームインスタンス206の実行をサポートする。また、各ゲームプラットフォームインスタンス206は、図示の例において、ゲームプラットフォームインスタンス206-1によって実行されるプレイヤーシミュレーションインスタンス208-1~208-4およびゲームプラットフォームインスタンス206-
2によって実行されるプレイヤーシミュレーションインスタンス208-5~208-8等の1つ以上のプレイヤーシミュレーションインスタンス208の実行をサポートする。各プレイヤーシミュレーションインスタンス208は、単一の対応するプレイヤーのための対応するビデオゲームの実行のインスタンスを表し、対応するマルチプレイヤービデオゲームのためにクラウドプラットフォームのサーバ104のすべてにおいて現在実行されている複数のプレイヤーシミュレーションインスタンス208はともに、共有されるゲームワールド202におけるゲームプレイを経験する。以下でより詳細に説明するように、すべてのサーバ104のすべてのゲームプラットフォームインスタンス206にわたって複数のプレイヤーシミュレーションインスタンス208を同時に実行することは、集中管理型ゲームサーバなしで、ピアツーピアインフラストラクチャを利用することで、すべてのプレイヤー間で共有されるゲームワールド202をサポートするために利用される各種情報を、通信する。この情報は、開始状態情報、状態更新情報、プレイヤー入力などを含む。
【0030】
各ゲームプラットフォームインスタンス206および各プレイヤーシミュレーションインスタンス208のための情報フローおよび必要な処理の量を減じるために、少なくとも1つの実施形態において、ゲームワールド202は、複数の領域210に論理的に分割される。各領域210は、ゲームワールド202の特定の地理的エリアまたは他の論理的区分を表し、その境界は、種々のパラメータまたは要素のうちのいずれかを使用して決定することができる。例示すると、いくつかの実施形態では、ゲームワールド202を、正方形、矩形、三角形、六角形などのような、互換性があり境を接する特定の形状からなる2Dアレイに分割することができる。他の実施形態では、ゲームワールド202の地理的レイアウトが領域210を決定してもよい。例として、ゲームワールド202が、たとえば異界上の多層軍事基地を表す場合、この軍事基地の各層を、独立した領域210として特定することができる。加えて、領域210の数および大きさは、ゲームワールド202内に現在存在するプレイヤーの位置および数の影響を受ける可能性がある。たとえば、領域210は、指定された最大数のプレイヤーを有し得るものであり、ゲームワールド202の特定エリア内のプレイヤーの数の増加に応じて、そのエリアに対してインスタンス化される領域210の数を増加させ、一方、各領域210の面積は減少し、それにより、領域ごとのプレイヤーのこの上限しきい値を維持してもよい。
【0031】
例示した単純な例において、ゲームワールド202は、図示の領域210-1および210-2を含む多数の領域を含む。ゲームプラットフォームインスタンス206-1によってサポートされるプレイヤーシミュレーションインスタンス208-2および208-3と、ゲームプラットフォームインスタンス206-2によってサポートされるプレイヤーシミュレーションインスタンス208-5とは、異なるサーバ104によって実行されるゲームプラットフォームインスタンス206によって実行されるプレイヤーシミュレーションインスタンス208-9と同様に、領域210-1に含まれる。ゲームプラットフォームインスタンス206-1によって実行されるプレイヤーシミュレーションインスタンス208-4と、ゲームプラットフォームインスタンス206-2によって実行されるプレイヤーシミュレーションインスタンス208-6および208-7とは、他のサーバ104におけるゲームプラットフォームインスタンス206によって実行されるプレイヤーシミュレーションインスタンス208-10および208-11と同様に、領域210-2に含まれる。プレイヤーシミュレーションインスタンス208-1および208-8は、ゲームワールド202の他の領域(図示せず)のメンバーである。
【0032】
この構成において、プレイヤーシミュレーションインスタンス208-2、208-3、208-5、および208-9はともに、領域210-1のためのアドホックピアツーピアネットワーク212-1を形成し、プレイヤーシミュレーションインスタンス208-4、208-6、208-7、208-10、および208-11はともに、アドホックピアツーピアネットワーク212-2を形成する。各ピアツーピアネットワーク212は、クラウドプラットフォーム102のサーバ間メッセージングバス108によってサポートされ、状態情報、プレイヤー入力情報、および他のマルチプレイヤー実行情報をピアツーピアネットワーク212のさまざまなメンバーの間で送信するために使用されることで、対応する領域210のマルチプレイヤーゲームプレイを容易にする。さらに、ゲームプレイの進行に伴ってプレイヤーが特定の領域210に出入りする可能性が高いので、少なくともいくつかの実施形態では、隣接する領域に関する、状態情報、プレイヤー入力情報、および他のマルチプレイヤー容易化情報も、所与の領域210のプレイヤーシミュレーションインスタンス208に伝達される。「隣接」は、地理的な隣接、ゲームプレイという観点での論理的な隣接(たとえば領域210が、あるプレイヤーを地理的に離れた別の領域210に輸送するポータルを含む場合、このポータルを介して接続された別の領域210は、この文脈では「隣接する」とみなすことができる)などを、表すことができる。
【0033】
次に
図3を参照すると、本開示のいくつかの実施形態に係る、
図2のサーバ104のハードウェアリソース204およびソフトウェア構成302の概要が示されている。図示のように、サーバ104のハードウェアリソース204は、1つ以上の中央処理装置(CPU:central processing unit)304、1つ以上のグラフィックス処理装置(GPU:graphics processing unit)306、1つ以上の人工知能(AI:artificial intelligence)アクセラレータ特定用途向け集積回路(ASIC:application-specific integrated circuit)(図示せず)などのような、1つ以上のプロセッサを含む。ハードウェアリソース204はさらに、サーバ間メッセージングバス108に結合されるネットワークインターフェイス308、1つ以上の入出力(I/O)デバイス310(キーボード、マウス、またはディスプレイ等)、1つ以上の大容量記憶装置312(ハードドライブ、光ディスクドライブ、またはネットワーク接続ストレージ等)などを含む。ハードウェアリソース204は、1つ以上のプロセッサによってアクセス可能な少なくとも1つのランダムアクセスメモリ(RAM)または他のシステムメモリ314をさらに含む。システムメモリ314は、本明細書に記載の各種動作を実行するよう1つ以上のプロセッサを操作する実行可能命令を表すプログラムコードを含む、1つ以上のソフトウェアアプリケーションを格納する。これらのソフトウェアアプリケーションは、まとめてプラットフォームソフトウェア316と呼ばれる1つ以上のソフトウェアアプリケーションのセットと、まとめてゲーム空間ソフトウェア318と呼ばれる1つ以上のソフトウェアアプリケーションのセットとを含む。別々に図示され説明されているが、以下の説明において、プラットフォームソフトウェア316の機能の一部またはすべてが、ゲーム空間ソフトウェア318において代わりに実装されてもよく、逆もまた同様であることが理解されるであろう。
【0034】
概要として、プラットフォームソフトウェア316は、ゲームプラットフォームインスタンス206をインスタンス化するために実行されるソフトウェア命令を表し、また、1つ以上のプレイヤーシミュレーションインスタンス208の実行を容易にし、その各々は、ゲーム空間ソフトウェア318の実行の独立したインスタンス化を表し、したがって、少なくとも部分的に、ゲーム開発者によって開発されたビデオゲームアプリケーションを表す。いくつかの実装形態において、ビデオゲームアプリケーションのゲーム開発者は、サーバによる実行のためにビデオゲームアプリケーションを具体的に構成し、その場合、プラットフォームソフトウェア316は、1つ以上のアプリケーションプログラミングインターフェイス(API:application programming interface)と、ハードウェアリソ
ース204とビデオゲームアプリケーションとの間のより透明な対話を提供する他の「フック(hook)」とを提供する。他の実施形態において、ビデオゲームアプリケーションは、PCプラットフォームまたはゲームコンソールプラットフォーム等の特定のローカルハードウェアプラットフォームのために開発され、その場合、プラットフォームソフトウェア316は、ビデオゲームアプリケーションとその予想されるローカルハードウェアプラットフォームとの間の典型的なインターフェイスをエミュレートし、したがって、サーバ104の実際の基礎をなすハードウェアリソース204の、ビデオゲームアプリケーションに対する透明性を低下させる。プラットフォームソフトウェア316の構成の一例およびゲーム空間ソフトウェア318とのその対話がソフトウェア構成302によって示される。
【0035】
図示のソフトウェア構成302において、プラットフォームソフトウェア316は、オペレーティングシステム(OS:operating system)320またはハイパーバイザ、およびメッセージングバスプロトコルスタック322、ならびに当該技術において周知の、実行されているクラウドゲームをサポートするための他の各種モジュールを含む。OS320は、サーバ104の全体的な動作を管理し、ハードウェアコンポーネントとより高レベルのソフトウェア層との間のインターフェイスとして機能するように、動作する。メッセージングバスプロトコルスタック322は、プラットフォームソフトウェア316によって実行されるゲームプラットフォームインスタンス206によって実行されるプレイヤーシミュレーションインスタンス208をメンバーとして有する、1つ以上のアドホックピアツーピアネットワーク212の動作を容易にするように動作する。この動作は、対応する領域210に入るときにプレイヤーシミュレーションインスタンス208がアドホックネットワークに加入することを可能にする加入機能を容易にすること、プレイヤーシミュレーションインスタンス208が、加入領域210のためのアドホックピアツーピアネットワークの他のメンバープレイヤーシミュレーションインスタンス208と、隣接領域210の任意のピアツーピアネットワークとの間で、状態情報およびプレイヤー入力情報を配信することを可能にする公開機能を容易にすることなどを含む。
【0036】
上述のように、ゲーム空間ソフトウェア318は、プレイヤーシミュレーションインスタンス208をインスタンス化するためにサーバ104で実行されるソフトウェア命令を表す。したがって、ゲーム空間ソフトウェア318は、状態管理モジュール324と、シミュレーション管理モジュール328と、可視化モジュール330と、レンダリングエンジン332とを含む。状態管理モジュール324は、メッセージングバスプロトコルスタック322と協働して、コンテキスト情報およびプレイヤー入力情報を他のプレイヤーシミュレーションインスタンス208から受信し、対応するプレイヤーからのコンテキスト情報およびプレイヤー入力情報を他のプレイヤーシミュレーションインスタンス208に提供し、さらに、この情報をフォーマットしてシミュレーション管理モジュール328に提供する。シミュレーション管理モジュール328は、状態情報、関連付けられるプレイヤーからのプレイヤー入力情報、および同じ領域210内の他のプレイヤーからのプレイヤー入力情報を利用して、対応するプレイヤーのためのゲームプレイをシミュレートするように、ビデオゲームアプリケーションのゲームエンジンおよび他のタイトル固有の構成を実現する。可視化モジュール330は、現在のゲームプレイ状態を可視化して、対応するオーディオを伴う、プレイヤーのための3Dシーンにするように機能し、プレイヤーの視点を表す画像のストリームおよび対応するオーディオを3Dシーンにして表現するための、描画コマンドならびに他のオーディオおよびフレームレンダリングコマンドを生成する。一方、レンダリングエンジン332は、コマンドのこのストリームを利用して、対応するビデオストリームおよびオーディオストリームをレンダリングし、対応するビデオストリームおよびオーディオストリームは、再生のためにサーバ104によって対応するクライアントデバイス106に送信される。
【0037】
図4は、マルチプレイヤーゲーム調整のための集中管理型サーバを必要とすることなく有効な大規模マルチプレイヤーゲームプレイを容易にするために、クラウドプラットフォーム102のサーバ104で実行されるプラットフォームソフトウェア316およびゲーム空間ソフトウェア318の、さまざまな動作の側面を示す
図400である。ブロック402によって示されるように、集中管理型マルチプレイヤーゲーム管理に代えてピアツーピアマルチプレイヤーゲームプレイを容易にするという側面において、クラウドプラットフォーム102のサーバ104、および、多くの場合サーバ間メッセージングバス108の全体が、単一のエンティティによって管理されるので、ゲームプラットフォームインスタンス206およびその上で実行されるプレイヤーシミュレーションインスタンス208は、信頼できるものであり、したがって、それらの動作を信頼できるものとみなして認証することができる。この側面は、従来のピアツーピアマルチプレイヤーゲームで見られる、不正を働くクライアントが自身のアクションを遅らせて他のプレイヤーからのメッセージを待ちそれに応じて自身のアクションを修正する、周知の先読みチート(look-ahead cheating)の問題に関連する問題等の、いくつかのリスクおよび脆弱性悪用の特徴を緩和する。
【0038】
ブロック404によって示される別の特徴は、クラウドプラットフォーム102のサーバ104を接続する高速・低遅延サーバ間メッセージングバス108の利用であり、これは、ゲームプラットフォームインスタンス206が、参加、離脱、加入、および公開動作を設定することにより、ゲーム状態情報およびプレイヤー入力情報を、ゲームプラットフォームインスタンス206間およびそれによって実行されるプレイヤーシミュレーションインスタンス208間で、迅速かつ効果的に送信することを、可能にする。
【0039】
ブロック406によって示される他の側面は、ゲームワールド202のゲームプレイがプレイヤー入力に依存することである。そのため、ゲームワールドの領域210において、それに影響を与えるプレイヤーが存在しない場合、その領域では何も起こらない。いくつかの実装形態において、その結果、この領域のゲームプレイは、すべてのプレイヤーが領域210から退場すると、デフォルト状態に戻る。これに代わるものとして、領域210の状態は、最後のプレイヤーが領域210から退場するときに、クラウドドライブまたは他のネットワークアクセス可能ストレージに格納され、その状態は、プレイヤーがこのエリアに来たときに、リロードされる。これは、状態を維持するが調整ゲームサーバがない世界を可能にする。これに代えて、プレイヤーが領域210に到着したときの状態を、その領域210に参加するプレイヤーの認識に関して直ちにシミュレートできるように、ゲームプレイを構成してもよい。これは、ノンプレイヤーキャラクター(NPC:non-player character)および他のゲームエージェントがゲームワールド202内に存在して各種アクティビティを実行することを制限しないが、そのようなアクティビティはいずれも、プレイヤーが対応する領域にいない限りゲームプレイを実質的に変化させないものに限定される。特に、公開および加入機能は、メッセージを配信するために調整サーバを必要とすることなく、所与の領域210に対するプレイヤーシミュレーションインスタンス208間のアドホックピアツーピアネットワークの実装を容易にする。
【0040】
ブロック408によって示されるさらに他の側面は、シミュレーションロールバックにより、決定論的ゲームワールドシミュレーションを実施することである。クラウドゲーミングシステム100のいくつかの実装形態は、ゲーム開発者が、マルチプレイヤーの対話を可能にしつつシングルプレイヤーの経験を設計するのと同様のやり方でビデオゲームを設計するのを許容することを意図している。この設計手法を容易にする1つの特徴は、プレイヤー入力情報を、ゲームプラットフォームインスタンス206間の主要なネットワーク送信データにすることに加えて、ロールバックによる決定論的なゲームワールドシミュレーションを義務付けることである。一般的に、本明細書で使用される、ゲームワールドシミュレーションが、「決定論的」となるのは、同一の状態およびプレイヤー入力を与えられると、同一のゲームシミュレーションを実行する2つの異なるゲームプラットフォームインスタンス206は、たとえ異なる時間に開始されたとしても、何らかの指定されたしき値期間以内に(典型的には数百ミリ秒の範囲)同じ状態を生成する場合である。この決定論的動作を容易にするために、特にシミュレーションロールバックをサポートしながら、以下で説明されるように、いくつかの要素が考慮され解決策が実現される。
【0041】
ブロック410によって示される、1つのそのような要素は、シミュレーションの開始状態である。シミュレーションの開始状態は、一般的に多くの後続の状態の側面を制御するので、シミュレーションインスタンスは典型的に異なる時間に開始されるものであるが、シミュレーションの開始状態を、各シミュレーションインスタンスの開始点が同一になるように、決定する。この開始状態の決定は、たとえば、レベルジオメトリ、NPC特性および状態、オブジェクト位置決め、リソースなどを含む。すなわち、ゲームワールド202の側面のうちの大部分またはすべては容易に予測できる。
【0042】
ブロック412によって示される、もう1つの要素は、ランダム性の実現である。真のランダム性は、典型的には決定論的シミュレーションを妨げる。したがって、決定論的シミュレーションという目標を容易にするために、少なくとも1つの実施形態において、ゲームプレイで実現される任意のランダム性を、「決定論的」であるときに、すなわち、プレイヤーにとっては明らかなランダム性であるが、決定論的に計算されるときに、許容される。説明すると、開始シード値が既知である限り、多くのタイプの疑似乱数(pseudo-random number)発生器は決定論的である。よって、各シミュレーションインスタンスが、開始シードが同一の、同一の疑似乱数発生器を使用し、コールの同一順序を維持する限り、各シミュレーションインスタンスは、同一のまたは十分に類似する値を返し、したがって決定論を維持するはずである。代わりに、十分に長い、予め生成された、外観上の乱数のリストを生成することにより、決定論的「ランダム性」を導入し、シードをリストの開始インデックスとすることができる。さらに、(以下で説明する)ロールバック動作のイベントにおいて、乱数発生のために使用されるメカニズムは、一実施形態ではその状態をロールバック動作のリセットポイントまでロールバックさせることができる。同様に、設定開始状態に戻るために、見かけ上ランダムな開始状態を、たとえば対応する領域210のシミュレーションに参加する第1のプレイヤーからの入力のタイムスタンプを、乱数発生器のシードとして使用することにより、採用することができ、同一領域210内のその他すべてのインスタンスは、対応するプレイヤーの初期状態入力の一部として、同一の値を受ける。
【0043】
ブロック414によって示される、別のそのような要素は、プレイヤー入力管理である。上述のように、少なくとも1つの実施形態のある側面は、ゲームシミュレーションに変化を引き起こす唯一のものがプレイヤー入力であるということであり、すなわち、プレイヤー入力がない場合、ゲームシミュレーションは、メッセージングバス108上のネットワークアクティビティを必要とすることなく、決定論的に進行する。したがって、所与の領域210にプレイヤーが存在して初めてその領域210のシミュレーションが作成されて進められる。
【0044】
プレイヤー入力はシミュレーションを推進するものであるので、ゲームプラットフォームインスタンス206は、各シミュレーションがすべてのプレイヤー入力を同じやり方で処理するように、構成される。これは、たとえば、各シミュレーションがプレイヤー入力をこのプレイヤー入力が実行されたのと同じ順序で同じ時間値を使用して処理することを確実にすることにより、実現される。そのため、プレイヤーが入力を実行するとき、このプレイヤーのクライアントデバイス106に接続されたゲームプラットフォームインスタンス206は、プレイヤー入力を登録し、それをタイムスタンプし、メッセージングバス108を介して同じ領域210(および任意の指定された「隣接」領域210)内の他のシミュレーションのすべてに、その情報を送信する。いくつかの実施形態において、プレイヤーにとってローカルなシミュレーションでさえ、プレイヤー入力を処理するためにプレイヤー入力のネットワーク化されたバージョンを使用する。なぜなら、プレイヤー入力の処理方法について異なる何かが存在する場合(例として、ネットワーク上よりもローカルな時間値の方が正確)、シミュレーションはドリフトする可能性があるためである。プレイヤー入力のローカルな可視化は、ローカルプレイヤーの利益のためにより正確なローカルデータを使用することができるが、これは、可視化が、シミュレーションによって推進され、典型的にはシミュレーションにフィードバックを提供しないからである。
【0045】
シミュレーションが(ローカルプレイヤーからであろうとリモートプレイヤーからであろうと)プレイヤー入力を受信すると(少なくとも1つの実装形態において、シミュレーションはローカルプレイヤーとリモートプレイヤーとを区別しない)、シミュレーションは、タイムスタンプが、状態が最後に計算されたときよりも前であった場合、プレイヤー入力が発生した瞬間に、シミュレーションをロールバックする。次に、シミュレーションは、ロールバック状態の時点以降のすべてのプレイヤー入力を、そのタイムスタンプの順序で適用する。受信されたプレイヤー入力が、最後に状態が計算された後に発生したタイムスタンプを有する場合、そのプレイヤー入力は、次回状態が計算されるときに、タイムスタンプの順序で、処理されるプレイヤー入力のリストまたはその他のキューに、追加される。2つのタイムスタンプが同じ時間を示す場合、決定論的タイブレーカーが、たとえばプレイヤー名のアルファベットの順に従い、または上記決定論的乱数発生器を使用して、適用される。プレイヤー入力が将来のタイムスタンプを与えられる場合、このプレイヤー入力は、対応する将来の入力キューに追加され、後で実行される。このようにして、インスタンス間の比較的小さな時間変動を管理することができる。さらに、状況によっては、プレイヤーが複数の入力を同時に送信することがあり、したがって、いくつかの実施形態において、タイムスタンプ付与プロセスは、各入力のタイムスタンプが順序付けの維持のために何らかの小さな値だけインクリメントされることを保証し、さらに、クライアントデバイス106が同じタイムスタンプを有する2つ以上のプレイヤー入力の送信を回避することを保証する。さらに、プレイヤー入力の見かけの遅延を短縮するために、いくつかの実装形態において、プレイヤー入力のタイムスタンプは、ゲームプラットフォームインスタンス206がこのプレイヤー入力の通知を受信したときではなく、ローカルクライアントデバイス106がこのプレイヤー入力を登録したときに発生するように設定される。これは、ローカルプレイヤー入力を、むしろネットワーク接続されたプレイヤー(技術的にはローカルプレイヤーである)のように扱い、プレイヤーにとってより好ましい経験を提供することができる。
【0046】
ブロック416によって示される、ピアツーピアマルチプレイヤー動作に対する容易化という側面は、各ゲームシミュレーションインスタンスによるロールバックおよび再シミュレーション(「リプレイ」としても知られる)を実現することである。典型的に、場合によっては大量のプレイヤー入力がメッセージングバス108を通して送信されるので、シミュレーションは絶えずロールバックし前方にシミュレートする。この意味において、ロールバックは「アンドゥ(undo)」操作として近似することができ、プレイヤー入力の処理は状態に対する操作とみなすことができる。よって、さまざまな技術のうちのいずれかを採用することができる。1つのアプローチは、各操作に、対応するアンドゥ操作を提供することである。これにより、シミュレーションを、新たなプレイヤー入力が生じたポイントまで正確にロールバックすることができ、それよりも前ではないので、最小限の操作数で処理が進められる。いくつかの対応するアンドゥ動作は、かなりの量のシミュレーションの状態を含み得ることが理解されるであろう。別のアプローチとして、シミュレーションは開始状態にアクセスできるので、シミュレーションは、先頭にロールバックし、次に、以前のすべてのプレイヤー入力を使用して、そこから再シミュレーションすることにより、前方に再シミュレーションすることができる。別の技術は、シミュレーションの完全な状態の周期的なスナップショットの取得と、これらのスナップショット間のすべてのプレイヤー入力の維持とを利用する。メモリの細分化を回避するために、最も古いスナップショットが最終的に破棄され上書きされるよう、リングバッファをスナップショットのために採用することができる。新たなプレイヤー入力が受信されると、シミュレーションにおいて、このプレイヤー入力の前に作成された直近のスナップショットへのロールバックが実施され、次に、シミュレーションはすべてのデータを前方処理する。シミュレーションはテキストエディタではないので、より古いスナップショットを破棄することができる。実際、システムは、過去のXミリ秒の1つのスナップショットのみを維持するという選択を行うことができ、Xは、それを超えるとシミュレーションが同期せず修復不可能と宣言される、何らかの値である。このようにして、状態の2つのコピーのみ、すなわちスナップショットと「現在の」推定のみを維持する必要があり、この文脈におけるロールバックはしたがって、スナップショット状態が現在の状態にロールバックされ前方にシミュレートされることを意味する。周期的に、スナップショット状態は過去Xミリ秒まで進められ、その時点の前のリモートプレイヤー入力は破棄される。
【0047】
ブロック418によって示される、マルチプレイヤーピアツーピア動作の容易化における別の要素は、シミュレーションが同じ速度で実行されることを保証するために、シミュレーションを、可視化とは無関係に、さらにはシステムの現在時間から切り離して実行する。なぜなら、異なるインスタンスに対する可視化は異なる複雑度レベルを有する可能性があり、それ故に、可視化は異なるスピードで実行され異なるタイミングを有し得るからである。したがって、決定論を維持するために、各シミュレーションは同じ速度で実行されることになり、各シミュレーションティック(tick)を同時に発生させる。説明のために、これが当てはまらなかったと仮定する。ゲームワールドのモンスターNPCが、あるプレイヤーに、このプレイヤーがモンスターNPCから一定距離内に存在するときに気付くとすると、いつこのモンスターNPCが攻撃するか(場合によっては攻撃するか否か)は、その距離計算がシミュレーションを通して全く同時に行われなかった場合、シミュレーション間で異なるであろう。
【0048】
したがって、この同期性を提供するために、一実施形態において、シミュレーションは、それが実行されるゲームプラットフォームインスタンス206上の実際の時間から切り離され、シミュレーションは、あたかもそれが特定の速度でおよび特定の時間に実行されたかのように、計算することができる。一例として、0msで開始され、100msごとに実行されることが意図されるシミュレーションを想定する。そうすると、理想的なケースは、(1)0ms:状態0、(2)100ms:状態1、(3)200ms:状態2、…となる。しかしながら、シミュレーションに対するコールが12ms、97ms、103ms、210ms、415msなどで発生すると仮定する。欠落したシミュレーション状態は、過去からは計算することができるが、将来から計算することはできない。結果として、得られた状況は、(1)12ms:状態0、(2)97ms:状態0(変化なし)、(3)103ms:状態1、(4)210ms:状態2、(5)415ms:状態3、状態4(状態3が計算され、その後直ちに状態4)…である。したがって、シミュレーションコードがコールされたであろうときに、シミュレーションを可視化からだけでなく遅延からも切り離すことにより、各シミュレーションインスタンスは、各シミュレーションを一貫性のある状態に保ちながら、(最終的には)正確に同じデータを正確に同じ時点で処理する可能性がより高い(時間はシミュレーションで測定)。よって、各シミュレーションは、リアルタイムで任意の特定の時点では互いにわずかに同期していない可能性があるが、最終的にはすべてのシミュレーションが分散を補正し数ミリ秒のオーダーだけオフされる。このアプローチの影響の例として、別のプレイヤーを検出しこのプレイヤーの存在を不快に感じて水風船を発射する人工知能(AI)エージェントが存在すると仮定する。このプレイヤーが50msで出現する場合、どのシミュレーションも100msのマークでこのプレイヤーに気付いて風船を同時に発射する。しかしながら、シミュレーションによるそのティックの実行が一貫していなかった場合は、プレイヤーが175msでシールドを立てると、水風船がプレイヤーに到達するのにたとえば100msを要するのであれば、異なるシミュレーションインスタンスがプレイヤーをずぶぬれにする可能性もしない可能性も十分にある。各シミュレーションが同じものを同じ間隔で計算する場合に限り、決定論を維持することができる。
【0049】
そのため、少なくとも1つの実施形態において、更新のロールバック/更新プロセスは、(1)プレイヤー入力のリストを評価して、過去において最も遠いプレイヤー入力を特定すること、(2)適切であれば、特定された最も早いプレイヤー入力よりも前の時点に状態をロールバックすること、(3)最新の更新まで進むよう再シミュレートすること、(4)状態が最後の更新で最新にされている場合、(a)最新の更新以降であるが現在の更新の前に生じたすべてのプレイヤー入力を適用すること、(b)任意のシミュレーション論理(たとえばAI、物理学など)を適用することを、含む。
【0050】
シミュレーション状態を計算し各プレイヤーの入力で絶えずシミュレーションを絶えず巻き戻して進めるようにプレイすることは、リソース集約的であることが理解されるであろう。しかしながら、シミュレーションは、システムの残りが全速シミュレーションに依存するので、典型的には全速で実行されるように構成される。したがって、いくつかの実施形態において、各シミュレーションは、CPU304の1つ以上の独立したコアのセットを用いて、それ自体の独立したスレッドとして実行される。計算負荷を減じるために、いくつかの例では、すべてのプレイヤー入力、フルビデオフレームに対するプレイヤー入力(たとえば30フレーム/秒または60フレーム/秒のフレームレートに対してそれぞれ33msまたは17ms)に対して、ロールバックおよび前方再シミュレーションプロセスを実行するのではなく、フレームごとに最大1回ロールバック/前方シミュレーションプロセスを実行するだけである。
【0051】
ブロック420によって示される、効果的なロールバックを用いた決定論的シミュレーションにおけるもう1つの要素は、プレイヤー状態の維持である。これは、不変のプレイヤー状態を維持することと、初期プレイヤー状態を判断することとを含む。不変のプレイヤー状態を維持するために、いくつかの実施形態において、クラウドゲーミングシステムによって採用される従来のシングルプレイヤー保存状態ルーチンを用いることにより、ゲームの別々の開始にわたってプレイヤー状態を維持することができる。これは、たとえば、現在のプレイヤー状態をクラウドドライブまたは他のクラウド接続ストレージに格納することを含み得る。初期プレイヤー状態に関しては、環境と対話しているプレイヤーが既に(場合によっては任意の長い期間にわたって)存在している領域210に、プレイヤーが入場するとき、初期プレイヤー状態を判断することは問題となる可能性がある。1つのアプローチにおいて、初期プレイヤー状態は、開始以降のすべてのプレイヤー入力を取得しそれらの入力をシミュレーションに適用し進めることによって判断される。しかしながら、発生したすべてのものの履歴は、ゲームが長期間起動されているとき、またはゲームで活動しているプレイヤーが比較的多いときに、シミュレーション状態を阻害する可能性がある。したがって、他の実装形態において、プレイヤーが領域210に入場すると、プレイヤーシミュレーションインスタンスは、既存のプレイヤーシミュレーションインスタンスのうちの1つから現在の状態を取得しつつも、同じ領域210内のすべてのプレイヤーから更新を受信することができる。既存のプレイヤーからの現在の状態は、典型的に、過去において十分遠いので、その時点までのプレイヤー入力のすべての影響を含むが、プレイヤーのシミュレーションが他のシミュレーションからプレイヤー入力更新のすべてを入手するのに十分早い。このアプローチの一例は、(1)メッセージングバス108を通して領域210に対するプレイヤー入力に加入すること、(2)他のシミュレーションインスタンスのうちの1つに対してその状態を送信するよう要求すること、(3)別のシミュレーションがその状態を、要求しているシミュレーションに送信することであって、この状態は、ロールバック用に格納された最近のシミュレーションデータ(すなわちその時点までのプレイヤー入力のすべてを有するという高い確信がある)と、そのデータが収集されてから受信された他のプレイヤーからのプレイヤー入力のすべてとを含み得ること、(4)新たなプレイヤーシミュレーションインスタンスが、このデータを受信し、シミュレーションデータをその真実のソースとして使用し、他のインスタンスからのプレイヤー入力を、受信したものにマージし、複製されたものを選別し、通常通りゲームプレイを続行することを、含む。
【0052】
次に、ブロック422によって示されるように、クラウドゲーミングシステム100のピアツーピアネットワークという状況において大規模マルチプレイヤーゲームプレイを容易にするためのもう1つの側面は、(
図3の可視化モジュール330によって提供されるような)ゲームの可視化が(
図3のシミュレーション管理モジュール328によって提供されるような)シミュレーションによって推進される一方で、可視化はシミュレーションに対してほとんどまたは全く影響を及ぼさない、ということである。これは、可視化によって推進される多くのゲームの従来のアプローチとは異なる。この意味で、多くの場合、フレームレートは、物理学およびプレイヤー入力と同じく基本的な物事に影響を及ぼし得る。画面上の効果および物体は、衝突のような物事に影響を及ぼし、これはその後、プレイヤーの位置のような物事に影響を及ぼし効果を損ねる可能性がある。アニメーションは、アクションが発生する(殴るために振りかぶることまたは銃の再装填)タイミングに影響を及ぼし得る。そのために、少なくとも1つの実施形態において、シミュレーションはすべてを推進し、信頼すべき真実の源である。したがって、画面上で起こることが、シミュレーションが理解するものを反映するということが、現在の真実であり、シミュレーションは、現在および最近の真実をいつでも変化させることができ、実際には、常にそうする可能性が高い。そのため、常に可視化がシミュレーションの変化する状態に適応する必要があり、その逆ではない。
【0053】
説明のために、マルチプレイヤー格闘ゲームにおいて、あるプレイヤーが、攻撃が別のプレイヤーに命中する前に振りかぶるのに要するのが一瞬であるラウンドハウス攻撃を開始すると想定する。第1のプレイヤーのインスタンスと他方のプレイヤーのインスタンスとの間の遅延が200msである場合、以下のことが起こり得る。(1)0ms-プレイヤー1がラウンドハウス攻撃を開始する。(2)200ms-プレイヤー2のシミュレーションインスタンスは、ラウンドハウス攻撃が開始されたという通知を受ける。(3)900ms-プレイヤー2がこの攻撃をかわす防御を開始する。(4)1000ms-プレイヤー1のシミュレーションインスタンスは、攻撃の命中に成功するアニメーションを開始しダメージをプレイヤー2に与える。(5)1100ms-プレイヤー1のシミュレーションインスタンスは、プレイヤー2から防御のためのプレイヤー入力を受け、それが200ms前に発生したことに注目する。(6)これに応じてシミュレーションは900msまで巻き戻され、これは、プレイヤー2の健康状態を900msの時点のレベルに戻すように設定しすべてのアニメーションをその時点に巻き戻すことを含む。(7)攻撃をかわす防御が適用される。(8)次に、シミュレーションは1100msまで進められ、このとき、ゲームプレイは攻撃命中のアニメーションではなく防御に成功するアニメーションの真最中である。したがって、ゲームの可視化において、攻撃命中のアニメーションは停止され、攻撃をかわすアニメーションが、アニメーション内の200msである現在の瞬間まで実行される。ラウンドハウス攻撃命中によるいかなるダメージ効果も画面から削除され、任意の攻撃阻止効果が画面上に置かれ、200ms早送りされる。この上記の例において、シミュレーションおよび可視化は、攻撃阻止成功アニメーションを挿入し、攻撃命中効果を取り出し、攻撃阻止効果を現在の状態に挿入する必要がある。しかしながら、可視化が、シミュレーションで実際に起こったことにより適切に合致するように、ある時間にわたって視覚状態をより微妙にモーフィングするように構成される状況が存在し得る。可視化が視覚表現においてスムーズさに欠けるものを含む頻度が低いほど、プレイヤーは、視覚的アーチファクトに注目する代わりにゲームプレイに集中することができる。
【0054】
いくつかの実施形態において、上記技術のいくつかの側面は、ソフトウェアを実行する処理システムの1つ以上のプロセッサによって実現されてもよい。ソフトウェアは、非一時的なコンピュータ読取可能記憶媒体に格納されたまたはそうでなければ有形で実現された、実行可能命令の1つ以上のセットを含む。ソフトウェアは、1つ以上のプロセッサによって実行されると、上記技術の1つ以上の側面を実行するように1つ以上のプロセッサを操作する命令および何らかのデータを含み得る。非一時的なコンピュータ読取可能記憶媒体は、たとえば、磁気または光ディスク記憶装置、フラッシュメモリ、キャッシュ、ランダムアクセスメモリ(RAM)または他の(1つまたは複数の)不揮発性メモリデバイス等のソリッドステート記憶装置などを、含み得る。非一時的なコンピュータ読取可能記憶媒体に格納された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、または1つ以上のプロセッサによって解釈されるかそうでなければ実行可能な他の命令フォーマットであってもよい。
【0055】
コンピュータ読取可能記憶媒体は、命令および/またはデータをコンピュータシステムに提供するために使用中にコンピュータシステムによってアクセス可能な任意の記憶媒体または記憶媒体の組み合わせを含み得る。そのような記憶媒体は、光学媒体(たとえばコンパクトディスク(CD)、デジタル多用途ディスク(DVD)、ブルーレイ(登録商標)ディスク)、磁気媒体(たとえばフロッピー(登録商標)ディスク、磁気テープ、または磁気ハードドライブ)、揮発性メモリ(たとえばランダムアクセスメモリ(RAM)またはキャッシュ)、不揮発性メモリ(たとえば読出専用メモリ(ROM)またはフラッシュメモリ)、またはマイクロエレクトロメカニカルシステム(MEMS:microelectromechanical systems)ベースの記憶媒体を含み得るが、それらに限定されない。コンピュータ読取可能記憶媒体は、コンピューティングシステム(たとえばシステムRAMまたはROM)に埋め込まれてもよく、コンピューティングシステム(たとえば磁気ハードドライブ)に固定的に装着されてもよく、コンピューティングシステム(たとえば光ディスクまたはユニバーサルシリアルバス(USB)ベースのフラッシュメモリ)に取り外し可能に装着されてもよく、または有線もしくは無線ネットワーク(たとえばネットワークアクセス可能ストレージ(NAS:network accessible storage))を介してコンピュータシステムに結合されてもよい。
【0056】
一般的な説明における上記アクティビティまたは要素のすべてが必要な訳ではなく、特定のアクティビティまたはデバイスの一部が必要ではない場合があり、記載されているものに加えて1つ以上のさらに他のアクティビティが実行されてもよくまたは要素が含まれてもよいことに、注意されたい。さらに、アクティビティが列挙される順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明されている。しかしながら、当業者は、以下の請求項の範囲に記載される本開示の範囲から逸脱することなく各種修正および変更を行い得ることを理解する。したがって、明細書および図面は、限定的な意味ではなく例示されたものとみなされる必要があり、すべてのそのような修正は、本開示の範囲に含まれることが意図される。
【0057】
利益、その他の利点、および問題に対する解決策は、具体的な実施形態に関して先に述べた通りである。しかしながら、上記利益、利点、問題に対する解決策、および、何らかの利益、利点、または解決策をもたらし得るもしくはより顕著なものにし得るどの特徴も、請求項のうちのいずれかまたはすべての、重要な、必要な、または必須の特徴として解釈されてはならない。加えて、開示されている主題は、本明細書における教示の利益を享受する当業者には明白である、異なるが同等の態様で、修正および実施され得るので、開示された上記具体的な実施形態は例示にすぎない。以下の請求項に記載されているもの以外の、本明細書に示される構造または設計の詳細に対する限定は意図されていない。したがって、開示された上記具体的な実施形態は、変更または修正されてもよく、すべてのそのような変形が、開示されている主題の範囲に含まれると考えられることは、明らかである。よって、本明細書において求める保護は、以下の請求項に記載されている通りである。