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

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

▶ マイクロソフト テクノロジー ライセンシング,エルエルシーの特許一覧

特表2022-553617途絶の間のアプリケーションへの自動ユーザ入力の提供
<>
  • 特表-途絶の間のアプリケーションへの自動ユーザ入力の提供 図1
  • 特表-途絶の間のアプリケーションへの自動ユーザ入力の提供 図2
  • 特表-途絶の間のアプリケーションへの自動ユーザ入力の提供 図3A
  • 特表-途絶の間のアプリケーションへの自動ユーザ入力の提供 図3B
  • 特表-途絶の間のアプリケーションへの自動ユーザ入力の提供 図3C
  • 特表-途絶の間のアプリケーションへの自動ユーザ入力の提供 図3D
  • 特表-途絶の間のアプリケーションへの自動ユーザ入力の提供 図3E
  • 特表-途絶の間のアプリケーションへの自動ユーザ入力の提供 図4
  • 特表-途絶の間のアプリケーションへの自動ユーザ入力の提供 図5
  • 特表-途絶の間のアプリケーションへの自動ユーザ入力の提供 図6
  • 特表-途絶の間のアプリケーションへの自動ユーザ入力の提供 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-12-26
(54)【発明の名称】途絶の間のアプリケーションへの自動ユーザ入力の提供
(51)【国際特許分類】
   G06F 3/0481 20220101AFI20221219BHJP
   G06N 20/00 20190101ALI20221219BHJP
   H04L 67/561 20220101ALI20221219BHJP
   A63F 13/422 20140101ALI20221219BHJP
   A63F 13/67 20140101ALI20221219BHJP
