(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-29
(45)【発行日】2024-12-09
(54)【発明の名称】ユーザ入力の機械学習予測を使用したレイテンシ補正
(51)【国際特許分類】
A63F 13/358 20140101AFI20241202BHJP
A63F 13/211 20140101ALI20241202BHJP
A63F 13/212 20140101ALI20241202BHJP
A63F 13/33 20140101ALI20241202BHJP
A63F 13/55 20140101ALI20241202BHJP
A63F 13/67 20140101ALI20241202BHJP
A63F 13/79 20140101ALI20241202BHJP
【FI】
A63F13/358
A63F13/211
A63F13/212
A63F13/33
A63F13/55
A63F13/67
A63F13/79
(21)【出願番号】P 2022529084
(86)(22)【出願日】2020-11-13
(86)【国際出願番号】 US2020060504
(87)【国際公開番号】W WO2021101811
(87)【国際公開日】2021-05-27
【審査請求日】2023-11-09
(32)【優先日】2019-11-19
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】517160525
【氏名又は名称】バルブ コーポレーション
(74)【代理人】
【識別番号】110001737
【氏名又は名称】弁理士法人スズエ国際特許事務所
(72)【発明者】
【氏名】ブリースデール-シェパード、エスティン
(72)【発明者】
【氏名】ダルトン、スコット
(72)【発明者】
【氏名】ケスラー、リチャード
【審査官】鈴木 崇雅
(56)【参考文献】
【文献】特開2010-022492(JP,A)
【文献】特開2013-084175(JP,A)
【文献】特開2015-212920(JP,A)
【文献】国際公開第2019/075132(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
A63F 13/00-98
(57)【特許請求の範囲】
【請求項1】
方法であって、
コンピューティングシステムによって、ビデオゲームのプレイヤーに関連付けられたセンサデータを受信すること
であって、前記センサデータは、前記プレイヤーに関連付けられたゲームコントローラのジャイロスコープ、前記ゲームコントローラの加速度計、前記ゲームコントローラの圧力センサ、前記プレイヤー上の又は近接するバイオフィードバックセンサ、の内の少なくとも1つによって生成されたものである、受信することと、
前記センサデータの前記受信からある期間内の、前記コンピューティングシステムによる対応するゲーム制御データの受信を引き起こす、前
記ゲームコントローラへのユーザ入力を、
訓練された機械学習モデルへの入力として前記センサデータを提供することと、
前記訓練された機械学習モデルからの出力としてスコアを生成することであって、前記スコアが、ユーザ入力のタイプが前記ゲームコントローラに提供される確率を示す、生成することと、によって、前記コンピューティングシステムによって予測することと、
前記スコアを生成することの後であって、前記ユーザ入力のタイプに対応するゲーム制御データを積極的に生成する前に、レイテンシを補正するためにそれぞれのゲーム制御データがプレイヤーの代わりに生成されるユーザ入力のタイプを示すデータにアクセスすることと、
前記ユーザ入力のタイプが前記ユーザ入力のタイプの内の1つであると判定することと、
前記ユーザ入力のタイプが前記ユーザ入力のタイプの内の1つであると判定することに応答して、前記プレイヤーに関連付けられたクライアントマシンからの実際のゲーム制御データを受信する前に、前記コンピューティングシステムによって、前記スコアに少なくとも部分的に基づいて前
記ゲーム制御データを
積極的に生成することと、
前記ビデオゲームへの入力として前記ゲーム制御データを提供することと、
前記ゲーム制御データに少なくとも部分的に基づいて、前記ビデオゲームからの出力として、ビデオゲームデータを受信することと、
前記コンピューティングシステムによって受信される前記クライアントマシンからの実際の前記ゲーム制御データを待つことなく、前記コンピューティングシステムによって、ディスプレイ上の前記ビデオゲームデータの提示を引き起こすことと、を含む、方法。
【請求項2】
前記ユーザ入力のタイプが、
前記ゲームコントローラの特定の指操作制御部の作動、
前記ゲームコントローラの特定の方向への移動、
オブジェクトが前記ゲームコントローラの特定の部分の上をホバリングするか、もしくは前記特定の部分に接触すること、または
前記オブジェクトが、力の特定の量で、前記ゲームコントローラの一部分を押すこと、のうちの少なくとも1つを含む、請求項1に記載の方法。
【請求項3】
前記予測する前に、前記コンピューティングシステムによって、前記ビデオゲームからゲーム状態データを受信することと、
前記訓練された機械学習モデルへの前記入力として前記センサデータを前記提供することに加えて、前記ゲーム状態データを、前記訓練された機械学習モデルへの追加の入力として提供することと、をさらに含み、
前記スコアが、前記訓練された機械学習モデルへの前記追加の入力として提供された前記ゲーム状態データに少なくとも部分的に基づいて生成される、請求項1に記載の方法。
【請求項4】
前記センサデータの前記受信の前に、
前記コンピューティングシステムによって、前記ビデオゲームの過去のセッションまたは異なるビデオゲームの過去のセッション中に生成された履歴センサデータにアクセスすることと、
前記コンピューティングシステムによって、前記履歴センサデータが受信されてから
第2の期間内に生成された履歴ゲーム制御データにアクセスすることと、
前記履歴センサデータに、前記
第2の期間内に受信された前記履歴ゲーム制御データに対応する、ユーザ入力の複数のタイプのうちの1つを示すラベルをラベル付けすることと、
訓練データとして前記履歴センサデータを使用して機械学習モデルを訓練して、前記訓練された機械学習モデルを取得することと、をさらに含む、請求項1に記載の方法。
【請求項5】
前記ある期間が
、1ミリ秒
~200ミリ秒の範囲内である、請求項1に記載の方法。
【請求項6】
前記クライアントマシンは第1のクライアントマシンであり、前記センサデータが、
前記第1のクライアントマシンからコンピュータネットワークを介して受信され、前記ディスプレイ上の前記ビデオゲームデータの前記提示を前記引き起こすことが、前記コンピュータネットワークを介して、前記ビデオゲームデータを第2のクライアントマシンに送信することを含み、前記方法が、
測定されたレイテンシ値を取得するために、前記コンピュータネットワークのレイテンシを測定することと、
前記測定されたレイテンシ値に少なくとも部分的に基づいて、前記ある期間を決定することと、
前記ある期間に少なくとも部分的に基づいて、複数の訓練された機械学習モデルから前記訓練された機械学習モデルを選択することと、をさらに含む、請求項1に記載の方法。
【請求項7】
方法であって、
コンピューティングシステムによって、ビデオゲーム
のプレイヤーに関連付けられたセンサデータを受信すること
であって、前記センサデータは、前記プレイヤーに関連付けられたゲームコントローラのジャイロスコープ、前記ゲームコントローラの加速度計、前記ゲームコントローラの圧力センサ、前記プレイヤー上の又は近接するバイオフィードバックセンサ、の内の少なくとも1つによって生成されたものである、受信することと、
訓練された機械学習モデルへの入力として、前記
センサデータを提供することと、
前記
センサデータの前記受信からある期間内に、ユーザ入力のタイプが前
記ゲームコントローラに提供され、対応するゲーム制御データが前記コンピューティングシステムによって受信される確率に関連するスコアを、前記訓練された機械学習モデルからの出力として生成することと、
前記スコアを生成することの後であって、前記ユーザ入力のタイプに対応するゲーム制御データを積極的に生成する前に、レイテンシを補正するためにそれぞれのゲーム制御データがプレイヤーの代わりに生成されるユーザ入力のタイプを示すデータにアクセスすることと、
前記ユーザ入力のタイプが前記ユーザ入力のタイプの内の1つであると判定することと、
前記ユーザ入力のタイプが前記ユーザ入力のタイプの内の1つであると判定することに応答して、前記プレイヤーに関連付けられたクライアントマシンからの実際のゲーム制御データを受信する前に、前記コンピューティングシステムによって、前
記ゲーム制御データを生成することと、
前記ビデオゲームへの入力として前記ゲーム制御データを提供することと、
前記ビデオゲームからの出力としてビデオゲームデータを受信することと、
前記コンピューティングシステムによって受信される前記クライアントマシンからの実際の前記ゲーム制御データを待つことなく、前記コンピューティングシステムによって、ディスプレイ上の前記ビデオゲームデータの提示を引き起こすことと、を含む、方法。
【請求項8】
前記ユーザ入力のタイプが、
前記ゲームコントローラの特定の指操作制御部の作動、
前記ゲームコントローラの特定の方向への移動、
オブジェクトが前記ゲームコントローラの特定の部分の上をホバリングするか、もしくは前記特定の部分に接触すること、または
前記オブジェクトが、力の特定の量で、前記ゲームコントローラの一部分を押すこと、のうちの少なくとも1つを含む、請求項
7に記載の方法。
【請求項9】
前記
センサデータの前記受信の前に、
前記コンピューティングシステムによって、
前記ビデオゲームの過去のセッションまたは異なるビデオゲームの過去のセッション中に生成された履歴
センサデータにアクセスすることと、
前記コンピューティングシステムによって、
前記履歴センサデータが受信されてから第2の期間内に生成された履歴ゲーム制御データにアクセスすることと、
前記履歴
センサデータに、前記
第2の期間内に受信された前記履歴ゲーム制御データに対応する、ユーザ入力の複数のタイプのうちの1つを示すラベルをラベル付けすることと、
訓練データとして前記履歴
センサデータを使用して機械学習モデルを訓練して、前記訓練された機械学習モデルを取得することと、をさらに含む、請求項
7に記載の方法。
【請求項10】
前記コンピューティングシステムによって、前記
ビデオゲームからゲーム状態データを受信することと、
前記訓練された機械学習モデルへの前記入力として前記
センサデータを前記提供することに加えて、前記
ゲーム状態データを、前記訓練された機械学習モデルへの追加の入力として提供することと、をさらに含み、
前記スコアが、前記訓練された機械学習モデルへの前記追加の入力として提供された前記
ゲーム状態データに少なくとも部分的に基づいて生成される、請求項
7に記載の方法。
【請求項11】
前記ゲーム制御データを前記積極的に生成する前に、前記スコアが、前記ユーザ入力のタイプに関連付けられた閾値スコアを満たすと判定することであって、前記閾値スコアが、ユーザ入力の異なるタイプに関連付けられた複数の異なる閾値スコアのうちの1つである、判定すること、をさらに含み、
前記ゲーム制御データを前記
積極的に生成することは、前記スコアが前記閾値スコアを満たすことに少なくとも部分的に基づいている、請求項
7に記載の方法。
【請求項12】
システムであって、
1つ以上のプロセッサと、
コンピュータ実行可能命令を記憶しているメモリと、を備え、前記命令が、前記1つ以上のプロセッサによって実行されるときに、前記システムに、
ビデオゲームのプレイヤーに関連付けられたセンサデータを受信すること
であって、前記センサデータは、前記プレイヤーに関連付けられたゲームコントローラのジャイロスコープ、前記ゲームコントローラの加速度計、前記ゲームコントローラの圧力センサ、前記プレイヤー上の又は近接するバイオフィードバックセンサ、の内の少なくとも1つによって生成されたものである、受信することと、
訓練された機械学習モデルへの入力として、前記センサデータを提供することと、
前記センサデータの前記受信からある期間内に、ユーザ入力のタイプが前
記ゲームコントローラに提供され、対応するゲーム制御データが前記システムによって受信される確率を示すスコアを、前記訓練された機械学習モデルからの出力として生成することと、
前記スコアを生成することの後であって、前記ユーザ入力のタイプに対応するゲーム制御データを積極的に生成する前に、レイテンシを補正するためにそれぞれのゲーム制御データがプレイヤーの代わりに生成されるユーザ入力のタイプを示すデータにアクセスすることと、
前記ユーザ入力のタイプが前記ユーザ入力のタイプの内の1つであると判定することと、
前記ユーザ入力のタイプが前記ユーザ入力のタイプの内の1つであると判定することに応答して、前記プレイヤーに関連付けられたクライアントマシンからの実際のゲーム制御データを受信する前に、ゲーム制御データを
積極的に生成することと、
前記ビデオゲームへの入力として前記ゲーム制御データを提供することと、
前記ビデオゲームからの出力としてビデオゲームデータを受信することと、
前記システムによって受信される前記クライアントマシンからの実際のゲーム制御データを待つことなく、ディスプレイ上の前記ビデオゲームデータの提示を引き起こすことと、を行わせる、システム。
【請求項13】
前記ユーザ入力のタイプが、
ゲームコントローラの特定の指操作制御部の作動、
前記ゲームコントローラの特定の方向への移動、
オブジェクトが前記ゲームコントローラの特定の部分の上をホバリングするか、もしくは前記特定の部分に接触すること、または
前記オブジェクトが、力の特定の量で、前記ゲームコントローラの一部分を押すこと、のうちの少なくとも1つを含む、請求項
12に記載のシステム。
【請求項14】
前記コンピュータ実行可能命令は、前記1つ以上のプロセッサによって実行されると、前記システムに、
前記ゲーム制御データを前記積極的に生成する前に、前記スコアが、前記ユーザ入力のタイプに関連付けられた閾値スコアを満たすと判定することであって、前記閾値スコアが、ユーザ入力の異なるタイプに関連付けられた複数の異なる閾値スコアのうちの1つである、判定すること、をさらに行わせ、
前記積極的に前記ゲーム制御データを生成することは、前記スコアが前記閾値スコアを満たすことに少なくとも部分的に基づいている、請求項
12に記載のシステム。
【請求項15】
前記コンピュータ実行可能命令は、前記1つ以上のプロセッサによって実行されると、前記システムに、
前記センサデータの前記受信から前記ある期間内に、
前記クライアントマシンから実際のゲーム制御データを受信することと、
前記実際のゲーム制御データを前記ゲーム制御データと比較することに少なくとも部分的に基づいて、予測誤差を判定することと、をさらに行わせる、請求項
12に記載のシステム。
【請求項16】
前記コンピュータ実行可能命令は、前記1つ以上のプロセッサによって実行されると、前記システムに、
前記予測誤差を、記録された予測誤差のデータベースに記録することをさらに行わせる、請求項
15に記載のシステム。
【請求項17】
前記ディスプレイ上の前記ビデオゲームデータの提示を引き起こすことは、前記ユーザ入力のタイプに関連付けられた1つのアニメーション、あるいは前記アニメーションに関連付けられた1つのリードインアニメーションの少なくとも1つの提示を引き起こすことを含む、請求項1に記載の方法。
【請求項18】
前記ディスプレイ上の前記ビデオゲームデータの提示を引き起こすことは、前記ユーザ入力のタイプに関連付けられた1つのアニメーション、あるいは前記アニメーションに関連付けられた1つのリードインアニメーションの少なくとも1つの提示を引き起こすことを含む、請求項7に記載の方法。
【請求項19】
前記ディスプレイ上の前記ビデオゲームデータの提示を引き起こすことは、前記ユーザ入力のタイプに関連付けられた1つのアニメーション、あるいは前記アニメーションに関連付けられた1つのリードインアニメーションの少なくとも1つの提示を引き起こすことを含む、請求項12に記載のシステム。
【請求項20】
前記センサデータの受信から前記期間内に、前記クライアントマシンからの実際のゲーム制御データを受信することと、
前記実際のゲーム制御データを前記ゲーム制御データと比較することに少なくとも部分的に基づいて予測誤差を判定することと、を更に含む、請求項7に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、2019年11月19日に出願された「LATENCY COMPENSATION USING MACHINE-LEARNED PREDICTION OF USER INPUT」と題する米国特許出願第16/688,833号に対する優先権を主張するPCT出願であり、これは、その全体が参照により本明細書によって組み込まれる。
【背景技術】
【0002】
広域ネットワーク通信の一定の、またはほぼ一定の可用性と、クライアントマシンおよび無線通信プロトコルの性能の向上とが相まって、プレイヤーが「シンクライアント」を使用してリモートサーバ上で実行しているビデオゲームをプレイするクラウドベースのビデオゲームストリーミングプラットフォームと、家庭内ビデオゲームストリーミングプラットフォームとを含む、ネットワーク化されたビデオゲームプラットフォームの人気が高まっている。ネットワーク化されたビデオゲームプラットフォームの進歩にもかかわらず、様々な要因は依然として、ビデオゲームにおけるプレイヤーアクションとプレイヤー知覚との間にレイテンシを生じさせ得る。例えば、ビデオゲームストリーミングプラットフォームでは、ネットワークの混雑は、プレイヤーのアクションとプレイヤーの知覚との間に顕著な遅延を引き起こす可能性がある。プレイヤーのアクションとプレイヤーの知覚との間のレイテンシに寄与し得る他の要因は、ネットワークのデータ転送速度、利用可能なコンピューティングリソース(例えば、処理リソース、メモリリソース、ディスプレイリソースなど)の帯域幅または容量、それらのコンピューティングリソースの利用、および/またはビデオゲーム自体の複雑さである(例えば、複雑なグラフィックスを有するよりデータ集約的なビデオゲームは、比較的単純なグラフィックスを有するデータ集約的でないビデオゲームよりも多くのレイテンシを経験する傾向がある)。ファーストパーソンシューティングゲームなどのビデオゲームのいくつかのジャンルは、レイテンシに非常に敏感であり、レイテンシが発生するたびにプレイ品質が激しく低下する。
【0003】
デッドレコニングは、ネットワーク化されたビデオゲームプラットフォームで観察されたレイテンシを補正しようとする既存のアプローチの一例である。サーバコンピュータは、デッドレコニングを使用して、プレイヤー制御キャラクタの過去の位置、速度、および/または加速度をある期間にわたって(例えば、過去の200ミリ秒にわたって)決定し、過去のデータを使用して、レイテンシを補正するために、プレイヤー制御キャラクタの将来の位置を予測することができる。しかしながら、デッドレコニングは、将来のプレイヤーのアクションを予測するための比較的洗練されていないアプローチのままであり、しばしば不正確な予測をもたらし、したがって、今日のネットワーク化されたビデオゲームプラットフォームではほとんど使用されない。将来のプレイヤーのアクションを正確に予測するための実行可能なメカニズムがなければ、レイテンシは実用的な方法で補正することができず、多くのビデオゲームのプレイ品質は、レイテンシが生じるたびに劣化し続ける。本明細書で行われる開示は、これらおよび他の考慮事項に関連して提示される。
【図面の簡単な説明】
【0004】
詳細な説明を、添付の図を参照して説明する。図において、参照番号の左端の数字は、参照番号が最初に現れる図を識別する。異なる図における同じ参照番号の使用は、類似または同一の構成要素または特徴を示す。
【0005】
【
図1】機械学習モデルを訓練し、使用して、プレイヤーのビデオゲームコントローラへのユーザ入力を予測し、レイテンシを補正するために対応するゲーム制御データを積極的に生成するように構成されたコンピューティングシステムを含む例示的な環境を示す図である。
【
図2】訓練された機械学習モデルを使用してゲームコントローラへのユーザ入力を予測する目的で、センサデータをとりわけリモートコンピューティングシステムに提供するように構成されたゲームコントローラの例示的な構成要素を示すブロック図である。
【
図3】訓練された機械学習モデルを使用して、ゲームコントローラへのユーザ入力を予測するように構成されたコンピューティングシステムの例示的な構成要素を示すブロック図である。
【
図4】ユーザ入力のタイプがプレイヤーのゲームコントローラに提供される確率を予測するために、機械学習モデルを訓練するための例示的なプロセスのフロー図である。
【
図5】訓練された機械学習モデルを利用して、プレイヤーのゲームコントローラへのユーザ入力を予測し、レイテンシを補正するために、ユーザ入力の機械学習予測を使用して、ゲーム制御データを予め生成するための例示的なプロセスのフロー図である。
【
図6】コンピュータネットワークのレイテンシを測定し、測定されたレイテンシに基づいてゲームコントローラへのユーザ入力を予測するために使用される複数の訓練された機械学習モデルのうちの1つを選択するための例示的なプロセスのフロー図である。
【
図7】予測誤差を判定するために、ユーザ入力の機械学習された予測に基づいて積極的に生成されたゲーム制御データと実際のゲーム制御データを比較し、モデルの性能を検証する目的で予測誤差を記録するための例示的なプロセスのフロー図である。
【発明を実施するための形態】
【0006】
本明細書では、とりわけ、訓練された機械学習モデルを使用してビデオゲームコントローラへのユーザ入力を予測し、プレイヤーアクションとプレイヤーの知覚との間のレイテンシを補正するために、対応するゲーム制御データを積極的に生成するための技術、デバイス、およびシステムが説明される。開示される技術は、少なくとも部分的に、ユーザコミュニティがコンピューティングシステムからビデオゲームにアクセスするように構成されたクライアントマシンを使用してビデオゲームをプレイするためのビデオゲームサービスを提供するリモートコンピューティングシステムによって実装され得る。これらのクライアントマシンは、リモートコンピューティングシステムから受信(例えば、ダウンロード、ストリーミングなど)されたビデオゲームを実行し、かつ/またはそのコンテンツを出力するように構成されたクライアントアプリケーションを個別にインストールし得る。このビデオゲームプラットフォームにより、コミュニティの登録ユーザは、「プレイヤー」としてビデオゲームをプレイすることが可能になる。例えば、プレイヤーはクライアントアプリケーションを読み込み、登録ユーザアカウントでログインし、所望のビデオゲームを選択し、クライアントアプリケーションを介してクライアントマシン上で実行することができるビデオゲームをプレイし、またはビデオゲームデータをクライアントマシン上で出力するためにクライアントマシンにストリーミングするようにリモートコンピューティングシステムにおいて実行することができる。
【0007】
前述のユーザがこのビデオゲームプラットフォームにアクセスして使用するときはいつでも、データはリモートコンピューティングシステムによって収集され得、このデータは、リモートコンピューティングシステムによって維持され得る。例えば、ビデオゲームの過去のセッション中に発生したビデオゲームのゲーム状態(例えば、プレイヤーの動き、ゲームマップ内の位置、キャラクタクラス、武器など)を含むゲーム状態データは、リモートコンピューティングシステムによって収集および維持され得る。追加的に、または代替的に、ゲームコントローラによって生成され、過去のビデオゲームセッション中にクライアントマシンから受信されたセンサデータを収集し、リモートコンピューティングシステムによって維持することができる。今日のゲームコントローラには、ますます多くのセンサ(例えば、ジャイロスコープ、加速度計、タッチセンサ、圧力センサなど)が装備されているため、本明細書で説明されるように、これらのセンサによって生成される結果として生じるセンサデータを、レイテンシ補正の目的のためにそのようなゲームコントローラへのユーザ入力を予測する目的で利用することができる。例示のために、ユーザがビデオゲームプラットフォームを介してビデオゲームをプレイするときはいつでも、ユーザは、ビデオゲームの態様を制御するために、ゲームコントローラを使用し得る。所与のゲームコントローラは、他の可能なセンサの中で、ジャイロスコープ、加速度計、および/またはタッチセンサなどの1つ以上のセンサを含み得るが、これらに限定されない。タッチセンサ(例えば、静電容量パッド)は、デバイスの表面の下または表面上、および/または指操作制御部内または指操作制御部上に配置されてもよい。このタッチセンサは、表面または指操作制御部への指の近接性を検出するように構成されてもよく、それに応じて、タッチセンサは、タッチセンサへの指の近接性を示すセンサデータを生成してもよい。別の例として、ゲームコントローラのハウジングに取り付けられたジャイロスコープおよび/または加速度計は、異なる方向におけるゲームコントローラの運動(例えば、並進、回転、および/または傾斜運動などによる移動)を検出してもよく、それに応じて、ジャイロスコープおよび/または加速度計は、この運動の特性を示すセンサデータを生成してもよい。一般に、センサデータは、ビデオゲームの態様を制御するためなど(例えば、プレイヤー制御キャラクタを制御するため、ディスプレイ上に見えるものを指示する仮想カメラを回転させるためなど)の、様々な目的に利用することができる。このようにしてセンサデータがゲーム制御データとして使用される場合、センサデータは、場合によっては、ビデオゲームの態様を制御するために使用される前に、変更(例えば、フィルタリング/減衰、増幅など)されてもよい。しかしながら、本明細書に記載の技法およびシステムは、ゲームコントローラの1つ以上のセンサによって生成された、生の、未フィルタリングのセンサデータを(例えば、関連付けられたクライアントマシンを介してセンサデータを送信することによって)リモートコンピューティングシステムに送信するように構成されたゲームコントローラを対象とする。この生のセンサデータは、ビデオゲームの態様を制御するために処理されることになるゲーム制御データ(例えば、ボタン押下、ジョイスティックの偏向などによって生成されたデータ、および変更されたセンサデータ)とともに送信されてもよい。
【0008】
時間の経過とともに、プレイヤーコミュニティによってプレイされたビデオゲームの過去のセッションに結び付けられた履歴データの膨大な集合が、リモートコンピューティングシステムで利用可能であり得ることが理解されよう。次いで、リモートコンピューティングシステムは、訓練データとして履歴データの一部分を使用して、1つ以上の機械学習モデルを訓練することができる。例えば、ゲームコントローラの1つ以上の物理センサによって生成され、ビデオゲームの過去のセッション中にリモートコンピューティングシステムによって受信された履歴センサデータは、訓練データとして使用することができる。別の例として、ビデオゲームの過去のセッション中に発生したビデオゲームのゲーム状態を含む、履歴ゲーム状態データは、単独で、またはセンサデータと組み合わせて、訓練データとして使用することができる。センサデータおよび/またはゲーム状態データは、特徴のセットで表すことができ、センサデータが受信されてからおよび/またはゲーム状態が発生してからある期間内の、対応するゲーム制御データを受信させた複数のユーザ入力のタイプのうちの1つを示すようにラベル付けすることができる。
【0009】
このデータで訓練された機械学習モデルは、特定のタイプのユーザ入力がゲームコントローラに提供される確率を示すスコアを生成することなどによって、プレイヤーのゲームコントローラに提供されるユーザ入力のタイプを予測することができる。これらの機械学習スコアは、クライアントマシンから実際のゲーム制御データを受信する前に、ゲーム制御データをビデオゲームに入力することができるように、ユーザ入力の予測されるタイプに対応するリアルタイムのゲーム制御データを積極的に生成するために使用可能であり、これは、実際のゲーム制御データがクライアントマシンから受信されるのをコンピューティングシステムが待たないため、レイテンシを補正する。上述したように、ビデオゲームプラットフォームは、例えば、ビデオゲームがコンピュータネットワークを介して複数のプレイヤーによってマルチプレイヤーモードでプレイされるなど、ビデオゲームにおけるプレイヤーのアクションとプレイヤー知覚との間のレイテンシにさらされ得る。例えば、第1のプレイヤーがビデオゲームのキャラクタを制御するためにゲームコントローラにユーザ入力を提供する第1の時間と、リモートコンピューティングシステムが第1のプレイヤーのクライアントマシンから対応するゲーム制御データを受信する第2の時間との間に時間遅延があり得る。この時間遅延(またはレイテンシ)が補正されない場合、第2のプレイヤーのクライアントマシンのディスプレイ上に提示されるプレイヤー制御キャラクタの対応する動きは、ビデオゲームキャラクタを制御する第1のプレイヤーのアクションに対して遅延し得、ビデオゲームのプレイ品質を低下させる可能性がある。プレイヤーのゲームコントローラへのユーザ入力の機械学習された予測を使用したレイテンシ補正のための開示された技術は、デッドレコニングのような既存のアプローチと比較して、将来のプレイヤーのアクションを比較的高い精度で予測することを可能にする。このようにして、リモートコンピューティングシステムは、改善された精度で、リモートコンピューティングシステムが、来るべきユーザ入力に対応する実際のゲーム制御データを受信する前に、プレイヤーによって提供されるユーザ入力のタイプを予測することができる。これは、第2のプレイヤーが、第1のプレイヤーのキャラクタが、第1のプレイヤーがキャラクタを制御する可能性が最も高いことを実行していることを知覚し、リモートコンピューティングシステムが、第1のプレイヤーのアクションに関連する実際のゲーム制御データを第1のプレイヤーのクライアントマシンから受信すらする前に、それを知覚することを可能にし得る。
【0010】
例示的なプロセスでは、コンピューティングシステムは、ビデオゲームがプレイされている間(例えば、マルチプレイヤーモードで)、ビデオゲームのプレイヤーに関連付けられたクライアントマシンからセンサデータを受信し得る。センサデータは、ゲームコントローラの1つ以上の物理センサ(例えば、生ジャイロスコープデータ、生加速度計データ、および/または生容量センサデータなど)によって生成された生センサデータを含み得る。コンピューティングシステムは、センサデータを受信してからある期間内の、プレイヤーのクライアントマシンからの対応するゲーム制御データの受信を引き起こさせる、ゲームコントローラへのユーザ入力を予測するために、訓練された機械学習モデルへの入力としてセンサデータを提供し得る。訓練された機械学習モデルは、センサデータを処理し、スコアを出力として生成するように構成され、スコアは、ユーザ入力のタイプがゲームコントローラに提供される確率を示す。機械学習スコアに少なくとも部分的に基づいて、コンピューティングシステムは、プレイヤーに代わって、ユーザ入力のタイプに対応するゲーム制御データを生成し得、ビデオゲームプラットフォームのレイテンシを補正するために、ビデオゲームから出力されるビデオゲームデータをクライアントマシン(例えば、ビデオゲームの第2のプレイヤーの第2のクライアントマシン)に送信することができるように、積極的に生成されたゲーム制御データを入力としてビデオゲームに提供し得る。
【0011】
別の例示的なプロセスにおいて、コンピューティングシステムは、マルチプレイヤーモードで実行中のビデオゲームからゲーム状態データを受信し得る。ゲーム状態データは、ビデオゲームのゲーム状態(例えば、プレイヤーの動き、ゲームマップ内の位置、キャラクタクラス、武器など)を含み得る。コンピューティングシステムは、訓練された機械学習モデルへの入力としてゲーム状態データを提供して、ゲーム状態データを受信してからある期間内の、プレイヤーのクライアントマシンからの対応するゲーム制御データの受信を引き起こす、所与のプレイヤーのゲームコントローラへのユーザ入力を予測し得る。訓練された機械学習モデルは、ゲーム状態データを処理し、スコアを出力として生成するように構成され、スコアは、ユーザ入力のタイプがゲームコントローラに提供される確率を示す。機械学習スコアに少なくとも部分的に基づいて、コンピューティングシステムは、プレイヤーに代わって、ユーザ入力のタイプに対応するゲーム制御データを生成し得、ビデオゲームプラットフォームのレイテンシを補正するために、ビデオゲームから出力されるビデオゲームデータをクライアントマシン(例えば、ビデオゲームの第2のプレイヤーの第2のクライアントマシン)に送信することができるように、積極的に生成されたゲーム制御データを入力としてビデオゲームに提供し得る。いくつかの実施形態では、センサデータとゲーム状態データの両方は、レイテンシ補正の目的のためにゲームコントローラへのユーザ入力を予測するために、訓練された機械学習モデルへの入力として提供され得る。
【0012】
本明細書に記載の技術およびシステムは、ビデオゲームのプレイヤー向けに改善されたゲーム体験を提供し得る。これは、本明細書に記載の技術およびシステムが、ゲームコントローラへのユーザ入力を予測し、それらのコントローラによって生成された実際のゲーム制御データがコンピューティングシステムで受信される時間に先駆けて、対応するゲーム制御データを積極的に生成することができるからである。例えば、本明細書に記載される訓練された機械学習モデルは、プレイヤーがいつ、壁をジャンプし、急に左に曲がるようにビデオゲーム内のキャラクタを制御するためにユーザ入力のタイプを提供しようとしているかを予測することを学習することができる。この予測能力は、マルチプレイヤービデオゲームの複数のプレイヤー間の一貫性が維持されるようにレイテンシを補正するだけでなく、より現実的なビジュアルエクスペリエンスのためにアニメーション強化を提供することを可能にする。例えば、コンピューティングシステムが、プレイヤーが「A」ボタンを作動させて、ビデオゲーム内のキャラクタが壁を飛び越えるように制御しようとしていると予測する場合、このプレイヤー制御キャラクタのアニメーションは、プレイヤー制御キャラクタの重みのシフトおよび/またはキャラクタのしゃがみ動作をジャンプの少し前に描写し得る、キャラクタの「主導的な動き」をレンダリングするために、機械学習された予測に基づいて強化され得る。一方、キャラクタの実際の「ジャンプ」は、システムの予測能力により、「A」ボタンを作動させるプレイヤーと密接に同期して、依然としてレンダリングすることができる。そのようなアニメーション強化およびユーザ入力の機械学習予測なしに、ビデオゲームは、リードインアニメーションなしで、スナッピーで応答性の高いアニメーションを示すフレームを出力し得る(例えば、キャラクタが非現実的な方法で走っている状態から壁を飛び越えるように突然移行する)、またはリードインアニメーションが複数のフレームにわたって示されるが、それは遅く、応答性がない(例えば、ジャンプがボタン押下の時点から顕著な遅延で発生する)。本明細書に記載の技術およびシステムは、ビデオゲーム内のオブジェクトおよびキャラクタのアクションが現実的に見え、プレイヤーによって提供されるユーザ入力に応答し続けるように、目立ったタイムラグなしに、レンダリングアニメーション強化(例えば、リードインアニメーション)によって、「両方の世界の最良のもの」を含むプレイヤーコミュニティにビデオゲームエクスペリエンスを提供することを可能にする。
【0013】
本明細書に提供される多くの例は、リモートコンピューティングシステム上に存在し、実行する訓練された機械学習モデルに関するが、ユーザ入力を予測するために訓練された機械学習モデルを利用するコンピューティングシステムは、ビデオゲームをプレイするユーザとともに配置されたクライアントマシンであり得ることを理解されたい。すなわち、訓練は、リモートコンピューティングシステムにおいて行われ得るが、訓練された機械学習モデルは、(リモートコンピューティングシステム上で訓練された機械学習モデルを実行する代わりに、またはそれに加えて)クライアントマシン自体上で訓練された機械学習モデルの実行のためにクライアントマシンにダウンロードされ得る。これらの実施形態では、クライアントマシンは、共通の機械学習モデルを利用し得、および/または複数のクライアントマシンは、各々異なる機械学習モデルを利用し得る。例えば、ユーザ固有の機械学習モデルは、特定のユーザに固有の履歴データについて訓練され、プレイヤー集団全体から収集された集計データに基づいて機械学習モデルを訓練する代わりに、またはそれに加えて、それらのユーザのクライアントマシンにダウンロードされ得る。
【0014】
機械学習モデルは、訓練データとして利用され得るセンサデータ、ゲーム状態データ、および/またはゲーム制御データ内の複雑な関係を識別することを学習することができるため、本明細書に記載の技術およびシステムは、ゲームコントローラへのユーザ入力を正確に予測することを可能にし、これにより、誤検出率が低くなり、プレイヤーのアクションを誤って予測するインスタンスが少なくなる。本明細書に記載の技法およびシステムはまた、プレイヤーの行動が変化するにつれて、時間の経過とともにプレイヤーのアクションを理解することに機械学習モデルを適合させるために、機械学習モデルは新しいデータを用いて再訓練可能であるため、既存のシステム(例えば、プレイヤーの行動の前方予測にデッドレコニングを使用するシステム)よりもプレイヤーの行動の変動に適合性が高い。さらに、機械学習モデルは、手動で構築されたシステムにおいて合理的に説明できるよりも多くの変数およびより多くの種類のユーザ行動を考慮することができる。本明細書に記載の技法およびシステムはさらに、1つ以上のデバイスが、本明細書に記載の様々な方式で、処理リソース、メモリリソース、ネットワーキングリソースなどに関してリソースを節約することを可能にし得る。
【0015】
図1は、機械学習モデル104を訓練し、使用して、プレイヤーのビデオゲームコントローラ106へのユーザ入力を予測し、レイテンシを補正するために対応するゲーム制御データ108を積極的に生成するように構成されたコンピューティングシステム102を含む例示的な環境100を示す図である。プレイヤー110(本明細書で「ユーザ」110と称されることもある)のコミュニティは、それぞれのクライアントマシン112、およびそれぞれのビデオゲームコントローラ106(本明細書で「ゲームコントローラ」106と称されることもある)に関連付けられ得る。
図1の例では、第1のクライアントマシン112(A)は、第1のプレイヤー110(A)に関連付けられ、第1のプレイヤー110(A)によって利用されるように示され、第2のクライアントマシン112(B)は、第2のプレイヤー110(B)に関連付けられ、第2のプレイヤー110(B)によって利用されるように示される。第1のゲームコントローラ106(A)はまた、第1のプレイヤー110(A)に関連付けられ、第1のプレイヤー110(A)によって利用され、第2のゲームコントローラ106(B)は、第2のプレイヤー110(B)に関連付けられ、第2のプレイヤー110(B)によって利用される。任意の数のプレイヤー110およびクライアントマシン112は、単一のクライアントマシン112を有する単一のプレイヤー110、または2つを超えるクライアントマシン112を有する2つを超えるプレイヤー110などの環境100に実装され得ることを理解されたい。
【0016】
すなわち、
図1に示したクライアントマシン112は、ビデオゲームを実行し、および/または、限定なしに、パーソナルコンピュータ(PC)、デスクトップコンピュータ、ラップトップコンピュータ、携帯電話(例えば、スマートフォン)、タブレットコンピュータ、ポータブルデジタルアシスタント(PDA)、ウェアラブルコンピュータ(例えば、仮想現実(VR)ヘッドセット、拡張現実感(AR)ヘッドセット、スマートグラスなど)、車載(例えば、車内)コンピュータ、テレビ(スマートテレビ)、セットトップボックス(STB)、ゲームコンソール、および/または任意の同様のコンピューティングデバイスを含む、関連付けられたディスプレイ上にグラフィックスをレンダリングするように構成された任意の好適な種類のコンピューティングデバイスとして実装され得る。さらに、クライアントマシン112は、それぞれのプラットフォーム(例えば、ハードウェアおよびソフトウェア)に関して多様であり得る。例えば、
図1に示される2つのクライアントマシン112(A)および112(B)は、処理機能(例えば、中央処理装置(CPU)モデル、グラフィックス処理ユニット(GPU)モデルなど)、グラフィックスドライババージョンなどに関して様々な機能を有する異なる種類のクライアントマシン112を表し得る。
【0017】
クライアントマシン112は、コンピュータネットワーク114を介してリモートコンピューティングシステム102(本明細書では「コンピューティングシステム102」または「リモートシステム102」と短縮される場合もある)と通信し得る。このコンピュータネットワーク114は、インターネット、他のタイプのデータおよび/または音声ネットワーク、有線インフラストラクチャ(例えば、同軸ケーブル、光ファイバケーブルなど)、無線インフラストラクチャ(例えば、無線周波数(RF)、移動通信、衛星など)、および/または他の接続技術を表すか、または含み得るが、これらに限定されない。コンピューティングシステム102は、場合によっては、コンピュータネットワーク114を介して維持およびアクセスされるネットワークアクセス可能なコンピューティングプラットフォームの一部であってもよい。このようなネットワークアクセス可能コンピューティングプラットフォームは、「オンデマンドコンピューティング」、「サービスとしてのソフトウェア(SaaS)」、「プラットフォームコンピューティング」、「ネットワークアクセス可能プラットフォーム」、「クラウドサービス」、「データセンタ」などの用語を使用して言及される場合がある。
【0018】
図1のコンピュータネットワーク114は、いくつかの実施形態では、ローカルエリアネットワーク(LAN)を表し得、これは、「家庭内」ビデオゲームストリーミングシナリオにおける場合であり得ることを理解されたい。このシナリオにおいて、コンピューティングシステム102は、クライアントマシン112の同じ地理的位置に、またはその付近に位置するホストコンピューティングシステムを表し得る。いくつかの実施形態では、コンピュータネットワーク114は、インターネットなどの広域ネットワーク(WAN)を表し得、クライアントマシン112(A)および112(B)は、異なる地理的位置に位置し得る。いくつかの実施形態では、クライアントマシン112は、クライアントマシン112自体上の最小限のデータ処理で(例えば、クライアントマシン112自体上でビデオゲームを実行する必要なく)コンピューティングシステム102におよびコンピューティングシステムからデータを送受信するように構成されたシンクライアントとして実装され得る。シンクライアント実装において、コンピューティングシステム102は、他のデータの中でも、クライアントマシン112からゲーム制御データを受信し得、コンピューティングシステム102は、関連するディスプレイ上で提示するために、ビデオゲームデータ(例えば、画像データおよびオーディオデータのフレーム)をクライアントマシン112に送信し得る。他の実装形態では、クライアントマシン112は、ビデオゲームをローカルにダウンロードし、実行するように構成され得るが、それでも、データは、他のプレイヤーとオンラインマルチプレイヤービデオゲームに関与する目的で、コンピュータネットワーク114を介して送信され得る。さらに、コンピュータネットワーク114は、クライアントマシン112上に実装されているコンピューティングシステム102の機能および構成要素などのいくつかのシナリオにおいて省略されてもよいことが理解されるべきである。これは、ネットワークが関与しない例であっても(例えば、ローカルクライアントマシン112上でビデオゲームをプレイする単一のプレイヤー110)、プレイヤーのアクションとプレイヤーの知覚との間のレイテンシは、これに限定されないが、複雑なグラフィックスを備えたデータ集約型ビデオゲームを実行する比較的低パフォーマンスのクライアントマシン112を含む他の非ネットワーク要因に起因して依然として生じ得るためである。このシナリオでは、ユーザ入力の機械学習予測を利用して、そのようなレイテンシを補正することができる。
【0019】
いくつかの実施形態では、コンピューティングシステム102は、ビデオゲーム(およびそのコンテンツ)をクライアントマシン112に配布(例えば、ダウンロード、ストリーミングなど)するようにビデオゲームサービスを実装するビデオゲームプラットフォームとして機能するか、またはそのビデオゲームプラットフォームへのアクセスを有する。一例では、クライアントマシン112は各々、そのマシン上にクライアントアプリケーションをインストールし得る。インストールされたクライアントアプリケーションは、ビデオゲームクライアント(例えば、ビデオゲームをプレイするためのゲームソフトウェア)であり得る。クライアントアプリケーションがインストールされたクライアントマシン112は、コンピュータネットワーク114を介してコンピューティングシステム102からプログラム(例えば、ビデオゲーム、およびそのコンテンツ)をダウンロード、ストリーミング、あるいは他の方法で受信するように構成され得る。この目的のために、プログラム(例えば、ビデオゲーム)がクライアントマシン112上でのダウンロードおよび実行のために個々に購入できる直接購入モデル、サブスクリプションベースのモデル、プログラムがクライアントマシン102に対してある期間の間レンタルもしくはリースされるか、ストリーミングされるか、または他の方法で利用可能になるコンテンツ配布モデルなど、任意の種類のコンテンツ配布モデルを利用することができる。したがって、個々のクライアントマシン112は、クライアントアプリケーションを読み込むことによって実行可能である1つ以上のインストールされたビデオゲームを含み得るか、またはクライアントアプリケーションを読み込むことによって再生可能である、リモートコンピューティングシステム102で実行される1つ以上のビデオゲームにアクセスし得る。
【0020】
クライアントマシン112を使用して、ビデオゲームサービスに登録し、その後、それにログインすることができる。ユーザ110は、この目的のためにユーザアカウントを作成し得、登録ユーザアカウントに結び付けられた資格情報(例えば、パスワード、PIN、生体認証IDなど)を指定/設定し得る。複数のユーザ110が(例えば、登録ユーザアカウントを用いて自分のユーザ/プレイヤープロファイルにアクセスすること、それぞれのゲームコントローラ106を使用してそれぞれのクライアントマシン112上でビデオゲームをプレイすることなどによって)ビデオゲームプラットフォームと相互作用すると、クライアントマシン112は、リモートコンピューティングシステム102にデータを送信する。所与のクライアントマシン112のために、リモートコンピューティングシステム102に送信されるデータは、ゲーム制御データ116およびセンサデータ118、ならびに、ビデオゲームデータ(例えば、リモートシステムにアップロードされたゲームパフォーマンス統計)、ソーシャルネットワーキングメッセージおよび関連アクティビティ、クライアントマシン112上でプレイされるビデオゲームの識別子(ID)などを含み得るが、これらに限定されない。このデータの少なくとも一部は、ビデオゲームセッション中にリアルタイム(もしくは実質的にリアルタイム)にストリーミングされ、データのサブセットは、定義された間隔でリモートシステム102に送信され、および/またはイベント(例えば、ビデオゲームの終了)に応答してアップロードされることが可能である。
【0021】
図1に示されるように、ゲームコントローラ106(A)は、本明細書で説明されるように、ビデオゲームプラットフォームと対話するために第1のプレイヤー110(A)によって使用され得る。例えば、第1のプレイヤー110(A)は、ゲームコントローラ106(A)を、その上でビデオゲームクライアント(例えば、ビデオゲームをプレイするためのゲームソフトウェア)を実行しているクライアントマシン112(A)とペアリングしてもよい。ゲームコントローラ106(A)がクライアントマシン112(A)とペアになり、それと通信することが可能になると(例えば、クライアントマシン112(A)へ/クライアントマシン112(A)からデータを送信/受信することによって)、ゲームコントローラ106(A)は、ユーザアカウントにゲームコントローラ106(A)を登録し、リモートコンピューティングシステム102から利用可能なビデオゲームにアクセスし、およびゲームコントローラ106(A)を使用してビデオゲームをプレイするなど、本明細書に記載のビデオゲームプラットフォームと相互作用するために使用することができる。
【0022】
ゲームコントローラ106は、いくつかの実施形態では、プレイヤー110の一方または両方の手によって保持されるように設計され、ユーザの110の手の指および/または親指によって操作される1つ以上の指操作制御部で構成された、
図1に示されるゲームコントローラ106(A)および106(B)などのハンドヘルドゲームコントローラを表し得る。いくつかの実施形態では、ゲームコントローラ106は、三次元(3D)空間でゲームコントローラ106の移動(例えば、パンニング、回転、傾斜など)によって操作するようにさらに構成され得る。ゲームコントローラ106は、携帯電話(例えば、スマートフォン)、タブレットコンピュータ、ポータブルデジタルアシスタント(PDA)、ウェアラブルコンピュータ(例えば、スマートウォッチ、ヘッドマウントディスプレイ(HMD)など)、ポータブルゲームプレイヤー、および/または任意の同様の電子デバイスなどの、任意の他の好適な種類のコントローラデバイスを表し得ることを理解されたい。「ハンドヘルド」という用語は、本明細書でゲームコントローラ106を説明するために使用されるとき、デバイスがユーザ110の手によって保持されるか、またはユーザの110の体の別の部分によって保持されるかにかかわらず、ユーザ110によって保持されるように構成されているデバイス(例えば、この用語が本明細書で使用される際、「ハンドヘルド」デバイスと見なされる手首、腕、脚、腰、頭部などに装着されるウェアラブルデバイス)を意味する。
【0023】
ゲームコントローラ106の1つ以上のセンサは、何らかの方法で、ゲームコントローラ106の物理的状態に関連するセンサデータ118を生成するように構成される。例えば、タッチセンサは、物体(例えば、指)が、タッチセンサを含むゲームコントローラ106の一部分(例えば、方向性パッド(Dパッド)、ジョイスティック、トリガボタン、バンパーボタン、セレクタボタンなど)に接触しているか、またはそれに近いかを示すセンサデータ118を生成し得る。別の例として、圧力センサは、物体がゲームコントローラ106の一部分に押されているかどうか、およびゲームコントローラ106のその部分が物体によって軽くまたは重く押されているかどうかを示すセンサデータ118を生成してもよい。さらに別の例として、動きセンサ(例えば、ジャイロスコープおよび/または加速度計)は、ゲームコントローラ106が、3D空間内の向きおよび/または空間位置で変化したかどうか、および/またはゲームコントローラ106が、急速に、またはゆっくりと移動しているかどうかを示すセンサデータ118を生成してもよい。したがって、ゲームコントローラ106のセンサは、ゲームコントローラ106のこれらおよび他の種類の物理的状態を示すセンサデータ118を生成するように構成される。
【0024】
第1のプレイヤー110(A)がゲームコントローラ106(A)を利用して、例えば、それぞれのクライアントマシン112(A)上でビデオゲーム120をプレイするために、ビデオゲームプラットフォームと相互作用するとき、センサデータ118およびゲーム制御データ116は、ゲームコントローラ106(A)からクライアントマシン112(A)に送信され、クライアントマシン112(A)からリモートコンピューティングシステム102に転送されてもよい。ゲーム制御データ116は、ビデオゲーム120の態様を制御するために使用可能であり、それによって、ビデオゲーム120によって処理され、ビデオゲーム120の次のフレームをどのようにレンダリングするかを決定する。一方、センサデータ118は、ジャイロスコープによって生成された生のデータ、加速度計によって生成された生のデータ、および/またはタッチセンサ(例えば、静電容量性タッチパッド)などによって生成された生のデータなどの生の、未フィルタリングのセンサデータ118を表す。
【0025】
ストリーミング実装形態では、ビデオゲーム120は、リモートコンピューティングシステム102上で実行され得、リモートコンピューティングシステム102は、ビデオゲームデータ122をキャプチャし得、ネットワーク114を介してビデオゲームデータ122をクライアントマシン112に送信し得る。これは、リモートコンピューティングシステム102がビデオゲーム120の状態をキャプチャし、ビデオおよび音声データをビットに符号化し、コンピュータネットワーク114を介してクライアントマシン112に符号化されたビットを送信することを含み得、クライアントマシン112上で実行するアプリケーション(例えば、ビデオゲームクライアント)は、所与のフレームについてクライアントマシン112のディスプレイを介して画像、およびスピーカを介して音声を出力するためにビットを復号化し得る。プレイヤー110は、それぞれのゲームコントローラ106を操作することによって、自分が見ているビデオおよび音声に反応し得る。例えば、プレイヤー110(A)は、ゲームコントローラ106の制御を作動させ(例えば、方向パッド(Dパッド)を押下し、ジョイスティックを偏向させ、トラックパッド上の指をスワイプし、ボタンを押し)得、および/またはゲームコントローラ106を3D空間内で傾けまたは移動させ、ビデオゲーム120の態様を制御し得る。ゲームコントローラ106の動作に応答して、ゲームコントローラ106は、無線アクセスポイントを介して直接的に、コンピュータネットワーク114を介して、またはゲームコントローラ106が関連付けられているクライアントマシン112を介して、リモートコンピューティングシステム102に送信されるゲーム制御データ116を生成し得る。いずれの場合も、ゲーム制御データ116は、ビデオゲーム120の態様を制御するためにリモートコンピューティングシステム102にリアルタイムで送信され得る。例えば、ゲーム制御データ116は、ビデオゲーム120によって処理され、クライアントマシン112のディスプレイ上のシーンによって表される仮想世界内で仮想オブジェクトを移動させることによって、ビデオゲーム120の仮想オブジェクト(例えば、プレイヤー制御キャラクタ)の運動を制御することができる。いくつかの実施形態では、ビデオゲーム120のインスタンスは、それぞれのクライアントマシン112(A)および112(B)上でローカルに実行され得、ビデオゲームデータ122は、所与のクライアントマシン112上でローカルに実行するビデオゲーム120に入力されるゲーム制御データ108および/または116を含み得る。
【0026】
リモートコンピューティングシステム102に送信されたゲーム制御データ116は、フィルタリング/減衰されたセンサデータ118および/または増幅されたセンサデータ118などの、ゲームコントローラ106のセンサによって生成された少なくともいくつかのセンサデータ118を含み得るが、
図1に描写されるように、ゲームコントローラ106によってリモートコンピューティングシステム102に送信されるセンサデータ118は、ビデオゲーム120の態様を制御するために使用されないが、ゲームコントローラ106への予測されたユーザ入力を示す機械学習されたスコアを生成するために使用される生の、未フィルタリングのセンサデータ118を表す。本明細書で説明するように、ゲームコントローラ106へのユーザ入力のタイプの機械学習予測は、ビデオゲームプラットフォームのレイテンシを補正するために使用され得る。
【0027】
したがって、コンピューティングシステム102がクライアントマシン112からゲーム制御データ116およびセンサデータ118を受信するとき、コンピューティングシステム102は、そのデータ、および場合によってはクライアントマシン112から受信した他のデータを、リモートコンピューティングシステム102からアクセス可能なデータストア124に格納し得る。リモートコンピューティングシステム102によって収集されたデータは、任意の好適な様式でデータストア124内に編成され、ユーザアカウントをデータの関連部分に関連付け、ならびに/またはビデオゲームおよび/もしくはビデオゲームの過去のセッションをデータの関連部分に関連付けし得る。時間の経過とともに、ビデオゲームプラットフォームと頻繁に相互作用するプレイヤー110の大規模なコミュニティを考えると、時には所与のセッション中に長期間にわたって、大量のデータが収集され得、データストア124内に維持され得る。
【0028】
コンピューティングシステム102は、データストア124からサンプリングされた履歴センサデータを使用して機械学習モデル104を訓練し得る。例えば、コンピューティングシステム102は、サンプリングされたデータとして履歴データの一部分にアクセスし、サンプリングされたデータを使用して機械学習モデル104を訓練し得る。いくつかの実施形態では、訓練用データとして使用されるデータの一部分は、特徴のセットによって表され、履歴ゲーム制御データ116に対応する、ユーザ入力の複数のタイプのうちの1つを示すラベルでラベル付けされる。このようにして、教師あり学習アプローチを採用して、機械学習モデル104を訓練し、プレイヤーのゲームコントローラ106に提供される可能性の高い特定のタイプのユーザ入力を予測することができる。
【0029】
機械学習モデル104は、データストア124において収集された履歴センサデータ118を使用して訓練され得る。追加的に、または代替的に、機械学習モデル104は、ビデオゲーム120の過去のセッション中に発生したビデオゲーム120のゲーム状態を含む履歴ゲーム状態データ126を使用して訓練され得る。ビデオゲーム120のゲーム状態の例としては、プレイヤーの移動、ゲームマップ内の位置、キャラクタクラス、武器などが挙げられるが、これらに限定されない。機械学習モデル104は、上記のセンサデータ118およびゲーム状態データ126に加えて、またはその代わりに、追加データを使用して訓練され得ることを理解されたい。例えば、履歴ゲーム制御データ116は、時間の経過とともにクライアントマシン112から収集され得、ゲーム制御データ116は、ビデオゲーム120の態様を制御するために、人間のユーザによってゲームコントローラ106に提供されたユーザ入力に基づいて生成されている。これらのユーザ入力は、ボタンの押下、ジョイスティックの偏向、トラックパッド上の指のスワイプなどの、ゲームコントローラ106上の制御の作動、および/または3D空間内のゲームコントローラ106の傾きまたは運動を含み得る。したがって、履歴ゲーム制御データ116(例えば、ビデオゲーム120の態様を制御するためなど、ゲームコントローラ106に提供されたユーザ入力を示すデータ)は、履歴センサデータ118および/または履歴ゲーム状態データ126とともに、またはその履歴センサデータの使用の代わりに、訓練データとして使用されてもよい。履歴ゲーム制御データ116を、履歴センサデータ118および/または履歴ゲーム状態データ126とともに使用することにより、ゲーム制御データ116とセンサデータ118および/またはゲーム状態データ126との間で、ゲーム制御データ116と同時に、またはそれに近いタイミングで生成される相関が可能になる。
【0030】
一般に、訓練データは、特徴およびラベルという2つの構成要素を含むことができる。しかしながら、いくつかの実施形態では、機械学習モデル104を訓練するために使用される訓練データは、ラベル付けなしであり得る。したがって、機械学習モデル104は、教師あり学習、教師なし学習、半教師あり学習、強化学習など、任意の好適な学習技法を使用して訓練可能であり得る。訓練データに含まれる特徴は、訓練データの属性に関する定量化可能な情報のn次元特徴ベクトルの形式など、特徴のセットで表すことができる。訓練データに含まれる例示的な特徴は、これらに限定されないが、センサデータ118の値(例えば、キャパシタンス値、抵抗値、変位値、速度値、加速度値、温度値、湿度値など)、ゲーム状態データ126の値(例えば、プレイヤーの動きに関連する値、ゲームマップ内の位置、キャラクタクラス、武器など)、ゲーム制御データ116の値(例えば、ポテンショメータによって生成される値、および指操作制御部の他のスイッチ)、および/または特定のタイプのユーザ入力がゲームコントローラ106に提供される確率を示すスコアを計算することに関連し得る任意の他の好適な特徴を含み得る。いくつかの実施形態では、センサデータ118の値は、バイオフィードバック測定値/値を取得するためにプレイヤー110上に配置された、またはプレイヤー110に近接して配置された1つ以上の物理センサ(例えば、バイオフィードバックセンサ)によって生成されたデータに関連し得る。このようなセンサおよびセンサデータの例は、参照によりその全体が本明細書に組み込まれる、米国特許第9,511,289号に記載されている。「バイオフィードバック」という用語は、本明細書で使用される場合、ゲームプレイヤーの特異的かつ定量化可能な身体機能の測定値を指す。そのようなバイオフィードバック測定は、典型的には、無意識または非自発的な身体機能の測定と称される。例えば、そのようなバイオフィードバックセンサによって生成されたセンサデータ118は、プレイヤー110の血圧、血液酸素レベル、心拍数、呼吸数、ガルバニック皮膚応答、皮膚および/または体温、汗腺活動、眼球運動、瞳孔拡張、頭部、顔、手、または他の体の運動、ジェスチャ、位置、顔の表情、姿勢、筋肉緊張、脳からのニューロン信号、および/またはプレイヤー110の感情、感情、欲求、および/または欲求の指示を提供する任意の他の好適な非言語信号、値、および/または手がかりに関連する値を生成することができる。これらのタイプの値は、ゲームコントローラ106への将来のユーザ入力の予測であり得、したがって、機械学習モデル104を訓練するための特徴として使用される。
【0031】
機械学習モデル104の訓練の一部として、訓練構成要素は、機械学習のための重みを設定し得る。これらの重みは、履歴センサデータ118および/または履歴ゲーム状態データ126を含む、データストア124内の履歴データから導出されるとき、訓練データに含まれる特徴のセットに適用され得る。いくつかの実施形態では、訓練プロセス中に設定される重みは、機械学習モデル104の内部にあるパラメータ(例えば、ニューラルネットワークの隠れ層内のニューロンに対する重み)に適用され得る。機械学習モデルのこれらの内部パラメータは、特徴のセットのうちの個々の入力特徴と1対1でマッピングされても、またはマッピングされなくてもよい。重みは、任意の所与の特徴またはパラメータが、訓練された機械学習モデル104によって出力されるスコアに及ぼす影響を示すことができる。
【0032】
訓練された機械学習モデル104を使用して、コンピューティングシステム102は、ゲームコントローラ106に提供され得るユーザ入力の異なるタイプをスコア付けし得る。例えば、コンピューティングシステム102は、1つ以上のクライアントマシン112から、ログインされ、登録された1つ以上のユーザアカウントに関連付けられた新しいセンサデータ118を受信してもよく、および/またはコンピューティングシステム102は、実行中のビデオゲーム120から新しいゲーム状態データ126を受信してもよい。例示的な例において、ビデオゲーム120は、インストールされたクライアントアプリケーションを介してクライアントマシン112(A)/(B)上で実行してもよく、またはビデオゲーム130は、リモートコンピューティングシステム102上で実行している間にクライアントマシン112(A)/(B)にストリーミングされてもよい。いずれにしても、プレイヤー110が自分のユーザアカウントでログインし、特定のビデオゲーム120を実行し、マルチプレイヤーモードでのプレイを要求すると、例えば、それぞれのクライアントマシン112は、同等を示す情報をコンピューティングシステム102に提供し得、センサデータ118およびゲーム制御データ116は、ビデオゲーム120が開始され、プレイヤー110がゲームプレイを開始すると、クライアントマシン112(A)/(B)からリモートコンピューティングシステム102に、リアルタイムで、ストリーミングされてもよい。
【0033】
一例では、コンピューティングシステム102は、訓練された機械学習モデル104への入力として第1のクライアントマシン112(A)から受信する新しいセンサデータ118を提供し得、訓練された機械学習モデル104からの出力として、ユーザ入力の予測タイプに関連付けられたスコア128を生成し得る。
図1の例では、スコア128は、新しいセンサデータ118を受信してからある期間内に、第1のプレイヤー110(A)が、ゲームコントローラ106(A)の「A」ボタンを作動させ(「A」ボタンは、ゲームコントローラ106(A)への特定のタイプのユーザ入力であることを作動させる)、これにより、第1のクライアントマシン112(A)からの、対応するゲーム制御データ116の受信が引き起こされる確率に関する。この場合、ハイスコア128は、プレイヤー110(A)が特定のタイプのユーザ入力を提供する可能性が高いことを示すが、低スコア128は、プレイヤー110(A)が特定のタイプのユーザ入力を提供する確率が低いことを示す。いくつかの実施形態では、スコア128は、[0,1]の範囲で正規化される変数である。このスコア128は、特定のタイプのユーザ入力がゲームコントローラ106に提供される確率と単調な関係を有し得る。スコア128と実際の確率との関係は、単調ではあるが、直線関係である場合か、または直線関係でない場合があり得る。もちろん、スコア付けは、ユーザ入力のタイプがゲームコントローラ106に提供される確率を予測するために、任意の好適な様式で実装され得る。
【0034】
図1の例は、リモートコンピューティングシステム102上に存在し、実行する訓練された機械学習モデル104を例示するが、訓練された機械学習モデル104は、ビデオゲーム120のプレイヤー110とともに配置されたクライアントマシン112のうちの1つ以上に提供され得ることが理解されるべきである。すなわち、訓練は、リモートコンピューティングシステム102において行われ得るが、訓練された機械学習モデル104は、(リモートコンピューティングシステム102上で訓練された機械学習モデル104を実行する代わりに、またはそれに加えて)クライアントマシン112自体上で訓練された機械学習モデル104の実行のためにクライアントマシン112にダウンロードされ得る。これらの実施形態では、クライアントマシン112は、共通の機械学習モデル104を利用し得、および/または複数のクライアントマシン112は、各々異なる機械学習モデル104を利用し得る。例えば、第1のクライアントマシン112(A)は、第1の訓練された機械学習モデル104を実行し得、第2のクライアントマシン112(B)は、第1の訓練された機械学習モデル104とは異なる第2の訓練された機械学習モデル104を実行し得るなど、任意の数のクライアントマシン112について実行してもよい。例示的な例において、異なるユーザ固有の機械学習モデル104は、それぞれのユーザ110に固有の履歴データに基づいて訓練され得、これらのそれぞれのユーザ固有の機械学習モデル104は、プレイヤー110集団全体から収集された集計データに基づいて機械学習モデル104を訓練する代わりに、またはそれに加えて、それらのユーザ110のそれぞれのクライアントマシン112にダウンロードされ得る。そのようなユーザ固有の機械学習モデル104もまた、リモートコンピューティングシステム102上で実行され得、特定のプレイヤー110に関連付けられたユーザ入力を予測するために、プレイヤー110ごとに利用され得ることを理解されたい。したがって、本明細書において、ユーザ入力を予測するために訓練された機械学習モデル104に入力データを提供する「コンピューティングシステム102」への任意の参照は、「クライアントマシン112」に置き換えられ得る。このようにして、訓練された機械学習モデル104は、クライアントマシン112上で実行することができる。したがって、「コンピューティングシステム102」および「クライアントマシン112」という用語は、本明細書では、この文脈で互換的に使用され得る。
【0035】
いくつかの実施形態では、新しいゲーム状態データ126は、スコア128を生成するために、訓練された機械学習モデル104に追加の入力として、または代替の入力として提供され得る。このシナリオでは、スコア128(
図1に示されるように)は、新しいゲーム状態データ126を受信してからある期間内に、第1のプレイヤー110(A)が、ゲームコントローラ106(A)の「A」ボタンを作動させ、第1のクライアントマシン112(A)からの、対応するゲーム制御データ116の受信が引き起こされる確率に関連し得る。期間(またはユーザ入力が発生することが予測される将来の時間)は変化し得、訓練された機械学習モデル104は、入力データを受信した後の任意の好適な時間に提供されるユーザ入力を予測するように訓練され得る。例えば、機械学習モデル104は、センサデータ118および/またはゲーム状態データ126が受信された1ミリ秒後、センサデータ118および/またはゲーム状態データ126が受信された200ミリ秒後、または任意の他の好適な期間後に提供されるユーザ入力を予測するように訓練され得る。単一のスコア128が
図1に示されるが、機械学習モデル104は、ユーザ入力の複数の異なるタイプ(例えば、「B」ボタン、「X」ボタン、「Y」ボタンの選択、ジョイスティックのたわみ、ゲームコントローラ106の回転など)のために複数のスコア128を出力するように構成され得ることを理解されたい。
【0036】
いくつかの実施形態では、新しいゲーム制御データ116自体は、スコア128を生成するために、訓練された機械学習モデル104に追加の入力として、または代替の入力として提供され得る。例えば、プレイヤー110は、ゲームコントローラ106の制御部を作動させること(例えば、方向パッド(Dパッド)などのボタンを押下すること、ジョイスティックを偏向させること、トラックパッド上で指をスワイプすることなど)によって、および/またはゲームコントローラ106を3D空間内で傾けるまたは移動させて、ビデオゲーム120の態様を制御することによって、ゲームプレイ中にゲームコントローラ106を操作してもよい。ゲームコントローラ106のユーザの操作に応答して、ゲームコントローラ106は、ゲーム制御データ116を生成し得る。この新しいゲーム制御データ116は、ゲームコントローラ106に提供されるユーザ入力を示すものであり、訓練された機械学習モデル104への入力として提供され得る。訓練された機械学習モデル104がリモートコンピューティングシステム102上で実行されている場合、ゲーム制御データ116は、この目的のためにリモートコンピューティングシステム102に送信され得る。
【0037】
ユーザ入力のタイプについて決定された機械学習スコア128に少なくとも部分的に基づいて、コンピューティングシステム102は、ユーザ入力のタイプに対応するゲーム制御データ108を生成し、ゲーム制御データ108を入力としてビデオゲーム120に提供し、ビデオゲームから出力としてビデオゲームデータ122を受信し得る。ビデオゲームデータ122がリモートシステム102で生成される場合、リモートシステム102は、コンピュータネットワーク114を介してクライアントマシン112(B)にビデオゲームデータ122を送信し得る。ビデオゲーム120がクライアントマシン112(B)上で実行している場合、リモートシステム102は、コンピュータネットワーク114を介してクライアントマシン112(B)にゲーム制御データ108を送信し得、クライアントマシン112(B)は、ビデオゲームデータ122を生成し得る。訓練された機械学習モデル104がクライアントマシン112(B)上で実行されている場合、リモートシステム102は、コンピュータネットワーク114を介して少なくともセンサデータ118をクライアントマシン112(B)に送信し得、クライアントマシン112(B)は、訓練された機械学習モデル104の入力としてセンサデータ118および/またはゲーム状態データ126を提供し得る。ビデオゲーム120および訓練された機械学習モデル104がクライアントマシン112(A)上で実行されている場合、ビデオゲームデータ122は、任意の他のコンピューティングデバイスに送信され得ないが、クライアントマシン112(A)のディスプレイ上に提示され得る。いずれにしても、第2のプレイヤー110(B)などのプレイヤー110は、プレイヤーアクション(例えば、第1のプレイヤー110(A)のアクション)に関連する何かを示すビデオゲームコンテンツを、プレイヤー110(例えば、第1のプレイヤー110(A))がゲームコントローラ106(A)にユーザ入力を提供した時間に非常に近い時間で(すなわち、ビデオゲーム120のプレイ品質を低下させる可能性のある目立った遅延なしで)知覚することができる。例えば、第1のプレイヤー110(A)がゲームコントローラ106(A)の「A」ボタンを選択すると、第2のプレイヤー110(B)は、第1のプレイヤー110(A)によって制御されているビデオゲームキャラクタ130を、第1のプレイヤー110(A)による「A」ボタンの作動と密接に同期してジャンプすると知覚する。これは、ビデオゲームプラットフォームのレイテンシを補正し、第1のプレイヤー110(A)が「A」ボタンを選択する機械学習予測に起因し、これは、第1のプレイヤー110(A)が実際に「A」ボタンを選択する前に予測される。
【0038】
図2は、訓練された機械学習モデル104を使用してゲームコントローラ106へのユーザ入力を予測する目的で、センサデータ118をとりわけリモートコンピューティングシステム102に提供するように構成されたゲームコントローラ106の例示的な構成要素を示すブロック図を示す。
図2のゲームコントローラ106は、本明細書に記載されるように、ビデオゲームプラットフォームと相互作用するためにプレイヤー110によって使用され得る。例えば、プレイヤー110は、ゲームコントローラ106を、その上でビデオゲームクライアント(例えば、ビデオゲームをプレイするためのゲームソフトウェア)を実行しているクライアントマシン112とペアリングしてもよい。ゲームコントローラ106がクライアントマシン112とペアになり、ゲームコントローラ106は、それと通信することが可能になると(例えば、クライアントマシン112へ/クライアントマシン112からデータを送信/受信することによって)、ゲームコントローラ106は、ユーザアカウントにゲームコントローラ106を登録し、リモートコンピューティングシステム102から利用可能なビデオゲームにアクセスし、およびゲームコントローラ106を使用してビデオゲームをプレイするなど、本明細書に記載のビデオゲームプラットフォームと相互作用するために使用することができる。
【0039】
ゲームコントローラ106は、プレイヤー110の一方または両方の手によって保持されるように設計され、プレイヤー110の手の指および/または親指によって操作される1つ以上の指操作制御部で構成された、
図1に示されるゲームコントローラなどのハンドヘルドゲームコントローラを表し得る。いくつかの実施形態では、ゲームコントローラ106は、三次元(3D)空間でゲームコントローラ106の移動(例えば、パンニング、回転、傾斜など)によって操作するようにさらに構成され得る。ゲームコントローラ106は、携帯電話(例えば、スマートフォン)、タブレットコンピュータ、ポータブルデジタルアシスタント(PDA)、ウェアラブルコンピュータ(例えば、スマートウォッチ、HMD)、ポータブルゲームプレイヤー、および/または任意の同様のハンドヘルド電子デバイスなどの、任意の他の好適な種類のハンドヘルドデバイス、ウェアラブルデバイスなどを表し得ることを理解されたい。
【0040】
図2に示されるように、ゲームコントローラ106は、指操作制御部(例えば、ジョイスティック、トラックパッド、トリガ、押下可能なボタンなど)、潜在的に他の種類の入力または出力デバイス、例えば、タッチスクリーン、ユーザの音声入力などの音声入力を受信するためのマイクロフォン、ゲームコントローラ106の動きおよび/またはユーザ110の手などのジェスチャ入力を受信するための入力デバイスとして機能することができるカメラまたは他の種類のセンサ(例えば、センサ202)などの1つ以上の入力/出力(I/O)デバイス200を含む。いくつかの実施形態では、追加の入力デバイスが、キーボード、キーパッド、マウス、タッチスクリーン、ジョイスティック、制御ボタンなどの形態で提供され得る。入力デバイスは、音量を増加/減少させるための基本音量制御ボタン、ならびに電源およびリセットボタンなどの制御機構をさらに含み得る。入力デバイスは、ユーザ110の生体認識/認証のために、指紋または手形を取得する、ユーザの眼および/または顔をスキャンする、ユーザの声をキャプチャするなど、ユーザ110の生体認証データの入力を容易にすることができる。
【0041】
一方、出力デバイスは、ディスプレイ、発光素子(例えば、LED)、触覚の知覚を作り出すバイブレーター、スピーカー(例えば、ヘッドホン)などを含み得る。例えば、電源がオンであるときなどの状態を示すための単純な発光素子(例えば、LED)も存在し得る。いくつかの実施例が提供された一方、ゲームコントローラ106は、追加的に、または代替的に、他の任意の種類の出力デバイスを含み得る。場合によっては、1つ以上の出力デバイスによる出力は、入力デバイスのうちの1つ以上によって受信された入力に基づいてもよい。例えば、制御部の作動により、制御部に隣接した(例えば、真下に)、または任意の他の場所に位置されたバイブレーターによる触覚応答の出力を得ることができる。
【0042】
加えて、ゲームコントローラ106は、ネットワークおよび/または1つ以上のリモートシステム(例えば、アプリケーション、ゲームコンソール、無線アクセスポイントなどを実行するクライアントマシン112)への無線接続を容易にするための1つ以上の通信インターフェース204を含み得る。通信インターフェース204は、Wi-Fi、Bluetooth(登録商標)、無線周波数(RF)などの1つ以上の種々の無線技術を実装し得る。ゲームコントローラ106は、ネットワーク、接続された周辺デバイス、または他の無線ネットワークと通信するプラグインネットワークデバイスへの有線接続を容易にする物理ポートをさらに含み得ることを理解されたい。
【0043】
例示された実装形態では、ゲームコントローラ106は、1つ以上のプロセッサ206およびコンピュータ可読媒体208をさらに含む。いくつかの実装形態では、プロセッサ206は、中央処理ユニット(CPU)、グラフィックス処理ユニット(GPU)、CPUおよびGPUの両方、マイクロプロセッサ、デジタル信号プロセッサ、または当該技術分野で既知の他の処理ユニットもしくは構成要素を含み得る。代替的にまたは追加的に、本明細書に記載されている機能性は、1つ以上のハードウェアロジック構成要素によって、少なくとも部分的に実行され得る。例えば、非限定的に、使用され得るハードウェアロジック構成要素の例示的な種類としては、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、特定用途向け標準製品(ASSP)、システムオンチップシステム(SOC)、複合プログラマブル論理デバイス(CPLD)などが挙げられる。加えて、プロセッサ206の各々は、プログラムモジュール、プログラムデータ、および/または1つ以上のオペレーティングシステムも記憶し得る、その独自のローカルメモリを保有し得る。
【0044】
コンピュータ可読媒体208は、揮発性および不揮発性メモリ、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報を記憶するための任意の方法または技術で実装された、取り外し可能および取り外し不可能な媒体を含み得る。そのようなメモリとしては、限定されるものではないが、RAM、ROM、EEPROM、フラッシュメモリもしくは他のメモリ技術、CD-ROM、デジタル多目的ディスク(DVD)もしくは他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、RAIDストレージシステム、または所望の情報を記憶するために使用され得、コンピューティングデバイスによってアクセスされ得る、任意の他の媒体が挙げられる。コンピュータ可読媒体208は、コンピュータ可読媒体208に記憶された命令を実行するためにプロセッサ206によってアクセス可能な任意の利用可能な物理媒体であり得る、コンピュータ可読ストレージ媒体(「CRSM」)として実装され得る。1つの基本的な実装形態では、CRSMは、ランダムアクセスメモリ(「RAM」)およびフラッシュメモリを含み得る。他の実装形態では、CRSMには、読み出し専用メモリ(「ROM」)、電気的に消去可能なプログラマブル読み出し専用メモリ(「EEPROM」)、または所望の情報を記憶するために使用され得、プロセッサ206によってアクセスされ得る、任意の他の有形媒体が含まれ得るが、これらに限定されない。
【0045】
命令、データ記憶などのいくつかのモジュールは、コンピュータ可読媒体208内に記憶され、プロセッサ206上で実行するように構成可能である。いくつかの例示的な機能モジュールは、同一の機能が、ハードウェア、ファームウェア内、またはチップ(SOC)上のシステムとして、代替的に、実装可能であるが、コンピュータ可読媒体208に記憶され、プロセッサ206上で実行されるように図示される。
【0046】
オペレーティングシステムモジュール210は、他のモジュールの有益性のために、ゲームコントローラ106内でハードウェアを管理し、ゲームコントローラ106に連結されるように構成され得る。加えて、コンピュータ可読媒体208は、ゲームコントローラ106が、通信インターフェース204を介して、アプリケーション(例えば、ゲームアプリケーション)、ゲームコンソール、リモートコンピューティングシステム102、または同様のものを実行するクライアントマシン112(例えば、PC)などの1つ以上の他のデバイスと通信することを可能にするネットワーク通信モジュール212を記憶し得る。コンピュータ可読媒体208は、ゲームコントローラ106、ゲームコントローラ106に接続されたクライアントマシン112、またはゲームコントローラ106および/またはクライアントマシン112に接続されたリモートコンピューティングシステム102上で実行されるゲーム(または他のアプリケーション)に関連付けられたデータを記憶するためのゲームセッションデータベース214をさらに含み得る。コンピュータ可読媒体208はまた、クライアントマシン112(例えば、PC、ゲームコンソールなど)、リモートコンピューティングシステム102、および同様のものなどのゲームコントローラ106が連結するデバイスと関連付けられたデータを記憶するデバイス記録データベース216を含み得る。コンピュータ可読媒体208は、ゲームコントローラ106をゲームコントローラとして機能するように構成するゲーム制御命令218、およびゲームコントローラ106を他の非ゲームデバイスのコントローラとして機能するように構成する汎用制御命令220をさらに格納し得る。
【0047】
ゲームコントローラ106はまた、1つ以上のセンサ202を含むように示される。例えば、センサ202は、1つ以上のジャイロスコープ、および/または加速度計、および/または磁力計、および/またはコンパス、または任意の他の好適な動きセンサを含み得る、慣性測定ユニット(IMU)などの動きセンサを含み得る。いくつかの実施形態では、センサ202は、独立ジャイロスコープ、加速度計、磁力計、コンパスなどとして実装され得、必ずしもIMUとして実装され得るわけではない。いくつかの実施形態では、これらのセンサ202のうちの1つ以上は、6構成要素動き検知を提供するために利用され得る。例えば、IMUは、3D空間の周りの並進運動および/または回転運動を示すセンサデータ118を検知および生成するように構成され得る。そのようなセンサ202によって生成されたセンサデータ118は、3D空間における並進運動(X、Y、およびZ運動)の程度、速度、および/または加速度、ならびに3D空間における回転運動(ロール、ピッチ、およびヨー)の程度、速度、および/または加速度に関連し得る。測定値は、デカルト(X、Y、およびZ)座標系または球面座標系などの3D座標系の観点から生成され得る。センサデータ118は、例えば、変位(例えば、前の時間ログからの変位)、速度、および/または並進運動(変数:d、v、aによって表される)および角運動(変数:θ、ω、αによって表される)の加速度の観点からの測定値を含み得る。センサデータ118は、センサデータ118の履歴を収集し、ゲームコントローラ106に一時的に、または永久的に記憶することができるように、例えば、任意の好適な時間間隔で、センサデータ118が生成および/または送信される時間をさらに含み得る。
【0048】
別の例として、センサ202は、タッチセンサへの指、手のひらなどの物体の近接性を検知するように構成されたタッチセンサを含むことができ、これは、静電容量性タッチセンサ、抵抗性タッチセンサ、赤外線タッチセンサ、指の近接性を検出するために音響音波を利用するタッチセンサ、または任意の他の種類のタッチセンサなどの任意の好適なタッチ検知技術に基づき得る。例えば、タッチセンサは、表面または指操作制御部への指の近接性を検出するために、デバイスの表面の下または表面上、および/または指操作制御部内または指操作制御部上に配置されてもよい。近接性(例えば、表面の上を接触またはホバリングする指)の検出に応答して、タッチセンサは、指の近接性を示すセンサデータ118を生成してもよい。タッチセンサなどは、ユーザの110のグリップを検出するためにゲームコントローラ106のハンドルに、および/またはトラックパッド、ジョイスティック、ボタンなどを含む、様々な制御部内に埋め込まれてもよい。静電容量ベースの検知を利用する実装形態では、タッチセンサは、電極(例えば、静電容量型センサの送信機電極および受信機電極)を含み得、電極が電極における静電容量変化を測定するように構成されるように電極に電圧を印加することができ、これは、センサ202への物体の近接性を示す静電容量値の形態でセンサデータ118に変換され得る。例えば、静電容量ベースのタッチセンサの電極における静電容量変化は、電極に近接している物体(指など)によって影響され得る。生の静電容量を近接値にデジタル化して、センサデータ118を生成することができる。
【0049】
別の例として、センサ202は、力検知抵抗器(FSR)などの圧力センサを含み得る。例えば、FSRは、抵抗膜(例えば、インク組成物などの半導体材料)から離間された導電性材料、ならびに抵抗材料がアクチュエータに印加された圧縮力の印加下で導電性材料に接触するように抵抗膜に力を伝達するように構成されたアクチュエータを含み得る。FSRは、可変力に応答して様々な抵抗を示し、抵抗値に対応するセンサデータ118を生成し得る。FSRは、「シャントモード(ShuntMode)」FSRまたは「スルーモード(ThruMode)」FSRであり得る。シャントモードFSRでは、抵抗膜から離間した導電性材料は、複数の櫛形金属フィンガであり得る。力がFSRのアクチュエータに加えられると、抵抗膜は、金属フィンガをシャントする互いに噛み合った金属フィンガのいくつかと接触し、それによって、FSRの出力端子にわたって抵抗を変化させ、これをFSR値にデジタル化して、センサデータ118を生成することができる。いくつかの実施形態では、圧力センサは、追加的に、または代替的に、圧電センサ、ひずみゲージ、および同様のものなどの他の種類の圧力検知機構を含み得る。
【0050】
対応するセンサデータ118を生成するように構成されたセンサ202の他の例は、これらに限定されないが、温度センサ、湿度センサ、カメラ(赤外線(IR)、または他の非可視スペクトルカメラを含む)、目追跡システム、プレイヤー110が立つ可能性のある重量/位置センサパッド、心拍数センサ、電気的皮膚応答センサ、目追跡センサ、表情表現センサ、筋肉張力センサ、姿勢センサなどを含む、米国特許第9,511,289号に記載されているものなどの他のバイオフィードバックセンサを含み得る。さらに別の例として、センサ202は、脳波(EEG)センサ、定量的脳波(qEEG)センサ、機能的近赤外線分光法(fNIRS)センサ、機能的磁気共鳴画像法(fMRI)センサ、筋電図(EMG)センサ、電気眼科(EOG)センサ、および/または他の脳コンピュータインターフェースセンサなどの、ニューロン活動を示す信号を検出するセンサ202を含み得る。プレイヤー110の頭部に装着されるように構成されたゲームコントローラ106(例えば、HMD)は、ユーザの頭部と既に接触しているため、これらのタイプの脳コンピュータインターフェースセンサの自然なファシリテータである。センサ202は、ゲームコントローラ106内に(例えば、ゲームコントローラ106、その1つ以上の指操作制御部などに統合された)、またはゲームコントローラ106の表面に(ゲームコントローラ106の本体、その指操作制御部などに取り付けられた)上に埋め込まれているように描写されるが、いくつかの実施形態では、センサ202は、ゲームコントローラ106の外側にあり、その周辺装置として接続されてもよく、またはセンサ202は、ゲームコントローラ106の外側にあり、センサ202が独立したセンサ202として使用可能であるように、クライアントマシン112に通信可能に結合されてもよい。例えば、センサ202は、訓練された機械学習モデル104に入力され得るプレイヤー110についてのバイオフィードバック尺度を取得するために、プレイヤー110上に(例えば、プレイヤー110に取り付けられ)、またはプレイヤー110に近接して配置され得る。
【0051】
ゲームコントローラ106のセンサ202の種類に関係なく、センサ202は、何らかの方法で、ゲームコントローラ106の物理的状態に関連するセンサデータ118を生成するように構成される。例えば、タッチセンサは、物体(例えば、指)が、タッチセンサを含むゲームコントローラ106の一部分(例えば、方向性パッド(Dパッド)、ジョイスティック、トリガボタン、バンパーボタン、セレクタボタンなど)に接触しているか、またはそれに近いかを示すセンサデータ118を生成し得る。別の例として、圧力センサは、物体がゲームコントローラ106の一部分に押されているかどうか、およびゲームコントローラ106のその部分が物体によって軽くまたは重く押されているかどうかを示すセンサデータ118を生成してもよい。さらに別の例として、動きセンサ(例えば、ジャイロスコープおよび/または加速度計)は、ゲームコントローラ106が、3D空間内の向きおよび/または空間位置で変化したかどうか、および/またはゲームコントローラ106が、急速に、またはゆっくりと移動しているかどうかを示すセンサデータ118を生成してもよい。したがって、ゲームコントローラ106のセンサ202は、ゲームコントローラ106のこれらおよび他の種類の物理的状態を示すセンサデータ118を生成するように構成される。
【0052】
したがって、プレイヤー110がゲームコントローラ106を利用して、例えば、クライアントマシン112上でビデオゲーム120をプレイするために、ビデオゲームプラットフォームと相互作用するとき、
図1に紹介されているセンサデータ118およびゲーム制御データ116は、クライアントマシン112に送信され、クライアントマシン112からリモートコンピューティングシステム102に転送されてもよい。ゲーム制御データ116は、ビデオゲーム120の態様を制御するために使用可能であり、それによって、ビデオゲーム120によって処理され、ビデオゲーム120の次のフレームをどのようにレンダリングするかを決定する。センサデータ118は、ジャイロスコープによって生成された生のデータ、加速度計によって生成された生のデータ、および/またはタッチセンサ(例えば、静電容量性タッチパッド)によって生成された生のデータなどの生の、未フィルタリングのセンサデータ118を表す。
【0053】
図3は、訓練された機械学習モデル104を使用して、ゲームコントローラ106へのユーザ入力を予測するように構成されたコンピューティングシステム102の例示的な構成要素を示すブロック図を示す。例示された実装形態では、コンピューティングシステム102は、他の構成要素の中で、1つ以上のプロセッサ300(例えば、CPU)、メモリ302(または非一時的なコンピュータ可読媒体302)、および通信インターフェース304を含む。メモリ302(または非一時的コンピュータ可読媒体302)には、揮発性および不揮発性メモリ、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報を記憶するための任意の方法または技術で実装された取り外し可能および取り外し不可能な媒体が含まれ得る。そのようなメモリとしては、限定されるものではないが、RAM、ROM、EEPROM、フラッシュメモリもしくは他のメモリ技術、CD-ROM、デジタル多目的ディスク(DVD)もしくは他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、RAIDストレージシステム、または所望の情報を記憶するために使用され得、コンピューティングデバイスによってアクセスされ得る、任意の他の媒体が挙げられる。コンピュータ可読媒体302は、コンピュータ可読記憶媒体(「CRSM」)として実装され得、そのコンピュータ可読記憶媒体は、メモリ302上に記憶された命令を実行するためのプロセッサ300によってアクセス可能である任意の利用可能な物理的媒体であってもよい。1つの基本的な実装形態では、CRSMは、ランダムアクセスメモリ(「RAM」)およびフラッシュメモリを含み得る。他の実装形態では、CRSMには、読み出し専用メモリ(「ROM」)、電気的に消去可能なプログラマブル読み出し専用メモリ(「EEPROM」)、または所望の情報を記憶するために使用され得、プロセッサ300によってアクセスされ得る、任意の他の有形媒体が含まれ得るが、これらに限定されない。ビデオゲームサービス306は、プロセッサ300によって実行されると、コンピューティングシステム102に本明細書に記載の技法および動作を実行させるメモリ302に記憶された命令を表し得る。
【0054】
例えば、ビデオゲームサービス306は、他の可能な構成要素の中で、訓練構成要素308、スコア付け構成要素310、およびゲーム制御データ生成器312を含み得る。訓練構成要素308は、訓練された機械学習モデル104を取得するための訓練データとして、データストア124内のデータ314の一部分(本明細書で「履歴データ」314と称されることもある)を使用して機械学習モデルを訓練するように構成され得る。訓練された機械学習モデル104は、ゲームコントローラ106への予測されたユーザ入力に関連するスコア128を決定するために、スコア付け構成要素310によって使用可能である。ゲーム制御データ生成器312は、ユーザ入力のタイプに対して生成された機械学習スコア128に少なくとも部分的に基づいて、ユーザ入力のタイプに対応するゲーム制御データ108を生成する。ゲーム制御データ生成器312は、実行中のビデオゲーム120への入力として生成されるゲーム制御データ108を提供し、ゲーム制御データ108に少なくとも部分的に基づいてビデオゲーム120から出力されるビデオゲームデータ122を受信するようにさらに構成され得る。前述のように、いくつかの実施形態では、訓練された機械学習モデル104は、1つまたは複数のクライアントマシン112上に存在し、実行し得る。したがって、少なくともスコア付け構成要素310、訓練された機械学習モデル104、および/またはゲーム制御データ生成器312は、
図3に示されるように、リモートコンピューティングシステム102上で実行される代わりに、またはそれに加えて、クライアントマシン112上で実行され得ることを理解されたい。いくつかの実施形態では、コンピューティングシステム102は、ビデオゲーム120をプレイするプレイヤー110にローカルであるクライアントマシン112を表し得る。コンピューティングシステム102が、
図3に示される構成要素を有するリモートコンピューティングシステム102を表す実施形態では、コンピューティングシステム102は、通信インターフェース304を介して、およびコンピュータネットワーク114を介して、ビデオゲームデータ122(またはゲーム制御データ108、またはセンサデータ118などのローカル機械学習モデル104に入力されるデータ)を、ビデオゲーム120のプレイヤー110に関連付けられたクライアントマシン112に送信し得る。このようにしてゲームコントローラ106へのユーザ入力を予測し、ゲーム制御データ108を積極的に生成することは、ビデオゲームプラットフォームのレイテンシの効果を緩和すること、またはそれを補正することを可能にする。一例として、訓練された機械学習モデル104は、第1のクライアントマシン112(A)から受信されたセンサデータ118を入力として処理し得、ユーザ入力のタイプが、例えば、コントローラの「A」ボタンが作動されるなど、第1のクライアントマシン112(A)に関連付けられた第1のプレイヤー110(A)の第1のゲームコントローラ106(A)に提供される確率関連するスコア128を出力として生成し得る。
【0055】
前述のように、スコア付け構成要素310によって決定されたスコア128(例えば、訓練された機械学習モデル104による出力)は、機械学習されたスコア128である。機械学習は、一般に、機械学習モデルを訓練するために、例(「訓練データ」と呼ばれる)のセットの処理を伴う。機械学習モデル104は、一度訓練されると、入力として新しいデータを受信し、出力として結果を推定または予測することができる学習済みメカニズムである。例えば、訓練された機械学習モデル104は、未知の入力(例えば、未知の画像)を複数のクラスラベル(例えば、画像を猫または犬としてラベル付けする)の1つとして分類するタスクを与えられた分類子を含むことができる。場合によっては、訓練された機械学習モデル104は、マルチラベル分類タスク(例えば、画像を「猫」、「犬」、「アヒル」、「ペンギン」などとしてラベル付けする)を実装するように構成される。追加的に、または代替的に、訓練された機械学習モデル104は、入力として受信された未知のデータに基づいて分類タスクの確率または確率のセットを推論するように訓練されることができる。本開示の文脈において、未知の入力は、ビデオゲーム120をプレイ中にプレイヤー110によって利用されるゲームコントローラ106のセンサ202によって生成されるセンサデータ118(例えば、生のセンサデータ)であり得、訓練された機械学習モデル104は、センサデータ118を受信してからある時間内に、ユーザ入力の複数のクラスまたはタイプのうちの1つがゲームコントローラ106に提供されて、クライアントマシン112からの、対応するゲーム制御データ116の受信が引き起こされる確率を示すか、そうでなければそれに関連するスコア128を出力するタスクを与えられ得る。いくつかの実施形態では、未知の入力は、実行中のビデオゲーム120のゲーム状態(例えば、プレイヤーの動き、ゲームマップ上のキャラクタ位置、キャラクタクラス、武器など)を含むゲーム状態データ126であり得、訓練された機械学習モデル104は、ゲーム状態データ126を受信してからある時間内に、ユーザ入力の複数のクラスまたはタイプのうちの1つがゲームコントローラ106に提供され、クライアントマシン112からの対応するゲーム制御データ116の受信が引き起こされる確率を示すか、そうでなければそれに関連するスコア128を出力するタスクを与えられ得る。いくつかの実施形態では、スコア128は、[0,1]の範囲で正規化される変数である。このスコア128は、特定のタイプのユーザ入力がゲームコントローラ106に提供される確率と単調な関係を有し得る。スコア128と特定のタイプのユーザ入力に関連付けられた実際の確率との関係は、単調ではあるが、直線関係である場合か、または直線関係でない場合があり得る。いくつかの実施形態では、訓練された機械学習モデル104は、確率のセット(例えば、2つの確率)、またはそれに関連するスコアを出力し得、ここで、1つの確率(または、スコア)は、ユーザ入力のタイプがゲームコントローラ106に提供される確率に関連し、他の確率(または、スコア)は、ユーザ入力のタイプがゲームコントローラに提供されない確率に関連する。訓練された機械学習モデル104によって出力されるスコア128は、積極的に(すなわち、ゲームコントローラ106への実際のユーザ入力に基づいて今後のゲーム制御データ116が受信される前に)生成されるゲーム制御データ108のタイプに影響を与えるために、これらの確率のいずれかに関連付けることができる。
【0056】
訓練された機械学習モデル104は、単一のモデル、または基本レベルの機械学習モデルのアンサンブルを表し得、任意の種類の機械学習モデル104として実装され得る。例えば、本明細書に記載の技法およびシステムで使用するのに好適な機械学習モデル104には、これらに限定されないが、ニューラルネットワーク、ツリーベースモデル、サポートベクターマシン(SVM)、カーネル法、ランダムフォレスト、スプライン(例えば、多変量適合回帰スプライン)、隠れマルコフモデル(HMM)、カルマンフィルタ(または拡張カルマンフィルタ)、ベイズネットワーク(またはベイズ信念ネットワーク)、期待値最大化、遺伝的アルゴリズム、線形回帰アルゴリズム、非線形回帰アルゴリズム、ロジスティック回帰ベースの分類モデル、あるいはこれらのアンサンブルがある。「アンサンブル」には、加重平均または投票を使用するなどによって、出力(予測)が組み合わされた機械学習モデル104の集合を含むことができる。アンサンブルの個々の機械学習モデルは専門知識が異なる可能性があり、アンサンブルは、アンサンブルの個々の機械学習モデルよりも集合的に「スマート」な個々の機械学習モデルのコミッティーとして動作することができる。
【0057】
機械学習モデル104を訓練するために使用される訓練データは、様々な種類のデータ314を含み得る。一般に、前述のように、機械学習のための訓練データは、特徴およびラベルという2つの構成要素を含むことができる。しかしながら、いくつかの実施形態では、機械学習モデル104を訓練するために使用される訓練データは、ラベル付けなしであり得る。したがって、機械学習モデル104は、教師あり学習、教師なし学習、半教師あり学習、強化学習など、任意の好適な学習技法を使用して訓練可能であり得る。訓練データに含まれる特徴は、訓練データの属性に関する定量化可能な情報のn次元特徴ベクトルの形式など、特徴のセットで表すことができる。以下は、本明細書で説明される機械学習モデル216を訓練するための訓練データに含めることができる例示的な特徴のリストである。ただし、以下の特徴のリストは網羅的ではなく、訓練において使用される特徴は、本明細書に記載されていない追加の特徴、および場合によっては、本明細書に記載される特徴のすべてではないが一部分を含み得ることを理解されたい。訓練データに含まれる例示的な特徴は、これらに限定されないが、センサデータ118の値(例えば、キャパシタンス値、抵抗値、変位値、速度値、加速度値、温度値、湿度値、バイオフィードバック値、例えば、米国特許第9,511,289号に記載されているものなど)、ゲーム状態データ126の値(例えば、プレイヤーの動きに関連する値、ゲームマップ内の位置、キャラクタクラス、武器など)、ゲーム制御データ116の値(例えば、ポテンショメータによって生成される値、および指操作制御部の他のスイッチ)、および/または特定のタイプのユーザ入力がゲームコントローラ106に提供される確率を示すスコアを計算することに関連し得る任意の他の好適な特徴を含み得る。さらに、訓練プロセスの一部として、訓練構成要素308は、機械学習のための重みを設定し得る。これらの重みは、データストア124内の履歴データ314から導出されるとき、訓練データに含まれる特徴のセットに適用され得る。いくつかの実施形態では、訓練プロセス中に設定される重みは、機械学習モデルの内部のパラメータに適用され得る(例えば、ニューラルネットワークの隠れ層内のニューロンに対する重み)。機械学習モデルのこれらの内部パラメータは、特徴のセットのうちの個々の入力特徴と1対1でマッピングされても、またはマッピングされなくてもよい。重みは、任意の所与の特徴またはパラメータが、訓練された機械学習モデル104によって出力されるスコア128に及ぼす影響を示すことができる。
【0058】
図3は、ゲームコントローラ106への将来のユーザ入力を予測する手段として、訓練された機械学習モデル104によって得点化され得るユーザ入力のタイプまたはクラスの例を示す。例えば、ゲームコントローラ106の任意の指操作制御部(例えば、「A」ボタン、「B」ボタン、「X」ボタン、「Y」ボタン、ジョイスティック、Dパッド、トラックパッド、バンパーボタン、トリガボタンなど)に関して、制御に接触することなく制御上をホバリングする指、閾値を超える力で制御を押すことなく制御に接触する指、または閾値を超える力で制御を押す指など、様々なタイプのユーザ入力が得点化され得る。指操作制御部が機械的に作動する制御部(例えば、ボタン、ジョイスティック、Dパッドなど)である場合、得点化され得る追加のタイプのユーザ入力は、指操作制御部の押下および/またはたわみである。得点化され得る別のタイプのユーザ入力は、3D空間(例えば、ロール、ピッチ、ヨー)におけるゲームコントローラ106の回転である。得点化され得るさらに別のタイプのユーザ入力は、3D空間におけるゲームコントローラ106の並進運動(例えば、X、Y、および/またはZ方向の並進運動)である。これらの実施例は非網羅的であり、当業者によって認識されるように、ユーザ入力のタイプの他の実施例を得点化することができることを理解されたい。いずれの場合においても、ゲーム制御データ生成器312は、ユーザ入力のタイプに関連付けられた閾値スコアを満たす(例えば、超える、満たすまたは超える)スコアに割り当てられたユーザ入力のタイプに対応するゲーム制御データ108を生成し得る。ユーザ入力の異なるタイプは、この目的のために異なる閾値スコアに関連付けられ得る。例えば、システムが、プレイヤー110が対応するゲーム制御データ108を生成する前にゲームコントローラ106を回転させるというその予測により自信を持ちたい場合、比較的高い閾値スコアを信頼レベルとして使用して、その特定のタイプのユーザ入力の予測で偽陽性率を減少させ得る。対照的に、プレイヤー110が「X」ボタンを選択することを予測することが、プレイ品質を低下させる可能性が低いと予測することが間違っている場合(例えば、「X」ボタンの選択がビデオゲーム120におけるパフォーマンスクリティカルアクションではない場合)、予測が正確であるという合理的な信頼を持ってその特定のタイプのユーザ入力のためのゲーム制御データ108を生成するための信頼レベルとして比較的低い閾値スコアが使用され得る。誤った予測に対処する方法は、誤って予測されたゲーム状態を既知の正しいゲーム状態に置き換えること(その状態が既知になると)を含み得、場合によっては、追加の論理で、この置き換えを、影響を受けるプレイヤーにとって目立たない/邪魔にならないようにする(例えば、仮想オブジェクトを瞬時に正しい位置にテレポートする代わりに、誤った位置から正しい位置に徐々に補間する)。
【0059】
本明細書に説明されるプロセスは、ハードウェア、ソフトウェア、またはそれらの組み合わせで実装され得る一連の操作を表す論理フローグラフ内のブロックの集合として例示される。ソフトウェアの文脈では、ブロックは、コンピュータ実行可能命令を表し、コンピュータ実行可能命令は、1つ以上のプロセッサによって実行されるとき、列挙された操作を実施する。一般に、コンピュータ実行可能命令は、特定の機能を実行するか、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、構成要素、データ構造などを含む。動作が記載される順序は、限定として解釈されることを意図するものではなく、任意のいくつかの記載されたブロックは、プロセスを実装するために任意の順序でおよび/または並行して組み合わされ得る。
【0060】
図4は、ユーザ入力のタイプがプレイヤーのゲームコントローラに提供される確率を予測するために、機械学習モデル104を訓練するための例示的なプロセス400のフロー図である。考察を目的として、プロセス400は、以前の図を参照して説明される。
【0061】
402において、コンピューティングシステム102は、ユーザ110にビデオゲームサービスへのアクセスを提供し得る。例えば、コンピューティングシステム102は、ユーザがビデオゲームのカタログにアクセスして閲覧し、ユーザプロファイルを変更し、トランザクションを実行し、ソーシャルメディアアクティビティに従事し、および他の同様のアクションを行うことを可能にし得る。コンピューティングシステム102は、ビデオゲームサービスの一部として、ビデオゲーム(およびそのコンテンツ)をクライアントマシン112に配布し得る。例示的な例において、ビデオゲームサービスにアクセスするユーザ110は、インストールされたクライアントアプリケーションをロードし、登録ユーザアカウントでログインし、所望のビデオゲーム120を選択し、そのビデオゲーム120を自分のクライアントマシン112上で実行し、またはクライアントアプリケーションを通じてビデオゲーム120をストリーミングすることができる。
【0062】
404において、コンピューティングシステム102は、ビデオゲームの過去のセッションに関連付けられたデータ314を収集し、格納し得る。このデータ314は、ユーザ110が登録ユーザアカウントでビデオゲームサービスにアクセスし、このビデオゲームプラットフォームを使用するとき、例えば、そのプラットフォーム上でビデオゲーム120をプレイするときなどはいつでも、ブロック404で収集され得る。ブロック404で収集されるデータ314は、これらに限定されないが、クライアントマシン112から受信され、ゲームコントローラ106によって生成されるセンサデータ118およびゲーム制御データ116、ビデオゲームのゲーム状態データ126などを含み得る。時間の経過とともに、登録ユーザアカウントに結び付けられたデータ314の膨大な集合が、コンピューティングシステム106で利用可能であり得ることが理解されよう。ビデオゲームサービスを提供するエンティティは、ユーザ110が、彼らのデータを収集し、彼らのビデオゲーム120におけるプレイヤーのアクションとプレイヤーの知覚との間のレイテンシを低減する目的で、機械学習モデルを訓練するために使用されることにインフォームドコンセントを提供することを要求し得ることを理解されたい。
【0063】
406において、コンピューティングシステム102は、訓練構成要素308を介して、監視された機械学習のためにラベル付けされるビデオゲームサービスを介してプレイされるビデオゲーム120の過去のセッションに関連付けられた(履歴)データ314にアクセスし得る。例えば、406でアクセスされる(履歴)データ314は、特定のビデオゲーム120の過去のセッション中にクライアントマシン112から受信された履歴センサデータ118を含んでもよい。追加的に、または代替的に、406でアクセスされた(履歴)データ314は、ビデオゲーム120の過去のセッション中に発生したビデオゲーム120のゲーム状態を含む履歴ゲーム状態データ126を含み得る。
【0064】
408において、コンピューティングシステム102は、訓練構成要素308を介して、(i)履歴センサデータ118がそれらのクライアントマシン112から受信されてから、または(ii)ビデオゲームサービスを介してプレイされたビデオゲームの過去のセッション中に(履歴ゲーム状態データ126に含まれる)ゲーム状態が発生してからある期間内に、クライアントマシン112から受信された(履歴)ゲーム制御データ116にアクセスし得る。この期間は、ユーザ入力予測が行われる遠い将来に応じて、約1ミリ秒~約200ミリ秒の範囲内の期間など、任意の好適な期間であり得る。例示的な例において、ゲームコントローラ106の「A」ボタンを押下しようとしている特定のプレイヤー110が、「A」ボタンを押下する直前に、ゲームコントローラ106を少しだけ右側にねじることが多い場合があり得る。この例では、ラベル付けされる履歴センサデータ118は、ゲームコントローラ106のジャイロスコープによって生成されたセンサデータ118であり得、ブロック408でアクセスされたゲーム制御データ116は、ジャイロスコープに基づくセンサデータ118が同じクライアントマシン112から受信されてからある期間(例えば、100ミリ秒)の後、プレイヤー110のクライアントマシン112から受信された「A」ボタンの押下に対応するデータを含み得る。別の例示的な例として、特定のプレイヤー110は、「A」ボタンの選択と「B」ボタンの選択との間で遷移する場合があり得る。この例では、ラベル付けされる履歴センサデータ118は、「A」ボタンおよび「B」ボタンに関連付けられたタッチセンサ(例えば、静電容量パッド)によって生成されたセンサデータ118であってもよく、これは、「B」ボタンの解放後に、「A」ボタンの静電容量値の増加とともに、「B」ボタンの静電容量値の減少を示してもよく、ブロック408でアクセスされるゲーム制御データ116は、タッチセンサベースのセンサデータ118が同じクライアントマシン112から受信されてからある期間(例えば、50ミリ秒)の後、プレイヤー110のクライアントマシン112から受信された「A」ボタンの押下に対応するデータを含み得る。さらに別の例では、ラベル付けされる履歴ゲーム状態データ126は、ゲームキャラクタがゲームマップ内の壁の隣に位置し、キャラクタが壁に直接向かって走っているビデオゲーム120のゲーム状態を含み得る。この例では、ブロック408でアクセスされたゲーム制御データ116は、ゲーム状態がビデオゲーム120で発生してからある期間(例えば、20ミリ秒)の後、クライアントマシン112から受信された「A」ボタンの押下に対応する「ジャンプ」アクションを含み得る。このタイプのゲーム制御データ116(例えば、プレイヤー制御キャラクタの「ジャンプ」アクション)は、数億回の過去のゲームセッションにわたってこの特定のゲーム状態のビデオゲーム120のゲーム状態データ126に示され得、これは、キャラクタが壁に直接向かって走っており、ジャンプアクションの特定の期間内に壁の隣にある場合、ほとんどのプレイヤーが常に壁を越えてジャンプするようにゲームキャラクタを制御することを意味する。
【0065】
410において、コンピューティングシステム102は、訓練構成要素308を介して、ある期間内に受信された履歴ゲーム制御データ116(すなわち、ブロック408でアクセスされた履歴ゲーム制御データ116)に対応する、ユーザ入力の複数のタイプのうちの1つを示すラベルを用いて、データ(例えば、履歴センサデータ118および/または履歴ゲーム状態データ126)にラベル付けし得る。
図3を参照して本明細書に記載したユーザ入力の様々なタイプ/クラスなど、ラベルの例が本明細書に記載される。前の段落に記載された例を参照すると、「A」ボタンの押下に対応するゲーム制御データ116を受信する100ミリ秒前に受信されたジャイロスコープベースのセンサデータ118は、「A」ボタン:押下」でラベル付けされ得る。同様に、「A」ボタンの押下に対応するゲーム制御データ116を受信する50ミリ秒前に受信されたタッチセンサベースのセンサデータ118は、同じラベル「A」ボタン:押下」でラベル付けされ得る。同様に、「A」ボタンの押下に対応するゲーム制御データ116を受信する20ミリ秒前に発生したゲーム状態を含むゲーム状態データ126は、同じラベル「A」ボタン:押下」でラベル付けされ得る。
【0066】
412において、コンピューティングシステム102は、訓練構成要素308を介して、(履歴)データ314(例えば、履歴センサデータ118および/または履歴ゲーム状態データ126)を訓練データとして使用して、訓練された機械学習モデル104を取得するために、機械学習モデルを訓練し得る。サブブロック414によって示されるように、ブロック412における機械学習モデルの訓練は、機械学習のための重みを設定することを含み得る。これらの重みは、履歴データ314から導出された特徴のセットに適用され得る。本明細書に、例示的な特徴が記載される。いくつかの実施形態では、ブロック314において設定される重みは、機械学習モデルの内部のパラメータに適用され得る(例えば、ニューラルネットワークの隠れ層内のニューロンに対する重み)。機械学習モデルのこれらの内部パラメータは、特徴のセットのうちの個々の入力特徴と1対1でマッピングされても、またはマッピングされなくてもよい。サブブロック416によって示されるように、ブロック412における機械学習モデルの訓練は、予測誤差を判定すること、および予測誤差を使用してモデル104を訓練することを含み得る。例えば、これは、訓練されている機械学習モデルが、入力として提供されるサンプル訓練データに基づいて出力を予測するようにタスクを課され、訓練構成要素308が、訓練データからのラベル(例えば、多くの場合、グランドトゥルース値と称される既知の正しい出力値)に基づき得るモデルの予測の予測誤差を決定する(例えば、測定する)誤差駆動型学習技術(強化学習の一種)として実装され得る。次いで、訓練構成要素308は、訓練プロセス中のモデルのパフォーマンスを改善するために、モデルを通して予測誤差をフィードバックしてもよい。ブロック412からブロック404への矢印によって示されるように、機械学習モデル104は、更新された(履歴)データ314を使用して再訓練され、最近のプレイヤーの行動に適合した新たに訓練された機械学習モデル104を取得することができる。これにより、機械学習モデル104は、時間の経過とともに、変化するプレイヤーの行動に適合することができる。
【0067】
機械学習モデル104を訓練するために使用されるサンプリングされた履歴データ314は、プロセス400を参照して説明される訓練データに加えて、任意の好適なデータであり得ることを理解されたい。例えば、ユーザ入力データ自体(例えば、押下されたボタン、作動された制御など)は、ゲームコントローラ106に提供されるユーザ入力の種類を予測するための訓練データとして使用され得る。例えば、プレイヤー110は、特定のシーケンスで制御を作動させて、特定のシーケンスのボタン押下がゲームキャラクタに特別な方法で特別な武器または操作を発射させ得る格闘/戦闘ビデオゲームなどのビデオゲーム120で、プレイヤー制御キャラクタの特別な操作を実行し得る。したがって、訓練モジュール308は、ボタン押下の特定のシーケンスのある期間内に受信されたゲーム制御データ116にアクセスして、機械学習モデルを訓練し、プレイヤー110がビデオゲーム120において特別な操作を完了しようとしているときを予測することができる。
【0068】
さらに、プロセス400による機械学習モデル104の訓練は、例えば、プレイヤーごとおよび/またはプレイヤーコミュニティごとであり得ることを理解されたい。プレイヤーごとの訓練例において、機械学習モデル104は、特定のプレイヤー110のユーザアカウントに関連付けられたデータ314上で訓練され、特定のプレイヤー110がゲームコントローラ106に提供するユーザ入力を予測することを学習することができる。プレイヤーコミュニティの訓練例において、機械学習モデル104は、プレイヤーコミュニティの複数のユーザアカウントに関連付けられたデータ314上で訓練され、一般プレイヤー110がゲームコントローラ106に提供するユーザ入力を予測することを学習することができる。この後者の訓練アプローチは、単一のプレイヤーに関連付けられた十分なデータ314がなくても、そのプレイヤーの110の行動を正確に予測することができない場合に有用であり得る。
【0069】
図5は、訓練された機械学習モデル104を利用して、プレイヤーのゲームコントローラ106へのユーザ入力を予測し、レイテンシを補正するために、ユーザ入力の機械学習予測を使用して、ゲーム制御データ108を予め生成するための例示的なプロセス500のフロー図である。考察を目的として、プロセス500は、以前の図を参照して説明される。さらに、
図4および
図5の外部ページ参照「A」によって示されるように、プロセス500は、プロセス400のブロック412から進み得る。
【0070】
502において、コンピューティングシステム102は、入力データとして、訓練された機械学習モデル104に提供されることになるデータを受信し得る。ブロック502で受信されたこのデータは、ゲームコントローラ106によって生成されたセンサデータ118を含んでもよい。ブロック502において受信されたセンサデータ118は、これらに限定されないが、キャパシタンス値、抵抗値、変位値、速度値、加速度値、温度値、湿度値などを含み得る。いくつかの実施形態では、センサデータ118は、センサデータ118内の値がゲームコントローラ106の物理センサ202によって生成された生(例えば、フィルタリングされていない、増幅されていない)値を表すような生センサデータ(例えば、生ジャイロスコープデータ、生加速度計データ、生容量センサデータなど)である。さらに、コンピューティングシステム102がリモートコンピューティングシステム102である場合、ブロック502で受信されたセンサデータ118は、ビデオゲーム120(例えば、第2のプレイヤー112(B)とマルチプレイヤーモードでプレイされているビデオゲーム120)の第1のプレイヤー110(A)に関連付けられた第1のクライアントマシン112(A)から受信され得る。しかしながら、クライアントマシン112自体が、ブロック502で、リモートシステム102から、またはローカルゲームコントローラ106からデータを受信し得ることを理解されたい。
【0071】
追加的に、または代替的に、ブロック502で受信されたデータは、ビデオゲーム120(例えば、少なくとも第1のプレイヤー110(A)および第2のプレイヤー110(B)についてマルチプレイヤーモードで実行中のビデオゲーム)から受信されたゲーム状態データ126を含んでもよい。ゲーム状態データ126は、現在のプレイヤーの動き、ゲームマップ内のゲームキャラクタの現在の位置、現在のキャラクタクラス、および現在選択されている武器など、ビデオゲーム120の現在のゲーム状態を含み得る。
【0072】
504において、コンピューティングシステム102は、ブロック502におけるデータの受信からある期間内に、プレイヤー110がゲームコントローラ106に提供する、プレイヤーのクライアントマシン112からの対応するゲーム制御データ116の受信を引き起こすユーザ入力を予測する目的で、スコア付け構成要素310を介して、ブロック502において受信されたデータの少なくとも一部を訓練された機械学習モデル104への入力として提供し得る。例えば、センサデータ118は、第1のプレイヤー110(A)がゲームコントローラ106に提供するユーザ入力のタイプを予測するために、訓練された機械学習モデル104への入力として提供され得、それによって、対応するゲーム制御データ116を次のNミリ秒内に第1のクライアントマシン112(A)から受信させ得、Nは、約1ミリ秒~200ミリ秒の範囲内の値などの任意の好適な値であり得る。別の例として、ゲーム状態データ126は、センサデータ118の代わりに、またはセンサデータ118とともに追加の入力として、第1のプレイヤー110(A)がゲームコントローラ106に提供するユーザ入力のタイプを予測するために、訓練された機械学習モデル104への入力として提供され得る。いくつかの実施形態では、センサデータ118の履歴および/またはゲーム状態データ126の履歴(例えば、最後のPミリ秒にわたって受信されたデータ)は、ブロック504において、訓練された機械学習モデル104への入力として提供され得る。例えば、訓練された機械学習モデル104は、プレイヤー110が、閾値を超える時間の間、閾値を超える力の量で「A」ボタンを押下した直後に、プレイヤー110が「B」ボタンを押下することを予測することを学習し得る。同様に、センサ値のランピング(例えば、減少または増加)は、将来のタイプのユーザ入力を示し得る。
【0073】
506において、コンピューティングシステム102は、スコア付け構成要素310を介して、訓練された機械学習モデル104からの出力として、ユーザ入力のタイプが、ブロック502においてデータを受信してからある期間(例えば、Nミリ秒)内に対応するゲーム制御データ116を生成させるように、ビデオゲーム120のプレイヤー110(例えば、第1のプレイヤー110(A))に関連付けられたゲームコントローラ106に提供される確率(または確率)に関連する、またはそれを示すスコア128を生成し得る。ブロック506でスコアが割り当てられたユーザ入力のタイプは、これらに限定されないが、ゲームコントローラ106の特定の指操作制御部(例えば、ボタン、ジョイスティック、Dパッドなど)の作動、ゲームコントローラ106の特定の方向(例えば、並進運動のX、Y、またはZ方向、および/またはロール、ピッチ、もしくはヨー回転運動の方向(例えば、時計回りまたは反時計回り))への移動、オブジェクトがゲームコントローラ106の特定の部分(例えば、ハンドル、表面、指操作制御部など)の上をホバリングするか、もしくは特定の部分に接触する、またはオブジェクトが、力の特定の量で、ゲームコントローラ106の一部分を押すことを含み得る。例えば、これらのタイプのユーザ入力は、プレイヤー制御キャラクタにジャンプさせる(例えば、「A」ボタンを押下すると、ゲームキャラクタにジャンプさせることができる)、左または右に回転させる(例えば、Dパッドを押下する、ジョイスティックを偏向させる、またはゲームコントローラ106を回転させると、ゲームキャラクタに左または右に回転させることができる)、武器を発射させる(例えば、「B」ボタンを押下すると、武器を発射させることができる)などを意図したアクションに関連し得る。いくつかの実施形態では、スコア128は、[0,1]の範囲で正規化される変数である。このスコア128は、ユーザ入力のタイプがゲームコントローラ106に提供される確率と単調な関係を有し得る。スコア128と特定のタイプのユーザ入力に関連付けられた実際の確率との関係は、単調ではあるが、直線関係である場合か、または直線関係でない場合があり得る。
【0074】
508において、1つ以上の基準が満たされるか否かに関して決定が行われ得る。例えば、ブロック506で生成された機械学習スコア128は、スコア128が閾値スコアを満たす(例えば、超える、満たすまたは超えるなど)かどうかを判定するために、閾値スコアに対して評価されてもよい。したがって、スコア128が閾値スコアを満たす場合、例示的な基準がブロック508で満たされる。閾値スコアは、異なる閾値スコアがユーザ入力の異なるタイプに関連付けられるように、スコア128が割り当てられる特定のタイプのユーザ入力に関連付けられ得る。これは、システムが、よりパフォーマンスクリティカルなプレイヤーのアクションのために、保守的な方法でゲーム制御データ108を積極的に生成することを可能にする。例えば、プレイヤー110が現在、敵の射撃によって殺されることを避けるためにビデオゲーム120の障壁の後ろに隠れるようにキャラクタを制御しており、スコア128が、Dパッドがゲームキャラクタを射線に配置する特定の方向に押下され、ゲームキャラクタがビデオゲーム120で殺される可能性がある確率に関連している場合、比較的高い閾値スコアは、このパフォーマンスクリティカルなタイプのユーザ入力に関連付けられ得、そのタイプのユーザ入力に関連付けられたスコア128が比較的高い閾値スコアを満たさない限り、システムが対応するゲーム制御データ108を積極的に生成してカバーからゲームキャラクタを移動させないようにする。ゲームのプレイ品質にそれほど影響を与えない他のタイプのユーザ入力は、比較的低い閾値スコアに関連付けられ得、その結果、レイテンシがそれらのタイプのユーザ入力でより頻繁に補正され得ることが理解され得る。しかしながら、いくつかの実施形態では、タイムリーに武器を発射してターゲットをヒットさせるなど、パフォーマンスクリティカルなタイプのユーザ入力であっても、レイテンシ補正の恩恵を受け得る。ブロック508での評価は、この目的のために、特定のタイプのユーザ入力を予測する精度統計を考慮し得る。例えば、システムが特定のタイプのユーザ入力を99.99%の時間で正確に予測する場合、ブロック508における閾値スコアは、対応するゲーム制御データ108を積極的に生成してレイテンシを減少させることを可能にするために比較的低くてもよく、一方、システムが予測するのが不得手である他のタイプのユーザ入力については、比較的高い閾値スコアが、ブロック508において使用されて、予測の偽陽性率を緩和し得る。
【0075】
ブロック508で評価され得る別の例示的な基準は、問題のユーザ入力のタイプが、レイテンシを補正するためにプレイヤーの代わりにゲーム制御データが積極的に生成されることになるユーザ入力のタイプとして分類されるかどうかである。例えば、コンピューティングシステム102からアクセス可能なデータストア124は、特定のタイプのユーザ入力を、システムがゲーム制御データ108を積極的に生成するものとしてタグ付けすることができ、他のタイプのユーザ入力は、考慮から除外されるものとしてタグ付けされ得る。言い換えれば、プレイヤー110の代わりに予測することは有益ではないと考えられる特定のタイプのユーザ入力が存在してもよく、それらのタイプのユーザ入力に対応する実際のゲーム制御データ116を待つのがよい。したがって、ブロック506においてスコア128を割り当てられるユーザ入力のタイプが、プレイヤー110の代わりにゲーム制御データ108が積極的に生成されるユーザ入力のタイプのうちの1つであると決定された場合、ブロック508において例示的な基準が満たされる。いくつかの実施形態では、ゲーム制御データ108を積極的に生成するために考慮される閾値スコアおよび/またはユーザ入力のタイプの分類は、少なくとも部分的にユーザ設定によって指示されてもよい。例えば、ユーザ110は、システムがレイテンシを補正することをどの程度望むか、および/またはユーザ110が自分の代わりにシステムが予測することを望むユーザ入力の種類を指定し得る。さらに、いくつかのビデオゲーム120では、特定のタイプのユーザ入力が予測され、他のビデオゲーム120では、それらのタイプのユーザ入力が予測されないように、閾値スコアおよび/またはユーザ入力のタイプの分類は、ゲーム固有であってもよい。
【0076】
ブロック508で1つ以上の基準が満たされない場合、プロセス500は、ブロック508からブロック510への「いいえ」経路に従い得、コンピューティングシステム102は、ユーザ入力の予測されたタイプのためにユーザの代わりにゲーム制御データ108を積極的に生成する代わりに、実際のゲーム制御データ116を待ち得る。例えば、これは、ユーザ入力のタイプについてのスコア128が、そのタイプのユーザ入力に関連付けられた閾値スコアを満たさなかった場合、および/またはユーザ入力のタイプが、ゲーム制御データ108が積極的に生成されるものとして分類されない場合にそうであり得る。ブロック508で1つ以上の基準が満たされた場合、プロセス500は、ブロック508からブロック512への「はい」のルートを辿り得る。
【0077】
512において、コンピューティングシステム102は、ゲーム制御データ生成器312を介して、ブロック506において生成されたスコア128に関連付けられたユーザ入力のタイプに対応するゲーム制御データ108を生成し得る。ブロック512におけるゲーム制御データ108の生成は、実際に予定されるゲーム制御データ116が生成される前に、積極的に行われる。データストア124は、コンピューティングシステム102が、それがゲームコントローラ106によって生成されたように見えるゲーム制御データ108を生成することができるように、ユーザ入力のタイプからゲーム制御データ108へのマッピングを維持し得る。
【0078】
514において、コンピューティングシステム102は、ゲーム制御データ生成器312を介して、ビデオゲーム120への入力としてゲーム制御データ108を提供し得る。516において、コンピューティングシステム102は、ゲーム制御データ生成器312を介して、プレイヤー110の代わりに積極的に生成されたゲーム制御データ108に少なくとも部分的に基づいて、ビデオゲーム120からの出力としてビデオゲームデータ122を受信し得る。518において、リモートコンピューティングシステム102は、コンピュータネットワーク114を介して、ビデオゲームデータ122をクライアントマシン112に送信することができる。例えば、マルチプレイヤービデオゲームシナリオでは、ブロック512で生成されたゲーム制御データ108は、第1のプレイヤー110(A)がゲームコントローラ106(A)にあるタイプのユーザ入力を提供するという予測に基づいて、第1のプレイヤー110(A)の代わりに生成され得、ブロック518で送信されたビデオゲームデータ122は、第1のプレイヤー110(A)とマルチプレイヤーモードでビデオゲーム120をプレイしている第2のプレイヤー110(B)の第2のクライアントマシン112(B)に送信され得る。ビデオゲームデータ112は、このようにして任意の数のクライアントマシン112に送信され得ることを理解されたい。クライアントマシン112がビデオゲームデータ122を受信し、クライアントマシン112のディスプレイ上にビデオゲームデータ122を提示するので、ブロック518でクライアントマシン112にビデオゲームデータ122を送信することによって、リモートシステム102は、クライアントマシン112のディスプレイ上にビデオゲームデータ122を提示することを引き起こしていると見なすことができる。しかしながら、訓練された機械学習モデル104および/またはビデオゲーム120は、クライアントマシン112上でローカルに実行され得、これらの実施形態では、ビデオゲームデータ122は、クライアントマシン112上で生成され得、したがって、プロセス500は、これらの実施形態では、ブロック518を省略し得ることを理解されたい。これらの実施形態では、リモートシステム102は、ブロック502で受信されたデータなどの他のデータを、コンピュータネットワーク114を介してクライアントマシン112に送信することができ、クライアントマシン112(B)は、ビデオゲームデータ122をローカルに生成し、クライアントマシン112(B)のディスプレイ上にビデオゲームデータ122を提示することができる。コンピュータネットワーク114が省略されるとき、クライアントマシン112は、ブロック502でゲームコントローラ106および/またはクライアントマシン112の構成要素から(例えば、その上で実行するビデオゲーム120から)直接データを受信し得、クライアントマシン112(A)は、ビデオゲームデータ122を生成し、クライアントマシン112(A)のディスプレイ上にビデオゲームデータ122を提示し得る。
【0079】
したがって、プロセス500は、ターゲットプレイヤー110がビデオゲーム120で何をしようとしているかを予測し、そのターゲットプレイヤー110の代わりに対応するゲーム制御データ108を積極的に生成し、ゲーム制御データ108を使用して、ターゲットプレイヤー110がそれを行うときにターゲットプレイヤー110が何を行うかを他のプレイヤー110が見るように(ターゲットプレイヤー110のゲームコントローラ106へのユーザ入力の予測が正確であると仮定して)ビデオゲームプラットフォームのレイテンシを補正するための技術を示す。この技術を使用して、各クライアントマシン112は、ネットワーク114を介して接続されるすべてのプレイヤー110のゲームコントローラ106がクライアントマシン112に直接接続されるセットアップを模倣するデータを受信する。したがって、訓練された機械学習モデル104は、実際のゲーム制御データ116がまだそれらのプレイヤー110から受信されていないにもかかわらず、他のプレイヤーが現在行っていることを予測するために利用される。これは、他のプレイヤー110のゲームキャラクタがより現実的な方法で行動することを可能にする。例えば、
図1の実施例において、訓練された機械学習モデル104に入力されるセンサデータ118は、ゲームコントローラ106(A)が右にねじれ始めていることを示し得、予測は、第1のプレイヤー110(A)が次のNミリ秒において「A」ボタンを押下する可能性が高いことであり得る。別の実施例として、訓練された機械学習モデル104に入力されたゲーム状態データ126が、第1のプレイヤーの110(A)キャラクタが壁に直接向かって走っていることを示し、システムが、キャラクタが走り上がって壁にぶつかるのに十分な長さのゲーム制御データ116を過去200ミリ秒間受信していない場合、予測は、第1のプレイヤー110(A)が、数百万の過去のゲームセッションに関するゲーム状態データが、ほぼすべての人が、第1のプレイヤー110(A)と同じゲーム状態で壁を飛び越えることを示すため、次のNミリ秒間に「A」ボタンを押下する可能性が高いことであり得る。場合によっては、200ミリ秒以下程度のレイテンシに対する補正は、ビデオゲーム120における成功または失敗(例えば、ゲームキャラクタの生死)の間の差異を意味し得る。したがって、ゲームコントローラ106へのユーザ入力の機械学習された予測を使用するレイテンシ補正技術は、マルチプレイヤーゲームのプレイヤー110間の相互作用を正しく調節する(例えば、プレイヤー110は、ビデオゲームプラットフォームのレイテンシに起因して不当にペナルティを受けない)。前述のように、ユーザ入力の機械学習予測はまた、ビデオゲームコンテンツのより現実的な外観を作成するためにアニメーション強化を利用することを可能にする。例えば、ジャンプの直前のゲームキャラクタの重みのシフトまたはしゃがみの動きなど、ゲームキャラクタの予測される「ジャンプ」のためのリードインアニメーションをレンダリングすることができる。
【0080】
図6は、コンピュータネットワーク114のレイテンシを測定し、測定されたレイテンシに基づいてゲームコントローラ106へのユーザ入力を予測するために使用される複数の訓練された機械学習モデル104のうちの1つを選択するための例示的なプロセス600のフロー図である。考察を目的として、プロセス600は、以前の図を参照して説明される。
【0081】
602において、コンピューティングシステム102は、クライアントマシン112がビデオゲームサービスと対話するために接続されるコンピュータネットワーク114のレイテンシを測定し得る。ネットワークのレイテンシは、ブロック602で測定されたレイテンシ値を取得するために、データがトランジット中にどのくらい遅延されるかを示す値として測定され得る。この測定は、定期的に、新しいゲームセッションの開始時および/またはゲームセッション中に、または任意の他の好適な時間(例えば、イベントによってトリガされる)に実行され得る。
【0082】
604において、コンピューティングシステム102は、測定されたレイテンシ値に少なくとも部分的に基づいて、可能な期間の範囲にわたるある期間(例えば、Nミリ秒の期間)を決定し得る。例えば、ネットワーク114が比較的遅く、トランジット中の遅延が渋滞などにより比較的高いことを示し得るより高いレイテンシ値は、より長い期間に対応し得るが、ネットワーク114が比較的速く、トランジット中の遅延が比較的低いことを示し得るより低いレイテンシ値は、より短い期間に対応し得る。データストア124は、この目的のためにレイテンシ値から時間周期へのマッピングを維持してもよく、または時間周期は、レイテンシが関数の変数である関数に基づいて計算されてもよい。
【0083】
606において、コンピューティングシステム102は、ブロック604で判定された時間周期に少なくとも部分的に基づいて、利用可能な複数の訓練された機械学習モデルから訓練された機械学習モデル104を選択し得る。例えば、機械学習モデル104は、異なる期間内に発生するゲームコントローラ106への将来のユーザ入力を予測するように訓練され得る。例えば、第1の訓練された機械学習モデル104は、次の5ミリ秒以内の、対応するゲーム制御データ116の受信を引き起こすユーザ入力を予測するように訓練され得、第2の訓練された機械学習モデル104は、次の200ミリ秒以内の、対応するゲーム制御データ116の受信を引き起こすユーザ入力を予測するように訓練され得る。したがって、測定されたレイテンシに基づいて、システムは、将来の特定の時間量を予測するための適切な機械学習モデル104を動的に選択することができる。どのくらい先まで予測するかの分散は、ネットワークのトポロジーに基づいてもよい(例えば、将来的に先を予測する機械学習モデル104は、広域ネットワークに使用され得、一方、より短い期間にわたって予測する機械学習モデル104は、例えば「リードイン」アニメーションをトリガするために、機械学習モデル104がクライアントマシン112上で実行するときに、家庭内ストリーミングプラットフォームまたはローカル予測に使用され得る)。
【0084】
図7は、予測誤差を判定するために、ユーザ入力の機械学習された予測に基づいて積極的に生成されたゲーム制御データ108と実際のゲーム制御データ116を比較し、モデル104の性能を検証する目的で予測誤差を記録するための例示的なプロセス700のフロー図である。考察を目的として、プロセス700は、以前の図を参照して説明される。さらに、
図5および
図7の外部ページ参照「B」によって示されるように、プロセス700は、プロセス500のブロック518から進み得る。
【0085】
702において、プロセス500においてプレイヤー110の代わりにゲーム制御データ108を積極的に生成した後、コンピューティングシステム102は、その後、訓練された機械学習モデル104に入力されたデータを受信してからある期間内に、プレイヤー110に関連付けられた実際のゲーム制御データ116を受信し得る。予測が正確であった場合、実際のゲーム制御データ116は、積極的に生成されたゲーム制御データ108と一致する。予測が不正確であった場合、実際のゲーム制御データ116は、積極的に生成されたゲーム制御データ108と一致しない。
【0086】
704において、コンピューティングシステム102は、レイテンシを補正するために、ブロック702で受信された実際のゲーム制御データ116と、プロセス500のブロック512で積極的に生成されたゲーム制御データ108とを比較することに少なくとも部分的に基づいて、予測誤差を判定し得る。
【0087】
706において、コンピューティングシステム102は、予測誤差を経時的に追跡することができ、ゲームコントローラ106への特定のタイプのユーザ入力の予測のための統計を生成することができるように、記録された予測誤差のデータベースに予測誤差を記録し得る。これらの記録された予測誤差は、モデル104が予想どおりに行動し、所望のレベルの性能で実行されているかどうかを確認することなどによって、訓練された機械学習モデル104の性能を検証するために利用され得る。
【0088】
主題は、構造的特徴に固有の言語で説明されているが、添付の特許請求の範囲で定義された主題が必ずしも説明された特定の特徴に限定されないことを理解されたい。むしろ、特定の特徴は、特許請求の範囲を実装する例示的な形態として開示される。
以下に、本願出願時の特許請求の範囲に記載された発明を付記する。
[1]
方法であって、
コンピューティングシステムによって、ビデオゲームのプレイヤーに関連付けられたセンサデータを受信することと、
前記センサデータの前記受信からある期間内の、前記コンピューティングシステムによる対応するゲーム制御データの受信を引き起こす、前記プレイヤーに関連付けられたゲームコントローラへのユーザ入力を、
訓練された機械学習モデルへの入力として前記センサデータを提供することと、
前記訓練された機械学習モデルからの出力としてスコアを生成することであって、前記スコアが、ユーザ入力のタイプが前記ゲームコントローラに提供される確率を示す、生成することと、によって、前記コンピューティングシステムによって予測することと、
前記コンピューティングシステムによって、前記スコアに少なくとも部分的に基づいて、前記ユーザ入力のタイプに対応するゲーム制御データを生成することと、
前記ビデオゲームへの入力として前記ゲーム制御データを提供することと、
前記ゲーム制御データに少なくとも部分的に基づいて、前記ビデオゲームからの出力として、ビデオゲームデータを受信することと、
前記コンピューティングシステムによって、ディスプレイ上の前記ビデオゲームデータの提示を引き起こすことと、を含む、方法。
[2]
前記センサデータが、前記ゲームコントローラの1つ以上の物理センサによって生成された生のセンサデータを含み、前記生のセンサデータが、生のジャイロスコープデータ、生の加速度計データ、または生の静電容量センサデータのうちの少なくとも1つを含む、[1]に記載の方法。
[3]
前記ユーザ入力のタイプが、
前記ゲームコントローラの特定の指操作制御部の作動、
前記ゲームコントローラの特定の方向への移動、
オブジェクトが前記ゲームコントローラの特定の部分の上をホバリングするか、もしくは前記特定の部分に接触すること、または
前記オブジェクトが、力の特定の量で、前記ゲームコントローラの一部分を押すこと、のうちの少なくとも1つを含む、[1]に記載の方法。
[4]
前記予測する前に、前記コンピューティングシステムによって、前記ビデオゲームからゲーム状態データを受信することと、
前記訓練された機械学習モデルへの前記入力として前記センサデータを前記提供することに加えて、前記ゲーム状態データを、前記訓練された機械学習モデルへの追加の入力として提供することと、をさらに含み、
前記スコアが、前記訓練された機械学習モデルへの前記追加の入力として提供された前記ゲーム状態データに少なくとも部分的に基づいて生成される、[1]に記載の方法。
[5]
前記センサデータの前記受信の前に、
前記コンピューティングシステムによって、前記ビデオゲームの過去のセッションまたは異なるビデオゲームの過去のセッション中に生成された履歴センサデータにアクセスすることと、
前記コンピューティングシステムによって、前記履歴センサデータが受信されてから前記ある期間内に生成された履歴ゲーム制御データにアクセスすることと、
前記履歴センサデータに、前記ある期間内に受信された前記履歴ゲーム制御データに対応する、ユーザ入力の複数のタイプのうちの1つを示すラベルをラベル付けすることと、
訓練データとして前記履歴センサデータを使用して機械学習モデルを訓練して、前記訓練された機械学習モデルを取得することと、をさらに含む、[1]に記載の方法。
[6]
前記ある期間が、約1ミリ秒~約200ミリ秒の範囲内である、[1]に記載の方法。
[7]
前記センサデータが、第1のクライアントマシンからコンピュータネットワークを介して受信され、前記ディスプレイ上の前記ビデオゲームデータの前記提示を前記引き起こすことが、前記コンピュータネットワークを介して、前記ビデオゲームデータを第2のクライアントマシンに送信することを含み、前記方法が、
測定されたレイテンシ値を取得するために、前記コンピュータネットワークのレイテンシを測定することと、
前記測定されたレイテンシ値に少なくとも部分的に基づいて、前記ある期間を決定することと、
前記ある期間に少なくとも部分的に基づいて、複数の訓練された機械学習モデルから前記訓練された機械学習モデルを選択することと、をさらに含む、[1]に記載の方法。
[8]
方法であって、
コンピューティングシステムによって、ビデオゲームからゲーム状態データを受信することと、
訓練された機械学習モデルへの入力として、前記ゲーム状態データを提供することと、
前記ゲーム状態データの前記受信からある期間内に、ユーザ入力のタイプが前記ビデオゲームのプレイヤーに関連付けられたゲームコントローラに提供され、対応するゲーム制御データが前記コンピューティングシステムによって受信される確率に関連するスコアを、前記訓練された機械学習モデルからの出力として生成することと、
前記コンピューティングシステムによって、前記ユーザ入力のタイプに対応するゲーム制御データを生成することと、
前記ビデオゲームへの入力として前記ゲーム制御データを提供することと、
前記ビデオゲームからの出力としてビデオゲームデータを受信することと、
前記コンピューティングシステムによって、ディスプレイ上の前記ビデオゲームデータの提示を引き起こすことと、を含む、方法。
[9]
前記ユーザ入力のタイプが、
前記ゲームコントローラの特定の指操作制御部の作動、
前記ゲームコントローラの特定の方向への移動、
オブジェクトが前記ゲームコントローラの特定の部分の上をホバリングするか、もしくは前記特定の部分に接触すること、または
前記オブジェクトが、力の特定の量で、前記ゲームコントローラの一部分を押すこと、のうちの少なくとも1つを含む、[8]に記載の方法。
[10]
前記ゲーム状態データの前記受信の前に、
前記コンピューティングシステムによって、前記ビデオゲームの過去のセッション中に発生した前記ビデオゲームのゲーム状態を含む履歴ゲーム状態データにアクセスすることと、
前記コンピューティングシステムによって、前記ゲーム状態が前記過去のセッション中に発生してから前記ある期間内に生成された履歴ゲーム制御データにアクセスすることと、
前記履歴ゲーム状態データに、前記ある期間内に受信された前記履歴ゲーム制御データに対応する、ユーザ入力の複数のタイプのうちの1つを示すラベルをラベル付けすることと、
訓練データとして前記履歴ゲーム状態データを使用して機械学習モデルを訓練して、前記訓練された機械学習モデルを取得することと、をさらに含む、[8]に記載の方法。
[11]
前記コンピューティングシステムによって、前記プレイヤーに関連付けられたセンサデータを受信することと、
前記訓練された機械学習モデルへの前記入力として前記ゲーム状態データを前記提供することに加えて、前記センサデータを、前記訓練された機械学習モデルへの追加の入力として提供することと、をさらに含み、
前記スコアが、前記訓練された機械学習モデルへの前記追加の入力として提供された前記センサデータに少なくとも部分的に基づいて生成される、[8]に記載の方法。
[12]
前記センサデータが、前記ゲームコントローラの1つ以上の物理センサによって生成された生のセンサデータを含み、前記生のセンサデータが、生のジャイロスコープデータ、生の加速度計データ、または生の静電容量センサデータのうちの少なくとも1つを含む、[11]に記載の方法。
[13]
前記ゲーム制御データを前記生成する前に、レイテンシを補正するために、ゲーム制御データがプレイヤーの代わりに積極的に生成されるユーザ入力のタイプを示すデータにアクセスすることと、
前記ユーザ入力のタイプが前記ユーザ入力のタイプのうちの1つであると判定することと、をさらに含み、
前記ゲーム制御データを前記生成することは、前記ユーザ入力のタイプが前記ユーザ入力のタイプのうちの1つであると前記判定することに応答してのものである、[8]に記載の方法。
[14]
前記スコアが、前記ユーザ入力のタイプに関連付けられた閾値スコアを満たすと判定することであって、前記閾値スコアが、ユーザ入力の異なるタイプに関連付けられた複数の異なる閾値スコアのうちの1つである、判定すること、をさらに含み、
前記ゲーム制御データを前記生成することは、前記スコアが前記閾値スコアを満たすことに少なくとも部分的に基づいている、[8]に記載の方法。
[15]
システムであって、
1つ以上のプロセッサと、
コンピュータ実行可能命令を記憶しているメモリと、を備え、前記命令が、前記1つ以上のプロセッサによって実行されるときに、前記システムに、
ビデオゲームのプレイヤーに関連付けられたセンサデータを受信することと、
訓練された機械学習モデルへの入力として、前記センサデータを提供することと、
前記センサデータの前記受信からある期間内に、ユーザ入力のタイプが前記プレイヤーに関連付けられたゲームコントローラに提供され、対応するゲーム制御データが前記システムによって受信される確率を示す前記スコアを、前記訓練された機械学習モデルからの出力として生成することと、
前記ユーザ入力のタイプに対応するゲーム制御データを生成することと、
前記ビデオゲームへの入力として前記ゲーム制御データを提供することと、
前記ビデオゲームからの出力としてビデオゲームデータを受信することと、
ディスプレイ上の前記ビデオゲームデータの提示を引き起こすことと、を行わせる、システム。
[16]
前記ユーザ入力のタイプが、
ゲームコントローラの特定の指操作制御部の作動、
前記ゲームコントローラの特定の方向への移動、
オブジェクトが前記ゲームコントローラの特定の部分の上をホバリングするか、もしくは前記特定の部分に接触すること、または
前記オブジェクトが、力の特定の量で、前記ゲームコントローラの一部分を押すこと、のうちの少なくとも1つを含む、[15]に記載のシステム。
[17]
前記コンピュータ実行可能命令は、前記1つ以上のプロセッサによって実行されると、前記システムに、
前記スコアが、前記ユーザ入力のタイプに関連付けられた閾値スコアを満たすと判定することであって、前記閾値スコアが、ユーザ入力の異なるタイプに関連付けられた複数の異なる閾値スコアのうちの1つである、判定すること、をさらに行わせ、
前記ゲーム制御データを生成することは、前記スコアが前記閾値スコアを満たすことに少なくとも部分的に基づいている、[15]に記載のシステム。
[18]
前記コンピュータ実行可能命令は、前記1つ以上のプロセッサによって実行されると、前記システムに、
前記センサデータの前記受信から前記ある期間内に、前記プレイヤーに関連付けられた実際のゲーム制御データを受信することと、
前記実際のゲーム制御データを前記ゲーム制御データと比較することに少なくとも部分的に基づいて、予測誤差を判定することと、をさらに行わせる、[15]に記載のシステム。
[19]
前記コンピュータ実行可能命令は、前記1つ以上のプロセッサによって実行されると、前記システムに、
前記予測誤差を、記録された予測誤差のデータベースに記録することをさらに行わせる、[18]に記載のシステム。
[20]
前記センサデータが、前記ゲームコントローラの1つ以上の物理センサによって生成された生のセンサデータを含み、前記生のセンサデータが、生のジャイロスコープデータ、生の加速度計データ、または生の静電容量センサデータのうちの少なくとも1つを含む、[15]に記載のシステム。