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

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

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

特許7438201マルチプレーヤープログラムにおける高入力レイテンシの導入
<>
  • 特許-マルチプレーヤープログラムにおける高入力レイテンシの導入 図1
  • 特許-マルチプレーヤープログラムにおける高入力レイテンシの導入 図2
  • 特許-マルチプレーヤープログラムにおける高入力レイテンシの導入 図3
  • 特許-マルチプレーヤープログラムにおける高入力レイテンシの導入 図4
  • 特許-マルチプレーヤープログラムにおける高入力レイテンシの導入 図5
  • 特許-マルチプレーヤープログラムにおける高入力レイテンシの導入 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-15
(45)【発行日】2024-02-26
(54)【発明の名称】マルチプレーヤープログラムにおける高入力レイテンシの導入
(51)【国際特許分類】
   A63F 13/358 20140101AFI20240216BHJP
   A63F 13/77 20140101ALI20240216BHJP
   H04N 21/238 20110101ALI20240216BHJP
   H04N 21/24 20110101ALI20240216BHJP
【FI】
A63F13/358
A63F13/77
H04N21/238
H04N21/24
【請求項の数】 15
(21)【出願番号】P 2021516953
(86)(22)【出願日】2019-09-12
(65)【公表番号】
(43)【公表日】2022-01-11
(86)【国際出願番号】 US2019050713
(87)【国際公開番号】W WO2020072183
(87)【国際公開日】2020-04-09
【審査請求日】2022-08-29
(31)【優先権主張番号】16/148,953
(32)【優先日】2018-10-01
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】314015767
【氏名又は名称】マイクロソフト テクノロジー ライセンシング,エルエルシー
(74)【代理人】
【識別番号】100118902
【弁理士】
【氏名又は名称】山本 修
(74)【代理人】
【識別番号】100106208
【弁理士】
【氏名又は名称】宮前 徹
(74)【代理人】
【識別番号】100196508
【弁理士】
【氏名又は名称】松尾 淳一
(74)【代理人】
【識別番号】100119781
【弁理士】
【氏名又は名称】中村 彰吾
(72)【発明者】
【氏名】モリソン,ジョナサン・デヴィッド
(72)【発明者】
【氏名】クエルボ・ラッファイ,エドアルド・エイ
(72)【発明者】
【氏名】ボ,ホイ・フー
【審査官】岸 智史
(56)【参考文献】
【文献】特開2003-062350(JP,A)
【文献】国際公開第2006/057185(WO,A1)
【文献】特開2016-093364(JP,A)
【文献】特開2015-167737(JP,A)
【文献】特開2007-260410(JP,A)
【文献】特開2006-320502(JP,A)
【文献】特開2016-026642(JP,A)
【文献】特開2015-212920(JP,A)
【文献】特開2010-029393(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
A63F 9/24、13/00-13/98
(57)【特許請求の範囲】
【請求項1】
それぞれの複数のクライアントコンピューティングデバイスから複数の入力ストリームを受信することであって、各入力ストリームはマルチプレーヤーオンラインソフトウェアプログラム内のそれぞれのキャラクターのアクションを制御する複数の入力を含む、受信することと、
少なくとも、ターゲット入力頻度で前記各入力ストリームから入力が受信されたかどうかを検出することに基づいて、前記入力ストリームのそれぞれのレイテンシ(latency)を決定することと、
前記複数の入力ストリームの中で高(higher)レイテンシ入力ストリームおよび低(lower)レイテンシ入力ストリームを特定することであって、前記ターゲット入力頻度で受信されなかった、逃した入力が、前記高レイテンシ入力ストリームを特定するために用いられる、ことと、
前記高レイテンシ入力ストリームと前記低レイテンシ入力ストリームとの間のレイテンシの差を狭めるために、前記低レイテンシ入力ストリーム内に高レイテンシを導入することと、
を行うように構成されたプロセッサを備える、サーバーコンピューティングデバイス。
【請求項2】
前記複数の入力ストリームの最高レイテンシ入力ストリーム以外のそれぞれ他の入力ストリームに前記高レイテンシが導入される、請求項1に記載のサーバーコンピューティングデバイス。
【請求項3】
前記プロセッサが、
前記複数の入力ストリームのそれぞれについて長期(long-term)レイテンシを予測する
ことと、
1つまたは複数の低レイテンシ入力ストリーム中の導入された前記高レイテンシを、前記複数の入力ストリームの最高予測長期レイテンシまで高めることと、
を行うようにさらに構成される、請求項1に記載のサーバーコンピューティングデバイス。
【請求項4】
前記プロセッサが、前記複数の入力ストリームのそれぞれについての入力をバッファリングすることにより、前記高レイテンシを導入するように構成される、請求項1に記載のサーバーコンピューティングデバイス。
【請求項5】
前記プロセッサが、
前記複数のクライアントコンピューティングデバイスのそれぞれについて前記マルチプレーヤーオンラインソフトウェアプログラムのソフトウェアプログラム状態について出力フレームを、制御可能フレームレートでレンダリングすることと、
複数の出力フレームストリーム中のレンダリングされた前記出力フレームをそれぞれの前記複数のクライアントコンピューティングデバイスに送信することと、
を行うように構成される、請求項1に記載のサーバーコンピューティングデバイス。
【請求項6】
前記プロセッサが、前記複数の出力フレームストリームのそれぞれについての出力フレームをバッファリングすることにより、前記高レイテンシを導入するようにさらに構成される、請求項5に記載のサーバーコンピューティングデバイス。
【請求項7】
前記プロセッサが、前記制御可能フレームレートをターゲットフレームレートよりも小さくなるよう低下させることによって、前記高レイテンシを導入するようにさらに構成される、請求項5に記載のサーバーコンピューティングデバイス。
【請求項8】
前記プロセッサが、各クライアントコンピューティングデバイスに、前記出力フレームストリーム中の1つまたは複数の出力フレームに基づいて中間的なフレームを補間させて前記ターゲットフレームレートを達成するように構成される、請求項7に記載のサーバーコンピューティングデバイス。
【請求項9】
前記プロセッサが、ターゲット入力頻度で前記入力ストリームのそれぞれから入力が受信されたかどうかを検出することに基づいて前記入力ストリームのそれぞれの前記レイテンシを決定するように構成される、請求項1に記載のサーバーコンピューティングデバイス。
【請求項10】
前記プロセッサが、
前記ターゲット入力頻度に基づいて前記高レイテンシ入力ストリーム中の逃した(missed)入力を検出することと、
予測された入力を前記高レイテンシ入力ストリームに挿入して前記逃した入力を埋めることと、
を行うように構成される、請求項9に記載のサーバーコンピューティングデバイス。
【請求項11】
前記予測された入力が、前記入力ストリーム中の入力の履歴を含む訓練済み入力データに基づいて決定される、請求項10に記載のサーバーコンピューティングデバイス。
【請求項12】
プロセッサを含むサーバーコンピューティングデバイスにおいて、
それぞれの複数のクライアントコンピューティングデバイスから複数の入力ストリームを受信するステップであって、各入力ストリームはマルチプレーヤーオンラインソフトウェアプログラム内のそれぞれのキャラクターのアクションを制御する複数の入力を含む、受信するステップと、
少なくとも、ターゲット入力頻度で前記各入力ストリームから入力が受信されたかどうかを検出することに基づいて、前記入力ストリームのそれぞれのレイテンシを決定するステップと、
前記複数の入力ストリームの中で高(higher)レイテンシ入力ストリームおよび低(lower)レイテンシ入力ストリームを特定するステップであって、前記ターゲット入力頻度で受信されなかった、逃した入力が、前記高レイテンシ入力ストリームを特定するために用いられる、ステップと、
前記高レイテンシ入力ストリームと前記低レイテンシ入力ストリームとの間のレイテンシの差を狭めるために、前記低レイテンシ入力ストリーム内に高レイテンシを導入するステップと
を含む、方法。
【請求項13】
前記高レイテンシを導入するステップが、前記複数の入力ストリームのそれぞれについて入力をバッファリングするステップを含む、請求項12に記載の方法。
【請求項14】
前記複数のクライアントコンピューティングデバイスのそれぞれについて前記マルチプレーヤーオンラインソフトウェアプログラムのソフトウェアプログラム状態について出力フレームを、制御可能フレームレートでレンダリングするステップと、
複数の出力フレームストリーム中のレンダリングされた前記出力フレームをそれぞれの前記複数のクライアントコンピューティングデバイスに送信するステップと、
をさらに含む、請求項12に記載の方法。
【請求項15】
前記高レイテンシを導入するステップが、前記複数の出力フレームストリームのそれぞれについて出力フレームをバッファリングするステップを含む、請求項14に記載の方法
【発明の詳細な説明】
【技術分野】
【0001】
本願発明の一実施例は、例えば、マルチプレーヤープログラムにおける高入力レイテンシの導入に関する。
【背景技術】
【0002】
[0001]典型的なマルチプレーヤーオンラインソフトウェアプログラムは、各プレーヤーのクライアントコンピューティングデバイスで実行されているローカルのソフトウェアプログラム状態を含む。各ローカルのソフトウェアプログラム状態は、ローカルのユーザー入力に基づいて更新され、マルチプレーヤーセッションについての状態の「グランドトルース(ground truth)」のアービターとして機能するサーバーソフトウェアプログラム状態を維持するサーバーシステムにも送信される。しかしながら、ネットワークレイテンシにより、各プレーヤーのローカルのソフトウェアプログラム状態は、サーバーソフトウェアプログラム状態および他のプレーヤーのローカルのソフトウェアプログラム状態と、若干異なってくる場合がある。ローカルのソフトウェアプログラム状態をサーバーソフトウェアプログラム状態に同期させるために、ラグ補償技法が利用される場合がある。しかしながら、これらの技法は、プレーヤーのクライアントコンピューティングデバイスが、一般的にソフトウェアプログラムを実行しないシンクライアントコンピューティングデバイスである場合には、適用できないことがある。
【発明の概要】
【発明が解決しようとする課題】
【0003】
本願発明の一実施例は、例えば、マルチプレーヤープログラムにおける高入力レイテンシの導入に関する。
【課題を解決するための手段】
【0004】
[0002]上述の問題に対処するために、ターゲット入力ストリームにレイテンシを導入するためのサーバーコンピューティングデバイスが提供される。サーバーコンピューティングデバイスは、それぞれの複数のクライアントコンピューティングデバイスから複数の入力ストリームを受信するように構成されたプロセッサを含むことができる。各入力ストリームは、マルチプレーヤーオンラインソフトウェアプログラムにおいて、それぞれのキャラクターのアクションを制御する複数の入力を含むことができる。プロセッサは、入力ストリームのそれぞれのレイテンシを決定し、複数の入力ストリームのうち高レイテンシ入力ストリームおよび低レイテンシ入力ストリームを特定し、高レイテンシ入力ストリームと低レイテンシ入力ストリームとの間のレイテンシの差を狭めるために、低レイテンシ入力ストリームに高レイテンシを導入するようにさらに構成され得る。
【0005】
[0003]この概要は、詳細な説明において以下でさらに説明される概念の選択を簡単な形式で導入するために与えられる。この概要は、特許請求される主題の主要な特徴または本質的な特徴を特定することを意図されておらず、また特許請求される主題の範囲を限定するために用いられることも意図されていない。さらには、特許請求される主題は、本開示のいかなる部分で述べられるあらゆるまたはすべての不利な点を解決する実装形態に限定されない。
【図面の簡単な説明】
【0006】
図1】[0004]本開示の一実施形態による、クライアントコンピューティングデバイスおよびリモート実行デバイスを実装するサーバーコンピューティングデバイスを含む、例示的なコンピューティングシステムの概略図である。
図2】[0005]図1のクライアントコンピューティングデバイスおよびサーバーコンピューティングデバイスの概略図である。
図3】[0006]図1のサーバーコンピューティングデバイスを使用して入力ストリームに高レイテンシを導入する例の図である。
図4】[0007]図1のサーバーコンピューティングデバイスを使用してユーザー入力を予測する例の図である。
図5】[0008]図1のコンピューティングシステムにより実装される低レイテンシ入力ストリームに高レイテンシを導入するコンピューター実装方法の図である。
図6】[0009]本開示の一実施形態による、例示のコンピューティングシステムの概略表現である。
【発明を実施するための形態】
【0007】
[0010]典型的なマルチプレーヤーオンラインソフトウェアプログラムは、各ユーザーのクライアントコンピューティングデバイスで実行されているローカルのソフトウェアプログラム状態を含む。各ローカルのソフトウェアプログラム状態は、ローカルのユーザー入力に基づいて直ちに更新され得る。この入力は、マルチプレーヤーオンラインソフトウェアプログラムについての「グランドトルース」のアービターとして機能するサーバーソフトウェアプログラム状態を実行および管理するサーバーシステムにさらに送信され得る。したがって、各ユーザーのローカルのソフトウェアプログラム状態は、マルチプレーヤーオンラインソフトウェアプログラム内のそれぞれ他のユーザーにより入力されたユーザー入力を反映するために、サーバーソフトウェアプログラム状態に同期して更新され得る。ネットワークレイテンシに起因して、各プレーヤーのローカルのソフトウェアプログラム状態は、サーバーソフトウェアプログラム状態と異なってくる場合がある。例えば、第1のユーザーの入力は、そのユーザーのクライアントコンピューティングデバイスによって実行中のローカルのソフトウェアプログラム状態に直ちに反映され得る一方で、その同一の入力は、入力がサーバーシステムに送信され、マルチプレーヤーオンラインソフトウェアプログラムのサーバーソフトウェアプログラム状態に影響を与えるようサーバーシステムによって処理され、それぞれ他のユーザーのクライアントコンピューティングデバイスに通信されるまでは、他のユーザーのローカルのソフトウェアプログラム状態に反映することができない。典型的には、マルチプレーヤーオンラインソフトウェアプログラムは、クライアントコンピューティングデバイスに対する様々なレイテンシ補償技法を利用しており、高ネットワークレイテンシおよび/または不安定なネットワークレイテンシの潜在的なユーザーエクスペリエンスの低下の影響を最小にすることを助けている。
【0008】
[0011]しかしながら、各プレーヤーのクライアントコンピューティングデバイスが、マルチプレーヤーオンラインソフトウェアプログラムのローカルのソフトウェアプログラム状態を、ローカルで実行しないおよびレンダリングしないシンコンピューティングデバイスである場合、これらの同一のレイテンシ補償技法はもはや適用可能ではない場合がある。図1は、それぞれのネットワーク106上でサーバーコンピューティングデバイス104と通信するように構成された複数のクライアントコンピューティングデバイス102を含む例示のコンピューティングシステム100を図示している。サーバーコンピューティングデバイス104は、協調して動作する1つまたは複数の個別のサーバーコンピューティングデバイスを備えることができる。一例では、サーバーコンピューティングデバイス104は、本明細書において説明されるサーバーコンピューティングデバイス104の機能および処理を実装するために協調して動作するクラウドコンピューティング構成で動作する複数のサーバーコンピューティングデバイスを含むことができる。
【0009】
[0012]一例では、クライアントコンピューティングデバイス102のそれぞれは、マルチプレーヤーオンラインソフトウェアプログラムの、それら自身のローカルのソフトウェアプログラム状態では実行しないシンコンピューティングデバイスの形態を取ることができる。例えば、クライアントコンピューティングデバイス102としては、モバイルのコンピューティングデバイス、ゲーム用ストリーミングコンピューティングデバイス、タブレットコンピューティングデバイス、ストリーミングコンソール、およびオンラインマルチプレーヤーソフトウェアプログラムのローカルインスタンスを実行するための十分な処理能力を含むことができない他のタイプのコンピューティングデバイスを挙げることができる。図1に図示されるように、各クライアントコンピューティングデバイス102は、ユーザー入力をサーバーコンピューティングデバイス104に送信して、サーバーコンピューティングデバイス104によって実装されるリモート実行デバイス110によって生成された出力フレームを表示するように構成されたストリーミングクライアント108を実行するように構成される。代替的に、クライアントコンピューティングデバイス102は、処理能力およびマルチプレーヤーオンラインソフトウェアプログラムのフルバージョンを実行することができるメモリを備えたより高性能のコンピューターであってもよいが、それでも代わりにストリーミングクライアント108の形態でシンクライアントを実行している場合もある。
【0010】
[0013]一例では、各クライアントコンピューティングデバイス102はリモート実行デバイス110によって生成された出力フレームを表示するように構成され得るため、またそれ自身のローカルのフレームをレンダリングしないため、各プレーヤーの入力は、その入力がサーバーコンピューティングデバイス104に送信され、サーバーコンピューティングデバイス104のリモート実行デバイス110が各ユーザーの入力について出力フレームをレンダリングしてしまうまで、そのユーザーに表示されるフレーム内に必ずしも直ちに反映されない場合がある。さらには、複数のクライアントコンピューティングデバイス102を様々な場所に配置することができるため、サーバーコンピューティングデバイス104と通信するためのクライアントコンピューティングデバイス102ごとのネットワークのレイテンシは、クライアントコンピューティングデバイス102に異なる可能性がある。すなわち、第1のクライアントコンピューティングデバイスは、第1のネットワーク106A上でサーバーコンピューティングデバイス104と通信している可能性があり、第2のクライアントコンピューティングデバイスは、第2のネットワーク106B上でサーバーコンピューティングデバイス104と通信している可能性があり、第3のクライアントコンピューティングデバイス102は、第3のネットワーク106C上でサーバーコンピューティングデバイス104と通信している可能性があり、第1、第2、および第3のネットワークのネットワークレイテンシはそれぞれ異なる場合がある。例えば、第3のネットワーク106Cが第1のネットワーク106Aよりも高いネットワークレイテンシを有する場合、第1のクライアントコンピューティングデバイスからのユーザー入力は、第3のクライアントコンピューティングデバイスからのユーザー入力より速くサーバーコンピューティングデバイス104に到達する可能性があるため、潜在的に第3のクライアントコンピューティングデバイスのユーザーに対して第1のクライアントコンピューティングデバイスのユーザーに不当な優位性を与えている。
【0011】
[0014]上で議論した問題に対処するために、図2はオンラインマルチプレーヤーソフトウェアプログラムに参加中のクライアントコンピューティングデバイスからのターゲット入力ストリームにレイテンシを導入するように構成された例示のサーバーコンピューティングデバイス104を図示している。ターゲットとなる入力ストリームにレイテンシを選択的に導入することにより、参加中のユーザーの全員の間の公平性を維持するために、潜在的にサーバーコンピューティングデバイス104が、ネットワークレイテンシが異なることの不当な影響を軽減できるようにし、同じくサーバーコンピューティングデバイス104がマルチプレーヤーオンラインソフトウェアプログラムを、クライアントコンピューティングデバイスにストリーミングするために必要な帯域幅を低減する機会を提供する。
【0012】
[0015]図2に図示されるように、コンピューティングシステム100は、それぞれのネットワーク106上でサーバーコンピューティングデバイス104と通信するように構成された複数のクライアントコンピューティングデバイス102を含むことができる。各クライアントコンピューティングデバイス102は、不揮発性メモリ114、揮発性メモリ116,入力デバイス一式118、出力デバイス一式120、およびプロセッサ122などのコンピューターコンポーネントを含むことができる。入力デバイス一式118は、例えばキーボードおよびマウス、コンソールコントローラー、ジョイスティックなど、あらゆる適切なタイプの入力デバイスを含むことができる。出力デバイス一式120は、ディスプレイ120A、スピーカーなど、あらゆる適切なタイプの出力デバイスを含むことができる。
【0013】
[0016]各クライアントコンピューティングデバイス102のプロセッサ122は、クライアント側のストリーミングプラットフォーム124を、例えばオンラインマルチプレーヤーゲームまたは別のタイプのマルチユーザーアプリケーションの形態を取り得るマルチプレーヤーオンラインソフトウェアプログラム用に実行するように構成される。各クライアントコンピューティングデバイス102の各クライアント側ストリーミングプラットフォーム124は、それぞれのネットワーク106上でサーバーコンピューティングデバイス104と通信するように構成される。
【0014】
[0017]サーバーコンピューティングデバイス104は、様々な場所にある1つまたは複数のサーバーコンピューティングデバイスを含むことができる。例えば、第1のクライアントコンピューティングデバイスと通信する第1のサーバーコンピューティングデバイスは、アメリカ合衆国の西海岸に配置されていてもよく、一方で第2のクライアントコンピューティングデバイスと通信する第2のサーバーコンピューティングデバイスはアメリカ合衆国の東海岸に配置されていてもよい。この例では、第1および第2のサーバーコンピューティングデバイス104は、本明細書において説明されるサーバーコンピューティングデバイス104の処理および方法を実装するよう協調して機能するように構成することができる。図2に図示されるように、1つまたは複数のサーバーコンピューティングデバイス104のそれぞれは、不揮発性メモリ126、揮発性メモリ128およびプロセッサ130などのコンピューターコンポーネントを含むことができる。サーバーコンピューティングデバイス104のプロセッサ130は、サーバー側のストリーミングプラットフォーム132を実行するように構成されてもよい。クライアント側のストリーミングプラットフォーム124およびサーバー側のストリーミングプラットフォーム132は、マルチプレーヤーオンラインソフトウェアプログラム134を実行して各クライアントコンピューティングデバイス102のそれぞれのユーザーに提示するために、互いにデータを送受信するように構成される。
【0015】
[0018]マルチプレーヤーオンラインソフトウェアプログラム134の実行中、ユーザーはユーザーのそれぞれのクライアントコンピューティングデバイス102の入力デバイス一式118により入力136を入力することができる。一例では、マルチプレーヤーオンラインソフトウェアプログラム134は、オンラインのマルチプレーヤービデオゲームであり、ユーザーによって入力された複数の入力136は、マルチプレーヤーオンラインソフトウェアプログラム134内の、例えば移動、選択、アクションの実行など、キャラクターのアクションを制御する入力である。図2に図示されるように、クライアント側のストリーミングプラットフォーム124のストリーミングクライアント108は、入力ストリーム138中の複数の入力136を、ネットワーク106上でサーバーコンピューティングデバイス104に送信することができる。マルチプレーヤーオンラインソフトウェアプログラム134に参加中の各クライアントコンピューティングデバイス102は、マルチプレーヤーオンラインソフトウェアプログラム134内のそれぞれのキャラクターのアクションを制御する入力ストリーム138をサーバーコンピューティングデバイス104に送信するように構成することができる。
【0016】
[0019]サーバーコンピューティングデバイス104のプロセッサ130によって実行されるサーバー側のストリーミングプラットフォーム132の入力ハンドラ140は、それぞれの複数のクライアントコンピューティングデバイス102から複数の入力ストリーム138を受信するように構成される。一例では、複数の入力ストリーム138中の各入力136は、各クライアントコンピューティングデバイス102によって、例えばマルチプレーヤーオンラインソフトウェアプログラム134の、1/(ターゲットフレームレート)などのターゲット入力頻度142で、サーバーコンピューティングデバイス104に送信されるように構成される。各入力136は、例えばどのボタンが現在押下/アクティブ化されているか、ジョイスティックがどの方向に動かされているか、などの入力デバイス一式118の状態に関するデータを含むことができる。一部の例では、ユーザーによって入力デバイス一式118に何も入力されていない場合、入力ストリーム138中の入力136は、ターゲット入力頻度142に基づいてその時点でユーザーによって入力がなかったことを示す「ハートビート」入力であり得る。したがって、この例では、サーバー側のストリーミングプラットフォーム132の入力ハンドラ140は、入力136がターゲット入力頻度142で各クライアントコンピューティングデバイス102から受信されているかどうかを追跡すること、および各クライアントコンピューティングデバイス102から受信した入力中のあらゆるギャップを検出するために、構成することができる。
【0017】
[0020]複数の入力ストリーム138の入力136は、入力ハンドラ140の入力エミュレーター144および入力予測器146の両方に送信される。入力エミュレーター144は、マルチプレーヤーオンラインソフトウェアプログラム134を実行中のサーバーコンピューティングデバイス104のリモート実行デバイス110によって期待される入力タイプをエミュレートするように構成される。具体的な例としては、マルチプレーヤーオンラインソフトウェアプログラム134はコンソールゲームであり得、リモート実行デバイス110はリモートコンソールデバイスであり得る。この例では、クライアントコンピューティングデバイス102からの入力136は入力エミュレーター144によって処理することができ、入力エミュレーター144は、コンソールコントローラー入力など、リモート実行デバイス110およびマルチプレーヤーオンラインソフトウェアプログラム134のタイプに適切なエミュレートされた入力148を生成するように構成することができる。クライアントコンピューティングデバイス102は、タブレットコンピューティングデバイス、モバイルコンピューティングデバイスなど様々な形態を取ることができ、ひいては様々な入力の方法、タイプおよびモダリティを有することができるため、入力エミュレーター144はこれらのタイプの入力を、リモート実行デバイス110に適切な、対応する入力にマッピングするように構成される。例えば、リモート実行デバイス110がリモートのコンソールデバイスであり、クライアントコンピューティングデバイスがキーボードとマウスを使用するデスクトップのコンピューティングデバイスである場合、入力エミュレーター144は、エミュレートされた入力148を生成するためにキーボードおよびマウスの入力を対応するコンソールコントローラー入力にマッピングするように構成され得る。
【0018】
[0021]入力ハンドラ140の入力エミュレーター144は、これらの入力エミュレーション処理を複数のクライアントコンピューティングデバイス102から受信した入力ストリームのそれぞれに対して実施するように構成される。これらのエミュレートされた入力は、それぞれのクライアントコンピューティングデバイスごとにエミュレートされた入力ストリーム中でリモート実行デバイス110に送信することができる。リモート実行デバイス110は、マルチプレーヤーオンラインソフトウェアプログラム134のソフトウェアプログラム状態を管理し、複数のクライアントコンピューティングデバイス102のそれぞれについて入力ハンドラ140から受信したエミュレートされた入力148のストリームに基づいて、そのソフトウェアプログラム状態を更新するように構成される。
【0019】
[0022]エミュレートされた入力148のストリームに基づいて、リモート実行デバイス110は、マルチプレーヤーオンラインソフトウェアプログラム134の一場面において、クライアントコンピューティングデバイスごとにそれぞれのキャラクターの現在の視点を決定することができ、これらの現在の視点の見え方を、クライアントコンピューティングデバイス102ごとに出力フレーム150として、レンダリングすることができる。一例では、リモート実行デバイス110は、複数のクライアントコンピューティングデバイス120のそれぞれについてマルチプレーヤーオンラインソフトウェアプログラム134のソフトウェアプログラム状態についての出力フレーム150を、制御可能フレームレート151でレンダリングするように構成され得る。例えば、制御可能フレームレート151は、1秒あたり20フレーム、1秒あたり60フレーム、または別の適切なターゲットフレームレートに設定することができる。出力フレーム150はサーバー側のストリーミングプラットフォーム132の、グローバルレイテンシマネージャーおよびエンコーダー152によってエンコードされ得る。グローバルレイテンシマネージャーおよびエンコーダー152は、複数の出力フレームストリーム154中のレンダリングされた出力フレーム150をそれぞれの複数のクライアントコンピューティングデバイス102に送信するようにさらに構成することができる。
【0020】
[0023]図2に図示されるように、各クライアントコンピューティングデバイス102はそれらのそれぞれの出力フレームストリーム154をサーバーコンピューティングデバイス104から受信するように構成することができる。各クライアントコンピューティングデバイス102のストリーミングクライアント108は、出力フレームストリーム154を処理して、出力フレーム150を表示フレーム156として出力デバイス一式120のディスプレイ120Aに提示することができる。例えば、ストリーミングクライアント108は、ユーザーによって選択されたローカルの解像度、ディスプレイ120Aのタイプ、ユーザーによって選択された明るさ/暗さの設定などに基づいて、出力フレーム150を処理することができる。
【0021】
[0024]サーバーコンピューティングデバイス104は、他のタイプの出力を、例えば音声出力などの出力フレームストリーム154とともにさらに送信することができることを諒解されたい。ストリーミングクライアント108は、表示フレーム156とともに、出力デバイス一式120を介して、提示用にこれらの他のタイプの出力を処理するように構成することができる。上述の様式で、各クライアントコンピューティングデバイス102はユーザーから受信した入力を入力ストリーム中でそれぞれのネットワーク106を介してサーバーコンピューティングデバイス104に送信し、出力フレームストリーム中の対応する出力フレーム150をサーバーコンピューティングデバイス104から受信し、これらの出力フレームを表示フレーム156としてディスプレイ120Aに表示することができる。
【0022】
[0025]しかしながら、先に議論したように、サーバーコンピューティングデバイス104と通信するために各クライアントコンピューティングデバイス102によって利用されるそれぞれのネットワーク106は、様々なネットワークレイテンシおよび/またはネットワーク安定性を有する場合がある。図2に図示されるように、各クライアントコンピューティングデバイス102のプロセッサ122によって実行されるクライアント側のストリーミングプラットフォーム124は、そのそれぞれのネットワーク106のネットワークレイテンシおよびジッターをプロファイリングするように構成されたネットワーク予測器158をさらに含む。例えば、ネットワーク予測器158は、パケットをサーバーコンピューティングデバイス104に送信し、それぞれのパケットのラウンドタイムトリップ(パケットを送信してから、そのパケットについてサーバーからTCP肯定応答を受信するまでの時間)を測定するように構成することができる。ネットワーク予測器158は、ラウンドタイムトリップの時間の変化を分析して、ネットワークレイテンシおよび安定性における短期および長期の傾向を決定することができる。このやり方で、ネットワーク予測器158は、長期および短期についてのネットワークレイテンシの予測を含むネットワークレイテンシデータ160を生成することができる。ネットワーク予測器158は、ネットワークレイテンシデータ160を、サーバーコンピューティングデバイス104によって実装されるサーバー側のストリームプラットフォーム132のグローバルレイテンシマネージャーおよびエンコーダー152に送信するように構成することができる。一例では、グローバルレイテンシマネージャーおよびエンコーダー152は、短期および長期のネットワークレイテンシの傾向および安定性を同様に測定するために、複数のクライアントコンピューティングデバイス102と通信するために使用されるそれぞれのネットワーク106をさらにプロファイリングするように構成され得る。各クライアントコンピューティングデバイス102から受信したネットワークレイテンシデータ160は、グローバルレイテンシマネージャーおよびエンコーダー152によって記憶および管理される。
【0023】
[0026]クライアントコンピューティングデバイス162ごとのネットワークレイテンシデータに基づいて、グローバルレイテンシマネージャーおよびエンコーダー152は、複数のクライアントコンピューティングデバイス102からそれぞれ受信した入力ストリーム138のそれぞれのレイテンシを決定するように構成される。上で議論したように、複数のクライアントコンピューティングデバイス102によって利用されるそれぞれのネットワーク106は、様々なレイテンシおよびネットワーク安定性を有する場合がある。したがって、入力ストリーム138のそれぞれの決定されたレイテンシに基づいて、グローバルレイテンシマネージャーおよびエンコーダー152は、複数の入力ストリーム138の中で高レイテンシ入力ストリームおよび低レイテンシ入力ストリームを特定するように構成することができる。図3に図示される例では、第1のクライアントコンピューティングデバイス102Aおよび第2のクライアントコンピューティングデバイス102Bによって送信される入力ストリーム138は、サーバーコンピューティングデバイス104のグローバルレイテンシマネージャーおよびエンコーダー152によって、低レイテンシ入力ストリーム138Aおよび138Bとして特定される。一方で、第3のクライアントコンピューティングデバイス102Cによって送信された入力ストリーム138は、グローバルレイテンシマネージャーおよびエンコーダー152によって管理されるクライアントコンピューティングデバイス162ごとのネットワークおよびレイテンシデータに基づいて、高レイテンシ入力ストリーム138Cとして特定される。
【0024】
[0027]複数のクライアントコンピューティングデバイス102から受信した入力ストリームのうち少なくとも1つが他の入力ストリームと比較して閾値レイテンシよりも大きいレイテンシ差を有していると判断した後、高レイテンシ入力ストリーム138Cと低レイテンシ入力ストリーム138A/138Bとの間のレイテンシの差を狭めるために、グローバルレイテンシマネージャーおよびエンコーダー152は、高レイテンシを低レイテンシ入力ストリーム138A/138Bに導入するように構成され得る。1つの構成において、グローバルレイテンシマネージャーおよびエンコーダー152は、複数の入力ストリームの最高レイテンシ入力ストリーム以外のそれぞれ他の入力ストリームに高レイテンシを導入するように構成することができる。例えば、図3に図示されるように、第1のクライアントコンピューティングデバイス102Aおよび第2のクライアントコンピューティングデバイス102Bの両方によって送信された入力ストリーム138は、低レイテンシ入力ストリーム138Aおよび138Bとして特定される。したがって、グローバルレイテンシマネージャーおよびエンコーダー152は、第1のネットワーク106Aおよび第2のネットワーク106B上で送信される低レイテンシストリーム138Aおよび138Bの両方に高レイテンシを導入するように構成することができる。
【0025】
[0028]一例では、低レイテンシストリームのそれぞれに導入された高レイテンシ164は、グローバルレイテンシマネージャーおよびエンコーダー152によってスケーリング可能であり、制御可能である。グローバルレイテンシマネージャーおよびエンコーダー152は、導入された高レイテンシ164を、複数の入力ストリーム138のそれぞれに対して予測された長期レイテンシに基づいて制御するように構成され得、これは各クライアントコンピューティングデバイス102のネットワーク予測器から受信したネットワークレイテンシデータ162に基づいて決定され得。すなわち、グローバルレイテンシマネージャーおよびエンコーダー152は、複数の複数の入力ストリーム138の最高予測長期レイテンシ166を特定し、1つまたは複数の低レイテンシ入力ストリーム138A/138B中の導入された高レイテンシ164を、複数の入力ストリーム138の最高予測長期レイテンシ166まで高めるように構成され得る。このやり方で、グローバルレイテンシマネージャーおよびエンコーダー152は、クライアントコンピューティングデバイス102の複数の入力および出力ストリームのそれぞれが閾値レイテンシ差におさまるレイテンシとなるまで、特定した低レイテンシストリームに増加する人工的なレイテンシ量を導入するように構成され得る。
【0026】
[0029]グローバルレイテンシマネージャーおよびエンコーダー152は、様々な方法により選択された入力ストリームに高レイテンシを導入するように構成され得る。一例では、グローバルレイテンシマネージャーおよびエンコーダー152は、複数の入力ストリーム138のそれぞれについての入力をバッファリングすることにより、高レイテンシを導入するように構成され得る。図3に図示した例では、複数のクライアントコンピューティングデバイス102からの各入力ストリーム138中の各入力136は、サーバーコンピューティングデバイス104によって受信されると入力バッファ168に入れることができる。低レイテンシ入力ストリーム138Aおよび138Bのそれぞれについての入力136は、高レイテンシ入力ストリーム138Cからの対応する入力がサーバーコンピューティングデバイス104の入力ハンドラ140によって受信されるまで、入力バッファ168中で保持することができる。クライアントコンピューティングデバイス102のすべてから入力136が受信されてしまうと、これらの入力を入力バッファ168から取り出し、その後これらの入力に基づいて対応する出力フレーム150をレンダリングすることができるリモート実行デバイス110に送信することができる。入力バッファ168は、1入力、2入力、3入力などのあらゆる適切な数の入力をバッファリングするように構成され得ることを諒解されたい。
【0027】
[0030]一例では、サーバーコンピューティングデバイス104は、低レイテンシ入力ストリーム138Aおよび138Bからの入力を、独立して出力フレームストリーム154にバッファリングするように構成することができる。すなわち、入力ハンドラ140が高レイテンシ入力ストリーム138Cからの入力を待機している間、入力が入力バッファ168内で保持されていたとしても、リモート実行デバイス110は新しい入力がない状態で出力フレーム150を制御可能フレームレート150でレンダリングし続け、これらの出力フレームをそれぞれの出力フレームストリーム154中で、クライアントコンピューティングデバイス102に送信することができる。入力をバッファリングするため、低レイテンシネットワーク上で低レイテンシ入力ストリーム138を有するクライアントコンピューティングデバイス102のエンドユーザーには、その入力136をまだ反映しない表示フレーム156の中断のないストリームが提示され、それによりエンドユーザーはマルチプレーヤーオンラインソフトウェアプログラム134が、あまり応答的ではなく、また高レイテンシを有していると認識することになる。しかしながら、これらのエンドユーザーの視覚的なエクスペリエンスは維持される。このやり方で、マルチプレーヤーオンラインソフトウェアプログラム134の認識される応答性(例えば、ユーザー入力とその入力を反映した表示フレームとの間で経過する時間)は、高レイテンシネットワークを有する他のユーザーによって体験される応答性と一致させるために、クライアント側のフレームレートを低下させることなく、低レイテンシネットワークを有するユーザーのために選択的に低減されてもよい。
【0028】
[0031]別の例では、グローバルレイテンシマネージャーおよびエンコーダー152は、複数の出力フレームストリーム154のそれぞれについての出力フレーム150をバッファリングすることにより、高レイテンシを導入するように構成され得る。図3に図示されるように、リモート実行デバイス110によってレンダリングされる出力フレーム150は、複数のクライアントコンピューティングデバイス102についての出力フレームストリーム154のそれぞれについてそれぞれの出力フレームバッファ170内に保持することができる。次いで、サーバーコンピューティングデバイス104は、グローバルレイテンシマネージャーおよびエンコーダー152によって制御されるように、複数のクライアントコンピューティングデバイス102に送信されるそれぞれの出力フレームバッファ170から出力フレーム150を取り出すことができる。例えば、グローバルレイテンシマネージャーおよびエンコーダー152は、出力フレーム150が同じような時刻にクライアントコンピューティングデバイス102に到達するべく、最高予測長期レイテンシ166に基づいて出力フレームバッファ170から出力フレーム150を取り出して送信することができる。すなわち、低レイテンシストリームについての出力フレームは、出力フレームが同じような時刻にクライアントコンピューティングデバイスに到達するべく、低レイテンシストリームと高レイテンシストリームとの間のレイテンシの差に応じて出力フレームバッファ170内で遅延され得る。このやり方で、クライアントコンピューティングデバイス102のそれぞれのエンドユーザーは、マルチプレーヤーオンラインソフトウェアプログラム134の公平性が維持されるべく、表示フレームにおいて高ネットワークレイテンシにより生じる同程度の「ジッター」を体験することができる。上述の入力バッファリングおよびアウトフレームバッファリング処理は、サーバーコンピューティングデバイス104によって、一緒にまたは別個に実装することができることを諒解されたい。
【0029】
[0032]別の例では、グローバルレイテンシマネージャーおよびエンコーダー152は、制御可能フレームレート150をターゲットフレームレート172よりも小さくなるよう低下させることにより、高レイテンシを導入するように構成され得る。例えば、グローバルレイテンシマネージャーおよびエンコーダー152はマルチプレーヤーオンラインソフトウェアプログラム134の制御可能フレームレート150を、最高予測長期レイテンシ166に基づいて修正することができる。すなわち、マルチプレーヤーオンラインソフトウェアプログラム134の認識される応答性(例えば、ユーザー入力とその入力を反映した表示フレームとの間で経過する時間)は、高ネットワークレイテンシに起因して既に低減されているため、サーバーコンピューティングデバイス104はマルチプレーヤーオンラインソフトウェアプログラム134の制御可能フレームレート150を都合よく低下させるように構成され得る。制御可能フレームレート150を低下させることにより、出力フレーム150は、リモート実行デバイス110によって低いレートでレンダリングされるため、サーバーコンピューティングデバイス104にかかる計算機的な負荷を低減する。さらには、出力フレーム150が少なくなるため、出力フレームストリーム154をクライアントコンピューティングデバイスに送信するために必要とされるストリーミング帯域幅が、やはり低減され、それによってサーバーコンピューティングデバイス104についての潜在的にコストおよびハードウェアリソースを節約する。制御可能フレームレート150を低減することがマルチプレーヤーオンラインソフトウェアプログラム134の認識される応答性も低減する一方で、グローバルレイテンシマネージャーおよびエンコーダー152は、最高予測長期レイテンシ166に比例して制御可能フレームレート150を低減することがある。
【0030】
[0033]ユーザーに表示されている出力フレーム150のフレームレートを低減することは、潜在的にこれらのユーザーにとってマルチプレーヤーオンラインソフトウェアプログラム134の認識される滑らかさを低下させることがある。したがって、一例では、サーバーコンピューティングデバイス104のグローバルレイテンシマネージャーおよびエンコーダー152は、各クライアントコンピューティングデバイス102に、出力フレームストリーム154中の1つまたは複数の出力フレーム150に基づいて中間的なフレーム174を補間させてターゲットフレームレート172を達成するように、さらに構成され得る。図2に図示されるように、グローバルレイテンシマネージャーおよびエンコーダー152は、それぞれのクライアントコンピューティングデバイス102についての出力フレームストリーム154中の出力フレーム150を、これらのクライアントコンピューティングデバイス102のそれぞれによって実行されるクライアント側のストリーミングプラットフォーム124のフレームインターポレーター178に送信するように構成され得る。フレームインターポレーター176は、中間的なフレーム174を、中間的なフレーム174に先立ってレンダリングされた出力フレームおよび/または中間的なフレーム174に続いてレンダリングされた出力フレームに基づいて、補間するように構成することができる。すなわち、制御可能フレームレート150が1秒あたり60フレームであり、かつ制御可能フレームレート150が1秒あたり30フレームまで低減されている場合、グローバルレイテンシマネージャーおよびエンコーダー152は、フレームインターポレーター176に、1秒あたり60フレームのターゲットフレームレート172を達成するために中間的なフレーム174をフレームごとに補間することを命令するように構成され得る。
【0031】
[0034]フレームインターポレーター176は、ホモグラフィ、時間ワーピング、画像ベースのレンダリングメッシュワーピング、後段再投影(late stage reprojection)技法、ニューラルネットワーク補間、および他の適切な補間技法などの補間技法を用いて中間的なフレーム174を補間するように構成され得る。これらの補間技法は、完全なレンダリング処理を必要とせず、適当なハードウェアおよびマルチプレーヤーオンラインソフトウェアプログラム134用の完全なレンダリングプロセッサを実施するための処理リソースを有していないシンクライアントコンピューティングデバイスに対して実施されてもよい。補間される中間的なフレーム174は、出力フレーム150とともにストリーミングクライアント108に送信され、ターゲットフレームレート172でディスプレイ120Aを介してユーザーに提示される表示フレーム156として処理され得る。このやり方で、サーバーコンピューティングデバイス104はマルチプレーヤーオンラインソフトウェアプログラム134の視覚的な忠実度を低減させ、帯域幅およびハードウェアリソースのコストを低減しつつ、マルチプレーヤーオンラインソフトウェアプログラム134についてのターゲットフレームレート172を維持することができる。
【0032】
[0035]グローバルレイテンシマネージャーおよびエンコーダー152は、各クライアントコンピューティングデバイス102が従うと期待される、期待ターゲット入力頻度142に基づいて、複数のクライアントコンピューティングデバイス102から受信した入力ストリーム138中の短期のレイテンシ変化を検出するようにさらに構成され得る。すなわち、各クライアントコンピューティングデバイス102はターゲット入力頻度142で入力136を送信するように期待される。例えば、ユーザーが特定の周期で入力136を入力していない場合でも、クライアントコンピューティングデバイス102はなお、ユーザーによって入力がないことを示す「ハートビート」入力をサーバーコンピューティングデバイス104に送信することができる。したがって、グローバルレイテンシマネージャーおよびエンコーダー152は、ターゲット入力頻度142で入力ストリーム138のそれぞれから入力が受信されたかどうかを検出することに基づいて入力ストリーム138のそれぞれのレイテンシを決定するように構成され得る。グローバルレイテンシマネージャーおよびエンコーダー152が、サーバーコンピューティングデバイス104が特定のクライアントコンピューティングデバイス102から入力ストリーム138中の入力を受信していないと検出する場合、グローバルレイテンシマネージャーおよびエンコーダー152は、その特定のクライアントコンピューティングデバイス102について、レイテンシに短期的な増大またはネットワークの安定性に中断があったことと判断することができる。
【0033】
[0036]図2に図示されるように、クライアントコンピューティングデバイス102からの入力ストリーム138のうちの1つが入力を逃したと検出したことに基づいて、入力ハンドラ140の入力予測器146は、逃した入力を埋めるための予測された入力178を決定するように構成され得る。予測された入力178は入力エミュレーター144に送信することができ、入力エミュレーター144は、リモート実行デバイス110に送信される対応するエミュレートされた入力148を生成するように構成され得る。リモート実行デバイス110は、ユーザーがその入力を入力ストリーム138に入力したかのように、予測された入力178について出力フレーム150をレンダリングすることができる。このやり方で、レイテンシの短期的な増大および/またはネットワーク安定性の問題により生じる入力ストリーム138中の逃した入力は、サーバーコンピューティングデバイス104によって予測された入力178で埋めることができる。
【0034】
[0037]一例では、予測された入力178は、その入力ストリーム138中の入力の履歴を含む訓練済み入力データ180に基づいて決定することができる。例えば、入力予測器146は入力ストリーム138中の先行する入力に基づいて予測された入力178を決定することができる。入力の履歴は、さらなる入力を予測するために使用されるユーザー用の訓練済みモデルを生成するためにさらに使用され得る。入力予測器146は、プレーヤーからのフィードバックを用いて訓練することができる。最初は、入力予測器146は、例えば好み、または最もプレイしたゲーム、オンラインサービスにおけるユーザーのランキング、アチーブメントなど、あるユーザーに類似した特性を有するプレーヤーについて既に訓練済みのモデルを用いて、そのユーザー用にブートストラップされてもよい。
【0035】
[0038]図4は、高レイテンシ入力ストリーム138C内で逃した入力を埋めるために、予測された入力を生成する例示の入力予測器146を図示している。図示されるように、サーバーコンピューティングデバイス104は、入力がクライアントコンピューティングデバイス102からターゲット入力頻度142に従って受信されることを期待する。サーバーコンピューティングデバイス104によって実装されるサーバー側のストリーミングプラットフォーム140の入力ハンドラ140は、ターゲット入力頻度142に基づいて高レイテンシ入力ストリーム138C中の逃した入力180を検出するように構成され得る。すなわち、サーバーコンピューティングデバイス104が、期待した時点以降の閾値時間にクライアントコンピューティングデバイスから入力を受信していない場合、入力ハンドラ140は、クライアントコンピューティングデバイスがそのクライアントコンピューティングデバイスとサーバーコンピューティングデバイス104との間において、短期的な高レイテンシまたはネットワークの不安定に起因して入力を逃したと判断することができる。逃した入力180を検出すると、入力予測器146は上で議論したように予測された入力178を決定し、予測された入力178を高レイテンシ入力ストリーム138Cに挿入して逃した入力180を埋めるように構成され得る。
【0036】
[0039]図4で図示された例は、高レイテンシ入力ストリーム138C中で1つまたは2つの入力だけを続けて逃したシーケンスを示している。しかしながら、一部の例では、ネットワークの不安定に起因して、クライアントコンピューティングデバイスは可能性として、例えば5入力、10入力など多くの連続した入力を逃す場合がある。この例では、グローバルレイテンシマネージャーおよびエンコーダー152は、高レイテンシ入力ストリーム138Cが、5入力、10入力または15入力など、閾値逃した入力数(プログラム開発者により定義することができる)よりも多くの連続した入力を逃したかどうかを検出するように構成されてもよい。高レイテンシ入力ストリーム138Cが閾値入力数よりも多くの入力を逃した場合、グローバルレイテンシマネージャーおよびエンコーダー152は、次の入力が高レイテンシ入力ストリーム138C中で受信されるまで、マルチプレーヤーオンラインソフトウェアプログラム134の実行を停止するように構成されてもよい。高レイテンシ入力ストリーム138Cが逃した入力が閾値入力数よりも少ない数である場合、グローバルレイテンシマネージャーおよびエンコーダー152は、その入力ストリームについて新しい入力を入力バッファ168から取り出すよう入力ハンドラ140に命令するように、および/または高レイテンシ入力ストリーム138C中で逃した入力スロットに挿入するための新しい予測された入力178を生成するよう入力予測器146に命令するように構成され得る。実際の入力136および予測された入力178を含む修正済み高レイテンシ入力ストリーム182は、リモート実行デバイス110に送信され、上述の方法に従って処理され得る。
【0037】
[0040]入力予測器146は、最新および/または将来的な、機械学習(ML)、人工知能(AI)、および/または自然言語処理(NLP)技法のあらゆる適切な組合せを使用して実装することができることを諒解されたい。例えば、図2に示される訓練済みデータ180の機械学習モデルは、特定のクライアントコンピューティングデバイス102のユーザーのための予測された入力178を生成するために、入力予測器146によって利用される状態機械を生成するように訓練され得る。一例では、機械学習モデルは、その特定のクライアントコンピューティングデバイス102から受信した入力データの履歴に基づいて訓練される場合がある。別の例では、機械学習モデルは、時間的に異なるゲームセッションにまたがる複数の異なるユーザーから受信した入力の履歴に基づいて訓練される場合がある。加えて、訓練済みデータ180の機械学習モデルは、様々なジオロケーション、データセンターなどに配置され得る複数の異なるサーバーコンピューティングデバイス104同士で共有されてもよい。例えば、図2に示される訓練済みデータ180の機械学習モデルは、様々なデータセンターに配置された、それぞれが複数の異なるクライアントコンピューティングデバイスから入力データを受信することができる複数の異なるサーバーコンピューティングデバイス104によって受信された入力データを使用して訓練することができる。
【0038】
[0041]実装形態に組み込まれ得る技法の非限定的な例としては、サポートベクターマシン、マルチレイヤニューラルネットワーク、畳み込みニューラルネットワーク(例えば、画像および/または動画を処理するための空間的畳み込みニューラルネットワーク、音声信号および/もしくは自然言語センテンスを処理するための時間的畳み込みニューラルネットワーク、および/または1つもしくは複数の時間的および/もしくは空間的次元にわたって特徴を畳み込んでプールするように構成される、あらゆる他の適切な畳み込みニューラルネットワークを含む)、再帰ニューラルネットワーク(例えば、長短期メモリネットワーク)、連想メモリ(例えば、ルックアップテーブル、ハッシュテーブル、ブルームフィルタ、ニューラルチューリングマシン、および/またはニューラルランダムアクセスメモリ)、単語埋め込みモデル(例えば、GloVeまたはWord2Vec)、教師無し空間および/またはクラスタリング法(例えば、最近傍アルゴリズム、トポロジカルデータ分析、および/またはk平均クラスタリング)、グラフィカルモデル(例えば、(隠れ)マルコフモデル、マルコフ確率場、(隠れ)条件付き確率場、および/またはAIナレッジベース)、および/または自然言語処理技法(例えば、トークン化、ステミング、一貫性および/または依存性解析、および/またはインテント認識、分節モデル、および/または超分節モデル(例えば、隠れ動的モデル(hidden dynamic models)))が挙げられる。
【0039】
[0042]一部の例では、本明細書において説明される方法および処理は、1つまたは複数の微分可能関数を使用して実装される場合があり、微分可能関数の勾配は、微分可能関数の入力および/または出力に関して(例えば、訓練データに関して、および/または目的関数に関して)計算および/または推定され得る。そのような方法および処理は、一組の訓練可能パラメータによって、少なくとも部分的に決定することができる。それに応じて、特定の方法または処理についての訓練可能パラメータは、方法または処理の機能性を常に改善するよう、あらゆる適切な訓練手順を通じて調節され得る。
【0040】
[0043]訓練可能パラメータを調節するための訓練手順の非限定的な例としては、教師あり訓練(例えば、最急降下法、またはあらゆる他の適切な最適化法を用いるもの)、ゼロショット、少数ショット、教師無し学習法(例えば、教師無しクラスタリング法から導出したクラスに基づく分類)、強化学習(例えば、フィードバックに基づくディープQ学習)および/または敵対的生成ニューラルネットワーク訓練法、信念伝搬法、RANSAC(ランダムサンプルコンセンサス)、文脈バンディット法、最尤法および/または期待値最大化法が挙げられる。一部の例では、本明細書において説明されるシステムの複数の方法、処理、および/またはコンポーネントは、複数のコンポーネントの集合的な機能のパフォーマンスを測定する目的関数に関して(例えば、強化フィードバックに関して、および/またはラベル付け訓練データに関して)同時的に訓練することができる。複数の方法、処理、および/またはコンポーネントを同時的に訓練することは、そのような集合的な機能を改善することができる。一部の例では、1つまたは複数の方法、処理、および/またはコンポーネントは他のコンポーネントと無関係に訓練される場合がある(例えば、履歴的なデータに対するオフライン訓練)。
【0041】
[0044]図5はコンピューター実装の方法500のフローチャートを示す。方法500は、図1のサーバーコンピューティングデバイスによって実装され得る。502において、方法500は、それぞれの複数のクライアントコンピューティングデバイスから複数の入力ストリームを受信することを含むことができ、各入力ストリームはマルチプレーヤーオンラインソフトウェアプログラム内のそれぞれのキャラクターの、例えば移動、選択、アクションの実行など、アクションを制御する複数の入力を含む。図2に関して上述したように、クライアントコンピューティングデバイスによって実装されるストリーミングクライアント108は、入力ストリーム138中の複数の入力136を、ネットワーク106上でサーバーコンピューティングデバイス104に送信することができる。マルチプレーヤーオンラインソフトウェアプログラム134に参加中の各クライアントコンピューティングデバイス102は、入力ストリーム138をサーバーコンピューティングデバイス104に送信するように構成され得る。
【0042】
[0045]504において、方法500は入力ストリームのそれぞれのレイテンシを決定することを含むことができる。図2を参照して上述したように、クライアントコンピューティングデバイスのネットワーク予測器158は、そのそれぞれのネットワーク106のネットワークレイテンシおよび/またはコンポーネントジッターをプロファイリングするように構成され得る。例えば、ネットワーク予測器158はサーバーコンピューティングデバイス104にパケットを送信し、それぞれのパケットのラウンドタイムトリップを測定するように構成されてもよい。ネットワーク予測器158は、ラウンドタイムトリップの時間変化を分析して、ネットワークレイテンシおよび安定性における短期および長期の傾向を決定することができる。このやり方で、ネットワーク予測器158は、短期および長期についてのネットワークレイテンシの予測を含むネットワークレイテンシデータ160を生成することができる。
【0043】
[0046]506において、方法500は複数の入力ストリームのそれぞれの長期レイテンシを予測することを含むことができる。図2を参照して上述したように、複数の入力ストリーム138のそれぞれに対して予測された長期レイテンシは、各クライアントコンピューティングデバイス102のネットワーク予測器から受信したネットワークレイテンシデータ162に基づいて決定することができる。
【0044】
[0047]508において、方法500は複数の入力ストリームの中で高レイテンシ入力ストリームおよび低レイテンシ入力ストリームを特定することができる。図2を参照して説明したように、サーバーコンピューティングデバイス104のグローバルレイテンシマネージャーおよびエンコーダーは、クライアントコンピューティングデバイス102から受信したネットワークレイテンシデータを比較して高および低入力レイテンシストリームを特定するように構成され得る。一例では、グローバルレイテンシマネージャーおよびエンコーダーは、ターゲット入力頻度に従ってある特定の入力ストリーム内で逃した入力があることを検出したことに基づいて、その特定の入力ストリームが高レイテンシ入力ストリームであると特定するようにさらに構成されてもよい。
【0045】
[0048]510において、方法500は、高レイテンシ入力ストリームと低レイテンシ入力ストリームとの間のレイテンシの差を狭めるために、低レイテンシ入力ストリーム内に高レイテンシを導入することを含むことができる。一例では、複数の入力ストリームの最高レイテンシ入力ストリーム以外のそれぞれ他の入力ストリームに高レイテンシが導入される。最高レイテンシ入力ストリームは各クライアントコンピューティングデバイスから受信したネットワークレイテンシに基づいて決定されてもよい。
【0046】
[0049]ステップ510において、高レイテンシは、様々な技法を使用して低レイテンシ入力ストリームに導入される可能性がある。一例では、高レイテンシを導入することは、複数の入力ストリームのそれぞれについて入力をバッファリングすることを含む。図3を参照して説明したように、複数のクライアントコンピューティングデバイス102からの各入力ストリーム138中の各入力136は、サーバーコンピューティングデバイス104によって受信されると入力バッファ168に入れられる場合がある。低レイテンシ入力ストリーム138Aおよび138Bのそれぞれについての入力136は、高レイテンシ入力ストリーム138Cからの対応する入力がサーバーコンピューティングデバイス104の入力ハンドラ140によって受信されるまで、入力バッファ168中で保持されてもよい。クライアントコンピューティングデバイス102のすべてから入力136が受信されてしまうと、これらの入力を入力バッファ168から取り出し、その後これらの入力に基づいて対応する出力フレーム150をレンダリングすることができるリモート実行デバイス110に送信することができる。
【0047】
[0050]別の例では、高レイテンシを導入することは、複数の出力フレームのそれぞれについて出力フレームをバッファリングすることを含むことができる。図3を参照して説明したように、リモート実行デバイス110によってレンダリングされる出力フレーム150は、複数のクライアントコンピューティングデバイス102についての出力フレームストリーム154のそれぞれについてそれぞれの出力フレームバッファ170内に保持される場合がある。次いで、サーバーコンピューティングデバイス104は、グローバルレイテンシマネージャーおよびエンコーダー152によって制御されるように、複数のクライアントコンピューティングデバイス102に送信されるそれぞれの出力フレームバッファ170から出力フレーム150を取り出すことができる。
【0048】
[0051]別の例では、高レイテンシを導入することは、制御可能フレームレートをターゲットフレームレートよりも小さくなるよう低下させることを含むことができる。図3を参照して説明したように、グローバルレイテンシマネージャーおよびエンコーダー152はマルチプレーヤーオンラインソフトウェアプログラム134の制御可能フレームレート150を、最高予測長期レイテンシ166に基づいて修正することができる。すなわち、マルチプレーヤーオンラインソフトウェアプログラム134の認識される応答性(例えば、ユーザー入力とその入力を反映した表示フレームとの間で経過する時間)は、高ネットワークレイテンシに起因して既に低減されているため、サーバーコンピューティングデバイス104はマルチプレーヤーオンラインソフトウェアプログラム134の制御可能フレームレート150を都合よく低下させるように構成され得る。
【0049】
[0052]512において、方法500は、1つまたは複数の低レイテンシ入力ストリーム中の導入された高レイテンシを、複数の入力ストリームの最高予測長期レイテンシまで高めることを含むことができる。ステップ512は、クライアントコンピューティングデバイス102の複数の入力および出力ストリームのそれぞれが閾値レイテンシ差におさまるレイテンシとなるまで、特定した低レイテンシストリームに増加する人工的なレイテンシの量を導入することを含むことができる。
【0050】
[0053]514において、方法500は、複数のクライアントコンピューティングデバイスのそれぞれについてマルチプレーヤーオンラインソフトウェアプログラムのソフトウェアプログラム状態について出力フレームを、制御可能フレームレートでレンダリングすることを含むことができる。図2を参照して上述したように、エミュレートされた入力148のストリームに基づいて、リモート実行デバイス110は、マルチプレーヤーオンラインソフトウェアプログラム134の一場面において、クライアントコンピューティングデバイスごとにそれぞれのキャラクターの現在の視点を決定することができ、これらの現在の視点の見え方を、クライアントコンピューティングデバイス102ごとに出力フレーム150として、レンダリングすることができる。
【0051】
[0054]516において、方法500は、複数の出力フレームストリーム中のレンダリングされた出力フレームをそれぞれの複数のクライアントコンピューティングデバイスに送信することを含むことができる。ステップ512で議論したように、レンダリングされた出力フレームは高レイテンシを選択したストリームに導入するために、出力フレームバッファ内に保持される場合がある。レンダリングされた出力フレームは、出力フレームバッファから取り出し、その後そのストリーム内のターゲット導入レイテンシを達成するよう、関連付けられているクライアントコンピューティングデバイスに送信される場合がある。
【0052】
[0055]518において、方法500は各クライアントコンピューティングデバイスに、出力フレームストリーム中の1つまたは複数の出力フレームに基づいて中間的なフレームを補間させてターゲットフレームレートを達成することを含む。図2を参照して上述したように、クライアントコンピューティングデバイスによって実装されるフレームインターポレーター176は、中間的なフレーム174を、中間的なフレーム174に先立ってレンダリングされた出力フレームおよび/または中間的なフレーム174に続いてレンダリングされた出力フレームに基づいて、補間するように構成され得る。フレームインターポレーター176は、ホモグラフィ、時間ワーピング、画像ベースのレンダリングメッシュワーピング、後段再投影技法、ニューラルネットワーク補間、および他の適切な補間技法などの補間技法を用いて中間的なフレーム174を補間するように構成され得る。出力フレームおよび補間された中間的なフレームは、クライアントコンピューティングデバイスのディスプレイによりユーザーに提示することができる。
【0053】
[0056]上述のシステムおよび方法は、様々な技法を使用して一部のプレーヤーのストリームにレイテンシを導入し、各プレーヤーが自身のそれぞれのネットワーク接続に様々なレイテンシを有するにも関わらず、マルチプレーヤーセッション内で各プレーヤーがより類似したゲームエクスペリエンスを有することができるようにすることによって、オンラインソフトウェアプログラムのマルチプレーヤーセッションにおける公平性を維持するために利用される場合がある。
【0054】
[0057]一部の実施形態では、本明細書において説明される方法および処理は、1つまたは複数のコンピューティングデバイスのコンピューティングシステムに結びつけられる場合がある。特に、そのような方法および処理は、コンピューター-アプリケーションプログラムまたはサービス、アプリケーション-プログラミングインターフェース(API)、ライブラリ、および/または他のコンピュータープログラム製品として実装することができる。
【0055】
[0058]図6はコンピューティングシステムの非限定的な実施形態を概略的に示す。一部の実施形態では、本明細書において説明される方法および処理は、1つまたは複数のコンピューティングデバイスのコンピューティングシステムに結びつけられる場合がある。特に、そのような方法および処理は、コンピューター-アプリケーションプログラムまたはサービス、アプリケーション-プログラミングインターフェース(API)、ライブラリ、および/または他のコンピュータープログラム製品として実装することができる。
【0056】
[0059]図6は、上述の方法および処理のうち1つまたは複数を実行に移すことができるコンピューティングシステム600の非限定的な実施形態を概略的に示す。コンピューティングシステム600は、簡略化した形態で示してある。コンピューティングシステム600は、上述し図1および図2で図示したクライアントコンピューティングデバイス102およびサーバーコンピューティングデバイス104を具体化することができる。コンピューティングシステム600は、パーソナルコンピューター、サーバーコンピューター、タブレットコンピューター、家庭娯楽用コンピューター、ネットワークコンピューティングデバイス、ゲーミングデバイス、モバイルコンピューティングデバイス、モバイル通信デバイス(例えば、スマートフォン)、および/または他のコンピューティングデバイス、ならびにスマートリストウォッチおよび頭部搭載型拡張現実デバイスなどのウェアラブルコンピューティングデバイスのうちの1つまたは複数の形態を取ることができる。
【0057】
[0060]コンピューティングシステム600は論理プロセッサ602、揮発性メモリ604、および不揮発性記憶デバイス606を含む。コンピューティングシステム600は、任意選択的にディスプレイサブシステム608、入力サブシステム610、通信サブシステム612、および/または図6には示されていない他のコンポーネントを含むことができる。
【0058】
[0061]論理プロセッサ602は、命令を実行するように構成される1つまたは複数の物理的なデバイスを含む。例えば、論理プロセッサは、1つまたは複数の、アプリケーション、プログラム、ルーチン、ライブラリ、オブジェクト、コンポーネント、データ構造、または他の論理的な構築物の一部である命令を実行するように構成されてもよい。そのような命令は、タスクを実施すること、データタイプを実装すること、1つまたは複数のコンポーネントの状態を変換すること、技術上の効果を実現すること、またはそれ以外では所望の結果に達すること、のために実装され得る。
【0059】
[0062]論理プロセッサは、ソフトウェア命令を実行するように構成される1つまたは複数の物理的なプロセッサ(ハードウェア)を含む場合がある。追加的に、または代替的に、論理プロセッサは、ハードウェア実装のロジックまたはファームウェア命令を実行するように構成された1つまたは複数のハードウェア論理回路またはファームウェアデバイスを含んでもよい。論理プロセッサ602のプロセッサは、シングルコアまたはマルチコアであることができ、そのようなプロセッサで実行される命令は逐次処理、並列処理、および/または分散処理のために構成される場合がある。論理プロセッサの個別のコンポーネントは、任意選択的に、リモートで配置され得るおよび/または協調した処理のために構成され得る2つ以上の別個のデバイスに分散されてもよい。論理プロセッサの態様は、リモートでアクセス可能な、クラウドコンピューティング構成に構成されたネットワーク化コンピューティングデバイスによって、仮想化されて実行される場合がある。そのような場合、これらの仮想化された態様は、様々な異なるマシンの様々な物理的な論理プロセッサで実行されることを理解されたい。
【0060】
[0063]不揮発性記憶デバイス606は、本明細書において説明される方法およびプロセッサを実装するよう、論理プロセッサによって実行可能な命令を保持するように構成された1つまたは複数の物理的なデバイスを含む。そのような方法および処理が実装されると、不揮発性記憶デバイス604の状態は変形され得る-例えば、異なるデータを保持する。
【0061】
[0064]不揮発性記憶デバイス606は、着脱可能および/または内蔵型の物理的なデバイスを含むことができる。不揮発性記憶デバイス604としては、光学メモリ(例えば、CD、DVD、HD-DVD、Blu-Rayディスクなど)、半導体メモリ(例えば、ROM、EPROM、EEPROM、フラッシュメモリなど)、および/もしくは磁気メモリ(例えば、ハードディスクドライブ、フロッピーディスクドライブ、テープドライブ、MRAMなど)、または他の大容量記憶デバイス技術を挙げることができる。不揮発性記憶デバイス606としては、不揮発性、動的、静的、読み出し/書き込み、読み出し専用、シーケンシャルアクセス、場所アドレス指定可能、ファイルアドレス指定可能、および/または内容アドレス指定可能デバイスを挙げることができる。不揮発性記憶デバイス606は、不揮発性記憶デバイス606への電力が切れた時でも命令を保持するように構成されることを諒解されたい。
【0062】
[0065]揮発性メモリ604は、ランダムアクセスメモリを含む物理的なデバイスを含むことができる。揮発性メモリ604は、一般的には論理プロセッサ602によって、ソフトウェア命令の処理中に一時的に情報を記憶するために利用される。揮発性メモリ604は一般的には揮発性メモリ604への電力が切れると命令を記憶し続けないことを諒解されたい。
【0063】
[0066]論理プロセッサ602、揮発性メモリ604、および不揮発性記憶デバイス606の態様は、ともに1つまたは複数のハードウェア-ロジックコンポーネントに統合されてもよい。そのようなハードウェア-ロジックコンポーネントとしては、例えばフィールドプログラマブルゲートアレイ(FPGA)、特定プログラムおよび特定用途集積回路(PASIC/ASIC)、特定プログラムおよび特定用途標準製品(PSSP/ASSP)、システムオンチップ(SOC)、ならびに複合型プログラム可能論理デバイス(CPLD)を挙げることができる。
【0064】
[0067]用語「モジュール」、「プログラム」、および「エンジン」は、一般的には揮発性メモリの一部を使用して特定の機能を実施するためにプロセッサによりソフトウェアに実装されるコンピューティングシステム600の態様を説明するために使用される場合があり、その機能には、機能を実施するためにプロセッサを特別に構成する変革的な処理を伴う。したがって、モジュール、プログラム、またはエンジンは、揮発性メモリ604の一部を使用して、不揮発性記憶デバイス606により保持される命令を実行する論理プロセッサ602により、インスタンス化され得る。様々なモジュール、プログラム、および/またはエンジンが、同一のアプリケーション、サービス、コードブロック、オブジェクト、ライブラリ、ルーチン、API、関数などからインスタンス化され得ることを理解されたい。同様に、同一のモジュール、プログラム、および/またはエンジンが、異なるアプリケーション、サービス、コードブロック、オブジェクト、ルーチン、API、関数などからインスタンス化される場合がある。用語「モジュール」、「プログラム」、および「エンジン」は、個別の実行可能ファイル、データファイル、ライブラリ、ドライバ、スクリプト、データベースレコードなど、またはその群を包含することができる。
【0065】
[0068]含まれる場合は、ディスプレイサブシステム608が、不揮発性記憶デバイス606に保持されるデータの視覚表現を提示するために使用される場合がある。視覚表現はグラフィカルユーザーインターフェース(GUI)の形態を取ることができる。本明細書において説明される方法および処理は不揮発性記憶デバイスにより保持されるデータを変更することができるため、不揮発性記憶デバイスの状態を変形させ、ディスプレイサブシステム608の状態は、同様にその根底にあるデータ内の変化を視覚的に表現するように変形され得る。ディスプレイサブシステム608は、実質上あらゆるタイプの技術を利用する1つまたは複数のディスプレイデバイスを含むことができる。そのようなディスプレイデバイスは、論理プロセッサ602、揮発性メモリ604、および/または不揮発性記憶デバイス606と共有筐体内で組み合わせることができるか、またはそのようなディスプレイデバイスは周辺ディスプレイデバイスであってもよい。
【0066】
[0069]含まれる場合は、入力サブシステム610は、キーボード、マウス、タッチスクリーン、またはゲームコントローラーなどの、1つまたは複数のユーザー入力デバイスを備える、またはインターフェースすることができる。一部の実施形態では、入力サブシステムは選択された自然ユーザー入力(NUI)コンポーネント群を備える、またはインターフェースすることができる。そのようなコンポーネント群は、一体化されているか、または周辺機器であり得、入力アクションの伝達および/または処理は、オンボードまたはオフボードで取り扱われ得る。NUIコンポーネント群の例としては、発話および/または音声認識用のマイクロフォン;マシンビジョンおよび/またはジェスチャ認識用の、赤外、色、立体視、および/または深度カメラ;動き検出および/またはインテント認識用の、ヘッドトラッカー、アイトラッカー、加速度計および/またはジャイロスコープ;ならびに脳活動度調査用の電場感知コンポーネント群;および/またはあらゆる他の適切なセンサを挙げることができる。
【0067】
[0070]含まれる場合、通信サブシステム612は本明細書において説明される様々なコンピューティングデバイスを、互いに、および他のデバイスと、通信可能に連結するように構成することができる。通信サブシステム612は、1つまたは複数の異なる通信プロトコルと互換性のある有線および/または無線通信デバイスを含むことができる。非限定的な例として、通信サブシステムは、Wi-Fi接続を介するHDMI(登録商標)など、無線電話ネットワークまたは有線もしくは無線のローカルもしくはワイドエリアネットワークを介する通信用に構成され得る。一部の実施形態では、通信サブシステムはコンピューティングシステム600が、メッセージをインターネットなどのネットワークを介して他のデバイスへ/から送信および/または受信できるようにすることができる。
【0068】
[0071]以下のパラグラフでは、主題の出願の特許請求項についてのさらなるサポートを与える。一態様は、それぞれの複数のクライアントコンピューティングデバイスから複数の入力ストリームを受信するように構成されたプロセッサを含むサーバーコンピューティングデバイスを提供する。各入力ストリームは、マルチプレーヤーオンラインソフトウェアプログラムにおいて、それぞれのキャラクターのアクションを制御する複数の入力を含む。プロセッサは、入力ストリームのそれぞれのレイテンシを決定し、複数の入力ストリームのうち高レイテンシ入力ストリームおよび低レイテンシ入力ストリームを特定し、高レイテンシ入力ストリームと低レイテンシ入力ストリームとの間のレイテンシの差を狭めるために、低レイテンシ入力ストリームに高レイテンシを導入するようにさらに構成される。この態様では、追加的に、または代替的に、複数の入力ストリームの最高レイテンシ入力ストリーム以外のそれぞれ他の入力ストリームに高レイテンシが導入される場合がある。この態様では、追加的に、または代替的に、プロセッサは、複数の入力ストリームのそれぞれについて長期レイテンシを予測し、1つまたは複数の低レイテンシ入力ストリーム中の導入された高レイテンシを、複数の入力ストリームの最高予測長期レイテンシまで高めるようにさらに構成され得る。この態様では、追加的に、または代替的に、プロセッサは、複数の入力ストリームのそれぞれについての入力をバッファリングすることにより、高レイテンシを導入するように構成され得る。この態様では、追加的に、または代替的に、プロセッサは、複数のクライアントコンピューティングデバイスのそれぞれについてマルチプレーヤーオンラインソフトウェアプログラムのソフトウェアプログラム状態について出力フレームを、制御可能フレームレートでレンダリングし、複数の出力フレームストリーム中のレンダリングされた出力フレームをそれぞれの複数のクライアントコンピューティングデバイスに送信するように構成され得る。この態様では、追加的に、または代替的に、プロセッサは、複数の出力フレームストリームのそれぞれについての出力フレームをバッファリングすることにより、高レイテンシを導入するようにさらに構成され得る。この態様では、追加的に、または代替的に、プロセッサは、制御可能フレームレートをターゲットフレームレートよりも小さくなるよう低下させることによって、高レイテンシを導入するようにさらに構成され得る。この態様では、追加的に、または代替的に、プロセッサは、各クライアントコンピューティングデバイスに、出力フレームストリーム中の1つまたは複数の出力フレームに基づいて中間的なフレームを補間させてターゲットフレームレートを達成するように構成され得る。この態様では、追加的に、または代替的に、プロセッサは、ターゲット入力頻度で入力ストリームのそれぞれから入力が受信されたかどうかを検出することに基づいて入力ストリームのそれぞれのレイテンシを決定するように構成され得る。この態様では、追加的に、または代替的に、プロセッサは、ターゲット入力頻度に基づいて高レイテンシ入力ストリーム中の逃した入力を検出し、予測された入力を高レイテンシ入力ストリームに挿入して逃した入力を埋めることができるように構成され得る。この態様では、追加的に、または代替的に、予測された入力は、その入力ストリーム中の入力の履歴を含む訓練済み入力データに基づいて決定される場合がある。
【0069】
[0072]別の態様は、プロセッサを含むサーバーコンピューティングデバイスにおいて、それぞれの複数のクライアントコンピューティングデバイスから複数の入力ストリームを受信することを含む方法を提供する。各入力ストリームは、マルチプレーヤーオンラインソフトウェアプログラムにおいて、それぞれのキャラクターのアクションを制御する複数の入力を含む。方法は、入力ストリームのそれぞれのレイテンシを決定することと、複数の入力ストリームのうち高レイテンシ入力ストリームおよび低レイテンシ入力ストリームを特定することと、高レイテンシ入力ストリームと低レイテンシ入力ストリームとの間のレイテンシの差を狭めるために、低レイテンシ入力ストリームに高レイテンシを導入することとをさらに含む。この態様では、追加的に、または代替的に、複数の入力ストリームの最高レイテンシ入力ストリーム以外のそれぞれ他の入力ストリームに高レイテンシが導入される場合がある。この態様では、追加的に、または代替的に、方法は、複数の入力ストリームのそれぞれについて長期レイテンシを予測することと、1つまたは複数の低レイテンシ入力ストリーム中の導入された高レイテンシを、複数の入力ストリームの最高予測長期レイテンシまで高めることとをさらに含むことができる。この態様では、追加的に、または代替的には、高レイテンシを導入するは、複数の入力ストリームのそれぞれについての入力をバッファリングすることを含むことができる。この態様では、追加的に、または代替的に、方法は、複数のクライアントコンピューティングデバイスのそれぞれについてマルチプレーヤーオンラインソフトウェアプログラムのソフトウェアプログラム状態について出力フレームを、制御可能フレームレートでレンダリングすることと、複数の出力フレームストリーム中のレンダリングされた出力フレームをそれぞれの複数のクライアントコンピューティングデバイスに送信することとをさらに含むことができる。この態様では、追加的に、または代替的に、高レイテンシを導入することは、複数の出力フレームのそれぞれについて出力フレームをバッファリングすることを含むことができる。この態様では、追加的に、または代替的に、高レイテンシを導入することは、制御可能フレームレートをターゲットフレームレートよりも小さくなるよう低下させることを含むことができる。この態様では、追加的に、または代替的に、方法は、各クライアントコンピューティングデバイスに、出力フレームストリーム中の1つまたは複数の出力フレームに基づいて中間的なフレームを補間させてターゲットフレームレートを達成することをさらに含むことができる。
【0070】
[0073]別の態様は、それぞれの複数のクライアントコンピューティングデバイスから複数の入力ストリームを受信するように構成されたプロセッサを含むサーバーコンピューティングデバイスを提供する。各入力ストリームは、マルチプレーヤーオンラインソフトウェアプログラムにおいて、それぞれのキャラクターのアクションを制御する複数の入力を含む。プロセッサは、最高予測長期レイテンシを含む入力ストリームのそれぞれのレイテンシを決定し、複数の入力ストリームのうち高レイテンシ入力ストリームおよび低レイテンシ入力ストリームを特定し、最高予測長期レイテンシまで低レイテンシ入力ストリームに高レイテンシを導入し、ターゲット入力頻度に基づいて高レイテンシ入力ストリーム中で1つまたは複数の逃した入力を検出するようにさらに構成される。1つまたは複数の逃した入力が入力閾値数よりも多い場合、プロセッサはマルチプレーヤーオンラインソフトウェアプログラムの実行を停止するように構成される。1つまたは複数の逃した入力が入力閾値数よりも少ない場合、プロセッサは予測された入力を高レイテンシ入力ストリームに挿入して逃した入力を埋めるように構成される。
【0071】
[0074]本明細書において説明される構成および/または手法は、性質として例示的であり、これらの具体的な実施形態または例は、数々の変形例が可能であるため限定的な意味で考えられるべきではない。本明細書において説明される具体的なルーチンまたは方法は、あらゆる数の処理方策のうちの1つまたは複数を表現することができる。そのため、図示および/または説明される様々な行為は図示および/または説明される順で、他の順で、並行して、実施される場合があり、あるいは省略することができる。同様に、上述の処理の順は変更される場合がある。
【0072】
[0075]本開示の主題は、すべての新奇かつ明白ではない、様々な処理、システム、および構成の組合せおよびサブ組合せ、ならびに本明細書において開示される他の特徴、機能、行為、および/または性質、ならびにそのあらゆるすべての等価物を含む。
図1
図2
図3
図4
図5
図6