(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-01-09
(45)【発行日】2024-01-17
(54)【発明の名称】クラウドゲーム時のプレーヤ対話型ウィンドウへのプレーヤ入力の遅延認識フィルタリング
(51)【国際特許分類】
A63F 13/358 20140101AFI20240110BHJP
A63F 13/355 20140101ALI20240110BHJP
A63F 13/44 20140101ALI20240110BHJP
【FI】
A63F13/358
A63F13/355
A63F13/44
(21)【出願番号】P 2022520309
(86)(22)【出願日】2020-04-28
(86)【国際出願番号】 US2020030218
(87)【国際公開番号】W WO2021183158
(87)【国際公開日】2021-09-16
【審査請求日】2022-08-01
(32)【優先日】2020-03-12
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】ケアリー,ダニエル
【審査官】佐々木 祐
(56)【参考文献】
【文献】米国特許出願公開第2007/0016876(US,A1)
【文献】特開2002-204288(JP,A)
【文献】特表2013-508091(JP,A)
【文献】特開2007-079929(JP,A)
【文献】特開2012-143500(JP,A)
【文献】特開2016-097132(JP,A)
【文献】米国特許出願公開第2007/0197234(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
A63F 13/00 - 13/98
A63F 9/24
(57)【特許請求の範囲】
【請求項1】
コンピュータで実行される方法であって、
サーバ上でビデオゲームアプリケーションを実行することを含み、前記サーバは、ゲームコントローラと、プレーヤと前記ビデオゲームアプリケーションとの対話に使用されるクライアント装置とにリモート接続され、
前記サーバ上で前記ビデオゲームアプリケーションに関連して生成されたビデオストリーム内のプレーヤ対話型ウィンドウのインスタンス化を検出することに応答して、前記プレーヤ対話型ウィンドウのインスタンス化の後、前記ビデオゲームアプリケーションが
、特定のフィルタウィンドウ
の期間中に
前記ビデオゲームアプリケーションが受信
した前記ゲームコントローラからの1つ以上のプレーヤ入力を前記プレーヤ対話型ウィンドウに反応するプレーヤ入力として解釈することを防止することを含み、
前記プレーヤ対話型ウィンドウのインスタンス化を検出することは、前記サーバ上で、オブジェクト認識モデルを用いて、前記プレーヤ対話型ウィンドウが前記ビデオストリームのフレームに存在することを示すオブジェクトの初期存在を検出することを含む、方法。
【請求項2】
前記ビデオゲームアプリケーションは、前記プレーヤ対話型ウィンドウのインスタンス化の後に設定された前記フィルタウィンドウの期間中に、前記ゲームコントローラからの1つ以上のプレーヤ入力を前記プレーヤ対話型ウィンドウに反応するプレーヤ入力として解釈しない、請求項1に記載の方法。
【請求項3】
前記サーバ、前記クライアント装置および前記ゲームコントローラを接続するネットワークの少なくとも1つのネットワーク遅延を表す累積遅延を決定すること
をさらに含み、前記少なくとも1つのネットワーク遅延は、前記ビデオストリームのデータを前記クライアント装置に送信するための第1のネットワーク遅延と、プレーヤ入力データを前記ゲームコントローラから前記サーバに送信するための第2のネットワーク遅延とのうち、少なくとも1つを含み、前記方法は、
前記累積遅延に基づいて前記フィルタウィンドウの前記期間を設定することとをさらに含む、請求項2に記載の方法。
【請求項4】
プレーヤ反応時間を決定することをさらに含み、
前記累積遅延は、前記プレーヤ反応時間をさらに表す、請求項
3に記載の方法。
【請求項5】
前記ビデオゲームアプリケーションが前記1つ以上のプレーヤ入力を前記プレーヤ対話型ウィンドウに反応するプレーヤ入力として解釈することを防止することは、前記フィルタウィンドウの期間中に、前記ビデオゲームアプリケーションに提供されたプレーヤ入力ストリームからの前記1つ以上のプレーヤ入力をフィルタリングすることを含む、請求項1~
4のいずれか一項に記載の方法。
【請求項6】
前記ビデオゲームアプリケーションが前記1つ以上のプレーヤ入力を前記プレーヤ対話型ウィンドウに反応するプレーヤ入力として解釈することを防止することは、前記フィルタウィンドウの期間中に、前記ビデオゲームアプリケーションの前記プレーヤ対話型ウィンドウを非対話型ウィンドウに一時的に設定することを含む、請求項1
~4のいずれか一項に記載の方法。
【請求項7】
前記ビデオゲームアプリケーションが前記1つ以上のプレーヤ入力を前記プレーヤ対話型ウィンドウに反応するプレーヤ入力として解釈することを防止することは、
前記プレーヤ対話型ウィンドウに関するアクションを呼び出す1つ以上のプレーヤ入力のサブセットを決定することと、
前記ビデオゲームアプリケーションが前記決定されたサブセット中のプレーヤ入力のみを前記プレーヤ対話型ウィンドウに反応するプレーヤ入力として解釈することを防止することとを含む、請求項1~
4のいずれか一項に記載の方法。
【請求項8】
前記ビデオゲームアプリケーションが前記1つ以上のプレーヤ入力を前記プレーヤ対話型ウィンドウに反応するプレーヤ入力として解釈することを防止することは、
前記フィルタウィンドウの期間中に、前記ビデオゲームアプリケーションが前記サーバに受信された全てのプレーヤ入力を前記プレーヤ対話型ウィンドウに反応するプレーヤ入力として解釈することを防止することを含む、請求項1
~6のいずれか一項に記載の方法。
【請求項9】
前記プレーヤ対話型ウィンドウのインスタンス化を検出することは、前記ビデオゲームアプリケーションから、前記プレーヤ対話型ウィンドウが前記ビデオゲームアプリケーションによってインスタンス化されていることを示す通知を受信することを含む、請求項1~
8のいずれか一項に記載の方法。
【請求項10】
前記オブジェクト認識モデルは、前記フレームの特定の領域内の前記オブジェクトの位置、前記オブジェクトのサイズまたは寸法、前記オブジェクトの形状、前記オブジェクト内の特定の英数字の存在、前記オブジェクトの色、および前記オブジェクトの陰影のうち、少なくとも1つを含む前記プレーヤ対話型ウィンドウの1つ以上の特性を表す、請求項
1~9のいずれか一項に記載の方法。
【請求項11】
請求項1~
10のいずれか一項に記載の方法を実行するように構成されたクラウドゲームシステム。
【請求項12】
少なくとも一組の実行可能命令を記憶するコンピュータ可読プログラムであって、
前記少なくとも一組の実行可能命令は、少なくとも1つのプロセッサを操作することによって、請求項1
~10のいずれか一項に記載の方法を実行するように構成される、コンピュータ可読プログラム。
【請求項13】
リモートゲームシステムであって、
ネットワークを介してクライアント装置およびゲームコントローラに接続可能なサーバを含み、
前記サーバは、
ビデオゲームアプリケーションを実行し、
前記ビデオゲームアプリケーションに関連して生成されたビデオストリーム内のプレーヤ対話型ウィンドウのインスタンス化を検出することに応答して、前記プレーヤ対話型ウィンドウのインスタンス化の後、前記ビデオゲームアプリケーションが特定のフィルタウィンドウ
の期間中に受信された前記ゲームコントローラからの1つ以上のプレーヤ入力を前記プレーヤ対話型ウィンドウに反応するプレーヤ入力として解釈することを防止するように構成さ
れ、
前記サーバは、オブジェクト認識モデルを用いて、前記プレーヤ対話型ウィンドウが前記ビデオストリームのフレームに存在することを示すオブジェクトの初期存在を検出することによって、前記プレーヤ対話型ウィンドウのインスタンス化を検出するように構成される、リモートゲームシステム。
【請求項14】
前記サーバは、前記プレーヤ対話型ウィンドウのインスタンス化の後に設定された前記フィルタウィンドウの期間中に、前記ビデオゲームアプリケーションが前記ゲームコントローラからの1つ以上のプレーヤ入力を前記プレーヤ対話型ウィンドウに反応するプレーヤ入力として解釈することを防止するように構成される、請求項
13に記載のリモートゲームシステム。
【請求項15】
前記サーバは、前記サーバ、前記クライアント装置および前記ゲームコントローラを接続するネットワークの少なくとも1つのネットワーク遅延を表す累積遅延を決定
するように構成され、前記少なくとも1つのネットワーク遅延は、前記ビデオストリームのデータを前記クライアント装置に送信するための第1のネットワーク遅延と、プレーヤ入力データを前記ゲームコントローラから前記サーバに送信するための第2のネットワーク遅延とのうち、少なくとも1つを含み、
前記サーバは、前記累積遅延に基づいて前記フィルタウィンドウの前記期間を設定するようにさらに構成される、請求項
14に記載のリモートゲームシステム。
【請求項16】
前記サーバは、プレーヤ反応時間を決定するようにさらに構成され、
前記累積遅延は、前記プレーヤ反応時間をさらに表す、請求項
15に記載のリモートゲームシステム。
【請求項17】
前記サーバは、前記フィルタウィンドウの前記期間中に、前記ビデオゲームアプリケーションに提供されるプレーヤ入力ストリームから前記1つ以上のプレーヤ入力をフィルタリングすることによって、前記ビデオゲームアプリケーションが前記1つ以上のプレーヤ入力を前記プレーヤ対話型ウィンドウに反応するプレーヤ入力として解釈することを防止するように構成される、請求項
13~16のいずれか一項に記載のリモートゲームシステム。
【請求項18】
前記サーバは、前記フィルタウィンドウの前記期間中に、前記ビデオゲームアプリケーションの前記プレーヤ対話型ウィンドウを非対話型ウィンドウに一時的に設定することによって、前記ビデオゲームアプリケーションが前記1つ以上のプレーヤ入力を前記プレーヤ対話型ウィンドウに反応するプレーヤ入力として解釈することを防止するように構成される、請求項
13~16のいずれか一項に記載のリモートゲームシステム。
【請求項19】
前記サーバは、
前記プレーヤ対話型ウィンドウに関するアクションを呼び出す1つ以上のプレーヤ入力のサブセットを決定することによって、および
前記ビデオゲームアプリケーションが前記決定されたサブセット中のプレーヤ入力のみを前記プレーヤ対話型ウィンドウに反応するプレーヤ入力として解釈することを防止することによって、
前記ビデオゲームアプリケーションが前記1つ以上のプレーヤ入力を前記プレーヤ対話型ウィンドウに反応するプレーヤ入力として解釈することを防止するように構成される、請求項
13~18のいずれか一項に記載のリモートゲームシステム。
【請求項20】
前記サーバは、前記フィルタウィンドウの前記期間中に、前記ビデオゲームアプリケーションが前記サーバに受信された全てのプレーヤ入力を前記プレーヤ対話型ウィンドウに反応するプレーヤ入力として解釈することを防止することによって、前記ビデオゲームアプリケーションが前記1つ以上のプレーヤ入力を前記プレーヤ対話型ウィンドウに反応するプレーヤ入力として解釈することを防止するように構成される、請求項
13~18のいずれか一項に記載のリモートゲームシステム。
【請求項21】
前記サーバは、前記ビデオゲームアプリケーションから、前記プレーヤ対話型ウィンドウが前記ビデオゲームアプリケーションによってインスタンス化されていることを示す通知を受信することによって、前記プレーヤ対話型ウィンドウのインスタンス化を検出するように構成される、請求項
13~20のいずれか一項に記載のリモートゲームシステム。
【請求項22】
前記オブジェクト認識モデルは、前記フレームの特定の領域内の前記オブジェクトの位置、前記オブジェクトのサイズまたは寸法、前記オブジェクトの形状、前記オブジェクト内の特定の英数字の存在、前記オブジェクトの色、および前記オブジェクトの陰影のうち、少なくとも1つを含む前記プレーヤ対話型ウィンドウの1つ以上の特性を表す、請求項
13~21のいずれか一項に記載のリモートゲームシステム。
【発明の詳細な説明】
【背景技術】
【0001】
背景
対話型ビデオゲームアプリケーションは、しばしば、プレーヤ対話型ウィンドウを利用して、プレーヤがゲームコントローラ上の1つ以上のボタンを操作することによって生成されたプレーヤからの指示または他の入力を受信する。一例として、ゲームプレイ中にプレーヤ対話型ウィンドウを表示することによって、最近取得したツールのゲームプレイでの使い方に関するチュートリアルをプレーヤに提示することができ、またはプレーヤ対話型ウィンドウを表示することによって、ゲームプレイのいくつかの状況に関する複数のオプションのうちの1つを選択するようにプレーヤを促すことができる。このようなプレーヤ対話型ウィンドウは、一般的に、通常のゲームプレイ中にプレーヤによって使用されているボタンと同じボタンを介して、プレーヤ入力を求める。したがって、プレーヤが通常のゲームプレイに入力を提供することを意図しているボタンを押すと、そのボタンの押下と同時にプレーヤ対話型ウィンドウが生成され表示されている場合、ゲームシステムは、そのボタンの押下をプレーヤ対話型ウィンドウへの入力として解釈してしまう可能性がある。例えば、プレーヤがゲームプレイ中にゲームキャラクタをジャンプさせる意図で「Y」ボタンを押すときに、チュートリアルウィンドウを閉じることを示す入力として「Y」ボタンを使用するチュートリアルウィンドウがインスタンス化され、プレーヤに表示されている場合、ゲームシステムは、チュートリアルウィンドウの表示と同時にプレーヤが「Y」ボタンを押すことを、チュートリアルウィンドウを閉じるプレーヤ指示として意図せずに解釈してしまう可能性があり、プレーヤからチュートリアルウィンドウの内容を読む機会を奪う。
【発明の概要】
【発明が解決しようとする課題】
【0002】
ビデオゲームアプリケーションを実行する処理システムと、ビデオゲームアプリケーションによってレンダリングされたビデオストリームを表示するディスプレイ装置と、プレーヤ入力を提供するゲームコントローラとが(例えば、ハード配線、パーソナルエリアネットワークまたはローカルエリアネットワークを介して)ローカル接続されている従来のゲームシステムにおいて、通常のゲームプレイ用のゲームコントローラボタンの操作が、プレーヤがその存在を認識する前に表示されているプレーヤ対話型ウィンドウに関連するプレーヤ入力として誤って解釈される可能性がある。また、ゲームコントローラおよびディスプレイがビデオゲームアプリケーションを実行する処理システムにリモート接続されるクラウドゲーム構成において、プレーヤ対話型ウィンドウを含むフレームのレンダリングとフレームの表示との間の遅延(latency)、およびプレーヤによるゲームコントローラ上の所定のボタンの操作と処理システムによるそのボタンの操作を示すデータの受信との間の遅延に起因して、この可能性がさらに悪化する。一例として、プレーヤ対話型ウィンドウを含む第1のレンダリングされたフレームを表示するのに20ミリ秒(ms)を要し、プレーヤによる特定のボタンの押下がリモート処理システムに到達するのに20msを要する場合、通常のゲームプレイ中にプレーヤによる特定のボタンの押下は、プレーヤ対話型ウィンドウがプレーヤのディスプレイ上に表示される40ms前に、リモートに実行されているビデオゲームアプリケーションによって、プレーヤ対話型ウィンドウへのプレーヤ入力として誤って解釈される可能性がある。
【課題を解決するための手段】
【0003】
概要
一例において、コンピュータで実行される方法は、サーバ上でビデオゲームアプリケーションを実行することを含み、サーバは、ゲームコントローラと、プレーヤとビデオゲームアプリケーションとの対話に使用されるクライアント装置とにリモート接続される。この方法は、サーバ上でビデオゲームアプリケーションに関連して生成されたビデオストリーム内のプレーヤ対話型ウィンドウのインスタンス化を検出することに応答して、プレーヤ対話型ウィンドウのインスタンス化の後、ビデオゲームアプリケーションが特定のフィルタウィンドウに受信されたゲームコントローラからの1つ以上のプレーヤ入力をプレーヤ対話型ウィンドウに反応する(すなわち、ビデオゲームアプリケーションにおいてプレーヤ対話型ウィンドウを表示することに応答して生じる)プレーヤ入力として解釈することを防止することを含む。プレーヤ対話型ウィンドウは、特にビデオゲームアプリケーションに表示される情報に関連するが、フィルタウィンドウは、プレーヤ対話型ウィンドウのインスタンス化が発生した時点後の設定タイムスロットに関連する。
【0004】
いくつかの実施形態において、ビデオゲームアプリケーションがゲームコントローラからの1つ以上のプレーヤ入力をプレーヤ対話型ウィンドウに反応するプレーヤ入力として解釈することを防止する(またはブロックする)ことは、プレーヤ対話型ウィンドウのインスタンス化の後に設定されたフィルタウィンドウの期間中に、ビデオゲームアプリケーションがゲームコントローラからの1つ以上のプレーヤ入力をプレーヤ対話型ウィンドウに反応するプレーヤ入力として解釈することを防止することを含む。
【0005】
いくつかの実施形態において、方法は、サーバ、クライアント装置およびゲームコントローラを接続するネットワークの少なくとも1つのネットワーク遅延(latency)を表す累積遅延を決定することと、累積遅延に基づいてフィルタウィンドウの期間を設定することとをさらに含む。方法は、ビデオストリームのデータをクライアント装置に送信するための第1のネットワーク遅延と、プレーヤ入力データをゲームコントローラからサーバに送信するための第2のネットワーク遅延とのうち、少なくとも1つを決定することをさらに含み、累積遅延は、第1のネットワーク遅延および第2のネットワーク遅延のうち、少なくとも1つを表す。方法は、プレーヤ反応時間を決定することをさらに含み、累積遅延は、プレーヤ反応時間をさらに表す。
【0006】
いくつかの実施形態において、ビデオゲームアプリケーションが1つ以上のプレーヤ入力をプレーヤ対話型ウィンドウに反応するプレーヤ入力として解釈することを防止することは、フィルタウィンドウの期間中に、ビデオゲームアプリケーションに提供されるプレーヤ入力ストリームから1つ以上のプレーヤ入力をフィルタリングすることを含む。他の実施形態において、ビデオゲームアプリケーションが1つ以上のプレーヤ入力をプレーヤ対話型ウィンドウに反応するプレーヤ入力として解釈することを防止することは、フィルタウィンドウの期間中に、ビデオゲームアプリケーションのプレーヤ対話型ウィンドウを非対話型ウィンドウに一時的に設定することを含む。さらに他の実施形態において、ビデオゲームアプリケーションが1つ以上のプレーヤ入力をプレーヤ対話型ウィンドウに反応するプレーヤ入力として解釈することを防止することは、プレーヤ対話型ウィンドウに関するアクションを呼び出す1つ以上のプレーヤ入力のサブセットを決定することと、ビデオゲームアプリケーションが決定されたサブセット中のプレーヤ入力のみをプレーヤ対話型ウィンドウに反応するプレーヤ入力として解釈することを防止することとを含む。さらに、ビデオゲームアプリケーションが1つ以上のプレーヤ入力をプレーヤ対話型ウィンドウに反応するプレーヤ入力として解釈することを防止することは、フィルタウィンドウ中に、ビデオゲームアプリケーションがサーバに受信された全てのプレーヤ入力をプレーヤ対話型ウィンドウに反応するプレーヤ入力として解釈することを防止することを含む。
【0007】
いくつかの実施形態において、プレーヤ対話型ウィンドウのインスタンス化を検出することは、ビデオゲームアプリケーションから、プレーヤ対話型ウィンドウがビデオゲームアプリケーションによってインスタンス化されていることを示す通知を受信することを含む。いくつかの実施形態において、プレーヤ対話型ウィンドウのインスタンス化を検出することは、サーバ上で、オブジェクト認識モデルを用いて、ビデオストリームのフレームにプレーヤ対話型ウィンドウが存在することを示すオブジェクトの初期存在を検出することを含む。この場合、オブジェクト認識モデルは、フレームの特定の領域内のオブジェクトの位置、オブジェクトのサイズまたは寸法、オブジェクトの形状、オブジェクト内の特定の英数字の存在、オブジェクトの色、およびオブジェクトの陰影のうち、少なくとも1つを含むプレーヤ対話型ウィンドウの1つ以上の特性を表す。
【0008】
別の例において、リモートゲームシステムは、ネットワークを介してクライアント装置およびゲームコントローラに接続可能なサーバを含む。サーバは、ビデオゲームアプリケーションを実行し、ビデオゲームアプリケーションに関連して生成されたビデオストリーム内のプレーヤ対話型ウィンドウのインスタンス化を検出することに応答して、プレーヤ対話型ウィンドウのインスタンス化の後、ビデオゲームアプリケーションが特定のフィルタウィンドウに受信されたゲームコントローラからの1つ以上のプレーヤ入力をプレーヤ対話型ウィンドウに反応するプレーヤ入力として解釈することを防止するように構成される。
【0009】
いくつかの実施形態において、サーバは、プレーヤ対話型ウィンドウのインスタンス化の後に設定されたフィルタウィンドウの期間中に、ビデオゲームアプリケーションがゲームコントローラからの1つ以上のプレーヤ入力をプレーヤ対話型ウィンドウに反応するプレーヤ入力として解釈することを防止するように構成される。
【0010】
いくつかの実施形態において、サーバは、サーバ、クライアント装置およびゲームコントローラを接続するネットワークの少なくとも1つのネットワーク遅延を表す累積遅延を決定し、累積遅延に基づいてフィルタウィンドウの期間を設定するようにさらに構成される。いくつかの実施形態において、サーバは、ビデオストリームのデータをクライアント装置に送信するための第1のネットワーク遅延と、プレーヤ入力データをゲームコントローラからサーバに送信するための第2のネットワーク遅延とのうち、少なくとも1つを決定するようにさらに構成され、累積遅延は、第1のネットワーク遅延および第2のネットワーク遅延のうち、少なくとも1つを表す。
【0011】
いくつかの実施形態において、サーバは、フィルタウィンドウの期間中に、ビデオゲームアプリケーションに提供されるプレーヤ入力ストリームから1つ以上のプレーヤ入力をフィルタリングすることによって、ビデオゲームアプリケーションが1つ以上のプレーヤ入力をプレーヤ対話型ウィンドウに反応するプレーヤ入力として解釈することを防止するように構成される。他の実施形態において、サーバは、1フィルタウィンドウの期間中に、ビデオゲームアプリケーションのプレーヤ対話型ウィンドウを非対話型ウィンドウに一時的に設定することによって、ビデオゲームアプリケーションが1つ以上のプレーヤ入力をプレーヤ対話型ウィンドウに反応するプレーヤ入力として解釈することを防止するように構成される。
【0012】
いくつかの実施形態において、サーバは、プレーヤ対話型ウィンドウに関するアクションを呼び出す1つ以上のプレーヤ入力のサブセットを決定すること、およびビデオゲームアプリケーションが決定されたサブセット中のプレーヤ入力のみをプレーヤ対話型ウィンドウに反応するプレーヤ入力として解釈することを防止することによって、ビデオゲームアプリケーションが1つ以上のプレーヤ入力をプレーヤ対話型ウィンドウに反応するプレーヤ入力として解釈することを防止するように構成される。他の実施形態において、サーバは、フィルタウィンドウ中に、ビデオゲームアプリケーションがサーバに受信された全てのプレーヤ入力をプレーヤ対話型ウィンドウに反応するプレーヤ入力として解釈することを防止することによって、ビデオゲームアプリケーションが1つ以上のプレーヤ入力をプレーヤ対話型ウィンドウに反応するプレーヤ入力として解釈することを防止するように構成される。
【0013】
いくつかの実施形態において、サーバは、ビデオゲームアプリケーションから、プレーヤ対話型ウィンドウがビデオゲームアプリケーションによってインスタンス化されていることを示す通知を受信することによって、プレーヤ対話型ウィンドウのインスタンス化を検出するように構成される。いくつかの実施形態において、サーバは、オブジェクト認識モデルを用いて、ビデオストリームのフレームにプレーヤ対話型ウィンドウが存在することを示すオブジェクトの初期存在を検出することによって、プレーヤ対話型ウィンドウのインスタンス化を検出するように構成される。いくつかの実施形態において、オブジェクト認識モデルは、フレームの特定の領域内のオブジェクトの位置、オブジェクトのサイズまたは寸法、オブジェクトの形状、オブジェクト内の特定の英数字の存在、オブジェクトの色、およびオブジェクトの陰影のうち、少なくとも1つを含むプレーヤ対話型ウィンドウの1つ以上の特性を表す。
【0014】
いくつかの実施形態において、サーバは、プレーヤ反応時間を決定するようにさらに構成され、累積遅延は、当該プレーヤ反応時間をさらに表す。いくつかの実施形態において、システムは、ゲームコントローラおよびクライアント装置をさらに含む。
【0015】
一般的に、本解決策は、特に、1つ以上の広域パケット交換ネットワークを介してプレーヤのディスプレイおよびゲームコントローラに接続されるゲームサーバを採用するリモートまたは「クラウド」ゲームシステムに関する。このようにリモート接続されているため、ゲームサーバ上で実行するビデオゲームアプリケーションが、プレーヤ対話型ウィンドウをレンダリングされたビデオストリームの特定のフレームにインスタンス化する時間と、同じフレームをプレーヤのリモートディスプレイに表示する時間との間に、かなり長い遅延が生じる。同様に、プレーヤがゲームコントローラ上のボタンを操作する時間と、ビデオゲームアプリケーションがそのボタン操作を表すデータまたは他の信号を受信する時間との間に、同じく比較的長い遅延が生じる。この累積遅延は、しばしば、通常のゲームプレイ(すなわち、プレーヤ対話型ウィンドウが存在していないゲームプレイ)中にプレーヤによるボタン操作が、ビデオゲームアプリケーションによって、既にインスタンス化されているが、そのインスタンス化がプレーヤによって認識されていないプレーヤ対話型ウィンドウに反応するプレーヤ入力として誤って解釈される可能性がある。このことは、いくつかの望ましくない形で現れる可能性がある。例えば、プレーヤがプレーヤ対話型ウィンドウに気付く前に、プレーヤ入力が、プレーヤ対話型ウィンドウに関連するアクションを呼び出し、呼び出されたアクションを反映するようにゲームプレイを修正するものとして解釈される可能性がある。別の例として、この遅延によって、プレーヤがチュートリアルウィンドウに気付く前に、プレーヤ入力が、チュートリアルウィンドウを閉じるアクションを呼び出すものとして解釈される(したがって、プレーヤからチュートリアルウィンドウの内容をレビューする機会を奪う)可能性がある。
【0016】
本解決策は、特に、プレーヤ対話型ウィンドウのインスタンス化を検出した後、遅延認識(latency-aware)プレーヤ入力フィルタリングを使用することによって、通常のゲームプレイ(すなわち、プレーヤ対話型ウィンドウが存在しない場合のゲームプレイ)中のプレーヤ入力が、クラウドゲームシステム内のプレーヤ対話型ウィンドウに反応するプレーヤ入力として意図せずに解釈されることを軽減するためのシステムおよび技術に関する。少なくとも1つの実施形態において、ゲームサーバは、ゲームサーバ上で実行されているビデオゲームアプリケーションによって、プレーヤ対話型ウィンドウのインスタンス化を検出する。プレーヤ対話型ウィンドウは、ビデオゲームアプリケーションがプレーヤ対話型ウィンドウをインスタンス化していることを示す明示的な通知によって、例えばアプリケーションプログラマインターフェイス(API)を介して提出された信号によって検出されてもよく、または推論によって、例えばビデオゲームアプリケーションの実行を容易にするソフトウェアプラットフォームが、オブジェクト認識モデルを使用して、プレーヤ対話型ウィンドウである可能性が高いフレーム内のオブジェクトの存在を検出することによって検出されてもよい。プレーヤ対話型ウィンドウのインスタンス化を検出したことに応答して、ゲームサーバは、プレーヤ対話型ウィンドウのインスタンス化を検出した後の特定の期間において、プレーヤ入力をフィルタリングするためのフィルタウィンドウを実装する。これによって、フィルタリングされたプレーヤ入力がプレーヤ対話型ウィンドウに反応するプレーヤ入力として解釈されることを防止することができる。少なくとも1つの実施形態において、フィルタウィンドウの期間は、クラウドゲームシステムによって示された現在の累積遅延に依存する。この現在の累積遅延は、ゲームサーバとディスプレイとの間のネットワーク経路の検出または推定された遅延、検出または推定されたプレーヤ応答時間、検出または推定されたデータ処理遅延のうち、1つ以上の和を含むことができる。
【0017】
いくつかの実施形態において、ビデオゲームアプリケーションは、フィルタリングウィンドウを直接に使用する。一例として、ビデオゲームアプリケーションは、ビデオゲームアプリケーションのプレーヤ対話型ウィンドウのインスタンス化の後、フィルタリングウィンドウの期間中に、インスタンス化されたプレーヤ対話型ウィンドウを非対話型ウィンドウとして扱うプログラムコードを含むことができる。したがって、ビデオゲームアプリケーションによって受信されたプレーヤ入力は、ビデオゲームアプリケーションによって実行されるアクションを呼び出さない。他の実施形態において、ビデオゲームアプリケーションの実行を容易にするプラットフォームソフトウェアは、プレーヤ対話型ウィンドウのインスタンス化の検出後にこのフィルタリングウィンドウを使用する。ビデオゲームアプリケーションは、フィルタリングウィンドウの期間中に、プレーヤ入力(または関連する任意のプレーヤ入力)が受信されたことを完全に認識していない。ゲームシステムがインスタンス化されたプレーヤ対話型ウィンドウに関連するゲームコントローラのボタンを分かる場合、フィルタリングウィンドウを使用して、これらのボタンの操作に関連するプレーヤ入力をフィルタリングすることができる。一例として、インスタンス化されたチュートリアルウィンドウに関して監視されている唯一のプレーヤ対話が、チュートリアルウィンドウを閉じるためのゲームコントローラ上のAボタンの押下である場合、Aボタンの操作に対応するプレーヤ入力をフィルタリングすると共に、ゲームコントローラの他のボタンの操作に対応するプレーヤ入力が、フィルタリングされることなく、ビデオゲームアプリケーションに渡されることを可能にするようにフィルタリングウィンドウを制限することができる。他の例において、プレーヤ対話型ウィンドウに関連するボタンが未知である場合、ゲームコントローラの任意のボタンの操作を表す全てのプレーヤ入力が、フィルタリングウィンドウによってフィルタリングされる。
【0018】
フィルタリングウィンドウが終了すると、ゲームサーバは、プレーヤ対話型ウィンドウのインスタンス化の検出に応答して、プレーヤ入力のフィルタリングを中止する。したがって、その後、ゲームコントローラのプレーヤの操作からゲームサーバに受信された全てのプレーヤ入力が、フィルタリングされることなく、ビデオゲームアプリケーションに渡されることを許可される。代替的には、ゲームサーバは、プレーヤ入力のフィルタリングを実行するように、ビデオゲームアプリケーションに指示することができる。クラウドゲームシステムは、プレーヤ対話型ウィンドウのインスタンス化の検出後に、フィルタリングウィンドウを使用することによって、プレーヤによって提供された関連するプレーヤ入力が通常のゲームプレイではなくプレーヤ対話型ウィンドウに反応する対話として解釈されることなく、インスタンス化されたプレーヤ対話型ウィンドウを含む少なくとも1つ以上の初期レンダリングフレームをプレーヤのディスプレイに送信し、プレーヤのディスプレイ上で表示し、プレーヤによって認識されるための充分な時間を提供することができる。
【0019】
当業者は、添付の図面を参照することによって、本開示をよりよく理解し、その多数の特徴および利点を分かるであろう。異なる図面において、同じ参照符号を用いて、類似または同一の要素を表す。
【図面の簡単な説明】
【0020】
【
図1】いくつかの実施形態に従って、遅延認識(latency-aware)対話遅延を採用するクラウドゲームシステムを示すブロック図である。
【
図2】いくつかの実施形態に従って、
図1のクラウドゲームシステムのゲームサーバを示すブロック図である。
【
図3】いくつかの実施形態に従って、
図1および2のクラウドゲームシステムにおいて遅延認識プレーヤ入力をフィルタリングするための方法を示すフロー図である。
【
図4】いくつかの実施形態に従って、
図3の方法の例示的な動作を示す図である。
【発明を実施するための形態】
【0021】
詳細な説明
図1は、少なくとも1つの実施形態に従って、プレーヤ対話型ウィンドウとの意図しないプレーヤ対話を減らすために、遅延認識(latency-aware)対話遅延を採用するクラウドゲームシステム100を示す。クラウドゲームシステム100は、1つ以上のパケット交換ネットワーク108を介してクライアント装置106に接続されたゲームサーバ104を含むデータセンタ102を備える。ゲームサーバ104は、ビデオゲームソフトウェアアプリケーション110(以下、「ビデオゲーム110」と称する)を実行することによって、一連のビデオフレームのリアルタイムレンダリングをもたらすように動作する。ゲームサーバ104は、一連のビデオフレームをエンコードまたはフォーマットして、クライアント装置106に送信されるビデオストリーム112に入れる。クライアント装置106は、ビデオストリーム112を受信し、ビデオストリーム112中のエンコードされたビデオフレームをデコードし、デコードされたビデオフレームを順次に表示することによって、レンダリングされたグラフィカルコンテンツのビデオ表示をプレーヤに提供するように動作する。ゲームサーバ104は、ビデオゲーム110を実行することによって、オーディオコンテンツを生成し、クライアント装置106に提供する。クライアント装置106は、同様の方法でオーディオコンテンツをプレーヤに出力する。
【0022】
クライアント装置106は、ネットワーク108に接続され、ネットワーク108を介してゲームサーバ104から送信されたビデオデータおよびオーディオデータを受信するためのネットワークインターフェイス(図示せず)と、送信されたビデオストリーム112のビデオフレームをデコードおよび表示し、対応するオーディオコンテンツを出力するための計算リソース、記憶リソースおよび表示リソース(図示せず)とを含む。クライアント装置106は、例えば、デスクトップコンピュータ、ノートブックコンピュータ、タブレットコンピュータ、コンピュータ機能付き携帯電話(すなわち、「スマートフォン」)、コンピュータ機能付きテレビ(すなわち、「スマートテレビ」)などを含むことができる。いくつかの実施形態において、ゲームサーバ104上で実行されるビデオゲーム110からのビデオおよびオーディオコンテンツの処理および表示は、クライアント装置106上で実行され、(
図1ではグラフィカルユーザインターフェイス(GUI)114として示される)ソフトウェアアプリケーションによって促進される。このソフトウェアアプリケーションは、例えば、クラウドゲーム専用ソフトウェアアプリケーションを含むことができる。他の実施形態において、ゲームサーバ104は、より一般的なソフトウェアアプリケーションを利用し、このソフトウェアアプリケーションとの互換性を有するように、ビデオストリーム112およびオーディオストリーム(図示せず)をフォーマットおよび送信する。例えば、一実施形態において、クライアント装置106は、ハイパーテキストマークアップ言語(HTML)フォーマットを利用するウェブブラウザを利用して、ビデオストリーム112によって表されるビデオコンテンツの表示および関連するオーディオストリームによって表されるオーディオコンテンツの出力を行い、ゲームサーバ104は、HTMLフォーマットとの互換性を有するフォーマット、例えばmp4またはMOVフォーマットでビデオストリーム112を提供し、ウェブブラウザを介して表示する。
【0023】
対話を行うために、ビデオゲーム110は、プレーヤ入力を利用して、当該プレーヤとのゲームセッションのゲームプレイ体験を少なくとも部分的に管理する。このプレーヤ入力は、ゲームコントローラ116を介して少なくとも部分的に受信される。ゲームコントローラ116は、1つ以上のユーザ操作可能なコンポーネント118を含み、1つ以上のユーザ操作可能なコンポーネント118は、プレーヤの操作に応答して、ゲームコントローラ116の処理コンポーネントまたはゲームコントローラ116に関連する処理コンポーネントを形成し、対応するプレーヤフィードバックデータを生成し、パケット交換ネットワーク108を介して、生成されたプレーヤフィードバックデータをプレーヤ入力ストリーム120の一部としてゲームサーバ104に送信する。ゲームコントローラ116は、
図1では「ゲームパッド」または「ジョイスティック」を有するものとして示されているが、様々なのプレーヤ入力装置、例えば、ゲームパッド、ジョイスティック、キーボード、マウス、タッチパッド、トラックボール、ステアリングホイールまたはヨーク、ペダル、ダンスパッド、模造銃、光学式モーショントラッカ、慣性センサ、光/レーザ源および検出器のいずれかまたはその組み合わせを含むことができる。したがって、ユーザ操作可能なコンポーネント118は、ボタン、パドル、キー、回転検出器、対応するモーションを検出するためのモーション検出器、圧力センサ、タッチセンサ、光センサ、マイクロフォンまたは他のオーディオセンサなどを含むことができる。参照を容易にするためおよび一般的な会話使用のために、本明細書において、ユーザ操作可能なコンポーネント118は、一般的に「ボタン118」またはより一般的には「ボタン」と呼ばれ、ボタンの「押下」は、ゲームコントローラ116に対応するプレーヤ入力データを生成および送信させるように、ユーザ操作可能なコンポーネント118を操作することとして理解される。すなわち、ボタンの押下の言及は、プレーヤが文言通りに物理的なボタンを押すことに限定されるべきではなく、むしろ、プレーヤが任意の種類のユーザ操作可能なコンポーネント118を操作して、対応する入力を生成することを指すと理解されるべきである。例えば、プレーヤが光学式モーショントラッカの見える所に特定のモーションを行うことおよびプレーヤが特定の単語をマイクに発話することは、ゲームコントローラ116の「ボタン118の押下」を構成する。
【0024】
いくつかの実施形態において、ゲームコントローラ116は、クライアント装置106に連結される。これによって、プレーヤ入力データは、クライアント装置106を介してパケット交換ネットワーク108に送信される。一例として、ゲームコントローラ116は、有線または無線でクライアント装置106に接続されてもよい。これによって、ゲームコントローラ116によって出力される全てのデータは、クライアント装置106とパケット交換ネットワーク108との間のネットワークインターフェイスを通ってルーティングされる。他の実施形態において、ゲームコントローラ116は、パケット交換ネットワーク108を介して、ゲームサーバ104に接続される別個の独立したネットワーク接続を有する。例えば、クラウドゲームシステム100は、クライアント装置106およびゲームコントローラ116に対してローカルであり、ネットワーク108に接続された無線ローカルエリアネットワーク(WLAN)アクセスポイント(図示せず)を採用することができる。クライアント装置106およびゲームコントローラ116の各々は、WLANアクセスポイントに接続する別々の無線接続を確立して、ネットワーク108およびWLANアクセスポイントを介して、ゲームサーバ104と別々に通信する。
【0025】
ゲームサーバ104が1つ以上のネットワーク108を介してクライアント装置106に接続されているため、ゲームサーバ104は、クライアント装置106に対して「リモート」である。したがって、ビデオゲーム110がビデオフレームをレンダリングする時間と、クライアント装置106がレンダリングされたビデオフレームを表すデータを受信し、表示できる時間との間の遅延が比較的に長くなる。同様に、ゲームサーバ104がゲームコントローラ116に対して「リモート」であるため、プレーヤがゲームコントローラ116上のボタン118を押す時間と、ビデオゲームソフトウェアアプリケーション110がそのボタンの押しを表すプレーヤ入力データを最終的に受信した時間との間の遅延も比較的に長くなる。これらの2つの遅延と、ラウドゲームシステム100のゲームサーバ104およびクライアント装置106のプレーヤ反応時間および処理遅延などの様々な他の遅延との組み合わせ(本明細書ではその和を「累積遅延」と呼ぶ)は、上記の課題を引き起こす。具体的には、通常のゲームプレイ中に提供されるプレーヤ入力は、ビデオゲーム110がプレーヤ対話型ウィンドウ(以下、「PIW」と略す)、例えば
図1に示すPIW122をインスタンス化する時間と同時にまたは少し後に生成される。インスタンス化されたPIW122を含む第1のフレームを送信および表示するときの遅延と、プレーヤ入力を表すプレーヤ入力データをゲームコントローラ116からゲームサーバ104に送信するときの遅延とによって、プレーヤ入力をPIW122との対話として誤って解釈してしまう可能性がある。
【0026】
したがって、少なくとも1つの実施形態において、ゲームサーバ104は、遅延認識プレーヤ入力フィルタ124を含み、遅延認識プレーヤ入力フィルタ124は、ビデオゲーム110によるPIW122のインスタンス化を検出した後のフィルタウィンドウ中に、プレーヤ入力ストリーム120からのプレーヤ入力がビデオゲーム110に到達しないようにまたはPIW122との対話としてビデオゲーム110に作用しないように、プレーヤ入力をフィルタリングするように動作する。フィルタウィンドウの期間は、クラウドゲームシステム100によって現在に示されている累積遅延の推定または他の決定に依存しており、一般的には、累積遅延の大部分または全てを軽減するのに充分な期間であるが、プレーヤが意図したPIW122との対話であるプレーヤ入力を意図せずにフィルタリングする可能性の増加を引き起こすほど長くならないように選択される。このフィルタリングプロセスは、
図2~4を参照して以下でより詳細に説明される。
【0027】
図2は、本開示のいくつかの実施形態に従って、ゲームサーバ104の一般的なハードウェア構成200およびソフトウェア構成202を示す。ハードウェア構成200に示すように、ゲームサーバ104は、1つ以上のプロセッサ、例えば、1つ以上の中央処理装置(CPU)204、1つ以上のグラフィック処理装置(GPU)206、1つ以上の特定用途向け集積回路(ASIC)(図示せず)を含む。また、ハードウェア構成200は、ネットワーク108に接続されたネットワークインターフェイス208、1つ以上の入力/出力(I/O)装置210(例えば、キーボード、マウス、またはディスプレイ)、1つ以上の大容量記憶装置212(例えば、ハードドライブ、光ディスクドライブ、またはネットワーク接続記憶装置)を含む。さらに、ハードウェア構成200は、1つ以上のプロセッサによってアクセス可能な少なくとも1つのランダムアクセスメモリ(RAM)または他のシステムメモリ214を含む。システムメモリ214は、本明細書に記載された様々な動作を実行するように、1つ以上のプロセッサを操作するための実行可能な命令を表すプログラムコードを含む1つ以上のソフトウェアアプリケーションを記憶する。これらのソフトウェアアプリケーションは、前述したビデオゲーム110、および1つ以上のソフトウェアアプリケーションセット(まとめてプラットフォームソフトウェア216と称する)を含む。
【0028】
概要として、プラットフォームソフトウェア216は、ゲームサーバ104上のビデオゲーム110の実行を容易にするように動作する。いくつかの実施形態において、ビデオゲーム110のゲーム開発者は、ゲームサーバによって実行されるようにビデオゲーム110を特別に構成する。この場合、プラットフォームソフトウェア216は、ハードウェア構成200とビデオゲーム110との間のより透過的な対話(transparent interaction)を提供するアプリケーションプログラミングインターフェイス(API)および他の「フック」を提供する。他の実施形態において、ビデオゲーム110は、特定のローカルハードウェアプラットフォームに対して、例えば、パーソナルコンピュータ(PC)プラットフォームまたはゲームコンソールプラットフォームに対して開発される。この場合、プラットフォームソフトウェア216は、ビデオゲーム110と対応するローカルハードウェアプラットフォームとの間の典型的なインターフェイスをエミュレートするため、ゲームサーバ104の実際の基礎的なハードウェア構成200をビデオゲーム110に対して透過的でないものにする。プラットフォームソフトウェア216およびビデオゲーム110との対話の例示的な構成は、ソフトウェア構成202によって示される。
【0029】
示されたソフトウェア構成202において、プラットフォームソフトウェア216は、オペレーティングシステム(OS)218と、ゲームサーバモジュール220と、メディアサーバモジュール222と、エンコーダモジュール224と、プレーヤ対話モジュール226と、PIW検出モジュール228と、入力フィルタモジュール230と、遅延監視モジュール232と、当技術分野で知られているクラウドゲームの実行をサポートするための他の様々なモジュールとを含む。OS218は、ゲームサーバ104の全体的な動作を管理し、ハードウェアコンポーネントとより高レベルソフトウェアレイヤとの間のインターフェイスとして機能するように動作する。ゲームサーバモジュール220は、ビデオゲーム110に関連するサーバ側機能、例えば、ゲームセッションの設定、セッション状態データおよび他のゲーム関連データの記憶、ゲームプレイ入力の処理、およびゲームプレイ入力に応じたゲームプレイ出力のレンダリングを提供するように動作する。メディアサーバモジュール222は、メディアストリーミングサイトをホストし、オンラインゲームセッションに関連する同時補助または補足メディアストリームを受信し、ビデオゲーム110の実行中にサポートされているゲームセッションとの同時表示を行うために、同時メディアストリーム(例えば、
図1のビデオストリーム112)をクライアント装置106に提供するように動作する。エンコーダモジュール224は、クライアント装置106に送信されるメディアストリームをエンコードするように動作する。エンコーダモジュール224は、ゲームサーバ104のプロセッサリソースによって実行されるソフトウェアモジュールとして図示されているが、他の実施形態において、全体的または部分的に、ASICなどのハードコード回路またはプログラム可能論理集積回路として実装されてもよい。プレーヤ対話モジュール226は、プレーヤ入力ストリーム120からプレーヤ入力データを抽出し、適切なフォーマットでプレーヤ入力データをプレーヤ入力としてビデオゲーム110に提示するように動作する。一例として、プラットフォームソフトウェア216がPC、ゲームコンソールまたは他のローカルゲーム環境をエミュレートする実装形態において、プレーヤ対話モジュール226は、ビデオゲーム110の1つ以上のインスタンスへの入力が、ゲームサーバ104に対してリモートであり、ネットワーク108を介して接続されたゲームコントローラ116からのプレーヤ入力ではなく、各インスタンスのローカルゲームコントローラからのプレーヤ入力であるように、ビデオゲーム110の1つ以上のインスタンスへの入力をエミュレートするように動作することができる。
【0030】
PIW検出モジュール228、遅延監視モジュール232、および入力フィルタモジュール230は、遅延認識プレーヤ入力フィルタ124(
図1)を実装するように共に動作する。遅延監視モジュール232は、現在のネットワーク条件、プロセッサの負荷条件およびプレーヤ対話のうちの1つ以上を監視することによって、レンダリングされたフレーム内のPIWのインスタンス化とクライアント装置106のディスプレイ上でレンダリングされたフレームの表示との間の遅延と、ゲームコントローラ116のプレーヤ操作とゲームサーバ104(より具体的には、プレーヤ対話モジュール226)上で対応するプレーヤ入力データの受信との間の遅延とに寄与する様々な遅延を決定し、これらの遅延の一部または全ての合計を表す現在の累積遅延値234を決定するように動作する。PIW検出モジュール228は、ビデオゲーム110の実行を監視することによって、PIW検出モジュール228によってレンダリングされたビデオストリーム内のPIWのインスタンス化を検出し、その検出に応答して、レジスタまたは他の記憶場所に書き込まれた値の形にしたPIWインスタンス化信号236を入力フィルタモジュール230に発行し、割込みまたは例外をトリガするように動作する。入力フィルタモジュール230は、PIWが既にインスタンス化されたことを示すPIWインスタンス化信号23に応答して、遅延監視モジュール232によって提供された現在の累積遅延値234に基づく期間中に、入力フィルタリングウィンドウを実装するように動作する。入力フィルタリングウィンドウの間に、入力フィルタモジュール230は、プレーヤ対話モジュール226によって提供されたプレーヤ入力の一部または全てをフィルタリングするように動作する。これによって、これらのプレーヤ入力がビデオゲーム110に作用することを防止し、フレーム内のPIWのインスタンス化とクライアント装置106上でそのフレームの表示との間にプレーヤ入力を提供する可能性を軽減する。したがって、ビデオゲーム110は、意図された通常のゲームプレイへの入力をPIWに関連するプレーヤ入力として解釈しない。
【0031】
図示された実施形態において、PIW検出モジュール228と入力フィルタモジュール230の両方は、プラットフォームソフトウェア216に、すなわち、ビデオゲーム110の「外部」に実装される。このような実施形態において、PIW検出モジュール228および入力フィルタモジュール230は、ビデオゲーム110とプラットフォームソフトウェア216との間のインターフェイスとして設けられた1つ以上のAPIの一部として、またはそれに関連するものとして実装されてもよい。一例として、ソフトウェア構成202は、ビデオゲーム110によって使用されるディスプレイAPI238を利用して、GPU206によって実行されるフレームレンダリングコールおよび他の命令、並びにこのようなフレームレンダリング命令に関連するメタデータを提供することができる。PIW検出モジュール228は、ディスプレイAPI238を介して、データおよび制御フローを監視することによって、PIWのインスタンス化を検出することができる。別の例として、ソフトウェア構成202は、プレーヤ入力API240を利用して、プレーヤ入力ストリーム120に受信されたプレーヤ入力をビデオゲーム110に提供することを促進することができる。入力フィルタモジュール230は、プレーヤ入力API240の一部として実装されてもよく、またはプレーヤ入力API240に接続されてもよい。他の実施形態において、PIW検出モジュール228および入力フィルタモジュール230の一方または両方は、ビデオゲーム110自体の一部として実装されてもよい。例えば、現在の累積遅延値234は、ビデオゲーム110に提供されてもよく、ビデオゲーム110自体は、PIWのインスタンス化を検出し、それに応答して、対応する入力フィルタリングウィンドウに対してPIWを非対話式にするか、またはそうでなければ、PIWのインスタンス化の後、現在の累積遅延値234に基づいて指定された期間中に、プレーヤ入力API240を介してプラットフォームソフトウェア216から受信されたプレーヤ入力の一部または全てを無視する。
【0032】
図3は、いくつかの実施形態に従って、プラットフォームソフトウェア216およびビデオゲーム110の動作、より詳しくは、遅延監視モジュール232、PIW検出モジュール228、および入力フィルタモジュール230の動作をより詳細に説明する方法300を示す。方法300は、ゲームサーバ104上で同時に動作する2つの別個のサブプロセス、すなわち、累積遅延監視サブプロセス302と、遅延認識プレーヤ入力選択的フィルタリングサブプロセス304とを実装する。まず、累積遅延監視サブプロセス302を説明する。このサブプロセスは、現在の累積遅延値234の初期値を決定し、条件が変化する場合、現在の累積遅延値234を経時的に且つ周期的に更新する。前述したように、累積遅延値234は、PIWがビデオゲーム110によってレンダリングされたフレームに初めてインスタンス化された時間と、ゲームサーバ104がプレーヤからのPIWに関連するプレーヤ入力を初めて受信する時間との間の正味期間または合計期間を反映するクラウドゲームシステムの様々な遅延の合計を表す。この期間に寄与する遅延は、ゲームサーバ104内の第1のフレームのエンコード処理および他の処理、ネットワーク108を介してPIWを含む第1のフレームをゲームサーバ104からクライアント装置106に送信することに関連する遅延、クライアント装置106上で第1のフレームのデコードおよび他の処理、クライアント装置106のディスプレイ上で第1のフレームのスキャンアウトおよび表示、PIWの表示を検出するときのプレーヤ反応時間およびそれに応答してゲームコントローラ116のボタンを押下する最も早い時機、ネットワーク108を介してボタンの押下を表すプレーヤ入力データをゲームコントローラ116からゲームサーバ104に送信するための遅延、プレーヤ入力データの処理およびビデオゲーム110への送信を含む。以下において、処理遅延は、伝送遅延およびプレーヤ反応時間に比べて最小である、またはこれらの特定の遅延の合計を表す固定または比例マージンを使用して具体化することができると仮定する。しかしながら、他の実施形態において、遅延監視モジュール232は、以下で説明される他の遅延監視動作と共に、リアルタイムでこれらの遅延を推定または検出することができる。
【0033】
ブロック306において、遅延監視モジュール232は、ビデオゲーム110と対話するプレーヤの反応時間を表すプレーヤ反応時間値を決定する。このプレーヤ反応時間値は、観察された特定のプレーヤの特性に基づいて推定されてもよい。一例として、遅延監視モジュール232は、ビデオストリーム112内のビデオコンテンツに示された特定のイベントを監視し、受信したプレーヤ入力に基づいて(以下で説明するように、ネットワーク遅延を考慮して)プレーヤの反応時間を測定することができる。代替的には、遅延監視モジュール232は、全てのゲームプレイに対して、特にビデオゲーム110によって提供されたゲームプレイに対して一般的である固定または標準のプレーヤ反応時間(例えば、全ての一人称シューティング(FPS)ゲームの標準プレーヤ反応時間)、または特に実行されているビデオゲーム110の特定のタイトルに対して一般的である固定または標準のプレーヤ反応時間を推定することができる。このプレーヤ反応時間値は、プラットフォームソフトウェア216の構成情報に記憶されてもよく、またはビデオゲームタイトルに対して特有である場合、ビデオゲーム110の初期化中にビデオゲーム110の構成データまたはメタデータとして提供されてもよい。
【0034】
ブロック308において、遅延監視モジュール232は、インスタンス化/対話遅延に寄与するネットワーク遅延を決定する。上述したように、ネットワーク遅延は、パケット交換ネットワークを介してゲームサーバからクライアント装置106にレンダリングされたフレームを送信するときのダウンストリーム遅延と、ネットワーク108を介してゲームコントローラ116からゲームサーバ104にプレーヤ入力データを送信するときのアップストリーム遅延とを含む。これらの遅延は、「トレーサ」機能を使用してパス遅延を測定すること、ラウンドトリップタイム(RTT)測定技術を使用してアップストリームおよびダウンストリーム遅延の合計を測定すること、最初の1バイトを受信するまでの時間(TTFB:Time to First Byte)遅延測定技術を使用してアップストリーム遅延およびダウンストリーム遅延を別々に測定することなど、様々な既知のまたは専用のネットワーク遅延測定技術のいずれかを用いて決定されてもよい。
【0035】
ブロック310において、遅延監視モジュール232は、プレーヤ反応時間値、アップストリームネットワーク遅延およびダウンストリームネットワーク遅延の合計に基づいて、現在の累積遅延値234を決定する。一例として、プレーヤの固定反応時間が300msであり、測定されたアップストリームネットワーク遅延が60msであり、および測定されたダウンストリームネットワーク遅延が40msである場合、現在の累積遅延値234は、これらの3つの値の合計、すなわち、400msとして決定されてもよい。他の実施形態において、クライアント装置106およびゲームサーバ104の処理遅延などの追加の遅延に相当する安全幅を提供するために、現在の累積遅延値234に達すように、この合計に固定値(例えば、20ms)または比例値(例えば、10%)を追加してもよい。図示の実施形態において、プレーヤ反応時間が比較的に固定であると仮定されているため、プレーヤ反応時間値は、初期化時に決定され、更新またはリフレッシュされる必要がない。しかしながら、多くのネットワークにおいて、輻輳、使用、および利用可能なルーティング経路の変化がネットワーク遅延の変化をもたらす可能性があるため、現在のネットワーク状態を反映するように、ブロック308および310のプロセスを周期的に反復することによって、現在の累積遅延値234を更新する。
【0036】
累積遅延監視サブプロセス302と並行して、遅延認識プレーヤ入力選択的フィルタリングサブプロセス304は、クラウドゲームシステム100内のゲームサーバ104およびクライアント装置106とゲームコントローラ116との間の遠隔関係によって導入された遅延によって、意図せずにプレーヤ入力をPIWとの対話として解釈してしまう可能性を軽減するように動作する。したがって、サブプロセス304の反復中、PIW検出モジュール228は、ブロック312において、ビデオゲーム110によって規定されるフレームレンダリングプロセスを監視することによって、PIWの初期インスタンス化を検出する。いくつかの実施形態において、PIW検出モジュール228は、ビデオゲーム110による明示的な通知プロセス313を介して、PIWのインスタンス化を検出する。この手法において、ビデオゲーム110は、PIWが利用される時間を特定し、APIまたは他のインターフェイスを介して、例えばPIW検出モジュール228がプラットフォームソフトウェア216の一部として実装される場合にディスプレイAPI238を介して、またはPIW検出モジュール228自体がビデオゲーム110に実装される場合に内部シグナリングを介して、PIWのインスタンス化を示す通知をPIW検出モジュール228に送信するように構成される。理解すべきことは、この手法において、ゲーム開発者は、プラットフォームソフトウェア216と明示的に協働するために、ビデオゲームタイトルを開発または修正する必要があることである。
【0037】
しかしながら、上述したように、いくつかの実装形態において、プラットフォームソフトウェア216は、ローカルゲームプラットフォームをエミュレートする。これによって、ビデオゲーム110は、クラウドゲームサーバ上でではなく、PC、ゲームコンソールまたは他のローカルプラットフォーム上で実行されているかのように動作する。このような状況において、PIW検出モジュール228は、PIWオブジェクト認識プロセス315を用いて、暗黙的な検出を介して、PIWのインスタンス化を検出するように動作する。PIWオブジェクト認識プロセス315において、オブジェクト認識モデルを用いて、レンダリングされているビデオストリーム112のフレーム内の疑わしいPIWの可能な第1のインスタンスを検出する。一例として、フレームN-1においてPIWを示すオブジェクトを検出していないが、次のフレームNにおいてPIWを示すオブジェクトを検出した場合、PIW検出モジュール228は、フレームNに関連するPIWインスタンス化信号236をアサートすることができる。PIWを表すオブジェクトは、様々なパラメータおよび特性のいずれかに基づいて検出されてもよい。一例として、一般的に、所定のビデオゲームタイトルまたはビデオゲームの種類に対して生成されたPIWは、通常、特定のセットまたは範囲のサイズまたは寸法、特定の形状(例えば、細長い長方形)、特定の視覚的特徴、例えば、色、陰影、丸い角、英数字または他のテキスト、特定のテキストまたは他の英数字(例えば、「YES」、「NO」、「OK」)、ボタンオブジェクト、フレームの特定の位置または領域を含む。したがって、PIW検出モジュール228によって採用されるオブジェクト検出モデルを用いて、このようなパラメータおよび特性を探索し、フレームのコンポーネントと一致するパラメータおよび特性の数および強度に基づいて信頼値を決定し、信頼値の閾値化を介してインスタンス化されたPIWを含むフレームを特定する。
【0038】
ビデオストリーム112内のPIWの可能なインスタンス化が検出されると、PIW検出モジュール228は、PIWインスタンス化信号236を提供する。これに応答して、入力フィルタリングモジュール230は、ブロック314において、ゲームサーバ104上でプレーヤ入力をフィルタリングするためのフィルタウィンドウをトリガする。上記で説明したように、一般的に、フィルタウィンドウの期間は、プレーヤがクライアント装置106上で初期フレームまたはPIWを含むフレームの表示を介してインスタンス化PIWを認識する前にトリガされた殆どの可能なプレーヤ入力を防止するように、クラウドゲームシステム100の様々な遅延に基づいて設定される。この期間が、遅延監視モジュール232によって累積遅延監視サブプロセス302の最新の反復から決定された現在の累積遅延値234によって示されるため、フィルタウィンドウをトリガすることは、例えば、累積遅延値234に基づいてフィルタタイマ(例えば、カウントダウンタイマ)を設定および開始することを含むことができる。その後、フィルタウィンドウがアクティブである間、入力フィルタモジュール230は、ブロック316において、プレーヤ入力を表すプレーヤ入力データを検出するために、ゲームサーバ104に受信されたゲームコントローラ116からのプレーヤ入力ストリーム120を監視する。プレーヤ入力を検出した場合、入力フィルタモジュール230は、ブロック318において、フィルタをプレーヤ入力に適用する。いくつかの実施形態において、ブロック319によって示されたように、このフィルタは、ゲームコントローラ116からの全てのプレーヤ入力をビデオゲーム110に提供すること、またはビデオゲーム110がゲームコントローラ116からの全てのプレーヤ入力をインスタンス化PIWとのプレーヤ対話として解釈することを防止する全フィルタまたは完全フィルタである。例えば、ビデオゲーム110からの、PIWの次のインスタンス化を示す明示的な通知、またはオブジェクトの認識によるPIWインスタンス化の検出は、充分な確実度で、PIWに関連するボタン118(すなわち、PIWに関して何らかのアクションを開始するプレーヤ入力を提供するボタン)を示さない場合がある。この場合、全フィルタリングは、一般的に適切である。
【0039】
しかしながら、他の例において、明示的な通知プロセス313は、ビデオゲーム11がPIWと対話するものであると考えられるプレーヤ入力を示す明示的な通知を通知することを含んでもよく、PIWのインスタンス化の暗黙的な検出は、ゲームコントローラ116の特定サブセットのボタンに関連する特定セットのオプションを検出することを含んでもよい。この場合、入力フィルタモジュール230は、代わりに、(ブロック321によって表される)特定の対象のフィルタリング(targeted filtering)を実施することができる。特定の対象のフィルタリングは、フィルタリングウィンドウ中に、PIWの対話に関連するものと特定されたプレーヤ入力のサブセットのみをフィルタリングするが、他のプレーヤ入力をビデオゲーム110に提供することまたは他のプレーヤ入力がビデオゲーム110に作用することを許可する。
【0040】
ブロック320において、入力フィルタモジュール230は、フィルタウィンドウの開始時に作動されたカウントダウンタイムの経過を観測することによって、ブロック314に設定されたフィルタウィンドウの終了を監視する。監視の結果に応答して、入力フィルタモジュール230は、ブロック322において、フィルタウィンドウを終了または不活性化し、プレーヤ入力のフィルタリングを中止する。したがって、その後受信されたプレーヤ入力ストリーム120内の全てのプレーヤ入力は、プラットフォームソフトウェア216またはビデオゲーム110内の別のプロセスによってフィルタリングされることを条件として、ビデオゲーム110に提供されるまたはビデオゲーム110に作用される。
【0041】
図4は、いくつかの実施形態に従って、
図1および2のクラウドゲームシステム100において実行される
図3の方法300の動作の簡単な例示を示す。図示は、3つの異なる時点、すなわち、T=0ms(ビュー401)、T=200ms(ビュー402)、およびT=700ms(ビュー403)におけるクラウドゲームシステム100の状態を簡略的に示している。また、この例において、プレーヤ反応時間が300msであると仮定され、アップストリーム遅延およびダウンストリーム遅延が各々50msであると測定され、10%の許容誤差が適用される。したがって、現在の累積遅延値234で示された現在の累積遅延は、440ms(=(300+50+50)×1.10)である。
【0042】
ビュー401に示すように、時間T=0msにおいて、ビデオストリーム112のフレーム411は、現在、クライアント装置106上で表示されており、フレームNは、既にビデオゲーム110によってレンダリングされ、ネットワーク108を介してクライアント装置106に送信され、表示のためにクライアント装置106によって処理される。また、この時点では、ビデオゲーム110は、まだ送信されていない後続のフレーム412をレンダリングしている。さらに、時間T=0msにおいて、プレーヤは、「X」ボタンを押すことによってゲームコントローラ116と対話し、これに応答して、ゲームコントローラ116は、ゲームサーバ104に送信されるプレーヤ入力データ404を生成する。
【0043】
ビュー402に示すように、時間T=200msにおいて、フレーム412は、現在、クライアント装置106上で表示されており、プレーヤ入力データ405によって示されたXボタンの押下は、ゲームプレイに何らかの効果を与えるように、ビデオゲーム110によって受信され、実行されている。さらに、この時点では、ビデオゲーム110は、PIW421の第1のインスタンスを含むフレーム413をレンダリングした。この例において、PIW421は、ゲームコントローラ116上の「Y」ボタンを押してウィンドウを閉じるようにプレーヤを催促するダイアログまたはチュートリアルウィンドウである。同時に、プレーヤは、(例えば、時間T=0msで表示されたフレーム411を含み得る)以前に表示されたフレームによって表されるゲームプレイに反応し、ゲームコントローラ116のボタンYを押した。その結果、Yボタンの押下を表すプレーヤ入力データ405は、時間T=200msで送信される。
【0044】
ビュー402に示すように、PIW421の第1のインスタンスを含むフレーム413は、まだプレーヤに表示されておらず、クライアント装置106に到達していない。よって、プレーヤは、PIW421が時間T=200msで終了することを知らない。したがって、プレーヤは、クライアント装置106上で表示されたフレーム412、フレーム411および以前のフレームによって示された通常のゲームプレイに応答して、ゲームコントローラ116のYボタンを押した。しかしながら、ビデオゲーム110の視点から、PIW421が既にインスタンス化されており、PIW421を非対話型ウィンドウに透明にまたは不透明に簡単にレンダリングするメカニズムがない場合、ゲームサーバ104およびビデオゲーム110は、プレーヤ入力データ405によって示されたYボタンの押下を、PIW421を閉じる(すなわち、ビデオストリーム112の任意のさらに他のフレームからフィルタリングする)ことを示すプレーヤ対話として誤って解釈する可能性がある。
【0045】
したがって、通常のゲームプレイ入力をPIW対話入力として意図せずに解釈することを軽減するために、フィルタウィンドウは、例えば、フレーム413内のPIW421を示す視覚オブジェクトを検出したことによってまたはビデオゲーム110からの、PIW421が既にインスタンス化されている明示的な通知によってPIW421のインスタンス化を検出したことに応答して、440msの期間(例えば、フィルタウィンドウがT=200msにあると仮定する場合、T=200msから640msまでの時間)にわたって実装される。この例において、入力フィルタモジュール230は、フィルタウィンドウを用いて、全てのプレーヤ入力をフィルタリングする。したがって、フィルタリングブロック408に示すように、プレーヤ入力データ405によって表されるYボタンの押下は、ゲームサーバ104によって受信および処理された後、プレーヤ入力ストリーム120からフィルタリングされる。このYボタンの押下のフィルタリングは、例えば、Yボタンの押下を示す入力を(例えば、プラットフォームソフトウェア216でフィルタリングすることによって)ビデオゲーム110に到達することを防止すること、またはYボタンの押下をPIW421との対話として解釈しないようにビデオゲーム110に指示する外部命令または内部命令によって防止することを含むことができる。
【0046】
ビュー403に示すように、時間T=700msにおいて、フレーム413は、既にクライアント装置106に表示され、(フレーム413の後のある時点でレンダリングされ、PIW421を含む)フレーム414は、現在クライアント装置106に表示されており、ビデオゲーム110は、PIW421の別のインスタンスを含む後続のフレーム415をレンダリングしている。同時に、プレーヤは、フレーム414および(フレーム413を含む)以前のフレームに表示されたPIW421に反応して、ゲームコントローラ116のボタンYを押して、PIW421によって示されるダイアログ/チュートリアルボックスを閉じる。したがって、Yボタンの押下を示すプレーヤ入力データ406は、時間T=700msで送信される。
【0047】
また、フィルタウィンドウは、この時点で終了する。したがって、後続の時間でゲームサーバ104に到達するプレーヤ入力データ406は、ビデオゲーム110に提供されるまたはビデオゲーム110に作用される。この場合、Yボタンの押下は、PIW421との対話、より詳しくは、ビデオゲーム110にPIW421を閉じさせるプレーヤ対話として正しく解釈される。したがって、PIW421は、フレーム415の後にレンダリングされるフレームに表示されない。
【0048】
いくつかの実施形態において、上述した技術のいくつかの態様は、ソフトウェアを実行する処理システムの1つ以上のプロセッサによって実装されてもよい。ソフトウェアは、非一時的コンピュータ可読記憶媒体上に記憶されたまたはそうでなければ有形に具現化された1つ以上のセットの実行可能命令を含む。ソフトウェアは、1つ以上のプロセッサによって実行されると、上記で説明した技術の1つ以上の態様を実行するように1つ以上のプロセッサを操作する命令と特定のデータとを含むことができる。非一時的コンピュータ可読記憶媒体は、例えば、磁気または光ディスク記憶装置、フラッシュメモリなどのソリッドステート記憶装置、キャッシュ、ランダムアクセスメモリ(RAM)、または他の不揮発性メモリ装置を含むことができる。非一時的コンピュータ可読記憶媒体上に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、または1つ以上のプロセッサによって解釈されるまたは実行可能である他のフォーマットの命令であってもよい。
【0049】
コンピュータ可読記憶媒体は、命令および/またはデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な任意の記憶媒体または記憶媒体の組み合わせを含んでもよい。このような記憶媒体は、光学媒体(例えば、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、Blu-ray(登録商標)ディスク)、磁気媒体(例えば、フロッピー(登録商標)ディスク、磁気テープ、または磁気ハードドライブ)、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)またはキャッシュ)、不揮発性メモリ(例えば、読み出し専用メモリ(ROM)またはフラッシュメモリ)、または微小電気機械システム(MEMS)ベースの記憶媒体を含むことができるが、これらに限定されない。コンピュータ可読記憶媒体は、コンピューティングシステムに埋め込まれるもの(例えば、システムRAMまたはROM)であってもよく、コンピューティングシステムに固定されるもの(例えば、磁気ハードドライブ)であってもよく、コンピューティングシステムに取り外し可能に取り付けられもの(例えば、光ディスクまたはユニバーサルシリアルバス(USB)ベースのフラッシュメモリ)であってもよく、または有線ネットワークもしくは無線ネットワークを介してコンピュータシステムに結合されるもの(例えば、ネットワークアクセス可能ストレージ(NAS))であってもよい。
【0050】
なお、全般的な説明において上述した動作または要素の全てが必要とされるわけではない。特定の動作または装置の一部は、必要とされなくてもよい。上述したものに加えて、1つ以上のさらに他の動作を実行してもよく、または1つ以上の要素を含んでもよい。さらに、動作を列挙する順序は、必ずしもこれらの動作を実行する順序ではない。また、特定の実施形態を参照して概念を説明している。しかしながら、当業者は、以下の特許請求の範囲に記載される本開示の範囲から逸脱することなく、様々な修正および変更を行うことができることを理解する。したがって、明細書および図面は、限定的なものではなく、例示的なもので見なされるべきであり、全ての修正は、本開示の範囲内に含まれることが意図される。
【0051】
特定の実施形態を参照して、上記で利益、他の利点、および問題に対する解決策を説明している。しかしながら、利益、利点、問題に対する解決策、および任意の利益、利点、または解決策を生じさせ得るまたはより顕著にさせ得る任意の特徴は、いずれかの請求項または全ての請求項の重要な特徴、必要な特徴、または本質的な特徴として解釈されるべきではない。さらに、上記で開示された特定の実施形態は、例証にすぎない。開示された主題は、本明細書の教示の利益を有する当業者に明白であり、異なるが同等の方法で修正されてもよく、実行されてもよい。以下の特許請求の範囲に記載されるもの以外に、本明細書に示された構造または設計の詳細への限定は、意図されていない。したがって、上記で開示された特定の実施形態は、変更または修正されてもよく、全ての変形例は、開示された主題の範囲に含まれると見なされることが明らかである。したがって、本明細書で求められる保護は、以下の特許請求の範囲に記載される。