(57)【要約】  ターゲット入力ストリームにレイテンシを導入するためのサーバーコンピューティングデバイスが提供される。サーバーコンピューティングデバイスは、それぞれの複数のクライアントコンピューティングデバイスから複数の入力ストリームを受信するように構成されたプロセッサを含む。各入力ストリームは、マルチプレーヤーオンラインソフトウェアプログラムにおいて、それぞれのキャラクターのアクションを制御する複数の入力を含む。プロセッサは、入力ストリームのそれぞれのレイテンシを決定し、複数の入力ストリームのうち高レイテンシ入力ストリームおよび低レイテンシ入力ストリームを特定し、高レイテンシ入力ストリームと低レイテンシ入力ストリームとの間のレイテンシの差を狭めるために、低レイテンシ入力ストリームに高レイテンシを導入するようにさらに構成される。
2022502165.tif 000002
【特許請求の範囲】
【請求項１】
それぞれの複数のクライアントコンピューティングデバイスから複数の入力ストリームを受信することであって、各入力ストリームはマルチプレーヤーオンラインソフトウェアプログラム内のそれぞれのキャラクターのアクションを制御する複数の入力を含む、受信することと、
前記入力ストリームのそれぞれのレイテンシ(latency)を決定することと、
前記複数の入力ストリームの中で高(higher)レイテンシ入力ストリームおよび低(lower)レイテンシ入力ストリームを特定することと、
前記高レイテンシ入力ストリームと前記低レイテンシ入力ストリームとの間のレイテンシの差を狭めるために、前記低レイテンシ入力ストリーム内に高レイテンシを導入することと、
を行うように構成されたプロセッサを備える、サーバーコンピューティングデバイス。
【請求項２】
前記複数の入力ストリームの最高レイテンシ入力ストリーム以外のそれぞれ他の入力ストリームに前記高レイテンシが導入される、請求項１に記載のサーバーコンピューティングデバイス。
【請求項３】
前記プロセッサが、
前記複数の入力ストリームのそれぞれについて長期(long-term)レイテンシを予測することと、
１つまたは複数の低レイテンシ入力ストリーム中の導入された前記高レイテンシを、前記複数の入力ストリームの最高予測長期レイテンシまで高めることと、
を行うようにさらに構成される、請求項１に記載のサーバーコンピューティングデバイス。
【請求項４】
前記プロセッサが、前記複数の入力ストリームのそれぞれについての入力をバッファリングすることにより、前記高レイテンシを導入するように構成される、請求項１に記載のサーバーコンピューティングデバイス。
【請求項５】
前記プロセッサが、
前記複数のクライアントコンピューティングデバイスのそれぞれについて前記マルチプレーヤーオンラインソフトウェアプログラムのソフトウェアプログラム状態について出力フレームを、制御可能フレームレートでレンダリングすることと、
複数の出力フレームストリーム中のレンダリングされた前記出力フレームをそれぞれの前記複数のクライアントコンピューティングデバイスに送信することと、
を行うように構成される、請求項１に記載のサーバーコンピューティングデバイス。
【請求項６】
前記プロセッサが、前記複数の出力フレームストリームのそれぞれについての出力フレームをバッファリングすることにより、前記高レイテンシを導入するようにさらに構成される、請求項５に記載のサーバーコンピューティングデバイス。
【請求項７】
前記プロセッサが、前記制御可能フレームレートをターゲットフレームレートよりも小さくなるよう低下させることによって、前記高レイテンシを導入するようにさらに構成される、請求項５に記載のサーバーコンピューティングデバイス。
【請求項８】
前記プロセッサが、各クライアントコンピューティングデバイスに、前記出力フレームストリーム中の１つまたは複数の出力フレームに基づいて中間的なフレームを補間させて前記ターゲットフレームレートを達成するように構成される、請求項７に記載のサーバーコンピューティングデバイス。
【請求項９】
前記プロセッサが、ターゲット入力頻度で前記入力ストリームのそれぞれから入力が受信されたかどうかを検出することに基づいて前記入力ストリームのそれぞれの前記レイテンシを決定するように構成される、請求項１に記載のサーバーコンピューティングデバイス。
【請求項１０】
前記プロセッサが、
前記ターゲット入力頻度に基づいて前記高レイテンシ入力ストリーム中の逃した(missed)入力を検出することと、
予測された入力を前記高レイテンシ入力ストリームに挿入して前記逃した入力を埋めることと、
を行うように構成される、請求項９に記載のサーバーコンピューティングデバイス。
【請求項１１】
前記予測された入力が、前記入力ストリーム中の入力の履歴を含む訓練済み入力データに基づいて決定される、請求項１０に記載のサーバーコンピューティングデバイス。
【請求項１２】
プロセッサを含むサーバーコンピューティングデバイスにおいて、
それぞれの複数のクライアントコンピューティングデバイスから複数の入力ストリームを受信するステップであって、各入力ストリームはマルチプレーヤーオンラインソフトウェアプログラム内のそれぞれのキャラクターのアクションを制御する複数の入力を含む、受信するステップと、
前記入力ストリームのそれぞれのレイテンシを決定するステップと、
前記複数の入力ストリームの中で高レイテンシ入力ストリームおよび低レイテンシ入力ストリームを特定するステップと、
前記高レイテンシ入力ストリームと前記低レイテンシ入力ストリームとの間のレイテンシの差を狭めるために、前記低レイテンシ入力ストリーム内に高レイテンシを導入するステップと
を含む、方法。
【請求項１３】
前記高レイテンシを導入するステップが、前記複数の入力ストリームのそれぞれについて入力をバッファリングするステップを含む、請求項１２に記載の方法。
【請求項１４】
前記複数のクライアントコンピューティングデバイスのそれぞれについて前記マルチプレーヤーオンラインソフトウェアプログラムのソフトウェアプログラム状態について出力フレームを、制御可能フレームレートでレンダリングするステップと、
複数の出力フレームストリーム中のレンダリングされた前記出力フレームをそれぞれの前記複数のクライアントコンピューティングデバイスに送信するステップと、
をさらに含む、請求項１２に記載の方法。
【請求項１５】
前記高レイテンシを導入するステップが、前記複数の出力フレームストリームのそれぞれについて出力フレームをバッファリングするステップを含む、請求項１４に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本願発明の一実施例は、例えば、マルチプレーヤープログラムにおける高入力レイテンシの導入に関する。
【背景技術】
【０００２】
[0001]典型的なマルチプレーヤーオンラインソフトウェアプログラムは、各プレーヤーのクライアントコンピューティングデバイスで実行されているローカルのソフトウェアプログラム状態を含む。各ローカルのソフトウェアプログラム状態は、ローカルのユーザー入力に基づいて更新され、マルチプレーヤーセッションについての状態の「グランドトルース（ｇｒｏｕｎｄ  ｔｒｕｔｈ）」のアービターとして機能するサーバーソフトウェアプログラム状態を維持するサーバーシステムにも送信される。しかしながら、ネットワークレイテンシにより、各プレーヤーのローカルのソフトウェアプログラム状態は、サーバーソフトウェアプログラム状態および他のプレーヤーのローカルのソフトウェアプログラム状態と、若干異なってくる場合がある。ローカルのソフトウェアプログラム状態をサーバーソフトウェアプログラム状態に同期させるために、ラグ補償技法が利用される場合がある。しかしながら、これらの技法は、プレーヤーのクライアントコンピューティングデバイスが、一般的にソフトウェアプログラムを実行しないシンクライアントコンピューティングデバイスである場合には、適用できないことがある。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
本願発明の一実施例は、例えば、マルチプレーヤープログラムにおける高入力レイテンシの導入に関する。
【課題を解決するための手段】
【０００４】
[0002]上述の問題に対処するために、ターゲット入力ストリームにレイテンシを導入するためのサーバーコンピューティングデバイスが提供される。サーバーコンピューティングデバイスは、それぞれの複数のクライアントコンピューティングデバイスから複数の入力ストリームを受信するように構成されたプロセッサを含むことができる。各入力ストリームは、マルチプレーヤーオンラインソフトウェアプログラムにおいて、それぞれのキャラクターのアクションを制御する複数の入力を含むことができる。プロセッサは、入力ストリームのそれぞれのレイテンシを決定し、複数の入力ストリームのうち高レイテンシ入力ストリームおよび低レイテンシ入力ストリームを特定し、高レイテンシ入力ストリームと低レイテンシ入力ストリームとの間のレイテンシの差を狭めるために、低レイテンシ入力ストリームに高レイテンシを導入するようにさらに構成され得る。
【０００５】
[0003]この概要は、詳細な説明において以下でさらに説明される概念の選択を簡単な形式で導入するために与えられる。この概要は、特許請求される主題の主要な特徴または本質的な特徴を特定することを意図されておらず、また特許請求される主題の範囲を限定するために用いられることも意図されていない。さらには、特許請求される主題は、本開示のいかなる部分で述べられるあらゆるまたはすべての不利な点を解決する実装形態に限定されない。
【図面の簡単な説明】
【０００６】
【図１】[0004]本開示の一実施形態による、クライアントコンピューティングデバイスおよびリモート実行デバイスを実装するサーバーコンピューティングデバイスを含む、例示的なコンピューティングシステムの概略図である。
【図２】[0005]図１のクライアントコンピューティングデバイスおよびサーバーコンピューティングデバイスの概略図である。
【図３】[0006]図１のサーバーコンピューティングデバイスを使用して入力ストリームに高レイテンシを導入する例の図である。
【図４】[0007]図１のサーバーコンピューティングデバイスを使用してユーザー入力を予測する例の図である。
【図５】[0008]図１のコンピューティングシステムにより実装される低レイテンシ入力ストリームに高レイテンシを導入するコンピューター実装方法の図である。
【図６】[0009]本開示の一実施形態による、例示のコンピューティングシステムの概略表現である。
【発明を実施するための形態】
【０００７】
[0010]典型的なマルチプレーヤーオンラインソフトウェアプログラムは、各ユーザーのクライアントコンピューティングデバイスで実行されているローカルのソフトウェアプログラム状態を含む。各ローカルのソフトウェアプログラム状態は、ローカルのユーザー入力に基づいて直ちに更新され得る。この入力は、マルチプレーヤーオンラインソフトウェアプログラムについての「グランドトルース」のアービターとして機能するサーバーソフトウェアプログラム状態を実行および管理するサーバーシステムにさらに送信され得る。したがって、各ユーザーのローカルのソフトウェアプログラム状態は、マルチプレーヤーオンラインソフトウェアプログラム内のそれぞれ他のユーザーにより入力されたユーザー入力を反映するために、サーバーソフトウェアプログラム状態に同期して更新され得る。ネットワークレイテンシに起因して、各プレーヤーのローカルのソフトウェアプログラム状態は、サーバーソフトウェアプログラム状態と異なってくる場合がある。例えば、第１のユーザーの入力は、そのユーザーのクライアントコンピューティングデバイスによって実行中のローカルのソフトウェアプログラム状態に直ちに反映され得る一方で、その同一の入力は、入力がサーバーシステムに送信され、マルチプレーヤーオンラインソフトウェアプログラムのサーバーソフトウェアプログラム状態に影響を与えるようサーバーシステムによって処理され、それぞれ他のユーザーのクライアントコンピューティングデバイスに通信されるまでは、他のユーザーのローカルのソフトウェアプログラム状態に反映することができない。典型的には、マルチプレーヤーオンラインソフトウェアプログラムは、クライアントコンピューティングデバイスに対する様々なレイテンシ補償技法を利用しており、高ネットワークレイテンシおよび／または不安定なネットワークレイテンシの潜在的なユーザーエクスペリエンスの低下の影響を最小にすることを助けている。
【０００８】
[0011]しかしながら、各プレーヤーのクライアントコンピューティングデバイスが、マルチプレーヤーオンラインソフトウェアプログラムのローカルのソフトウェアプログラム状態を、ローカルで実行しないおよびレンダリングしないシンコンピューティングデバイスである場合、これらの同一のレイテンシ補償技法はもはや適用可能ではない場合がある。図１は、それぞれのネットワーク１０６上でサーバーコンピューティングデバイス１０４と通信するように構成された複数のクライアントコンピューティングデバイス１０２を含む例示のコンピューティングシステム１００を図示している。サーバーコンピューティングデバイス１０４は、協調して動作する１つまたは複数の個別のサーバーコンピューティングデバイスを備えることができる。一例では、サーバーコンピューティングデバイス１０４は、本明細書において説明されるサーバーコンピューティングデバイス１０４の機能および処理を実装するために協調して動作するクラウドコンピューティング構成で動作する複数のサーバーコンピューティングデバイスを含むことができる。
【０００９】
[0012]一例では、クライアントコンピューティングデバイス１０２のそれぞれは、マルチプレーヤーオンラインソフトウェアプログラムの、それら自身のローカルのソフトウェアプログラム状態では実行しないシンコンピューティングデバイスの形態を取ることができる。例えば、クライアントコンピューティングデバイス１０２としては、モバイルのコンピューティングデバイス、ゲーム用ストリーミングコンピューティングデバイス、タブレットコンピューティングデバイス、ストリーミングコンソール、およびオンラインマルチプレーヤーソフトウェアプログラムのローカルインスタンスを実行するための十分な処理能力を含むことができない他のタイプのコンピューティングデバイスを挙げることができる。図１に図示されるように、各クライアントコンピューティングデバイス１０２は、ユーザー入力をサーバーコンピューティングデバイス１０４に送信して、サーバーコンピューティングデバイス１０４によって実装されるリモート実行デバイス１１０によって生成された出力フレームを表示するように構成されたストリーミングクライアント１０８を実行するように構成される。代替的に、クライアントコンピューティングデバイス１０２は、処理能力およびマルチプレーヤーオンラインソフトウェアプログラムのフルバージョンを実行することができるメモリを備えたより高性能のコンピューターであってもよいが、それでも代わりにストリーミングクライアント１０８の形態でシンクライアントを実行している場合もある。
【００１０】
[0013]一例では、各クライアントコンピューティングデバイス１０２はリモート実行デバイス１１０によって生成された出力フレームを表示するように構成され得るため、またそれ自身のローカルのフレームをレンダリングしないため、各プレーヤーの入力は、その入力がサーバーコンピューティングデバイス１０４に送信され、サーバーコンピューティングデバイス１０４のリモート実行デバイス１１０が各ユーザーの入力について出力フレームをレンダリングしてしまうまで、そのユーザーに表示されるフレーム内に必ずしも直ちに反映されない場合がある。さらには、複数のクライアントコンピューティングデバイス１０２を様々な場所に配置することができるため、サーバーコンピューティングデバイス１０４と通信するためのクライアントコンピューティングデバイス１０２ごとのネットワークのレイテンシは、クライアントコンピューティングデバイス１０２に異なる可能性がある。すなわち、第１のクライアントコンピューティングデバイスは、第１のネットワーク１０６Ａ上でサーバーコンピューティングデバイス１０４と通信している可能性があり、第２のクライアントコンピューティングデバイスは、第２のネットワーク１０６Ｂ上でサーバーコンピューティングデバイス１０４と通信している可能性があり、第３のクライアントコンピューティングデバイス１０２は、第３のネットワーク１０６Ｃ上でサーバーコンピューティングデバイス１０４と通信している可能性があり、第１、第２、および第３のネットワークのネットワークレイテンシはそれぞれ異なる場合がある。例えば、第３のネットワーク１０６Ｃが第１のネットワーク１０６Ａよりも高いネットワークレイテンシを有する場合、第１のクライアントコンピューティングデバイスからのユーザー入力は、第３のクライアントコンピューティングデバイスからのユーザー入力より速くサーバーコンピューティングデバイス１０４に到達する可能性があるため、潜在的に第３のクライアントコンピューティングデバイスのユーザーに対して第１のクライアントコンピューティングデバイスのユーザーに不当な優位性を与えている。
【００１１】
[0014]上で議論した問題に対処するために、図２はオンラインマルチプレーヤーソフトウェアプログラムに参加中のクライアントコンピューティングデバイスからのターゲット入力ストリームにレイテンシを導入するように構成された例示のサーバーコンピューティングデバイス１０４を図示している。ターゲットとなる入力ストリームにレイテンシを選択的に導入することにより、参加中のユーザーの全員の間の公平性を維持するために、潜在的にサーバーコンピューティングデバイス１０４が、ネットワークレイテンシが異なることの不当な影響を軽減できるようにし、同じくサーバーコンピューティングデバイス１０４がマルチプレーヤーオンラインソフトウェアプログラムを、クライアントコンピューティングデバイスにストリーミングするために必要な帯域幅を低減する機会を提供する。
【００１２】
[0015]図２に図示されるように、コンピューティングシステム１００は、それぞれのネットワーク１０６上でサーバーコンピューティングデバイス１０４と通信するように構成された複数のクライアントコンピューティングデバイス１０２を含むことができる。各クライアントコンピューティングデバイス１０２は、不揮発性メモリ１１４、揮発性メモリ１１６，入力デバイス一式１１８、出力デバイス一式１２０、およびプロセッサ１２２などのコンピューターコンポーネントを含むことができる。入力デバイス一式１１８は、例えばキーボードおよびマウス、コンソールコントローラー、ジョイスティックなど、あらゆる適切なタイプの入力デバイスを含むことができる。出力デバイス一式１２０は、ディスプレイ１２０Ａ、スピーカーなど、あらゆる適切なタイプの出力デバイスを含むことができる。
【００１３】
[0016]各クライアントコンピューティングデバイス１０２のプロセッサ１２２は、クライアント側のストリーミングプラットフォーム１２４を、例えばオンラインマルチプレーヤーゲームまたは別のタイプのマルチユーザーアプリケーションの形態を取り得るマルチプレーヤーオンラインソフトウェアプログラム用に実行するように構成される。各クライアントコンピューティングデバイス１０２の各クライアント側ストリーミングプラットフォーム１２４は、それぞれのネットワーク１０６上でサーバーコンピューティングデバイス１０４と通信するように構成される。
【００１４】
[0017]サーバーコンピューティングデバイス１０４は、様々な場所にある１つまたは複数のサーバーコンピューティングデバイスを含むことができる。例えば、第１のクライアントコンピューティングデバイスと通信する第１のサーバーコンピューティングデバイスは、アメリカ合衆国の西海岸に配置されていてもよく、一方で第２のクライアントコンピューティングデバイスと通信する第２のサーバーコンピューティングデバイスはアメリカ合衆国の東海岸に配置されていてもよい。この例では、第１および第２のサーバーコンピューティングデバイス１０４は、本明細書において説明されるサーバーコンピューティングデバイス１０４の処理および方法を実装するよう協調して機能するように構成することができる。図２に図示されるように、１つまたは複数のサーバーコンピューティングデバイス１０４のそれぞれは、不揮発性メモリ１２６、揮発性メモリ１２８およびプロセッサ１３０などのコンピューターコンポーネントを含むことができる。サーバーコンピューティングデバイス１０４のプロセッサ１３０は、サーバー側のストリーミングプラットフォーム１３２を実行するように構成されてもよい。クライアント側のストリーミングプラットフォーム１２４およびサーバー側のストリーミングプラットフォーム１３２は、マルチプレーヤーオンラインソフトウェアプログラム１３４を実行して各クライアントコンピューティングデバイス１０２のそれぞれのユーザーに提示するために、互いにデータを送受信するように構成される。
【００１５】
[0018]マルチプレーヤーオンラインソフトウェアプログラム１３４の実行中、ユーザーはユーザーのそれぞれのクライアントコンピューティングデバイス１０２の入力デバイス一式１１８により入力１３６を入力することができる。一例では、マルチプレーヤーオンラインソフトウェアプログラム１３４は、オンラインのマルチプレーヤービデオゲームであり、ユーザーによって入力された複数の入力１３６は、マルチプレーヤーオンラインソフトウェアプログラム１３４内の、例えば移動、選択、アクションの実行など、キャラクターのアクションを制御する入力である。図２に図示されるように、クライアント側のストリーミングプラットフォーム１２４のストリーミングクライアント１０８は、入力ストリーム１３８中の複数の入力１３６を、ネットワーク１０６上でサーバーコンピューティングデバイス１０４に送信することができる。マルチプレーヤーオンラインソフトウェアプログラム１３４に参加中の各クライアントコンピューティングデバイス１０２は、マルチプレーヤーオンラインソフトウェアプログラム１３４内のそれぞれのキャラクターのアクションを制御する入力ストリーム１３８をサーバーコンピューティングデバイス１０４に送信するように構成することができる。
【００１６】
[0019]サーバーコンピューティングデバイス１０４のプロセッサ１３０によって実行されるサーバー側のストリーミングプラットフォーム１３２の入力ハンドラ１４０は、それぞれの複数のクライアントコンピューティングデバイス１０２から複数の入力ストリーム１３８を受信するように構成される。一例では、複数の入力ストリーム１３８中の各入力１３６は、各クライアントコンピューティングデバイス１０２によって、例えばマルチプレーヤーオンラインソフトウェアプログラム１３４の、１／（ターゲットフレームレート）などのターゲット入力頻度１４２で、サーバーコンピューティングデバイス１０４に送信されるように構成される。各入力１３６は、例えばどのボタンが現在押下／アクティブ化されているか、ジョイスティックがどの方向に動かされているか、などの入力デバイス一式１１８の状態に関するデータを含むことができる。一部の例では、ユーザーによって入力デバイス一式１１８に何も入力されていない場合、入力ストリーム１３８中の入力１３６は、ターゲット入力頻度１４２に基づいてその時点でユーザーによって入力がなかったことを示す「ハートビート」入力であり得る。したがって、この例では、サーバー側のストリーミングプラットフォーム１３２の入力ハンドラ１４０は、入力１３６がターゲット入力頻度１４２で各クライアントコンピューティングデバイス１０２から受信されているかどうかを追跡すること、および各クライアントコンピューティングデバイス１０２から受信した入力中のあらゆるギャップを検出するために、構成することができる。
【００１７】
[0020]複数の入力ストリーム１３８の入力１３６は、入力ハンドラ１４０の入力エミュレーター１４４および入力予測器１４６の両方に送信される。入力エミュレーター１４４は、マルチプレーヤーオンラインソフトウェアプログラム１３４を実行中のサーバーコンピューティングデバイス１０４のリモート実行デバイス１１０によって期待される入力タイプをエミュレートするように構成される。具体的な例としては、マルチプレーヤーオンラインソフトウェアプログラム１３４はコンソールゲームであり得、リモート実行デバイス１１０はリモートコンソールデバイスであり得る。この例では、クライアントコンピューティングデバイス１０２からの入力１３６は入力エミュレーター１４４によって処理することができ、入力エミュレーター１４４は、コンソールコントローラー入力など、リモート実行デバイス１１０およびマルチプレーヤーオンラインソフトウェアプログラム１３４のタイプに適切なエミュレートされた入力１４８を生成するように構成することができる。クライアントコンピューティングデバイス１０２は、タブレットコンピューティングデバイス、モバイルコンピューティングデバイスなど様々な形態を取ることができ、ひいては様々な入力の方法、タイプおよびモダリティを有することができるため、入力エミュレーター１４４はこれらのタイプの入力を、リモート実行デバイス１１０に適切な、対応する入力にマッピングするように構成される。例えば、リモート実行デバイス１１０がリモートのコンソールデバイスであり、クライアントコンピューティングデバイスがキーボードとマウスを使用するデスクトップのコンピューティングデバイスである場合、入力エミュレーター１４４は、エミュレートされた入力１４８を生成するためにキーボードおよびマウスの入力を対応するコンソールコントローラー入力にマッピングするように構成され得る。
【００１８】
[0021]入力ハンドラ１４０の入力エミュレーター１４４は、これらの入力エミュレーション処理を複数のクライアントコンピューティングデバイス１０２から受信した入力ストリームのそれぞれに対して実施するように構成される。これらのエミュレートされた入力は、それぞれのクライアントコンピューティングデバイスごとにエミュレートされた入力ストリーム中でリモート実行デバイス１１０に送信することができる。リモート実行デバイス１１０は、マルチプレーヤーオンラインソフトウェアプログラム１３４のソフトウェアプログラム状態を管理し、複数のクライアントコンピューティングデバイス１０２のそれぞれについて入力ハンドラ１４０から受信したエミュレートされた入力１４８のストリームに基づいて、そのソフトウェアプログラム状態を更新するように構成される。
【００１９】
[0022]エミュレートされた入力１４８のストリームに基づいて、リモート実行デバイス１１０は、マルチプレーヤーオンラインソフトウェアプログラム１３４の一場面において、クライアントコンピューティングデバイスごとにそれぞれのキャラクターの現在の視点を決定することができ、これらの現在の視点の見え方を、クライアントコンピューティングデバイス１０２ごとに出力フレーム１５０として、レンダリングすることができる。一例では、リモート実行デバイス１１０は、複数のクライアントコンピューティングデバイス１２０のそれぞれについてマルチプレーヤーオンラインソフトウェアプログラム１３４のソフトウェアプログラム状態についての出力フレーム１５０を、制御可能フレームレート１５１でレンダリングするように構成され得る。例えば、制御可能フレームレート１５１は、１秒あたり２０フレーム、１秒あたり６０フレーム、または別の適切なターゲットフレームレートに設定することができる。出力フレーム１５０はサーバー側のストリーミングプラットフォーム１３２の、グローバルレイテンシマネージャーおよびエンコーダー１５２によってエンコードされ得る。グローバルレイテンシマネージャーおよびエンコーダー１５２は、複数の出力フレームストリーム１５４中のレンダリングされた出力フレーム１５０をそれぞれの複数のクライアントコンピューティングデバイス１０２に送信するようにさらに構成することができる。
【００２０】
[0023]図２に図示されるように、各クライアントコンピューティングデバイス１０２はそれらのそれぞれの出力フレームストリーム１５４をサーバーコンピューティングデバイス１０４から受信するように構成することができる。各クライアントコンピューティングデバイス１０２のストリーミングクライアント１０８は、出力フレームストリーム１５４を処理して、出力フレーム１５０を表示フレーム１５６として出力デバイス一式１２０のディスプレイ１２０Ａに提示することができる。例えば、ストリーミングクライアント１０８は、ユーザーによって選択されたローカルの解像度、ディスプレイ１２０Ａのタイプ、ユーザーによって選択された明るさ／暗さの設定などに基づいて、出力フレーム１５０を処理することができる。
【００２１】
[0024]サーバーコンピューティングデバイス１０４は、他のタイプの出力を、例えば音声出力などの出力フレームストリーム１５４とともにさらに送信することができることを諒解されたい。ストリーミングクライアント１０８は、表示フレーム１５６とともに、出力デバイス一式１２０を介して、提示用にこれらの他のタイプの出力を処理するように構成することができる。上述の様式で、各クライアントコンピューティングデバイス１０２はユーザーから受信した入力を入力ストリーム中でそれぞれのネットワーク１０６を介してサーバーコンピューティングデバイス１０４に送信し、出力フレームストリーム中の対応する出力フレーム１５０をサーバーコンピューティングデバイス１０４から受信し、これらの出力フレームを表示フレーム１５６としてディスプレイ１２０Ａに表示することができる。
【００２２】
[0025]しかしながら、先に議論したように、サーバーコンピューティングデバイス１０４と通信するために各クライアントコンピューティングデバイス１０２によって利用されるそれぞれのネットワーク１０６は、様々なネットワークレイテンシおよび／またはネットワーク安定性を有する場合がある。図２に図示されるように、各クライアントコンピューティングデバイス１０２のプロセッサ１２２によって実行されるクライアント側のストリーミングプラットフォーム１２４は、そのそれぞれのネットワーク１０６のネットワークレイテンシおよびジッターをプロファイリングするように構成されたネットワーク予測器１５８をさらに含む。例えば、ネットワーク予測器１５８は、パケットをサーバーコンピューティングデバイス１０４に送信し、それぞれのパケットのラウンドタイムトリップ（パケットを送信してから、そのパケットについてサーバーからＴＣＰ肯定応答を受信するまでの時間）を測定するように構成することができる。ネットワーク予測器１５８は、ラウンドタイムトリップの時間の変化を分析して、ネットワークレイテンシおよび安定性における短期および長期の傾向を決定することができる。このやり方で、ネットワーク予測器１５８は、長期および短期についてのネットワークレイテンシの予測を含むネットワークレイテンシデータ１６０を生成することができる。ネットワーク予測器１５８は、ネットワークレイテンシデータ１６０を、サーバーコンピューティングデバイス１０４によって実装されるサーバー側のストリームプラットフォーム１３２のグローバルレイテンシマネージャーおよびエンコーダー１５２に送信するように構成することができる。一例では、グローバルレイテンシマネージャーおよびエンコーダー１５２は、短期および長期のネットワークレイテンシの傾向および安定性を同様に測定するために、複数のクライアントコンピューティングデバイス１０２と通信するために使用されるそれぞれのネットワーク１０６をさらにプロファイリングするように構成され得る。各クライアントコンピューティングデバイス１０２から受信したネットワークレイテンシデータ１６０は、グローバルレイテンシマネージャーおよびエンコーダー１５２によって記憶および管理される。
【００２３】
[0026]クライアントコンピューティングデバイス１６２ごとのネットワークレイテンシデータに基づいて、グローバルレイテンシマネージャーおよびエンコーダー１５２は、複数のクライアントコンピューティングデバイス１０２からそれぞれ受信した入力ストリーム１３８のそれぞれのレイテンシを決定するように構成される。上で議論したように、複数のクライアントコンピューティングデバイス１０２によって利用されるそれぞれのネットワーク１０６は、様々なレイテンシおよびネットワーク安定性を有する場合がある。したがって、入力ストリーム１３８のそれぞれの決定されたレイテンシに基づいて、グローバルレイテンシマネージャーおよびエンコーダー１５２は、複数の入力ストリーム１３８の中で高レイテンシ入力ストリームおよび低レイテンシ入力ストリームを特定するように構成することができる。図３に図示される例では、第１のクライアントコンピューティングデバイス１０２Ａおよび第２のクライアントコンピューティングデバイス１０２Ｂによって送信される入力ストリーム１３８は、サーバーコンピューティングデバイス１０４のグローバルレイテンシマネージャーおよびエンコーダー１５２によって、低レイテンシ入力ストリーム１３８Ａおよび１３８Ｂとして特定される。一方で、第３のクライアントコンピューティングデバイス１０２Ｃによって送信された入力ストリーム１３８は、グローバルレイテンシマネージャーおよびエンコーダー１５２によって管理されるクライアントコンピューティングデバイス１６２ごとのネットワークおよびレイテンシデータに基づいて、高レイテンシ入力ストリーム１３８Ｃとして特定される。
【００２４】
[0027]複数のクライアントコンピューティングデバイス１０２から受信した入力ストリームのうち少なくとも１つが他の入力ストリームと比較して閾値レイテンシよりも大きいレイテンシ差を有していると判断した後、高レイテンシ入力ストリーム１３８Ｃと低レイテンシ入力ストリーム１３８Ａ／１３８Ｂとの間のレイテンシの差を狭めるために、グローバルレイテンシマネージャーおよびエンコーダー１５２は、高レイテンシを低レイテンシ入力ストリーム１３８Ａ／１３８Ｂに導入するように構成され得る。１つの構成において、グローバルレイテンシマネージャーおよびエンコーダー１５２は、複数の入力ストリームの最高レイテンシ入力ストリーム以外のそれぞれ他の入力ストリームに高レイテンシを導入するように構成することができる。例えば、図３に図示されるように、第１のクライアントコンピューティングデバイス１０２Ａおよび第２のクライアントコンピューティングデバイス１０２Ｂの両方によって送信された入力ストリーム１３８は、低レイテンシ入力ストリーム１３８Ａおよび１３８Ｂとして特定される。したがって、グローバルレイテンシマネージャーおよびエンコーダー１５２は、第１のネットワーク１０６Ａおよび第２のネットワーク１０６Ｂ上で送信される低レイテンシストリーム１３８Ａおよび１３８Ｂの両方に高レイテンシを導入するように構成することができる。
【００２５】
[0028]一例では、低レイテンシストリームのそれぞれに導入された高レイテンシ１６４は、グローバルレイテンシマネージャーおよびエンコーダー１５２によってスケーリング可能であり、制御可能である。グローバルレイテンシマネージャーおよびエンコーダー１５２は、導入された高レイテンシ１６４を、複数の入力ストリーム１３８のそれぞれに対して予測された長期レイテンシに基づいて制御するように構成され得、これは各クライアントコンピューティングデバイス１０２のネットワーク予測器から受信したネットワークレイテンシデータ１６２に基づいて決定され得。すなわち、グローバルレイテンシマネージャーおよびエンコーダー１５２は、複数の複数の入力ストリーム１３８の最高予測長期レイテンシ１６６を特定し、１つまたは複数の低レイテンシ入力ストリーム１３８Ａ／１３８Ｂ中の導入された高レイテンシ１６４を、複数の入力ストリーム１３８の最高予測長期レイテンシ１６６まで高めるように構成され得る。このやり方で、グローバルレイテンシマネージャーおよびエンコーダー１５２は、クライアントコンピューティングデバイス１０２の複数の入力および出力ストリームのそれぞれが閾値レイテンシ差におさまるレイテンシとなるまで、特定した低レイテンシストリームに増加する人工的なレイテンシ量を導入するように構成され得る。
【００２６】
[0029]グローバルレイテンシマネージャーおよびエンコーダー１５２は、様々な方法により選択された入力ストリームに高レイテンシを導入するように構成され得る。一例では、グローバルレイテンシマネージャーおよびエンコーダー１５２は、複数の入力ストリーム１３８のそれぞれについての入力をバッファリングすることにより、高レイテンシを導入するように構成され得る。図３に図示した例では、複数のクライアントコンピューティングデバイス１０２からの各入力ストリーム１３８中の各入力１３６は、サーバーコンピューティングデバイス１０４によって受信されると入力バッファ１６８に入れることができる。低レイテンシ入力ストリーム１３８Ａおよび１３８Ｂのそれぞれについての入力１３６は、高レイテンシ入力ストリーム１３８Ｃからの対応する入力がサーバーコンピューティングデバイス１０４の入力ハンドラ１４０によって受信されるまで、入力バッファ１６８中で保持することができる。クライアントコンピューティングデバイス１０２のすべてから入力１３６が受信されてしまうと、これらの入力を入力バッファ１６８から取り出し、その後これらの入力に基づいて対応する出力フレーム１５０をレンダリングすることができるリモート実行デバイス１１０に送信することができる。入力バッファ１６８は、１入力、２入力、３入力などのあらゆる適切な数の入力をバッファリングするように構成され得ることを諒解されたい。
【００２７】
[0030]一例では、サーバーコンピューティングデバイス１０４は、低レイテンシ入力ストリーム１３８Ａおよび１３８Ｂからの入力を、独立して出力フレームストリーム１５４にバッファリングするように構成することができる。すなわち、入力ハンドラ１４０が高レイテンシ入力ストリーム１３８Ｃからの入力を待機している間、入力が入力バッファ１６８内で保持されていたとしても、リモート実行デバイス１１０は新しい入力がない状態で出力フレーム１５０を制御可能フレームレート１５０でレンダリングし続け、これらの出力フレームをそれぞれの出力フレームストリーム１５４中で、クライアントコンピューティングデバイス１０２に送信することができる。入力をバッファリングするため、低レイテンシネットワーク上で低レイテンシ入力ストリーム１３８を有するクライアントコンピューティングデバイス１０２のエンドユーザーには、その入力１３６をまだ反映しない表示フレーム１５６の中断のないストリームが提示され、それによりエンドユーザーはマルチプレーヤーオンラインソフトウェアプログラム１３４が、あまり応答的ではなく、また高レイテンシを有していると認識することになる。しかしながら、これらのエンドユーザーの視覚的なエクスペリエンスは維持される。このやり方で、マルチプレーヤーオンラインソフトウェアプログラム１３４の認識される応答性（例えば、ユーザー入力とその入力を反映した表示フレームとの間で経過する時間）は、高レイテンシネットワークを有する他のユーザーによって体験される応答性と一致させるために、クライアント側のフレームレートを低下させることなく、低レイテンシネットワークを有するユーザーのために選択的に低減されてもよい。
【００２８】
[0031]別の例では、グローバルレイテンシマネージャーおよびエンコーダー１５２は、複数の出力フレームストリーム１５４のそれぞれについての出力フレーム１５０をバッファリングすることにより、高レイテンシを導入するように構成され得る。図３に図示されるように、リモート実行デバイス１１０によってレンダリングされる出力フレーム１５０は、複数のクライアントコンピューティングデバイス１０２についての出力フレームストリーム１５４のそれぞれについてそれぞれの出力フレームバッファ１７０内に保持することができる。次いで、サーバーコンピューティングデバイス１０４は、グローバルレイテンシマネージャーおよびエンコーダー１５２によって制御されるように、複数のクライアントコンピューティングデバイス１０２に送信されるそれぞれの出力フレームバッファ１７０から出力フレーム１５０を取り出すことができる。例えば、グローバルレイテンシマネージャーおよびエンコーダー１５２は、出力フレーム１５０が同じような時刻にクライアントコンピューティングデバイス１０２に到達するべく、最高予測長期レイテンシ１６６に基づいて出力フレームバッファ１７０から出力フレーム１５０を取り出して送信することができる。すなわち、低レイテンシストリームについての出力フレームは、出力フレームが同じような時刻にクライアントコンピューティングデバイスに到達するべく、低レイテンシストリームと高レイテンシストリームとの間のレイテンシの差に応じて出力フレームバッファ１７０内で遅延され得る。このやり方で、クライアントコンピューティングデバイス１０２のそれぞれのエンドユーザーは、マルチプレーヤーオンラインソフトウェアプログラム１３４の公平性が維持されるべく、表示フレームにおいて高ネットワークレイテンシにより生じる同程度の「ジッター」を体験することができる。上述の入力バッファリングおよびアウトフレームバッファリング処理は、サーバーコンピューティングデバイス１０４によって、一緒にまたは別個に実装することができることを諒解されたい。
【００２９】
[0032]別の例では、グローバルレイテンシマネージャーおよびエンコーダー１５２は、制御可能フレームレート１５０をターゲットフレームレート１７２よりも小さくなるよう低下させることにより、高レイテンシを導入するように構成され得る。例えば、グローバルレイテンシマネージャーおよびエンコーダー１５２はマルチプレーヤーオンラインソフトウェアプログラム１３４の制御可能フレームレート１５０を、最高予測長期レイテンシ１６６に基づいて修正することができる。すなわち、マルチプレーヤーオンラインソフトウェアプログラム１３４の認識される応答性（例えば、ユーザー入力とその入力を反映した表示フレームとの間で経過する時間）は、高ネットワークレイテンシに起因して既に低減されているため、サーバーコンピューティングデバイス１０４はマルチプレーヤーオンラインソフトウェアプログラム１３４の制御可能フレームレート１５０を都合よく低下させるように構成され得る。制御可能フレームレート１５０を低下させることにより、出力フレーム１５０は、リモート実行デバイス１１０によって低いレートでレンダリングされるため、サーバーコンピューティングデバイス１０４にかかる計算機的な負荷を低減する。さらには、出力フレーム１５０が少なくなるため、出力フレームストリーム１５４をクライアントコンピューティングデバイスに送信するために必要とされるストリーミング帯域幅が、やはり低減され、それによってサーバーコンピューティングデバイス１０４についての潜在的にコストおよびハードウェアリソースを節約する。制御可能フレームレート１５０を低減することがマルチプレーヤーオンラインソフトウェアプログラム１３４の認識される応答性も低減する一方で、グローバルレイテンシマネージャーおよびエンコーダー１５２は、最高予測長期レイテンシ１６６に比例して制御可能フレームレート１５０を低減することがある。
【００３０】
[0033]ユーザーに表示されている出力フレーム１５０のフレームレートを低減することは、潜在的にこれらのユーザーにとってマルチプレーヤーオンラインソフトウェアプログラム１３４の認識される滑らかさを低下させることがある。したがって、一例では、サーバーコンピューティングデバイス１０４のグローバルレイテンシマネージャーおよびエンコーダー１５２は、各クライアントコンピューティングデバイス１０２に、出力フレームストリーム１５４中の１つまたは複数の出力フレーム１５０に基づいて中間的なフレーム１７４を補間させてターゲットフレームレート１７２を達成するように、さらに構成され得る。図２に図示されるように、グローバルレイテンシマネージャーおよびエンコーダー１５２は、それぞれのクライアントコンピューティングデバイス１０２についての出力フレームストリーム１５４中の出力フレーム１５０を、これらのクライアントコンピューティングデバイス１０２のそれぞれによって実行されるクライアント側のストリーミングプラットフォーム１２４のフレームインターポレーター１７８に送信するように構成され得る。フレームインターポレーター１７６は、中間的なフレーム１７４を、中間的なフレーム１７４に先立ってレンダリングされた出力フレームおよび／または中間的なフレーム１７４に続いてレンダリングされた出力フレームに基づいて、補間するように構成することができる。すなわち、制御可能フレームレート１５０が１秒あたり６０フレームであり、かつ制御可能フレームレート１５０が１秒あたり３０フレームまで低減されている場合、グローバルレイテンシマネージャーおよびエンコーダー１５２は、フレームインターポレーター１７６に、１秒あたり６０フレームのターゲットフレームレート１７２を達成するために中間的なフレーム１７４をフレームごとに補間することを命令するように構成され得る。
【００３１】
[0034]フレームインターポレーター１７６は、ホモグラフィ、時間ワーピング、画像ベースのレンダリングメッシュワーピング、後段再投影（ｌａｔｅ  ｓｔａｇｅ  ｒｅｐｒｏｊｅｃｔｉｏｎ）技法、ニューラルネットワーク補間、および他の適切な補間技法などの補間技法を用いて中間的なフレーム１７４を補間するように構成され得る。これらの補間技法は、完全なレンダリング処理を必要とせず、適当なハードウェアおよびマルチプレーヤーオンラインソフトウェアプログラム１３４用の完全なレンダリングプロセッサを実施するための処理リソースを有していないシンクライアントコンピューティングデバイスに対して実施されてもよい。補間される中間的なフレーム１７４は、出力フレーム１５０とともにストリーミングクライアント１０８に送信され、ターゲットフレームレート１７２でディスプレイ１２０Ａを介してユーザーに提示される表示フレーム１５６として処理され得る。このやり方で、サーバーコンピューティングデバイス１０４はマルチプレーヤーオンラインソフトウェアプログラム１３４の視覚的な忠実度を低減させ、帯域幅およびハードウェアリソースのコストを低減しつつ、マルチプレーヤーオンラインソフトウェアプログラム１３４についてのターゲットフレームレート１７２を維持することができる。
【００３２】
[0035]グローバルレイテンシマネージャーおよびエンコーダー１５２は、各クライアントコンピューティングデバイス１０２が従うと期待される、期待ターゲット入力頻度１４２に基づいて、複数のクライアントコンピューティングデバイス１０２から受信した入力ストリーム１３８中の短期のレイテンシ変化を検出するようにさらに構成され得る。すなわち、各クライアントコンピューティングデバイス１０２はターゲット入力頻度１４２で入力１３６を送信するように期待される。例えば、ユーザーが特定の周期で入力１３６を入力していない場合でも、クライアントコンピューティングデバイス１０２はなお、ユーザーによって入力がないことを示す「ハートビート」入力をサーバーコンピューティングデバイス１０４に送信することができる。したがって、グローバルレイテンシマネージャーおよびエンコーダー１５２は、ターゲット入力頻度１４２で入力ストリーム１３８のそれぞれから入力が受信されたかどうかを検出することに基づいて入力ストリーム１３８のそれぞれのレイテンシを決定するように構成され得る。グローバルレイテンシマネージャーおよびエンコーダー１５２が、サーバーコンピューティングデバイス１０４が特定のクライアントコンピューティングデバイス１０２から入力ストリーム１３８中の入力を受信していないと検出する場合、グローバルレイテンシマネージャーおよびエンコーダー１５２は、その特定のクライアントコンピューティングデバイス１０２について、レイテンシに短期的な増大またはネットワークの安定性に中断があったことと判断することができる。
【００３３】
[0036]図２に図示されるように、クライアントコンピューティングデバイス１０２からの入力ストリーム１３８のうちの１つが入力を逃したと検出したことに基づいて、入力ハンドラ１４０の入力予測器１４６は、逃した入力を埋めるための予測された入力１７８を決定するように構成され得る。予測された入力１７８は入力エミュレーター１４４に送信することができ、入力エミュレーター１４４は、リモート実行デバイス１１０に送信される対応するエミュレートされた入力１４８を生成するように構成され得る。リモート実行デバイス１１０は、ユーザーがその入力を入力ストリーム１３８に入力したかのように、予測された入力１７８について出力フレーム１５０をレンダリングすることができる。このやり方で、レイテンシの短期的な増大および／またはネットワーク安定性の問題により生じる入力ストリーム１３８中の逃した入力は、サーバーコンピューティングデバイス１０４によって予測された入力１７８で埋めることができる。
【００３４】
[0037]一例では、予測された入力１７８は、その入力ストリーム１３８中の入力の履歴を含む訓練済み入力データ１８０に基づいて決定することができる。例えば、入力予測器１４６は入力ストリーム１３８中の先行する入力に基づいて予測された入力１７８を決定することができる。入力の履歴は、さらなる入力を予測するために使用されるユーザー用の訓練済みモデルを生成するためにさらに使用され得る。入力予測器１４６は、プレーヤーからのフィードバックを用いて訓練することができる。最初は、入力予測器１４６は、例えば好み、または最もプレイしたゲーム、オンラインサービスにおけるユーザーのランキング、アチーブメントなど、あるユーザーに類似した特性を有するプレーヤーについて既に訓練済みのモデルを用いて、そのユーザー用にブートストラップされてもよい。
【００３５】
[0038]図４は、高レイテンシ入力ストリーム１３８Ｃ内で逃した入力を埋めるために、予測された入力を生成する例示の入力予測器１４６を図示している。図示されるように、サーバーコンピューティングデバイス１０４は、入力がクライアントコンピューティングデバイス１０２からターゲット入力頻度１４２に従って受信されることを期待する。サーバーコンピューティングデバイス１０４によって実装されるサーバー側のストリーミングプラットフォーム１４０の入力ハンドラ１４０は、ターゲット入力頻度１４２に基づいて高レイテンシ入力ストリーム１３８Ｃ中の逃した入力１８０を検出するように構成され得る。すなわち、サーバーコンピューティングデバイス１０４が、期待した時点以降の閾値時間にクライアントコンピューティングデバイスから入力を受信していない場合、入力ハンドラ１４０は、クライアントコンピューティングデバイスがそのクライアントコンピューティングデバイスとサーバーコンピューティングデバイス１０４との間において、短期的な高レイテンシまたはネットワークの不安定に起因して入力を逃したと判断することができる。逃した入力１８０を検出すると、入力予測器１４６は上で議論したように予測された入力１７８を決定し、予測された入力１７８を高レイテンシ入力ストリーム１３８Ｃに挿入して逃した入力１８０を埋めるように構成され得る。
【００３６】
[0039]図４で図示された例は、高レイテンシ入力ストリーム１３８Ｃ中で１つまたは２つの入力だけを続けて逃したシーケンスを示している。しかしながら、一部の例では、ネットワークの不安定に起因して、クライアントコンピューティングデバイスは可能性として、例えば５入力、１０入力など多くの連続した入力を逃す場合がある。この例では、グローバルレイテンシマネージャーおよびエンコーダー１５２は、高レイテンシ入力ストリーム１３８Ｃが、５入力、１０入力または１５入力など、閾値逃した入力数（プログラム開発者により定義することができる）よりも多くの連続した入力を逃したかどうかを検出するように構成されてもよい。高レイテンシ入力ストリーム１３８Ｃが閾値入力数よりも多くの入力を逃した場合、グローバルレイテンシマネージャーおよびエンコーダー１５２は、次の入力が高レイテンシ入力ストリーム１３８Ｃ中で受信されるまで、マルチプレーヤーオンラインソフトウェアプログラム１３４の実行を停止するように構成されてもよい。高レイテンシ入力ストリーム１３８Ｃが逃した入力が閾値入力数よりも少ない数である場合、グローバルレイテンシマネージャーおよびエンコーダー１５２は、その入力ストリームについて新しい入力を入力バッファ１６８から取り出すよう入力ハンドラ１４０に命令するように、および／または高レイテンシ入力ストリーム１３８Ｃ中で逃した入力スロットに挿入するための新しい予測された入力１７８を生成するよう入力予測器１４６に命令するように構成され得る。実際の入力１３６および予測された入力１７８を含む修正済み高レイテンシ入力ストリーム１８２は、リモート実行デバイス１１０に送信され、上述の方法に従って処理され得る。
【００３７】
[0040]入力予測器１４６は、最新および／または将来的な、機械学習（ＭＬ）、人工知能（ＡＩ）、および／または自然言語処理（ＮＬＰ）技法のあらゆる適切な組合せを使用して実装することができることを諒解されたい。例えば、図２に示される訓練済みデータ１８０の機械学習モデルは、特定のクライアントコンピューティングデバイス１０２のユーザーのための予測された入力１７８を生成するために、入力予測器１４６によって利用される状態機械を生成するように訓練され得る。一例では、機械学習モデルは、その特定のクライアントコンピューティングデバイス１０２から受信した入力データの履歴に基づいて訓練される場合がある。別の例では、機械学習モデルは、時間的に異なるゲームセッションにまたがる複数の異なるユーザーから受信した入力の履歴に基づいて訓練される場合がある。加えて、訓練済みデータ１８０の機械学習モデルは、様々なジオロケーション、データセンターなどに配置され得る複数の異なるサーバーコンピューティングデバイス１０４同士で共有されてもよい。例えば、図２に示される訓練済みデータ１８０の機械学習モデルは、様々なデータセンターに配置された、それぞれが複数の異なるクライアントコンピューティングデバイスから入力データを受信することができる複数の異なるサーバーコンピューティングデバイス１０４によって受信された入力データを使用して訓練することができる。
【００３８】
[0041]実装形態に組み込まれ得る技法の非限定的な例としては、サポートベクターマシン、マルチレイヤニューラルネットワーク、畳み込みニューラルネットワーク（例えば、画像および／または動画を処理するための空間的畳み込みニューラルネットワーク、音声信号および／もしくは自然言語センテンスを処理するための時間的畳み込みニューラルネットワーク、および／または１つもしくは複数の時間的および／もしくは空間的次元にわたって特徴を畳み込んでプールするように構成される、あらゆる他の適切な畳み込みニューラルネットワークを含む）、再帰ニューラルネットワーク（例えば、長短期メモリネットワーク）、連想メモリ（例えば、ルックアップテーブル、ハッシュテーブル、ブルームフィルタ、ニューラルチューリングマシン、および／またはニューラルランダムアクセスメモリ）、単語埋め込みモデル（例えば、ＧｌｏＶｅまたはＷｏｒｄ２Ｖｅｃ）、教師無し空間および／またはクラスタリング法（例えば、最近傍アルゴリズム、トポロジカルデータ分析、および／またはｋ平均クラスタリング）、グラフィカルモデル（例えば、（隠れ）マルコフモデル、マルコフ確率場、（隠れ）条件付き確率場、および／またはＡＩナレッジベース）、および／または自然言語処理技法（例えば、トークン化、ステミング、一貫性および／または依存性解析、および／またはインテント認識、分節モデル、および／または超分節モデル（例えば、隠れ動的モデル（ｈｉｄｄｅｎ  ｄｙｎａｍｉｃ  ｍｏｄｅｌｓ）））が挙げられる。
【００３９】
[0042]一部の例では、本明細書において説明される方法および処理は、１つまたは複数の微分可能関数を使用して実装される場合があり、微分可能関数の勾配は、微分可能関数の入力および／または出力に関して（例えば、訓練データに関して、および／または目的関数に関して）計算および／または推定され得る。そのような方法および処理は、一組の訓練可能パラメータによって、少なくとも部分的に決定することができる。それに応じて、特定の方法または処理についての訓練可能パラメータは、方法または処理の機能性を常に改善するよう、あらゆる適切な訓練手順を通じて調節され得る。
【００４０】
[0043]訓練可能パラメータを調節するための訓練手順の非限定的な例としては、教師あり訓練（例えば、最急降下法、またはあらゆる他の適切な最適化法を用いるもの）、ゼロショット、少数ショット、教師無し学習法（例えば、教師無しクラスタリング法から導出したクラスに基づく分類）、強化学習（例えば、フィードバックに基づくディープＱ学習）および／または敵対的生成ニューラルネットワーク訓練法、信念伝搬法、ＲＡＮＳＡＣ（ランダムサンプルコンセンサス）、文脈バンディット法、最尤法および／または期待値最大化法が挙げられる。一部の例では、本明細書において説明されるシステムの複数の方法、処理、および／またはコンポーネントは、複数のコンポーネントの集合的な機能のパフォーマンスを測定する目的関数に関して（例えば、強化フィードバックに関して、および／またはラベル付け訓練データに関して）同時的に訓練することができる。複数の方法、処理、および／またはコンポーネントを同時的に訓練することは、そのような集合的な機能を改善することができる。一部の例では、１つまたは複数の方法、処理、および／またはコンポーネントは他のコンポーネントと無関係に訓練される場合がある（例えば、履歴的なデータに対するオフライン訓練）。
【００４１】
[0044]図５はコンピューター実装の方法５００のフローチャートを示す。方法５００は、図１のサーバーコンピューティングデバイスによって実装され得る。５０２において、方法５００は、それぞれの複数のクライアントコンピューティングデバイスから複数の入力ストリームを受信することを含むことができ、各入力ストリームはマルチプレーヤーオンラインソフトウェアプログラム内のそれぞれのキャラクターの、例えば移動、選択、アクションの実行など、アクションを制御する複数の入力を含む。図２に関して上述したように、クライアントコンピューティングデバイスによって実装されるストリーミングクライアント１０８は、入力ストリーム１３８中の複数の入力１３６を、ネットワーク１０６上でサーバーコンピューティングデバイス１０４に送信することができる。マルチプレーヤーオンラインソフトウェアプログラム１３４に参加中の各クライアントコンピューティングデバイス１０２は、入力ストリーム１３８をサーバーコンピューティングデバイス１０４に送信するように構成され得る。
【００４２】
[0045]５０４において、方法５００は入力ストリームのそれぞれのレイテンシを決定することを含むことができる。図２を参照して上述したように、クライアントコンピューティングデバイスのネットワーク予測器１５８は、そのそれぞれのネットワーク１０６のネットワークレイテンシおよび／またはコンポーネントジッターをプロファイリングするように構成され得る。例えば、ネットワーク予測器１５８はサーバーコンピューティングデバイス１０４にパケットを送信し、それぞれのパケットのラウンドタイムトリップを測定するように構成されてもよい。ネットワーク予測器１５８は、ラウンドタイムトリップの時間変化を分析して、ネットワークレイテンシおよび安定性における短期および長期の傾向を決定することができる。このやり方で、ネットワーク予測器１５８は、短期および長期についてのネットワークレイテンシの予測を含むネットワークレイテンシデータ１６０を生成することができる。
【００４３】
[0046]５０６において、方法５００は複数の入力ストリームのそれぞれの長期レイテンシを予測することを含むことができる。図２を参照して上述したように、複数の入力ストリーム１３８のそれぞれに対して予測された長期レイテンシは、各クライアントコンピューティングデバイス１０２のネットワーク予測器から受信したネットワークレイテンシデータ１６２に基づいて決定することができる。
【００４４】
[0047]５０８において、方法５００は複数の入力ストリームの中で高レイテンシ入力ストリームおよび低レイテンシ入力ストリームを特定することができる。図２を参照して説明したように、サーバーコンピューティングデバイス１０４のグローバルレイテンシマネージャーおよびエンコーダーは、クライアントコンピューティングデバイス１０２から受信したネットワークレイテンシデータを比較して高および低入力レイテンシストリームを特定するように構成され得る。一例では、グローバルレイテンシマネージャーおよびエンコーダーは、ターゲット入力頻度に従ってある特定の入力ストリーム内で逃した入力があることを検出したことに基づいて、その特定の入力ストリームが高レイテンシ入力ストリームであると特定するようにさらに構成されてもよい。
【００４５】
[0048]５１０において、方法５００は、高レイテンシ入力ストリームと低レイテンシ入力ストリームとの間のレイテンシの差を狭めるために、低レイテンシ入力ストリーム内に高レイテンシを導入することを含むことができる。一例では、複数の入力ストリームの最高レイテンシ入力ストリーム以外のそれぞれ他の入力ストリームに高レイテンシが導入される。最高レイテンシ入力ストリームは各クライアントコンピューティングデバイスから受信したネットワークレイテンシに基づいて決定されてもよい。
【００４６】
[0049]ステップ５１０において、高レイテンシは、様々な技法を使用して低レイテンシ入力ストリームに導入される可能性がある。一例では、高レイテンシを導入することは、複数の入力ストリームのそれぞれについて入力をバッファリングすることを含む。図３を参照して説明したように、複数のクライアントコンピューティングデバイス１０２からの各入力ストリーム１３８中の各入力１３６は、サーバーコンピューティングデバイス１０４によって受信されると入力バッファ１６８に入れられる場合がある。低レイテンシ入力ストリーム１３８Ａおよび１３８Ｂのそれぞれについての入力１３６は、高レイテンシ入力ストリーム１３８Ｃからの対応する入力がサーバーコンピューティングデバイス１０４の入力ハンドラ１４０によって受信されるまで、入力バッファ１６８中で保持されてもよい。クライアントコンピューティングデバイス１０２のすべてから入力１３６が受信されてしまうと、これらの入力を入力バッファ１６８から取り出し、その後これらの入力に基づいて対応する出力フレーム１５０をレンダリングすることができるリモート実行デバイス１１０に送信することができる。
【００４７】
[0050]別の例では、高レイテンシを導入することは、複数の出力フレームのそれぞれについて出力フレームをバッファリングすることを含むことができる。図３を参照して説明したように、リモート実行デバイス１１０によってレンダリングされる出力フレーム１５０は、複数のクライアントコンピューティングデバイス１０２についての出力フレームストリーム１５４のそれぞれについてそれぞれの出力フレームバッファ１７０内に保持される場合がある。次いで、サーバーコンピューティングデバイス１０４は、グローバルレイテンシマネージャーおよびエンコーダー１５２によって制御されるように、複数のクライアントコンピューティングデバイス１０２に送信されるそれぞれの出力フレームバッファ１７０から出力フレーム１５０を取り出すことができる。
【００４８】
[0051]別の例では、高レイテンシを導入することは、制御可能フレームレートをターゲットフレームレートよりも小さくなるよう低下させることを含むことができる。図３を参照して説明したように、グローバルレイテンシマネージャーおよびエンコーダー１５２はマルチプレーヤーオンラインソフトウェアプログラム１３４の制御可能フレームレート１５０を、最高予測長期レイテンシ１６６に基づいて修正することができる。すなわち、マルチプレーヤーオンラインソフトウェアプログラム１３４の認識される応答性（例えば、ユーザー入力とその入力を反映した表示フレームとの間で経過する時間）は、高ネットワークレイテンシに起因して既に低減されているため、サーバーコンピューティングデバイス１０４はマルチプレーヤーオンラインソフトウェアプログラム１３４の制御可能フレームレート１５０を都合よく低下させるように構成され得る。
【００４９】
[0052]５１２において、方法５００は、１つまたは複数の低レイテンシ入力ストリーム中の導入された高レイテンシを、複数の入力ストリームの最高予測長期レイテンシまで高めることを含むことができる。ステップ５１２は、クライアントコンピューティングデバイス１０２の複数の入力および出力ストリームのそれぞれが閾値レイテンシ差におさまるレイテンシとなるまで、特定した低レイテンシストリームに増加する人工的なレイテンシの量を導入することを含むことができる。
【００５０】
[0053]５１４において、方法５００は、複数のクライアントコンピューティングデバイスのそれぞれについてマルチプレーヤーオンラインソフトウェアプログラムのソフトウェアプログラム状態について出力フレームを、制御可能フレームレートでレンダリングすることを含むことができる。図２を参照して上述したように、エミュレートされた入力１４８のストリームに基づいて、リモート実行デバイス１１０は、マルチプレーヤーオンラインソフトウェアプログラム１３４の一場面において、クライアントコンピューティングデバイスごとにそれぞれのキャラクターの現在の視点を決定することができ、これらの現在の視点の見え方を、クライアントコンピューティングデバイス１０２ごとに出力フレーム１５０として、レンダリングすることができる。
【００５１】
[0054]５１６において、方法５００は、複数の出力フレームストリーム中のレンダリングされた出力フレームをそれぞれの複数のクライアントコンピューティングデバイスに送信することを含むことができる。ステップ５１２で議論したように、レンダリングされた出力フレームは高レイテンシを選択したストリームに導入するために、出力フレームバッファ内に保持される場合がある。レンダリングされた出力フレームは、出力フレームバッファから取り出し、その後そのストリーム内のターゲット導入レイテンシを達成するよう、関連付けられているクライアントコンピューティングデバイスに送信される場合がある。
【００５２】
[0055]５１８において、方法５００は各クライアントコンピューティングデバイスに、出力フレームストリーム中の１つまたは複数の出力フレームに基づいて中間的なフレームを補間させてターゲットフレームレートを達成することを含む。図２を参照して上述したように、クライアントコンピューティングデバイスによって実装されるフレームインターポレーター１７６は、中間的なフレーム１７４を、中間的なフレーム１７４に先立ってレンダリングされた出力フレームおよび／または中間的なフレーム１７４に続いてレンダリングされた出力フレームに基づいて、補間するように構成され得る。フレームインターポレーター１７６は、ホモグラフィ、時間ワーピング、画像ベースのレンダリングメッシュワーピング、後段再投影技法、ニューラルネットワーク補間、および他の適切な補間技法などの補間技法を用いて中間的なフレーム１７４を補間するように構成され得る。出力フレームおよび補間された中間的なフレームは、クライアントコンピューティングデバイスのディスプレイによりユーザーに提示することができる。
【００５３】
[0056]上述のシステムおよび方法は、様々な技法を使用して一部のプレーヤーのストリームにレイテンシを導入し、各プレーヤーが自身のそれぞれのネットワーク接続に様々なレイテンシを有するにも関わらず、マルチプレーヤーセッション内で各プレーヤーがより類似したゲームエクスペリエンスを有することができるようにすることによって、オンラインソフトウェアプログラムのマルチプレーヤーセッションにおける公平性を維持するために利用される場合がある。
【００５４】
[0057]一部の実施形態では、本明細書において説明される方法および処理は、１つまたは複数のコンピューティングデバイスのコンピューティングシステムに結びつけられる場合がある。特に、そのような方法および処理は、コンピューター−アプリケーションプログラムまたはサービス、アプリケーション−プログラミングインターフェース（ＡＰＩ）、ライブラリ、および／または他のコンピュータープログラム製品として実装することができる。
【００５５】
[0058]図６はコンピューティングシステムの非限定的な実施形態を概略的に示す。一部の実施形態では、本明細書において説明される方法および処理は、１つまたは複数のコンピューティングデバイスのコンピューティングシステムに結びつけられる場合がある。特に、そのような方法および処理は、コンピューター−アプリケーションプログラムまたはサービス、アプリケーション−プログラミングインターフェース（ＡＰＩ）、ライブラリ、および／または他のコンピュータープログラム製品として実装することができる。
【００５６】
[0059]図６は、上述の方法および処理のうち１つまたは複数を実行に移すことができるコンピューティングシステム６００の非限定的な実施形態を概略的に示す。コンピューティングシステム６００は、簡略化した形態で示してある。コンピューティングシステム６００は、上述し図１および図２で図示したクライアントコンピューティングデバイス１０２およびサーバーコンピューティングデバイス１０４を具体化することができる。コンピューティングシステム６００は、パーソナルコンピューター、サーバーコンピューター、タブレットコンピューター、家庭娯楽用コンピューター、ネットワークコンピューティングデバイス、ゲーミングデバイス、モバイルコンピューティングデバイス、モバイル通信デバイス（例えば、スマートフォン）、および／または他のコンピューティングデバイス、ならびにスマートリストウォッチおよび頭部搭載型拡張現実デバイスなどのウェアラブルコンピューティングデバイスのうちの１つまたは複数の形態を取ることができる。
【００５７】
[0060]コンピューティングシステム６００は論理プロセッサ６０２、揮発性メモリ６０４、および不揮発性記憶デバイス６０６を含む。コンピューティングシステム６００は、任意選択的にディスプレイサブシステム６０８、入力サブシステム６１０、通信サブシステム６１２、および／または図６には示されていない他のコンポーネントを含むことができる。
【００５８】
[0061]論理プロセッサ６０２は、命令を実行するように構成される１つまたは複数の物理的なデバイスを含む。例えば、論理プロセッサは、１つまたは複数の、アプリケーション、プログラム、ルーチン、ライブラリ、オブジェクト、コンポーネント、データ構造、または他の論理的な構築物の一部である命令を実行するように構成されてもよい。そのような命令は、タスクを実施すること、データタイプを実装すること、１つまたは複数のコンポーネントの状態を変換すること、技術上の効果を実現すること、またはそれ以外では所望の結果に達すること、のために実装され得る。
【００５９】
[0062]論理プロセッサは、ソフトウェア命令を実行するように構成される１つまたは複数の物理的なプロセッサ（ハードウェア）を含む場合がある。追加的に、または代替的に、論理プロセッサは、ハードウェア実装のロジックまたはファームウェア命令を実行するように構成された１つまたは複数のハードウェア論理回路またはファームウェアデバイスを含んでもよい。論理プロセッサ６０２のプロセッサは、シングルコアまたはマルチコアであることができ、そのようなプロセッサで実行される命令は逐次処理、並列処理、および／または分散処理のために構成される場合がある。論理プロセッサの個別のコンポーネントは、任意選択的に、リモートで配置され得るおよび／または協調した処理のために構成され得る２つ以上の別個のデバイスに分散されてもよい。論理プロセッサの態様は、リモートでアクセス可能な、クラウドコンピューティング構成に構成されたネットワーク化コンピューティングデバイスによって、仮想化されて実行される場合がある。そのような場合、これらの仮想化された態様は、様々な異なるマシンの様々な物理的な論理プロセッサで実行されることを理解されたい。
【００６０】
[0063]不揮発性記憶デバイス６０６は、本明細書において説明される方法およびプロセッサを実装するよう、論理プロセッサによって実行可能な命令を保持するように構成された１つまたは複数の物理的なデバイスを含む。そのような方法および処理が実装されると、不揮発性記憶デバイス６０４の状態は変形され得る−例えば、異なるデータを保持する。
【００６１】
[0064]不揮発性記憶デバイス６０６は、着脱可能および／または内蔵型の物理的なデバイスを含むことができる。不揮発性記憶デバイス６０４としては、光学メモリ（例えば、ＣＤ、ＤＶＤ、ＨＤ−ＤＶＤ、Ｂｌｕ−Ｒａｙディスクなど）、半導体メモリ（例えば、ＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリなど）、および／もしくは磁気メモリ（例えば、ハードディスクドライブ、フロッピーディスクドライブ、テープドライブ、ＭＲＡＭなど）、または他の大容量記憶デバイス技術を挙げることができる。不揮発性記憶デバイス６０６としては、不揮発性、動的、静的、読み出し／書き込み、読み出し専用、シーケンシャルアクセス、場所アドレス指定可能、ファイルアドレス指定可能、および／または内容アドレス指定可能デバイスを挙げることができる。不揮発性記憶デバイス６０６は、不揮発性記憶デバイス６０６への電力が切れた時でも命令を保持するように構成されることを諒解されたい。
【００６２】
[0065]揮発性メモリ６０４は、ランダムアクセスメモリを含む物理的なデバイスを含むことができる。揮発性メモリ６０４は、一般的には論理プロセッサ６０２によって、ソフトウェア命令の処理中に一時的に情報を記憶するために利用される。揮発性メモリ６０４は一般的には揮発性メモリ６０４への電力が切れると命令を記憶し続けないことを諒解されたい。
【００６３】
[0066]論理プロセッサ６０２、揮発性メモリ６０４、および不揮発性記憶デバイス６０６の態様は、ともに１つまたは複数のハードウェア−ロジックコンポーネントに統合されてもよい。そのようなハードウェア−ロジックコンポーネントとしては、例えばフィールドプログラマブルゲートアレイ（ＦＰＧＡ）、特定プログラムおよび特定用途集積回路（ＰＡＳＩＣ／ＡＳＩＣ）、特定プログラムおよび特定用途標準製品（ＰＳＳＰ／ＡＳＳＰ）、システムオンチップ（ＳＯＣ）、ならびに複合型プログラム可能論理デバイス（ＣＰＬＤ）を挙げることができる。
【００６４】
[0067]用語「モジュール」、「プログラム」、および「エンジン」は、一般的には揮発性メモリの一部を使用して特定の機能を実施するためにプロセッサによりソフトウェアに実装されるコンピューティングシステム６００の態様を説明するために使用される場合があり、その機能には、機能を実施するためにプロセッサを特別に構成する変革的な処理を伴う。したがって、モジュール、プログラム、またはエンジンは、揮発性メモリ６０４の一部を使用して、不揮発性記憶デバイス６０６により保持される命令を実行する論理プロセッサ６０２により、インスタンス化され得る。様々なモジュール、プログラム、および／またはエンジンが、同一のアプリケーション、サービス、コードブロック、オブジェクト、ライブラリ、ルーチン、ＡＰＩ、関数などからインスタンス化され得ることを理解されたい。同様に、同一のモジュール、プログラム、および／またはエンジンが、異なるアプリケーション、サービス、コードブロック、オブジェクト、ルーチン、ＡＰＩ、関数などからインスタンス化される場合がある。用語「モジュール」、「プログラム」、および「エンジン」は、個別の実行可能ファイル、データファイル、ライブラリ、ドライバ、スクリプト、データベースレコードなど、またはその群を包含することができる。
【００６５】
[0068]含まれる場合は、ディスプレイサブシステム６０８が、不揮発性記憶デバイス６０６に保持されるデータの視覚表現を提示するために使用される場合がある。視覚表現はグラフィカルユーザーインターフェース（ＧＵＩ）の形態を取ることができる。本明細書において説明される方法および処理は不揮発性記憶デバイスにより保持されるデータを変更することができるため、不揮発性記憶デバイスの状態を変形させ、ディスプレイサブシステム６０８の状態は、同様にその根底にあるデータ内の変化を視覚的に表現するように変形され得る。ディスプレイサブシステム６０８は、実質上あらゆるタイプの技術を利用する１つまたは複数のディスプレイデバイスを含むことができる。そのようなディスプレイデバイスは、論理プロセッサ６０２、揮発性メモリ６０４、および／または不揮発性記憶デバイス６０６と共有筐体内で組み合わせることができるか、またはそのようなディスプレイデバイスは周辺ディスプレイデバイスであってもよい。
【００６６】
[0069]含まれる場合は、入力サブシステム６１０は、キーボード、マウス、タッチスクリーン、またはゲームコントローラーなどの、１つまたは複数のユーザー入力デバイスを備える、またはインターフェースすることができる。一部の実施形態では、入力サブシステムは選択された自然ユーザー入力（ＮＵＩ）コンポーネント群を備える、またはインターフェースすることができる。そのようなコンポーネント群は、一体化されているか、または周辺機器であり得、入力アクションの伝達および／または処理は、オンボードまたはオフボードで取り扱われ得る。ＮＵＩコンポーネント群の例としては、発話および／または音声認識用のマイクロフォン；マシンビジョンおよび／またはジェスチャ認識用の、赤外、色、立体視、および／または深度カメラ；動き検出および／またはインテント認識用の、ヘッドトラッカー、アイトラッカー、加速度計および／またはジャイロスコープ；ならびに脳活動度調査用の電場感知コンポーネント群；および／またはあらゆる他の適切なセンサを挙げることができる。
【００６７】
[0070]含まれる場合、通信サブシステム６１２は本明細書において説明される様々なコンピューティングデバイスを、互いに、および他のデバイスと、通信可能に連結するように構成することができる。通信サブシステム６１２は、１つまたは複数の異なる通信プロトコルと互換性のある有線および／または無線通信デバイスを含むことができる。非限定的な例として、通信サブシステムは、Ｗｉ−Ｆｉ接続を介するＨＤＭＩ（登録商標）など、無線電話ネットワークまたは有線もしくは無線のローカルもしくはワイドエリアネットワークを介する通信用に構成され得る。一部の実施形態では、通信サブシステムはコンピューティングシステム６００が、メッセージをインターネットなどのネットワークを介して他のデバイスへ／から送信および／または受信できるようにすることができる。
【００６８】
[0071]以下のパラグラフでは、主題の出願の特許請求項についてのさらなるサポートを与える。一態様は、それぞれの複数のクライアントコンピューティングデバイスから複数の入力ストリームを受信するように構成されたプロセッサを含むサーバーコンピューティングデバイスを提供する。各入力ストリームは、マルチプレーヤーオンラインソフトウェアプログラムにおいて、それぞれのキャラクターのアクションを制御する複数の入力を含む。プロセッサは、入力ストリームのそれぞれのレイテンシを決定し、複数の入力ストリームのうち高レイテンシ入力ストリームおよび低レイテンシ入力ストリームを特定し、高レイテンシ入力ストリームと低レイテンシ入力ストリームとの間のレイテンシの差を狭めるために、低レイテンシ入力ストリームに高レイテンシを導入するようにさらに構成される。この態様では、追加的に、または代替的に、複数の入力ストリームの最高レイテンシ入力ストリーム以外のそれぞれ他の入力ストリームに高レイテンシが導入される場合がある。この態様では、追加的に、または代替的に、プロセッサは、複数の入力ストリームのそれぞれについて長期レイテンシを予測し、１つまたは複数の低レイテンシ入力ストリーム中の導入された高レイテンシを、複数の入力ストリームの最高予測長期レイテンシまで高めるようにさらに構成され得る。この態様では、追加的に、または代替的に、プロセッサは、複数の入力ストリームのそれぞれについての入力をバッファリングすることにより、高レイテンシを導入するように構成され得る。この態様では、追加的に、または代替的に、プロセッサは、複数のクライアントコンピューティングデバイスのそれぞれについてマルチプレーヤーオンラインソフトウェアプログラムのソフトウェアプログラム状態について出力フレームを、制御可能フレームレートでレンダリングし、複数の出力フレームストリーム中のレンダリングされた出力フレームをそれぞれの複数のクライアントコンピューティングデバイスに送信するように構成され得る。この態様では、追加的に、または代替的に、プロセッサは、複数の出力フレームストリームのそれぞれについての出力フレームをバッファリングすることにより、高レイテンシを導入するようにさらに構成され得る。この態様では、追加的に、または代替的に、プロセッサは、制御可能フレームレートをターゲットフレームレートよりも小さくなるよう低下させることによって、高レイテンシを導入するようにさらに構成され得る。この態様では、追加的に、または代替的に、プロセッサは、各クライアントコンピューティングデバイスに、出力フレームストリーム中の１つまたは複数の出力フレームに基づいて中間的なフレームを補間させてターゲットフレームレートを達成するように構成され得る。この態様では、追加的に、または代替的に、プロセッサは、ターゲット入力頻度で入力ストリームのそれぞれから入力が受信されたかどうかを検出することに基づいて入力ストリームのそれぞれのレイテンシを決定するように構成され得る。この態様では、追加的に、または代替的に、プロセッサは、ターゲット入力頻度に基づいて高レイテンシ入力ストリーム中の逃した入力を検出し、予測された入力を高レイテンシ入力ストリームに挿入して逃した入力を埋めることができるように構成され得る。この態様では、追加的に、または代替的に、予測された入力は、その入力ストリーム中の入力の履歴を含む訓練済み入力データに基づいて決定される場合がある。
【００６９】
[0072]別の態様は、プロセッサを含むサーバーコンピューティングデバイスにおいて、それぞれの複数のクライアントコンピューティングデバイスから複数の入力ストリームを受信することを含む方法を提供する。各入力ストリームは、マルチプレーヤーオンラインソフトウェアプログラムにおいて、それぞれのキャラクターのアクションを制御する複数の入力を含む。方法は、入力ストリームのそれぞれのレイテンシを決定することと、複数の入力ストリームのうち高レイテンシ入力ストリームおよび低レイテンシ入力ストリームを特定することと、高レイテンシ入力ストリームと低レイテンシ入力ストリームとの間のレイテンシの差を狭めるために、低レイテンシ入力ストリームに高レイテンシを導入することとをさらに含む。この態様では、追加的に、または代替的に、複数の入力ストリームの最高レイテンシ入力ストリーム以外のそれぞれ他の入力ストリームに高レイテンシが導入される場合がある。この態様では、追加的に、または代替的に、方法は、複数の入力ストリームのそれぞれについて長期レイテンシを予測することと、１つまたは複数の低レイテンシ入力ストリーム中の導入された高レイテンシを、複数の入力ストリームの最高予測長期レイテンシまで高めることとをさらに含むことができる。この態様では、追加的に、または代替的には、高レイテンシを導入するは、複数の入力ストリームのそれぞれについての入力をバッファリングすることを含むことができる。この態様では、追加的に、または代替的に、方法は、複数のクライアントコンピューティングデバイスのそれぞれについてマルチプレーヤーオンラインソフトウェアプログラムのソフトウェアプログラム状態について出力フレームを、制御可能フレームレートでレンダリングすることと、複数の出力フレームストリーム中のレンダリングされた出力フレームをそれぞれの複数のクライアントコンピューティングデバイスに送信することとをさらに含むことができる。この態様では、追加的に、または代替的に、高レイテンシを導入することは、複数の出力フレームのそれぞれについて出力フレームをバッファリングすることを含むことができる。この態様では、追加的に、または代替的に、高レイテンシを導入することは、制御可能フレームレートをターゲットフレームレートよりも小さくなるよう低下させることを含むことができる。この態様では、追加的に、または代替的に、方法は、各クライアントコンピューティングデバイスに、出力フレームストリーム中の１つまたは複数の出力フレームに基づいて中間的なフレームを補間させてターゲットフレームレートを達成することをさらに含むことができる。
【００７０】
[0073]別の態様は、それぞれの複数のクライアントコンピューティングデバイスから複数の入力ストリームを受信するように構成されたプロセッサを含むサーバーコンピューティングデバイスを提供する。各入力ストリームは、マルチプレーヤーオンラインソフトウェアプログラムにおいて、それぞれのキャラクターのアクションを制御する複数の入力を含む。プロセッサは、最高予測長期レイテンシを含む入力ストリームのそれぞれのレイテンシを決定し、複数の入力ストリームのうち高レイテンシ入力ストリームおよび低レイテンシ入力ストリームを特定し、最高予測長期レイテンシまで低レイテンシ入力ストリームに高レイテンシを導入し、ターゲット入力頻度に基づいて高レイテンシ入力ストリーム中で１つまたは複数の逃した入力を検出するようにさらに構成される。１つまたは複数の逃した入力が入力閾値数よりも多い場合、プロセッサはマルチプレーヤーオンラインソフトウェアプログラムの実行を停止するように構成される。１つまたは複数の逃した入力が入力閾値数よりも少ない場合、プロセッサは予測された入力を高レイテンシ入力ストリームに挿入して逃した入力を埋めるように構成される。
【００７１】
[0074]本明細書において説明される構成および／または手法は、性質として例示的であり、これらの具体的な実施形態または例は、数々の変形例が可能であるため限定的な意味で考えられるべきではない。本明細書において説明される具体的なルーチンまたは方法は、あらゆる数の処理方策のうちの１つまたは複数を表現することができる。そのため、図示および／または説明される様々な行為は図示および／または説明される順で、他の順で、並行して、実施される場合があり、あるいは省略することができる。同様に、上述の処理の順は変更される場合がある。
【００７２】
[0075]本開示の主題は、すべての新奇かつ明白ではない、様々な処理、システム、および構成の組合せおよびサブ組合せ、ならびに本明細書において開示される他の特徴、機能、行為、および／または性質、ならびにそのあらゆるすべての等価物を含む。
【図１】
2022502165.tif 000003
【図２】
2022502165.tif 000004
【図３】
2022502165.tif 000005
【図４】
2022502165.tif 000006
【図５】
2022502165.tif 000007
【図６】
2022502165.tif 000008
【国際調査報告】
2022502165.tif 000009
2022502165.tif 000010
2022502165.tif 000011
2022502165.tif 000012