【FI】
G06F3/0481
G06N20/00
H04L67/561
A63F13/422
A63F13/67
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2022514971
(86)(22)【出願日】2020-10-09
(85)【翻訳文提出日】2022-04-19
(86)【国際出願番号】 US2020054882
(87)【国際公開番号】W WO2021080793
(87)【国際公開日】2021-04-29
(31)【優先権主張番号】16/660,584
(32)【優先日】2019-10-22
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.BLUETOOTH
(71)【出願人】
【識別番号】314015767
【氏名又は名称】マイクロソフト テクノロジー ライセンシング,エルエルシー
(74)【代理人】
【識別番号】100079108
【弁理士】
【氏名又は名称】稲葉 良幸
(74)【代理人】
【識別番号】100109346
【弁理士】
【氏名又は名称】大貫 敏史
(74)【代理人】
【識別番号】100117189
【弁理士】
【氏名又は名称】江口 昭彦
(74)【代理人】
【識別番号】100134120
【弁理士】
【氏名又は名称】内藤 和彦
(74)【代理人】
【識別番号】100108213
【弁理士】
【氏名又は名称】阿部 豊隆
(72)【発明者】
【氏名】ムサバ,モハメド
(72)【発明者】
【氏名】ディクソン,マシュー ミッチェル
(72)【発明者】
【氏名】ゴードン,ジェフリー ジャコビー
(72)【発明者】
【氏名】アダダ,マームード
(72)【発明者】
【氏名】メフリ,ソロウシュ
(72)【発明者】
【氏名】マクナマラ,アンドリュー ジェームス
(72)【発明者】
【氏名】モリソン,ジョナサン デイビッド
【テーマコード(参考)】
5E555
【Fターム(参考)】
5E555AA68
5E555BA02
5E555BA45
5E555BA76
5E555BB02
5E555BC09
5E555BD06
5E555CB73
5E555DD03
5E555EA19
5E555EA20
5E555FA00
(57)【要約】
本明細書は、アプリケーションによるユーザ入力の受信ができなくなる途絶、ユーザによるアプリケーションへの入力の提供ができなくなる途絶、及び/又は、ユーザによるアプリケーション出力の受信ができなくなるか若しくはユーザによるアプリケーション出力の受信に影響を及ぼす途絶に対処するための技法に関する。方法の一例は、ユーザによる対話型アプリケーションとの対話の間に対話型アプリケーションに対する途絶を検出することと、自動ユーザ入力を生成することと、対話型アプリケーションに対する途絶の間に、自動ユーザ入力を対話型アプリケーションに提供することとを伴う。
【特許請求の範囲】
【請求項1】
ハードウェア処理ユニットと、
コンピュータ可読命令を格納するストレージリソースと
を含むシステムであって、前記コンピュータ可読命令が、前記ハードウェア処理ユニットによって実行されると、
ストリーミング対話型アプリケーションによる1つ又は複数の実際のユーザ入力の受信に影響を及ぼすネットワーク途絶を検出することと、
前記ストリーミング対話型アプリケーションへの以前に受信された実際のユーザ入力を使用して自動ユーザ入力を生成することと、
前記ネットワーク途絶の検出に応答して、前記ストリーミング対話型アプリケーションへの前記1つ又は複数の実際のユーザ入力の代わりに前記自動ユーザ入力を用いることと
を前記ハードウェア処理ユニットに行わせる、システム。
【請求項2】
前記コンピュータ可読命令が、前記ハードウェア処理ユニットによって実行されると、
前記ネットワーク途絶がない場合に、前記ストリーミング対話型アプリケーションを実行しているコンピューティングデバイスに受信された実際のユーザ入力を転送することと、
前記ネットワーク途絶の間に、前記ストリーミング対話型アプリケーションを実行している前記コンピューティングデバイスに前記自動ユーザ入力を転送することと
を前記ハードウェア処理ユニットに行わせる、請求項1に記載のシステム。
【請求項3】
前記コンピュータ可読命令が、前記ハードウェア処理ユニットによって実行されると、
前記ストリーミング対話型アプリケーションの出力を使用して前記自動ユーザ入力を生成すること
を前記ハードウェア処理ユニットに行わせる、請求項1に記載のシステム。
【請求項4】
前記コンピュータ可読命令が、前記ハードウェア処理ユニットによって実行されると、
前記ネットワーク途絶が解消されたこと及びさらなる実際のユーザ入力が受信されていることを検出することと、
前記ネットワーク途絶が解消されたことを検出することに応答して、前記さらなる実際のユーザ入力の代わりに前記自動ユーザ入力を用いることを中止することと
を前記ハードウェア処理ユニットに行わせる、請求項1に記載のシステム。
【請求項5】
前記ストリーミング対話型アプリケーションが、ビデオゲームである、請求項1に記載のシステム。
【請求項6】
前記自動ユーザ入力が、ビデオゲームコントローラに対する予測コントローラ入力を含む、請求項5に記載のシステム。
【請求項7】
前記コンピュータ可読命令が、前記ハードウェア処理ユニットによって実行されると、
前記ビデオゲームとのユーザ対話のユーザ対話モデルを使用して前記自動ユーザ入力を生成すること
を前記ハードウェア処理ユニットに行わせる、請求項5に記載のシステム。
【請求項8】
前記コンピュータ可読命令が、前記ハードウェア処理ユニットによって実行されると、
前記ユーザ対話モデルを生成すること
を前記ハードウェア処理ユニットに行わせる、請求項7に記載のシステム。
【請求項9】
前記ユーザ対話モデルが、ユーザ特有のモデルである、請求項8に記載のシステム。
【請求項10】
前記ユーザ対話モデルが、前記ビデオゲーム用のアプリケーション特有のモデルである、請求項9に記載のシステム。
【請求項11】
前記コンピュータ可読命令が、前記ハードウェア処理ユニットによって実行されると、
前記ネットワーク途絶の前に実際のユーザ入力を得ることと、
前記ネットワーク途絶の前に前記ビデオゲームの出力を得ることと、
前記自動ユーザ入力を生成するために、前記ユーザ対話モデルに前記実際のユーザ入力及び出力を入力することと
を前記ハードウェア処理ユニットに行わせる、請求項8に記載のシステム。
【請求項12】
前記ユーザ対話モデルが、機械学習モデルであり、前記コンピュータ可読命令が、前記ハードウェア処理ユニットによって実行されると、
廃棄された実際のユーザ入力を使用して前記機械学習モデルを訓練することであって、前記廃棄された実際のユーザ入力が、前記ネットワーク途絶の間にユーザによって提供され、前記途絶が終わった後に受信される、訓練すること
を前記ハードウェア処理ユニットに行わせる、請求項8に記載のシステム。
【請求項13】
コンピュータ可読命令を格納するコンピュータ可読記憶媒体であって、前記コンピュータ可読命令が、前記ハードウェア処理ユニットによって実行されると、
対話型アプリケーションの映像出力を受信することと、
ユーザによって提供された前記対話型アプリケーションへの実際のユーザ入力を受信することと、
前記対話型アプリケーションによるさらなる実際のユーザ入力の受信に影響を及ぼす途絶を検出することと、
前記対話型アプリケーションの前記映像出力及び前記実際のユーザ入力を予測モデルに提供することと、
前記予測モデルから予測ユーザ入力を得ることと、
前記途絶の間に前記予測ユーザ入力を前記対話型アプリケーションに提供することと
を含む動作を前記ハードウェア処理ユニットに実行させる、コンピュータ可読記憶媒体。
【請求項14】
前記動作が、
前記途絶が終わったことを検出することと、
前記途絶が終わったことを検出することに応答して、後に受信された実際のユーザ入力を前記対話型アプリケーションに提供することと
をさらに含む、請求項13に記載のコンピュータ可読記憶媒体。
【請求項15】
前記動作が、
前記予測ユーザ入力と合わせて前記後に受信された実際のユーザ入力をスムーズにすること
をさらに含む、請求項14に記載のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【背景技術】
【0001】
背景
[0001] 多くのコンピュータ環境では、途絶は問題となる。例えば、ユーザがネットワーク上でビデオゲームをプレイしているか又は別のタイプの対話型アプリケーションを使用している際、ネットワーク途絶が発生すると、対話型アプリケーションは、ユーザの入力に応答できなくなる可能性がある。また、途絶は、家族又は友人がユーザを中断させる際など、本質的に非技術的なものでもあり得る。そのような途絶に対処するための自動化の取り組みの成功例は限られている。
【発明の概要】
【0002】
概要
[0002] この概要は、簡略化した形態で選択された概念を紹介するために提供され、それらの概念については、以下の詳細な説明においてさらに説明される。この概要は、特許請求される対象物の主要な特徴又は不可欠な特徴を識別することを意図せず、また、特許請求される対象物の範囲を制限するために使用することも意図しない。
【0003】
[0003] この説明は、概して、アプリケーションによるユーザ入力の受信ができなくなる途絶、ユーザによる入力の提供ができなくなる途絶及び/又はユーザによるアプリケーション出力の受信ができなくなる途絶に対処するための技法に関する。その一例は、コンピューティングデバイス上で実行することができる方法又は技法を含む。方法又は技法は、ユーザによる対話型アプリケーションとの対話の間に対話型アプリケーションに対する途絶を検出することを含み得る。また、方法又は技法は、自動ユーザ入力を生成することや、途絶の検出に応答して、自動ユーザ入力を対話型アプリケーションに提供することも含み得る。
【0004】
[0004] 別の例は、ハードウェア処理ユニットと、コンピュータ可読命令を格納するストレージリソースとを有するシステムを含む。コンピュータ可読命令は、ハードウェア処理ユニットによって実行されると、ストリーミング対話型アプリケーションによる1つ又は複数の実際のユーザ入力の受信が少なくとも一時的にできなくなるネットワーク途絶を検出することをハードウェア処理ユニットに行わせることができる。また、コンピュータ可読命令は、以前に受信された実際のユーザ入力を使用して自動ユーザ入力を生成することをハードウェア処理ユニットに行わせることもできる。また、コンピュータ可読命令は、ネットワーク途絶の検出に応答して、ストリーミング対話型アプリケーションへの1つ又は複数の実際のユーザ入力の代わりに自動ユーザ入力を用いることをハードウェア処理ユニットに行わせることもできる。
【0005】
[0005] 別の例は、コンピュータ可読命令を格納するコンピュータ可読記憶媒体であって、コンピュータ可読命令が、ハードウェア処理ユニットによって実行されると、ハードウェア処理ユニットに動作を実行させる、コンピュータ可読記憶媒体を含む。動作は、対話型アプリケーションの映像出力を受信することと、ユーザによって提供された対話型アプリケーションへの実際のユーザ入力を受信することとを含み得る。また、動作は、対話型アプリケーションによるさらなる実際のユーザ入力の受信ができなくなる途絶を検出することも含み得る。また、動作は、対話型アプリケーションの映像出力及び実際のユーザ入力を予測モデルに提供することや、予測モデルから予測ユーザ入力を得ることも含み得る。また、動作は、途絶の間に予測ユーザ入力を対話型アプリケーションに提供することも含み得る。
【0006】
[0006] 上記でリストされる例は、読者を支援するための簡易参照を提供することを意図するものであり、本明細書で説明される概念の範囲を定義することは意図しない。
【0007】
図面の簡単な説明
[0007] 詳細な説明は、添付の図を参照して説明される。図では、参照番号の左端の数字は、参照番号が最初に現れる図を識別する。説明や図の異なる例における同様の参照番号の使用は、同様の又は同一のアイテムを示し得る。
【図面の簡単な説明】
【0008】
図1】[0008]本概念のいくつかの実装形態と一致するゲーム環境の例を示す。
図2】[0009]本概念のいくつかの実装形態と一致するタイムラインの例を示す。
図3A】[0010]本概念のいくつかの実装形態と一致するユーザエクスペリエンスの例を示す。
図3B】[0010]本概念のいくつかの実装形態と一致するユーザエクスペリエンスの例を示す。
図3C】[0010]本概念のいくつかの実装形態と一致するユーザエクスペリエンスの例を示す。
図3D】[0010]本概念のいくつかの実装形態と一致するユーザエクスペリエンスの例を示す。
図3E】[0010]本概念のいくつかの実装形態と一致するユーザエクスペリエンスの例を示す。
図4】[0011]本概念のいくつかの実装形態と一致する処理フローの例を示す。
図5】[0012]本概念のいくつかの実装形態と一致するユーザ対話モデルの例を示す。
図6】[0013]本概念のいくつかの実装形態と一致するシステムの例を示す。
図7】[0014]本概念のいくつかの実装形態と一致する方法又は技法の例を示す。
【発明を実施するための形態】
【0009】
詳細な説明
概括
[0015] 記述されるように、ユーザがアプリケーションを制御するために頻繁に入力を提供する対話型アプリケーション(ビデオゲーム、拡張現実アプリケーション又は他のアプリケーションなど)のユーザにとって、途絶は問題となり得る。オンラインアプリケーションの場合、ユーザデバイスとアプリケーションサーバとの間のネットワーク途絶により、アプリケーションサーバは、入力を受信するのが遅過ぎて、それらの入力を効果的に使用してオンラインアプリケーションを制御することができない可能性がある。それに加えて、ネットワーク途絶により、ユーザデバイスが映像又は音声出力などのアプリケーションサーバの出力を受信するのが遅過ぎて、ユーザが効果的に応答できない可能性がある。いずれの事例においても、アプリケーションエクスペリエンスに支障をきたす。
【0010】
[0016] アプリケーション途絶に対処するための基本の手法の1つは、途絶が始まる前に受信された最近の入力を途絶の間に使用し続けることである。しかし、この手法は、ユーザのアプリケーションエクスペリエンスに悪影響を及ぼし得る。例えば、途絶時間の間に生成されたアプリケーション出力に応答するためにユーザの入力を調整する機会がユーザにはなかったことを理由に、最近の入力は、アプリケーションにおけるマイナスの又は予想外の結果をもたらし得る。
【0011】
[0017] より洗練された代替の形態は、内部のアプリケーション状態をモニタすることと、より流動的なユーザエクスペリエンスを提供するために、途絶の間、内部のアプリケーション状態を調整することとを伴い得る。しかし、この手法は、途絶を管理するために内部のアプリケーションコードを修正すること及び/又は内部のアプリケーション状態とのフックを外部の途絶管理ソフトウェアに提供することなど、大規模な開発の取り組みを伴い得る。
【0012】
[0018] 開示される実装形態は、上記の問題に対処するアプリケーション途絶を軽減するための手法を提供する。開示される実装形態では、アプリケーション途絶の間、実際のユーザ入力の代わりに、自動ユーザ入力が用いられる。途絶が終わると、ユーザに制御を戻すことができる。
【0013】
[0019] いくつかの実装形態では、自動ユーザ入力は、内部のアプリケーション状態にアクセスすることなく生成することができる。例えば、ユーザ対話モデルは、アプリケーション出力及び以前に受信されたユーザ入力などの情報を使用して、自動ユーザ入力を生成することができ、ユーザ対話モデルによって生成された自動ユーザ入力は、途絶の間、アプリケーションに提供することができる。結果的に、開示される実装形態は、アプリケーションコードの修正を必要とすることなく、途絶の間、シームレスなエクスペリエンスをユーザに提供することができる。
【0014】
[0020] それに加えて、開示される実装形態は、途絶がない場合に特定のユーザが所定のアプリケーションとどのように対話するかを正確に反映する自動ユーザ入力を利用することによって、現実的なユーザエクスペリエンスを提供することができる。比較すると、以下でさらに論じられるように、ユーザ挙動を予測するというよりむしろ、最適な挙動を模擬する試みを行う手法の方が、非現実的な結果をもたらし得る。
【0015】
専門用語
[0021] 本明細書の目的のため、「アプリケーション」という用語は、指定された関数を実行するためのいかなるタイプの実行可能なソフトウェア、ファームウェア又はハードウェア論理も指す。「対話型アプリケーション」という用語は、受信されたユーザ入力に応答して処理を実行し、受信されたユーザ入力に応答してアプリケーション出力を反復的に、頻繁に又は継続的に調整するアプリケーションを指す。「オンラインアプリケーション」という用語は、あるデバイスから別のデバイスにアプリケーションをストリーミングするか又はダウンロードすることによって、いかなるタイプのコンピュータネットワーク又は通信リンク上でもアクセスすることができるアプリケーションを指す。「ストリーミングアプリケーション」という用語は、第1のデバイス上で実行し、ネットワーク又は他の通信リンク上で1つ又は複数の他のデバイスにアプリケーション出力のストリームを送信するオンラインアプリケーションを指す。1つ又は複数の他のデバイスは、例えば、ディスプレイ又は音声デバイスを使用して、アプリケーション出力を再生成することができ、また、ユーザ入力をストリーミングアプリケーションに提供することもできる。
【0016】
[0022] 「途絶」という用語は、対話型アプリケーションとのユーザ対話に少なくとも一時的に影響を及ぼすか又は対話型アプリケーションとのユーザ対話を少なくとも一時的に阻止するいかなる状況も指す。例えば、途絶は、例えば、対話型アプリケーションによる実際のユーザ入力の受信ができなくなる及び/又はユーザによるアプリケーション出力の受信ができなくなるネットワーク途絶又は他の技術的な問題など、本質的に技術的なものであり得る。一般的な途絶は、レイテンシ、帯域幅制限又はパケット落ちなどのネットワーク状態を含み得る。また、途絶は、例えば、友人又は家族との会話、着信電話などが原因でユーザが気を取られるなど、本質的に非技術的なものでもあり得る。
【0017】
[0023] 「ユーザ対話モデル」という用語は、例えば、自動ユーザ入力を生成することによって、アプリケーションとのユーザ対話をモデル化するために使用することができるいかなるタイプの機械学習、発見的又は規則に基づく手法も指す。「実際のユーザ入力」という用語は、対話型アプリケーションとの対話の経過中にユーザによって実際に提供された入力を指す。「自動ユーザ入力」という用語は、途絶の間、実際のユーザ入力の代わりに用いることができる機械生成表現を指す。いくつかの事例では、所定のモデルによって出力された自動ユーザ入力は、修正することなく使用することができ、他の事例では、モデルによって出力された自動ユーザ入力は、対話型アプリケーションに提供される前に、以前に受信された実際のユーザ入力と合わせてスムーズにするか又は組み合わせることができる。従って、「自動ユーザ入力」という用語は、ユーザ対話モデルの未修正出力と、実際のユーザ入力と合わせてスムーズにされているか又は組み合わされているユーザ対話モデルの出力の両方を包含する。
【0018】
[0024] 「機械学習モデル」という用語は、ユーザとアプリケーションとの間の過去の対話の特性を観察することによって、自動ユーザ入力を生成するために学習することができる広範なモデルのいずれかを指す。例えば、機械学習モデルは、ニューラルネットワーク、サポートベクタマシン、決定木、クラスタリングアルゴリズムなどであり得る。いくつかの事例では、機械学習モデルは、ラベル付けされた訓練データ、報酬関数又は他のメカニズムを使用して訓練することができ、他の事例では、機械学習モデルは、明示的なラベル又は報酬なしのデータを分析することによって学習することができる。「ユーザ特有のモデル」という用語は、特定のユーザ向けに少なくとも部分的に訓練されているか又は構築されている少なくとも1つのコンポーネントを有するモデルを指す。従って、この用語は、特定のユーザ向けに完全に訓練されているモデル、マルチユーザデータを使用して初期化され、特定のユーザ向けに調節されたモデル、及び、複数のユーザ向けに訓練された一般的なコンポーネントと特定のユーザ向けに訓練又は調節された1つ又は複数のコンポーネントの両方を有するモデルを包含する。同様に、「アプリケーション特有のモデル」という用語は、特定のアプリケーション向けに少なくとも部分的に訓練されているか又は構築されている少なくとも1つのコンポーネントを有するモデルを指す。
【0019】
[0025] 「ニューラルネットワーク」という用語は、特定の演算を実行するためのノードの層を使用するタイプの機械学習モデルを指す。ニューラルネットワークでは、ノードは、1つ又は複数のエッジを介して互いに接続される。ニューラルネットワークは、入力層、出力層及び1つ又は複数の中間層を含み得る。個々のノードは、事前に定義された関数(例えば、ReLU又はシグモイドなどの伝達関数)に従って、それらのそれぞれの入力を処理し、後続の層(又は、いくつかの事例では、前の層)に関数の出力を提供することができる。所定のノードへの入力には、入力とノードとの間のエッジの対応する重み値を乗じることができる。それに加えて、ノードは、個々のバイアス値を有し得、これもまた、出力を生成するために使用される。エッジ重み及び/又はバイアス値を学習するため、様々な訓練手順を適用することができる。
【0020】
[0026] ニューラルネットワーク構造は、異なる特定の関数を実行する異なる層を有し得る。例えば、ノードの1つ又は複数の層は、プーリング、符号化又は畳み込み演算など、特定の演算を集合的に実行することができる。本明細書の目的のため、「層」という用語は、入力及び出力(例えば、外部の供給源若しくはネットワークの他の層への又は外部の供給源若しくはネットワークの他の層からのもの)を共有するノードのグループを指す。「演算」という用語は、ノードの1つ又は複数の層によって実行することができる関数を指す。
【0021】
ビデオゲームシステムの例
[0027] 以下は、ネットワーク途絶がゲームプレイに影響を及ぼし得るストリーミングビデオゲームのコンテキストにおいて本概念をどのように採用できるかについてのいくつかの特定の例を説明する。しかし、本明細書の他の場所で論じられるように、本概念は、ビデオゲームに限定されず、ストリーミング又はネットワーク接続アプリケーションに限定されず、ネットワーク途絶への対処に限定されない。むしろ、本概念は、様々なタイプの対話型アプリケーションに対する多くの異なるタイプの途絶に対処するために、広範な技術環境において採用することができる。
【0022】
[0028] 図1は、開示される実装形態と一致する例示的なゲーム環境100を示す。例えば、図1は、アプリケーションサーバ102と、仲介サーバ104と、クライアントデバイス106と、ビデオゲームコントローラ108との間の例示的な通信を示す。アプリケーションサーバは、ストリーミングビデオゲームなどの対話型アプリケーションを実行し、出力110を生成することができ、出力110は、映像、音声及び/又は触力覚出力を含み得る。アプリケーションサーバは、仲介サーバに出力を送信することができ、仲介サーバは、クライアントデバイス106に出力を転送することができる。
【0023】
[0029] クライアントデバイス106は、ディスプレイ上に映像出力を表示し、スピーカを通じて音声出力を再生することができる。ビデオゲームが触力覚出力を提供する例では、クライアントデバイスは、ビデオゲームコントローラ108に触力覚出力を転送することができる(図1には図示せず)。ビデオゲームコントローラは、アプリケーションサーバから受信された触力覚出力に基づいて、触力覚フィードバックを生成することができる。それに加えて、ビデオゲームコントローラは、ビデオゲームコントローラの様々な入力メカニズムとのユーザ対話に基づいて、実際のユーザ入力112を生成することができる。ビデオゲームコントローラは、クライアントデバイスに実際のユーザ入力を送信することができ、クライアントデバイスは、仲介サーバ104に実際のユーザ入力を転送して戻すことができる。
【0024】
[0030] 途絶がない場合は、仲介サーバ104は、単に、パススルーサーバとして動作し、ゲームサーバに実際のユーザ入力112を転送することができる。しかし、ネットワーク途絶が検出された場合は、仲介サーバは、代わりに、自動ユーザ入力114をアプリケーションサーバに提供することができる。以下でさらに説明されるように、自動ユーザ入力により、アプリケーションサーバは、途絶が終わった時点でユーザがアプリケーションエクスペリエンスにシームレスに再導入されるように、途絶のユーザ認知を低減又は排除できるような方法で、アプリケーション処理を継続することができる。
【0025】
タイムラインの例
[0031] 図2は、タイムライン200の例を示す。タイムライン200は、3つの時間、すなわち、ネットワーク途絶の前に起こる時間202、ネットワーク途絶がある時間204及びネットワーク途絶の後に起こる時間206を包含する。タイムライン200は、ネットワーク途絶に対処するために、開示される実装形態をどのように使用できるかを示し、図2では、ネットワーク途絶は、ネットワーク状態表現208を通じて示されている。
【0026】
[0032] 時間202では、ビデオゲームを制御するために、実際のユーザ入力210が利用される。ビデオゲームは、実際のコントローラ入力及び/又は内部のゲーム状態に応答して、映像出力212、音声出力214及び/又は触力覚出力216を生成することができる。これらの出力は、必ずしも、固定レートで提供されるとは限らないが、いくつかの実装形態では、特に、映像及び音声は、指定されたフレームレートで提供できることに留意されたい。多くの事例では、特に、触力覚出力とユーザ入力は、同期しない。
【0027】
[0033] 時間204では、ネットワークは途絶されている。この例の目的のため、途絶は、ユーザへのトラフィックフローとユーザからのトラフィックフローの両方に影響を及ぼし、従って、ユーザのデバイスはビデオゲーム出力を受信せず、アプリケーションサーバは実際のユーザ入力をしないと想定する。途絶の間、ネットワーク途絶が原因で利用できない実際のユーザ入力の代わりに用いるために、自動ユーザ入力218が提供される。以下でさらに論じられるように、いくつかの実装形態では、自動ユーザ入力は、ネットワーク途絶の間にビデオゲーム出力へのアクセスを有するユーザ対話モデルによって生成することができる。例えば、ユーザ対話モデルがアプリケーションサーバへのローカルネットワークアクセスを有し、ネットワーク途絶が外部のネットワークで起こるか、又は、ユーザ対話モデルをビデオゲームと同じデバイス上で実行することが可能である。
【0028】
[0034] 時間206では、ネットワークが回復し、さらなる実際のユーザ入力が受信され、ゲームに提供される。以下でさらに論じられるように、これにより、ビデオゲームは、ユーザに混乱を生じさせることのないように、ネットワーク途絶からユーザ制御にシームレスに移行することができる。本明細書の他の場所で論じられるように、いくつかの実装形態は、ユーザ入力に対するネットワーク途絶の影響をさらに低減するために、自動ユーザ入力を実際のユーザ入力と合わせてスムーズにするか又は組み合わせることができる。
【0029】
ユーザエクスペリエンスの例
[0035] 図3A~3Eは、ドライブビデオゲームをプレイしているユーザの例示的なユーザエクスペリエンス300を示す。図3Aでは、道路304に沿って車302が移動している様子が示されている。また、図3Aは、方向表現310及びトリガ表現320も示し、それらは、ドライブゲームへのコントローラ入力を表す。一般に、方向表現は、ビデオゲームコントローラの方向入力メカニズム(例えば、車を操作するためのサムスティック)に対する方向の大きさを伝える。同様に、トリガ表現320は、例えば、車のスロットルを制御するための、ビデオゲームコントローラにおけるトリガ入力の大きさを伝える。サムスティック及びトリガは、コントローラ上で提供することができる「アナログ」入力メカニズムの2つの例である。「アナログ」という用語は、単にオン/オフだけではない入力メカニズムを指すために使用される。例えば、アナログ入力メカニズムへの入力の大きさを変えることにより、ユーザは、2より大きな値の範囲を使用してデジタル式で表すことができる信号をアナログ入力メカニズムに生成させることができる。
【0030】
[0036] 方向表現310は、黒色で示される受信された実際の方向入力312と、白色で示される自動方向入力314で示されている。同様に、トリガ表現320は、黒色の受信された実際のトリガ入力322と、白色の自動トリガ入力324とを示している。以下の目的のため、自動入力は、ユーザ対話モデルによって、ユーザがドライブゲームをプレイしている際にその背景で生成されていると想定する。
【0031】
[0037] 図3Aでは、ユーザがスロットル中開度で車302を左に緩やかに操作しているため、車は、実際の方向入力312及び実際のトリガ入力322を介して制御されている。ユーザ対話モデルによって生成される自動方向入力314及び自動トリガ入力324は、実際のユーザ入力と同様であるが、現時点では車の制御のためには使用されていない。
【0032】
[0038] 図3B及び3Cでは、ユーザが車を左に緩やかにナビゲートし続けているため、車302は、そのまま道路304を進み続けており、実際の及び自動ユーザ入力は、ある程度異なっている。途絶は未だ起こっていないため、車は、実際のユーザ入力による制御が続いている。
【0033】
[0039] 図3Dでは、途絶が起こっている。この例の目的のため、途絶により、ビデオゲームは実際のユーザ入力を受信することができないが、ユーザへのその映像出力は妨げられないと想定する。ユーザは、道路304のカーブを正しくナビゲートするために、車302を左に急カーブさせ、スロットルを絞る必要がある。しかし、最近の実際のユーザ入力は古くなっており、例えば、ユーザがそのサムスティック及びトリガ入力を調整して、急カーブさせ、スロットルを絞ったとしても、それらの実際のユーザ入力はビデオゲームで受信されていない。結果的に、古くなったユーザ入力が使用された場合、古くなった方向入力の左方向の大きさが小さ過ぎてカーブを正しくナビゲートできないため、ゴースト車330によって示されるように、車は道路から外れてしまう。
【0034】
[0040] この時点では、実際のユーザ入力の代わりに自動ユーザ入力を用いることができる。例えば、図3Dでは、古くなった最近受信されたユーザ入力の代わりに自動方向入力314が使用され、自動方向入力は、車を左に急カーブさせ、自動トリガ入力324は、スロットルを絞って車302を減速させる。従って、途絶の間、車は自動ユーザ入力によって制御されているため、車は、道路から外れることなく、そのまま道路304を進み続ける。また、図3Dは、現在の実際のユーザ入力316(ハッチ模様)も示しており、現在の実際のユーザ入力316は、途絶による影響を受け、従って、ゲームプレイの制御には利用可能ではない。
【0035】
[0041] 図3Eは、途絶から回復した後のビデオゲームを示す。途絶の間に車302を制御するために自動ユーザ入力が使用されたため、ユーザに制御が戻った際には、車が位置するとユーザが予想した道路304上の場所に車はほぼ位置している。ユーザが正しく左に急カーブしたことを示すため、ユーザから受信された、受信された実際の方向入力312は、左に移動している。同様に、ユーザから受信された、受信された実際のトリガ入力322は、スロットルを絞っている。
【0036】
[0042] 途絶の間に使用された自動ユーザ入力は、途絶の間にユーザによって提供された実際の入力と同様であったため、ユーザは、ゲームプレイエクスペリエンスへの影響をそれほど認知していない。対照的には、自動入力の代わりに最近受信された古くなったユーザ入力が使用されていたなら、木340にぶつかっているゴースト車330によって示されるように、ユーザは衝突を体験していたかもしれない。
【0037】
モデル処理フローの例
[0043] 図4は、アプリケーション402に実際の又は自動入力を選択的に提供するために採用することができる処理フロー400の例を示す。処理フロー400では、実際の入力源404は、実際のユーザ入力406をユーザ対話モデル408に提供する。ユーザ対話モデル408は、実際のユーザ入力及び/又はアプリケーション出力410を使用して、自動ユーザ入力412を生成することができる。また、アプリケーション出力は、画像又は映像を表示するため、音声を再生するため、触力覚フィードバックを生成するためになど、出力メカニズム414に提供することもできる。
【0038】
[0044] 入力アジュディケータ416は、選択された入力418としてアプリケーション402に提供するために、実際のユーザ入力406又は自動ユーザ入力412を選択することができる。例えば、途絶がない場合は、入力アジュディケータは、選択された入力として実際のユーザ入力をアプリケーションに提供することができる。途絶が発生した場合は、入力アジュディケータは、例えば、アプリケーションに提供される選択された入力として自動ユーザ入力を出力することによって、実際のユーザ入力の代わりに自動ユーザ入力を直接用いることができる。他の事例では、入力アジュディケータは、ユーザ対話モデルによって提供された自動ユーザ入力を以前に受信された実際のユーザ入力と合わせてスムーズにするか又は組み合わせて、スムーズにした/組み合わせた自動ユーザ入力をアプリケーションに出力することができる。
【0039】
[0045] 以下でさらに論じられるように、処理フロー400は、広範な技術環境において採用することができる。例えば、いくつかの実装形態では、処理フローの各部分は、単一のデバイス上で実行される。他の事例では、処理フローの異なる部分は、異なるデバイス上で実行される。図1は、特定の例を示しており、例えば、アプリケーション402はアプリケーションサーバ102上にあり得、実際の入力源404はビデオゲームコントローラ108であり得、出力メカニズム414はクライアントデバイス106によって提供され得、ユーザ対話モデル408及び入力アジュディケータ416は仲介サーバ104によって提供され得る。
【0040】
[0046] また、処理フロー400は、自動ユーザ入力を決定するために、必ずしも、内部のアプリケーション状態へのアクセスに依拠するとは限らないことに留意されたい。以前に提案されるように、このことは、アプリケーションコードを修正することなく開示される概念を実装することができるため、有益であり得る。しかし、他の事例では、ユーザ対話モデルは、内部のアプリケーション状態へのアクセスを有し、内部のアプリケーション状態を使用して自動ユーザ入力を決定することができる。一般に、自動ユーザ入力を決定するため、CPU又はGPUメモリの生データから特定のデータ構造又は中間グラフィックスパイプライン段階まで、いかなる内部のゲーム状態も採用することができる。例えば、ドライブビデオゲームは、多くの異なるシミュレーションドライブコースを提供することができ、ユーザ対話モデルは、現在のドライブコースの識別子へのアクセスを有し得る。別の例として、ドライブビデオゲームは、ユーザが運転するための多くの異なる車両モデルを提供することができ、ユーザ対話モデルは、現在選択されている車両モデルの識別子へのアクセスを有し得る。ユーザ対話モデルが内部のゲーム状態へのアクセスを有さない実装形態では、ユーザ対話モデルは、例えば、アプリケーションによる映像出力を分析することによって、現在のドライブコース又は車両モデルをアプリケーション出力から推論できる場合がある。
【0041】
ユーザ対話モデルの特定の例
[0047] 上記で言及されるように、ユーザ対話モデル408を実装するための方法の1つは、機械学習手法を採用することである。図5は、本概念と一致する、ユーザ対話モデルとして採用することができるニューラルネットワークに基づく予測モデル500を示す。以下は、対話型アプリケーションへのユーザ入力を予測するために、ニューラルネットワークに基づく予測モデルをどのように採用できるかについての特定の一実装形態を説明する。以下の説明では、「4」から始まる参照番号は、図4において以前に導入された要素を指し、「5」から始まる参照番号は、図5において新しく導入された要素を指す。
【0042】
[0048] 実際のユーザ入力406及びアプリケーション出力410は、前処理502のために入力することができる。例えば、ボタン及びアナログ入力メカニズムを有するビデオゲームコントローラを介して実際のユーザ入力が提供されると、コントローラ入力は、ブール値としてボタンを表現し、アナログ入力の値を-1~1の値の範囲に正規化することによって、前処理することができる。映像又は音声出力は、映像及び/又は音声出力の解像度を低下させることによって前処理することができ、触力覚出力もまた、例えば、-1~1の範囲に正規化することができる。
【0043】
[0049] いくつかの実装形態では、前処理502は、ユーザ入力及びアプリケーション出力のそれぞれのウィンドウを維持する。例えば、以下の例は、1秒間の時間ウィンドウを想定する。前処理は、映像及び/又は音声データの対応するフレームとの実際のユーザ入力の時間整合を実行することを含み得る。それに加えて、触力覚出力は、実際のユーザ入力と時間整合させることができる。このプロセスにより、入力ウィンドウ504及び出力ウィンドウ506が生じる。
【0044】
[0050] 入力ウィンドウ504は、全結合ニューラルネットワーク508に入力することができ、出力ウィンドウ506は、畳み込みニューラルネットワーク510に入力することができる。全結合ニューラルネットワーク(例えば、入力ウィンドウから抽出された特徴のベクトル空間表現)及び畳み込みニューラルネットワーク(例えば、出力ウィンドウから抽出された特徴のベクトル空間表現)の出力は、長・短期記憶(「LSTM」)ネットワークなどの回帰型ニューラルネットワーク512に入力することができる。
【0045】
[0051] 回帰型ニューラルネットワーク512は、埋め込み514を出力することができ、埋め込み514は、ユーザ入力及びアプリケーション出力をベクトル空間で表すことができる。埋め込みは、回帰型ニューラルネットワークに返すことのみならず(矢印513によって示されるように)、別の全結合ネットワーク516に入力することもできる。いくつかの実装形態は、複数の回帰型ニューラルネットワーク(例えば、全結合ネットワーク508の出力を処理するための第1の回帰型ニューラルネットワークと、畳み込みニューラルネットワーク510の出力を処理するための第2の回帰型ニューラルネットワーク)を採用できることに留意されたい。
【0046】
[0052] 全結合ネットワーク516は、回帰型ニューラルネットワークによって出力された埋め込みから自動ユーザ入力412にマッピングすることができる。埋め込みは、自動ユーザ入力412(例えば、将来の予測ユーザ入力)を決定するために全結合ネットワーク512によって使用されたユーザ入力及びアプリケーション出力についての情報を表す。
【0047】
[0053] それに加えて、自動ユーザ入力412は、前処理502に入力し、上記で説明されるように前処理することもできる。従って、所定のいかなる時間ステップにおいても、前処理される入力は、例えば、入力アジュディケータ416によって、その時間ステップに対して選択された入力である。結果的に、所定のいかなる時間においても、入力ウィンドウ504は、すべての実際のユーザ入力、すべての自動ユーザ入力(例えば、入力ウィンドウと少なくとも同じ長さの途絶を想定)及び/又は実際のユーザ入力と自動ユーザ入力の両方の組合せを含み得る。
【0048】
特定のモデル処理の例
[0054] 記述されるように、前処理502は、一連の時間ステップとして実行することができる。例えば、都合の良い1つの間隔は、標準化された映像フレームレートを使用するためのものであり得、1つの映像フレームあたり1つの時間ステップを有し得る。60Hzの映像フレームレートでは、所定の1秒間のウィンドウ内で60のフレームが得られる。各入力ウィンドウ504は、実際の又は自動ユーザ入力の60のそれぞれのセットを有し得、各出力ウィンドウ506は、アプリケーション出力の60のそれぞれのセットを有し得る。記述されるように、入力ウィンドウと出力ウィンドウは、互いに時間整合させることができる。
【0049】
[0055] 一般に、実際の又は自動ユーザ入力及びアプリケーション出力は、全結合ニューラルネットワーク508及び畳み込みニューラルネットワーク510のそれぞれへの入力のための特徴を得るために前処理することができる。従って、いくつかの事例では、前処理502は、次の時間ステップに対するユーザ入力を正確に予測するために、入力ウィンドウ504及び出力ウィンドウ506にわたって区別のために有用であり得る特徴を抽出することを伴い得る。例えば、前処理は、現在の時間ステップに対する実際の又は予測ユーザ入力からユニーク性特徴を抽出することを含み得、ユニーク性特徴は、ユーザ入力が前の時間ステップのユーザ入力から変化したかどうかを示す。
【0050】
[0056] いくつかのユーザ入力(ビデオゲームコントローラによって提供されるものなど)は、ベクトルとして表すことができる。例えば、ベクトルの特定のエントリは、ブールオン/オフ値として異なるボタン状態を表すことができ、ベクトルの他のエントリは、例えば、トリガ状態及びサムスティックに加えられた方向圧力など、アナログ入力メカニズムに対する大きさを表すことができる。また、ベクトルは、前の時間の状態から値が変化したかどうかを示すエントリも含み得る。このベクトル表現は、実際のユーザ入力と予測ユーザ入力の両方に使用することができる。
【0051】
[0057] ユーザ入力及びアプリケーション出力が離散化され、1秒間のウィンドウを使用して60Hzの映像フレームレートに時間整合される実装形態では、ニューラルネットワークに基づく予測モデル500の個々のネットワークの各々は、60の積層入力/出力ベクトルを同時に処理することができ、各ベクトルは、16.67ミリ秒の時間を表す。また、回帰型ニューラルネットワーク512は、回帰型ネットワークの以前の出力を表すために使用することができる内部の回帰状態を維持することができ、この内部の回帰状態は、現在の入力/出力ウィンドウには存在しない情報を含み得る。従って、回帰型ニューラルネットワーク512は、前処理502によって提供されるそれぞれの時間ウィンドウの持続時間より長い入力/出力データのシーケンスを効果的にモデル化することができる。
【0052】
[0058] また、いくつかの実装形態は、ゲームがユーザの入力に応答していないというジッタ及び/又はユーザ認知を低減するために、自動ユーザ入力412を以前の実際の又は予測ユーザ入力と合わせてスムーズにするか又は組み合わせることができることにも留意されたい。また、ニューラルネットワークに基づく予測モデル500は、最終的なユーザ入力値又は最後に見られたユーザ入力に対するデルタを予測できることにも留意されたい。
【0053】
モデル訓練及びアーキテクチャ
[0059] 以下の論考は、自動ユーザ入力を生成するために、ニューラルネットワークに基づく予測モデル500などのモデルをどのように訓練することができるかについての詳細を提供する。以下の訓練手法は、他のニューラルネットワーク構造や、ニューラルネットワーク以外のモデルタイプを含めて、他のタイプの様々な機械学習モデルタイプに適用することができる。
【0054】
[0060] モデルを訓練するための方法の1つは、模倣学習技法を使用することを伴う。例えば、S. Ross, G. J. Gordon, and J. Bagnell,“A Reduction of Imitation Learning and Structured Prediction to No-Regret Online Learning,”in AISTATS, 2011において、DAggerアルゴリズムが提供されている。DAggerは、ユーザを模倣するためにポリシを学習するための反復手法を提示しており、ポリシは、以前に受信された情報の関数として予測ユーザアクション(例えば、ユーザ入力)を指定する。別の例として、S. Ross and J. Bagnell,“Reinforcement and Imitation Learning via Interactive No-Regret Learning,”in arXiv:1406.5979, 2014において、AggreVaTeアルゴリズムが提供されている。AggreVaTeは、DAggerの拡張版であり、バイナリゼロ又は一分類損失というよりむしろ、「cost-to-go」損失関数を使用して、訓練を通知する。
【0055】
[0061] いくつかの実装形態では、各ユーザ及び/又は各アプリケーションに対して別個のモデルを訓練することができる。この手法は、最終的には、ユーザ入力を正確に予測することができる高品質モデルを提供することができるが、各ユーザ及び各アプリケーションに対するゼロからの新しいモデルの生成は、多大な時間を要するものであり得る。それに加えて、この手法は、一般に、別個のモデルを格納するためのストレージリソースや、各ユーザに対して別個のモデルを訓練するためのプロセッサ時間など、演算資源の大量使用を伴う。その上、この手法は、各ユーザ及び/又は各アプリケーションに対して大量の訓練データを得ることに依拠する。結果的に、ユーザは、アプリケーションとの膨大な対話が終わるまで、正確な予測モデルの恩恵を得ることができない。言い換えれば、この手法を使用して開発されたモデルは、新しいユーザに対して迅速に「すべての最新情報を提供する」ものではない。
【0056】
[0062] 別の高レベルの手法は、複数のユーザに対してモデルを訓練し、次いで、そのモデルの一部又はすべてを特定のユーザに適応させることを伴う。その達成のため、いくつかの異なる技法を採用することができる。手法の1つは、多くの異なるユーザに対してモデルを事前訓練し、次いで、例えば、新しいユーザに対して別個の訓練エポックを使用して事前訓練されたモデルを調節することによって、そのモデル全体を新しいユーザに適応させることを伴う。この手法では、各ユーザは、最終的には、ユーザ自身の完全なユーザ特有のモデルに到達するが、他のユーザ用のユーザデータを使用してモデルの訓練を加速させることができる。或いは、モデル自体が、複数のユーザに対して訓練された1つ又は複数のニューラルネットワーク層などの一定の一般的なコンポーネントや、各ユーザに対して特別に訓練された1つ又は複数の別個の層などの1つ又は複数のユーザ特有のコンポーネントを有し得る。
【0057】
[0063] また、例えば、大規模なユーザグループから学習された重みセットから始め、次いで、それらの重みを新しいユーザに合わせてカスタマイズすることによって、メタ学習手法を採用することもできる。メタ学習手法に関する背景情報は、次の文献、すなわち、Munkhdalai et al.,“Rapid Adaptation with Conditionally Shifted Neurons,”in Proceedings of the 35th International Conference on Machine Learning, pp. 1-12, 2018、Munkhdalai et al.,“Meta Networks,”in Proceeding of the 34th International Conference on Machine Learning, pp. 1-23, 2017、Koch et al.,“Siamese Neural Networks for One-shot Image Recognition,”in Proceedings of the 32ndInternational Conference on Machine Learning, Volume 37, pp. 1-8, 2015、Santoro et al.,“Meta-Learning with Memory-Augmented Neural Networks,”in Proceedings of the 33rd International Conference on Machine Learning, Volume 48, pp. 1-9, 2016、Vinyals et al.,“Matching Networks for One Shot Learning,”in Proceedings of the 30th Conference on Neural Information Processing Systems, pp. 1-9, 2016及びFinn et al.,“Model-Agnostic Meta-Learning for Fast Adaptation of Deep Networks,”in Proceedings of the 34th International Conference on Machine Learning, pp. 1-13, 2017において見出すことができる。これらの手法は、開示される技法を新しいユーザに合わせて迅速に修整する上で役立てることができ、従って、ユーザが途絶による悪影響を受ける例を低減すること及び/又は潜在的に排除することができる。それに加えて、これらの手法は、例えば、ユーザがビデオゲームをより上手にプレイできるようになるにつれて及びそれに比例してビデオゲームがより難しくなるにつれて、予測モデルがそれに適応できるようにすることによって、ユーザ技能及び/又はアプリケーション難易度の変化に合わせて迅速に適応させることができる。
【0058】
[0064] さらなる実装形態では、モデルは、補助訓練タスクを使用して訓練することができる。例えば、モデルは、どのユーザが所定の入力ストリームを生成したかを予測するように又は入力ストリームから所定のユーザの技能レベルを予測するように訓練することができる。これらの目標において報酬関数を定義することができ、モデルは、入力ストリームを生成したユーザ又はユーザの技能レベルの正しい識別に対して報酬を得る。異なる特性(例えば、技能レベル)を有する複数のユーザから得られた入力データを使用してそのような補助タスクに対してモデルを訓練することにより、モデルは、異なるユーザをどのように区別するかについて学習することができる。その後、新しいユーザがゲームプレイを始めた際、このように訓練されたモデルは、モデルが既に訓練されている1人又は複数の他のユーザと新しいユーザが同様であると推論する能力を有し得る。
【0059】
[0065] モデル訓練は、様々なデータ源を使用することができる。例えば、所定のモデルは、1人又は複数のユーザがそのアプリケーションと対話した以前の例に基づいて、オフラインで訓練することができる。他の例では、モデルは、1人又は複数のユーザがアプリケーションと対話している際に、オンラインで訓練することができる。所定のアプリケーションセッションの間に受信された実際のユーザ入力は、そのモデルに対してラベル付けされた訓練データとして機能し得る。従って、所定の対話型アプリケーションが実行され、ユーザがそのアプリケーションと対話する際、モデルは、予測ユーザ入力を生成し、それらを実際のユーザ入力と比較し、モデルを改善するために、その誤差をモデルに伝搬することができる。言い換えれば、モデルは、ユーザがアプリケーションと対話している間に、ユーザを模倣するように訓練することができる。
【0060】
[0066] いくつかの事例では、途絶の後、途絶時間の間に意図されていた実際のユーザ入力を受信することができる。例えば、実際のユーザ入力を有するパケットを遅れて(例えば、実際のユーザ入力の代わりに自動ユーザ入力が用いられた後に)伝達することができる。途絶時間の間の実際のユーザ入力は、アプリケーションを制御する目的のために廃棄することができるが、それにもかかわらず、途絶時間の間の実際のユーザ入力は、訓練目的で使用することができる。
【0061】
[0067] それに加えて、所定のモデルの個々の部分は、オフラインで訓練すること及び/又はモデルの残りの部分とは別に訓練することができる。例えば、いくつかの実装形態では、ニューラルネットワークに基づく予測モデル500の畳み込みニューラルネットワーク510は、ユーザ入力がない場合でも、映像出力を使用して訓練することができる。例えば、畳み込みニューラルネットワークは、上記で説明されるような補助訓練タスクを使用して又は再構築若しくはマスキングタスクを使用して訓練することができる。事前訓練された畳み込みニューラルネットワークは、他の層と共により大規模なニューラルネットワーク構造に挿入することができ、次いで、1人又は複数のユーザがアプリケーションと対話している間に得られた入力及び出力を使用して、ネットワーク構造全体をまとめて訓練することができる。これにより、ニューラルネットワークの訓練されていないコンポーネントは、モデルの残りの部分と共にゼロから学習するように畳み込みニューラルネットワークを訓練する場合より迅速に学習することができる。
【0062】
[0068] また、開示される概念は、広範なモデルアーキテクチャで使用することもできる。一般に、モデルが多くのコンテキストを把握するほど、モデルによるユーザ入力の予測は正確になる。従って、例えば、より長い入力/出力ウィンドウを使用することにより、一般に、予測の精度を向上させることができる。他方では、より長い入力/出力ウィンドウを使用することにより、それに比例して、モデルに対する入力データ量が多くなり、それにより、訓練時間が増え、また、実行時に演算上のレイテンシが発生し得る。いくつかの実装形態は、効率を上げることを目的として、モデルがより多くのコンテキストを把握できるようにするための代替のモデル構造を採用することができる。例えば、Oord et al.,“WaveNet: A Generative Model of Raw Audio,”arXiv:1609.03499 1-15, 2016において論じられるような、膨張因果畳み込み層の積層を採用すること、及び/又は、Mehri et al.,“SampleRNN: An Unconditional End-to-End Neural Audio General Model,”in Proceedings of the 5th International Conference on Learning Representations, pp. 1-11, 2017において論じられるような、自己回帰モデルの階層を採用することができる。
【0063】
[0069] また、いくつかの実装形態は、別個の機能性としてというよりむしろ、予測モデル内で入力アジュディケーションを採用できることにも留意されたい。例えば、予測モデルは、例えば、ネットワーク状態(例えば、レイテンシ、帯域幅、パケット落ちなど)について説明する追加の特徴を使用して、実際のユーザ入力の代わりに予測ユーザ入力をいつ用いるかについて学習することができる。同様に、予測モデルは、ユーザに対する途絶の影響を低減するために、予測ユーザ入力を実際のユーザ入力と組み合わせることを学習することができる。例えば、予測モデルは、認知されたユーザ途絶を示すフィードバックを使用して訓練し、認知された途絶を最小化又は軽減するように実際のユーザ入力と予測ユーザ入力をスムーズにするか又は組み合わせることを学習することができる。
【0064】
入力アジュディケーション
[0070] いくつかの実装形態では、1つ又は複数のトリガ基準を使用して、自動ユーザ入力をいつ採用するかを決定することができる。例えば、図4に戻ると、1つ又は複数のトリガ基準を使用して、入力アジュディケータ416が実際のユーザ入力406を選択するか又は自動ユーザ入力412を選択するかを判断することができる。例えば、手法の1つは、閾値時間(例えば、100ミリ秒)を定義し、その閾値時間量の間に実際のユーザ入力が受信されない場合は常に自動ユーザ入力を選択することである。
【0065】
[0071] 図1に示されるようなネットワーク接続シナリオを考慮すると、ネットワーク途絶により、アプリケーションサーバ102による実際のユーザ入力の受信ができなくなる可能性がある。ネットワーク途絶は、パケットの受信が遅過ぎる、パケットの受信順序がばらばらである及び/又はネットワーク上でパケットが落ちたために全く受信されないなど、様々な根本的な事情によって発生し得る。ネットワーク途絶に対処する方法の1つは、閾値時間の間にクライアントデバイスから仲介サーバ104によってパケットが受信されない場合に自動ユーザ入力を代用することである。いくつかの事例では、クライアントは、ユーザが単にコントローラ108を扱っていないだけであるシナリオとネットワーク途絶とを仲介サーバが見分けられるように、一定の間隔(例えば、10ミリ秒)で心拍信号を送信することができる。
【0066】
[0072] さらなる実装形態では、閾値時間は、異なるユーザ及び/又は異なるアプリケーションに対して調整することができる。例えば、途絶に対するユーザ感度は、ユーザ技能に基づいて又はアプリケーションのタイプによって異なり得る。具体的にビデオゲームについて考慮すると、熟練ユーザは、新米ユーザより短い途絶に気づく傾向があるか、又は、それに関連して、あるビデオゲームのプレイヤは、別のビデオゲームのプレイヤが気づかない短い途絶(例えば、50ミリ秒)に気づく傾向があり得る。
【0067】
[0073] 他の実装形態では、閾値は、映像フレームレートと関係しており、例えば、閾値は、3つのフレームとして又は60Hzのフレームレートで約50ミリ秒として定義することができる。さらなる実装形態は、異なるアプリケーション及び/又は異なるユーザに対してユーザ対話モデルの一部として閾値を学習することができる。
【0068】
[0074] その上、「ネットワーク途絶」という用語は、トラフィックが完全に妨げられているわけではないシナリオを包含し得ることに留意されたい。例えば、ネットワーク「ジッタ」又はデータパケットの時間遅延の変動は、対話型アプリケーションとのユーザのエクスペリエンスにかなりの影響を与える恐れがある。いくつかの事例では、自動ユーザ入力は、ジッタが既定の閾値(例えば、50ミリ秒)を超えた際に採用することができる。ジッタは、実際のユーザ入力と関連付けられたタイムスタンプを使用して検出することができる。
【0069】
[0075] ネットワーク途絶が双方向性であり得る(すなわち、アプリケーションへの実際のユーザ入力のフローとユーザデバイスへのアプリケーション出力のフローの両方に影響を及ぼし得る)ことに留意されたい。しかし、他の事例では、ネットワーク途絶は、特定の方向のトラフィックのフローのみに影響を及ぼす。例えば、ネットワーク途絶により、ユーザへのアプリケーション出力のフローに影響が及ぶことなく、実際のユーザ入力が受信できなくなる可能性がある。逆に、ネットワーク途絶により、アプリケーションへの実際のユーザ入力のフローに影響が及ぶことなく、アプリケーション出力がユーザに到達できなくなる可能性がある。
【0070】
[0076] 自動ユーザ入力は、いかなるタイプのネットワーク途絶にも対処するために使用することができる。例えば、実際のユーザ入力は、ネットワーク途絶による影響を受けないが、ネットワーク途絶により、閾値時間量の間にアプリケーション出力がユーザに到達できなくなるというシナリオを考慮する。このタイプのネットワーク途絶に対して実際のユーザ入力が利用可能であるとしても、いくつかのシナリオでは、依然として、途絶の間に受信される実際のユーザ入力の代わりに自動ユーザ入力を用いる価値があり得る。ユーザは途絶の間はアプリケーション出力を受信しないため、ユーザには、アプリケーション出力を変更するためにその入力を調整する機会がない。この事例では、自動ユーザ入力は、途絶によってアプリケーション出力がユーザに到達できないようにはならなかった場合にユーザが提供したであろうものをより正確に反映し得る。
【0071】
[0077] いくつかの実装形態では、入力アジュディケータ416は、途絶が終わった後に補正動作を行うこともできる。例えば、入力アジュディケータは、いくつかの以前の実際のユーザ入力の代わりに自動ユーザ入力を用い、その後、それらの実際のユーザ入力は、途絶が終わった後に遅れて到着したと想定する。さらに、自動ユーザ入力は、遅れて届いた実際のユーザ入力によって示されるより急な角度で車を操作したと想定する。いくつかの実装形態では、これは、自動ユーザ入力と遅れて届いた実際のユーザ入力との差を補償するために、途絶後ある程度経ってから、より緩やかに車を操作するように、後に受信された実際のユーザ入力を調整することによって、補正することができる。そうすることにより、途絶がなかった場合に車が位置するであろう場所に車の位置を近づけることができる。
【0072】
代替の実装形態
[0078] 上記では、本概念は、主に、特定のタイプの対話型アプリケーション(例えば、ストリーミングビデオゲーム)、特定のタイプの途絶(例えば、ネットワーク途絶)及び特定のタイプの自動ユーザ入力(例えば、機械学習モデルを使用して生成された予測コントローラ入力)を対象とする例を使用して説明してきた。しかし、本概念は、以下でさらに論じられるように、多くの異なるタイプの自動ユーザ入力を使用して多くの異なる途絶タイプに対処するために多くの異なる対話型アプリケーションタイプに対して採用することができる。
【0073】
[0079] アプリケーションタイプを最初に取り挙げると、ビデオゲームは、対話型アプリケーションのほんの一例に過ぎない。他の例は、仮想又は拡張現実アプリケーション、教育又は訓練アプリケーションなどを含む。例えば、ユーザが車両の運転方法を学習するマルチユーザドライブシミュレータについて考慮する。ビデオゲームと同様に、ドライブシミュレータの途絶の間、最適なユーザ挙動というよりむしろ、実際のユーザ挙動を予測することが好ましい場合がある。これにより、より現実的なエクスペリエンス(例えば、2人のドライバーが両者とも、シミュレーションされた事故につながる過ちを犯す)を提供することができる。万が一途絶が起きたとして、現実的なユーザ入力を予測するモデルというよりむしろ、最適な入力を生成するためのモデルが使用されたなら、衝突は免れるが、安全に対する誤った意識をユーザに与え、シミュレーションの訓練価値を下げることになる。
【0074】
[0080] 別の例として、商品を補充するために絶えず発注する自動在庫管理アプリケーションについて考慮する。いくつかの事例では、途絶により、長時間の間(例えば、一晩中)、在庫管理アプリケーションがユーザ注文について知ることができなくなる可能性がある。途絶時間の間に在庫がどのように変化するかを模擬するために予測ユーザ注文を使用することにより、そのようなアプリケーションは、例えば、実際のユーザ注文というよりむしろ予測ユーザ注文に基づいて生産を継続できるように工場において十分な部品が利用可能であることを保証することによって、途絶の影響を軽減することができる。
【0075】
[0081] さらなる別の例として、例えば、災害救助又は医療アプリケーションに対する半自律ロボットについて考慮する。一般に、そのようなロボットは、遠隔地に位置するユーザによって制御することができる。いくつかの事例では、そのようなロボットは、むらのある衛星信号受信によって遠隔地で動作するものであり得、ネットワーク途絶が起こった際に、遠隔地に位置するユーザの役目を引き継ぐためにローカル予測モデルを利用することができる。いくつかの事例では、このタイプのアプリケーションは、特定のユーザを模擬するというよりむしろ、最適な挙動に対して訓練されたモデルを使用することから恩恵を受けることができる。
【0076】
[0082] それに加えて、開示される実装形態は、ネットワーク途絶以外の他のタイプの途絶に対処するために採用することができる。例えば、いくつかの実装形態は、例えば、着信メッセージ若しくは電話を検出することによって、クライアントデバイスのジャイロスコープ若しくは加速度計を使用することによって、又は、単に閾値時間量の間の入力メカニズムへの入力の欠如によって、ユーザが対話型アプリケーションから気を取られた際にそれを検出することができる。これらのいかなる途絶も、途絶の間に対話型アプリケーションに自動ユーザ入力を提供することによって軽減することができる。
【0077】
[0083] それに加えて、開示される実装形態は、身体障害を有し得るユーザに対するエクスペリエンスの強化を提供するために使用することができる。ジョイスティック又は他の入力メカニズムを安定した状態で保つことが困難であるユーザについて考慮する。いくつかの実装形態は、振戦又は他の震える動きを途絶として扱い、ユーザの障害のそのアプリケーションエクスペリエンスに対する影響を軽減するために、ユーザの実際の入力を予測ユーザ入力と合わせてスムーズにするか又は組み合わせることができる。
【0078】
[0084] 別の例として、特定のデバイスの内部の途絶について考慮する。例えば、異なるタイムスライスで第1の仮想マシンと第2の仮想マシンを走らせる単一の物理的なサーバについて考慮する。第1の仮想マシンが対話型アプリケーションを走らせている場合、現時点で対話型アプリケーションがプロセッサにおいてアクティブ状態ではない際は、所定のタイムスライスで受信されたユーザ入力が存在し得る。以前の技法では、第2の仮想マシンから第1の仮想マシンにコンテキストが切り替えられるまで、実際のユーザ入力をメモリにバッファリングしていた可能性がある。開示される技法を使用することにより、第1の仮想マシンがアクティブ状態ではない際にタイムスライスの間に起こった実際のユーザ入力を廃棄し、自動ユーザ入力を生成し、第1の仮想マシンがプロセッサで動作し始めた時点で、対話型アプリケーションに提供することができる。従って、第1の仮想マシンがアクティブ状態ではない際に、そのタイムスライスの間の実際のユーザ入力を保持するためのバッファは不要であるため、メモリを節約することができる。
【0079】
[0085] 別の例として、自動ユーザ入力は、圧縮目的のために使用することができる。例えば、図1に示される例では、クライアントデバイス106は、一定のユーザ入力を廃棄することができる(例えば、ユーザ入力を1つおきに飛ばし、それらを仲介サーバ104に送信しない)。仲介サーバは、1つおきの実際のユーザ入力の代わりに自動ユーザ入力を用いることができる。この手法は、ネットワーク帯域幅を節約しながら、依然として、満足のいくユーザエクスペリエンスを提供することができる。
【0080】
[0086] 別の圧縮例として、実際のユーザ入力を完全に廃棄する代わりに、いくつかの実装形態は、ある実際のユーザ入力の一部を廃棄することができ、例えば、実際のユーザ入力の一定数(例えば、3つ)の最上位ビットを仲介サーバに送信し、ユーザ対話モデル408で残りのビット(例えば、16ビット入力の場合は13ビット)を仲介サーバに埋めさせることができる。さらに、別の圧縮例は、ユーザデバイス上で予測モデルの別の例を採用することができる。ユーザデバイスは、実際のユーザ入力の各々と対応する予測入力との差を計算し、その差を仲介サーバに送信することができ、仲介サーバ上では同じ予測モデルを走らせているため、仲介サーバは、その差から実際のユーザ入力を導き出すことができる。予測ユーザ入力と実際のユーザ入力との差は比較的小さい場合が多いため、ネットワーク上でのこの情報の送信は、完全な実際のユーザ入力より少ないビットで済む。前述の圧縮技法は、ネットワークトラフィックの量を低減するために、事前にプログラムされた途絶を意図的に導入するメカニズムと見なすことができる。
【0081】
[0087] いくつかの事例では、事前にプログラムされた途絶は、バッテリの寿命(例えば、ビデオゲームコントローラ上の)を浪費しないために使用することができる。例えば、ビデオゲームコントローラは、指定された時間量の間(例えば、50ミリ秒)眠ってから目を覚まし、目を覚ますたびに入力を検出して新しい制御セットを送信することができる。仲介サーバ104は、自動入力を使用して睡眠間隔の間のいかなるギャップも埋めることができる。
【0082】
[0088] 別の例として、自動ユーザ入力は、アプリケーションコードのプリエンプティブスケジューリング又はロードのために使用することができる。例えば、ユーザが特定のアクション(ビデオゲームで目的の遂行に成功したか又はドライブシミュレーションで車を衝突させたなど)を実行した場合に、所定のアプリケーションモジュールがメモリにロードされると仮定する。いくつかの実装形態は、ユーザの将来の入力がそのアクションを実行する可能性があるかどうかを予測することができる。その可能性がある場合は、対話型アプリケーションのトリガとしてこれを使用し、ユーザの実際の入力を受信する前にそのモジュールをメモリにロードし始めるか又はそのモジュールの実行をスケジューリングすることができる。この事例では、自動ユーザ入力は、必ずしもアプリケーションを制御するために使用されるとは限らず、むしろ、ストレージからメモリへのコード若しくはデータのロード又はオペレーティングシステムによるスケジューリング決定の通知などの一定の処理を前もって選択的に実行するために使用される。いくつかの事例では、ユーザ対話モデルは、予測ユーザ入力の将来のウィンドウ(例えば、500ミリ秒)を維持し、そのウィンドウ内の予測ユーザ入力を使用してアプリケーションコードの選択的なロード及び/又はスケジューリングを行うことができる。
【0083】
[0089] その上、開示される実装形態は、上記で説明されるようなクライアント/サーバシナリオ以外のシナリオにおいて採用することができる。例えば、ピアツーピアゲームは、2つのピアデバイス間の通信を伴い得る。ピアデバイス間の通信に支障をきたした際(例えば、Bluetoothなどの短距離ワイヤレス接続の場合にデバイスが暫時的に通信圏外になった際)、満足のいくユーザエクスペリエンスを提供するために自動ユーザ入力を採用することができる。従って、この例では、実際のユーザ入力というよりむしろ自動ユーザ入力を選択するためのトリガ基準は、信号強度又はスループットなどの短距離ワイヤレス接続の特性に関連し得る。また、これにより、ピアツーピアゲームが途絶されている時間の間、両ユーザは、互いの予測バージョンを認知し得ることにも留意されたい。この手法により、入力が予測されているユーザ以外のユーザのエクスペリエンスを改善することができ、例えば、途絶の間に第1のユーザに対する予測ユーザ入力が代用された場合は、ピアツーピアゲームにおいて第1のユーザの表現を見ている第2のユーザの立場から、途絶は軽減される。
【0084】
[0090] また、開示される実装形態は、単一のデバイス上で採用することもできる。例えば、ユーザ対話モデルは、ゲームコンソール又は他のデバイス上に提供することができる。入力アジュディケータは、デバイス上に提供して、対話型アプリケーションが実際のユーザ入力を受信するか又は自動ユーザ入力を受信するかを選択することができる。例えば、いくつかの実装形態では、入力アジュディケータは、ディスクスループット、メモリ使用量又はプロセッサ使用量などの基準を使用して、対話型アプリケーションへのユーザ入力の遅延の可能性がある例を認識し、それらの例において対話型アプリケーションに自動ユーザ入力を提供することができる。
【0085】
[0091] また、記述されるように、いくつかの実装形態が機械学習ユーザ対話モデルを使用できる一方で、他の実装形態は、他のタイプのユーザ対話モデルを利用することができる。例えば、ドライブゲームでは、ユーザ対話モデルは、ドライブコースに沿った各場所に対して事前に演算された方向又はスロットル入力を提供することができ、事前に演算された入力は、静的であり、ユーザ特有のものではない。それらの事前に演算された入力は、途絶の間、実際のユーザ入力の代わりに用いることができる。予測モデルの使用と同様に、ユーザの以前の入力は、実行時に、そのコース上の所定の場所に対する既定のユーザ入力と合わせてスムーズにするか又は組み合わせることができる。
【0086】
[0092] それに加えて、いくつかの実装形態は、ユーザ入力のみならず、アプリケーション出力も予測することができる。例えば、ネットワーク途絶が常に双方向であるとは限らないことを思い出されたい。以前に、ユーザによるアプリケーション出力の受信ができなくなるネットワーク途絶を軽減するために、自動ユーザ入力の代用を使用できることについて記述した。或いは、いくつかの実装形態は、アプリケーション出力を予測し、途絶の間、予測したアプリケーション出力をユーザに提供することができる。この事情では、途絶の間、「凍結した」アプリケーション出力に応答してというよりむしろ、予測されたアプリケーション出力に応答してそれらの入力がユーザに提供されるため、実際のユーザ入力を使用することができる。
【0087】
システムの例
[0093] 本概念は、様々な技術環境において及び様々なデバイス上で実装することができる。図6は、以下でさらに論じられるように、本概念を採用することができるシステム600の例を示す。図6に示されるように、システム600は、図1に関して上記で紹介した、アプリケーションサーバ102、仲介サーバ104、クライアントデバイス106及びビデオゲームコントローラ108を含む。また、システム600は、クライアントデバイス610も含む。クライアントデバイス106は、ローカルワイヤレスリンク606を介してビデオゲームコントローラ108に接続される。クライアントデバイス106とクライアントデバイス610は両方とも、広域ネットワーク620を介して仲介サーバ104に接続される。仲介サーバ104は、ローカルエリアネットワーク630を介してアプリケーションサーバ102に接続される。
【0088】
[0094] 図6に示されるクライアントデバイス及びサーバの一定のコンポーネントは、本明細書では、括弧付きの参照番号で言及され得る。以下の説明の目的のため、括弧付き(1)の参照番号は、クライアントデバイス106上の所定のコンポーネントの存在を示し、(2)は、クライアントデバイス610上の所定のコンポーネントの存在を示し、(3)は、仲介サーバ104上の存在を示し、(4)は、アプリケーションサーバ102上の存在を示す。所定のコンポーネントの特定の例を特定しない限り、本明細書は、一般に、括弧なしで、コンポーネントについて言及する。
【0089】
[0095] 一般に、図6に示されるデバイスは、それぞれの処理リソース612及びストレージリソース614を有し得、それらについては、以下でさらに詳細に論じる。また、デバイスは、以下でさらに論じられるように、処理及びストレージリソースを使用して本明細書で論じられる技法を実行するように機能する様々なモジュールも有し得る。
【0090】
[0096] ビデオゲームコントローラ108は、コントローラ回路602及び通信コンポーネント604を含み得る。コントローラ回路は、ボタン又はアナログ入力メカニズムなどの様々なコントローラメカニズムによって受信された入力をデジタル化することができる。通信コンポーネントは、ローカルワイヤレスリンク606上でクライアントデバイス106にデジタル化された入力を伝達することができる。クライアントデバイス106上のインタフェースモジュール616は、デジタル化された入力を得て、広域ネットワーク620上で仲介サーバ104にそれらの入力を送信することができる。
【0091】
[0097] クライアントデバイス610は、コントローラエミュレータ622を提供することができる。コントローラエミュレータは、クライアントデバイスのタッチスクリーン上に仮想コントローラを表示することができる。仮想コントローラを介して受信された入力は、広域ネットワーク上で仲介サーバ104に送信することができる。
【0092】
[0098] 仲介サーバ104は、広域ネットワーク620上でクライアントデバイス106又はクライアントデバイス610から実際のコントローラ入力を有するパケットを受信することができる。仲介サーバ上の入力アジュディケータ416は、それらの実際のコントローラ入力をローカルエリアネットワーク630上でアプリケーションサーバ102に送信するか、又は、ユーザ対話モデル408を通じて生成された自動ユーザ入力を送信するかを判断することができる。例えば、入力アジュディケータは、ネットワーク途絶の間、実際のユーザ入力の代わりに自動ユーザ入力を用い、ネットワーク途絶が解消された際に、後に受信された実際のユーザ入力をアプリケーションサーバに提供することによって、その代用を中止することができる。
【0093】
[0099] 対話型アプリケーション642は、受信した実際の又は自動ユーザ入力を処理し、対応するアプリケーション出力を生成することができる。対話型アプリケーションは、ローカルエリアネットワーク630上で仲介サーバ104に出力を送信することができ、仲介サーバ104は、その出力を使用して、さらなる自動ユーザ入力を生成することができる。それに加えて、仲介サーバは、広域ネットワーク620上でクライアントデバイス106又はクライアントデバイス610にその出力を転送することができる。
【0094】
[00100] クライアントデバイス106及び/又はクライアントデバイス610は、映像出力を表示し、音声出力を再生することができる。アプリケーション出力が触力覚フィードバックを含む場合は、クライアントデバイス106は、ローカルワイヤレスリンク606上でビデオゲームコントローラ108に触力覚信号を送信することができ、ビデオゲームコントローラは、受信信号に基づいて触力覚出力を生成することができる。クライアントデバイス610に提供される出力が触力覚信号を含む場合は、クライアントデバイス610は、コントローラエミュレータ622を通じてクライアントデバイス自体で触力覚出力を生成することができる。
【0095】
方法の例
[00101] 図7は、本概念と一致する、実際の又は自動ユーザ入力をアプリケーションに選択的に提供するために使用することができる方法700の例を示す。本明細書の他の場所で論じられるように、方法700は、例えば、1つ又は複数のクラウドサーバによって、ラップトップ、タブレット若しくはスマートフォンなどのクライアントデバイスによって、又は、1つ若しくは複数のサーバ、クライアントデバイスなどの組合せによって、多くの異なるタイプのデバイス上で実施することができる。
【0096】
[00102] 方法700は、ブロック702から始まり、ブロック702では、実際のユーザ入力が受信される。例えば、実際のユーザ入力は、クライアントデバイスを介して、ビデオゲーム若しくは仮想現実コントローラなどの専用コントローラを介して、又は、ユーザ入力をアプリケーションに提供するための他の任意の適切なメカニズムによって受信することができる。
【0097】
[00103] 方法700は、ブロック704に進み、ブロック704では、アプリケーション出力が受信される。記述されるように、アプリケーション出力は、対話型アプリケーションによって生成された映像、音声及び/又は触力覚フィードバックを含み得る。
【0098】
[00104] 方法700は、ブロック706に進み、ブロック706では、自動ユーザ入力が生成される。例えば、自動ユーザ入力は、ユーザがアプリケーションと対話している際に、ユーザ対話モデルによって生成することができる。或いは、自動ユーザ入力は、例えば、自動ユーザ入力を事前に演算することによって、ユーザ対話の前に生成することができる。
【0099】
[00105] 方法700は、決定ブロック708に進み、決定ブロック708では、途絶が起こったかどうかの判断が行われる。記述されるように、途絶は、ネットワーク途絶、着信電話、ユーザの非活動時間、事前にプログラムされた途絶などを含み得る。
【0100】
[00106] ブロック708において途絶が検出されなかった場合は、方法700はブロック710に進み、ブロック710では、実際のユーザ入力がアプリケーションに提供される。方法700はブロック702に戻り、方法の別の反復が実行され得る。
【0101】
[00107] ブロック708において途絶が検出された場合は、方法700はブロック712に進み、ブロック712では、自動ユーザ入力がアプリケーションに提供される。方法700はブロック704に戻り、追加のアプリケーション出力が受信される。方法700はブロック706に進み、例えば、途絶の前に受信された実際のユーザ入力、途絶の前若しくは途絶の間に受信されたアプリケーション出力及び/又は途絶の前若しくは途絶の間に生成された自動ユーザ入力を使用して、追加の自動ユーザ入力が生成される。方法700は、途絶が終わるまで、ブロック704、706、708、712を通じて反復することができる。
【0102】
[00108] いくつかの実装形態では、ブロック706は、対話型アプリケーションの通常の演算の間に背景で実行しているユーザ対話モデルによって実行できることに留意されたい。他の実装形態では、ユーザ対話モデルは、通常の演算の間はアクティブ状態ではなく、途絶の間に起動させることができる。
【0103】
[00109] また、一部の途絶は、実際のユーザ入力とアプリケーション出力の両方に影響を及ぼし得るのに対して、他の途絶は、アプリケーション出力と実際のユーザ入力の両方ではなく、いずれか一方にのみ影響を及ぼし得ることも思い出されたい。上記の方法700の説明は、アプリケーション出力ではなく、実際のユーザ入力に影響を及ぼす途絶に対応する。しかし、以前に記述したように、他のタイプの途絶の間に自動ユーザ入力をアプリケーションに提供することもできる。
【0104】
デバイスの実装形態
[00110] 図6に関して上記で記述されるように、システム600は、クライアントデバイス106、クライアントデバイス610、仲介サーバ104及びアプリケーションサーバ102を含むいくつかのデバイスを含む。また記述されるように、すべてのデバイスの実装形態が示されているわけではなく、上記及び下記の説明から、当業者には他のデバイスの実装形態も明らかであるはずである。
【0105】
[00111] 「デバイス」、「コンピュータ」、「コンピューティングデバイス」、「クライアントデバイス」及び/又は「サーバデバイス」という用語は、本明細書で使用される場合、ある程度のハードウェア処理能力及び/又はハードウェアストレージ/メモリ能力を有するいかなるタイプのデバイスも意味し得る。処理能力は、機能性を提供するためにコンピュータ可読命令を実行することができる1つ又は複数のハードウェアプロセッサ(例えば、ハードウェア処理ユニット/コア)によって提供することができる。コンピュータ可読命令及び/又はデータは、ストレージリソースに格納することができる。「システム」という用語は、本明細書で使用される場合、単一のデバイス、複数のデバイスなどを指し得る。
【0106】
[00112] ストレージリソースは、それらが関連付けられたそれぞれのデバイスの内部又は外部のものであり得る。ストレージリソースは、数ある中でも特に、揮発性若しくは不揮発性メモリ、ハードドライブ、フラッシュ記憶装置及び/又は光学記憶装置(例えば、CD、DVDなど)のいずれか1つ又は複数を含み得る。いくつかの事例では、システム600のモジュールは、実行可能命令として提供され、実行可能命令は、永続記憶装置に格納され、ランダムアクセスメモリデバイスにロードされ、実行のために処理リソースによってランダムアクセスメモリから読み取られる。
【0107】
[00113] 本明細書で使用される場合、「コンピュータ可読媒体」という用語は、信号を含み得る。対照的には、「コンピュータ可読記憶媒体」という用語は、信号を除く。コンピュータ可読記憶媒体は、「コンピュータ可読記憶装置」を含む。コンピュータ可読記憶装置の例は、数ある中でも特に、RAMなどの揮発性記憶媒体と、ハードドライブ、光ディスク及びフラッシュメモリなどの不揮発性記憶媒体とを含む。
【0108】
[00114] いくつかの事例では、デバイスは、汎用ハードウェアプロセッサ及びストレージリソースを有するように構成される。他の事例では、デバイスは、システムオンチップ(SOC)タイプの設計を含み得る。SOC設計の実装形態では、デバイスによって提供される機能性は、単一のSOC又は複数の結合されたSOC上で統合することができる。1つ又は複数の関連プロセッサは、共有リソース(メモリ、ストレージなど)及び/又は1つ若しくは複数の専用リソース(ある特定の機能性を実行するように構成されたハードウェアブロックなど)と連係するように構成することができる。従って、「プロセッサ」、「ハードウェアプロセッサ」又は「ハードウェア処理ユニット」という用語は、本明細書で使用される場合、中央処理装置(CPU)、グラフィックス処理ユニット(GPU)、コントローラ、マイクロコントローラ、プロセッサコア、又は、従来のコンピューティングアーキテクチャとSOC設計の両方での実装に適した他のタイプの処理デバイスも指し得る。
【0109】
[00115] その代替として又はそれに加えて、本明細書で説明される機能性は、1つ又は複数のハードウェア論理コンポーネントによって、少なくとも部分的に、実行することができる。例えば、制限されることなく、使用することができる例証的なタイプのハードウェア論理コンポーネントは、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、特定用途向け標準製品(ASSP)、システムオンチップシステム(SOC)、プログラム可能な複合論理デバイス(CPLD)などを含む。
【0110】
[00116] いくつかの構成では、本明細書で論じられるいかなるモジュール/コードも、ソフトウェア、ハードウェア及び/又はファームウェアにおいて実装することができる。いずれの事例でも、モジュール/コードは、デバイスの製造の間に又はエンドユーザへの販売に備えてデバイスを準備する仲介業者によって提供することができる。他の例では、エンドユーザは、実行可能なコードをダウンロードし、実行可能なコードを対応するデバイスにインストールすることによってなど、これらのモジュール/コードを後にインストールすることができる。
【0111】
[00117] また、デバイスは、一般に、入力及び/又は出力機能性を有し得ることにも留意されたい。例えば、コンピューティングデバイスは、キーボード、マウス、タッチパッド、音声認識、ジェスチャ認識(例えば、立体若しくは飛行時間カメラシステム、赤外線カメラシステム、RGBカメラシステムなどの深度カメラを使用するか又は加速度計/ジャイロスコープ、顔認識などを使用する)などの様々な入力メカニズムを有し得る。また、デバイスは、プリンタ、モニタなどの様々な出力メカニズムも有し得る。
【0112】
[00118] また、本明細書で説明されるデバイスは、説明される技法を実施するためにスタンドアロンで又は連動するように機能できることにも留意されたい。例えば、本明細書で説明される方法及び機能性は、単一のコンピューティングデバイス上で実行すること、並びに/或いは、ネットワーク620及び/又は630上で通信する複数のコンピューティングデバイスにわたって分散して実行することができる。
【0113】
[00119] それに加えて、いくつかの実装形態は、モノのインターネット(IoT)のコンテキストにおいて、開示される技法のいずれかを採用することができる。そのような実装形態では、家庭用電化製品又は自動車は、システム600のモジュールを実装する演算資源を提供することができる。また、言及されるように、いくつかの実装形態は、頭部装着型ディスプレイ、ハンドヘルド仮想現実コントローラ上で開示される機能性のいくつか若しくはすべてを実行することによって、又は、ユーザによって実行された物理的なジェスチャを通じてユーザ入力を得るために深度センサなどの技法を使用することによって、仮想又は拡張現実アプリケーションに対して使用することができる。
【0114】
[00120] 上記では、様々なデバイスの例が説明されている。以下では、追加の例について説明する。一例は、コンピューティングデバイスによって実行される方法を含み、方法は、対話型アプリケーションに対する自動ユーザ入力を生成することと、ユーザによる対話型アプリケーションとの対話の間に対話型アプリケーションに対する途絶を検出することと、途絶の検出に応答して、自動ユーザ入力を対話型アプリケーションに提供することとを含む。
【0115】
[00121] 別の例は、上記及び/又は下記の例のいずれかを含み得、方法は、対話型アプリケーションとのユーザ対話のユーザ対話モデルを生成することと、ユーザ対話モデルで自動ユーザ入力を生成することとをさらに含む。
【0116】
[00122] 別の例は、上記及び/又は下記の例のいずれかを含み得、ユーザ対話モデルは、ユーザ用のユーザ特有のモデルであり得る。
【0117】
[00123] 別の例は、上記及び/又は下記の例のいずれかを含み得、ユーザ対話モデルは、対話型アプリケーション用のアプリケーション特有のモデルであり得る。
【0118】
[00124] 別の例は、上記及び/又は下記の例のいずれかを含み得、方法は、途絶の前に実際のユーザ入力を得ることと、途絶の前に対話型アプリケーションの出力を得ることと、ユーザ対話モデルに実際のユーザ入力及び出力を入力することとをさらに含む。
【0119】
[00125] 別の例は、上記及び/又は下記の例のいずれかを含み得、ユーザ対話モデルは、機械学習モデルを含む。
【0120】
[00126] 別の例は、上記及び/又は下記の例のいずれかを含み得、方法は、廃棄された実際のユーザ入力を使用して機械学習モデルを訓練することであって、廃棄された実際のユーザ入力が、途絶の間にユーザによって提供され、途絶が終わった後に受信される、訓練することをさらに含む。
【0121】
[00127] 別の例は、上記及び/又は下記の例のいずれかを含み得、方法は、対話型アプリケーションの内部のアプリケーション状態をユーザ対話モデルに提供することなく実行される。
【0122】
[00128] 別の例は、上記及び/又は下記の例のいずれかを含み得、対話型アプリケーションは、オンラインアプリケーションを含む。
【0123】
[00129] 別の例は、上記及び/又は下記の例のいずれかを含み得、途絶は、ネットワーク途絶を含む。
【0124】
[00130] 別の例は、上記及び/又は下記の例のいずれかを含み得、方法は、実際のユーザ入力を有するパケットが閾値時間の間に受信されなかった際に、ネットワーク途絶を検出することをさらに含む。
【0125】
[00131] 別の例は、上記及び/又は下記の例のいずれかを含み得、オンラインアプリケーションは、ストリーミングビデオゲームを含む。
【0126】
[00132] 別の例は、上記及び/又は下記の例のいずれかを含み得、自動ユーザ入力は、ビデオゲームコントローラに対する予測コントローラ入力を含む。
【0127】
[00133] 別の例は、上記及び/又は下記の例のいずれかを含み得、予測コントローラ入力は、ビデオゲームコントローラ上のアナログ入力メカニズムによって提供される実際のユーザ入力の代わりに用いられる。
【0128】
[00134] 別の例は、ハードウェア処理ユニットと、コンピュータ可読命令を格納するストレージリソースとを含むシステムを含み、コンピュータ可読命令は、ハードウェア処理ユニットによって実行されると、ストリーミング対話型アプリケーションによる1つ又は複数の実際のユーザ入力の受信に影響を及ぼすネットワーク途絶を検出することと、ストリーミング対話型アプリケーションへの以前に受信された実際のユーザ入力を使用して自動ユーザ入力を生成することと、ネットワーク途絶の検出に応答して、ストリーミング対話型アプリケーションへの1つ又は複数の実際のユーザ入力の代わりに自動ユーザ入力を用いることとを、ハードウェア処理ユニットに行わせる。
【0129】
[00135] 別の例は、上記及び/又は下記の例のいずれかを含み得、コンピュータ可読命令は、ハードウェア処理ユニットによって実行されると、ネットワーク途絶がない場合に、ストリーミング対話型アプリケーションを実行しているコンピューティングデバイスに受信された実際のユーザ入力を転送することと、ネットワーク途絶の間に、ストリーミング対話型アプリケーションを実行しているコンピューティングデバイスに自動ユーザ入力を転送することとをハードウェア処理ユニットに行わせる。
【0130】
[00136] 別の例は、上記及び/又は下記の例のいずれかを含み得、コンピュータ可読命令は、ハードウェア処理ユニットによって実行されると、ストリーミング対話型アプリケーションの出力を使用して自動ユーザ入力を生成することをハードウェア処理ユニットに行わせる。
【0131】
[00137] 別の例は、上記及び/又は下記の例のいずれかを含み得、コンピュータ可読命令は、ハードウェア処理ユニットによって実行されると、ネットワーク途絶が解消されたこと及びさらなる実際のユーザ入力が受信されていることを検出することと、ネットワーク途絶が解消されたことを検出することに応答して、さらなる実際のユーザ入力の代わりに自動ユーザ入力を用いることを中止することとをハードウェア処理ユニットに行わせる。
【0132】
[00138] 別の例は、コンピュータ可読命令を格納するコンピュータ可読記憶媒体を含み、コンピュータ可読命令は、ハードウェア処理ユニットによって実行されると、対話型アプリケーションの映像出力を受信することと、ユーザによって提供された対話型アプリケーションへの実際のユーザ入力を受信することと、対話型アプリケーションによるさらなる実際のユーザ入力の受信に影響を及ぼす途絶を検出することと、対話型アプリケーションの映像出力及び実際のユーザ入力を予測モデルに提供することと、予測モデルから予測ユーザ入力を得ることと、途絶の間に予測ユーザ入力を対話型アプリケーションに提供することとを含む動作を、ハードウェア処理ユニットに実行させる。
【0133】
[00139] 別の例は、上記及び/又は下記の例のいずれかを含み得、動作は、途絶が終わったことを検出することと、途絶が終わったことを検出することに応答して、後に受信された実際のユーザ入力を対話型アプリケーションに提供することとをさらに含む。
【0134】
結論
[00140] 対象物については、構造の特徴及び/又は方法の動作に特有の言語で説明してきたが、添付の請求項で定義される対象物は、必ずしも、上記で説明される特定の特徴又は動作に限定されないことを理解されたい。むしろ、上記で説明される特定の特徴及び動作は、請求項を実装する形態の例として開示され、当業者によって認識されるであろう他の特徴及び動作は、請求項の範囲内であることが意図される。
図1
図2
図3A
図3B
図3C
図3D
図3E
図4
図5
図6
図7
【国際調査報告】