(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-21
(45)【発行日】2024-10-29
(54)【発明の名称】ゲーム内のリソースをファーミングする期間においてコンピュータシステムのリソースの利用を最適化する方法およびシステム
(51)【国際特許分類】
G06F 9/50 20060101AFI20241022BHJP
A63F 13/70 20140101ALI20241022BHJP
【FI】
G06F9/50 150D
A63F13/70
(21)【出願番号】P 2021539001
(86)(22)【出願日】2019-12-28
(86)【国際出願番号】 IB2019061420
(87)【国際公開番号】W WO2020141427
(87)【国際公開日】2020-07-09
【審査請求日】2022-12-16
(32)【優先日】2019-01-02
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】515086056
【氏名又は名称】ナウ.ジージー インコーポレイテッド
【住所又は居所原語表記】2105 S. Bascom Avenue, Suite 380 Campbell, CA 95008 USA
(74)【代理人】
【識別番号】110003177
【氏名又は名称】弁理士法人旺知国際特許事務所
(72)【発明者】
【氏名】サラフ,スマン
(72)【発明者】
【氏名】プラカーシュ,ラヴィ
【審査官】坂東 博司
(56)【参考文献】
【文献】米国特許出願公開第2017/0244809(US,A1)
【文献】米国特許出願公開第2008/0184229(US,A1)
【文献】米国特許出願公開第2018/0173549(US,A1)
【文献】米国特許出願公開第2016/0300450(US,A1)
【文献】BlueStacks Content Team,BlueStacks Multi-Instance: Play multiple games or same game from multiple accounts,米国,now.gg, Inc.,2018年09月18日,1-8,[令和 5年5月12日検索],インターネット <URL:https://www.bluestacks.com/blog/bluestacks-exclusives/new-bluestacks-multi-instance-en.html>
【文献】BRAD LINDER,BlueStacks 4 released with promise of speedier Android app performance on PCs,米国,liliputing,2018年09月18日,1-4,[令和 5年5月12日検索],インターネット <URL:https://liliputing.com/bluestacks-4-released-with-promise-of-speedier-android-app-performance-on-pcs/>
【文献】Raul Rosso,Bluestacks 4.40 significantly improves performance and adds a media manager,uptodown.com,2019年01月22日,1-3,[令和 5年5月12日検索],インターネット <URL:https://blog.en.uptodown.com/bluestacks-4-40-update-media-manger/>
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/50
A63F 13/70
(57)【特許請求の範囲】
【請求項1】
ゲーミングアプリケーションによって実現されるゲーム内で得られることが可能な仮想財産であるゲーム内リソースをファーミングする期間においてコンピュータシステムのリソースの利用を最適化する方法であって、
システムが、コンピュータシステムにおいてゲーミングアプリケーションの実行中のインスタンスに関連付けられた
、プレイ中のゲームの状態を切り替えるイベントを検出するステップ
であって、前記検出されたプレイ中のゲームの状態を切り替えるイベントは、前記ゲーミングアプリケーションの実行中のインスタンス内でのプレイ中のゲームの変化を表し、前記プレイ中のゲームの変化は、非リソースファーミングゲームプレイ状態からリソースファーミングゲームプレイ状態への、前記ゲーミングアプリケーションの実行中のインスタンスのプレイ中のゲームの状態の変化である、ステップと、
前記システムが、前記プレイ中のゲームの状態を切り替えるイベントの検出に応じて、前記ゲーミングアプリケーションの実行中のインスタンスにおける非リソースファーミングゲーミングアプリケーションモードの実行から、前記ゲーミングアプリケーションの実行中のインスタンスにおけるリソースファーミングゲーミングアプリケーションモードの実行への、切り替えを行うステップと、を含み、
前記リソースファーミングゲーミングアプリケーションモードの実行は、前記非リソースファーミングゲーミングアプリケーションモードの実行よりも、エネルギーの効率が高く、または、より少ないコンピュータのリソースを消費し、
前記リソースファーミングゲーミングアプリケーションモードの実行は、ゲーミングアプリケーション実行パラメータの第1のセットを、前記ゲーミングアプリケーションの実行中のインスタンスに、適用することを含み、
前記非リソースファーミングゲーミングアプリケーションモードの実行は、ゲーミングアプリケーション実行パラメータの第2のセットを、前記ゲーミングアプリケーションの実行中のインスタンスに、適用することを含み、
前記ゲーミングアプリケーション実行パラメータの第1のセットは、前記ゲーミングアプリケーション実行パラメータの第2のセットでは実行されず動作可能にされないリソース最適化技術のセットを、実行するために選択され、
前記ゲーミングアプリケーション実行パラメータの第1のセットで実行される前記リソース最適化技術のセットは、前記ゲーミングアプリケーションの実行中のインスタンスが、前記ゲーミングアプリケーションの前記インスタンスを再起動することなく、又は、前記ゲーミングアプリケーションの前記インスタンスが実行中である仮想マシン環境又はオペレーティングシステムのエミュレータを再起動することなく、前記リソースファーミングゲーミングアプリケーションモードから前記非リソースファーミングゲーミングアプリケーションモードへの切り替えが必要であるか否かの判断に基づいて選択され、
前記ゲーミングアプリケーションの実行中のインスタンスが、前記ゲーミングアプリケーションの前記インスタンスを再起動することなく、又は、前記ゲーミングアプリケーションの前記インスタンスが実行中である仮想マシン環境又はオペレーティングシステムのエミュレータを再起動することなく、前記リソースファーミングゲーミングアプリケーションモードから前記非リソースファーミングゲーミングアプリケーションモードへの切り替えが必要であると判断する場合、前記ゲーミングアプリケーション実行パラメータの第1のセットで実行される前記リソース最適化技術のセットは、リソース最適化技術の第1のセットであり、
前記ゲーミングアプリケーションの実行中のインスタンスが、前記ゲーミングアプリケーションの前記インスタンスの再起動を伴う、又は、前記ゲーミングアプリケーションの前記インスタンスが実行中である仮想マシン環境又はオペレーティングシステムのエミュレータの再起動を伴う、前記リソースファーミングゲーミングアプリケーションモードから前記非リソースファーミングゲーミングアプリケーションモードへの切り替えが可能であると判断する場合、前記ゲーミングアプリケーション実行パラメータの第1のセットで実行される前記リソース最適化技術のセットは、リソース最適化技術の第2のセットであり、
前記リソース最適化技術の第1のセットは、前記リソース最適化技術の第2のセットによって可能とされるリソース利用最適化の程度よりも低いリソース利用最適化の程度を可能にする、
方法。
【請求項2】
前記ゲーミングアプリケーション実行パラメータの第1のセットで実行されるリソース最適化技術は、仮想中央処理装置(vCPU)の割り当て、中央処理装置(CPU)の動作制限、フレームレートの低減、ランダムアクセスメモリ(RAM)のリクレーム、グラフィックスのスケーリング、グラフィックス処理装置(GPU)のスイッチング、オーディオのスケーリング、および/または、オーディオのミューティングのいずれかを含む、
請求項1に記載の方法。
【請求項3】
前記
リソースファーミングゲーミングアプリケーションモードにおいて、前記ゲーミングアプリケーションの前記実行中のインスタンスが特定のスレッド名を有するスレッドを生成したことの検出に応じて、
前記ゲーミングアプリケーションの前記実行中のインスタンスに対応する独立したオーディオループを特定し、
前記特定された独立したオーディオループを低減またはミュートする、
請求項1に記載の方法。
【請求項4】
前記
リソースファーミングゲーミングアプリケーションモードにおいて、前記ゲーミングアプリケーションの前記実行中のインスタンスに対応する特定のプロセススレッドの中でアプリケーションプログラムインタフェース(API)コールの特定のシーケンスを特定した場合であって、前記APIコールのシーケンスが、前記ゲーミングアプリケーションの前記実行中のインスタンスのためのゲーミングエンジン内のグラフィックススレッドに対応し、かつ、前記ゲーミングエンジン内の物理スレッドに対応しない場合、前記ゲーミングアプリケーションの前記実行中のインスタンスのフレームレートを低減する、
請求項1に記載の方法。
【請求項5】
前記
リソースファーミングゲーミングアプリケーションモードにおいて、前記ゲーミングアプリケーションの前記実行中のインスタンスが定期的な間隔でフルシーンフレームをレンダリングしていると判断した場合、前記ゲーミングアプリケーションの前記実行中のインスタンスに対応するフレームデータをダウンスケールするか、または保存せずに完全に破棄する、
請求項1に記載の方法。
【請求項6】
前記
リソースファーミングゲーミングアプリケーションモードにおいて、前記ゲーミングアプリケーションの前記実行中のインスタンスがシーンフレームを一度だけレンダリングしていると判断した場合、前記ゲーミングアプリケーションの前記実行中のインスタンスに対応するフレームデータのダウンスケーリングまたは廃棄は、ダウンスケーリングまたは廃棄の前に前記フレームデータの保存を伴う、
請求項1に記載の方法。
【請求項7】
ゲーミングアプリケーションによって実現されるゲーム内で得られることが可能な仮想財産であるゲーム内リソースをファーミングする期間においてコンピュータシステムのリソースの利用を最適化するシステムであって、少なくとも1つのメモリおよびプロセッサを含み、
コンピュータシステムにおいてゲーミングアプリケーションの実行中のインスタンスに関連付けられた
、プレイ中のゲームの状態を切り替えるイベントを検出し、
前記検出されたプレイ中のゲームの状態を切り替えるイベントは、前記ゲーミングアプリケーションの実行中のインスタンス内でのプレイ中のゲームの変化を表し、前記プレイ中のゲームの変化は、非リソースファーミングゲームプレイ状態からリソースファーミングゲームプレイ状態への、前記ゲーミングアプリケーションの実行中のインスタンスのプレイ中のゲームの状態の変化であり、
前記プレイ中のゲームの状態を切り替えるイベントの検出に応じて、前記ゲーミングアプリケーションの実行中のインスタンスにおける非リソースファーミングゲーミングアプリケーションモードの実行から、前記ゲーミングアプリケーションの実行中のインスタンスにおけるリソースファーミングゲーミングアプリケーションモードの実行への、切り替えを行い、
前記リソースファーミングゲーミングアプリケーションモードの実行は、前記非リソースファーミングゲーミングアプリケーションモードの実行よりも、エネルギーの効率が高く、または、より少ないコンピュータのリソースを消費し、
前記リソースファーミングゲーミングアプリケーションモードの実行は、ゲーミングアプリケーション実行パラメータの第1のセットを、前記ゲーミングアプリケーションの実行中のインスタンスに、適用することを含み、
前記非リソースファーミングゲーミングアプリケーションモードの実行は、ゲーミングアプリケーション実行パラメータの第2のセットを、前記ゲーミングアプリケーションの実行中のインスタンスに、適用することを含み、
前記ゲーミングアプリケーション実行パラメータの第1のセットは、前記ゲーミングアプリケーション実行パラメータの第2のセットでは実行されず動作可能にされないリソース最適化技術のセットを、実行するために選択され、
前記ゲーミングアプリケーション実行パラメータの第1のセットで実行される前記リソース最適化技術のセットは、前記ゲーミングアプリケーションの実行中のインスタンスが、前記ゲーミングアプリケーションの前記インスタンスを再起動することなく、又は、前記ゲーミングアプリケーションの前記インスタンスが実行中である仮想マシン環境又はオペレーティングシステムのエミュレータを再起動することなく、前記リソースファーミングゲーミングアプリケーションモードから前記非リソースファーミングゲーミングアプリケーションモードへの切り替えが必要であるか否かの判断に基づいて選択され、
前記ゲーミングアプリケーションの実行中のインスタンスが、前記ゲーミングアプリケーションの前記インスタンスを再起動することなく、又は、前記ゲーミングアプリケーションの前記インスタンスが実行中である仮想マシン環境又はオペレーティングシステムのエミュレータを再起動することなく、前記リソースファーミングゲーミングアプリケーションモードから前記非リソースファーミングゲーミングアプリケーションモードへの切り替えが必要であると判断する場合、前記ゲーミングアプリケーション実行パラメータの第1のセットで実行される前記リソース最適化技術のセットは、リソース最適化技術の第1のセットであり、
前記ゲーミングアプリケーションの実行中のインスタンスが、前記ゲーミングアプリケーションの前記インスタンスの再起動を伴う、又は、前記ゲーミングアプリケーションの前記インスタンスが実行中である仮想マシン環境又はオペレーティングシステムのエミュレータの再起動を伴う、前記リソースファーミングゲーミングアプリケーションモードから前記非リソースファーミングゲーミングアプリケーションモードへの切り替えが可能であると判断する場合、前記ゲーミングアプリケーション実行パラメータの第1のセットで実行される前記リソース最適化技術のセットは、リソース最適化技術の第2のセットであり、
前記リソース最適化技術の第1のセットは、前記リソース最適化技術の第2のセットによって可能とされるリソース利用最適化の程度よりも低いリソース利用最適化の程度を可能にする、
システム。
【請求項8】
前記プレイ中のゲームの状態を切り替えるイベントを検出することは、検索されたゲーム設定、仮想マシン環境の設定、オペレーティングシステムの設定、オペレーティングシステムのエミュレータの設定、受信されたゲームプレイヤーの入力、ゲームプレイのアクション(複数可)、またはゲームプレイの結果のいずれかに基づいて行われる、
請求項
7に記載のシステム。
【請求項9】
前記ゲーミングアプリケーション実行パラメータの第1のセットで実行されるリソース最適化技術は、仮想中央処理装置(vCPU)の割り当て、中央処理装置(CPU)の動作制限、フレームレートの低減、ランダムアクセスメモリ(RAM)のリクレーム、グラフィックスのスケーリング、グラフィックス処理装置(GPU)のスイッチング、オーディオのスケーリング、および/または、オーディオのミューティングのいずれかを含む、
請求項
7に記載のシステム。
【請求項10】
前記
リソースファーミングゲーミングアプリケーションモードにおいて、前記ゲーミングアプリケーションの前記実行中のインスタンスが特定のスレッド名を有するスレッドを生成したことの検出に応じて、
前記ゲーミングアプリケーションの前記実行中のインスタンスに対応する独立したオーディオループを特定し、
前記特定された独立したオーディオループを低減またはミュートする、
請求項
7に記載のシステム。
【請求項11】
前記
リソースファーミングゲーミングアプリケーションモードにおいて、前記ゲーミングアプリケーションの前記実行中のインスタンスに対応する特定のプロセススレッドの中でアプリケーションプログラムインタフェース(API)コールの特定のシーケンスを特定した場合であって、前記APIコールのシーケンスが、前記ゲーミングアプリケーションの前記実行中のインスタンスのためのゲーミングエンジン内のグラフィックススレッドに対応し、かつ、前記ゲーミングエンジン内の物理スレッドに対応しない場合、前記ゲーミングアプリケーションの前記実行中のインスタンスのフレームレートを低減する、
請求項
7に記載のシステム。
【請求項12】
前記
リソースファーミングゲーミングアプリケーションモードにおいて、前記ゲーミングアプリケーションの前記実行中のインスタンスが定期的な間隔でフルシーンフレームをレンダリングしていると判断した場合、前記ゲーミングアプリケーションの前記実行中のインスタンスに対応するフレームデータをダウンスケールするか、または保存せずに完全に破棄する、
請求項
7に記載のシステム。
【請求項13】
前記
リソースファーミングゲーミングアプリケーションモードにおいて、前記ゲーミングアプリケーションの前記実行中のインスタンスがシーンフレームを一度だけレンダリングしていると判断した場合、前記ゲーミングアプリケーションの前記実行中のインスタンスに対応するフレームデータのダウンスケーリングまたは廃棄は、ダウンスケーリングまたは廃棄の前に前記フレームデータの保存を伴う、
請求項
7に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ゲーム技術に関する。特には、本発明は、ゲーム内のリソースをファーミングする(in-game resource farming)期間においてコンピュータシステムのリソースの利用を最適化する方法、システムおよびコンピュータプログラム製品に関する。
【背景技術】
【0002】
本発明の目的のために、「ゴールドファーミング」(gold farming)または「リソースをファーミングする」(resource farming:リソースファーミング)という用語は、互換的に使用でき、それぞれ、オンラインゲーム内の、仮想財産(virtual resources:仮想リソース)、仮想通貨、経験ポイントまたは商品を、ゲーム内の通貨またはリアルマネーで、取引、物々交換するために、収集して販売する作業を表す。
【0003】
大規模多人数同時参加型オンラインRPG(Massively Multiplayer Online Role Playing Games:MMORPG)の着実な成長は、リソースファーミングが広く行われることの一因となっている。簡単に説明すると、リソースファーミングは、以下の事実を前提とする。オンラインゲームにおいて、ゲーム内通貨、希少な商品、経験値、強力な武器、その他入手困難な仮想アーティファクト(virtual artefacts:仮想人工物)などの仮想商品を手に入れるには、一部のゲームプレイヤーは、多大な時間を費やす必要があり、一方、そのようなリソースは、他のゲームプライヤーから、取引、購入または交換を通じて入手できるという事実。リソースファーミングは、現実世界のお金を得るために、仮想のゲーム内のリソースを収集して販売することを含む作業を表す。「リソースファーミング」という用語は、価値のある仮想リソース(virtual resources:仮想財産)または価値のある仮想アーティファクトを集めるための様々なタイプの反復的な行動または作業を表す。ファーミング(入手する作業)を行っているゲームプレイヤーは、価値のある仮想リソースまたは価値のある仮想アーティファクトを、他のゲームプレイヤー(例えば、彼ら自身のゲーム内のリソースを集めるための時間またはイニシアチブを持たないゲームプレイヤー)に、ゲーム外でのリアルマネー取引を含め、販売可能である。
【0004】
時間の経過とともに、リソースファーミングは、逸脱した望ましくないゲーム戦略とみなされていたものから、ゲーム内の経済において容認された価値あるものへと、変わっている。これは、ゲームプレイヤーが、リソースファーミングを行う者からゲーム内のリソースを購入することで、ゲームプレイヤーのゲーム内のキャラクターを、レベルアップ、または、そうでなければ強化することを可能にし、それによって、ゲームプレイヤー自身用のリソースを入手(ファーミング)するために専念される必要がある大量の時間の消費を避けられるので、ゲームへの関心を高め維持できるからである。一部のゲームは、今でも、オートプレイモードを有する。オートプレイモードでは、ゲームプレイヤーのキャラクターは、ゲームプレイヤーから殆どまたは全く監視されていない状況下で、自動的にバトルを行い、ゲーム内の経験値、および/または、仮想リソースまたは仮想アーティファクトを獲得する。本格的なゲーマーは、一般的に、多くのアカウントを作成し、何らかのレアな(そしてランダムな)アーティファクトを見つけることを目指して、多くのアカウントを用いてゲームを行い、当該アーティファクトは、その後、ゲームプレイヤーに関連付けられた複数のアカウントから1つのプライマリーアカウントに集約可能である。
【0005】
クロスオペレーティングシステムベースの仮想マシン環境は、ゲーム内のリソースをファーミング(入手)することに対して、ある予想外の利点をもたらすことがわかっている。クロスオペレーティングシステムベースの仮想マシン環境は、第1のオペレーティングシステム(例えばAndroidOS)用に開発されたアプリケーションを、ホストオペレーティングシステムとして第2のオペレーティングシステム(例えば、macOS(登録商標)またはWindows(登録商標)オペレーティングシステム)を搭載したマシンで実行できるシステム環境である。
【0006】
このような環境(例えば、コンピュータデバイス用のBlueStacks(登録商標) AndroidOSエミュレータ)でゲームをプレイする直接的な利点は、プレイヤーが、デスクトップまたはラップトップなどのコンピュータデバイスに実装された仮想マシン環境内でAndroidゲームを起動し、当該ゲームをオートプレイモードまたはリソースファーミングモードにし、同じデバイスで他のタスクを続行し、定期的にエミュレータまたは仮想マシン環境をチェックしてゲームの進捗状況を確認できることである。AndroidOSを搭載したモバイル機器でこの作業を行うと、バッテリー、ネットワーク、CPUおよびメモリなどのリソースを消費し、他の生産的な作業にモバイル機器を利用できない。しかし、ラップトップのコンピュータデバイスでは、ユーザは、仮想マシン環境の複数のインスタンスの中で1つのゲームの複数のインスタンスを起動し、ゲームの各インスタンスをオートプレイモードまたはリソースファーミングモードにし、それにより、ゲームの複数のインスタンスを同時にファーミングモードまたはオートプレイモードで動作させて、実時間の単位時間当たりのリターンを増やすことができる。一般的なモバイル機器では、Androidゲームの複数のインスタンスを同時に実行するための処理リソースが不足しているため、モバイル機器では、このようなことはできない。
【0007】
モバイル機器以外の機器においてリソースファーミングモードでゲームを実行するオプションがあったとしても、ラップトップまたはデスクトップなどのコンピュータデバイスで、リソースを多く使う複数のゲームの複数のインスタンスを実行すると、システムリソースのかなりの部分が消費されてしまい、その結果、当該コンピュータデバイスで、他のコンピューティングタスクを同時に実行したり他の生産性のある関連のタスクを同時に実行したりすることができなくなったり、当該コンピュータデバイスを無駄にしてしまうことがわかっている。
【0008】
そのため、ゲーム内のリソースをファーミングする期間においてコンピュータシステムのリソースの利用を最適化するソリューションが求められている。
【発明の概要】
【0009】
ゲーム内のリソースをファーミングする期間においてコンピュータシステムのリソースの利用を最適化するための方法、システム、コンピュータプログラム製品を提供する。
【0010】
一実施形態では、本発明は、ゲーム内のリソースをファーミングする期間においてコンピュータシステムのリソースの利用を最適化する方法を含む。本方法は、(1)コンピュータシステムにおいてゲーミングアプリケーションの実行中のインスタンスに関連付けられたゲームプレイ状態を検出するステップと、(2)複数の利用可能なゲーミングアプリケーションモードの中からゲーミングアプリケーションモードを選択するステップであって、前記ゲーミングアプリケーションモードの選択は、前記検出されたゲームプレイ状態に基づいて行われるステップと、(3)前記選択されたゲーミングアプリケーションモードを、前記コンピュータシステムでの前記ゲーミングアプリケーションのその後の実行のために実行するステップと、を含む。前記検出されたゲームプレイ状態が、リソースファーミングゲームプレイ状態またはオートゲームプレイ状態のいずれかを含む場合、前記選択されたゲーミングアプリケーションモードは、第1のゲーミングアプリケーションモードを含む。前記検出されたゲームプレイ状態が、非リソースファーミングゲームプレイ状態またはアクティブゲームプレイ状態を含む場合、前記選択されたゲーミングアプリケーションモードは、第2のゲーミングアプリケーションモードを含む。前記第1のゲーミングアプリケーションモードは、前記第2のゲーミングアプリケーションモードよりも、エネルギーの効率が高く、または、コンピュータのリソースの効率が高く、または、より少ないコンピュータのリソースを消費してもよい。
【0011】
本方法の一実施形態では、前記ゲームプレイ状態を検出することは、検索されたゲーム設定、仮想マシン環境の設定、オペレーティングシステムの設定、オペレーティングシステムのエミュレータの設定、受信されたゲームプレイヤーの入力、ゲームプレイのアクション(複数可)、または、ゲームプレイの結果のいずれかに基づいて行われる。
【0012】
さらなる実施形態では、(1)前記第1のゲーミングアプリケーションモードおよび前記第2のゲーミングアプリケーションモードのそれぞれは、ゲーミングアプリケーション実行パラメータの離散的なセットを含み、(2)前記第1のゲーミングアプリケーションモードに対応するゲーミングアプリケーション実行パラメータの第1のセットは、前記第2のゲーミングアプリケーションモードに対応するゲーミングアプリケーション実行パラメータの第2のセットと異なる。
【0013】
本方法の特定の実施形態において、前記ゲーミングアプリケーション実行パラメータの第1のセットは、前記ゲーミングアプリケーション実行パラメータの第2のセットによって有効化されていない、前記ゲーミングアプリケーションの前記インスタンスを実行するための1つまたは複数のリソース最適化技術の実行を可能にし、前記リソース最適化技術は、仮想中央処理装置(vCPU)の割り当て、中央処理装置(CPU)の動作制限、フレームレートの低減、ランダムアクセスメモリ(RAM)のリクレーム(reclaim:回収)、グラフィックスのスケーリング、グラフィックス処理装置(GPU)のスイッチング、オーディオのスケーリング、および/または、オーディオのミューティングのいずれかを含む。
【0014】
本方法の一実施形態では、前記複数の利用可能なゲーミングアプリケーションモードの中から前記ゲーミングアプリケーションモードを選択することは、さらに、前記ゲーミングアプリケーションの前記インスタンスを再起動することなく又は前記ゲーミングアプリケーションの前記インスタンスが実行されている仮想マシン環境もしくはオペレーティングシステムのエミュレータを再起動することなくリソースファーミングゲーミングアプリケーションモードと非リソースファーミングゲーミングアプリケーションモードとを切り替えることを、前記ゲーミングアプリケーションの前記実行中のインスタンスが必要とするか否か、の判断に基づいて行われる。
【0015】
特定の方法の実施形態では、前記第1のゲーミングアプリケーションモードにおいて、前記ゲーミングアプリケーションの前記実行中のインスタンスが、特定のスレッド名を有するスレッドを生成したことの検出に応じて、(1)前記ゲーミングアプリケーションの前記実行中のインスタンスに対応する独立したオーディオループを特定し、(2)前記特定された独立したオーディオループを低減またはミュートする。
【0016】
さらなる方法の実施形態では、前記第1のゲーミングアプリケーションモードにおいて、前記ゲーミングアプリケーションの前記実行中のインスタンスに対応する特定のプロセススレッドの中でアプリケーションプログラムインタフェース(API)コールの特定のシーケンスを特定した場合であって、前記APIコールのシーケンスが、前記ゲーミングアプリケーションの前記実行中のインスタンスのためのゲーミングエンジン内のグラフィックススレッドに対応し、かつ、前記ゲーミングエンジン内の物理スレッドに対応しない場合、前記ゲーミングアプリケーションの前記実行中のインスタンスのフレームレートを低減する。
【0017】
別の方法の実施形態では、前記第1のゲーミングアプリケーションモードにおいて、前記ゲーミングアプリケーションの前記実行中のインスタンスが定期的な間隔でフルシーンフレームをレンダリングしていると判断した場合、前記ゲーミングアプリケーションの前記実行中のインスタンスに対応するフレームデータをダウンスケールするか、または、保存せずに完全に破棄する。
【0018】
特定の方法の実施形態では、前記第1のゲーミングアプリケーションモードにおいて、前記ゲーミングアプリケーションの前記実行中のインスタンスがシーンフレームを一度だけレンダリングしていると判断した場合、前記ゲーミングアプリケーションの前記実行中のインスタンスに対応するフレームデータのダウンスケーリングまたは廃棄は、ダウンスケーリングまたは廃棄の前に、前記フレームデータの保存を伴う。
【0019】
本発明は、さらに、ゲーム内のリソースをファーミングする期間においてコンピュータシステムのリソースの利用を最適化するシステムであって、少なくとも1つのメモリおよびプロセッサを含むシステムを提供する。本システムは、(1)コンピュータシステムにおいてゲーミングアプリケーションの実行中のインスタンスに関連付けられたゲームプレイ状態を検出し、(2)複数の利用可能なゲーミングアプリケーションモードの中からゲーミングアプリケーションモードを選択し、前記ゲーミングアプリケーションモードの選択は、前記検出されたゲームプレイ状態に基づいて行われ、(3)前記選択されたゲーミングアプリケーションモードを、前記コンピュータシステムでの前記ゲーミングアプリケーションのその後の実行のために実行する、ように構成されてもよい。あるシステム構成では、前記検出されたゲームプレイ状態が、リソースファーミングゲームプレイ状態またはオートゲームプレイ状態のいずれかを含む場合、前記選択されたゲーミングアプリケーションモードは、第1のゲーミングアプリケーションモードを含む。本システムは、さらに、前記検出されたゲームプレイ状態が、非リソースファーミングゲームプレイ状態またはアクティブゲームプレイ状態を含む場合、前記選択されたゲーミングアプリケーションモードは、第2のゲーミングアプリケーションモードを含むように構成されてもよい。さらに、本システム構成は、前記第1のゲーミングアプリケーションモードが、前記第2のゲーミングアプリケーションモードよりも、エネルギーの効率が高く、または、コンピュータのリソースの効率が高く、またはより少ないコンピュータのリソースを消費してもよい。
【0020】
一実施形態では、本システムは、前記ゲームプレイ状態を検出することが、検索されたゲーム設定、仮想マシン環境の設定、オペレーティングシステムの設定、オペレーティングシステムのエミュレータの設定、受信されたゲームプレイヤーの入力、ゲームプレイのアクション(複数可)、またはゲームプレイの結果のいずれかに基づくように構成されてもよい。
【0021】
別の実施形態では、本システムは、(1)前記第1のゲーミングアプリケーションモードおよび前記第2のゲーミングアプリケーションモードのそれぞれが、ゲーミングアプリケーション実行パラメータの離散的なセットを含み、(2)前記第1のゲーミングアプリケーションモードに対応するゲーミングアプリケーション実行パラメータの第1セットが、前記第2のゲーミングアプリケーションモードに対応するゲーミングアプリケーション実行パラメータの第2のセットと異なるように構成されてもよい。
【0022】
さらなる実施形態では、本システムは、前記ゲーミングアプリケーション実行パラメータの第1のセットが、前記ゲーミングアプリケーション実行パラメータの第2のセットによって有効化されていない、前記ゲーミングアプリケーションの前記インスタンスを実行するための1つまたは複数のリソース最適化技術の実行を可能にするように構成されてもよく、前記リソース最適化技術は、仮想中央処理装置(vCPU)の割り当て、中央処理装置(CPU)の動作制限、フレームレートの低減、ランダムアクセスメモリ(RAM)のリクレーム、グラフィックスのスケーリング、グラフィックス処理装置(GPU)のスイッチング、オーディオのスケーリング、および/または、オーディオのミューティングのいずれかを含む。
【0023】
特定の実施形態では、本システムは、前記複数の利用可能なゲーミングアプリケーションモードの中からゲーミングアプリケーションモードを選択することが、さらに、前記ゲーミングアプリケーションの前記インスタンスを再起動することなく又は前記ゲーミングアプリケーションの前記インスタンスが実行されている仮想マシン環境もしくはオペレーティングシステムのエミュレータを再起動することなくリソースファーミングゲーミングアプリケーションモードと非リソースファーミングゲーミングアプリケーションモードとを切り替えることを、前記ゲーミングアプリケーションの前記実行中のインスタンスが必要とするか否か、の判断に基づくように構成されてもよい。
【0024】
本システムは、前記第1のゲーミングアプリケーションモードにおいて、前記ゲーミングアプリケーションの前記実行中のインスタンスが特定のスレッド名を有するスレッドを生成したことの検出に応じて、(1)前記ゲーミングアプリケーションの前記実行中のインスタンスに対応する独立したオーディオループを特定し、(2)前記特定された独立したオーディオループが低減またはミュートするように構成されてもよい。
【0025】
特定のシステム構成では、前記第1のゲーミングアプリケーションモードにおいて、前記ゲーミングアプリケーションの前記実行中のインスタンスに対応する特定のプロセススレッドの中でアプリケーションプログラムインタフェース(API)コールの特定のシーケンスを特定した場合であって、前記APIコールのシーケンスが、前記ゲーミングアプリケーションの前記実行中のインスタンスのためのゲーミングエンジン内のグラフィックススレッドに対応し、かつ、前記ゲーミングエンジン内の物理スレッドに対応しない場合、前記ゲーミングアプリケーションの前記実行中のインスタンスのフレームレートを低減する。
【0026】
さらなるシステム構成では、前記第1のゲーミングアプリケーションモードにおいて、前記ゲーミングアプリケーションの前記実行中のインスタンスが定期的な間隔でフルシーンフレームをレンダリングしていると判断した場合、前記ゲーミングアプリケーションの前記実行中のインスタンスに対応するフレームデータをダウンスケールするか、または保存せずに完全に破棄する。
【0027】
本システムの特定の実施形態では、前記第1のゲーミングアプリケーションモードにおいて、前記ゲーミングアプリケーションの前記実行中のインスタンスがシーンフレームを一度だけレンダリングしていると判断した場合、前記ゲーミングアプリケーションの前記実行中のインスタンスに対応するフレームデータのダウンスケーリングまたは廃棄は、ダウンスケーリングまたは廃棄の前に、フレームデータの保存を伴う。
【0028】
本発明は、さらに、ゲーム内のリソースをファーミングする期間においてコンピュータシステムのリソース利用を最適化するためのコンピュータプログラム製品を提供する。本コンピュータプログラム製品は、その中に含まれるコンピュータ読取可能なプログラムコードを有する非一時的なコンピュータ使用可能媒体を含む。前記コンピュータ読取可能なプログラムコードは、(1)コンピュータシステムにおいてゲーミングアプリケーションの実行中のインスタンスに関連付けられたゲームプレイ状態を検出するステップと、(2)複数の利用可能なゲーミングアプリケーションモードの中からゲーミングアプリケーションモードを選択するステップであって、前記ゲーミングアプリケーションモードの選択は、前記検出されたゲームプレイ状態に基づくステップと、(3)前記選択されたゲーミングアプリケーションモードを、前記コンピュータシステムでの前記ゲーミングアプリケーションのその後の実行のために実行するステップと、をプロセッサに実行させるための命令を含む。前記検出されたゲームプレイ状態が、リソースファーミングゲームプレイ状態またはオートゲームプレイ状態のいずれかを含む場合、前記選択されたゲーミングアプリケーションモードは、第1のゲーミングアプリケーションモードを含む。前記検出されたゲームプレイ状態が、非リソースファーミングゲームプレイ状態またはアクティブゲームプレイ状態を含む場合、前記選択されたゲーミングアプリケーションモードは、第2のゲーミングアプリケーションモードを含む。前記第1のゲーミングアプリケーションモードは、前記第2のゲーミングアプリケーションモードよりも、エネルギーの効率が高く、または、コンピュータのリソースの効率が高く、または、より少ないコンピュータのリソースを消費してもよい。
【図面の簡単な説明】
【0029】
【
図1】ホストオペレーティングシステム内でゲストオペレーティングシステムを実行するように構成されたアプリケーションプレイヤーの実行のために構成された、コンピュータに実装された例示的なアーキテクチャを示す。
【0030】
【
図2】ゲーム内のリソースをファーミングする期間において、実行中の1つまたは複数のゲーミングアプリケーションのインスタンス内のコンピュータシステムのリソースの利用を最適化するために使用できるコンピュータシステムの一例を示す。
【0031】
【
図3】検出されたゲームプレイの状態に基づいて、ゲーミングアプリケーションの実行中のインスタンスに、ゲーミングアプリケーションモードを選択的に適用する方法を示すフローチャートである。
【0032】
【
図4】検出されたゲームプレイの状態に基づいて、ゲーミングアプリケーションの実行中のインスタンスに、リソースファーミングゲーミングアプリケーションモードを選択的に適用する方法を示すフローチャートである。
【0033】
【
図5】検出されたゲームプレイの状態に基づいて、ゲーミングアプリケーションの実行中のインスタンスに、非リソースファーミングゲーミングアプリケーションモードを選択的に適用する方法を示すフローチャートである。
【0034】
【
図6】ゲーミングアプリケーションの実行中のインスタンスにおいて、非リソースファーミングゲームプレイ状態からリソースファーミングゲームプレイ状態に切り替える方法を示すフローチャートである。
【0035】
【
図7】ゲーミングアプリケーションの実行中のインスタンスにおいて、リソースファーミングゲームプレイ状態から非リソースファーミングゲームプレイ状態に切り替える方法を示すフローチャートである。
【0036】
【
図8】リソースファーミングゲーミングアプリケーションモードを実行するためのリソース最適化技術のセットを選択する方法を示すフローチャートである。
【0037】
【
図9】本発明の開示に従って構成されたリソース最適化コントローラを示す図である。
【0038】
【
図10】ホストオペレーティングシステム内でゲストオペレーティングシステム用に構成されたアプリケーションソフトウェアを実行するように構成された、コンピュータに実装されたアーキテクチャ内に実装されるリソース最適化コントローラの具体的な構成を示している。
【0039】
【
図11】本発明を実行可能な例示的なコンピュータシステムを示す。
【発明を実施するための形態】
【0040】
本発明は、ゲーム内のリソースをファーミングする期間において、コンピュータシステムのリソースの使用の最適化を可能にする。
【0041】
図1は、アプリケーションプレイヤーの実行のために構成された、コンピュータに実装されたアーキテクチャの例示的なシステムを示し、アプリケーションプレイヤーは、ホストオペレーティングシステム内でゲストオペレーティングシステムを実行するように構成されている。
【0042】
図1に示されたシステム100は、コンピュータシステム100に実装されたホストオペレーティングシステム108内で、ゲストオペレーティングシステム用に書かれたソフトウェアプログラム(例えば、仮想マシンプログラム)の実行を可能にするように構成された、コンピュータシステムアーキテクチャである。図示されたコンピュータシステムアーキテクチャは、ゲストオペレーティングシステムアーキテクチャ1060(この例では、Androidアーキテクチャ)と、ホストオペレーティングシステムアーキテクチャ108(例えば、Windows/OS Xアーキテクチャ)と、を含む。
【0043】
図1に示されるAndroidアーキテクチャ1060は、仮想オペレーティングシステムを表しており、当該仮想オペレーティングシステムは、ゲストOS1060を実装できるハードウェアアーキテクチャをエミュレートするように構成されたホストOSソフトウェアアプリケーション106を実行することによって起動される。ホストOSソフトウェアアプリケーション106は、仮想ソフトウェアまたはハイパーバイザとも称される。ハイパーバイザ106を実行すると、ゲストオペレーティングシステム1060、例えば、AndroidOSをエンドユーザに透過的な方法で実行可能な仮想マシンのインスタンスが作成される。
【0044】
ゲストOS/AndroidOS1060は、アプリケーションプログラム層1062、アプリケーションフレームワーク層1064、ライブラリ層1066、ハードウェア抽象化層(HAL)1068、およびカーネル層1070のうちの1つまたは複数を含むソフトウェアスタックを含むことができる。アプリケーション層1062は、様々なソフトウェアアプリケーションを含む。アプリケーションフレームワーク層1064は、開発者がフレームワークアプリケーションプログラミングインタフェース(API)にアクセスし、リソースの割り当て、プロセスまたはプログラムの切り替え、電話アプリケーション、電話/ラップトップ/タブレットの物理的な位置の把握など、Androidが実行されるモバイルデバイス、ラップトップ、またはタブレットの基本的な機能を管理するために使用される。アプリケーションフレームワーク層1064は、アクティビティマネージャ、ウィンドウマネージャ、コンテンツプロバイダマネージャ、ビューシステムマネージャ、パッケージマネージャ、テレフォニーマネージャ、リソースマネージャ、ロケーションマネージャ、および通知マネージャを含む様々なマネージャを含むことができる。
【0045】
ライブラリ層1066は、例えばCやC++などで書かれたライブラリを含み、様々なシステムで利用される。当該ライブラリは、Androidを実行するデバイスに対して、異なる種類のデータをどのように扱うかを指示し、アプリケーションフレームワークを介してAndroid開発者に公開される。ライブラリは、例えば、サーフェイスマネージャー、メディアフレームワークライブラリ、SQLiteライブラリ、Open GL/ESライブラリ、Free Typeライブラリ、WebKitライブラリ、SGLライブラリ、SSLライブラリ、およびlibcライブラリを含んでもよい。
【0046】
ハードウェア抽象化層1068は、Androidプラットフォームスタックと、下層のハードウェアと、の間にソフトウェアフック(ソフトウェアコンポーネント間で渡される関数呼び出しまたはメッセージまたはイベントを傍受することで、オペレーティングシステム、アプリケーションまたは他のソフトウェアコンポーネントの動作を変更または拡張するために使用されるコード)を作成するための標準的な方法を提供する。ハードウェア抽象化層1068は、ハードウェアと、ソフトウェアスタックの残りの部分と、の間の抽象化層としても機能する。
【0047】
Linuxカーネル層1070は、Androidのメモリ管理プログラム、セキュリティ設定、電源管理ソフトウェアおよび複数のドライバを含み、当該複数のドライバは、ハードウェア、ファイルシステムアクセス、ネットワークおよびプロセス間通信のための、デバイスドライバなどである。
【0048】
一般的には、動作において、AndroidOSソフトウェアアプリケーションからハードウェアデバイス(例えば、オーディオデバイスまたはディスプレイデバイス)への命令は、対応するカーネル内のハードウェアデバイスドライバにルーティングされ、当該ドライバは、その後、受信した命令に基づいて、ハードウェアデバイスの動作を制御する。ただし、
図1に示される例では、AndroidOS1060は、ホストOS108内から起動されているため、AndroidOS1060は、ホストOS108内でプロセスまたは複数のプロセスとして実行される。このようなデバイスにおいてAndroidアプリケーションがLinuxドライバを介してハードウェアにアクセスしようとするいかなる試みも、そのようなアクセスがホストOS108の範囲外であるため、ホストOS108に対して無意味である。したがって、Androidアプリケーションからのデータ要求または命令は、HAL1068からLinuxカーネル1070に(
図1においてクロスの印が付された通信リンクで示されるように)送信されず、Linuxカーネルのハードウェアデバイスドライバ1072は、結果的にハードウェアの意図しない状態または誤動作を引き起こす可能性がある当該要求または命令を実行できない。
【0049】
代わりに、そのような要求または命令は、アプリケーションフレームワーク層1064、ライブラリ層1066、HAL1068およびデータチャネル、のうちの1つまたは複数を介して、ホストOSアプリケーションプレイヤー1082にルーティングされる。当該データチャネルは、HAL1068とホストOSアプリケーションプレイヤー1082との間のデータチャネルである。当該データチャネルは、Androidアプリケーションからの要求または命令がホストOSアプリケーションプレイヤー1082に中継可能に構成されている。
【0050】
ホストOSアプリケーションプレイヤー1082は、ホストOS108に関連付けられたアプリケーションであり、ホストOS108は、ホストOS(例えば、Windows OS/OS X)に関連付けられたユーザモード層において、ホストOSプロセッサによって実行される。ゲストオペレーティングシステム/Android オペレーティングシステム1060のアプリケーションは、ホストOSアプリケーションプレイヤー1082を介して、ホストOSハードウェアデバイスドライバ(複数可)1084にアクセスでき、そして、当該ホストOSハードウェアデバイスドライバ(複数可)1084を介して、ハードウェアおよびホストOS108のシステムデータにアクセスできる。
【0051】
上述したように、
図1のアーキテクチャは、ワークステーション、電話機、デスクトップコンピュータ、ラップトップ、ノートブックコンピュータ、サーバ、ハンドヘルドコンピュータ、メディア再生装置、ゲームシステム、モバイルコンピューティング装置、または、通信可能な他のタイプおよび/または他のフォームのコンピューティング、テレコミュニケーションまたはメディア装置を含むいかなる装置に含まれてもよいが、これらに限定されない。
【0052】
本発明は、オートプレイモードまたはリソースファーミングモードで実行可能なゲーミングアプリケーションソフトウェアの実行のための最適化されたリソース利用モードを実行して、コンピュータデバイスが、コンピュータデバイスで実行される最適化されたリソース利用モードでゲーミングアプリケーションソフトウェアの1つまたは複数のインスタンスを同時に実行できるようにし、ユーザが他のデータ処理または生産性の高いタスクのためにコンピュータデバイスを同時に使用することを可能にする十分なデータ処理リソースの利用を確保する。
【0053】
本発明は、ゲーミングアプリケーションのインスタンスがオートプレイモードまたはリソースファーミングモードで実行されているとき、ゲーミングアプリケーションのインスタンスを実行しているゲームプレイヤーは、ゲームプレイ体験の迫真性または品質に過度に(または全く)関心がない、という前提に基づいて、この最適化されたリソース利用モードを実行する。代わりに、ゲームプレイヤーは、以下の2点に関心がある。(1)ゲームプレイキャラクターが、(ゲーミングアプリケーションに組み込まれたオートプレイまたはリソースファーミングの機能または制御に基づいて)オートプレイモードまたはリソースファーミングモードでゲームを進め続けること、および、ゲームプレイヤーがゲームプレイキャラクターのゲーム進捗を定期的に確認できること。(2)同時に実行されているゲームソフトウェアの各インスタンスが、データ処理リソース(例えば、プロセッサ時間およびメモリ)の消費の点において効率的な方法で実行されて、コンピュータデバイスで実行可能なゲームの同時実行のインスタンスの数を最大化すること、および/または、コンピュータデバイスが、ゲーム以外の生産性の高いタスク(例えば、ブラウジング、電子メール通信、ワードプロセッシング、マルチメディアタスクなど)のために同時に使用できることを保証すること。
【0054】
本発明により、コンピュータデバイスは、ゲーミングアプリケーションの当該インスタンスの内部ゲームプレイ状態が、ゴールドファーミング/リソースファーミング/オートプレイゲームプレイ状態(「リソースファーミングゲームプレイ状態」)であると判断したことに応答して、1つまたは複数のゲーミングアプリケーションソフトウェアの1つまたは好ましくは複数のインスタンスを、エネルギー効率およびリソース効率の良いモード(複数可)(「リソースファーミングモード(複数可)」)で実行できる。
【0055】
コンピュータデバイスで実行されているゲーミングアプリケーションのインスタンスが、リソースファーミングゲームプレイ状態であると判断すると、コンピュータデバイスは、ゲーミングアプリケーションの当該特定のインスタンスに1つまたは複数のリソース最適化技術を1突または複数という制限なしに適用することを含むリソースファーミングモードで、ゲーミングアプリケーションの当該インスタンスのさらなる実行を開始または創始するように構成されてよい。適用されるリソース最適化技術は、コンピュータデバイス上のゲーミングアプリケーションの当該特定のインスタンスによるハードウェアリソースの利用を低減するために、選択されることが理解される。本発明の一実施形態では、リソースファーミングゲームプレイ状態で実行されているゲーミングアプリケーションのインスタンスに適用されるリソース最適化手法は、ゲーミングアプリケーションの(またはゲーミングアプリケーションの当該特定のインスタンスの)デフォルトの実行設定によって割り当てられた、または、当該デフォルトの実行設定に関連付けられた、デフォルトのハードウェアまたは処理のリソースの利用設定とは異なる(そして好ましくは、より少なく/より効率的な)、ハードウェアまたは処理のリソースの(ゲーミングアプリケーションの当該インスタンスに対する)割り当てをもたらす。
【0056】
ゲーミングアプリケーションのインスタンスがリソースファーミングゲームプレイ状態であることを判断するステップは、様々な方法で実現できることが理解される。1つは、当該判断を、ゲームプレイヤーがゲーミングアプリケーション内に事前に設定されているオートプレイまたはリソースファーミングゲームプレイ状態を選択したかどうかに関する情報を、ゲーミングアプリケーションの実行中のインスタンスから照会または検索することに基づいて行うことである。また、ゲーミングアプリケーションのインスタンス内のゲームプレイのアクションまたは結果についてのルールベースまたは機械学習ベースの分析が、ゲーミングアプリケーションがリソースファーミングゲームプレイ状態であるか否かを判断するために使用されてもよい。
【0057】
逆に、ゲーミングアプリケーションの1つまたは複数のインスタンスが、非リソースファーミング(すなわち、アクティブ)ゲームプレイ状態で、コンピュータデバイスで実行されていると判断された場合、コンピュータデバイスは、非リソースファーミングモードで、ゲーミングアプリケーションの当該インスタンスを実行するように構成されてもよい。ここで、非リソースファーミングモードは、ゲーミングアプリケーション(またはゲーミングアプリケーションの特定インスタンス)のデフォルトの実行設定に従って、ゲーミングアプリケーションのインスタンスにハードウェアまたは処理のリソースを割り当てることを含む。
【0058】
ゲーミングアプリケーションのインスタンスが非ファーミング(またはアクティブ)ゲームプレイ状態であることを判断するステップは、様々な方法で実現できることが再度理解される。1つは、当該判断を、ゲームプレイヤーが、ゲーミングアプリケーション内に事前に設定されている選択可能なゲームプレイモードの中から、アクティブモードを選択したか、または、代わりにオートプレイモードまたはリソースファーミングモードを選択したか、に関する情報を、ゲーミングアプリケーションのインスタンスから、照会または検索することに基づいて行うことである。別の実施形態では、ゲーミングアプリケーションのインスタンス内でのゲームプレイの動作(例えば、特定のゲームプレイヤーの入力または動作または選択)または結果(例えば、特定の設定またはゲームプレイ状態に関して検出された変化、特定の画面またはマップエリアの表示、シーンレンダリングの変化、音声出力の変化など)についてのルールベースまたは機械学習ベースの分析が、ゲーミングアプリケーションが非リソースファーミング(すなわち、アクティブ)ゲームプレイ状態であるか否かを判断するために使用可能である。
【0059】
図3は、検出されたゲームプレイの状態に基づいて、ゲーミングアプリケーションの実行中のインスタンスにゲーミングアプリケーションモードを選択的に適用することにより、上記の開示内容を適用する方法を示すフローチャートである。
【0060】
ステップ302は、コンピュータデバイスで現在実行または実装されているゲーミングアプリケーションのインスタンスに関連付けられたゲームプレイ状態を検出することを含む。一実施形態では、ステップ302で検出されたゲームプレイ状態は、ゲーミングアプリケーションのインスタンスに現在関連付けられている、(1)リソースファーミングゲームプレイ状態、オートプレイゲームプレイ状態、または、非アクティブゲームプレイ状態と、(2)非リソースファーミングゲームプレイ状態またはアクティブゲームプレイ状態と、のうちの1つを含むことができる。ゲームプレイ状態は、検索されたゲーム設定、仮想マシン環境の設定、オペレーティングシステムの設定、オペレーティングシステムのエミュレータの設定、および/または、受信したゲームプレイヤーの入力に基づいて検出されてもよい。より具体的な実施形態では、ゲーミングアプリケーションのインスタンス内でのゲームプレイの動作(例えば、特定のゲームプレイヤーの入力または動作または選択)または結果(例えば、特定の設定またはゲームプレイ状態に関する検出された変化、特定の画面またはマップエリアの表示、シーンレンダリングの変化、音声出力の変化など)についてのルールベースまたは機械学習ベースの分析が、ゲームプレイ状態、例えば、ゲーミングアプリケーションが非リソースファーミング(すなわち、アクティブ)ゲームプレイ状態であるかまたはリソースファーミングゲームプレイ状態であるかの、検出および/または特定のために使用可能である。
【0061】
ステップ304は、利用可能な複数のゲーミングアプリケーションモードの中からゲーミングアプリケーションモードを選択することを含み、ある特定のゲーミングアプリケーションモードの選択は、ステップ304で検出されたゲームプレイ状態に基づいて行われる。複数のゲーミングアプリケーションモードのそれぞれは、ゲーミングアプリケーション実行パラメータの定義されたセットを含む。当該定義されたセットは、ゲーミングアプリケーションのインスタンスのようなインスタンスを実行するために、ゲーミングアプリケーションのインスタンスが実行されているコンピュータシステムで実行可能な、1つまたは複数のハードウェアパラメータ、オペレーティングシステムパラメータ、アプリケーションソフトウェアパラメータ、アプリケーションランタイム環境パラメータ、および/または、デバイスドライバパラメータを含む。一実施形態では、複数のゲーミングアプリケーションモードのそれぞれは、ゲーミングアプリケーション実行パラメータの定義されたセット内の1つまたは複数のゲーミングアプリケーション実行パラメータに関して、残りのゲーミングアプリケーションモードとは異なる。
【0062】
図3の方法の一実施形態では、複数の利用可能なゲーミングアプリケーションモードは、少なくとも、第1のリソースファーミングゲーミングアプリケーションモードと、第2の非リソースファーミングゲーミングアプリケーションモードと、を含む。ある特定の実施形態では、リソースファーミングゲーミングアプリケーションモードは、非リソースファーミングゲーミングアプリケーションモードよりも、エネルギーの効率が高い、および/または、コンピュータのリソースの効率が高いモードである。さらなる特定の実施形態では、リソースファーミングゲーミングアプリケーションモードに関連付けられたゲーミングアプリケーション実行パラメータの第1のセットは、非リソースファーミングゲーミングアプリケーションモードに関連付けられたゲーミングアプリケーション実行パラメータの第2のセットと比較して、よりエネルギーおよび/またはコンピュータのリソースが効率的なモードでゲーミングアプリケーションのインスタンスの実行を可能にする。
【0063】
さらなる実施形態では、リソースファーミングゲーミングアプリケーションモードに関連付けられたゲーミングアプリケーション実行パラメータの第1のセットは、非リソースファーミングゲーミングアプリケーションモードに関連付けられたゲーミングアプリケーション実行パラメータの第2のセットによって実行または有効化されていない、(ゲーミングアプリケーションのインスタンスを実行するための)1つまたは複数のリソース最適化技術の実行を有効化または引き起すために選択される。前記ゲーミングアプリケーション実行パラメータの第1のセットは、vCPUの割り当て、CPUの動作制限、フレームレートの低減、RAMのリクレーム、グラフィックスのスケーリング、GPUのスイッチング、オーディオのスケーリング、および/または、オーディオのミューティングのうちの1つまたは複数の実行をもたらすパラメータを、制限なく、含んでもよい。
【0064】
ステップ306は、選択されたゲーミングアプリケーションモードを、ゲーミングアプリケーションの実行中のインスタンスに適用することを含む。本方法の一実施形態では、ステップ304で選択されたゲーミングアプリケーションモードが、リソースファーミングゲーミングアプリケーションモードを含む場合、前記リソースファーミングゲーミングアプリケーションモードをゲーミングアプリケーションの実行中のインスタンスに適用することは、ゲーミングアプリケーションの実行中のインスタンスに関連するリソースファーミングゲーミングアプリケーションモードに関連付けられたゲーミングアプリケーション実行パラメータのセットを実行することを含む。本方法のさらなる特定の実施形態では、ステップ304で選択されたゲーミングアプリケーションモードが、リソースファーミングゲーミングアプリケーションモードを含む場合、前記リソースファーミングゲーミングアプリケーションモードをゲーミングアプリケーションの実行中のインスタンスに適用することは、ゲーミングアプリケーションのインスタンスを実行する目的で、vCPUの割り当て、CPUの動作制限、フレームレートの低減、RAMのリクレーム、グラフィックスのスケーリング、GPUのスイッチング、オーディオのスケーリング、および/または、オーディオのミューティングのうち1つまたは複数を実行することを含む。
【0065】
本方法の別の実施形態では、ステップ304で選択されたゲーミングアプリケーションモードが、非リソースファーミングゲーミングアプリケーションモードを含む場合、前記非リソースファーミングゲーミングアプリケーションモードをゲーミングアプリケーションの実行中のインスタンスに適用することは、ゲーミングアプリケーションのインスタンスの実行に関連する非リソースファーミングゲーミングアプリケーションモードに関連付けられたゲーミングアプリケーション実行パラメータのセットを実行することを含む。
【0066】
図3の方法に関して、ゲーミングアプリケーションの複数のインスタンスが、リソースファーミングゲームプレイ状態で、コンピュータデバイスで実行されていると判断される場合、コンピュータデバイスは、
図3の方法ステップを適用することにより、ゲーミングアプリケーションのそのような各インスタンスを、リソースファーミングゲーミングアプリケーションモードで実行するように構成されてもよいことが理解される。同様に、ゲーミングアプリケーションの複数のインスタンスが、非リソースファーミングゲームプレイ状態で、コンピュータデバイスで実行されていると判断される場合、コンピュータデバイスは、
図3の方法ステップを適用することにより、ゲーミングアプリケーションのそのような各インスタンスを、非リソースファーミングモードで実行するように構成されてもよい。
【0067】
図4は、検出されたゲームプレイの状態に基づいて、リソースファーミングゲーミングアプリケーションモードを、ゲーミングアプリケーションの実行中のインスタンスに選択的に適用する方法を示すフローチャートである。
【0068】
ステップ402は、コンピュータデバイスで現在実行または実装されているゲーミングアプリケーションのインスタンスに関連付けられたゲームプレイ状態を検出することを含む。一実施形態では、ステップ402で検出されたゲームプレイ状態は、ゲーミングアプリケーションのインスタンスに現在関連付けられている、(1)リソースファーミングゲームプレイ状態、オートプレイゲームプレイ状態、または、非アクティブゲームプレイ状態と、(2)非リソースファーミングゲームプレイ状態またはアクティブゲームプレイ状態と、のうちの1つを含んでもよい。
図3の方法の場合と同様に、ゲームプレイ状態は、検索されたゲーム設定、仮想マシン環境の設定、オペレーティングシステムの設定、オペレーティングシステムのエミュレータの設定、および/または、受信されたゲームプレイヤーの入力に基づいて検出されてもよい。より具体的な実施形態では、ゲーミングアプリケーションのインスタンス内でのゲームプレイの動作(例えば、特定のゲームプレイヤーの入力または動作または選択)または結果(例えば、特定の設定またはゲームプレイ状態に関する検出された変化、特定の画面またはマップエリアの表示、シーンレンダリングの変化、音声出力の変化など)についてのルールベースまたは機械学習ベースの分析が、ゲームプレイ状態、例えば、ゲーミングアプリケーションが非リソースファーミング(すなわち、アクティブ)ゲームプレイ状態であるかまたはリソースファーミングゲームプレイ状態であるかの、検出および/または特定のために使用可能である。
【0069】
ステップ404は、複数の利用可能なゲーミングアプリケーションモードの中から、リソースファーミングゲーミングアプリケーションモードを選択することによって、ステップ402でのリソースファーミングゲームプレイ状態の検出に応じることを含む。複数のゲーミングアプリケーションモードのそれぞれは、ゲーミングアプリケーション実行パラメータの離散的なセットを含む。当該離散的なセットは、ゲーミングアプリケーションのインスタンスのようなインスタンスを実行するために、ゲーミングアプリケーションのインスタンスが実行されているコンピュータシステムで実行可能な、1つまたは複数のハードウェアパラメータ、オペレーティングシステムパラメータ、アプリケーションソフトウェアパラメータ、アプリケーションランタイム環境パラメータ、および/または、デバイスドライバパラメータを含む。
図4の方法の一実施形態では、複数の利用可能なゲーミングアプリケーションモードは、少なくとも、第1のリソースファーミングゲーミングアプリケーションモードと、第2の非リソースファーミングゲーミングアプリケーションモードと、を含む。ある特定の実施形態では、リソースファーミングゲーミングアプリケーションモードは、非リソースファーミングゲーミングアプリケーションゲーミングアプリケーションモードよりも、エネルギーおよび/またはコンピュータのリソースの効率が高いモードである。さらなる特定の実施形態では、リソースファーミングゲーミングアプリケーションモードに関連付けられたゲーミングアプリケーション実行パラメータの第1のセットは、非リソースファーミングゲーミングアプリケーションモードに関連付けられたゲーミングアプリケーション実行パラメータの第2のセットと比較して、よりエネルギーおよび/またはコンピュータのリソースが効率的なモードでゲーミングアプリケーションのインスタンスの実行を可能にする。
【0070】
さらなる実施形態では、リソースファーミングゲーミングアプリケーションモードに関連付けられたゲーミングアプリケーション実行パラメータの第1のセットは、非リソースファーミングゲーミングアプリケーションモードに関連付けられたゲーミングアプリケーション実行パラメータの第2のセットによって実行または有効化されていない、(ゲーミングアプリケーションのインスタンスを実行するための)1つまたは複数のリソース最適化技術の実行を有効化または引き起すために選択される。前記リソース最適化技術は、vCPUの割り当て、CPUの動作制限、フレームレートの低減、RAMのリクレーム、グラフィックスのスケーリング、GPUのスイッチング、オーディオのスケーリング、および/または、オーディオのミューティングのうちの1つまたは複数を制限なく含んでもよい。
【0071】
ステップ406は、選択されたリソースファーミングゲーミングアプリケーションモードを、実行中のゲーミングアプリケーションのインスタンスに適用することを含む。本方法の一実施形態では、ステップ406は、選択されたリソースファーミングゲーミングアプリケーションモードに関連付けられたゲーミングアプリケーション実行パラメータのセットを、ゲーミングアプリケーションの実行中のインスタンスに適用することを含む。方法ステップ406の、より特定の実施形態では、リソースファーミングゲーミングアプリケーションモードをゲーミングアプリケーションの実行中のインスタンスに適用することは、ゲーミングアプリケーションのインスタンスを実行する目的で、vCPUの割り当て、CPUの動作制限、フレームレートの低減、RAMのリクレーム、グラフィックスのスケーリング、GPUのスイッチング、オーディオのスケーリング、および/または、オーディオのミューティングのうち1つまたは複数を実行することを含む。
【0072】
図4の方法に関して、ゲーミングアプリケーションの複数のインスタンスが、リソースファーミングゲームプレイ状態で、コンピュータデバイスで実行されていると判断される場合、コンピュータデバイスは、
図4の方法ステップを適用することにより、ゲーミングアプリケーションのそのような各インスタンスを、リソースファーミングモードで実行するように構成されてもよいことが理解される。
【0073】
図5は、検出されたゲームプレイの状態に基づいて、非リソースファーミングゲーミングアプリケーションモードを、ゲーミングアプリケーションの実行中のインスタンスに選択的に適用する方法を示すフローチャートである。
【0074】
ステップ502は、コンピュータデバイスで現在実行または実装されているゲーミングアプリケーションのインスタンスに関連付けられたゲームプレイ状態を検出することを含む。一実施形態では、ステップ502で検出されたゲームプレイ状態は、(1)リソースファーミングゲームプレイ状態、オートプレイゲームプレイ状態、または、非アクティブゲームプレイ状態と、(2)非リソースファーミングゲームプレイ状態またはアクティブゲームプレイ状態と、のうちの1つを含んでもよい。
図3および
図4の方法の場合と同様に、ゲームプレイ状態は、検索されたゲーム設定、仮想マシン環境の設定、オペレーティングシステムの設定、オペレーティングシステムのエミュレータの設定、および/または、受信されたゲームプレイヤーの入力に基づいて検出されてもよい。より具体的な実施形態では、ゲーミングアプリケーションの実行中のインスタンス内で検出されたゲームプレイの動作(例えば、特定のゲームプレイの入力または動作または選択)または検出された結果(例えば、特定の設定またはゲームプレイ状態に関する検出された変化、特定の画面またはマップ領域の表示、シーンレンダリングの変化、音声出力の変化など)についてのルールベースまたは機械学習ベースの分析が、ゲームプレイ状態、例えば、ゲーミングアプリケーションが非リソースファーミング(すなわち、アクティブ)ゲームプレイ状態であるかまたはリソースファーミングゲームプレイ状態であるかの、検出および/または特定のために使用可能である。
【0075】
ステップ504は、複数の利用可能なゲーミングアプリケーションモードの中から、非リソースファーミングゲーミングアプリケーションモードを選択することによって、ステップ502での非リソースファーミングゲームプレイ状態の検出に応じることを含む。複数のゲーミングアプリケーションモードのそれぞれは、ゲーミングアプリケーション実行パラメータの離散的なセットを含む。当該離散的なセットは、ゲーミングアプリケーションのインスタンスが実行されているコンピュータシステムで実行可能な、1つまたは複数のハードウェアパラメータ、オペレーティングシステムパラメータ、アプリケーションソフトウェアパラメータ、アプリケーションランタイム環境パラメータ、および/または、デバイスドライバパラメータを含む。
図5の方法の一実施形態では、複数の利用可能なゲーミングアプリケーションモードは、少なくとも、第1のリソースファーミングゲーミングアプリケーションモードと、第2の非リソースファーミングゲーミングアプリケーションモードと、を含む。ある特定の実施形態では、非リソースファーミングゲーミングアプリケーションモードは、リソースファーミングゲーミングアプリケーションモードと比較して、より多くのエネルギーを消費し、および/または、より多くのコンピュータリソースを消費するモードである。さらなる特定の実施形態では、非リソースファーミングゲーミングアプリケーションモードに関連付けられたゲーミングアプリケーション実行パラメータの第1のセットは、リソースファーミングゲーミングアプリケーションモードに関連付けられたゲーミングアプリケーション実行パラメータの第2のセットと比較して、より多くのエネルギーおよび/またはより多くのコンピュータリソースを消費するモードでゲーミングアプリケーションのインスタンスの実行を可能にする。
【0076】
さらなる実施形態では、非リソースファーミングゲーミングアプリケーションモードに関連付けられたゲーミングアプリケーション実行パラメータの第2のセットは、リソースファーミングゲーミングアプリケーションモードに関連付けられたゲーミングアプリケーション実行パラメータの第1のセットによって実行または有効化される(ゲーミングアプリケーションのインスタンスを実行するための)1つまたは複数のリソース最適化技術を省略または排除するために選択される。1つまたは複数の省略または排除されるリソース最適化技術は、vCPUの割り当て、CPUの動作制限、フレームレートの低減、RAMのリクレーム、グラフィックスのスケーリング、GPUのスイッチング、オーディオのスケーリング、および/または、オーディオのミューティングのうちのいずれか1つまたは複数を制限なく含んでもよい。
【0077】
ステップ506は、選択された非リソースファーミングゲーミングアプリケーションモードを、ゲーミングアプリケーションの実行中のインスタンスに適用することを含む。本方法の一実施形態では、ステップ506は、ゲーミングアプリケーションのインスタンスを実行する目的で、非リソースファーミングゲーミングアプリケーションモードに関連付けられたゲーミングアプリケーション実行パラメータのセットを、ゲーミングアプリケーションの実行中のインスタンスに適用することを含む。方法ステップ506の、より特定の実施形態では、非リソースファーミングゲーミングアプリケーションモードをゲーミングアプリケーションの実行中のインスタンスに適用することは、ゲーミングアプリケーションのインスタンスを実行中に、vCPUの割り当て、CPUの動作制限、フレームレートの低減、RAMのリクレーム、グラフィックスのスケーリング、GPUのスイッチング、オーディオのスケーリング、および/または、オーディオのミューティングのうち1つまたは複数を省略または排除することを含む。
【0078】
図5の方法に関して、ゲーミングアプリケーションの複数のインスタンスが、非リソースファーミングゲームプレイ状態で、コンピュータデバイスで実行されていると判断される場合、コンピュータデバイスは、
図5の方法ステップを適用することにより、ゲーミングアプリケーションのそのような各インスタンスを、非リソースファーミングモードで実行するように構成されてもよい。
【0079】
特定の実施形態では、本発明は、ゲームプレイ状態の変化の検出に応じて、ゲーミングアプリケーションのインスタンスを実行するために使用されている第1のゲーミングアプリケーションモードから、ゲーミングアプリケーションのインスタンスのさらなる実行のための第2のゲーミングアプリケーションモードへの切り替えを可能にする。例えば、第1のゲーミングアプリケーションモードから第2のゲーミングアプリケーションモードへの切り替えは、ゲーミングアプリケーションの実行中のインスタンス内のゲームプレイが、(1)リソースファーミングゲームプレイ状態、オートプレイゲームプレイ状態、または、非アクティブゲームプレイ状態のいずれかから、(2)非リソースファーミングゲームプレイ状態、または、アクティブゲームプレイ状態のいずれかに、変化したという判断に応じて、またはその逆の判断に応じて、実施されてもよい。一実施形態では、ゲーミングアプリケーションのインスタンスを実行するために使用されている第1のゲーミングアプリケーションモードは、リソースファーミングゲーミングアプリケーションモードと非リソースファーミングゲーミングアプリケーションモードとのうち一方を含んでもよく、ゲーミングアプリケーションのインスタンスを実行するための第2のゲーミングアプリケーションモードは、リソースファーミングゲーミングアプリケーションモードと非リソースファーミングゲーミングアプリケーションモードとのうち他方を含んでもよい。
【0080】
図6は、ゲーミングアプリケーションの実行中のインスタンスにおいて、非リソースファーミングゲームプレイ状態からリソースファーミングゲームプレイ状態に切り替える方法を示すフローチャートである。
【0081】
ステップ602は、ゲームプレイ状態切り替えイベントを検出することを含む。一実施形態では、ゲームプレイ状態切り替えイベントを検出することは、ゲーミングアプリケーションの実行中のインスタンス内でのゲームプレイの変化を検出することを含み、当該ゲームプレイは、リソースファーミングゲームプレイ状態、オートプレイゲームプレイ状態または非アクティブゲームプレイ状態のいずれかから、非リソースファーミングゲームプレイ状態またはアクティブゲームプレイ状態のいずれかに、変化する。別の実施形態では、ゲームプレイ状態切り替えイベントを検出することは、ゲーミングアプリケーションの実行中のインスタンス内でゲームプレイの変化を検出することを含み、当該ゲームプレイは、非リソースファーミングゲームプレイ状態またはアクティブゲームプレイ状態のいずれかから、リソースファーミングゲームプレイ状態、オートプレイゲームプレイ状態または非アクティブゲームプレイ状態のいずれかに、変化する。
【0082】
ステップ602でのゲームプレイ状態の変化は、検索されたゲーム設定、仮想マシン環境の設定、オペレーティングシステムの設定、オペレーティングシステムのエミュレータの設定、および/または、受信されたゲームプレイヤーの入力(複数可)に基づいて検出されてもよい。より具体的な実施形態では、ゲーミングアプリケーションのインスタンス内でのゲームプレイの動作(例えば、特定のゲームプレイヤーの入力または動作または選択)または結果(例えば、特定の設定またはゲームプレイ状態に関する検出された変化、特定の画面またはマップエリアの表示、シーンレンダリングの変化、音声出力の変化など)についてのルールベースまたは機械学習ベースの分析が、ゲームプレイ状態、例えば、ゲーミングアプリケーションが非リソースファーミング(すなわち、アクティブ)ゲームプレイ状態であるかまたはリソースファーミングゲームプレイ状態であるかの、検出および/または特定のために使用可能である。
【0083】
ステップ604は、ゲーミングアプリケーションのインスタンスが以前に実行されていた第1のゲーミングアプリケーションモードからゲーミングアプリケーションのインスタンスの実行を継続するための第2のゲーミングアプリケーションモードに切り替えることによって、前記検出されたゲームプレイ状態切り替えイベントがゲーミングアプリケーションの実行中のインスタンスを非リソースファーミングゲームプレイ状態からリソースファーミングゲームプレイ状態に切り替えることを含むという判断に応じることを含む。本方法の一実施形態では、ゲーミングアプリケーションのインスタンスが以前に実行されていた第1のゲーミングアプリケーションモードは、非リソースファーミングゲーミングアプリケーションモードを含み、ゲーミングアプリケーションのインスタンスを実行するための第2のゲーミングアプリケーションモードは、リソースファーミングゲーミングアプリケーションモードを含む。
【0084】
リソースファーミングゲーミングアプリケーションモードと非リソースファーミングゲーミングアプリケーションモードのそれぞれは、ゲーミングアプリケーション実行パラメータの離散的なセットを含む。当該離散的なセットは、ゲーミングアプリケーションのインスタンスを実行するために、ゲーミングアプリケーションのインスタンスが実行されているコンピュータシステムで実行可能な、1つまたは複数のハードウェアパラメータ、オペレーティングシステムパラメータ、アプリケーションソフトウェアパラメータ、アプリケーションランタイム環境パラメータ、および/または、デバイスドライバパラメータを含む。
図6の方法の一実施形態では、リソースファーミングゲーミングアプリケーションモードは、非リソースファーミングゲーミングアプリケーションモードよりも、エネルギーの効率および/またはコンピュータのリソースの効率が高いモードである。
図6の方法の別の実施形態では、非リソースファーミングゲーミングアプリケーションモードは、リソースファーミングゲーミングアプリケーションモードよりも、より多くのエネルギーを消費し、および/または、より多くのコンピュータリソースを消費するモードである。さらなる特定の実施形態では、非リソースファーミングゲーミングアプリケーションモードに関連付けられたゲーミングアプリケーション実行パラメータの第1のセットは、(エネルギーの効率の高いおよび/またはコンピュータのリソースの効率の高いモードでゲーミングアプリケーションのインスタンスの実行を可能にする)リソースファーミングゲーミングアプリケーションモードに関連付けられたゲーミングアプリケーション実行パラメータの第2のセットと比較して、より多くのエネルギーを消費するおよび/またはより多くのコンピュータリソースを消費するモードでゲーミングアプリケーションのインスタンスの実行を可能にする。さらなる実施形態では、リソースファーミングゲーミングアプリケーションモードに関連付けられたゲーミングアプリケーション実行パラメータの第2のセットは、非リソースファーミングゲーミングアプリケーションモードに関連付けられたゲーミングアプリケーション実行パラメータの第1のセットによって実行または有効化されていない、(ゲーミングアプリケーションのインスタンスを実行するための)1つまたは複数のリソース最適化技術の実行を有効化または引き起すために選択され、前記リソース最適化技術は、vCPUの割り当て、CPUの動作制限、フレームレートの低減、RAMのリクレーム、グラフィックスのスケーリング、GPUのスイッチング、オーディオのスケーリング、および/または、オーディオのミューティングのうちの1つまたは複数を制限なく含む。
【0085】
図7は、ゲーミングアプリケーションの実行中のインスタンスにおいて、リソースファーミングゲームプレイ状態から非リソースファーミングゲームプレイ状態に切り替える方法を示すフローチャートである。
【0086】
ステップ702は、ゲームプレイ状態切り替えイベントを検出することを含む。一実施形態では、ゲームプレイ状態切り替えイベントを検出することは、ゲーミングアプリケーションの実行中のインスタンス内でのゲームプレイ状態の変化を検出することを含み、前記ゲームプレイ状態は、リソースファーミングゲームプレイ状態またはアクティブゲームプレイ状態のいずれかから、非リソースファーミングゲームプレイ状態、オートプレイゲームプレイ状態または非アクティブゲームプレイ状態に変化する。別の実施形態では、ゲームプレイ状態切り替えイベントを検出することは、実行中のゲーミングアプリケーションのインスタンス内でゲームプレイ状態の変化を検出することを含み、当該ゲームプレイは、非リソースファーミングゲームプレイ状態またはアクティブゲームプレイ状態のいずれかから、リソースファーミングゲームプレイ状態、オートプレイゲームプレイ状態または非アクティブゲームプレイ状態のいずれかに変化する。
【0087】
ステップ702でのゲームプレイ状態の変化は、検索されたゲーム設定、仮想マシン環境の設定、オペレーティングシステムの設定、オペレーティングシステムのエミュレータの設定、および/または、受信されたゲームプレイヤーの入力(複数可)に基づいて検出されてもよい。より具体的な実施形態では、ゲーミングアプリケーションのインスタンス内でのゲームプレイの動作(例えば、特定のゲームプレイヤーの入力または動作または選択)または結果(例えば、特定の設定またはゲームプレイ状態に関する検出された変化、特定の画面またはマップエリアの表示、シーンレンダリングの変化、音声出力の変化など)についてのルールベースまたは機械学習ベースの分析が、ゲームプレイ状態の変化、例えば、ゲーミングアプリケーションが非リソースファーミング(または、アクティブ)ゲームプレイ状態からリソースファーミング(または、非アクティブ)ゲームプレイ状態に、またはその逆に変化したか否かの検出および/または特定のために使用可能である。
【0088】
ステップ704は、ゲーミングアプリケーションのインスタンスが実行されていた第1のゲーミングアプリケーションモードからゲーミングアプリケーションのインスタンスを実行するための第2のゲーミングアプリケーションモードに切り替えることによって、前記検出されたゲームプレイ状態切り替えイベントがゲーミングアプリケーションのインスタンスをリソースファーミングゲームプレイ状態から非リソースファーミングゲームプレイ状態に切り替えることを含む場合に応じることを含む。本方法の一実施形態では、ゲーミングアプリケーションのインスタンスが実行されていた第1のゲーミングアプリケーションモードは、リソースファーミングゲーミングアプリケーションモードを含み、ゲーミングアプリケーションのインスタンスを実行するための第2のゲーミングアプリケーションモードは、非リソースファーミングゲーミングアプリケーションモードを含む。
【0089】
リソースファーミングゲーミングアプリケーションモードと非リソースファーミングゲーミングアプリケーションモードのそれぞれは、ゲーミングアプリケーション実行パラメータの離散的なセットを含む。当該離散的なセットは、ゲーミングアプリケーションのインスタンスを実行するために、ゲーミングアプリケーションのインスタンスが実行されているコンピュータシステムで実行可能な、1つまたは複数のハードウェアパラメータ、オペレーティングシステムパラメータ、アプリケーションソフトウェアパラメータ、アプリケーションランタイム環境パラメータ、および/または、デバイスドライバパラメータを含む。
図7の方法の一実施形態では、リソースファーミングゲーミングアプリケーションモードは、非リソースファーミングゲーミングアプリケーションモードよりも、エネルギーの効率および/またはコンピュータのリソースの効率が高いモードである。
図7の方法の別の実施形態では、非リソースファーミングゲーミングアプリケーションモードは、リソースファーミングゲーミングアプリケーションモードよりも、より多くのエネルギーを消費し、および/または、より多くのコンピュータリソースを消費するモードである。さらなる特定の実施形態では、リソースファーミングゲーミングアプリケーションモードに関連付けられたゲーミングアプリケーション実行パラメータの第1のセットは、(より多くのエネルギーを消費し、および/または、より多くのコンピュータリソースを消費するモードでゲーミングアプリケーションのインスタンスの実行を可能にする)非リソースファーミングゲーミングアプリケーションモードに関連付けられたゲーミングアプリケーション実行パラメータの第2のセットと比較して、よりエネルギーの効率および/またはコンピュータリソースの効率が高いモードでゲーミングアプリケーションのインスタンスの実行を可能にする。さらなる実施形態では、リソースファーミングゲーミングアプリケーションモードに関連付けられたゲーミングアプリケーション実行パラメータの第1のセットは、非リソースファーミングゲーミングアプリケーションモードに関連付けられたゲーミングアプリケーション実行パラメータの第2のセットによって実行または有効化されていない、(ゲーミングアプリケーションのインスタンスを実行するための)1つまたは複数のリソース最適化技術の実行を有効化または引き起すために選択され、前記リソース最適化技術は、vCPUの割り当て、CPUの動作制限、フレームレートの低減、RAMのリクレーム、グラフィックスのスケーリング、GPUのスイッチング、オーディオのスケーリング、および/または、オーディオのミューティングのうちの1つまたは複数を制限なく含む。
【0090】
さらに、(コンピュータデバイスでゲーミングアプリケーションのインスタンスを実行するための)リソースファーミングゲーミングアプリケーションモードを選択することによって又は非リソースファーミングゲーミングアプリケーションモードからリソースファーミングゲーミングアプリケーションモードに切り替えることによって実現可能な実際のリソースの利用の最適化は、ゲームプレイヤー(または、ゲーミングアプリケーションのインスタンスに対応する、適用可能なゲーム設定、または、仮想マシン環境/オペレーティングシステムのエミュレータの設定)が、(1)ゲーミングアプリケーションのインスタンスを再起動することなく又はゲーミングアプリケーションのインスタンスが実行されている仮想マシン環境/オペレーティングシステムのエミュレータを再起動することなくリソースファーミングゲーミングアプリケーションモードと非リソースファーミングゲーミングアプリケーションゲーミングアプリケーションモードとを切り替える機能を必要とするか、(2)あるいは、ゲーミングアプリケーションのインスタンスを再起動することなく又はゲーミングアプリケーションのインスタンスが実行されている仮想マシン環境/オペレーティングシステムのエミュレータを再起動することなくリソースファーミングゲーミングアプリケーションモードと非リソースファーミングゲーミングアプリケーションゲーミングアプリケーションモードとを切り替える機能を必要としないか、に依存することが、開示される。
【0091】
具体的には、ゲームプレイヤー(または、ゲーミングアプリケーションのインスタンスに対応する、適用可能なゲーム設定、または、仮想マシン環境/オペレーティング・システム・エミュレータの設定)が、ゲーミングアプリケーションのインスタンスを再起動することなく又はゲーミングアプリケーションのインスタンスが実行されている仮想マシン環境/オペレーティングシステムのエミュレータを再起動することなくリソースファーミングゲーミングアプリケーションモードと非リソースファーミングゲーミングアプリケーションモードとを切り替える機能を、必要とする場合、この機能が必要とされないインスタンス用の場合と比較して、実現可能なリソースの利用の最適化の度合いが低くなる。これは、ゲーミングアプリケーションのインスタンス/仮想マシン環境/オペレーティングシステムのエミュレータを再起動せずにモードを切り替えることは、リソース利用最適化モードからリソース利用非最適化モードまたは少量の最適化モードへの切り替えを可能にするために、実行中のゲーミングアプリケーションのインスタンスに関連付けられた1つまたは複数のゲームプレイ状態を定義する十分なゲーム情報またはゲームプレイ状況情報の保存及びその後の検索を必要とするためである。
【0092】
したがって、ある実施形態において、リソースファーミングゲーミングアプリケーションモードでゲーミングアプリケーションのインスタンスを実行するために実行される特定のリソース最適化技術は、ゲームプレイヤー(または、ゲーミングアプリケーションのインスタンスに対応する、適用可能なゲーム設定、または、仮想マシン環境/オペレーティングシステムのエミュレータの設定)が、ゲーミングアプリケーションのインスタンスを再起動することなく又はゲーミングアプリケーションのインスタンスが実行されている仮想マシン環境/オペレーティングシステムのエミュレータを再起動することなくリソースファーミングゲーミングアプリケーションモードと非リソースファーミングゲーミングアプリケーションモードとを切り替える機能を、必要とするか否かの判断に基づいて、選択されてもよい。ゲーミングアプリケーションのインスタンス/仮想マシン環境/オペレーティングシステムのエミュレータを再起動せずにモードを切り替える機能が必要である場合、リソース最適化技術の第1のセットが実行されてもよい。ゲーミングアプリケーションのインスタンス/仮想マシン環境/オペレーティングシステムのエミュレータを再起動せずにモードを切り替える機能が必要でない場合、リソース最適化技術の第2のセットが実行されてもよい。リソース最適化技術の第1のセット。
【0093】
図8は、ゲーミングアプリケーションの実行中のインスタンスが、ゲーミングアプリケーションのインスタンスを再起動することなくリソースファーミングゲーミングアプリケーションモードと非リソースファーミングアプリケーションモードとを切り替える機能を、必要とするか又は含むかの特定に基づいて、リソースファーミングゲーミングアプリケーションモードを実行するためのリソース最適化技術のセットを選択する具体的な方法を示すフローチャートである。
【0094】
ステップ802は、ゲーミングアプリケーションの実行中のインスタンスが、ゲーミングアプリケーションのインスタンスを再起動することなく(または、ゲーミングアプリケーションのインスタンスが実行されている仮想マシン環境/オペレーティングシステムのエミュレータを再起動することなく)リソースファーミングゲーミングアプリケーションモードと非リソースファーミングゲーミングアプリケーションモードとを切り替える機能を必要とするか又は含むか、を判断することを含む。
【0095】
ステップ804は、リソースファーミングゲーミングアプリケーションモードを実行するためのリソース最適化技術のセットを選択することを含み、当該リソース最適化技術のセットの選択は、ステップ802での判断(すなわち、ゲーミングアプリケーションのインスタンスを再起動することなく又は仮想マシン環境/オペレーティングシステムのエミュレータを再起動することなくリソースファーミングゲーミングアプリケーションモードと非リソースファーミングゲーミングアプリケーションモードとを切り替える機能を、ゲーミングアプリケーションのインスタンスが必要とする又は含むか否か)に基づいて行われる。
【0096】
図8の方法の一実施形態では、ゲームプレイヤー(または、ゲーミングアプリケーションのインスタンスに対応する、適用可能なゲーム設定、または、仮想マシン環境/オペレーティングシステムのエミュレータの設定)が、ゲーミングアプリケーションのインスタンスを再起動することなく又はゲーミングアプリケーションのインスタンスが実行されている仮想マシン環境/オペレーティングシステムのエミュレータを再起動することなくリソースファーミングゲーミングアプリケーションモードと非リソースファーミングゲーミングアプリケーションモードとを切り替える機能を必要とする場合、リソース最適化技術の対応する第1のセットがステップ804で選択され、当該対応する第1のセットは、この機能が必要とされないインスタンスにおいてステップ804で選択可能なリソース最適化技術の第2のセットによって可能とされるリソース利用最適化の程度よりも低いリソース利用最適化の程度を可能にする。
【0097】
一実施形態では、リソース最適化技術の第2のセットは、リソース最適化技術の第1のセット内に実装されていない、(ゲーミングアプリケーションのインスタンスを実行するための)1つまたは複数のリソース最適化技術を実装してもよい。
【0098】
リソース最適化技術の第1のセットおよび第2のセットの一方または両方は、vCPUの割り当て、CPUの動作制限、フレームレートの低減、RAMのリクレーム、グラフィックスのスケーリング、GPUのスイッチング、オーディオのスケーリング、および/または、オーディオのミューティングのいずれか1つまたは複数を含んでもよい。
【0099】
別の実施形態では、リソース最適化技術の第2のセットは、リソース最適化技術の第1のセットに実装されているものと同じ(ゲーミングアプリケーションのインスタンスを実行するためのもの)リソース最適化技術を、異なるリソース最適化パラメータまたは設定で、1つまたは複数実装してもよい。
【0100】
本発明の一実施形態では、コンピュータデバイスは、ゲーミングアプリケーションのインスタンスを実行するためのリソースファーミングゲーミングアプリケーションモードを実行するためのリソース最適化技術の第1のセットおよび第2のセットのいずれかを選択するように構成されており、リソース最適化技術の第1のセットおよび第2のセットからの選択は、ゲームプレイヤー(または、ゲーミングアプリケーションのインスタンスに対応する、適用可能なゲーム設定、または、仮想マシン環境/オペレーティングシステムのエミュレータの設定)が、ゲーミングアプリケーションのインスタンスを再起動することなく又はゲーミングアプリケーションのインスタンスが実行されている仮想マシン環境/オペレーティングシステムのエミュレータを再起動することなくリソースファーミングゲーミングアプリケーションモードと非リソースファーミングゲーミングアプリケーションモードとを切り替える機能を必要とするか否か、の判断に基づいて行われる。特定の実施形態では、この判断は、検索されたゲーム設定/仮想マシン環境の設定/オペレーティングシステムのエミュレータの設定に基づいてもよいし、代わりに、受信したゲームプレイヤーの入力(複数可)に基づいてもよい。
【0101】
異なるゲーム同士は、(例えば、異なる内部のゲームおよび/またはコーディングの仕組みの結果として)同じリソース最適化技術に対して異なる応答をするので、ゲーミングアプリケーションのインスタンスを実行するためのリソースファーミングゲーミングアプリケーションモードを実行するために適用されるリソース最適化技術は、特定のゲーミングアプリケーションに基づいて変わってもよいことが、開示される。さらに、同じまたは類似のゲーミングエンジンに基づいて実行される複数のゲーミングアプリケーションは、類似の内部ゲームおよび/またはコーディングの仕組みを実装する結果として、同じリソース最適化技術に対して同様に応答する可能性が高いことが分かっている。
【0102】
本発明の一実施形態では、ゲーミングアプリケーションのインスタンスを実行するためのリソースファーミングゲーミングアプリケーションモードを実行する目的で、リソース最適化技術のより大きなセットから、リソース最適化技術のサブセットが、選択されてもよい。当該リソース最適化技術のサブセットは、事前に定義された選択ルールのセットに基づいて選択されてもよいし、1つまたは複数のゲームプレイヤーの入力、DevOpsの入力、SysAdの入力に基づいて選択されてもよいし、ルールに基づく選択と入力に基づく選択との組合せに基づいて選択されてもよい。
【0103】
本発明の一実施形態では、ゲーミングアプリケーションのインスタンスを実行するためのリソースファーミングゲーミングアプリケーションモードを実行するためのリソース最適化技術を選択して適用する目的で、以下のうちの1つまたは複数が実行されてもよい。
・ゲーミングアプリケーションが特定のスレッド名を持つスレッドを作成したことの検出に応じて、ゲーミングアプリケーションが、独立したオーディオループを実行すると、判断してもよいこと。この独立したオーディオループは、(例えば、スレッド名またはスレッド名の特徴に基づいて)特定され、リソースファーミングゲーミングアプリケーションモードを実行する目的で低減またはミュート可能である。
・特定のプロセススレッドの中でアプリケーションプログラムインタフェース(API)コールの特定のシーケンス(APIコールのシーケンスは、ゲーミングエンジン内のグラフィックススレッドに関連するが、ゲーミングエンジン内の物理スレッドには関連しない)を特定した場合、特定のプロセススレッドがグラフィックススレッドであると判断し、このスレッドを生成したゲーミングアプリケーションのインスタンスのフレームレートを、ゲームのゲームプレイの内部状態に悪影響を与えることなく、低減してもよいこと。
・特定のプロセススレッドの中でAPIコールの特定のシーケンスを特定した場合、ゲーミングアプリケーションが定期的な間隔でフルシーンを描画しているか、あるいは、特定のシーンを一度だけ描画しているかを判断してもよいこと。ゲーミングアプリケーションが定期的な間隔でフルシーンを描画している場合、フレームデータを、保存することなく、ダウンスケールまたは完全に破棄しても、その後、ゲームの非リソースファーミングゲーミングアプリケーションモードに戻ることができる。ゲーミングアプリケーションが1つまたは複数のシーンを1回だけ描画する場合、ゲームの非リソースファーミングゲーミングアプリケーションモードに後で戻ることを可能にするために、フレームデータのダウンスケールまたは廃棄は、そのようなフレームデータの保存を伴う必要がある。
・ゲーミングアプリケーションのインスタンスからAPIコールの特定のシーケンスを特定する場合、APIコールのサブセットのみをGPUにキャッシュできるか、または、すべてのAPIコールをGPUキャッシュに送信できるかを決定してもよいこと。
・インストール時のゲーミングアプリケーションの特性の分析に応じて、ゲーミングアプリケーションデータが、リソースファーミングゲーミングアプリケーションモードでレンダリングまたは呼び出しが可能な低品質/低解像度のデータアセットを事前にバンドルしているかどうかについて、追加の判断を行ってもよいこと。
・リソースファーミングゲーミングアプリケーションモードで実行されているゲーミングアプリケーションのインスタンスに応じて、利用可能なvCPUのおよびRAMのリソースのためのオペレーティングシステムへのクエリの種類、数、周期性が、ゲーミングアプリケーションが非リソースファーミングゲーミングアプリケーションモードで実行されている場合よりも低くなってもよいこと。
【0104】
本発明の一実施形態では、上述したような1つまたは複数の方法を実行するように構成されているコンピュータデバイスは、以下のような判断に応答するように構成されてもよい。
・ゲーミングアプリケーションのインスタンスが実行されていた第1のゲーミングアプリケーションゲーミングアプリケーションモードから、ゲーミングアプリケーションのインスタンスの実行のための第2のゲーミングアプリケーションゲーミングアプリケーションモードに切り替えることにより、ゲーミングアプリケーションのインスタンスが、リソースファーミングゲームプレイ状態となるという判断。ここで、当該第2のゲーミングアプリケーションゲーミングアプリケーションモードは、リソースファーミングゲーミングアプリケーションモードであって、第1のゲーミングアプリケーションゲーミングアプリケーションモードよりもエネルギーの効率および/またはコンピュータリソースの効率が高いモードである。実施形態では、第2のゲーミングアプリケーションゲーミングアプリケーションモードは、第1のゲーミングアプリケーションモードで実行されていない、(ゲーミングアプリケーションのインスタンスを実行するための)1つまたは複数のリソース最適化技術を実行してもよく、当該リソース最適化技術は、vCPUの割り当て、CPUの動作制限、フレームレートの低減、RAMのリクレーム、グラフィックスのスケーリング、GPUのスイッチング、オーディオのスケーリング、および/または、オーディオのミューティングのうち1つまたは複数を、制限なく、含む。
・ゲーミングアプリケーションのインスタンスが非リソースファーミングゲームプレイ状態で実行されていた第1のゲーミングアプリケーションモードから、ゲーミングアプリケーションのインスタンスを実行するための第2のゲーミングアプリケーションモードに切り替わることにより、ゲーミングアプリケーションのインスタンスが、非リソースファーミングゲームプレイ状態からリソースファーミングゲームプレイ状態に切り替わるという判断。当該第2のゲーミングアプリケーションモードは、リソースファーミングゲーミングアプリケーションモードであって、第1のゲーミングアプリケーションモードよりもエネルギーの効率および/またはコンピュータリソースの効率が高いモードである。実施形態では、第2のゲーミングアプリケーションモードは、第1のゲーミングアプリケーションモードで実行されていない、(ゲーミングアプリケーションのインスタンスを実行するための)1つまたは複数のリソース最適化技術を実行してもよく、リソース最適化技術は、vCPUの割り当て、CPUの動作制限、フレームレートの低減、RAMのリクレーム、グラフィックスのスケーリング、GPUのスイッチング、オーディオのスケーリング、および/または、オーディオのミューティングを、制限なく、含む。
・ゲーミングアプリケーションのインスタンスがリソースファーミングゲームプレイ状態で実行されていた第1のゲーミングアプリケーションモードから、ゲーミングアプリケーションのインスタンスを実行するための第2のゲーミングアプリケーションモードに切り替えることにより、ゲーミングアプリケーションのインスタンスが、リソースファーミングゲームプレイ状態から非リソースファーミングゲームプレイ状態に切り替わるという判断。当該第1のゲーミングアプリケーションモードは、リソースファーミングゲーミングアプリケーションモードであって、第2のゲーミングアプリケーションモードよりもエネルギーの効率および/またはコンピュータリソースの効率が高いモードである。実施形態では、第1のゲーミングアプリケーションモードは、第2のゲーミングアプリケーションモードで実行されていない、(ゲーミングアプリケーションのインスタンスを実行するための)1つまたは複数のリソース最適化技術を実行してもよく、リソース最適化技術は、vCPUの割り当て、CPUの動作制限、フレームレートの低減、RAMのリクレーム、グラフィックスのスケーリング、GPUのスイッチング、オーディオのスケーリング、および/または、オーディオのミューティングを、制限なく、含む。
・ゲーミングアプリケーションのインスタンスがリソースファーミングゲームプレイ状態で実行されていた第1のゲーミングアプリケーションモードから、ゲーミングアプリケーションのインスタンスを実行するための第2のゲーミングアプリケーションモードに切り替えることにより、ゲーミングアプリケーションのインスタンスが、リソースファーミングゲームプレイ状態から非リソースファーミングゲームプレイ状態に切り替わるという判断。当該第1のゲーミングアプリケーションモードは、リソースファーミングモードであって、第2のゲーミングアプリケーションモードよりもエネルギーの効率および/またはコンピュータのリソースの効率が高いモードであり、当該第2のゲーミングアプリケーションモードは、ゲーミングアプリケーション(またはゲーミングアプリケーションの特定インスタンス)のデフォルトの実行設定に従って、ゲーミングアプリケーションのインスタンスにハードウェアまたは処理のリソースを割り当てることを含む。実施形態では、第1のゲーミングアプリケーションモードは、第2のゲーミングアプリケーションモードで実行されていない、(ゲーミングアプリケーションのインスタンスを実行するための)1つまたは複数のリソース最適化技術を実行してもよく、リソース最適化技術は、vCPUの割り当て、CPUの動作制限、フレームレートの低減、RAMのリクレーム、グラフィックスのスケーリング、GPUのスイッチング、オーディオのスケーリング、および/または、オーディオのミューティングを、制限なく、含む。
【0105】
図9は、本発明の開示に従って構成されたリソース最適化コントローラ900を示す。特定の実施形態では、リソース最適化コントローラ900は、
図2および
図9にそれぞれ示されたリソース最適化コントローラのうちの1つを含んでもよい。ある実施形態では、リソース最適化コントローラ900は、
図3から
図8にそれぞれ関連して説明した方法または方法ステップのうちの1つまたは複数を実行するように構成されてもよい。リソース最適化コントローラ900は、ゲーミングアプリケーションインスタンスインタフェースコントローラ902、ゲーム状態検出部904、ゲーミングアプリケーションモードセレクタ906、ゲームプレイ状態切り替えイベント検出部908、ゲーミングアプリケーション切り替え機能検出部910、および、リソース最適化プロセスセレクタ912のうちの1つまたは複数を含んでもよい。
【0106】
ゲーミングアプリケーションインスタンスインタフェースコントローラ902は、リソース最適化コントローラ902が、コンピュータシステムで実行中のゲーミングアプリケーションの各インスタンスを識別、検出、監視、追跡、および/または、通信することを可能にする、プロセッサに実装されたコントローラである。
【0107】
ゲーム状態検出部904は、実行中のゲーミングアプリケーションのインスタンス(複数可)に関連付けられたゲームプレイ状態を検出するように構成された、プロセッサに実装された検出器である。一実施形態では、ゲーム状態検出部904は、
図3から
図5のステップ302、402または502のいずれかをそれぞれ実行するように構成されている。
【0108】
ゲーミングアプリケーションモードセレクタ906は、
図3から
図7のステップ304から306、404から406、504から506、604または704のいずれかに従って、複数のゲーミングアプリケーションモードの中からゲーミングアプリケーションモードを選択して実行するように構成された、プロセッサに実装されたセレクタである。
【0109】
ゲームプレイ状態切り替えイベント検出部908は、
図6および
図7のそれぞれのステップ602または702に関連して説明したように、ゲームプレイ状態切り替えイベントのインスタンスを検出するように構成された、プロセッサに実装された検出部を含む。
【0110】
ゲーミングアプリケーション切り替え機能検出部910は、実行中のゲーミングアプリケーションのインスタンスが、ゲーミングアプリケーションのインスタンスを再起動することなく又はゲーミングアプリケーションのインスタンスが実行されている仮想マシン環境/オペレーティングシステムのエミュレータを再起動することなくリソースファーミングゲーミングアプリケーションモードと非リソースファーミングゲーミングアプリケーションモードとを切り替える機能を必要とするか又は含むか、を検出するように構成された、プロセッサに実装された検出部を含む。一実施形態では、ゲーミングアプリケーション切り替え機能検出部910は、
図8に関連して説明したように方法のステップ802を実行するように構成されている。
【0111】
リソース最適化プロセスセレクタ912は、本発明の様々な方法に従って、リソースゲーミングアプリケーションモードを実行するためのリソース最適化技術のセットを選択して実行するように構成された、プロセッサに実装されたセレクタである。一実施形態では、リソース最適化プロセスセレクタ912は、
図8の方法のステップ804を実行するように構成されている。
【0112】
図10は、ホストオペレーティングシステム内のゲストオペレーティングシステム用に構成されたアプリケーションソフトウェアの実行のために構成された、コンピュータに実装されたアーキテクチャで実行されるリソース最適化コントローラの具体的な構成を示す。
【0113】
図2の場合と同様に、
図10は、コンピュータシステム1000に実装されたホストオペレーティングシステム1008で、ゲストオペレーティングシステム10060用に書かれたソフトウェアプログラム(例えば、仮想マシンプログラム)の実行を可能にするように構成されたコンピュータシステムアーキテクチャを示す。コンピュータシステムアーキテクチャは、ゲストオペレーティングシステムアーキテクチャ10060(この例では、Androidアーキテクチャ)と、ホストオペレーティングシステムアーキテクチャ1008(例えば、Windows/OS Xアーキテクチャ)と、を含む。
【0114】
図10に示されるゲストOSアーキテクチャ/Androidアーキテクチャ10060は、ゲストOS10060を実行可能なハードウェアアーキテクチャをエミュレートするように構成されたホストOSソフトウェアアプリケーション1006を実行することによって起動される仮想オペレーティングシステムを表しており、ホストOSソフトウェアアプリケーション1006は、仮想ソフトウェアまたはハイパーバイザと呼ばれることがある。ハイパーバイザ1006を実行すると、ゲストオペレーティングシステム10060、例えば、AndroidOSをエンドユーザに透過的な方法で実行することができる仮想マシンのインスタンスが作成される。ゲストOS/AndroidOS10060は、アプリケーションプログラム層10062、アプリケーションフレームワーク層10064、ライブラリ層10066、ハードウェア抽象化層(HAL)10068、および、カーネル層10070のうちの1つまたは複数を含むソフトウェアスタックを含むことができる。アプリケーション層10062は、様々なソフトウェアアプリケーションを含む。アプリケーションフレームワーク層10064は、開発者がフレームワークアプリケーションプログラミングインタフェース(API)にアクセスし、リソースの割り当て、プロセスまたはプログラムの切り替え、電話アプリケーション、電話/ラップトップ/タブレットの物理的な位置の把握など、Androidが実行されるモバイルデバイス、ラップトップ、またはタブレットの基本的な機能を管理するために使用される。アプリケーションフレームワーク層10064は、アクティビティマネージャ、ウィンドウマネージャ、コンテンツプロバイダマネージャ、ビューシステムマネージャ、パッケージマネージャ、テレフォニーマネージャ、リソースマネージャ、ロケーションマネージャ、および通知マネージャを含む様々なマネージャを含むことができる。
【0115】
ライブラリ層10066は、例えばCやC++などで書かれたライブラリを含み、様々なシステムで利用される。当該ライブラリは、Androidを実行するデバイスに対して、異なる種類のデータをどのように扱うかを指示し、アプリケーションフレームワークを介してAndroid開発者に公開される。ライブラリは、例えば、サーフェイスマネージャー、メディアフレームワークライブラリ、SQLiteライブラリ、Open GL/ESライブラリ、Free Typeライブラリ、WebKitライブラリ、SGLライブラリ、SSLライブラリ、およびlibcライブラリを含んでもよい。
【0116】
ハードウェア抽象化層10068は、Androidプラットフォームスタックと、下層のハードウェアと、の間にソフトウェアフック(ソフトウェアコンポーネント間で渡される関数呼び出しまたはメッセージまたはイベントを傍受することで、オペレーティングシステム、アプリケーションまたは他のソフトウェアコンポーネントの動作を変更または拡張するために使用されるコード)を作成するための標準的な方法を提供する。ハードウェア抽象化層1068は、ハードウェアと、ソフトウェアスタックの残りの部分と、の間の抽象化層としても機能する。
【0117】
Linuxカーネル層10070は、Androidのメモリ管理プログラム、セキュリティ設定、電源管理ソフトウェアおよび複数のドライバを含み、当該複数のドライバは、ハードウェア、ファイルシステムアクセス、ネットワークおよびプロセス間通信のための、デバイスドライバなどである。
【0118】
通常、AndroidOSソフトウェアアプリケーションからハードウェアデバイス(例えば、オーディオデバイスまたはディスプレイデバイス)への命令は、対応するカーネル内のハードウェアデバイスドライバにルーティングされ、当該ドライバは、その後、受信した命令に基づいて、ハードウェアデバイスの動作を制御する。ただし、
図10に示される例では、AndroidOS 10060は、ホストOS1008内から起動されているので、AndroidOS10060は、ホストOS1008内でプロセスまたは複数のプロセスとして実行される。このようなデバイスにおいてAndroidアプリケーションがLinuxドライバを介してハードウェアにアクセスしようとするいかなる試みも、そのようなアクセスがホストOS1008の範囲外であるため、ホストOS1008に対して無意味である。したがって、Androidアプリケーションからのデータ要求または命令は、HAL10068からLinuxカーネル10070に(
図10においてクロスの印が付された通信リンクで示されるように)送信されず、Linuxカーネルのハードウェアデバイスドライバ10072は、結果的にハードウェアの意図しない状態または誤動作を引き起こす可能性がある当該要求または命令を実行できない。
【0119】
代わりに、そのような要求または命令は、アプリケーションフレームワーク層10064、ライブラリ層10066、HAL10068およびデータチャネル、のうちの1つまたは複数を介して、ホストOSアプリケーションプレイヤー10082にルーティングされる。当該データチャネルは、HAL10068とホストOSアプリケーションプレイヤー10082との間のデータチャネルである。当該データチャネルは、Androidアプリケーションからの要求または命令がホストOSアプリケーションプレイヤー10082に中継可能に構成されている。
【0120】
ホストOSアプリケーションプレイヤー10082は、ホストOS1008に関連付けられたアプリケーションであり、ホストOS1008は、ホストOS(例えば、WindowsOS/ OS X)に関連付けられたユーザモード層において、ホストOSプロセッサによって実行される。ゲストオペレーティングシステム/Android オペレーティングシステム10060のアプリケーションは、ホストOSアプリケーションプレイヤー10082を介して、ホストOSハードウェアデバイスドライバ(複数可)10084にアクセスでき、そして、当該ホストOSハードウェアデバイスドライバ(複数)10084を介して、ハードウェアおよびホストOS1008のシステムデータにアクセスできる。
【0121】
さらに、
図10に示すコンピュータシステムでは、リソース最適化コントローラ10086が、コンピュータシステム1000内に実装されており、リソース最適化コントローラ10086は、ゲストオペレーティングシステム10060用に構成されたアプリケーションソフトウェアをホストオペレーティングシステム1008内で実行するために構成されている。
図10の実施形態では、リソース最適化コントローラ10086は、ホストOS1008にインストールされているホストOSアプリケーションプレイヤー10082に実装されており、したがって、(仮想マシン1006のスタック内で実行されている)ゲーミングアプリケーションの実行されたインスタンスから、ホストOSハードウェアデバイスドライバ10084へ、さらには下層のハードウェア1004へと渡される、関数コールまたはメッセージまたはイベントを受信するように配置されている。ホストOSアプリケーションプレイヤー10082内のリソース最適化コントローラ10086は、上述した本発明の方法および特徴のうちのいずれか1つまたは複数(好ましくはすべて)を実行するように構成されてもよく、当該本発明の方法および特徴は、(1)リソースファーミングゲーミングアプリケーションモードで、ゲーミングアプリケーションのインスタンスを実行する方法、(2)非リソースファーミングゲーミングアプリケーションモードから、ゲーミングアプリケーションのインスタンスを実行するためにリソースファーミングゲーミングアプリケーションモードへ切り替える方法、(3)リソースファーミングゲーミングアプリケーションモードから、ゲーミングアプリケーションのインスタンスを実行するために非リソースファーミングゲーミングアプリケーションモードに切り替える方法、(4)ゲーミングアプリケーションのインスタンスの実行の期間においてコンピュータのリソースの消費を削減するためのリソース最適化の方法、(5)ゲーミングアプリケーションのインスタンスが、リソースファーミングゲームプレイ状態であるか、非リソースファーミングゲームプレイ状態であるか、を判断する方法、(6)ゲーミングアプリケーションのインスタンスを再起動することなく又はゲーミングアプリケーションのインスタンスが実行されている仮想マシン環境/オペレーティングシステムのエミュレータを再起動することなくリソースファーミングゲーミングアプリケーションモードと非リソースファーミングゲーミングアプリケーションモードとの切り替えの機能のために特定された必要性に基づいて、リソース最適化技術を選択する方法、および、(7)ゲーミングアプリケーションの実行されたインスタンスのためにリソースファーミングゲーミングアプリケーションモードを実行するためのリソース最適化技術の、ルールベースおよび/または入力ベースでの選択の方法を、制限なく、含む。
【0122】
図11は、本発明を実施することが可能な例示的なコンピュータシステムを示す。
【0123】
図示されたシステムは、コンピュータシステム1102を含み、コンピュータシステム1102は、1つまたは複数のプロセッサ1104と、少なくとも1つのメモリ1106と、を含む。プロセッサ1104は、プログラム命令を実行するように構成されており、現実のプロセッサでもよいし、仮想プロセッサでもよい。コンピュータシステム1102は、開示された実施形態の使用の範囲または機能の範囲に関して、いかなる制限を示唆しないことが理解される。コンピュータシステム1102は、本発明の方法を構成するステップを実施できる、汎用コンピュータ、プログラムされたマイクロプロセッサ、マイクロコントローラ、集積回路、および、他のデバイスまたはデバイスの配置、のうち、1つまたは複数を含むことができるが、これらに限定されない。本発明に係るコンピュータシステム1102の例示的な実施形態は、1つまたは複数の、サーバ、デスクトップ、ラップトップ、タブレット、スマートフォン、携帯電話、モバイル通信デバイス、タブレット、ファブレット、および、パーソナルデジタルアシスタントを含んでもよい。本発明の一実施形態において、メモリ1106は、本発明の様々な実施形態を実施するためのソフトウェアを格納してもよい。コンピュータシステム1102は、追加の要素を有してもよい。例えば、コンピュータシステム1102は、1つまたは複数の通信チャネル1108、1つまたは複数の入力デバイス1110、1つまたは複数の出力デバイス1112、および、ストレージ1114を含んでもよい。バス、コントローラまたはネットワークなどの相互接続機構(図示せず)は、コンピュータシステム1102の要素と相互に接続する。本発明の様々な実施形態において、オペレーティングシステムソフトウェア(図示せず)は、プロセッサ1104を用いてコンピュータシステム1102で実行される様々なソフトウェアに動作環境を提供し、そして、コンピュータシステム1102の要素の様々な機能を管理する。
【0124】
通信チャネル(複数可)1108は、様々な他のコンピューティングエンティティへの通信媒体を介した通信を可能にする。通信媒体は、プログラム命令などの情報、または、通信媒体内の他のデータを提供する。通信媒体は、電気的、光学的、RF、赤外線、音響、マイクロ波、Bluetoothなどの伝送媒体で実行される有線または無線の方法を含むが、これに限定されない。
【0125】
入力デバイス(複数可)1110は、タッチスクリーン、キーボード、マウス、ペン、ジョイスティック、トラックボール、音声デバイス、スキャンデバイス、または、コンピュータシステム1102に入力を提供可能な任意の他のデバイスを含んでもよいが、これらに限定されない。本発明の一実施形態では、入力デバイス(複数可)1110は、アナログまたはデジタル形式の音声入力を受け入れるサウンドカードまたは同様のデバイスでもよい。出力デバイス(複数可)1112は、CRT、LCD、LEDディスプレイ、または、サーバ、デスクトップ、ラップトップ、タブレット、スマートフォン、携帯電話、移動体通信機器、タブレット、ファブレットおよびパーソナルデジタルアシスタント、のいずれかに関連する他のディスプレイ上のユーザインタフェース、プリンタ、スピーカ、CD/DVDライタ、または、コンピュータシステム1102からの出力を提供する他のデバイスを含んでもよいが、これらに限定されない。
【0126】
ストレージ1114は、磁気ディスク、磁気テープ、CD-ROM、CD-RW、DVD、任意のタイプのコンピュータメモリ、磁気ストライプ、スマートカード、印刷されたバーコード、または、情報を格納するために使用でき、コンピュータシステム1102によってアクセス可能な任意の他の一過性または非一過性の媒体を含んでもよいが、これらに限定されない。本発明の様々な実施形態では、ストレージ1114は、開示された実施形態のいずれかを実行するためのプログラム命令を含んでもよい。
【0127】
本発明の一実施形態では、コンピュータシステム1102は、分散型ネットワークの一部、または、利用可能なクラウドリソースのセットの一部である。
【0128】
本発明は、システム、方法、または、コンピュータプログラム製品として、数多くの方法で実施されてもよい。コンピュータプログラム製品は、例えば、コンピュータ読取可能な記憶媒体、または、プログラム命令が遠隔地から通信されるコンピュータネットワークである。
【0129】
本発明は、好適には、コンピュータシステム1102で使用するためのコンピュータプログラム製品として具現化されてもよい。本明細書に開示の方法は、典型的には、コンピュータシステム1102または他の類似のデバイスによって実行されるプログラム命令のセットを含む、コンピュータプログラム製品として実施される。プログラム命令のセットは、一連のコンピュータ読取可能なコードでもよい。一連のコンピュータ読取可能なコードは、例えば、ディスケット、CD-ROM、ROM、フラッシュドライブまたはハードディスクなどのコンピュータ読取可能な記憶媒体(ストレージ1114)などの有形媒体に格納されるか、または、光またはアナログ通信チャネル(複数可)1108を含むがこれに限定されない有形媒体のいずれかを通り、モデムまたは他のインタフェースデバイスを介して、コンピュータシステム1102に送信可能である。コンピュータプログラム製品としての本発明の実施は、マイクロ波、赤外線、ブルートゥースまたは他の伝送技術を含むがこれらに限定されない無線技術を用いた無形の形態でもよい。これらの命令は、システムに事前にロードされたり、CD-ROMなどの記憶媒体に記録されたり、インターネットまたは携帯電話網などのネットワークを介したダウンロードで利用可能になってもよい。一連のコンピュータ読取可能な命令は、本明細書ですでに開示された機能のすべてまたは一部を具現化してもよい。
【0130】
上述したシステムおよび方法の実施形態に基づき、本発明は、ゲーム内のリソースをファーミングする期間においてコンピュータシステムのリソースの利用を最適化することを可能にする。
【0131】
本明細書では、本発明の例示的な実施形態が記載および図示されているが、これらは単なる例示に過ぎないことが理解される。当業者であれば、添付の特許請求の範囲で定義された本発明の趣旨と範囲を逸脱することなく、またそれを損なうことなく、その中で形態および細部に様々な変更を加えることができることが理解される。さらに、本明細書で例示的に開示されている本発明は、好適には、本明細書で具体的に開示されていない任意の要素の不存在下で実施でき、また、具体的に企図されている特定の実施形態においては、本明細書で具体的に開示されていない任意の要素の不存在下で実施することが意図されている。