(57)【特許請求の範囲】
【請求項１】
仮想マシンイメージ制作中のコンテンツアイテム実行のためのシステムであって、前記システムは、
１つまたは複数のコンピューティングデバイスと、
コンピュータ実行可能命令が記憶されている１つまたは複数のメモリと、
を備え、
前記コンピュータ実行可能命令は、実行時に前記システムに、
コンテンツアイテムに関連付けられる情報を第１の仮想マシンインスタンス及び第２の仮想マシンインスタンス上にロードするステップと、
前記第２の仮想マシンインスタンス上で、前記コンテンツアイテムに関連付けられる前記情報を含む仮想マシンイメージの制作を開始するステップと、
前記第１の仮想マシンインスタンス上で、前記コンテンツアイテムの第１のインスタンスを実行するステップであって、前記コンテンツアイテムの前記第１のインスタンスが実行される間の時間の少なくとも一部が、前記仮想マシンイメージの前記制作中に発生するステップと、
前記仮想マシンイメージの前記制作を完了するステップと、
前記仮想マシンイメージを１つまたは複数の他の仮想マシンインスタンスに複製するステップと、
前記コンテンツアイテムの１つまたは複数の他のインスタンスを前記１つまたは複数の他の仮想マシンインスタンス上で実行するステップと、
を含む動作を実行させる、
システム。
【請求項２】
前記動作が、前記仮想マシンイメージの使用についての承認を判断するステップをさらに含み、前記仮想マシンイメージを複製するステップは、前記承認に少なくとも一部基づいて実行される、
請求項１に記載のシステム。
【請求項３】
前記動作が、前記コンテンツアイテムの前記第１のインスタンスを実行する前に、前記コンテンツアイテムに関連付けられる前記情報が、承認済みソフトウェア開発キットに関連付けられる命令を含むことを判断するために前記第１の仮想マシンインスタンスを検査するステップをさらに含む、
請求項１に記載のシステム。
【請求項４】
前記動作が、前記コンテンツアイテムの前記第１のインスタンスを実行する前に、１つまたは複数のプロキシコンポーネントを前記第１の仮想マシンインスタンス上にインストールするステップをさらに含む、
請求項１に記載のシステム。
【請求項５】
仮想マシンイメージ制作中のコンテンツアイテム実行のためのコンピュータにより実施される方法であって、前記方法は、
コンテンツアイテムに関連付けられる情報を第１の仮想マシンインスタンス及び第２の仮想マシンインスタンス上にロードするステップと、
前記第２の仮想マシンインスタンス上で、前記コンテンツアイテムに関連付けられる前記情報を含む仮想マシンイメージの制作を開始するステップと、
前記第１の仮想マシンインスタンス上で、前記コンテンツアイテムの第１のインスタンスを実行するステップであって、前記コンテンツアイテムの前記第１のインスタンスが実行される間の時間の少なくとも一部が、前記仮想マシンイメージの前記制作中に発生するステップと、
を含むコンピュータ実施方法。
【請求項６】
前記コンテンツアイテムの前記第１のインスタンスを実行する前に、前記コンテンツアイテムに関連付けられる前記情報が、承認済みソフトウェア開発キットに関連付けられる命令を含むことを判断するために前記第１の仮想マシンインスタンスを検査するステップをさらに含む、
請求項５に記載のコンピュータ実施方法。
【請求項７】
前記承認済みソフトウェア開発キットが、前記コンテンツアイテムのインスタンスの実行に関連付けられる情報を報告する、
請求項６に記載のコンピュータ実施方法。
【請求項８】
前記仮想マシンイメージの前記制作を完了するステップと、
前記仮想マシンイメージを１つまたは複数の他の仮想マシンインスタンスに複製するステップと、
前記コンテンツアイテムの１つまたは複数の他のインスタンスを前記１つまたは複数の他の仮想マシンインスタンス上で実行するステップと、
をさらに含む、
請求項５に記載のコンピュータ実施方法。
【請求項９】
前記仮想マシンイメージが、前記コンテンツアイテムにアクセスする複数のユーザにホストするために複数の仮想マシンインスタンス上で使用される、
請求項５に記載のコンピュータ実施方法。
【請求項１０】
命令が記憶されている１つまたは複数の非一時的コンピュータ可読記憶媒体であって、前記命令は、少なくとも１つの計算ノード上での実行時に、前記少なくとも１つの計算ノードに、
コンテンツアイテムに関連付けられる情報を第１の仮想マシンインスタンス及び第２の仮想マシンインスタンス上にロードするステップと、
前記第２の仮想マシンインスタンス上で、前記コンテンツアイテムに関連付けられる前記情報を含む仮想マシンイメージの制作を開始するステップと、
前記第１の仮想マシンインスタンス上で、前記コンテンツアイテムの第１のインスタンスを実行するステップであって、前記コンテンツアイテムの前記第１のインスタンスが実行される間の時間の少なくとも一部が、前記仮想マシンイメージの前記制作中に発生するステップと、
を含む動作を実行させる１つまたは複数の非一時的コンピュータ可読記憶媒体。
【請求項１１】
前記動作が、前記コンテンツアイテムの前記第１のインスタンスを実行する前に、１つまたは複数のプロキシコンポーネントを前記第１の仮想マシンインスタンス上にインストールするステップをさらに含む、
請求項１０に記載の１つまたは複数の非一時的コンピュータ可読記憶媒体。
【請求項１２】
前記動作が、
前記仮想マシンイメージの前記制作を完了するステップと、
前記仮想マシンイメージを１つまたは複数の他の仮想マシンインスタンスに複製するステップと、
前記コンテンツアイテムの１つまたは複数の他のインスタンスを前記１つまたは複数の他の仮想マシンインスタンス上で実行するステップと、
をさらに含む、
請求項１１に記載の１つまたは複数の非一時的コンピュータ可読記憶媒体。
【請求項１３】
前記動作が、前記仮想マシンイメージの使用についての承認を判断するステップをさらに含み、前記仮想マシンイメージを複製するステップは、前記承認に少なくとも一部基づいて実行される、
請求項１２に記載の１つまたは複数の非一時的コンピュータ可読記憶媒体。
【請求項１４】
前記動作が、前記承認に少なくとも一部基づいて、前記第１の仮想マシンインスタンスを終了させるステップまたは再利用するステップをさらに含む、
請求項１３に記載の１つまたは複数の非一時的コンピュータ可読記憶媒体。
【請求項１５】
前記コンテンツアイテムの前記第１のインスタンスが、少なくとも前記承認を受信するまで実行に利用可能である、
請求項１４に記載の１つまたは複数の非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、２０１５年６月１８日に出願した米国特許出願第１４／７４３，６４８号の利益を主張し、その開示全体が参照により本明細書に組み込まれる。
【背景技術】
【０００２】
近年、ビデオゲームなどの電子的に提示されるコンテンツの使用は、ますます人気が高まり普及してきている。いくつかの例では、同時に実行するコンテンツアイテムの複数のインスタンスを有するのが望ましい場合がある。これは、例えば、多数のユーザがコンテンツアイテムと対話したいときに発生し得る。例えば、いくつかの場合に、１人または複数のプレーヤが、ビデオゲームの第１のインスタンスに参加してもよく、１人または複数の他のプレーヤが同じビデオゲームの第２のインスタンスに参加してもよい。ビデオゲームの各インスタンスを実行するために使用される元となるコードは同一であってもよいが、異なるインスタンス内のプレーヤには、個別の独立した体験がもたらされ得る。例えば、任意の所与の時間において、ビデオゲームの第１及び第２のインスタンスにおけるプレーヤは、異なる仮想位置で、異なるキャラクタと対戦して、異なる進行レベルで、様々な他の異なる条件下で、参加していてもよい。
【０００３】
コンテンツアイテムの複数インスタンスのフリートを生成するための１つの可能性のある技術は、コンテンツアイテムに関連付けられる、元となるバイナリコードまたは他のコードを含む仮想マシンイメージの作成を伴う。例えば、仮想マシンイメージによって、コンテンツアイテムが多数の他の仮想マシン上に容易かつ効率的に複製されることが可能となり、それによって、多数のコンテンツアイテムインスタンスが、ユーザ要求に応じて高速にスケールアップすることが可能となり得るため、仮想マシンイメージは有利であり得る。一方、仮想マシンイメージの１つの欠点は、イメージに含まれているコンテンツアイテムコードのサイズに応じて、それが実行用にアクティブ化され複製され得る前に仮想マシンイメージを制作するために大幅な遅延時間を要することがあり得ることである。
【０００４】
以下の詳細な説明は、添付図面と併せて読まれる際により良く理解され得る。例示のために、様々な開示の態様の例としての実施形態が図面に示されるが、本発明は、開示される特定の方法及び手段に限定されない。
【図面の簡単な説明】
【０００５】
【図１】本開示に従って使用され得る、例としてのコンテンツ展開、スケーリング、及びテレメトリシステムを示す図である。
【図２】本開示に従って使用され得る、例としてのコンテンツスケーリング及び実行システムを示す図である。
【図３】本開示に従って使用され得る、例としてのテレメトリ情報ルーティング及び処理システムを示す図である。
【図４】本開示に従って使用され得る、例としてのコンテンツアイテムテスト及び展開タイムラインを示す図である。
【図５】本開示に従って使用され得る、別の例としてのコンテンツアイテム展開プロセスのタイムラインを示す図である。
【図６】本開示に従って使用され得る、仮想マシンイメージ制作中のコンテンツアイテム実行のための例としてのプロセスを示す図である。
【図７】本開示に従って使用され得る、例としてのコンピューティングシステムを示す図である。
【発明を実施するための形態】
【０００６】
イメージ制作中にコンテンツをテストするための技術が、本明細書において説明される。いくつかの実施例では、ビデオゲームなどのコンテンツアイテムが、バックエンドサービスによってユーザへの展開準備ができているという標識が、開発者から受信されてもよい。この標識に応答して、サービスは、コード、バイナリファイル、及び／または他のコンテンツアイテム情報を第１の仮想マシンインスタンスにロードしてもよい。次いで、コンテンツアイテム情報のスナップショットが取られ、第２の仮想マシンインスタンスにコピーされてもよく、それは、コンテンツアイテムに関連付けられる仮想マシンイメージを制作するために使用されてもよい。仮想マシンイメージによって、例えば、コンテンツアイテムが多数の他の仮想マシンインスタンス上に容易かつ効率的に複製されることが可能となり、それによって、多数のコンテンツアイテムインスタンスが、ユーザ要求に応じて高速にスケールアップすることが可能となり得る。しかしながら、上述したように、いくつかの場合には、仮想マシンイメージを制作するためにかなりの時間を要することがある。
【０００７】
説明される技術によれば、仮想マシンイメージが制作されている時間の少なくとも一部の間、第１の仮想マシンインスタンスが、本明細書でテストコンテンツアイテムインスタンスと呼ばれる、コンテンツアイテムインスタンスを実行するために使用されてもよい。テストコンテンツアイテムインスタンスは、開発者に利用可能とされてもよく、例えば、開発者が、コンテンツアイテムをテストし、またはコンテンツアイテムと対話するためにイメージが完全に制作されるまで待機しなくとも、仮想マシンイメージの有益性を体験できるようにし得る。追加的に、テストコンテンツアイテムインスタンスは、いくつかの場合に、開発者が、アクティブ化されたコンテンツアイテムフリートを潜在的にホストすることとなる同じバックエンドサービスによって実行されるコンテンツアイテムインスタンスをテストし、及び対話することを可能にしてもよく、それによって、開発者が、それが他のユーザに提供され得る同じ環境内で、コンテンツアイテムをテストし、及び対話することを可能にする。
【０００８】
いくつかの実施例では、テストコンテンツアイテムインスタンスの実行前に、コンテンツアイテムが承認済みソフトウェア開発キット（ＳＤＫ）を用いて作成されていることを確認し、特定バージョンのＳＤＫを検出するために、第１の仮想マシンインスタンス上のコンテンツアイテム情報が検査されてもよい。以下で極めて詳細に説明されるように、本文脈における承認済みＳＤＫは、アクティブ化されたコンテンツアイテムフリートを潜在的にホストすることとなるバックエンドサービスと統合されるＳＤＫであってもよい。承認済みＳＤＫは、コンテンツがマルチプレーヤビデオゲームまたは他のマルチユーザ環境とより効率的に対話可能にすることなどによって、例えば、コンテンツの摂取、構成、提供、及び展開がより容易かつ高速に達成できるようにし得る、コンテンツアイテムに組み込まれた機能性を提供してもよい。例えば、承認済みＳＤＫが、コンテンツの実行中インスタンスに関連付けられる情報の報告を支援してもよい。ＳＤＫの検出及び承認に加えて、１つまたは複数のプロキシコンポーネントが、テストコンテンツアイテムインスタンスの実行前に、第１の仮想マシンインスタンス上にインストールされてもよい。インストールされたプロキシコンポーネントは、バックエンドサービスによるコンテンツアイテムの効率的なホスティングをさらに支援してもよい。
【０００９】
いくつかの場合、１つまたは複数の欠点または他の問題が、高速に識別され、効率的に訂正され得るように、テストコンテンツアイテムインスタンスが、コンテンツアイテムのテストを可能にしてもよい。また、いくつかの場合、テストコンテンツアイテムインスタンスが、コンテンツアイテムと対話し、開発者が使用のために仮想マシンイメージを承認したいか否かを確認する追加的な機会を、開発者に提供してもよい。開発者が使用のために仮想マシンイメージを承認すると、テスト仮想マシンインスタンスが、終了され、及び／または再利用されてもよく、仮想マシンイメージが、コンテンツアイテムインスタンスフリートの生成のために所望により複製されてもよい。これに対し、いくつかの場合、開発者が心変わりを経て仮想マシンイメージの使用を承認しないと決定してもよく、それによって、潜在的に不必要なコストが節約される。
【００１０】
図１に、本開示に従って使用され得る、例としてのコンテンツ展開、スケーリング、及びテレメトリシステム１５０の図が示されている。図示するように、コンテンツ開発者計算ノード１００は、例えば、コンテンツ開発者または他の関係者によって操作される様々なインタフェース、コンソール、及び／またはダッシュボードを含んでもよい。ユーザ計算ノード１１０は、例えば、インターネット及び／または１つもしくは複数のローカルエリアネットワーク（ＬＡＮ）などの１つまたは複数の広域ネットワーク（ＷＡＮ）を含む１つまたは複数のネットワークを用いて、識別及び権利付与サービス１０５、コンテンツアイテムインスタンス情報サービス１１５、ならびに／またはテレメトリコンポーネント１２５と通信してもよい。理解されるように、図１には単一の開発者計算ノード１００だけが示されているが、システム１５０は、任意の数の異なるコンテンツアイテムを展開する任意の数の異なる開発者及び他の関係者を含んでもよい。いくつかの場合、コンテンツ開発者計算ノード１００は、コンテンツの開発を支援するために、１つまたは複数の統合開発環境（ＩＤＥ）アプリケーションもしくはその一部を実行してもよい。概して、以下で極めて詳細に説明されるように、コンテンツ開発者計算ノード１００は、例えば、開発者が、コンテンツアイテムを設計及び開発し、展開のためにコンテンツアイテムへのアクセスを提供し、ユーザ識別及び／または権利付与情報を提供し、コンテンツアイテムインスタンスに関連付けられるフィードバック及びメトリック、コンテンツアイテムフリート、及び履歴情報を監視及び取得すること、ならびに他の操作を可能にしてもよい。さらに以下で極めて詳細に説明するように、開発者があるコンテンツアイテムを展開する準備ができているとき、コンテンツにアクセスするための情報が、例えば、コンテンツ実行コンポーネント１２０に提供されてもよく、コンテンツ実行コンポーネント１２０は、様々なユーザにアクセス可能にされているコンテンツアイテムのインスタンスを実行するための様々な動作を実行してもよい。上述したように、いくつかの実施例では、コンテンツアイテムに関連付けられる仮想マシンイメージが制作されている時間の少なくとも一部の間、例えば、開発者がコンテンツアイテムに対して追加のテストを行うことを可能にし得る、テストコンテンツアイテムインスタンスが実行され得る。テスト対話コンポーネント１０１は、いくつかの実施例では、開発者が、テストコンテンツアイテムインスタンスと対話し、仮想マシンイメージの使用の承認または不承認を示し、テストコンテンツアイテムインスタンスに関連する、本明細書において説明される他の開発者動作を実行することを可能にしてもよい。
【００１１】
いくつかの実施例では、コンテンツの開発及び提供に加えて、開発者及び他の関係者が、提供されるコンテンツに様々なユーザがアクセスするための識別及び／または権利付与情報も提供してもよい。特に、開発者計算ノード１００は、識別及び権利付与サービス１０５と対話して、この識別及び／または権利付与情報を提供することがあってもよい。他の実施例では、情報は、他の関係者によって識別及び権利付与サービス１０５に提供されてもよい。いくつかの場合、開発者または他の関係者が、１つまたは複数のコンテンツアイテムにアクセスし得る認可されたユーザの標識を提供することによって、識別プールを構成してもよい。いくつかの実施例では、識別及び権利付与サービス１０５は、ユーザ名、パスワードなどの、様々なユーザの識別を認証するための識別認証情報を生成または受信してもよい。ユーザ識別及びそれらの関連する認証情報は、例えば、識別情報１０７に記憶されてもよい。また、いくつかの実施例では、開発者または他の関係者が、それぞれの認可されたユーザに対話する権利が付与されたコンテンツアイテムを示し得る、権利付与情報１０６を提供してもよい。いくつかの実施例では、あるユーザが、テストバージョンもしくは完全開発済みバージョン、ユーザが支払いまたは申し込みをしたあるバージョン、または任意の他の種類のコンテンツへのアクセスを許可されるだけであってもよい。
【００１２】
ユーザ計算ノード１１０は、特定のコンテンツアイテムインスタンスとの対話のためのユーザセッションなどのコンテンツへのアクセスを要求するためにユーザによって利用されてもよい。ユーザ計算ノード１１０は、例えば、インターネット及び／または１つもしくは複数のローカルエリアネットワーク（ＬＡＮ）などの１つまたは複数の広域ネットワーク（ＷＡＮ）を含む１つまたは複数のネットワークを用いて、識別及び権利付与サービス１０５、コンテンツアイテムインスタンス情報サービス１１５、ならびに／またはコンテンツ実行コンポーネント１２０と通信してもよい。理解されるように、図１には単一のユーザ計算ノード１１０だけが示されているが、システム１５０は、同一または異なるコンテンツにアクセスする任意の数の異なるユーザを含んでもよい。いくつかの場合、ユーザがコンテンツへのアクセスを要求するために、ユーザがシステム１５０により展開されるコンテンツへのアクセスを認可されるかどうかの判断が、行われてもよい。いくつかの実施例では、システムインタフェース１１１は、ユーザについての識別認証情報を識別及び権利付与サービス１０５に提供してもよく、識別及び権利付与サービス１０５は、提供されたユーザ識別認証情報を、識別情報１０７に記憶されるユーザについての識別認証情報と照合するよう試みてもよい。合致が判断されない場合、ユーザは、例えば、いかなるコンテンツへのアクセスも否定されてもよく、ならびに／またはコンテンツへのアクセスのための登録、支払い、及び／もしくは申し込みを促されてもよく、ならびに／またはそれらの動作を実行するための様々なサービスにリダイレクトされてもよい。一方、ユーザの提供された識別認証が、記憶される識別認証情報と合致する場合、ユーザの識別が認証されてもよく、ユーザは、システム１５０とのさらなる対話、及びコンテンツへのアクセス要求を許可されてもよい。
【００１３】
ユーザ計算ノード１１０のコンテンツクライアント１１２は、次いで、コンテンツアイテムインスタンス情報サービス１１５と通信して、ユーザに関する情報をコンテンツアイテムインスタンス情報サービス１１５に提供してもよい。同様に、コンテンツアイテムインスタンス情報サービス１１５は、識別及び権利付与サービス１０５と通信して、権利付与情報１０６に少なくとも一部基づいて、ユーザがアクセスのために認可され権利付与されるコンテンツを判断してもよい。以下で極めて詳細に説明されるように、次いで、ユーザは、ユーザがアクセス権付与されている選択されたコンテンツアイテムへのアクセスを要求してもよく、コンテンツアイテムインスタンス情報サービス１１５は、そのユーザのためのユーザセッションを、コンテンツ実行コンポーネント１２０内で実行する選択されたコンテンツアイテムの特定のインスタンスに合致させ、割り当ててもよい。この割り当て情報は、コンテンツ実行コンポーネント１２０に転送されてもよく、コンテンツ実行コンポーネント１２０は、コンテンツクライアント１１２と、その割り当てられ合致されたコンテンツアイテムインスタンスとの間で通信を確立してもよい。
【００１４】
コンテンツのスケーリング及び実行に加えて、コンテンツ実行コンポーネント１２０は、また、使用中のユーザセッションの数、使用されていないユーザセッションの数、コンテンツアイテムインスタンスの存続期間、メモリ使用量などの、実行中のコンテンツアイテムインスタンスに関する様々なテレメトリ情報を収集してもよい。コンテンツ実行コンポーネント１２０は、この収集されたテレメトリ情報をテレメトリコンポーネント１２５に提供してもよく、テレメトリコンポーネント１２５は、以下で極めて詳細に説明されるように、テレメトリデータをルーティングし、処理してもよい。例えば、テレメトリコンポーネントは、コンテンツアイテムインスタンス情報をコンテンツアイテムインスタンス情報サービス１１５に提供してもよい。このコンテンツアイテムインスタンス情報は、例えば、コンテンツアイテムインスタンスへのユーザセッションの合致及び割り当て、新たなコンテンツアイテムインスタンスの開始、ならびにコンテンツ開発者及び他の関係者へのコンテンツアイテムインスタンスレベルのフィードバック及びメトリックを可能にしてもよい。コンテンツアイテムインスタンス情報サービス１１５に加えて、テレメトリ情報は、コンテンツアイテムフリート情報サービス及び履歴情報サービスなどの他のサービスにも提供されてもよい。これらの及び他のテレメトリデータサービスは、図３を参照して以下で極めて詳細に説明される。
【００１５】
図２は、本開示に従って使用され得る、例としてのコンテンツスケーリング及び実行システムを示す図である。図２に示されるように、コンテンツ実行コンポーネント１２０（図１にも示されている）は、スケーリングコンポーネント２３０を含み、スケーリングコンポーネント２３０は、展開されたコンテンツをスケーリングするための様々な動作を実行してもよい。特に、コンテンツアイテムが、システム１５０を用いて展開準備ができているとき、コンテンツアイテムの展開準備ができていることを示し、位置及び／またはアドレス情報などの、コンテンツにアクセスするための情報を提供するメッセージが、開発者計算ノード１００を介して送信されてもよい。いくつかの実施例では、開発者は、また、コンテンツアイテムフリートについての名前、開発段階、及びコンテンツアイテムの説明などの追加情報も提供してもよい。アクセス情報、及びいくつかの場合に、追加情報が、コンテンツスケーリングコンポーネント２３０に提供されてもよく、スケーリングコンポーネント２３０は、仮想マシンインスタンス上のイメージとしてコンテンツアイテムの１つまたは複数のインスタンスをインストールするための命令を発行してもよい。以下で極めて詳細に説明されるように、コンテンツアイテムの追加的なインスタンスが、次いで、同一の仮想マシンインスタンス上で、及び／または任意の数の追加的な仮想マシンインスタンス上にイメージをコピーすることによって、開始されてもよい。
【００１６】
展開されたコンテンツアイテムについてのコンテンツアイテムインスタンスをグループ化したものが、コンテンツアイテムフリートと呼ばれる。図２において、コンテンツ実行コンポーネント１２０は、例としてのコンテンツアイテムフリート２１０を実行する。理解されるように、図２には単一のコンテンツアイテムフリート２１０だけが示されているが、コンテンツ実行コンポーネント１２０は、同一または異なる時間に任意の数の異なるコンテンツアイテムフリートを実行してもよい。図２の特定の実施例では、コンテンツアイテムフリート２１０は、２つの仮想マシンインスタンス２２０Ａ及び２２０Ｎを含み、それぞれが３つのコンテンツアイテムインスタンスを実行する。特に、仮想マシンインスタンス２２０Ａが、コンテンツアイテムインスタンス２０１Ａ〜Ｎを実行し、仮想マシンインスタンス２２０Ｎが、コンテンツアイテムインスタンス２２１Ａ〜Ｎを実行する。ただし、開示された技術によるコンテンツアイテムフリートは、それぞれが任意の数の異なるコンテンツアイテムインスタンスを実行する、任意の数の仮想マシンインスタンスを含んでもよいことに留意されたい。いくつかの実施例では、コンテンツアイテムインスタンス２０１Ａ〜Ｎ及び２２１Ａ〜Ｎのうちの１つまたは複数、ならびにいくつかの場合に、コンテンツアイテムインスタンス２０１Ａ〜Ｎ及び２２１Ａ〜Ｎの全てが、同時に割り当てられた複数のユーザセッションと共に実行するように構成可能であってもよい。これは、例えば、マルチプレーヤビデオゲームまたは他のマルチユーザアプリケーションにおいて発生し得るように、複数のユーザが互いに対戦し、または単一のコンテンツアイテムインスタンス内で協力することを可能にし得る。
【００１７】
いくつかの実施例では、各コンテンツアイテムインスタンス２０１Ａ〜Ｎ及び２２１Ａ〜Ｎは、制御入力（例えば、キャラクタの動き、武器の発砲、メニュー選択など）などの入力を、その割り当てられたユーザセッションから受信してもよい。また、いくつかの実施例では、各コンテンツアイテムインスタンス２０１Ａ〜Ｎ及び２２１Ａ〜Ｎは、次いで、状態データ更新、イベントデータ更新、及び他の情報などのコンテンツ情報を、割り当てられたユーザセッションについてのユーザ計算ノードに送信してもよい。ユーザ計算ノードは、このデータを使用して、それぞれのコンテンツ計算ノードにおいてコンテンツをレンダリング及び提示してもよい。いくつかの実施例では、各ユーザノードは、コンテンツアイテムに関連付けられるグラフィックデータをレンダリングするための１つまたは複数のグラフィックス処理ユニット（ＧＰＵ）を含んでもよい。
【００１８】
いくつかの他の例では、コンテンツは、コンテンツアイテムインスタンス２０１Ａ〜Ｎ及び２２１Ａ〜Ｎによって生成され、及び／または保持されるコンテンツ情報に基づいて、コンテンツ実行コンポーネント１２０によってレンダリングされてもよい。これらの実施例では、コンテンツアイテムインスタンス２０１Ａ〜Ｎ及び２２１Ａ〜Ｎは、いくつかの場合において、それぞれが１つまたは複数のＧＰＵへのアクセスを有してもよい。レンダリングされたコンテンツは、次いで、コンテンツアイテムインスタンス２０１Ａ〜Ｎ及び２２１Ａ〜Ｎによって、割り当てられたユーザセッションについてのユーザ計算ノードに送信されてもよい。
【００１９】
図２に示されるように、各コンテンツアイテムインスタンス２０１Ａ〜Ｎ及び２２１Ａ〜Ｎが、それぞれのインスタンスインタフェース２０２Ａ〜Ｎ及び２２２Ａ〜Ｎを含む。いくつかの実施例では、各インスタンスインタフェース２０２Ａ〜Ｎ及び２２２Ａ〜Ｎは、ソフトウェア開発キット（ＳＤＫ）に関連付けられ、及び／またはソフトウェア開発キット（ＳＤＫ）を用いて実施されてもよく、コンテンツアイテムインスタンスの構成、コンテンツアイテムインスタンスにおけるユーザセッションの開始、及びコンテンツアイテムインスタンスからのテレメトリ情報などの情報の収集を可能にするのを支援してもよい。例えば、いくつかの場合、１つまたは複数のＳＤＫなどのインスタンスインタフェース２０２Ａ〜Ｎ及び２２２Ａ〜Ｎに関連付けられる様々な命令が、開発者に公開され、及び／または提供されてもよい。これらの命令が、コンテンツアイテムインスタンス２０１Ａ〜Ｎ及び２２１Ａ〜Ｎが、上述したタスク及びおそらく他のタスクを実行可能にするのを支援してもよい。開発者は、同様に、展開用にアクセス可能とされているコンテンツアイテムにこれらの命令を含め、埋め込み、または関連付けてもよい。インスタンスインタフェース２０２Ａ〜Ｎ及び２２２Ａ〜Ｎによって提供されるテレメトリ情報は、例えば、使用中のユーザセッションの数、使用されていないユーザセッションの数、コンテンツアイテムインスタンスの存続期間、メモリ使用量などの、実行中のコンテンツアイテムインスタンスに関する情報を含んでもよい。
【００２０】
図２にも示されるように、インスタンスインタフェース２０２Ａ〜Ｎは、仮想マシンインスタンス２２０Ａについてのプロキシコンポーネント２０３と通信してもよく、インスタンスインタフェース２２２Ａ〜Ｎは、仮想マシンインスタンス２２０Ｎについてのプロキシコンポーネント２２３と通信してもよい。プロキシコンポーネント２０３及び２２３は、概して、コンテンツアイテムインスタンス２０１Ａ〜Ｎ及び２２１Ａ〜Ｎと、スケーリングコンポーネント２３０及びテレメトリランディング３０１などの仮想マシンインスタンス２２０Ａ〜Ｎの外部コンポーネントとの間で情報及びコマンドの交換を可能にしてもよい。特に、いくつかの実施例では、プロキシコンポーネント２０３及び２２３は、コンテンツアイテムインスタンスを開始するコマンド及びユーザセッションを特定のコンテンツアイテムインスタンスに追加するコマンドなどのコマンドを、スケーリングコンポーネント２３０から受信してもよい。いくつかの実施例では、プロキシコンポーネント２０３及び２２３は、また、実行中のコンテンツアイテムインスタンスに関して、スケーリングコンポーネント２３０及び／またはテレメトリランディング３０１に情報を提供してもよい。プロキシコンポーネント２０３及び２２３によって提供される情報は、例えば、上述したテレメトリ情報または他の関連情報のうちのいずれかなど、インスタンスインタフェース２０２Ａ〜Ｎ及び２２２Ａ〜Ｎによって収集される情報のうちのいずれかを含んでもよい。プロキシコンポーネント２０３及び２２３は、規則的な繰り返し間隔で（例えば、毎分もしくは５分毎）、特定のイベントもしくは条件に応答して、連続的もしくは断続的なストリームで、またはこれらのもしくは他の技術の任意の組み合わせを用いるなど、任意の所望の間隔でコンテンツアイテムインスタンス情報を提供してもよい。
【００２１】
いくつかの実施例では、スケーリングコンポーネント２３０は、例えば、上述のようなプロキシコンポーネント２０３及び２２３によって提供される情報に基づいて、コンテンツアイテムフリート２１０を監視してもよい。いくつかの場合、スケーリングコンポーネント２３０は、この情報を使用して、追加的な仮想マシンインスタンス及び／もしくはコンテンツアイテムインスタンスをコンテンツアイテムフリート２１０に割り当てることによって、ならびに／または既存の仮想マシンインスタンス及び／もしくはコンテンツアイテムインスタンスをコンテンツアイテムフリート２１０から割り当て解除することによって、コンテンツアイテムフリート２１０を自動的にスケーリングしてもよい。いくつかの実施例では、ある設定可能な条件によって、スケーリングコンポーネント２３０が、追加的な仮想マシンインスタンス及び／またはコンテンツアイテムインスタンスをコンテンツアイテムフリートに割り当ててもよい。これらの条件は、例えば、フリート内の全コンテンツアイテムインスタンスについての使用されていないユーザセッションの合計数及び／または平均数が、特定の数に合致するか、または特定の数より下がったと判断すること、フリート内の１つまたは複数の個々のコンテンツアイテムインスタンスについての使用されていないユーザセッションの合計数が、特定の数及び／もしくは他の条件に合致するか、またはそれより下がったと判断することを含んでもよい。また、いくつかの実施例では、スケーリングコンポーネント２３０は、特定のコンテンツ属性（例えば、モード、仮想位置、キャラクタ、武器、プロットライン、ストーリーアークなど）を有するコンテンツアイテムインスタンスのサブセットなどのコンテンツアイテムフリートの特定のサブセットが、上述の例としての割り当て条件、または他の条件のいずれかを満たすという判断に基づいて、追加的な仮想マシンインスタンス及び／またはコンテンツアイテムインスタンスをコンテンツアイテムフリートに割り当ててもよい。
【００２２】
また、いくつかの実施例では、ある設定可能な条件によって、スケーリングコンポーネント２３０が、仮想マシンインスタンス及び／またはコンテンツアイテムインスタンスをコンテンツアイテムフリートから割り当て解除してもよい。これらの条件は、例えば、フリート内の全コンテンツアイテムインスタンスについての使用されていないユーザセッションの合計数及び／または平均数が、特定の数に合致するか、または特定の数を超えたと判断すること、フリート内の１つまたは複数の個々のコンテンツアイテムインスタンスについての使用されていないユーザセッションの合計数が、特定の数及び／もしくは他の条件に合致するか、またはそれを越えたと判断することを含んでもよい。また、いくつかの実施例では、スケーリングコンポーネント２３０は、特定のコンテンツ属性（例えば、モード、仮想位置、キャラクタ、武器、プロットライン、ストーリーアークなど）を有するコンテンツアイテムインスタンスのサブセットなどのコンテンツアイテムフリートの特定のサブセットが、上述の例としての割り当て解除条件、または他の条件のいずれかを満たすという判断に基づいて、仮想マシンインスタンス及び／またはコンテンツアイテムインスタンスをコンテンツアイテムフリートから割り当て解除してもよい。割り当て解除された仮想マシンは、次いで、最終的に終了され、及び／または再利用されてもよい。いくつかの場合、割り当て解除条件が発生したと判断するとすぐに特定の仮想マシンインスタンスを終了し、及び／または再利用することが有利でない場合があることに留意されたい。これは、割り当て解除のために選択された仮想マシンインスタンスが、割り当てられたユーザセッションと共にコンテンツアイテムインスタンスを依然として実行している場合があるためである。いくつかの実施例では、割り当て解除のために選択された仮想マシンインスタンス上のコンテンツアイテムインスタンスに追加的なユーザセッションを割り当てるのをやめるために、判断が行われ得る。現在存在しているユーザセッションが一旦終了したら、割り当て解除された仮想マシンインスタンスは、終了され、及び／または再利用されてもよい。
【００２３】
上述したように、スケーリングコンポーネント２３０に情報を提供することに加えて、プロキシコンポーネント２０３及び２２３は、テレメトリランディング３０１に情報を提供してもよい。この情報は、ここで詳細に説明される様々なテレメトリコンポーネントによってルーティングされ、処理されてもよい。特に、図３は、本開示に従って使用され得る、例としてのテレメトリ情報ルーティング及び処理システムを示す図である。図３に示されるように、コンテンツ実行コンポーネント１２０（例えば、図２に示されるようにプロキシコンポーネント２０３及び２２３を含む）によって提供される情報は、テレメトリコンポーネント１２５（図１にも示される）のテレメトリランディング３０１に配信されてもよい。テレメトリランディング３０１に配信されると、テレメトリ情報は、テレメトリルーティング機能３０２によってアクセスされてもよく、テレメトリルーティング機能３０２は、概して、提供された情報を検査し、様々な要因に基づいて、提供された情報を処理機能３０３Ａ〜Ｄなどの１つまたは複数の受信者へルーティングしてもよい。特に、インスタンスレベル処理機能３０３Ａは、コンテンツアイテムインスタンス情報サービス１１５（図１及び図２にも示されている）のための情報を受信及び処理する。フリートレベル情報処理機能３０３Ｂは、コンテンツアイテムフリート情報サービス３０４のための情報を受信及び処理する。履歴情報処理機能３０３Ｃは、履歴情報サービス３０５のための情報を受信及び処理する。追加的に、テレメトリルーティング機能３０２は、任意の数の追加サービス３０６のための情報を受信及び処理し得る任意の数の追加処理機能３０３Ｄに情報をルーティングしてもよい。
【００２４】
いくつかの実施例では、テレメトリ情報をテレメトリランディング３０１に書き込む際、プロキシコンポーネント２０３及び２２３は、取り決め一式に従って、あるキーまたは他の識別情報で情報にタグ付けし、または情報を識別してもよい。これらの取り決めは、テレメトリ情報を適当な受信者に高速かつ効率的にルーティングするために、テレメトリルーティング機能３０２を支援してもよい。例えば、いくつかの場合、テレメトリ情報は、次のフォーマット、フリート識別子／インスタンス識別子／ルート識別子／タイムスタンプ／グローバル一意識別子（ＧＵＩＤ）を用いて識別されてもよい。フリート識別子は、情報が関連付けられる特定のコンテンツアイテムフリートのための識別子であってもよい。インスタンス識別子は、情報が関連付けられる特定のコンテンツアイテムインスタンスのための識別子であってもよい。ルート識別子は、情報が送信されるべき１つまたは複数の受信者（例えば、処理機能３０３Ａ〜Ｄのうちのいずれかまたは全て）を示す識別子であってもよい。タイムスタンプは、情報が収集される時間などの、情報に関連するタイムスタンプであってもよい。いくつかの場合、この識別情報は、テレメトリルーティング機能３０２がそれぞれのテレメトリ情報を適当な受信者にルーティングするために必要な全てのものであってもよい。
【００２５】
いくつかの実施例では、テレメトリルーティング機能３０２及び／または処理機能３０３Ａ〜Ｄのうちのいずれかが、ルーティング及び／または処理のためのテレメトリ情報の受信などのイベントに少なくとも一部基づいてコードを実行する、分散型コンピューティングベースの（例えば、クラウドベースの）機能であってもよい。例えば、いくつかの場合、テレメトリルーティング機能３０２は、テレメトリランディング３０１でのテレメトリ情報の受信を検出してもよく、及び／または通知されてもよい。これに応答して、テレメトリルーティング機能３０２は、例えば、上述のような識別情報に基づいてテレメトリ情報をルーティングするためのコードの実行を自動的に開始してもよい。同様に、処理機能３０３Ａ〜Ｄは、次いで、そこへルーティングされているテレメトリ情報を検出してもよく、及び／または通知されてもよく、受信した情報を整理して記憶すること、及び任意の適当な警告または通知を生成することなどによって、受信した情報を処理するためのコードの実行を自動的に開始してもよい。いくつかの例では、イベントに少なくとも一部基づいてコードを実行する分散型コンピューティングベースの（例えば、クラウドベースの）機能を用いた、テレメトリルーティング機能３０２及び／または処理機能３０３Ａ〜Ｄの実施は、例えば、新たなテレメトリ情報がルーティング及び／または処理に利用可能でなかった時間内であっても、一定の実行を維持したルーティング及び／または処理サービスに必要であり得るコンピューティングリソース量及びコストを減少させることによって、有利であってもよい。
【００２６】
コンテンツアイテムインスタンス情報サービス１１５は、概して、例えば、図２のコンテンツアイテムインスタンス２０１Ａ〜Ｎ及び２２１Ａ〜Ｎを含む、コンテンツ実行コンポーネント１２０によって実行される個々のコンテンツアイテムインスタンスに関する情報を受信及び提供してもよい。この情報は、例えば、各実行中コンテンツアイテムインスタンスについて使用中のユーザセッションの数、各実行中コンテンツアイテムインスタンスについて使用されていないユーザセッションの数、コンテンツアイテムインスタンス存続期間情報、各実行中コンテンツアイテムインスタンスにおけるメモリ使用量などを含んでもよい。コンテンツアイテムインスタンス情報サービス１１５は、この情報を使用して、例えば、ユーザセッションを特定のコンテンツアイテムインスタンスに合致させ、割り当てるのを支援してもよい。特に、図１に戻って参照すると、ユーザ計算ノード１１０のコンテンツクライアント１１２が、コンテンツアイテムインスタンス情報サービス１１５と通信して、利用可能なコンテンツに関する情報を要求し、及び利用可能なコンテンツへのアクセスを要求してもよいことがわかる。図１にも示されるように、コンテンツアイテムインスタンス情報サービス１１５は、識別及び権利付与サービス１０５と通信して、権利付与情報１０６に少なくとも一部基づいて、ユーザがアクセスする権利を付与されたのはどのコンテンツアイテムかを判断してもよい。権利付与情報１０６は、ユーザ権利付与を様々な異なるレベルの粒度で示してもよいことに留意されたい。例えば、いくつかの場合、権利付与情報１０６は、ユーザが概してシステム１５０によって実行されるコンテンツへのアクセスを許可されるかどうかを示してもよい。その他の場合、権利付与情報１０６は、より良好な粒度レベルで提供されてもよく、特定のタイトル、特定のバージョン、特定のストーリーアークまたはプロットライン、特定の仮想位置、特定のモード、特定のキャラクタ、特定の武器などの、ユーザがアクセスする権利を付与された特定のコンテンツを示してもよい。
【００２７】
いくつかの実施例では、コンテンツクライアント１１２は、コンテンツアイテムインスタンス情報サービス１１５が、全ての利用可能なコンテンツアイテム、または、あるプロットライン、ストーリーアーク、仮想位置、レベル、モード、キャラクタ、武器などの、あるコンテンツ属性を有するコンテンツアイテムのリストなど、ユーザがアクセスする権利を付与された利用可能なコンテンツアイテムに関する情報を提供することを要求してもよい。この情報を受信すると、いくつかの実施例では、ユーザが、特定のコンテンツアイテムを選択し、コンテンツクライアント１１２を介して選択されたコンテンツアイテムへのアクセス要求を提出してもよい。追加的に、コンテンツクライアント１１２は、また、あるプロットライン、ストーリーアーク、仮想位置、レベル、モード、キャラクタ、武器などのユーザにより所望されるあるコンテンツ嗜好に関する情報を、コンテンツアイテムインスタンス情報サービス１１５に提供してもよい。コンテンツアイテムインスタンス情報サービス１１５は、次いで、ユーザの要求、ユーザの嗜好、及びテレメトリコンポーネント１２５から受信したテレメトリ情報に少なくとも一部基づいて、ユーザの要求をユーザの選択したコンテンツアイテムの特定のインスタンスに合致させてもよい。
【００２８】
いくつかの実施例では、コンテンツアイテムインスタンス情報サービス１１５は、ユーザの要求した嗜好のコンテンツ属性に合致する、または少なくとも一部合致するコンテンツ属性を有する選択されたコンテンツアイテムの１つまたは複数のインスタンスを識別するように試みてもよい。コンテンツアイテムインスタンス情報サービス１１５は、多様な異なる技術を通して、実行中のコンテンツアイテムインスタンスについてのコンテンツ属性情報を取得してもよい。いくつかの実施例では、コンテンツ属性情報は、テレメトリコンポーネント１２５から利用可能とされるテレメトリ情報の一部として収集され、提供されてもよく、図２のスケーリングコンポーネント２３０から取り出されてもよく、またはコンテンツアイテムインスタンス情報サービス１１５に利用可能とされてもよい。ユーザの嗜好に少なくとも一部合致するコンテンツ属性を有する１つまたは複数のコンテンツアイテムインスタンスを識別すると、コンテンツアイテム情報サービスは、テレメトリコンポーネント１２５からのテレメトリ情報に少なくとも一部基づいて、識別されたコンテンツアイテムインスタンスのうちのいずれかについて何らかの使用されていないユーザセッションがあるかどうかを判断してもよい。いくつかの実施例では、次いで、コンテンツアイテムインスタンス情報サービス１１５は、少なくとも１つの使用されていないユーザセッションを有する、識別されるコンテンツアイテムインスタンスのうちの１つにユーザを割り当ててもよい。いくつかの実施例では、ユーザは、ユーザの嗜好に最も密接に合致するコンテンツ属性を持つ少なくとも１つの使用されていないユーザセッションを有する、識別されるコンテンツアイテムインスタンスに割り当てられてもよい。他の実施例では、ユーザは、例えば、ユーザの嗜好、使用されていないユーザセッションの数などを含む要因の組み合わせに基づいて、コンテンツアイテムインスタンスに割り当てられてもよい。例えば、ユーザが、参加するコンテンツアイテムインスタンスについて５つの異なるコンテンツ属性嗜好を指定するシナリオを考える。ここで、第１のコンテンツアイテムインスタンスは、５つ全てのユーザの嗜好に合致するが、使用されていないユーザセッションを１つしか有しておらず、一方、第２のコンテンツアイテムインスタンスは、ユーザの嗜好５つのうち４つに合致するが、使用されていないユーザセッションを１０有すると仮定する。このシナリオでは、嗜好が第１のコンテンツアイテムインスタンスにより強く相関し得る他のユーザに、利用可能な第１のコンテンツアイテムインスタンスのただ１つ残っている使用されていないユーザセッションをとっておくために、ユーザを第２のコンテンツアイテムインスタンスに割り当てることが有利である場合がある。また、いくつかの実施例では、ユーザが、割り当てのために識別されたコンテンツアイテムインスタンスのうちの１つを選択できるようにするため、またはそのような選択を行うための入力を提供できるようにするために、コンテンツアイテムインスタンス情報サービス１１５は、ユーザの嗜好をコンテンツクライアント１１２に少なくとも一部合致させる少なくとも１つの使用されていないユーザセッションを有する識別されたコンテンツアイテムインスタンスに関する情報を提供してもよい。
【００２９】
いくつかの実施例では、コンテンツアイテムインスタンス情報サービス１１５は、既存の、既に開始されて実行中のコンテンツアイテムインスタンスにユーザを合致させ、割り当てる代わりに、スケーリングコンポーネント２３０が、ユーザを割り当てるべき追加のコンテンツアイテムインスタンスを開始することを要求してもよい。これは、例えば、フリート内に存在するコンテンツアイテムインスタンスのうちのいずれも、いかなる残りの使用されていないユーザセッションを有しないとき、及び／またはフリート内に存在するコンテンツアイテムインスタンスのうちのいずれも、ユーザの要求するコンテンツ属性嗜好に十分に合致すると判断されるコンテンツ属性を有しないときに、発生し得る。
【００３０】
一旦ユーザが特定のコンテンツアイテムインスタンスに合致され、割り当てられたら、コンテンツアイテムインスタンス情報サービス１１５は、割り当てられたコンテンツアイテムインスタンスの標識（または、新たなコンテンツアイテムインスタンスを開始する命令）をスケーリングコンポーネント２３０に提供してもよい。スケーリングコンポーネント２３０は、同様に、例えば、ユーザ計算ノード１１０においてコンテンツクライアント１１２と通信するように、割り当てられたコンテンツアイテムインスタンスに命令することによって、ユーザのためのユーザセッションと割り当てられたコンテンツアイテムインスタンスとの間で通信を確立してもよい。上述したように、いくつかの実施例では、これらの通信は、割り当てられたコンテンツアイテムインスタンスによって、状態情報、イベント情報、レンダリングされたグラフィックス及びオーディオ、ならびに／またはコンテンツアイテムインスタンスに関連付けられる他の情報を、ユーザセッションに対応するコンテンツクライアント１１２に送信することを含んでもよい。また、いくつかの実施例では、これらの通信は、コンテンツクライアント１１２によって、制御入力（例えば、キャラクタの動き、武器の発砲、メニュー選択など）などの入力を、割り当てられたコンテンツアイテムインスタンスに送信することを含んでもよい。
【００３１】
したがって、上述したように、コンテンツアイテムインスタンス情報サービス１１５は、テレメトリコンポーネント１２５によって提供されるコンテンツアイテムインスタンスレベルテレメトリ情報を使用して、ユーザセッションをコンテンツアイテムインスタンスに合致させ、割り当てるプロセスを支援してもよい。これらの合致技術に加えて、コンテンツアイテムインスタンス情報サービス１１５に提供されるコンテンツアイテムインスタンスレベルテレメトリ情報は、例えば、コンテンツアイテムインスタンスレベルフィードバック及びメトリックを開発者及びおそらく他の関係者に提供するためにも使用されてもよい。特に、図１及び図３の両方に示されるように、開発者計算ノード１００は、コンテンツアイテムインスタンス情報サービス１１５にアクセスして、各実行中コンテンツアイテムインスタンスについての使用中のユーザセッションの数、各実行中コンテンツアイテムインスタンスについての使用されていないユーザセッションの数、コンテンツアイテムインスタンス存続期間情報、各実行中コンテンツアイテムインスタンスによるメモリ使用量などの、コンテンツアイテムインスタンスレベル情報を要求してもよい。
【００３２】
図３に戻って参照すると、コンテンツアイテムインスタンス情報サービス１１５に加えて、テレメトリルーティング機能３０２は、各処理機能３０３Ｂ〜Ｄを通して、コンテンツアイテムフリート情報サービス３０４、履歴情報サービス３０５、及び他の追加サービス３０６にテレメトリ情報をルーティングしてもよい。コンテンツアイテムフリート情報サービス３０４は、概して、コンテンツアイテムフリートレベルテレメトリ情報を受信し、開発者及び／または他の関係者に提供してもよい。コンテンツアイテムフリートレベル情報は、フリート内の使用中ユーザセッション、フリート内の使用されていないユーザセッション、フリートについてのインスタンス存続期間情報、フリートによるメモリ使用量、フリート内の実行中インスタンスの数、インスタンス終了情報などに関する情報を含んでもよい。使用中ユーザセッションの場合、フリートレベル情報は、例えば、全てのフリートインスタンスについての使用中ユーザセッションの総数、全てのフリートインスタンスについての使用中ユーザセッションの平均数、使用中セッションが最小のフリートインスタンス内の使用中セッションの数、使用中セッションが最大のフリートインスタンス内の使用中セッションの数などを含んでもよい。使用されていないユーザセッションの場合、フリートレベル情報は、例えば、全てのフリートインスタンスについての使用されていないユーザセッションの総数、全てのフリートインスタンスについての使用されていないユーザセッションの平均数、使用されていないセッションが最小のフリートインスタンス内の使用されていないセッションの数、使用されてないセッションが最大のフリートインスタンス内の使用されていないセッションの数などを含んでもよい。インスタンス存続期間情報の場合、フリートレベル情報は、例えば、特定期間内に終了したフリートインスタンスについての合計、平均、最大、及び最小の存続期間、ならびに特定期間内に終了したインスタンスの数を含んでもよい。メモリ使用量情報の場合、フリートレベル情報は、例えば、フリートインスタンスについての合計、平均、最大、及び最小のメモリ使用量を含んでもよい。
【００３３】
いくつかの実施例では、コンテンツアイテムフリート情報サービス３０４及び／またはコンテンツアイテムインスタンス情報サービス１１５は、開発者または他の関係者が、コンテンツアイテムフリート及び／またはインスタンスに関連するあるイベントまたは条件を通知され得るように、警告及び／または他の通知を設定できるようにしてもよい。警告を引き起こし得るいくつかの例としての条件は、使用中のフリートセッションの総数が、指定されたレベルを満たすこと、超えること、またはそれよりも低下すること、１つまたは複数のフリートインスタンスが、使用中セッションの指定数よりも少ない数を有すること、使用されていないフリートセッションの総数が、指定されたレベルを満たすこと、超えること、またはそれよりも低下すること、フリートインスタンスが、指定された平均存続期間より短い存続期間を有すること、フリートインスタンスが、指定された平均または最大メモリ使用量より大きいメモリ使用量を有すること、及びその他の条件である。
【００３４】
履歴情報サービス３０５は、概して、コンテンツアイテムフリート及び／またはコンテンツアイテムインスタンスに関する履歴情報を受信し、保持し、及び提供してもよい。いくつかの実施例では、履歴情報サービスは、以前に終了したコンテンツアイテムフリート及び／もしくはコンテンツアイテムインスタンスに関する履歴情報、ならびに／または全体的もしくは部分的に実行され続け得るコンテンツアイテムフリート及び／もしくはコンテンツアイテムインスタンスに関する情報を含んでもよい。履歴情報サービス３０５は、例えば、上で詳細に説明したインスタンスレベル情報及び／もしくはフリートレベル情報のいずれかもしくは全て、ならびに／または任意の他の関連する履歴情報を提供してもよい。いくつかの実施例では、履歴情報は、開発者及び／または他の関係者が、過去６０日もしくは９０日間、または任意の他の適切な期間などの、ある指定可能な履歴期間の情報を要求できるようにしてもよい。
【００３５】
コンテンツアイテムのテスト及び展開のためのいくつかの例としての技術が、ここで詳細に説明される。特に、図４は、本開示に従って使用され得る、例としてのコンテンツアイテムテスト及び展開のタイムライン４０５を示す図である。タイムライン４０５は、縮尺通りに描かれておらず、任意の特定のイベントの前、間、または後に発生する、いかなる特定の正確な時間量も示すことを意図するものではないことに留意されたい。図４に示されるように、イベント４１０において、例えばバックエンドサービス上で、ビデオゲームなどのコンテンツアイテムの展開準備ができているという標識が、受信される。標識は、コンテンツアイテムの開発者から受信されてもよい。コンテンツアイテム情報は、コード、バイナリファイル、開発者インストールスクリプト、及びコンテンツアイテムに関連付けられる他の情報などの、コンテンツアイテムに関連付けられる情報を含んでもよい。イベント４１０において受信される標識に加えて、開発者は、例えば、コンテンツアイテム情報が記憶され、取り出され得る１つまたは複数の位置の標識も提供してもよい。開発者は、例えば、コンテンツアイテムのインスタンスのフリートについての名前、コンテンツアイテムについての開発段階、コンテンツアイテムの説明、及びその他の情報も提供してもよい。
【００３６】
コンテンツアイテムの展開準備ができているという標識を受信すると、バックエンドサービスは、例えば、開発者によって提供される位置情報に基づいて、関連するコンテンツアイテム情報を配置してもよい。イベント４１２において、サービスは、コンテンツアイテム情報を第１の仮想マシンインスタンス上にロードしてもよい。コンテンツアイテム情報をロードするプロセスは、例えば、コンテンツアイテムに関連付けられるコード及び／またはバイナリファイルのロード、ならびにコンテンツアイテムに関連付けられる開発者インストールスクリプトの実行を含んでもよい。
【００３７】
コンテンツアイテム情報のロードが完了すると、ロードされたコンテンツアイテム情報のスナップショット（即ち、コピー）またはそれらの任意の部分が取り込まれてもよい。イベント４１３を実行すると、タイムライン４０５は、上部４０５Ａ及び下部４０５Ｂに分岐する。このようなタイムライン４０５の分岐は、部分４０５Ａ及び４０５Ｂが、互いに並行して、または部分的に並行して実行され得ることを伝えることを意図するものである。イベント４１４において、イベント４１３において作成されたスナップショットを第２の仮想マシンインスタンスにコピーするなどによって、コンテンツアイテム情報が第２の仮想マシンインスタンス上にロードされる。イベント４１５において、仮想マシンイメージ制作プロセスが、第２の仮想マシンインスタンス上で開始される。仮想マシンイメージ制作プロセスは、第２の仮想マシンインスタンス上にロードされるコンテンツアイテム情報に少なくとも一部基づいて、仮想マシンイメージを生成することを含んでもよい。それに応じて、仮想マシンイメージは、第２の仮想マシンインスタンス上にロードされるコンテンツアイテム情報を含んでもよい。追加的に、後述されるように、仮想マシンイメージの各複製もまた、第２の仮想マシンインスタンス上にロードされるコンテンツアイテム情報を含んでもよい。いくつかの実施例では、仮想マシンイメージは、オペレーティングシステムを伴う読み取り専用ファイルシステムイメージを含んでもよい。また、いくつかの実施例では、仮想マシンイメージは、署名され、暗号化され、圧縮され、及び情報の様々な部分またはチャンクに分割されてもよい。いくつかの実施例では、仮想マシンイメージは、アマゾンマシンイメージ（ＡＭＩ）であってもよい。仮想マシンイメージを制作するのに要する期間は、仮想マシンイメージ内に含まれている情報量に少なくとも一部基づくことがある。例えば、より大量の情報を含む仮想マシンイメージは、典型的には、より少ない量の情報を含む仮想マシンイメージよりも制作により多くの時間を要し得る。
【００３８】
上部タイムライン４０５Ａに戻って参照すると、コンテンツアイテム情報のスナップショットを取った後、イベント４１６において第１の仮想マシンインスタンス上で、ＳＤＫが検出及び承認され得ることが分かる。いくつかの実施例では、イベント４１３及び４１６の実行の間に、テスト仮想マシンインスタンスをシャットダウンし、リスタートする必要があることがある。上述したように、いくつかの実施例では、コンテンツアイテムの展開されたインスタンスをホストする１つまたは複数のサービスが、１つまたは複数のサービスと統合される１つまたは複数のＳＤＫを公開してもよい。これらの実施例では、ＳＤＫは、コンテンツがマルチプレーヤビデオゲームまたは他のマルチユーザ環境とより効率的に対話可能にすることなどによって、例えば、コンテンツの摂取、構成、提供、及び展開が、より容易かつ高速に達成できるようにし得る、コンテンツアイテムに組み込まれたコード及び他の機能性を提供してもよい。例えば、コンテンツを作成するために使用されるＳＤＫは、１つまたは複数のユーザのための新たなユーザセッションの構成、ならびに、使用中ユーザセッションの数、使用されていないユーザセッションの数、コンテンツアイテムインスタンス存続期間、メモリ使用量などの、実行中のコンテンツアイテムに関する情報の報告及び収集を支援してもよい。
【００３９】
したがって、イベント４１６において、コンテンツアイテムが承認済みＳＤＫを使用して作成されていることを確認するため、及びコンテンツアイテムを作成するために使用された特定のバージョンのＳＤＫを検出するために、第１の仮想マシンインスタンス上のコンテンツアイテム情報が検査されてもよい。本文脈における承認済みＳＤＫは、アクティブ化されたコンテンツアイテムフリートを潜在的にホストすることとなるバックエンドサービスと統合されるＳＤＫであってもよい。例えば、承認済みＳＤＫに合致するか、または関連付けられる様々な命令を識別するために、第１の仮想マシンインスタンス上のコンテンツアイテム情報を検査することによって、ＳＤＫがイベント４１６において承認されてもよい。いくつかの実施例では、承認済みＳＤＫは、図２のインスタンスインタフェース２０２Ａ〜Ｎ及び２２２Ａ〜Ｎなどのコンテンツ展開サービスのインスタンスインタフェースに情報を報告すること、または対話することが可能であってもよい。また、いくつかの実施例では、コンテンツアイテムの展開されたインスタンスとともに使用する特定バージョンのインスタンスインタフェースが、イベント４１６においてコンテンツアイテム情報内で検出されたＳＤＫのバージョンに基づいて判断されてもよい。第１の仮想マシンインスタンス上でＳＤＫを検出すること及び承認することによって、仮想マシンイメージ上、またはその複製上でＳＤＫを引き続き検出及び承認する必要がない場合があることに留意されたい。
【００４０】
いくつかの実施例では、承認済みＳＤＫが、第１の仮想マシンインスタンス上のコンテンツアイテム情報内で検出できない場合、コンテンツアイテムが、サービスによるホスティングに現在適当でないと判断されてもよい。開発者は、このエラーを通知され、承認済みＳＤＫを含むようにコンテンツアイテムを編集または再作成するよう依頼されてもよい。このような場合、第１の仮想マシンインスタンス及び仮想マシンイメージの使用が、承認されなくてもよく、及び／または終了されてもよい。
【００４１】
イベント４１８において、プロキシコンポーネントが、第１の仮想マシンインスタンス上にインストールされる。イベント４１８においてインストールされたプロキシコンポーネントは、例えば、図２のプロキシコンポーネント２０３及び２２３に類似または同一であってもよい。上述したように、このようなプロキシコンポーネントは、概して、実行中のコンテンツアイテムインスタンスと、図２のスケーリングコンポーネント２３０及びテレメトリランディング３０１などの他のコンポーネントとの間の、情報及びコマンドの交換を可能にしてもよい。プロキシコンポーネント２０３及び２２３の機能及び動作は、上で詳細に説明されており、ここでは繰り返さない。
【００４２】
図４に示されるように、ＳＤＫの検出及び承認（イベント４１６）、及びプロキシコンポーネントのインストール（イベント４１８）の後、本明細書でテストコンテンツアイテムインスタンスと呼ばれる、第１の仮想マシンインスタンス上で実行されるコンテンツアイテムインスタンスが、期間４２０の間に実行するため利用可能になってもよい。特に、期間４２０の任意の部分の間に、１つまたは複数のユーザセッションが、テストコンテンツアイテムインスタンスに割り当てられ、接続されてもよい。いくつかの実施例では、１つまたは複数の接続されたユーザセッションが、コンテンツアイテムのテストまたはコンテンツアイテムとの対話のためにコンテンツアイテムの開発者によって動作されてもよい。図４に示されるように、テストコンテンツアイテムインスタンスは、仮想マシンイメージ制作時間（即ち、タイムラインの部分４０５Ｂ上のイベント４１４と４２２との間の時間）の少なくとも一部の間、実行に利用可能にされる。上述したように、テストコンテンツアイテムインスタンスを用いたコンテンツアイテムの実行及びテストは、いくつかの場合に、開発者が、アクティブ化されたコンテンツアイテムフリートを潜在的にホストすることとなる同じバックエンドサービスによって実行されるコンテンツアイテムインスタンスをテストし、対話することを可能にしてもよく、それによって、開発者が、それが他のユーザに提供され得る同じ環境内で、コンテンツアイテムをテストし、対話することを可能にする。いくつかの場合、１つまたは複数の欠点または他の問題が、高速に識別され、効率的に訂正され得るように、テストコンテンツアイテムインスタンスが、コンテンツアイテムをテストすることを可能にしてもよい。追加的に、テストコンテンツアイテムインスタンスは、例えば、開発者が、コンテンツアイテムをテストし、またはコンテンツアイテムと対話するためにイメージが完全に制作されるまで待機しなくとも、仮想マシンイメージの有益性を体験できるようにしてもよい。
【００４３】
下部タイムライン４０５Ｂに戻って参照すると、イベント４２２において、仮想マシンイメージ制作が完了し得ることが分かる。いくつかの実施例では、仮想マシンイメージ制作が完了すると、開発者には、仮想マシンイメージ制作が完了したこと、及び仮想マシンイメージの使用準備ができていることが通知されてもよい。続いて、イベント４２４において、仮想マシンイメージを使用するための承認が、判断されてもよい。例えば、仮想マシンイメージを使用するための承認が、開発者から受信されてもよい。仮想マシンイメージの使用が、仮想マシンイメージ制作の完了後すぐに開発者によって承認されなければならないという必要はないことに留意されたい。図４の具体例では、仮想マシンイメージ制作の完了（イベント４２２）とその使用のための承認の判断（イベント４２４）との間に時間遅延がある。この時間遅延は、下部タイムライン４０５Ｂ内のイベント４２２及び４２４間の中断によって示され、上部タイムライン４０５Ａ内のイベント４２２及び４２４間の破線によっても示される。いくつかの実施例では、イベント４２２及び４２４間の時間遅延の間、仮想マシンイメージ制作が完了した後であっても、開発者は、テストコンテンツアイテムインスタンスをテストし、テストコンテンツアイテムインスタンスと対話し続けてもよい。
【００４４】
いくつかの実施例では、仮想マシンイメージの承認及び使用は、仮想マシンイメージが複製される仮想マシンインスタンスを取得し、使用するためのコストなど、開発者に様々なコストを生じ得る。いくつかの場合、開発者は、これらのコストが正当であり、仮想マシンイメージ制作が完了する時点ですぐに承認することが望ましいということに確信がない場合がある。したがって、これらの及びその他の場合、仮想マシンイメージ制作が完了した後であっても、開発者は、テストコンテンツアイテムインスタンス上でコンテンツアイテムをテストし、コンテンツアイテムと対話し続けたい場合がある。これによって、開発者は、仮想マシンイメージの使用を承認するか否か、及びそのような承認に関連し得るコストを負うか否かについての最終決定を行う前に、コンテンツアイテムのさらなるテスト及びコンテンツアイテムとの追加の対話を行うことが可能となる。
【００４５】
図４の実施例では、仮想マシンイメージの使用に対する承認を判断すること（イベント４２４）が、イベント４２６及び４２８の実行を引き起こす。特に、仮想マシンイメージの使用に対する承認を判断した後すぐにまたは間もなく、イベント４２６において、第１の仮想マシンインスタンスが終了され、または再利用されてもよい。理解されるように、一旦第１の仮想マシンインスタンスが終了され、または再利用されると、イベント４２６における期間４２０の満了によって示されるように、テストコンテンツアイテムインスタンスが実行に利用可能でなくなることとなる。
【００４６】
追加的に、仮想マシンイメージの使用に対する承認を判断した後、イベント４２８において、コンテンツアイテムフリートがアクティブ化される。特に、アクティブ化されると、コンテンツアイテムフリートは、仮想マシンイメージを１つまたは複数の他の仮想マシンインスタンスに複製することによって生成されてもよい。上述したように、例えば、仮想マシンイメージによって、コンテンツアイテムが多数の他の仮想マシン上に容易かつ効率的に複製されることが可能となり、それによって、多数のコンテンツアイテムインスタンスが、ユーザ要求に応じて高速にスケールアップすることが可能となり得るため、仮想マシンイメージは有利であり得る。
【００４７】
いくつかの実施例では、仮想マシンイメージの使用に対する明示的な承認が、開発者から受信される必要がない場合があることに留意されたい。例えば、仮想マシンイメージの使用に対する承認の判断が、開発者からの明示的な承認を受信することなく推測されることがある。いくつかの実施例では、仮想マシンイメージの使用に対する承認が、仮想マシンイメージの制作の完了後自動的に推測されてもよく、フリートがアクティブ化されてもよい。
【００４８】
上述したように、いくつかの実施例では、開発者が、仮想マシンイメージの使用を承認しないことを選択してもよい。これは、例えば、テストコンテンツアイテムインスタンスをテストすることなどに基づいて、それらがコンテンツアイテムを満たさないと開発者が判断し、フリートアクティブ化及び実行のコストを負いたくないか、または仮想マシンイメージの使用を承認したくないときに発生することがある。いくつかの場合、開発者は、コンテンツアイテムフリートが、アクティブ化について承認されないことを明示的に示すメッセージを送信してもよい。その他の場合、明示的な承認を受信せずにイメージ制作の完了後期間が満了するなどの要因、またはその他の要因に基づいて、フリートアクティブ化の不承認が推測されることがある。図５は、仮想マシンイメージが使用のために承認されない実施例を示す。特に、図５は、イベント４２２の仮想マシンイメージ制作の完了までは、図４と同一である。一方、図５に示されるように、仮想マシンイメージ制作完了に続いて、イベント５２４において仮想マシンイメージ使用の不承認が判断される。上述したように、イベント５２４は、明示的な不承認の受信、または、例えば、期間満了に基づく不承認の推測を含んでもよい。イベント５２４の発生後、第１の仮想マシンインスタンスが、終了され、または再利用され（イベント４２６）、仮想マシンイメージもまた、終了され、または再利用される（イベント５２６）。
【００４９】
図６は、本開示に従って使用され得る、仮想マシンイメージ制作中のコンテンツアイテム実行のための例としてのプロセスを示す図である。図６に示されるように、動作６１０において、ビデオゲームなどのコンテンツアイテムの展開準備ができているという標識が、（例えば、開発者から）受信される。コンテンツアイテム情報は、コード、バイナリファイル、開発者インストールスクリプト、及びコンテンツアイテムに関連付けられる他の情報などの、コンテンツアイテムに関連付けられる情報を含んでもよい。上述したように、開発者は、また、コンテンツアイテム情報が記憶され、取り出され得る１つまたは複数の位置を示してもよい。
【００５０】
コンテンツアイテムの展開準備ができているという標識を受信すると、動作６１２において、コンテンツアイテムに関連付けられるコンテンツアイテム情報が、第１の仮想マシンインスタンス上にロードされてもよい。上述したように、コンテンツアイテム情報をロードするプロセスは、例えば、コンテンツアイテムに関連付けられるコード及び／またはバイナリファイルのロード、ならびにコンテンツアイテムに関連付けられる開発者インストールスクリプトの実行を含んでもよい。
【００５１】
コンテンツアイテム情報のロードが完了すると、ロードされたコンテンツアイテム情報のスナップショット（即ち、コピー）またはそれらの任意の部分が、動作６１４において作られてもよい。動作６２２において、動作６１４で作成されたスナップショットを第２の仮想マシンインスタンスにコピーすること、またはコンテンツアイテム情報を第２の仮想マシンインスタンス上にロードすることなどによって、コンテンツアイテム情報が第２の仮想マシンインスタンス上にロードされる。動作６２４において、仮想マシンイメージ制作プロセスが、第２の仮想マシンインスタンス上で開始される。上述したように、仮想マシンイメージ制作プロセスは、第２の仮想マシンインスタンス上にロードされるコンテンツアイテム情報に少なくとも一部基づいて、仮想マシンイメージを生成することを含んでもよい。それに応じて、仮想マシンイメージ、及びその各複製は、第２の仮想マシンインスタンス上にロードされるコンテンツアイテム情報を含んでもよい。
【００５２】
動作６２６において、仮想マシンイメージ制作が完了したかどうかが判断される。いくつかの実施例では、仮想マシンイメージの制作完了の標識が、開発者に送信されてもよい。仮想マシンイメージ制作が完了すると、プロセスは動作６２８に進み、動作６２８において、仮想マシンイメージを使用するための承認が受信された（または推測された）かどうかが判断される。
【００５３】
図６に示されるように、動作６１４の実行後、別の系列の動作（即ち、動作６１６、６１８、及び６２０）が、第１の仮想マシンイメージに関連して実行されることが分かる。特に、動作６１６において、ＳＤＫが、第１の仮想マシンインスタンス上で検出され、承認されてもよい。上述したように、コンテンツアイテムが承認済みＳＤＫを使用して作成されていることを確認するため、及びコンテンツアイテムを作成するために使用された特定のバージョンのＳＤＫを検出するために、第１の仮想マシンインスタンス上のコンテンツアイテム情報が検査されてもよい。本文脈における承認済みＳＤＫは、アクティブ化されたコンテンツアイテムフリートを潜在的にホストすることとなるバックエンドサービスと統合されるＳＤＫであってもよい。例えば、承認済みＳＤＫに合致するか、または関連付けられる様々な命令を識別するために、第１の仮想マシンインスタンス上のコンテンツアイテム情報を検査することによって、ＳＤＫが動作６１６において承認されてもよい。
【００５４】
動作６１８において、プロキシコンポーネントが、第１の仮想マシンインスタンス上にインストールされる。上述したように、このようなプロキシコンポーネントは、概して、実行中のコンテンツアイテムインスタンスと、図２のスケーリングコンポーネント２３０及びテレメトリランディング３０１などの他のコンポーネントとの間の、情報及びコマンドの交換を可能にしてもよい。
【００５５】
動作６２０において、テストコンテンツアイテムインスタンスが実行に利用可能であると開発者に通知することなどによって、テストコンテンツアイテムインスタンスが、実行に利用可能とされる。サブ動作６２０Ａにおいて、テストコンテンツアイテムインスタンスが、第１の仮想マシンインスタンス上で実行される。テストコンテンツアイテムインスタンスが実行される時間の少なくとも一部が、仮想マシンイメージ制作中に発生してもよい。上述したように、テストコンテンツアイテムインスタンスは、例えば、開発者が、コンテンツアイテムをテストし、またはコンテンツアイテムと対話するためにイメージが完全に制作されるまで待機しなくとも、仮想マシンイメージの有益性を体験できるようにしてもよい。いくつかの場合、１つまたは複数の欠点または他の問題が、高速に識別され、効率的に訂正され得るように、テストコンテンツアイテムインスタンスが、コンテンツアイテムをテストすることを可能にしてもよい。追加的に、テストコンテンツアイテムインスタンスを用いたコンテンツアイテムの実行及びテストは、いくつかの場合、開発者が、アクティブ化されたコンテンツアイテムフリートを潜在的にホストすることとなる同じバックエンドサービスによって実行されるコンテンツアイテムインスタンスをテストし、及び対話することを可能にしてもよく、それによって、開発者が、それが他のユーザに提供され得る同じ環境内で、コンテンツアイテムをテストし、及び対話することを可能にする。
【００５６】
図６に示されるように、少なくとも、動作６２８において、仮想マシンイメージ使用承認判断が受信され、または推測されたと判断されるまで（例えば、仮想マシンインスタンスの使用が承認され、または不承認とされるまで）、テストコンテンツアイテムインスタンスは、実行に利用可能とされ続けてもよい（かつ、時には実行され続けてもよい）。上述したように、仮想マシンイメージの使用が、仮想マシンイメージ制作の完了後すぐに開発者によって承認されなければならないという必要はない。むしろ、仮想マシンイメージ制作が完了した後であっても、開発者は、承認判断を遅延させることがあってもよく、テストコンテンツアイテムインスタンスをテストし、テストコンテンツアイテムインスタンスと対話し続けてもよい。したがって、仮想マシンイメージ使用承認判断が受信され、または推測されるまで、動作６２８及び６２０を通して図６のプロセスが循環し続けてもよい。上述したように、いくつかの実施例では、動作６２８は、仮想マシンイメージの使用を明示的に承認または不承認とする、開発者からのメッセージを受信することを含んでもよい。他の実施例では、仮想マシンイメージの使用の承認または不承認が、推測されてもよい。例えば、いくつかの場合、承認が自動的に推測されてもよい。その他の場合、開発者が、仮想マシンイメージ制作完了後指定された期間内に、明示的な承認を提供できない場合に、不承認が推測されてもよい。
【００５７】
動作６３０において、仮想マシンイメージの使用が承認されたかどうかが判断される。動作６３０において、仮想マシンの使用が承認されないと判断される場合、動作６３２において、第１の仮想マシンインスタンス及び仮想マシンイメージの両方が、終了され、及び／または再利用されてもよい。
【００５８】
一方、動作６３０において、仮想マシンの使用が承認されたと判断される場合、仮想マシンイメージ使用の承認に少なくとも基づいて、動作６３４、６３６、及び／または６３８が実行されてもよい。特に、プロセスは、動作６３４に進んでもよく、動作６３４において、第１の仮想マシンインスタンスが、終了され、または再利用されてもよい。動作６３６において、仮想マシンが、１つまたは複数の他の仮想マシンインスタンスに複製されてもよい。上述したように、例えば、仮想マシンイメージによって、コンテンツアイテムが多数の他の仮想マシン上に容易かつ効率的に複製されることが可能となり、それによって、多数のコンテンツアイテムインスタンスが、ユーザ要求に応じて高速にスケールアップすることが可能となり得るため、仮想マシンイメージは有利であり得る。動作６３８において、コンテンツアイテムインスタンスが、仮想マシンイメージが複製された他の仮想マシンインスタンス上で実行される。これらのコンテンツアイテムインスタンスが、コンテンツアイテムの実行中のインスタンスのスケーラブルなフリートを形成してもよく、それによって、多数のユーザが、同時に、または部分的に同時にコンテンツアイテムと接続及び対話することが潜在的に可能となる。したがって、いくつかの実施例では、仮想マシンイメージは、コンテンツアイテムにアクセスする複数のユーザにホストするために複数の仮想マシンインスタンス上で使用されてもよい。例えば、いくつかの場合、仮想マシンイメージが、複数の仮想マシンインスタンス上で使用されて、クラウドまたは他の分散型コンピューティング環境において、複数のゲームセッションまたは他のコンテンツアイテムセッションのホスティングを可能にし得る。
【００５９】
追加的に、本開示の実施形態は、以下の条項を考慮して説明され得る。
１．１つまたは複数のコンピューティングデバイスと、
コンテンツアイテムに関連付けられる情報を第１の仮想マシンインスタンス及び第２の仮想マシンインスタンス上にロードすること、
前記第２の仮想マシンインスタンス上で、前記コンテンツアイテムに関連付けられる前記情報を含む仮想マシンイメージの制作を開始すること、
前記第１の仮想マシンインスタンス上で、前記コンテンツアイテムの第１のインスタンスを実行することであって、前記コンテンツアイテムの前記第１のインスタンスが実行される間の時間の少なくとも一部が、前記仮想マシンイメージの前記制作中に発生する、前記実行すること、
前記仮想マシンイメージの前記制作を完了すること、
前記仮想マシンイメージを１つまたは複数の他の仮想マシンインスタンスに複製すること、及び、
前記コンテンツアイテムの１つまたは複数の他のインスタンスを前記１つまたは複数の他の仮想マシンインスタンス上で実行すること、
を含む動作を、実行時にシステムに実行させるコンピュータ実行可能命令が記憶されている１つまたは複数のメモリと、
を備える、仮想マシンイメージ制作中のコンテンツアイテム実行のためのシステム。
【００６０】
２．前記動作が、前記仮想マシンイメージの使用についての承認を判断することであって、前記仮想マシンイメージを前記複製することが、前記承認に少なくとも一部基づいて実行される、前記判断することをさらに含む、条項１に記載のシステム。
【００６１】
３．前記動作が、前記コンテンツアイテムの前記第１のインスタンスを実行する前に、前記コンテンツアイテムに関連付けられる前記情報が、承認済みソフトウェア開発キットに関連付けられる命令を含むことを判断するために前記第１の仮想マシンインスタンスを検査することをさらに含む、条項１に記載のシステム。
【００６２】
４．前記動作が、前記コンテンツアイテムの前記第１のインスタンスを実行する前に、１つまたは複数のプロキシコンポーネントを前記第１の仮想マシンインスタンス上にインストールすることをさらに含む、条項１に記載のシステム。
【００６３】
５．コンテンツアイテムに関連付けられる情報を第１の仮想マシンインスタンス及び第２の仮想マシンインスタンス上にロードすることと、
前記第２の仮想マシンインスタンス上で、前記コンテンツアイテムに関連付けられる前記情報を含む仮想マシンイメージの制作を開始することと、
前記第１の仮想マシンインスタンス上で、前記コンテンツアイテムの第１のインスタンスを実行することであって、前記コンテンツアイテムの前記第１のインスタンスが実行される間の時間の少なくとも一部が、前記仮想マシンイメージの前記制作中に発生する、前記実行することと、
を含む、仮想マシンイメージ制作中のコンテンツアイテム実行のためのコンピュータ実施される方法。
【００６４】
６．前記コンテンツアイテムの前記第１のインスタンスを実行する前に、前記コンテンツアイテムに関連付けられる前記情報が、承認済みソフトウェア開発キットに関連付けられる命令を含むことを判断するために前記第１の仮想マシンインスタンスを検査することをさらに含む、条項５に記載のコンピュータ実施される方法。
【００６５】
７．前記承認済みソフトウェア開発キットが、前記コンテンツアイテムの実行中インスタンスに関連付けられる情報の報告を支援する、条項６に記載のコンピュータ実施される方法。
【００６６】
８．前記コンテンツアイテムの前記第１のインスタンスを実行する前に、１つまたは複数のプロキシコンポーネントを前記第１の仮想マシンインスタンス上にインストールすることをさらに含む、条項５に記載のコンピュータ実施される方法。
【００６７】
９．前記仮想マシンイメージの前記制作を完了することと、
前記仮想マシンイメージを１つまたは複数の他の仮想マシンインスタンスに複製することと、
前記コンテンツアイテムの１つまたは複数の他のインスタンスを前記１つまたは複数の他の仮想マシンインスタンス上で実行することと、をさらに含む、条項５に記載のコンピュータ実施される方法。
【００６８】
１０．前記仮想マシンイメージの使用についての承認を判断することであって、前記仮想マシンイメージを前記複製することが、前記承認に少なくとも一部基づいて実行される、前記判断することをさらに含む、条項９に記載のコンピュータ実施される方法。
【００６９】
１１．前記承認に少なくとも一部基づいて、前記第１の仮想マシンインスタンスを終了させること、または再利用することをさらに含む、条項１０に記載のコンピュータ実施される方法。
【００７０】
１２．前記コンテンツアイテムの前記第１のインスタンスが、少なくとも前記承認を受信または推測するまで実行に利用可能である、請求項１０に記載のコンピュータ実施される方法。
【００７１】
１３．前記仮想マシンイメージが、前記コンテンツアイテムにアクセスする複数のユーザにホストするために複数の仮想マシンインスタンス上で使用される、請求項１０に記載のコンピュータ実施される方法。
【００７２】
１４．コンテンツアイテムに関連付けられる情報を第１の仮想マシンインスタンス及び第２の仮想マシンインスタンス上にロードすることと、
前記第２の仮想マシンインスタンス上で、前記コンテンツアイテムに関連付けられる前記情報を含む仮想マシンイメージの制作を開始することと、
前記第１の仮想マシンインスタンス上で、前記コンテンツアイテムの第１のインスタンスを実行することであって、前記コンテンツアイテムの前記第１のインスタンスが実行される間の時間の少なくとも一部が、前記仮想マシンイメージの前記制作中に発生する、前記実行することと、
を含む動作を、少なくとも１つの計算ノード上での実行時に、前記少なくとも１つの計算ノードに実行させる命令が記憶されている、１つまたは複数の非一時的コンピュータ可読記憶媒体。
【００７３】
１５．前記動作が、前記コンテンツアイテムの前記第１のインスタンスを実行する前に、前記コンテンツアイテムに関連付けられる前記情報が、承認済みソフトウェア開発キットに関連付けられる命令を含むことを判断するために前記第１の仮想マシンインスタンスを検査することをさらに含む、条項１４に記載の１つまたは複数の非一時的コンピュータ可読記憶媒体。
【００７４】
１６．前記承認済みソフトウェア開発キットが、前記コンテンツアイテムの実行中インスタンスに関連付けられる情報の報告を支援する、条項１５に記載の１つまたは複数の非一時的コンピュータ可読記憶媒体。
【００７５】
１７．前記動作が、前記コンテンツアイテムの前記第１のインスタンスを実行する前に、１つまたは複数のプロキシコンポーネントを前記第１の仮想マシンインスタンス上にインストールすることをさらに含む、条項１４に記載の１つまたは複数の非一時的コンピュータ可読記憶媒体。
【００７６】
１８．前記動作が、
前記仮想マシンイメージの前記制作を完了することと、
前記仮想マシンイメージを１つまたは複数の他の仮想マシンインスタンスに複製することと、
前記コンテンツアイテムの１つまたは複数の他のインスタンスを前記１つまたは複数の他の仮想マシンインスタンス上で実行することと、
をさらに含む、条項１４に記載の１つまたは複数の非一時的コンピュータ可読記憶媒体。
【００７７】
１９．前記動作が、前記仮想マシンイメージの使用についての承認を判断することであって、前記仮想マシンイメージを前記複製することが、前記承認に少なくとも一部基づいて実行される、前記判断することをさらに含む、条項１８に記載の１つまたは複数の非一時的コンピュータ可読記憶媒体。
【００７８】
２０．前記動作が、前記承認に少なくとも一部基づいて、前記第１の仮想マシンインスタンスを終了させること、または再利用することをさらに含む、条項１９に記載の１つまたは複数の非一時的コンピュータ可読記憶媒体。
【００７９】
２１．前記コンテンツアイテムの前記第１のインスタンスが、少なくとも前記承認を受信または推測するまで実行に利用可能である、条項１９に記載の１つまたは複数の非一時的コンピュータ可読記憶媒体。
【００８０】
２２．前記仮想マシンイメージが、前記コンテンツアイテムにアクセスする複数のユーザにホストするために複数の仮想マシンインスタンス上で使用される、条項１４に記載の１つまたは複数の非一時的コンピュータ可読記憶媒体。
【００８１】
少なくともいくつかの実施形態では、本明細書で説明される技術のうちの１つまたは複数の一部または全てを実施する１つまたは複数の計算ノードが、１つもしくは複数のコンピュータアクセス可能な媒体を含み、またはアクセスするように構成されるコンピュータシステムを含んでもよく、または関連付けられてもよい。コンピューティングノードとも呼ばれ得る計算ノードは、コモディティハードウェアコンピュータ、仮想マシン、ウェブサービス、コンピューティングクラスタ、及びコンピューティング機器などの、幅広いコンピューティング環境において実施されてもよい。これらのコンピューティングデバイスまたは環境のうちのいずれかが、便宜上、計算ノードとして説明されてもよい。図７は、１つまたは複数のコンピュータアクセス可能な媒体を含み、またはアクセスするように構成されるコンピュータシステムを示す。図示された実施形態では、コンピューティングデバイス１５は、入力／出力（Ｉ／Ｏ）インタフェース３０を介してシステムメモリ２０に連結される１つまたは複数のプロセッサ１０ａ、１０ｂ、及び／または１０ｎ（本明細書において、単数形で「プロセッサ１０」、または複数形で「プロセッサ１０」と呼ばれ得る）を含む。コンピューティングデバイス１５は、Ｉ／Ｏインタフェース３０に連結されるネットワークインタフェース４０をさらに含む。
【００８２】
様々な実施形態では、コンピューティングデバイス１５は、１つのプロセッサ１０を含むユニプロセッサシステム、または複数（例えば、２個、４個、８個もしくは別の適当な数）のプロセッサ１０を含むマルチプロセッサシステムであってもよい。プロセッサ１０は、命令を実行可能な任意の適当なプロセッサであってもよい。例えば、様々な実施形態では、プロセッサ１０は、ｘ８６、ＰｏｗｅｒＰＣ、ＳＰＡＲＣ、もしくはＭＩＰＳ  ＩＳＡ、または任意の他の適当なＩＳＡなどの多様な命令セットアーキテクチャ（ＩＳＡ）のいずれかを実施する組み込みプロセッサであってもよい。マルチプロセッサシステムでは、プロセッサ１０のそれぞれは、一般に、しかし必須ではなく、同一のＩＳＡを実施してもよい。
【００８３】
システムメモリ２０は、プロセッサ（複数可）１０によってアクセス可能な命令及びデータを記憶するように構成されてもよい。様々な実施形態では、システムメモリ２０は、スタティックランダムアクセスメモリ（ＳＲＡＭ）、同期式動的ＲＡＭ（ＳＤＲＡＭ）、不揮発性／フラッシュ（登録商標）型メモリ、または任意の他の種類のメモリなどの、任意の適当なメモリ技術を用いて実施されてもよい。図示される実施形態では、上述したこれらの方法、技術及びデータなどの１つまたは複数の所望の機能を実施するプログラム命令及びデータが、システムメモリ２０内にコード２５及びデータ２６として記憶されて示される。
【００８４】
一実施形態では、Ｉ／Ｏインタフェース３０は、ネットワークインタフェース４０または他の周辺インタフェースを含む、デバイス内のプロセッサ１０、システムメモリ２０、及び任意の周辺機器の間のＩ／Ｏトラフィックを協調させるように構成されてもよい。いくつかの実施形態では、Ｉ／Ｏインタフェース３０は、データ信号を１つのコンポーネント（例えば、システムメモリ２０）から、別のコンポーネント（例えば、プロセッサ１０）による使用に適したフォーマットに変換するために、任意の必要なプロトコル、タイミングまたは他のデータ変換を実行してもよい。いくつかの実施形態では、Ｉ／Ｏインタフェース３０は、例えば、周辺構成要素相互接続（ＰＣＩ）バス規格またはユニバーサルシリアルバス（ＵＳＢ）規格の変形などの、様々な種類の周辺バスを通して取り付けられたデバイスのためのサポートを含んでもよい。いくつかの実施形態では、Ｉ／Ｏインタフェース３０の機能は、例えば、ノースブリッジ及びサウスブリッジなどの２つ以上の別々のコンポーネントに分割されてもよい。また、いくつかの実施形態では、システムメモリ２０へのインタフェースなどのＩ／Ｏインタフェース３０の機能性のうちのいくつかまたは全てが、プロセッサ１０に直接組み込まれてもよい。
【００８５】
ネットワークインタフェース４０は、コンピューティングデバイス１５と、例えば、他のコンピュータシステムまたはデバイスなどの、ネットワーク５０に取り付けられる他のデバイス６０との間でデータが交換されることを可能にするように構成されてもよい。様々な実施形態では、ネットワークインタフェース４０は、例えば、イーサネットネットワークの種類などの、任意の適当な有線または無線汎用データネットワークを介して通信をサポートしてもよい。追加的に、ネットワークインタフェース４０は、ファイバチャネルＳＡＮ（ストレージエリアネットワーク）などのストレージエリアネットワークを介して、または任意の他の適当な種類のネットワーク及び／もしくはプロトコルを介して、アナログ音声ネットワークまたはデジタルファイバ通信ネットワークなどの、遠距離通信／電話通信ネットワークを介した通信をサポートしてもよい。
【００８６】
いくつかの実施形態では、システムメモリ２０は、対応する方法及び装置の実施形態を実施するための、上述のようなプログラム命令及びデータを記憶するように構成されるコンピュータアクセス可能な媒体の一実施形態であってもよい。一方、他の実施形態では、プログラム命令及び／またはデータは、様々な種類のコンピュータアクセス可能な媒体上で受信され、送信され、または記憶されてもよい。概して言うと、コンピュータアクセス可能な媒体が、Ｉ／Ｏインタフェース３０を介してコンピューティングデバイス１５に連結される、例えば、ディスクまたはＤＶＤ／ＣＤといった磁気または光学媒体などの、非一時的記憶媒体またはメモリ媒体を含んでもよい。非一時的コンピュータアクセス可能な記憶媒体は、また、システムメモリ２０または別の種類のメモリとしてコンピューティングデバイス１５のいくつかの実施形態に含まれ得る、ＲＡＭ（例えば、ＳＤＲＡＭ、ＤＤＲ  ＳＤＲＡＭ、ＲＤＲＡＭ、ＳＲＡＭなど）、ＲＯＭ（読み取り専用メモリ）などの任意の揮発性または不揮発性媒体を含んでもよい。さらに、コンピュータアクセス可能な媒体は、伝送媒体、または、ネットワークインタフェース４０を介して実施され得るような、ネットワーク及び／もしくは無線リンクなどの通信媒体を介して伝達される、電気、電磁気、もしくはデジタル信号などの信号を含んでもよい。図７に示されるもののように、複数のコンピューティングデバイスの一部または全てが、様々な実施形態において説明される機能性を実施するために使用されてもよい。例えば、多様な異なるデバイス及びサーバ上で動作するソフトウェアコンポーネントは、協働して機能性を提供してもよい。いくつかの実施形態では、説明される機能性の一部が、記憶デバイス、ネットワークデバイス、または専用コンピュータシステムを使用して実施されてもよい。本明細書で使用される「コンピューティングデバイス」という用語は、少なくとも全てのこれらの種類のデバイスを指し、これらの種類のデバイスに限定されない。
【００８７】
前節で説明されるプロセス、方法、及びアルゴリズムのそれぞれが、１つまたは複数のコンピュータまたはコンピュータプロセッサによって実行されるコードモジュールにおいて具現化され、コードモジュールによって完全にまたは部分的に自動化されてもよい。コードモジュールは、ハードドライブ、ソリッドステートメモリ、光ディスク、及び／またはその他などの、任意の種類の非一時的コンピュータ可読媒体またはコンピュータ記憶デバイス上に記憶されてもよい。プロセス及びアルゴリズムは、部分的または全体的にアプリケーション固有の回路において実施されてもよい。開示されたプロセス及び処理ステップの結果が、例えば、揮発性または不揮発性記憶装置などの、任意の種類の非一時的コンピュータ記憶装置において、永続的にまたは非永続的に記憶されてもよい。
【００８８】
上述した様々な特徴及びプロセスは、互いに独立して使用されてもよく、または様々なやり方で組み合わされてもよい。全ての考えられる組み合わせ及び部分的組み合わせが、開示の範囲内に入るように意図される。さらに、ある方法または処理ブロックが、いくつかの実施態様において省略されてもよい。本明細書で説明される方法及びプロセスは、また、任意の特定のシーケンスに限定されず、それに関連するブロックまたは状態は、適当な他のシーケンスで実行され得る。例えば、説明されるブロックもしくは状態は、具体的に開示されるものとは異なる順序で実行されてもよく、または複数のブロックもしくは状態は、単一のブロックもしくは状態に結合されてもよい。例としてのブロックまたは状態は、連続で、並行して、またはいくつかの他のやり方で実行されてもよい。ブロックまたは状態は、開示された例としての実施形態に追加され、または実施形態から削除されてもよい。本明細書で説明された例としてのシステム及びコンポーネントは、説明されたものとは異なったように構成されてもよい。例えば、要素は、開示された例としての実施形態に追加され、実施形態から削除され、実施形態と比較して再配列されてもよい。
【００８９】
様々な項目が、使用中にメモリまたは記憶装置に記憶されているものとして説明されるが、これらの項目またはそれらの部分は、メモリ管理及びデータ整合性の目的で、メモリ及び他の記憶デバイス間で移転され得ることも、理解されるであろう。代替的に、他の実施態様では、ソフトウェアモジュール及び／またはシステムのうちのいくつかまたは全てが、別のデバイス上のメモリ内で実行し、示されるコンピューティングシステムとコンピュータ間通信を介して通信してもよい。さらに、いくつかの実施形態では、システム及び／またはモジュールのうちのいくつかまたは全てが、１つまたは複数の特定用途向け集積回路（ＡＳＩＣ）、標準集積回路、コントローラ（例えば、適当な命令を実行することにより、かつマイクロコントローラ及び／または組み込みコントローラを含む）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、複合プログラム可能論理デバイス（ＣＰＬＤ）などを含むがこれらに限定されない、ファームウェア及び／またはハードウェアなどに少なくとも部分的において、他のやり方で実施され、または提供されてもよい。モジュール、システム、及びデータ構造のうちのいくつかまたは全てが、また、ハードディスク、メモリ、ネットワーク、または携帯媒体用品などの、適当なドライブによってまたは適当な接続を介して読み取られるべきコンピュータ可読媒体上に（例えば、ソフトウェア命令または構造化データとして）記憶されてもよい。システム、モジュール、及びデータ構造は、また、無線ベース及び有線／ケーブルベース媒体を含む多様なコンピュータ可読伝送媒体上で生成されたデータ信号として（例えば、搬送波、または他のアナログもしくはデジタル伝播信号の一部として）送信されてもよく、多様な形態（例えば、単一もしくは多重アナログ信号の一部として、または複数の個々のデジタルパケットもしくはフレームとして）をとってもよい。このようなコンピュータプログラム製品は、また、他の実施形態においては他の形態をとってもよい。したがって、本発明は、他のコンピュータシステム構成で実施されてもよい。
【００９０】
とりわけ、「ｃａｎ（し得る）」、「ｃｏｕｌｄ（し得る）」、「ｍｉｇｈｔ（してもよい）」、「ｍａｙ（してもよい）」、「ｅ．ｇ．（例えば）」などの、本明細書で用いられる条件付きの言葉は、具体的に特段の言及がない限り、または用いられる文脈内で理解される限り、概して、ある特徴、要素、及び／またはステップを、ある実施形態は含むが他の実施形態は含まないことを伝達することを意図するものである。したがって、このような条件付きの言葉は、概して、特徴、要素、及び／もしくはステップが、１つもしくは複数の実施形態に多少なりとも必要とされること、または１つもしくは複数の実施形態が、作成者の入力もしくはプロンプティングの有無に関わらず、これらの特徴、要素、及び／もしくはステップが任意の特定の実施形態に含まれるかどうか、もしくは任意の特定の実施形態において実行されるべきかどうかを決定するためのロジックを必ず含むことを示唆することを意図するものではない。「ｃｏｍｐｒｉｓｉｎｇ（備える）」、「ｉｎｃｌｕｄｉｎｇ（含む）」、「ｈａｖｉｎｇ（有する）」などの用語は、同義であり、包含的で、無制限の様式で使用され、追加的な要素、特徴、行為、動作などを排除しない。また、「または」という用語は、その包含的な意味で（かつ、その排他的な意味ではなく）使用され、したがって、例えば、要素のリストを接続するために使用される際、「または」という用語は、そのリスト内の要素のうちの１つ、いくつか、または全てを意味する。
【００９１】
ある例示的な実施形態が説明されたが、これらの実施形態は、例としてのみ提示され、本明細書で開示される発明の範囲を制限することを意図するものではない。したがって、前述の説明には、任意の特定の特徴、特性、ステップ、モジュール、またはブロックが必須または不可欠であることを示唆するよう意図するものではない。実際に、本明細書で説明される新規な方法及びシステムは、多様な他の形態で具現化されてもよく、さらに、本明細書で説明される方法及びシステムの形態において様々な省略、代替、及び変更が、本明細書に開示される発明の思想から逸脱することなく行われてもよい。添付の特許請求の範囲及びそれらの均等物は、本明細書に開示される発明のいくらかの範囲及び思想の範囲内に入ることとなる形態または修正を包含することを意図するものである。
【図１】
0006542397.tif 000002
【図２】
0006542397.tif 000003
【図３】
0006542397.tif 000004
【図４】
0006542397.tif 000005
【図５】
0006542397.tif 000006
【図６】
0006542397.tif 000007
【図７】
0006542397.tif 000008