JP2024513862A - レガシーゲームからメタゲームを生成するためのシステム及び方法 - Google Patents

レガシーゲームからメタゲームを生成するためのシステム及び方法 Download PDF

Info

Publication number
JP2024513862A
JP2024513862A JP2023560877A JP2023560877A JP2024513862A JP 2024513862 A JP2024513862 A JP 2024513862A JP 2023560877 A JP2023560877 A JP 2023560877A JP 2023560877 A JP2023560877 A JP 2023560877A JP 2024513862 A JP2024513862 A JP 2024513862A
Authority
JP
Japan
Prior art keywords
challenge
user account
user
block
user input
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2023560877A
Other languages
English (en)
Inventor
ウェイジン、ジョージ
タック、デーヴィッド
コルヴィ、エルネスト
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Interactive Entertainment LLC
Original Assignee
Sony Interactive Entertainment LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Interactive Entertainment LLC filed Critical Sony Interactive Entertainment LLC
Publication of JP2024513862A publication Critical patent/JP2024513862A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/60Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor
    • A63F13/69Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor by enabling or updating specific game elements, e.g. unlocking hidden features, items, levels or versions
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/45Controlling the progress of the video game
    • A63F13/49Saving the game status; Pausing or ending the game
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/45Controlling the progress of the video game
    • A63F13/46Computing the game score
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/60Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor
    • A63F13/63Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor by the player, e.g. authoring using a level editor
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/85Providing additional services to players
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/85Providing additional services to players
    • A63F13/86Watching games played by other players
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/60Methods for processing data by generating or executing the game program
    • A63F2300/61Score computation

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Theoretical Computer Science (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Devices For Executing Special Programs (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)
  • Peptides Or Proteins (AREA)

Abstract

【課題】メタゲームの生成方法を説明する。【解決手段】方法は第1のユーザーアカウントを介してレガシーゲームのプレイ中に第1のチャレンジに対する第1のユーザー入力を受信することを含む。第1のチャレンジはレガシーゲームの第1の複数の基本ブロックから作成される。方法は第1のチャレンジの少なくとも一部を記録すること及び第1のユーザーアカウントを介してレガシーゲームのプレイ中に第2のチャレンジに対する第2のユーザー入力を受信することを含む。第2のチャレンジはレガシーゲームの第2の複数の基本ブロックから作成される。方法は、第2のチャレンジの少なくとも一部を記録すること、メタゲームの作成を要求するための第3のユーザー入力が第1のユーザーアカウントを介して受信されたかを判定すること、及び第3のユーザー入力が受信されたと判定すると第1及び第2のチャレンジからメタゲームを生成することを含む。【選択図】図1

Description

本開示は、レガシーゲームからメタゲームを生成するためのシステム及び方法に関する。
電子ゲーム及びネットワーキング技術がより高度になるにつれて、それに応じてゲームの複雑性が増している。その結果、より複雑な筋書きと、ゲームプレイの目的、ミッション及びタスクと、ゲームプレイのアバターに関連する能力と、スコアリングと、が存在し得る。スコアリングは、様々な方法で発生及び重み付けされ得、同様に様々なカテゴリで、または個人またはチームベースで決定され得る。
前述の問題の重大性は、電子ゲームの複雑性が増すにつれてのみ増加する。そのため、一部のプレイヤーは、より複雑ではない古いゲームをプレイしたいと望むことがある。
この文脈において、本発明の実施形態が生じる。
本開示の実施形態は、レガシーゲームからメタゲームを生成するためのシステム及び方法を提供する。
一実施形態では、レガシーゲームのプレイを容易にするための方法が説明される。方法は、レガシーゲームのプレイ中にユーザー入力を受信することと、ユーザー入力を処理するためのコードの1つ以上のブロックがキャッシュされるかどうかを判定することと、コードの1つ以上のブロックがキャッシュされていないと判定するときにレガシーゲームコードの1つ以上の命令にアクセスすることとを含む。方法は、レガシーゲームコードの1つ以上の命令からコードの1つ以上のブロックをコンパイルすることと、コードの1つ以上のブロックをキャッシュすることと、コードの1つ以上のブロックを実行して仮想環境を表示することとをさらに含む。
一実施形態では、レガシーゲームのプレイを容易にするためのコンピューティングデバイスが説明される。コンピューティングデバイスは、レガシーゲームのプレイ中にユーザー入力を受信するように構成されたプロセッサを含む。コンピューティングデバイスは、プロセッサに接続されたキャッシュと、プロセッサに接続されたメモリデバイスとをさらに含む。プロセッサは、ユーザー入力を処理するためのコードの1つ以上のブロックが、キャッシュに格納されているかどうかを判定する。プロセッサは、コードの1つ以上のブロックがキャッシュに格納されていないと判定すると、メモリデバイスからレガシーゲームコードの1つ以上の命令にアクセスする。また、プロセッサは、レガシーゲームコードの1つ以上の命令からコードの1つ以上のブロックをコンパイルする。プロセッサは、キャッシュにコードの1つ以上のブロックを格納し、コードの1つ以上のブロックを実行して、仮想環境を表示する。
一実施形態では、方法が説明される。方法は、レガシーゲームコードの1つ以上の命令から第1の検証結果を生成することを含む。レガシーゲームコードの1つ以上の命令は、コードの1つ以上のブロックに関連付けられる。方法は、1つ以上の命令に関連付けられた1つ以上のメモリアドレスを調べて、コードの1つ以上のブロックが無効としてマークされるべきかどうかを判定することをさらに含む。方法は、コードの1つ以上のブロックが実行されるべきかどうかを判定することと、コードの1つ以上のブロックが実行されるべきであると判定すると、コードの1つ以上のブロックが無効としてマークされているかどうかを判定することを含む。方法は、1つ以上のメモリアドレスを調べて、1つ以上の命令から第2の検証結果を生成することと、第1の検証結果を第2の検証結果と比較して、コードの1つ以上のブロックが無効であるかどうかを判定することと、コードの1つ以上のブロックが無効であると判定すると、1つ以上の命令に関連付けられたコードの1つ以上の追加のブロックを再コンパイルすることとを含む。方法は、コードの1つ以上の追加のブロックを実行して、仮想環境を表示することを含む。
一実施形態では、メタゲームを生成するための方法が説明される。方法は、第1のユーザーアカウントを介して、1つ以上のレガシーゲームのプレイ中に第1のチャレンジに対する第1のユーザー入力を受信することを含む。第1のチャレンジは、1つ以上のレガシーゲームの第1の複数の基本ブロックから作成される。方法は、第1のチャレンジの少なくとも一部を記録することと、第1のユーザーアカウントを介して、1つ以上のレガシーゲームのプレイ中に第2のチャレンジに対する第2のユーザー入力を受信することとをさらに含む。第2のチャレンジは、1つ以上のレガシーゲームの第2の複数の基本ブロックから作成される。第1の複数の基本ブロックは、1つ以上のレガシーゲームの第1の複数の命令からコンパイルされ、第2の複数の基本ブロックは、1つ以上のレガシーゲームの第2の複数の命令からコンパイルされて、1つ以上のレガシーゲームを更新されたマシンでプレイすることを可能にする。方法は、第2のチャレンジの少なくとも一部を記録することを含む。方法はさらに、メタゲームの作成を要求するための第3のユーザー入力が第1のユーザーアカウントを介して受信されたかどうかを判定することと、第3のユーザー入力が受信されたと判定すると、第1及び第2のチャレンジからメタゲームを生成することとを含む。
一実施形態では、メタゲームを生成するための方法のプログラム命令を含む非一時的なコンピュータ可読媒体が説明される。コンピュータシステムの1つ以上のプロセッサによってプログラム命令が実行されると、1つ以上のプロセッサは、方法の複数の操作を実行する。
一実施形態では、メタゲームを生成するためのコンピュータシステムが説明される。コンピュータシステムは、プロセッサを含む。プロセッサは、第1のユーザーアカウントを介して、1つ以上のレガシーゲームのプレイ中に第1のチャレンジに対する第1のユーザー入力を受信する。第1のチャレンジは、1つ以上のレガシーゲームの第1の複数の基本ブロックから作成される。プロセッサは、第1のチャレンジの少なくとも一部を記録する。プロセッサは、第1のユーザーアカウントを介して、1つ以上のレガシーゲームのプレイ中に第2のチャレンジに対する第2のユーザー入力をさらに受信する。第2のチャレンジは、1つ以上のレガシーゲームの第2の複数の基本ブロックから作成される。第1の複数の基本ブロックは、1つ以上のレガシーゲームの第1の複数の命令からコンパイルされ、第2の複数の基本ブロックは、1つ以上のレガシーゲームの第2の複数の命令からコンパイルされて、1つ以上のレガシーゲームを更新されたマシンでプレイすることを可能にする。プロセッサは、第2のチャレンジの少なくとも一部を記録する。プロセッサは、メタゲームのプレイを要求するための第3のユーザー入力が第1のユーザーアカウントを介して受信されたかどうかをさらに判定し、第3のユーザー入力が受信されたと判定すると、第1及び第2のチャレンジからメタゲームを生成する。メモリデバイスはプロセッサに結合されている。
本明細書に記載のシステム及び方法のいくつかの利点は、更新されたマシンがレガシーコードの機能を実行することを可能にすること含む。変換しないと、セキュリティ上の問題により、更新されたマシンがレガシーコードの機能を実行することはできない。例えば、更新されたマシンからレガシーコードを実行し、レガシーコードの実行時に生成されたデータを更新されたマシンのレジスタに書き込む権限はない。そのため、変換を提供することにより、更新されたマシンによるレガシーコードの機能の実行が容易になる。
本明細書に記載のシステム及び方法のさらなる利点には、実行時間を節約することが含まれる。一例として、レガシーコードのルーチンとサブルーチンまたは2つの同様の命令などの2つ以上の命令が、更新されたコードの1つの基本ブロックに結合される。そのため、更新されたコードの実行は、レガシーコードの実行と比較して高速である。
本明細書に記載のシステム及び方法のさらなる利点は、更新されたコードの1つ以上の基本ブロックが無効であると判定すると、更新されたコードの1つ以上の追加の基本ブロックを再コンパイルすることを含む。例えば、1つ以上の基本ブロックが無効としてマークされているとき、1つ以上の基本ブロックが実際に無効であるかどうかが判定される。そのように判定すると、1つ以上の基本ブロックを実行する代わりに、1つ以上の追加の基本ブロックがコンパイル及び実行される。1つ以上の追加の基本ブロックは、1つ以上の基本ブロックが対応する同じゲームに対応する。
本明細書に記載のシステム及び方法の別のさらなる利点は、すべての基本ブロックが無効であるかどうかチェックされる必要がないことを含む。例えば、基本ブロックのコンパイル後に無効としてマークされている基本ブロックのみが有効かどうかがチェックされる。このことは、1つ以上の基本ブロックから仮想環境を表示する際のレイテンシを短縮する。また、すべての基本ブロックの無効性をチェックするために使用される処理能力は必要とされない。
また、本明細書に記載のシステム及び方法の利点は、ゲームの更新されたコードがすでにコンパイルされているときに処理時間及び処理能力を節約することを含む。更新されたコードがサーバまたはゲームコンソールで生成されると、更新されたコードは再コンパイルされる必要がない。むしろ、更新されたコードが、サーバまたはゲームコンソールから別のゲームコンソールに転送できる。そのため、他のゲームコンソールで更新されたコードを再生成する際の処理時間と処理能力が節約される。
本開示の他の態様は、本開示に記載された実施形態の原理を例示として示す、添付の図面と併せて取られた以下の発明を実施するための形態から明らかになるであろう。
本開示の様々な実施形態は、添付の図面と併せて以下の説明を参照することによって最もよく理解することができる。
更新されたコードの基本ブロックを生成するためのシステムの実施形態を示すブロック図である。 ゲームコードの基本ブロックをコンパイル及び実行するための方法の実施形態を示すフローチャートである。 基本ブロックをコンパイル及び実行するためのシステムの実施形態を示すブロック図である。 ゲームコンソール内の基本ブロックのコンパイルを説明するためのシステムの実施形態の図である。 サーバシステム内の基本ブロックのコンパイルを説明するためのシステムの実施形態の図である。 基本ブロックの一実施形態を説明するための図である。 基本ブロックコンパイラによって実行されるコンパイル操作の実施形態を示すための図である。 エミュレーションプロセッサシステムの構成要素を示すシステムの実施形態の図である。 基本ブロックをコンパイル及び実行するための方法の実施形態を示すフローチャートである。 異なるユーザー入力に対して、異なる基本ブロックが動的にコンパイルされることを示すシステムの実施形態の図である。 メモリデバイスからのエミュレートされた処理ユニット(PU)コードの削除を示すシステムの実施形態の図である。 エミュレートされたPUコードをメモリデバイスから削除するための方法の実施形態を示すフローチャートである。 基本ブロックの検証を示すエミュレーションプロセッサシステムの実施形態の図である。 図8Aのエミュレーションプロセッサシステムによって実行される検証操作を示す方法の実施形態のフローチャートである。 図8Bの方法のフローチャートの続きである。 レガシーマシンの実施形態を示す図である。 更新されたマシンの実施形態を示す図である。 基本ブロックコンパイラによる複数の基本ブロックの1つの基本ブロックへの結合を示すシステムの実施形態の図である。 1つ以上の基本ブロックの修正を示すシステムの実施形態の図である。 サブルーチンに基づいて作成された基本ブロックと、サブルーチンを呼び出すエミュレートされたPUコード命令に基づいて生成された基本ブロックとを組み合わせることを示すシステムの実施形態の図である。 2つの基本ブロックの間への基本ブロックの挿入を示すシステムの実施形態の図である。 基本ブロックの実行の順序でスイッチを示すシステムの実施形態の図である。 基本ブロックnに格納されたサイクル数のカウントの使用を説明するための方法の実施形態のフローチャートである。 図11Aの方法のフローチャートの続きである。 第1のクライアントデバイスから第2のクライアントデバイスへの基本ブロックの転送を示すためのシステムの実施形態の図である。 基本ブロック1~nの複数のセットの実行時にプレイされる、チャレンジなどの1つ以上のミニゲームからのメタゲームの生成を示すためのシステムの一実施形態の図である。 第1のチャレンジの実施例を示すための第1のディスプレイデバイスの一実施形態の図である。 レガシーゲームの第1のゲームレベルの基本ブロック1~nの任意の2つの間に挿入されるフックを示すための図である。 第2のチャレンジの実施例を示すための第1のディスプレイデバイスの一実施形態の図である。 レガシーゲームの第2のゲームレベルの基本ブロック1~nの任意の2つの間に挿入されるフックを示すための図である。 システムの一実施形態の図である。 ユーザーアカウントを介するユーザーによるチャレンジの実行の順序の選択を示すための第1のディスプレイデバイスの図である。 メタゲームの生成を説明するための方法の一実施形態のフローチャートである。 第1のチャレンジの1つ以上の基本ブロックを第2のチャレンジの基本ブロックの1つ以上とスティッチングするための図16Aの方法を示すための図16Aのフローチャートの続きである。 メタゲーム内でのリーダーシップスコアボードの追加、及びメタゲームへのトロフィーの付加を示すための図16Bのフローチャートの続きである。 図16Cのフローチャートの続きである。 図16Dのフローチャートの続きである。 第2のディスプレイデバイスに表示されるゴーストを含むメタゲームの一実施形態を示すための図である。 第1のディスプレイデバイスに表示されるリーダーシップスコアボードの一実施形態の図である。 第2のディスプレイデバイスに表示されるリーダーシップスコアボードの一実施形態の図である。 メタゲームのプレイ後にユーザーがトロフィーを獲得したことを示す通知を示すための第2のディスプレイデバイスの一実施形態の図である。 本開示の実施態様に従って、クラウドビデオゲームをクライアントデバイスにストリーミングするために実行される様々な操作を概念的に示すフロー図である。 クライアントデバイスのディスプレイデバイスとインターフェースするために互換性があり、コンピュータネットワークを介してゲームホスティングシステムと通信することができるゲームコンソールの実施形態のブロック図である。 ヘッドマウントディスプレイ(HMD)の構成要素を示す図である。 情報サービスプロバイダ(INSP)アーキテクチャの実施形態を示す。
レガシーゲームからメタゲームを生成するためのシステム及び方法が説明される。本開示の様々な実施形態は、これらの特定の詳細の一部または全部がなくとも実施されることに留意されたい。他の事例では、本開示の様々な実施形態を不必要に不明瞭にしないために、周知のプロセス操作は詳細に説明されていない。
図1は、更新されたコードの基本ブロック1~nまでを生成するためのシステム100の実施形態を示すブロック図であり、nは正の整数である。システム100は、キャッシュ102と、基本ブロックコンパイラ104と、ゲームタイトルGNを有するレガシーゲームNのエミュレートされた処理ユニット(PU)コード106とを含み、Nは正の整数である。一例として、本明細書で使用されるキャッシュは、データを格納するハードウェアまたはソフトウェアの構成要素であり、そのため、データに対する将来の要求がより高速に処理され得る。キャッシュヒットは、要求されたデータがキャッシュ内で見つけられ得るときに発生し、一方でキャッシュミスは、見つけられ得ないときに発生する。キャッシュヒットは、キャッシュからデータを読み取ることによって処理され、これは結果を再計算すること、またはメモリデバイスなどのより低速のデータストアから読み取ることよりも速い。したがって、キャッシュから処理できる要求が多いほど、システムの実行は速くなる。説明すると、キャッシュはレジスタのグループであり、これは、メインメモリデバイスと比較して、10倍~100倍など、より高速にアクセスされ得る。
一例として、キャッシュは、メインメモリデバイスよりも少ないメモリアドレスの数を有している。例では、プロセッサは、操作で使用されるデータがキャッシュ内のメモリアドレスに格納されているかどうかを最初に判定し、そうでない場合は、プロセッサがメインメモリデバイスのメモリアドレスにアクセスしてデータを探す。
一例として、本明細書で使用される基本ブロックコンパイラは、エミュレートされたPUコード106コードを、更新されたコードの例であるゲームコードGCNに変換するコンピュータプログラムである。ゲームコードGCNは、レガシーゲームNの機能を表す。コンピュータプログラムは、エミュレートされたプロセッサシステムの1つ以上のプロセッサによって実行される。ゲームコードGCNは、本明細書では中間コードと呼ばれる。一例として、中間コードは、ソースコードでもマシンコードでもない。説明すると、中間コードは、中央処理装置(CPU)のアーキテクチャ、またはグラフィックスプロセッシングユニット(GPU)のアーキテクチャ、または更新されたマシンのアーキテクチャに固有ではない基本ブロックを含んでおり、その例が以下に提供される。例示では、中間コードは、更新されたマシンのCPUまたはGPUでよって実行され得る基本ブロックを含み、その例は、Sony PlayStation(登録商標)4(PS4(登録商標))またはSony PlayStation(登録商標)5(PS5(登録商標))、またはデスクトップコンピュータ、またはラップトップコンピュータ、またはスマートフォン、またはスマートテレビを含む。一例として、ソースコードは、プレーンテキストであり得る、人間が可読なプログラミング言語を使用して書かれている。一例として、本明細書で使用される基本ブロックコンパイラは、ハードウェアもしくはソフトウェア、またはそれらの組み合わせを使用して実装される。説明すると、基本ブロックコンパイラの機能は、コントローラもしくはプログラマブルロジックデバイス(PLD)または特定用途向け集積回路(ASIC)を使用して実装される。
本明細書で使用されるコントローラの例には、プロセッサ及びメモリデバイスが含まれる。プロセッサはメモリデバイスに結合されている。本明細書で使用される場合、一例として、プロセッサは、マイクロプロセッサ、またはCPU、またはGPU、またはマイクロコントローラ、またはASIC、またはPLDである。本明細書で使用されるメモリデバイスの例には、ランダムアクセスメモリ(RAM)及び読み取り専用メモリ(ROM)が含まれる。説明すると、メモリデバイスは、フラッシュメモリデバイス、またはハードディスク、またはソリッドステートストレージデバイス、または独立ディスクの冗長アレイ(RAID)、またはそれらの組み合わせである。
エミュレートされたPUコード106の例は、レガシーマシンのCPUまたはGPUなどのプロセッサに操作を実行するように指示するマシンコードである。例えば、エミュレートされたPUコード106は、CPUのレジスタに格納されたデータに対してロード、格納、ジャンプ、または算術論理操作ユニット(ALU)操作などの特定の操作を実行するようにレガシーマシンのCPUに指示する命令のシーケンスを含む。別の例として、エミュレートされたPUコード106は、一連の1と0を含むバイナリコードである。別の例として、エミュレートされたPUコード106は、GPUのレジスタに格納されたデータに対してロード、格納、ジャンプ、またはALU操作などの特定の操作を実行するようにレガシーマシンのGPUに指示する命令のシーケンスを含む。レガシーマシンのGPUは、色、強度、陰影、テクスチャ、またはそれらの組み合わせなどのグラフィックパラメータを仮想オブジェクトに割り当てる操作を仮想オブジェクトに対して実行する。
エミュレートされたPUコード106は、レガシーマシンのCPUまたはGPUのアーキテクチャに特定または特有である。例えば、エミュレートされたPUコード106は、更新されたマシンのCPUまたはGPUによって実行することはできない。別の例として、Sony PlayStation(登録商標)1(PS1)で実行可能なエミュレートされたPU106をSony PlayStation(登録商標)2(PS2)で実行することはできず、逆も同様である。
一例として、エミュレートされたPUコード106は、レガシーゲームNで操作を実行するためにレガシーマシンのプロセッサによって実行される。説明すると、エミュレートされたPUコード106は、PS1(登録商標)またはPS2(登録商標)などのレガシーマシン上でレガシーゲームをプレイするために実行される。レガシーゲームの例は、Warhawk(登録商標)、Tango Dance Fever(登録商標)、Castlevania Chronicles(登録商標)、Pacman(登録商標)、Resident Evil 2(登録商標)、Streetfighter Alpha 3(登録商標)などのビデオゲームを含む。
基本ブロックコンパイラ104は、レガシーゲームNのエミュレートされたPUコード106にアクセスし、エミュレートされたPUコード106を、基本ブロック1~nなどの1つ以上の基本ブロックに変換する。一例として、各基本ブロック1~nは、ある基本ブロックを別の基本ブロックと区別するための開始識別子及び終了識別子を有する。基本ブロックコンパイラ104は、基本ブロック1~nをキャッシュ102に格納する。基本ブロック1~nが実行されると、レガシーゲームNがエミュレートされる。
図2は、ゲームコードGCNの基本ブロックをコンパイル及びディスパッチするための方法200の実施形態を示すフローチャートである。方法200は、更新されたマシンの1つ以上のプロセッサによって実行される。方法200は、キャッシュヒットがあるかどうか、例えば、基本ブロックがキャッシュ102に格納されているかどうかを判定する操作202を含む。例えば、操作202は、レガシーゲームのプレイ中のユーザー入力が受信されたときに実行またはトリガーされる。説明すると、ユーザー入力は、レガシーゲームNの仮想オブジェクトの位置もしくは方向、またはそれらの組み合わせを変更するために受信されている。図示では、ユーザー入力が受信されたと判定すると、基本ブロック1~nの1つのような基本ブロックが、キャッシュ102に格納されているかどうかが判定されている(図1)。例示では、仮想オブジェクトの位置もしくは方向、またはそれらの組み合わせを変更するために基本ブロックが実行されるべきである。
別の説明として、操作202は、レガシーゲームの仮想オブジェクトのルックアンドフィールなどのパラメータを変更するためのユーザー入力が受信されたときに実行される。例示では、ユーザー入力が受信されたと判定すると、基本ブロック1~nの1つなどの基本ブロックがキャッシュ102に格納されているかどうかが判定される。例示では、基本ブロックは、仮想オブジェクトのパラメータを変更するために実行されるべきである。
基本ブロックがキャッシュされていると判定したことに応えて、基本ブロックが方法200の操作204でディスパッチされる。例えば、基本ブロックは、操作204で実行されるか、または動作する。説明すると、基本ブロックは、更新されたマシンのCPUによって実行され、仮想オブジェクトをある位置から別の位置に、もしくはある方向から別の方向に、またはそれらの組み合わせで移動させる。別の例示として、基本ブロックは、パラメータを仮想オブジェクトの一部に割り当てるために更新されたマシンのGPUによって実行される。仮想オブジェクトの一部の例は、仮想オブジェクトのピクセル、または仮想オブジェクトの三角形の部分、または仮想オブジェクトの事前に定義された形状の一部を含む。説明すると、仮想オブジェクトは、所定の数のピクセルに分割され、各ピクセルにはパラメータの値が割り当てられる。
基本ブロックがキャッシュされていないと判定したことに応えて、基本ブロックをコンパイルする操作206が方法200で実行される。操作206は、基本ブロックコンパイラ104(図1)によって実行される。例えば、基本ブロックコンパイラ104は、レガシーゲームNのエミュレートされたPUコード106(図1)を解析して、操作202の前に、レガシーゲームのプレイ中に受信したユーザー入力を処理するための機能を含むエミュレートされたPUコード命令を識別する。操作202の前に受信されたユーザー入力は、操作202をトリガーする。説明すると、基本ブロックコンパイラ104は、エミュレートされたPUコード106の各エミュレートされたコードPU命令をトラバースして、エミュレートされたコードPUコード命令が、レガシーゲームのプレイ中に受信したユーザー入力を満たす(例えば、応答を生成する)操作(機能など)を含むかどうかを判定する。例示では、機能が識別されると、基本ブロックコンパイラ104は、エミュレートされたコードのPUコード命令を変換して、基本ブロックを生成する。例示では、受信したユーザー入力に応えて、操作202の前に、ユーザー入力を処理するために必要とされないレガシーゲームの他のエミュレートされたコードPUコード命令は、基本ブロックコンパイラ104によって基本ブロックにコンパイルされない。
方法200の操作208において、操作206で生成された基本ブロックは、基本ブロックコンパイラ104によってキャッシュ102に格納される。次に、キャッシュされた基本ブロックは、操作204で実行され、操作202の前に受信されたユーザー入力を処理する。
一実施形態では、方法200は、サーバシステムの1つ以上のプロセッサによって実行される。一例として、サーバシステムは、更新されたマシンをサーバとして含む。説明すると、各サーバブレードは、PS4(登録商標)またはPS5(登録商標)である。
一実施形態では、方法200は、ユーザー入力が受信されるまで実行されない。例えば、基本ブロック1~nの1つなどの基本ブロックが、キャッシュ102に格納されているかどうかの判定はされず、基本ブロックのコンパイルも、ユーザー入力が受信されるまで基本ブロックの実行もされない。
一実施形態では、基本ブロックコンパイラ104は、レガシーゲームNのプレイ中の第1のユーザー入力に応えて、基本ブロック1~nの1つ以上をコンパイルし、レガシーゲームNのプレイ中の第2ユーザー入力に応えて、基本ブロック1~nの残りの1つ以上をコンパイルする。説明すると、基本ブロックコンパイラ104は、第1のユーザー入力を処理するために基本ブロック1及び2を生成し、第2のユーザー入力を処理するために基本ブロック3~7を生成する。第2のユーザー入力は、第1のユーザー入力の後に受信される。
図3は、基本ブロック1~nなどの基本ブロックをコンパイル及びディスパッチするためのシステム304の実施形態を説明するためのブロック図である。システム300は、基本ブロックコンパイラ104、キャッシュ102、及びブロックディスパッチャ302を含む。一例として、ブロックディスパッチャ302は、ユーザー入力を処理するために基本ブロック1~nの1つ以上の操作を実行する、ハードウェアもしくはソフトウェア、またはそれらの組み合わせである。説明すると、ブロックディスパッチャ302は、PLDまたはASICまたはコントローラである。別の例として、ブロックディスパッチャ302はコンピュータソフトウェアである。一例として、ブロックディスパッチャ302は、更新されたマシンのGPUまたはCPUである。
基本ブロックコンパイラ104は、操作コード(オペコード)などのエミュレートされたPUコード106(図1)の一部を復号し、その部分を、更新されたマシンの処理ユニットのための中間表現に変換する。例えば、基本ブロックコンパイラ104は、1つ以上の命令など、エミュレートされたPUコード106のCPUコードの一部を解析して、CPUコードの一部がユーザー入力を処理するための機能を含むかどうかを判定する。そのように判定すると、基本ブロックコンパイラ104は、CPUコードの一部を、基本ブロック1~nなどの1つ以上の基本ブロックに変換する。別の例として、基本ブロックコンパイラ104は、1つ以上の命令などのエミュレートされたPUコード106のGPUコードの一部を解析して、GPUコードの一部が、ユーザー入力を処理する機能を含むかどうかを判定する。そのように判定すると、基本ブロックコンパイラ104は、GPUコードの一部を、基本ブロック1~nなどの1つ以上の基本ブロックに変換する。
また、基本ブロックコンパイラ104は、エミュレートされたPUコード106の一部から生成された各基本ブロックの実行のサイクル数を推定して、推定カウントを生成する。例えば、基本ブロックコンパイラ104は、基本ブロック1がジャンプ操作を含み、ジャンプ操作が所定の時間を要すると判定する。基本ブロックコンパイラ104は、基本ブロック1のジャンプ操作が所定の時間を要すると推定する。ブロックコンパイラ104は、推定されたカウントをキャッシュ102に格納する。例えば、ブロックコンパイラ104は、サイクル数が推定される推定されたカウントを基本ブロックnに格納する。
基本ブロックがコンパイルされると、それらは高速ルックアップのためにキャッシュ102に格納される。例えば、どの基本ブロックがコンパイルされているかに応じてユーザー入力を受信した後に別のユーザー入力が受信され、同じ基本ブロックが、他のユーザー入力の処理に使用できるとき、基本ブロックは、キャッシュ102から迅速にアクセスすることができ、再生成される必要がない。
さらに、キャッシュ102に格納された1つ以上の基本ブロックは、コンパイル後に無効としてマークできる。無効としてマークされた1つ以上の基本ブロックは、その後、基本ブロックの実行中に有効化されるか、または無効化される。1つ以上の基本ブロックが無効化されるとき、1つ以上の追加の基本ブロックがコンパイルされる。1つ以上の追加の基本ブロックのコンパイルは、本明細書では、1つ以上の基本ブロックの再コンパイルと呼ばれることがある。
1つ以上の追加の基本ブロックの各々は、1つ以上の基本ブロック1~nの構造と同じ構造を有する。例えば、1つ以上の追加の基本ブロックの各々は、ソースレジスタアドレス、宛先レジスタアドレス、及び操作を有する。別の例として、1つ以上の追加の基本ブロックの各々は、ソースレジスタアドレス、宛先レジスタアドレス、操作、及び追加の基本ブロックの操作の実行のサイクル数を有する。例では、1つ以上の追加の基本ブロックのいくつかは、無効なマークを含む。さらに別の例として、1つ以上の追加の基本ブロックの各々は、ソースレジスタアドレス、宛先レジスタアドレス、操作、及び追加の基本ブロックの操作の実行のサイクル数を有する。コードの追加ブロックの各々は、基本ブロック1~nの各々と同じ方法で実行されることに留意されたい。
ブロックディスパッチャ302は、ユーザー入力に基づいて、基本ブロック1~nの1つ以上を実行または動作する。例えば、ブロックディスパッチャ302は、基本ブロック1及び2を実行して第1のユーザー入力を処理し、第2のユーザー入力に応えて基本ブロック3~7を実行する。一例として、ブロックディスパッチャ302は、デジタルクロック発振器またはクロックジェネレータなどのクロックソースを含み、これは、実際のカウントを生成するために、ユーザー入力に基づいて1つ以上の基本ブロック1~nを実行するために使用されるサイクル数をカウントする。ブロックディスパッチャ302は、実際のカウントをブロックコンパイラ104に送信して、推定されたカウントを実際のカウントで更新する。例えば、実際のカウントは、実際のカウントが計算される基本ブロックnに格納される。説明すると、実際のカウントは、基本ブロックnに割り当てられたキャッシュ102の1つ以上のメモリレジスタに格納される。
一実施形態では、基本ブロックコンパイラ104は、任意の基本ブロックの実行のためのサイクル数を推定しない。この実施形態では、推定されたカウントの実際のカウントへの置き換えはない。むしろ、この実施形態では、実際のカウントは、ブロックコンパイラ104によって、実際のカウントが判定される基本ブロックnに格納される。
図4Aは、ゲームコンソール402内での基本ブロック1~nのコンパイルを説明するためのシステム400の実施形態の図である。システム400は、ゲームコンソール402、サーバシステム404、コンピュータネットワーク408、及びディスプレイデバイス410を含む。サーバシステム404は、1つ以上のサーバを含む。一例として、サーバシステム404は、データセンタのハウジング内に配置されている。サーバシステム404は、エミュレートされたPUコード104などのエミュレートされたPUコードを格納するメモリデバイス412を含む。例えば、メモリデバイス412は、ゲームコード1(gc1)、ゲームコード2(gc2)などゲームコードN(gcN)までを格納する。ゲームコードgcNは、エミュレートされたPUコード106の例である(図1)。ゲームコード1~Nの各々は、レガシーゲームのレガシーコードである。説明すると、ゲームコードgc1は、第1のレガシーゲームをプレイするためのマシンコードであり、ゲームコードgc2は、第2のレガシーゲームをプレイするためのマシンコードである。第2のレガシーゲームは、第1のレガシーゲームとは異なっている。一例として、メモリデバイス412は、レガシーマシンのメモリデバイスであることに留意されたい。
一例として、ゲームコードgc1~gcNのうちどれも、更新されたマシンで実行できず、かつ、レガシーマシンで実行できない。説明すると、更新されたマシンのCPUまたはオペレーティングシステムは、ゲームコードgc1~gcNの実行をサポートできない。その一方で、レガシーマシンのCPUまたはオペレーティングシステムは、ゲームコードgc1~gcNの実行をサポートする。本明細書で使用されるコンピュータネットワークの例は、インターネットなどの広域及び作業中の(WAN)、またはイントラネットなどのローカルエリアネットワーク(LAN)、またはそれらの組み合わせを含む。
ゲームコンソール402は、更新されたマシンの一例である。例えば、ゲームコンソール402は、PS4(登録商標)またはPS5(登録商標)である。ディスプレイデバイス410の例は、テレビ、スマートテレビ、及びコンピュータモニタを含む。説明すると、ディスプレイデバイス410は、液晶ディスプレイ(LCD)デバイス、または発光ダイオード(LED)ディスプレイデバイス、または有機発光ダイオード(OLED)ディスプレイデバイスである。
システム400は、ユーザー1の片手または両手で保持されるハンドヘルドコントローラ414をさらに含む。本明細書で使用されるハンドヘルドコントローラの例は、ボタンを備えたコントローラ、Sony(登録商標)CorporationのMove(登録商標)コントローラ、及び銃型コントローラを含む。ハンドヘルドコントローラのボタンの例は、ジョイスティック、ディスプレイ画面410上で仮想オブジェクトを上、下、左、または右に移動するためのボタン、及びゲームタイトルGNを有するレガシーゲームNの様々な機能を選択するための他のボタンを含む。
ゲームコンソール402は、メモリデバイス406、及びエミュレーションプロセッサシステム409を含む。一例として、本明細書で使用されるプロセッサシステムは、互いに結合された1つ以上のプロセッサを含む。エミュレーションプロセッサシステム409は、メモリデバイス406に結合されている。エミュレーションプロセッサシステム409は、基本ブロックコンパイラ104及びキャッシュ102を含む。基本ブロックコンパイラ104は、キャッシュ102に結合されている。
ゲームコンソール402は、高精細メディアインターフェース(HDMI(登録商標))ケーブルなどの有線通信媒体または無線接続を介してディスプレイデバイス410に結合される。本明細書で使用される無線接続の例は、Wi-Fi(登録商標)接続またはBluetooth(登録商標)接続を含む。また、ハンドヘルドコントローラ414は、有線接続または無線接続を介してゲームコンソール402に結合されている。本明細書で使用される有線接続の例は、シリアル転送ケーブル、パラレル転送ケーブル、及びユニバーサルシリアルバス(USB)ケーブルを含む。
クライアントデバイスの一例は、ハンドヘルドコントローラ、ゲームコンソール、及びディスプレイデバイスの組み合わせを含む。クライアントデバイスの別の例は、ハンドヘルドコントローラとディスプレイデバイスの組み合わせを含む。
ユーザー1は、ユーザー識別(ID)及びパスワードがサーバシステム404によって認証されると、自身のユーザーアカウントにログインする。ユーザー1は、サーバシステム1によってユーザー名などのユーザーID1を割り当てられる。ユーザー1が自身のユーザーアカウントにログインすると、ユーザー1は、ゲームタイトルG1、ゲームタイトルGa、ゲームタイトルG2などゲームタイトルGNまでの複数のゲームタイトルにアクセスできる。ゲームタイトルGNまでのゲームタイトルG1、G2などは、レガシーゲームのタイトルの例である。ゲームタイトルGaは、レガシーゲームではないゲームのタイトルである。むしろ、ゲームタイトルGaは、レガシーマシンでのプレイに使用できないFortnite(登録商標)など、現在のゲームのタイトルである。
ユーザー1は、自身のユーザーアカウントにログインした後、ハンドヘルドコントローラ414上の1つ以上のボタンを選択して、ゲームタイトルGNを選択し、レガシーゲームをプレイする。ユーザー1が、ゲームタイトルGNを選択すると、その選択を示すユーザー入力418が、ハンドヘルドコントローラ414から、ゲームコンソール402及びコンピュータネットワーク408を介してサーバシステム404に送信される。一例として、ユーザー入力は入力信号である。ゲームタイトルGNの選択を示すユーザー入力418を受信すると、サーバシステム404は、ユーザー入力418に基づいてゲームコードgcNを識別する。例えば、サーバシステム404は、ゲームコードgcNがゲームタイトルGNと同じゲームタイトルを有し、その選択がユーザー入力418に示されていることを識別する。
サーバシステム404は、コンピュータネットワーク408を介してゲームコードgcNをゲームコンソール402に送信する。ゲームコードgcNを受信すると、エミュレーションプロセッサシステム409は、ゲームコードgcNをゲームコンソール402のメモリデバイス406に格納する。
ゲームコードgcNを有するレガシーゲームNのプレイ中に、ユーザー入力420が、無線接続を介してハンドヘルドコントローラ414から受信されると、エミュレーションプロセッサシステム409は、基本ブロックコンパイラ104を実行して、メモリデバイス406に格納されているゲームコードgcNの一部からゲームコードGCNの一部を生成する。ゲームコードGCNの一部は、ユーザー入力420に基づいて生成される。例えば、ユーザー入力420が、レガシーゲームNのプレイ中に位置P1から位置P2にWarHawk(登録商標)戦闘機を移動させる要求を含むとき、基本ブロックコンパイラ104はゲームコードgcNを解析して、位置P1から位置P2を計算する命令を特定する。基本ブロックコンパイラ104は、命令をゲームコードGCNの基本ブロックに変換し、基本ブロックが、次いで実行され、WarHawk(登録商標)戦闘機の位置をP1からP2に変更する。例では、ゲームコードGCNの基本ブロックは、エミュレーションプロセッサシステム409のGPUによって実行されて、1つ以上の画像フレーム422を生成する。説明すると、1つ以上の画像フレーム422は、位置P2にあるWarHawk(登録商標)戦闘機を有する仮想環境を表示するために、ディスプレイデバイス410上に表示される。このようにして、ゲームコードGCNの大部分または全体は、基本ブロックコンパイラ104によってコンパイルされ、実行のためにキャッシュ102に格納される。一例として、仮想シーンなどの仮想環境は、1つ以上の仮想現実(VR)画像または1つ以上の拡張現実(AR)画像を含む。
一実施形態では、サーバシステム404とゲームコンソール402との間のデータの通信は、インターネットプロトコル(TCP/IP)を介した伝送制御プロトコルなどのネットワーク通信プロトコルを介して行われる。例えば、サーバシステム404は、データをパケットに変換するためにネットワークインターフェースコントローラを含む。本明細書で使用されるネットワークインターフェースコントローラの例は、ネットワークインターフェースカード(NIC)及びネットワークアダプタを含む。サーバシステム404のネットワークインターフェースコントローラは、メモリデバイス412に結合されて、メモリデバイス412からデータを受信する。メモリデバイス412からデータを受信すると、サーバシステム404のネットワークインターフェースコントローラは、ネットワーク通信プロトコルをデータに適用することによって、1つ以上のパケット内にデータを埋め込む。1つ以上のパケットは、サーバシステム404のネットワークインターフェースコントローラから、コンピュータネットワーク408を介してゲームコンソール402に転送される。ゲームコンソール402は、ネットワーク通信プロトコルを適用することによって1つ以上のパケットからデータを抽出するネットワークインターフェースコントローラを含む。ゲームコンソール402のネットワークインターフェースコントローラは、エミュレーションプロセッサシステム409に結合されている。ゲームコンソール402のネットワークインターフェースコントローラは、コンピュータネットワーク408から受信したデータをエミュレーションプロセッサシステム409に提供する。さらに、ゲームコンソール402のネットワークインターフェースコントローラは、エミュレーションプロセッサシステム409からデータを受信し、ネットワーク通信プロトコルを適用することによって1つ以上のパケット内にデータを埋め込み、1つ以上のパケットをコンピュータネットワーク408を介してサーバシステム404に送信する。サーバシステム404のネットワークインターフェースコントローラは、ネットワーク通信プロトコルを、コンピュータネットワーク408から受信した1つ以上のパケットに適用して、1つ以上のパケットからデータを抽出し、格納のためにデータをメモリデバイス412に送信する。
一実施形態では、コンピュータネットワーク408に加えて、またはその代わりに、サーバシステム404とゲームコンソール402との間でデータを通信するためにセルラーネットワークが使用される。例えば、サーバシステム404とゲームコンソール402との間の通信は、無線技術を使用して促進される。無線技術は、例えば、4Gまたは5G無線通信技術を含む。本明細書で使用されるように、5Gはセルラーネットワーク技術の第5世代である。また、5Gネットワークは、デジタルセルラーネットワークであり、そこでは、プロバイダによって網羅されるサービスエリアが、セルと呼ばれる小さな地理的エリアに分割されている。5G無線通信技術では、音声と画像を表すアナログ信号が電話でデジタル化され、アナログ-デジタルコンバータによって変換され、ビットのストリームとして送信される。セル内のすべての5G無線デバイスは、他のセルで再利用される周波数のプールからトランシーバによって割り当てられた周波数チャネルを介して、セル内のローカルアンテナアレイ及び低電力自動トランシーバ(送信機及び受信機)の電波によって通信する。ローカルアンテナは、高帯域幅の光ファイバまたは無線バックホール接続によってセルラーネットワークで接続される。他のセルネットワークと同様に、あるセルから別のセルに移動するモバイルデバイスは、新しいセルに自動的に転送される。5Gネットワークは、通信ネットワークの単なる一例示的タイプであり、本開示の実施形態は、5Gに続く後続世代の有線技術または無線技術と同様に、3Gまたは4Gなどの前世代の無線通信または有線通信を利用することができることを理解されたい。
一実施形態では、ゲームコンソール402及びサーバシステム404のいずれかは、本明細書ではコンピューティングデバイスと称される。コンピューティングデバイスの他の例には、タブレット、スマートフォン、ラップトップコンピュータ、デスクトップコンピュータ、及びスマートテレビが含まれる。
一実施形態では、ゲームコードgc1~gcNの各々は、サーバシステム404またはレガシーマシンの別個のメモリデバイスに格納されている。例えば、ゲームコードgc1は、第1のレガシーマシンのメモリデバイスに格納され、ゲームコードgc2は、第2のレガシーマシンのメモリデバイスに格納される。別の例として、ゲームコードgc1は、サーバシステム404の第1のメモリデバイスに格納され、ゲームコードgc2は、サーバシステム404の第2のメモリデバイスに格納される。
一実施形態では、メモリデバイス412またはメモリデバイス406はキャッシュではない。むしろ、メモリデバイス412またはメモリデバイス406の各々は、RAMなどのメインメモリである。
一実施形態では、メモリデバイス412は、メモリコントローラに結合されている。メモリコントローラは、メモリデバイス412からデータを読み取り、メモリデバイス412にデータを書き込む。メモリコントローラは、サーバシステム404のネットワークインターフェースコントローラに結合されている。メモリコントローラは、サーバシステム404のネットワークインターフェースコントローラから受信したデータを、格納のためにメモリデバイス412に送信する。メモリコントローラはまた、メモリデバイス412から受信したデータを、コンピュータネットワーク408を介してゲームコンソール402に送信するために、サーバシステム404のネットワークインターフェースコントローラにも送信する。
図4Bは、システム450の実施形態の図であり、エミュレーションプロセッサシステム409がサーバシステム404内に配置され、1つ以上の画像フレーム422が、仮想環境または仮想シーンの表示のために、コンピュータネットワーク408を介してサーバシステム404からディスプレイデバイス410へ送信されることを示している。システム450は、サーバシステム404、ディスプレイデバイス410、及びハンドヘルドコントローラ414を含む。
サーバシステム404は、メモリデバイス412、及びエミュレーションプロセッサシステム409を含む。メモリデバイス412は、エミュレーションプロセッサシステム409に結合されている。ディスプレイデバイス410は、ディスプレイデバイス410のネットワークインターフェースコントローラを介してコンピュータネットワーク408に結合される。ディスプレイデバイス410は、ディスプレイデバイス410のネットワークインターフェースコントローラに結合されたプロセッサを含む。ディスプレイデバイス410のプロセッサは、ゲームタイトルGN及びゲームコードgcNを有するレガシーゲームのプレイ中にユーザー入力420を受信し、ディスプレイデバイス410のネットワークインターフェースコントローラにユーザー入力420を送信する。ディスプレイデバイス410のネットワークインターフェースコントローラは、コンピュータネットワーク408を介してサーバシステム404のエミュレーションプロセッサシステム409にユーザー入力420を送信する。
ユーザー入力420を受信すると、エミュレーションプロセッサシステム409は、ゲームコードgcNに関して図4Aを参照して上述されたのと同じ機能を実行して、1つ以上の画像フレーム422の生成のために基本ブロック1~Nをコンパイルする。サーバシステム404は、ディスプレイデバイス410のディスプレイ画面上での仮想環境452などの仮想環境の表示のために、コンピュータネットワーク408を介してディスプレイデバイス410に1つ以上の画像フレーム422を送信する。例えば、仮想環境452は、Warhawk(登録商標)戦闘機の一例である仮想オブジェクト454を含む。例では、仮想環境452は、仮想ピラミッド455及び仮想構造456などの1つ以上の仮想オブジェクトを含む仮想背景を含む。例では、仮想オブジェクト454は、ゲームコードgcNを有するレガシーゲームNのプレイ中に、仮想ピラミッド455及び仮想構造456に向けて仮想ミサイルを発射することができる。
一実施形態では、サーバシステム404とディスプレイデバイス410との間のデータの通信は、ネットワーク通信プロトコルを介して行われる。例えば、サーバシステム404は、データをパケットに変換するネットワークインターフェースコントローラを含む。サーバシステム404のネットワークインターフェースコントローラは、エミュレーションプロセッサシステムからデータを受信するためにエミュレーションプロセッサシステム409に結合され、ネットワーク通信プロトコルを適用することによって1つ以上のパケット内にデータを埋め込む。パケットは、サーバシステム404のネットワークインターフェースコントローラから、コンピュータネットワーク408を介してディスプレイデバイス410に転送される。ディスプレイデバイス410のネットワークインターフェースコントローラは、ネットワーク通信プロトコルを適用することによって、1つ以上のパケットからデータを抽出する。ディスプレイデバイスのネットワークインターフェースコントローラは、ディスプレイデバイス410のプロセッサに結合されている。ディスプレイデバイスのネットワークインターフェースコントローラは、コンピュータネットワーク408から受信したデータをディスプレイデバイス410のプロセッサに提供する。ディスプレイデバイス410のプロセッサは、画像フレーム422などのデータを、ディスプレイデバイス410のディスプレイ画面上にレンダリングする。さらに、ディスプレイデバイス410のネットワークインターフェースコントローラは、ディスプレイデバイス410のプロセッサからデータを受信し、ネットワーク通信プロトコルを適用することによって1つ以上のパケット内にデータを埋め込み、コンピュータネットワーク408を介して1つ以上のパケットをサーバシステム404に送信する。サーバシステム404のネットワークインターフェースコントローラは、ネットワーク通信プロトコルを、コンピュータネットワーク408から受信した1つ以上のパケットに適用して、1つ以上のパケットからデータを抽出し、格納のためにデータをメモリデバイス409に送信する。
一実施形態では、コンピュータネットワーク408に加えて、またはその代わりに、サーバシステム404とディスプレイデバイス410との間でデータを通信するためにセルラーネットワークが使用される。例えば、サーバシステム404とディスプレイデバイスとの間の通信は、無線技術を使用して促進される。
一実施形態では、ディスプレイデバイス410の代わりに、ヘッドマウントディスプレイ(HMD)が使用される。ヘッドマウントディスプレイは、ユーザー1の頭に装着され、LED画面、OLED画面、LCD画面などのディスプレイ画面を含む。HMDは、ディスプレイデバイス410によって実行されるものと同じ機能を実行する。
図5Aは、基本ブロックの一実施形態を説明するための図である。各基本ブロックは、ソースレジスタアドレス、宛先レジスタアドレス、及び操作を含む。例えば、基本ブロック1は、ソースレジスタアドレス1、宛先レジスタアドレス1、及び操作1を含む。基本ブロック2は、ソースレジスタアドレス2、宛先レジスタアドレス2、及び操作2を含み、基本ブロックnは、ソースレジスタアドレスn、宛先レジスタアドレスn、及び操作nを含む。一例として、ソースレジスタアドレスは、キャッシュ102内の1つ以上のソースレジスタのアドレスであり、宛先レジスタアドレスは、キャッシュ102内の1つ以上の宛先レジスタのアドレスである。基本ブロックの操作の例には、ジャンプ操作、分岐操作、読み取り操作、書き込み操作、比較操作、リターン操作が含まれる。基本ブロックの操作のさらなる例には、加算操作、減算操作、乗算操作、及び除算操作などの算術操作が含まれる。
一例として、操作nが読み出し操作のとき、データがソースレジスタアドレスnから読み出され、基本ブロックnを実行する。別の例として、操作nが書き込み操作である場合、データが宛先レジスタアドレスnに書き込まれ、基本ブロックnを実行する。別の例として、操作nが移動操作であるとき、データはソースレジスタアドレスnから読み取られ、操作nはデータに対して実行され、データは宛先レジスタアドレスnに書き込まれ、基本ブロックnを実行する。さらに別の例として、操作nが比較操作であるとき、基本ブロックnに記載された第1のソースレジスタアドレスに格納されたデータの第1の値が、基本ブロックnに記載された第2のソースレジスタアドレスに格納されたデータの第2の値と比較され、比較結果を生成し、この比較結果が宛先レジスタアドレスnに格納されて基本ブロックnを実行する。別の例として、操作nが加算操作であるとき、基本ブロックn内に記載された第1のソースアドレスに格納されたデータの第1の値が、基本ブロックn内に示された第2のソースアドレスに格納されたデータの第2の値に加算され、加算結果を生成し、この加算結果が宛先レジスタアドレスnに格納され、基本ブロックnを実行する。さらに別の例として、本明細書で説明する仮想オブジェクトが、位置P1から位置P2に移動するためのものであり、操作nが、仮想オブジェクトの位置がP1からP2に更新されるべきである書き込み操作であるとき、宛先レジスタアドレスnでの位置P1は、基本ブロックnを実行するために位置P2で上書きされる。例では、基本ブロックnが実行されると、仮想オブジェクトが位置P1から位置P2に移動することがエミュレーションプロセッサシステム409に示される。また、例では、ユーザー入力420(図4A)は、エミュレーションプロセッサシステム409に仮想オブジェクトを位置P1からP2に移動するように指示する。同様に、別の例として、本明細書で説明する仮想オブジェクトが、方向O1から方向O2に移動するものであり、操作nが、仮想オブジェクトの方向がO1からO2に更新されるべきである書き込み操作であるとき、宛先レジスタアドレスnの方向O1は、方向O2で上書きされ、基本ブロックnを実行する。例では、基本ブロックnが実行されると、仮想オブジェクトが方向O1から方向O2に移動することがエミュレーションプロセッサシステム409に示される。さらに、例では、ユーザー入力420は、エミュレーションプロセッサシステム409に仮想オブジェクトを方向O1からO2に移動するように指示する。
さらに別の例として、本明細書で説明する仮想オブジェクトの一部が、色を赤から緑に変更するものであり、操作nが、仮想オブジェクトの色が赤から緑に更新されるべきである書き込み操作であるとき、宛先レジスタアドレスnで赤色を表すデータは、緑色を表すデータで上書きされ、基本ブロックnを実行する。例では、基本ブロックnが実行されると、仮想オブジェクトの一部の色が赤から緑に変更されるべきであることがエミュレーションプロセッサシステム409に示される。また、例では、ユーザー入力420は、仮想オブジェクトの部分の色を赤から緑に変更するようにエミュレーションプロセッサシステム409に指示する。同様の方法で、強度及びテクスチャなどの他のパラメータは、ユーザー入力420に基づいて変更できる。
各基本ブロックは、基本ブロック実行のサイクル数を含む。例えば、基本ブロック1は、基本ブロック1実行のサイクル数1を含む。別の例として、基本ブロック2は、基本ブロック2の実行のサイクル数2を含み、基本ブロックnは、基本ブロックnの実行のサイクル数nを含む。一例として、基本ブロック実行の推定サイクル数は、基本ブロックのコンパイル時に基本ブロックコンパイラ104(図1)によって推定される。例では、推定サイクル数は、基本ブロックに格納されている。また、例では、基本ブロックがブロックディスパッチャ302によって実行された後(図3)、ブロックディスパッチャ302は、上記の方法で推定実行サイクル数を実際のカウントで更新し、実際のカウントをブロックコンパイラ104に提供する。推定されたサイクル数は、ブロックコンパイラ104によって基本ブロックの実際のカウントに置き換えられる。別の例として、操作nの実行のサイクル数の実際のカウントは、ブロックディスパッチャ302によって生成され、基本ブロックnに格納される。例では、操作nの実行のサイクル数の推定はない。
さらに、別の例として、基本ブロック1~nの1つ以上は、基本ブロック1~nの1つ以上が有効性についてチェックされることを示す無効なマークを含む。例えば、基本ブロックnは、無効なマークnを含む。
エミュレートされたPUコード106をゲームコードgcNの基本ブロック1~nに変換することにより、フックブロックなどのフックが、基本ブロック1~nの任意の2つの間に挿入され得ることに留意されたい。例えば、フックブロックnは、基本ブロック(n-1)とnの間に挿入できる。フックブロックnは、基本ブロックnの構造と同じ構造である。例えば、フックブロックは、ソースレジスタアドレス、宛先レジスタアドレス、操作、及びフックブロックの操作の実行サイクル数を含む。一例として、レガシーマシンに関連するセキュリティの問題のため、本明細書で説明されるフックは、レガシーマシンで実行するためにレガシーマシンに格納されたエミュレートされたCPUコード106(図1)の命令の間に挿入できない。
さらに、基本ブロック1~nは、その中に固定されるなど、キャッシュ102にキー入力されることに留意されたい(図1)。例えば、基本ブロック1は、キャッシュ102内の基本ブロック1の開始場所を示す開始メモリアドレス1を有する。また、基本ブロック1は、キャッシュ102内の基本ブロック1の終了場所を示す終了メモリアドレス1を有する。別の例として、基本ブロック1の終了アドレス1は、開始メモリアドレス1からのキャッシュ106内のオフセットによって示される。さらに別の例として、基本ブロック2は、キャッシュ102内の基本ブロック2の開始場所を示す開始メモリアドレス2を有する。また、基本ブロック2は、キャッシュ102内の基本ブロック2の終了場所を示す終了メモリアドレス2を有する。別の例として、基本ブロック2の終了アドレス2は、開始メモリアドレス2からのキャッシュ106内のオフセットによって示される。同様に、別の例として、基本ブロックnは、キャッシュ102内の基本ブロックnの開始場所を示す開始メモリアドレスnを有する。また、基本ブロックnは、キャッシュ102内の基本ブロックnの終了場所を示す終了メモリアドレスnを有する。別の例として、基本ブロックnの終了アドレスnは、開始メモリアドレスnからのキャッシュ106内のオフセットによって示される。キャッシュ102に格納された基本ブロック1~nの開始及び終了メモリアドレスから、基本ブロックコンパイラ102などのエミュレーションプロセッサシステム409(図4A)は、キャッシュ102内の基本ブロック1~nの場所を特定することができる。
また、更新されたマシンのブロックディスパッチャ302が、基本ブロック1を実行した直後に基本ブロックnを実行することをユーザー入力が示す場合、ブロックディスパッチャ302は、キャッシュ102内の基本ブロック2~(n-1)の実行をスキップし、基本ブロック1から基本ブロックnにジャンプすることに留意されたい。この場合、基本ブロック1の実行は、ブロックディスパッチャ302が基本ブロックnにジャンプするときに、ブロックディスパッチャ302によって打ち切られる。また、この場合、次の基本ブロックの開始アドレスは、前の基本ブロックの終了アドレスに連続している。例えば、開始アドレス2は終了アドレス1に連続し、開始アドレスnは基本ブロック(n-1)の終了アドレス(n-1)に連続している。
一実施形態では、ソースレジスタアドレス1~nは、キャッシュ102のレジスタのメモリアドレスであり、かつ、宛先レジスタアドレス1~nは、キャッシュ102内のレジスタのメモリアドレスである。
一実施形態では、基本ブロックは複数の操作を含む。例えば、基本ブロックnは、第1の操作、第1のソースレジスタアドレス、及び第1の宛先レジスタアドレスを含む。基本ブロックnは、第2の操作、第2のソースレジスタアドレス、及び第2の宛先レジスタアドレスをさらに含む。
一実施形態では、基本ブロックは、操作、複数のソースアドレス、及び宛先アドレスを含む。
一実施形態では、基本ブロックは、操作、複数の宛先アドレス、及びソースアドレスを含む。
一実施形態では、基本ブロックは、複数の操作、複数のソースアドレス、及び複数の宛先アドレスを含む。
一実施形態では、基本ブロックは、1つ以上の操作、1つ以上のソースアドレス、及び1つ以上の宛先アドレスを含む。
一実施形態では、基本ブロックは、ソースレジスタアドレスまたは宛先レジスタアドレスのいずれかを含むが、両方は含まない。
一実施形態では、ブロックコンパイラ102は、基本ブロックnの実行のためのサイクル数を推定しない。むしろ、ブロックディスパッチャ302は、基本ブロックnの実行のサイクル数の実際のカウントを生成し、実際のカウントを基本ブロックnに格納する。
図5Bは、基本ブロックコンパイラ104(図1)によって実行されるコンパイル操作の実施形態を説明するための図である。エミュレートされたPUコード命令Mの例は、命令550として示され、基本ブロックnの例は、基本ブロック552として示され、ここで、Mは正の整数である。命令550は、aビットの長さを有するソースアドレスMと、bビットの長さを有する宛先アドレスMと、長さcのビットによって表される操作Mと、を含み、ここで、a、b、及びcは正の整数である。一例として、aは4、bは4、cは32である。一例として、aビット、bビット、及びcビットは、レガシーマシンの1つ以上のメモリデバイスに格納される。例えば、aビットは、メモリデバイス406または412に格納される(図4A及び図4B)。操作552は、dビットの長さを有するソースレジスタアドレスnと、eビットの長さを有する宛先アドレスnと、長さfのビットによって表される操作nを含み、ここで、d、e、及びfは正の整数である。一例として、dは8、eは8、fは64である。一例として、dビット、eビット、及びfビットは、更新されたマシンの1つ以上のレジスタに格納される。例として、dはaより大きく、eはbより大きく、fはcより大きい。説明すると、aが4、bが4、cが32のとき、dは8、eは8、fは64である。別の例として、aが4、bが4、cが32のとき、dは16、eは16、fは128である。
コンパイル操作を実行するために、基本ブロックコンパイラ104(図1)は、ソースアドレスMをソースレジスタアドレスnに変換し、宛先アドレスMを宛先レジスタアドレスnに変換し、操作Mを操作nに変換して、エミュレートされたPUコード命令Mから基本ブロックnを生成する。例えば、基本ブロックコンパイラ104は、ソースアドレスMの4ビットを右にシフトして、キャッシュ102内の8つのソースレジスタの4つのメモリアドレスを占有し、8つのソースレジスタの残りの4つのメモリアドレスの任意のビットをマスクする。ソースアドレスMの4ビットによって占められる4つのメモリアドレスは、キャッシュ102内の8つのソースレジスタの最下位位置にあり、ビットがマスクされる残りの4つのメモリアドレスは、キャッシュ102内のソースレジスタの8つの最上位位置にある。
別の例として、基本ブロックコンパイラ104は、宛先アドレスMの4ビットを右にシフトして、キャッシュ102内の8つの宛先レジスタの4つのメモリアドレスを占有し、8つの宛先レジスタの残りの4つのメモリアドレスの任意のビットをマスクする。宛先アドレスmの4ビットによって占められる4つのメモリアドレスは、キャッシュ102内の8つの宛先レジスタの最下位位置にあり、ビットがマスクされる残りの4つのメモリアドレスは、キャッシュ102内の8つの宛先レジスタの最上位位置にある。
同様に、別の例として、基本ブロックコンパイラ104は、操作Mの32ビットを右にシフトして、キャッシュ102内の64個の操作レジスタの32個のメモリアドレスを占有し、64個の操作レジスタの残りの32個のメモリアドレスの任意のビットをマスクする。操作Mの32ビットによって占有される32個のメモリアドレスは、キャッシュ102内の32個の操作レジスタの最下位位置にあり、ビットがマスクされる残りの32個のメモリアドレスは、キャッシュ102内の64個の操作レジスタの最上位位置にある。操作nは、キャッシュ102の操作レジスタに格納される。
図6Aは、エミュレーションプロセッサシステム409の構成要素を説明するためのシステム600の実施形態の図である。システム600は、メモリデバイス412と、エミュレーションプロセッサシステム409と、を含む。エミュレーションプロセッサシステム409の基本ブロックコンパイラ104は、パーサまたはデコーダ602を含む。基本ブロックコンパイラ104は、ブロッククリエータ604、ブロックキャッシャ606A、及びブロックリーダ608をさらに含む。エミュレーションプロセッサシステム409は、ブロックディスパッチャ302を含む。
一例として、パーサ609、ブロッククリエータ604、ブロックキャッシャ606、ブロックリーダ608、及びブロックディスパッチャ302の各々は、ソフトウェア、ハードウェア、またはそれらの組み合わせを使用して実装される。例えば、パーサ609、ブロッククリエータ604、ブロックキャッシャ606、ブロックリーダ608、及びブロックディスパッチャ302の各々は、PLDまたはASICまたはコントローラまたはプロセッサまたはコンピュータプログラムの一部など、別個の集積回路である。別の例として、パーサ609、ブロッククリエータ604、ブロックキャッシャ606、ブロックリーダ608、及びブロックディスパッチャ302の各々は、別個のコンピュータソフトウェアプログラムである。
ゲームコードgcNは、エミュレートされたPUコード命令Mまで、エミュレートされたPUコード命令1、エミュレートされたPUコード命令2などの複数の命令を含む。例えば、ゲームコードgcNの各命令は一連のビットであり、仮想オブジェクトを位置P1から位置P2に移動すること、または仮想オブジェクトの方向をO1からO2に変更すること、または仮想オブジェクトの一部のパラメータを改変することなどの機能を実装するためにレガシーマシンのプロセッサによって実行できる。
パーサ602は、ブロックキャッシャ606及びブロックリーダ608に結合されているブロッククリエータ604に結合されている。ブロックキャッシャ606及びブロックリーダ608はキャッシュ102に結合されている。ブロックリーダ608は、ブロックディスパッチャ302に結合されている。
図6Bは、基本ブロック1~nをコンパイル及び実行するための方法650の実施形態を説明するフローチャートである。方法650は、図6Aのシステム600を使用して示されている。方法650の操作652で、ブロッククリエータ604は、ユーザー入力1などの任意のユーザー入力が受信されているかどうかを判定する。一例として、ユーザー入力1は、ユーザー1によって選択されたハンドヘルドコントローラ414(図4A)の1つ以上のボタンの1つ以上の識別を含む信号である。別の例として、ユーザー入力1は、ハンドヘルドコントローラ414を中心とするxyz座標系の原点に対するピッチ、ヨー、及びロールなどの動きの尺度を含む信号である。さらに別の例として、ユーザー入力1は、HMDのxyz座標系の原点に対するピッチ、ヨー、及びロールなどの動きの尺度を含む信号である。ユーザー入力1の例は、ユーザー入力420(図4A)である。
ブロッククリエータ604は、ユーザー入力が受信されていないと判定すると、ユーザー入力が操作652で受信されたかどうかを引き続きチェックする。例えば、基本ブロックコンパイラ104は、キャッシュ102(図1)に格納された基本ブロック(n+1)~pのいずれも実行せず、基本ブロックコンパイラ104(図1)は、操作652でユーザー入力が受信されていないとき、エミュレートされたPUコード命令1~M(図6A)のいずれも識別しない(ここでpは正の整数である)。操作652でユーザー入力を受信した時点では、基本ブロック1~nは生成されず、キャッシュ102に格納されていないと想定されている。
一方で、操作652でユーザー入力が受信されたと判定したことに応えて、方法650の操作654で、ブロッククリエータ604は、キャッシュ102に格納された基本ブロック(n+1)~pの1つ以上が、ユーザー入力を満たすかどうかを判定する。例えば、ブロッククリエータ604は、キャッシュ102から基本ブロック(n+1)~pにアクセスするために要求をブロックリーダ608に送信する。例では、ブロックリーダ608は、要求を受信すると、キャッシュ102から基本ブロック(n+1)~pを読み取り、基本ブロック(n+1)~pをブロッククリエータ604に送信する。さらに、例では、ブロッククリエータ604は、基本ブロック(n+1)~pの1つ以上の機能が、ユーザー入力1を処理するなど、ユーザー入力1を満たすかどうかを判定する。説明すると、ユーザー入力1が、仮想オブジェクトの位置を位置P1から位置P2に変更することを示すとき、ブロッククリエータ604は、基本ブロック(n+1)~pのいずれかが、位置P1を位置P2で上書きする操作が含むかどうかを判定する。1つ以上の基本ブロック(n+1)~pが位置P1をP2で上書きする操作を含むと判定すると、ブロッククリエータ604は、ブロック(n+1)~pの1つ以上のうちの1つ以上の機能がユーザー入力1を満たすと判定する。一方で、基本ブロック(n+1)~pのいずれも位置P1をP2で上書きする操作を含まないと判定すると、ブロッククリエータ604は、基本ブロック(n+1)~pの機能がユーザー入力1を満たさないと判定する。
別の説明として、ユーザー入力1が、仮想オブジェクトの方向を方向O1から方向O2に変更するためのものであるとき、ブロッククリエータ604は、基本ブロック(n+1)~pのいずれかが、方向O1を方向O2で上書きする操作が含まれるかどうかを判定する。基本ブロック(n+1)~pの1つ以上が、方向O1をO2で上書きする操作を含むと判定すると、ブロッククリエータ604は、基本ブロック(n+1)~pの1つ以上のうちの1つ以上の機能が、ユーザー入力1を満たすと判定する。一方で、基本ブロック(n+1)~pのいずれも方向O1をO2で上書きする操作を含まないと判定した場合、ブロッククリエータ604は、基本ブロック(n+1)~pの機能が、ユーザー入力1を満たさないと判定する。さらに別の説明として、ユーザー入力1が、仮想オブジェクトの一部のパラメータの値を第1の値から第2の値に変更することであるとき、ブロッククリエータは、基本ブロック(n+1)~pのいずれかが、第1の値を第2の値で上書きする操作が含まれるかどうかを判定する。基本ブロック(n+1)~pの1つ以上が、第1の値を第2の値で上書きする操作を含むと判定すると、ブロッククリエータ604は、基本ブロック(n+1)~pの1つ以上のうちの1つ以上の機能が、ユーザー入力1を満たすと判定する。一方で、基本ブロック(n+1)~pのいずれも第1の値を第2の値で上書きする操作を含まないと判定すると、ブロッククリエータ604は、基本ブロック(n+1)~pの機能がユーザー入力1を満たさないと判定する。
基本ブロック(n+1)~pの1つ以上の機能が、ユーザー入力1を満たすと判定すると、方法600の操作656で、ブロックディスパッチャ302は、基本ブロック(n+1)~pの1つ以上を実行する。例えば、基本ブロック(n+1)~pの1つ以上の機能がユーザー入力1を満たすと判定すると、ブロッククリエータ604は、基本ブロック(n+1)~pの1つ以上を実行するためにブロックディスパッチャ302に命令を送信する。例では、命令の受信に応えて、ブロックディスパッチャ302は、コマンドをブロックリーダ608に送信して、操作652で受信したユーザー入力を満たすために、キャッシュ102から基本ブロック(n+1)~pの1つ以上を読み取る。また、例では、コマンドに応えてキャッシュ102から基本ブロックの1つ以上を受信すると、ブロックディスパッチャ302は、基本ブロック(n+1)~pの1つ以上を実行する。
一方で、ブロック(n+1)~pの機能がユーザー入力1を満たさないと判定すると、方法600の操作658で、ブロックコンパイラ102は、操作652で受信したユーザー入力を処理するためのエミュレートされたPUコード命令1~Mの1つ以上を識別する。例えば、ブロック(n+1)~pまでの機能がユーザー入力1を満たさないと判定すると、ブロッククリエータ604は、パーサ602に要求を送信してゲームコードgcNを解析して、ユーザー入力1で識別された機能を満たすゲームコードgcNのエミュレートされたPUコード命令1~Mの1つ以上を識別及び取得する。例では、要求の受信に応えて、パーサ602は、メモリデバイス412にアクセスして、ゲームコードgcNを解析し、エミュレートされたPUコード命令1~Mの1つ以上の機能がユーザー入力1を満たすかどうかを判定し、エミュレートされたPUコード命令1~Mの1つ以上の機能が、ユーザー入力1を満たすと判定すると、パーサ602は、エミュレートされたPUコード命令1~Mの1つ以上をブロッククリエータ604に提供する。
説明すると、ユーザー入力1が、仮想オブジェクトの位置を位置P1から位置P2に変更するためのものであるとき、パーサ602は、エミュレートされたPUコード命令1~Mのいずれかが、位置P1を位置P2で上書きする操作を含むかどうかを判定する。エミュレートされたPUコード命令1~Mの1つ以上が、位置P1をP2で上書きする操作を含むと判定すると、パーサ602は、エミュレートされたPUコード命令1~Mの1つ以上のうちの1つ以上の機能が、ユーザー入力1を満たすと判定する。一方で、エミュレートされたPUUコード命令1~Mのいずれも位置P1をP2で上書きする操作を含んでいないと判定すると、パーサ602は、エミュレートされたPUコード命令1~Mの機能がユーザー入力1を満たさないと判定する。
別の説明として、ユーザー入力1が、仮想オブジェクトの方向を方向O1から方向O2に変更するものであるとき、パーサ602は、エミュレートされたPUコード命令1~Mのいずれかが、方向O1を方向O2で上書きする操作を含むかどうかを判定する。エミュレートされたPUコード命令1~Mの1つ以上が、方向O1をO2で上書きする操作を含むと判定すると、パーサ602は、エミュレートされたPUコード命令1~Mの1つ以上のうちの1つ以上の機能がユーザー入力1を満たすと判定する。一方で、エミュレートされたPUUコード命令1~Mのいずれも位置O1をO2で上書きする操作を含んでいないと判定すると、パーサ602は、エミュレートされたPUコード命令1~Mの機能がユーザー入力1を満たさないと判定する。さらに別の例として、ユーザー入力1が、仮想オブジェクトの一部のパラメータの値を第1の値から第2の値に変更するものであるとき、パーサ602は、エミュレートされたPUコード命令1~Mのいずれかが、第1の値を第2の値で上書きする操作を含むかどうかを判定する。エミュレートされたPUコード命令1~Mの1つ以上が、第1の値を第2の値で上書きする操作を含むと判定すると、パーサ602は、エミュレートされたPUコード命令1~Mの1つ以上のうちの1つ以上の機能が、ユーザー入力1を満たすと判定する。一方で、エミュレートされたPUコード命令1~Mのいずれも第1の値を第2の値で上書きする操作を含まないと判定すると、パーサ602は、エミュレートされたPUコード命令1~Mの機能が、ユーザー入力1を満たさないと判定する。
方法600の操作660において、ユーザー入力1を満たすエミュレートされたPUコード命令1~Mの1つ以上がパーサ602から受信されると、ブロッククリエータ604は、上述のコンパイル操作を適用して、エミュレートされたPUコード命令1~Mの1つ以上のうちから1つ以上の基本ブロック1~nを生成する。例えば、ブロッククリエータ604は、1つ以上の基本ブロック1~nをコンパイルし、1つ以上の基本ブロック1~nをブロックキャッシャ606に送信し、ブロックディスパッチャ302に基本ブロック1~nの1つ以上を実行するための命令を送信する。1つ以上の基本ブロック1~nを受信すると、ブロックキャッシャ606は、1つ以上の基本ブロック1~nをキャッシュ102に格納する。
方法600の操作662において、1つ以上の基本ブロック1~nを実行するための命令をブロッククリエータ604から受信すると、ブロックディスパッチャ302は、1つ以上の基本ブロック1~nを実行して、操作652で受信したユーザー入力を処理する。例えば、ブロックディスパッチャ302は、キャッシュ102から基本ブロック1~nの1つ以上を読み取るために、ブロックリーダ608に要求を送信する。コマンドを受信すると、ブロックリーダ608は、キャッシュ102から基本ブロック1~nの1つ以上を読み取り、基本ブロック1~nの1つ以上をブロックディスパッチャ302に提供する。基本ブロック1~nの1つ以上を受信すると、ブロックディスパッチャ302は、基本ブロック1~nの1つ以上を実行して、仮想環境452を生成する(図4B)。説明すると、ブロックディスパッチャ302は、基本ブロック1~nの1つ以上を実行して、画像フレームを生成し、この画像フレームは、仮想オブジェクト454の位置及び方向、仮想オブジェクト454のパラメータ、仮想環境452内の他の仮想オブジェクトの位置及び方向、ならびに仮想環境452内の他の仮想オブジェクトのパラメータなどの仮想環境データを含む。ブロックディスパッチャ302は、画像フレームをエミュレーションプロセッサシステム409のGPUに提供して、ディスプレイデバイス410(図4A)のディスプレイ画面上に仮想環境452をレンダリングするなどして、表示する。操作652においてユーザー入力1が受信された後にユーザー入力2などの別のユーザー入力が受信されると、方法600は繰り返される。
図6Cは、異なるユーザー入力について、異なる基本ブロックまたは基本ブロックの異なるセットが動的にコンパイルされることを示すためのシステム670の実施形態の図である。システム670は、メモリデバイス412、基本ブロックコンパイラ104、ブロックディスパッチャ302、及びキャッシュ102を含む。基本ブロックコンパイラ104がユーザー入力1を受信すると、基本ブロックコンパイラ104は、ユーザー入力1に対応する基本ブロック1が、キャッシュ102に格納されているかどうかを判定する。例えば、基本ブロック1が、ユーザー入力1を処理するための機能を含むとき、基本ブロック1は、ユーザー入力1に対応する。説明すると、ユーザー入力1が、仮想オブジェクトを位置P1から位置P2に移動するものであり、基本ブロック1が、宛先レジスタアドレス1に格納された位置P1を位置P2で更新する操作を含むとき、基本ブロック1は、ユーザー入力1を処理することができる。例示ではでは、ユーザー入力1は、ハンドヘルドコントローラ414(図4A)上の右への移動ボタン、または左への移動ボタン、または上への移動ボタン、または下への移動ボタンの選択を示す信号である。同様に、基本ブロック2がユーザー入力1を処理するための機能を含まないとき、基本ブロック2はユーザー入力1に対応しない。説明すると、ユーザー入力1が、仮想オブジェクトの方向を変更せずに位置P1から位置P2に仮想オブジェクトを移動するためのものであり、基本ブロック2が、宛先レジスタ2に格納された方向O1を方向O2で更新する操作を含むとき、基本ブロック2はユーザー入力1を処理することができない。ユーザー入力1を処理することができる基本ブロック1がキャッシュ102に格納されていると判定すると、基本ブロックコンパイラ104は、基本ブロック1を実行するために、基本ブロック1をブロックディスパッチャ302に提供する。
一方で、基本ブロック1がキャッシュ102に格納されていないと判定すると、基本ブロックコンパイラ104は、メモリデバイス412に格納されたエミュレートされたPUコード106を解析して、ユーザー入力1に対応するエミュレートされたPUコード命令1を識別する。例えば、基本ブロックコンパイラ104は、エミュレートされたPUコード106を解析して、エミュレートされたPUコード命令1が、ユーザー入力1を処理するなど、満たすことを識別する。説明すると、ユーザー入力1が、仮想オブジェクトを位置P1から位置P2に移動させるためのものであり、エミュレートされたPUコード命令1が、宛先アドレス1に格納された位置P1を位置P2で更新する機能を含むとき、エミュレートされたPUコード命令1は、ユーザー入力1を処理することができる。同様に、エミュレートされたPUコード命令2が、ユーザー入力1を処理するための機能を含まないとき、エミュレートされたPUコード命令2は、ユーザー入力1に対応しない。説明すると、ユーザー入力1が、仮想オブジェクトの方向を変更せずに位置P1から位置P2に仮想オブジェクトを移動するためのものであり、エミュレートされたPUコード命令2が、宛先アドレス2に格納された方向O1を方向O2で更新する操作を含むとき、エミュレートされたPUコード命令2は、ユーザー入力1を処理することができない。
エミュレートされたPUコード命令1がユーザー入力1を処理でき、エミュレートされたPUコード命令2がユーザー入力1を処理できないと判定すると、基本ブロックコンパイラ104は、メモリデバイス412からエミュレートされたPUコード命令1を読み取るなどして、アクセスし、エミュレートされたPUコード命令1から基本ブロック1をコンパイルする。基本ブロックコンパイラ102は、ユーザー入力1の受信に応えて、エミュレートされたPUコード命令2から基本ブロック2をコンパイルしない。基本ブロックコンパイラ104は、基本ブロック1をキャッシュ102に格納し、ブロックディスパッチャ302に、基本ブロック1にアクセスして実行する命令を送信する。命令を受信すると、ブロックディスパッチャ302は、キャッシュ102から基本ブロック1を読み取り、基本ブロック1を実行する。
同様に、基本ブロックコンパイラ104がユーザー入力2を受信すると、基本ブロックコンパイラ104は、ユーザー入力2に対応する基本ブロック2が、キャッシュ102に格納されているかどうかを判定する。例えば、基本ブロック2が、ユーザー入力2を処理するための機能を含むとき、基本ブロック2は、ユーザー入力2に対応する。説明すると、ユーザー入力2が、仮想オブジェクトを方向O1から方向O2に移動するものであり、基本ブロック2が、宛先レジスタアドレス2に格納された方向O1を方向O2で更新する操作を含むとき、基本ブロック2は、ユーザー入力2を処理することができる。例示ではでは、ユーザーザ入力2は、ハンドヘルドコントローラ414上の時計回りに回転するボタンか、または反時計回りに回転するボタンの選択を示す信号である。同様に、基本ブロック1がユーザー入力2を処理するための機能を含まないとき、基本ブロック1はユーザー入力2に対応しない。説明すると、ユーザー入力2が、仮想オブジェクトの位置を変更せずに方向O1から方向O2に仮想オブジェクトを移動するためのものであり、基本ブロック1が、宛先レジスタ1に格納された位置P1を位置P2で更新する操作を含むとき、基本ブロック1はユーザー入力2を処理することができない。ユーザー入力2を処理することができる基本ブロク2がキャッシュ102に格納されていると判定すると、基本ブロックコンパイラ104は、基本ブロック2を実行するために、基本ブロック2をブロックディスパッチャ302に提供する。
一方で、基本ブロック2がキャッシュ102に格納されていないと判定すると、基本ブロックコンパイラ104は、メモリデバイス412に格納されたエミュレートされたPUコード106を解析して、ユーザー入力2に対応するエミュレートされたPUコード命令2を識別する。例えば、基本ブロックコンパイラ104は、エミュレートされたPUコード106を解析して、エミュレートされたPUコード命令2が、ユーザー入力2を処理するなど、満たすことを識別する。説明すると、ユーザー入力2が、仮想オブジェクトを方向O1から方向O2に移動させるためのものであり、エミュレートされたPUコード命令2が、宛先アドレス2に格納された方向O1を方向O2で更新する機能を含むとき、エミュレートされたPUコード命令2は、ユーザー入力2を処理することができる。同様に、エミュレートされたPUコード命令1が、ユーザー入力2を処理するための機能を含まないとき、エミュレートされたPUコード命令1は、ユーザー入力に対応しない。説明すると、ユーザー入力2が、仮想オブジェクトの方向を変更せずに、方向O1から方向O2に仮想オブジェクトを移動するためのものであり、エミュレートされたPUコード命令1が、宛先アドレス1に格納された位置P1を位置P2で更新する操作を含むとき、エミュレートされたPUコード命令1は、ユーザー入力2を処理することができない。
エミュレートされたPUコード命令1が、ユーザー入力2を処理でき、エミュレートされたPUコード命令1が、ユーザー入力2を処理できないと判定すると、基本ブロックコンパイラ104は、メモリデバイス412からエミュレートされたPUコード命令2を読み取るなどして、アクセスし、エミュレートされたPUコード命令2をコンパイルして、基本ブロック2を生成する。基本ブロックコンパイラ102は、ユーザー入力2の受信に応えて、エミュレートされたPUコード命令1をコンパイルしない。基本ブロックコンパイラ104は、基本ブロック1をキャッシュ102に格納し、ブロックディスパッチャ302に、基本ブロック2にアクセスして実行する命令を送信する。命令を受信すると、ブロックディスパッチャ302は、キャッシュ102から基本ブロック2を読み取り、基本ブロック2を実行する。
図7Aは、メモリデバイス412からのエミュレートされたPUコード106の削除を説明するためのシステム700の実施形態の図である。システム700は、ブロッククリエータ604、命令リムーバ702、及びメモリデバイス412を含む。命令リムーバ702の例には、プロセッサ、ASIC、PLD、コンピュータプログラム、コンピュータプログラムの一部、及びマイクロコントローラが含まれる。命令リムーバ702は、ブロッククリエータ604に結合され、かつメモリデバイス412に結合されている。
図7Bは、エミュレートされたPUコード106(図6C)をメモリデバイス412(図6C)から削除するための方法720の実施形態を説明するためのフローチャートである。方法720は、エミュレートされたPUコード106のすべての命令がコンパイルされているかどうかを判定するための操作702を含む。例えば、ブロッククリエータ604(図7A)は、ゲームコードgcNのエミュレートされたPUコード命令1~Mのすべてがコンパイルされているかどうかを判定する。説明すると、ゲームコードgcNのエミュレートされたPUコード命令1~Mのいずれかをコンパイルする前に、ブロッククリエータ604は、レガシーマシンのプロセッサに要求を送信して、ゲームコードgcNのエミュレートされたPUコード命令1~Mのすべてのアイデンティティを取得する。例示では、ブロッククリエータ604は、1つ以上のビットなどのゲームコードgcNのアイデンティティをレガシーマシンのプロセッサに送信して、ゲームコードgcNのエミュレートされたPUコード命令1~Mのすべてのアイデンティティを取得する。エミュレートされたPUコード命令1~Mのアイデンティティの例には、1つ以上のビットが含まれる。説明すると、エミュレートされたPUコード命令Mのアイデンティティは、ビットの第1のシーケンスによって表され、エミュレートされたPUコード命令M-1のアイデンティティは、ビットの第2のシーケンスによって表され、これは第1のシーケンスとは異なっている。エミュレートされたPUコード命令1~Mのアイデンティティをレガシーマシンのプロセッサから受信すると、ブロッククリエータ604は、キャッシュ102内のテーブルにアイデンティティを格納する。エミュレートされたPUコード命令1~Mの各々がコンパイルされると、ブロッククリエータ604は、エミュレートされたPUコード命令1~Mのうちのどれがコンパイルされているかを識別する指示を含むようにテーブルを更新する。ブロッククリエータ604は、エミュレートされたPUコード命令1~Mのうちのどれがコンパイルされているかを識別する指示から、エミュレートされたPUコード命令1~Mのすべてがコンパイルされているかどうかを判定する。
ゲームコードgcNのエミュレートされたPUコード命令1~Mのすべてがコンパイルされていると判定すると、ブロッククリエータ604は、ゲームコードgcNをメモリデバイス412から削除するコマンドを命令リムーバ702(図7A)に送信する。コマンドを受信すると、方法720の操作724において、命令リムーバ702は、メモリデバイス412からエミュレートされたPUコード命令1~Mを消去する。
一方で、ゲームコードgcNのエミュレートされたPUコード命令1~Mの1つ以上がテーブルに基づいてコンパイルされていないと判定すると、方法720の操作726において、ブロッククリエータ604は、命令リムーバ702へ、メモリデバイス412からゲームコードgcNを削除するコマンドを送信しない。ゲームコードgcNを削除するコマンドを受信するまで、命令リムーバ702は、メモリデバイス412からエミュレートされたPUコード命令1~Mを削除しない。
一実施形態では、ブロッククリエータ604は、キャッシュ102に格納されているゲームコードgcNが、ゲームコードgcNがメモリデバイス412からアクセスされる最も遅い時間から所定の期間内に、メモリデバイス412(図4A)からアクセスされるかどうかを判定する。一例として、ブロッククリエータ604は、コンピュータネットワーク408を介してインターネットクロックにアクセスして、最も遅い時間と所定の期間を判定することができる。別の例として、ブロッククリエータ604は、最も遅い時間と所定の期間をカウントするために、クロック発振器などのクロックソースを含む。ゲームコードgcNが所定の期間内にメモリデバイス412からアクセスされないと判定すると、ブロッククリエータ604は、メモリデバイス412からゲームコードgcNを削除するコマンドを命令リムーバ702に送信する。一例として、ゲームコードgcNが所定の期間内にアクセスされないとき、エミュレートされたCPUコード命令1~Mの大部分は、基本ブロックコンパイラ104によってアクセスされて、基本ブロック1~nの1つ以上をコンパイルする。別の例として、ゲームコードgcNが所定の期間内にアクセスされないとき、ゲームタイトルGNを有するレガシーゲームNのプレイ中に頻繁に使用されるいくつかのエミュレートされたCPUコード命令1~Mは、基本ブロック1~nの1つ以上をコンパイルするために、基本ブロックコンパイラ104によってアクセスされる。一方で、ゲームコードgcNが所定の期間内にアクセスされたと判定すると、ブロッククリエータ604は、コマンドを命令リムーバ702に送信せず、ゲームコードgcNは、メモリデバイス412から削除されない。
図8Aは、基本ブロックの検証を説明するためのエミュレーションプロセッサシステム800の実施形態の図である。エミュレーションプロセッサシステム800は、エミュレーションプロセッサシステム409の一例である(図4B)。エミュレーションプロセッサシステム800は、基本ブロックコンパイラ104、キャッシュ102、ブロックバリデータ802、及びブロックフラッガ804を含む。ブロックバリデータ802は、ブロッククリエータ604、ブロックディスパッチャ302、パーサ602、及びブロックフラッガ804に結合されている。クロックバリデータ802及びブロックフラガー804のそれぞれは、キャッシュ102に結合されている。
一例として、ブロックバリデータ802は、ASIC、またはPLD、またはマイクロコントローラ、またはプロセッサ、またはコンピュータプログラム、またはコンピュータプログラムの一部として実装される。また、一例として、ブロックフラガー804は、ASIC、またはPLD、またはマイクロコントローラ、またはプロセッサ、またはコンピュータプログラム、またはコンピュータプログラムの一部として実装される。
一実施形態では、ASIC、PLD、マイクロコントローラ、マイクロプロセッサ、コントローラ、及びプロセッサという用語は、本明細書では互換的に使用されている。
図8Bは、エミュレーションプロセッサシステム800(図8A)によって実行される検証操作を説明するための方法850の一実施形態のフローチャートである。方法800の操作852において、ブロックバリデータ802(図8A)は、基本ブロックnがコンパイルされているかどうかを判定する。例えば、ブロックバリデータ802は、キャッシュ102を読み取るなど、アクセスし、以前にキャッシュ102に格納された基本ブロック1~n-1と比較して、基本ブロックnなどの新しい基本ブロックが、キャッシュ102に格納されているかどうかを判定する。ブロックバリデータ802は、キャッシュ102に格納された基本ブロック1~n-1を以前に識別した。基本ブロックnがキャッシュされていないと判定すると、ブロックバリデータ802は、キャッシュ102にアクセスし続けて、新しい基本ブロックがキャッシュされているかどうかを判定する。例えば、ブロックバリデータ802は、キャッシュ102に格納されている基本ブロック1~n-1を定期的に解析して、基本ブロックnがキャッシュ102に格納されているかどうかを判定する。
基本ブロックnがキャッシュされていると判定すると、方法800の操作854において、ブロックバリデータ802は、そこから基本ブロックnがコンパイルされる、エミュレートされたPUコード命令1~Mの1つ以上から第1のハッシュ値を生成する。例えば、ブロックバリデータ802は、エミュレートされたCPUコード命令1~Mの1つ以上をメモリデバイス412から取得する要求をパーサ602に送信する。要求は、キャッシュ102内の基本ブロックnのメモリアドレスのアイデンティティを含む。基本ブロックnのメモリアドレスのアイデンティティは、要求によって取得されるなど、ブロックバリデータ602によってブロッククリエータ604から受信される。ブロックバリデータ802からの要求を受信すると、パーサ602は、メモリデバイス412からエミュレートされたPUコード命令1~Mの1つ以上を読み取り、エミュレートされたPUコード命令1~Mの1つ以上をブロックバリデータ802に提供する。説明すると、エミュレートされたPUコード命令1~Mの1つ以上が、基本ブロックnをコンパイルするために基本ブロックコンパイラ104に提供されるとき、パーサ602は、キャッシュ102内の基本ブロックnによって占有された1つ以上のメモリアドレスの1つ以上のアイデンティティと、メモリデバイス412内のエミュレートされたPUコード命令1~Mの1つ以上によって占有された1つ以上のメモリアドレスの1つ以上のアイデンティティとの間の1対1の対応を格納する。パーサ602は、ブロックバリデータ802からキャッシュ102内の基本ブロックnのメモリアドレスのアイデンティティを受信し、1対1の対応からメモリデバイス412内のエミュレートされたPUコード命令1~Mの1つ以上の1つ以上のメモリアドレスを識別する。パーサ602は、メモリデバイス412の1つ以上のメモリアドレスからエミュレートされたPUコード命令1~Mの1つ以上を読み取り、エミュレートされたPUコード命令1~Mの1つ以上をブロックバリデータ802に提供する。
例を続けると、エミュレートされたPUコード命令1~Mの1つ以上をパーサ602から受信すると、ブロックバリデータ802は、エミュレートされたPUコード命令1~Mの1つ以上から第1のハッシュ値を生成し、キャッシュ102に第1のハッシュ値を格納する。説明すると、ブロックバリデータ802は、基本ブロックnに対応するエミュレートされたPUコード命令1~Mの1つ以上からダイジェストまたはチェックサムを生成する。例では、第1のハッシュ値は、基本ブロックnを含むようにキー入力された、キャッシュ102の1つ以上のレジスタに格納される。
方法800の操作856において、ブロックバリデータ802は、1つ以上のエミュレートされたPUコード命令1~Mが格納されているメモリデバイス412内で、1つ以上のメモリアドレスが上書きされているかどうかを判定するコマンドをパーサ602に送信する。メモリデバイス412内の1つ以上のメモリアドレスは、レガシーマシンのコンパクトディスク読み取り専用メモリ(CD-ROM)からのデータで上書きされることができる。データは、エミュレートされたPUコード命令1~Mの1つ以上への更新である場合がある。エミュレートされたPUコード命令1~Mの1つ以上への更新は、更新された命令と呼ばれる。あるいは、データは、破損している場合があるが、これは更新された命令ではない。パーサ602は、ブロックバリデータ802からコマンドを受信すると、エミュレートされたPUコード命令1~Mの1つ以上が格納されているメモリデバイス412内で、1つ以上のメモリアドレスが上書きされているかどうかを判定する要求をレガシーマシンのプロセッサに送信する。
パーサ602から要求を受信すると、レガシーマシンのプロセッサは、要求に対する応答を提供し、応答は、1つ以上のメモリアドレスが、エミュレートされたPUコード命令1~Mの1つ以上が格納されているメモリデバイス412内で上書きされているかどうかを示す。エミュレートされたPUコード命令1~Mの1つ以上が格納されているメモリデバイス412内の1つ以上のメモリアドレスが上書きされていないという応答を受信すると、ブロックバリデータ802は、基本ブロックnを無効としてマークしないというコマンドをブロックフラッガ804(図8A)に送信する。コマンドを受信すると、方法800の操作858において、ブロックフラッガ804は、基本ブロックnを無効としてマークしない。
一方で、エミュレートされたPUコード命令1~Mの1つ以上が格納されているメモリデバイス412内の1つ以上のメモリアドレスが、上書きされているという応答を受信すると、方法850の操作860において、ブロックバリデータ802は、基本ブロックnを無効としてマークするコマンドをブロックフラッガ804(図8A)に送信する。基本ブロックnを無効としてマークするコマンドを受信すると、ブロックフラッガ804は、基本ブロックnを無効としてマークする。例えば、ブロックフラッガ804は、キャッシュ102内の基本ブロックnにアクセスし、基本ブロックnを有するキャッシュ102内のメモリアドレス内に、基本ブロックnが無効であることを示すために無効マークn(図5A)などの識別子を含む。無効なマークnの一例は、ビットのシーケンスである。
一実施形態では、ハッシュ値は検証結果の一例である。
図8Cは、図8Bの方法800のフローチャートの続きである。方法800の操作862において、ブロックバリデータ802(図8A)は、基本ブロックnが実行されるべきかどうかを判定する。例えば、ブロックディスパッチャ302は、基本ブロックnが実行されるべきであるという指示をブロックバリデータ802に送信する。基本ブロックnが実行されるべきであるという指示をブロックディスパッチャ302から受信すると、ブロックバリデータ802は、基本ブロックnが実行されるべきであると判定する。指示が受信されるまで、ブロックバリデータ802は、基本ブロックnが有効化されるべきであると判定しない。
基本ブロックnが実行されるべきであると判定すると、ブロックバリデータ802は、方法800の操作864において、基本ブロックnが無効としてマークされているかどうかを判定する。例えば、ブロックバリデータ802は、基本ブロックnが無効としてフラグが立てられているかどうかを判定するコマンドをブロックフラッガ804に送信する。コマンドを受信すると、ブロックフラッガ804は、基本ブロックnが無効としてフラグが立てられているかどうかの指示をブロックバリデータ802に送信する。説明すると、ブロックフラッガ804は、基本ブロックnにアクセスして、基本ブロックnが無効マークnを含むかどうかを判定して、無効の指示を生成して、ブロックバリデータ802に送信する。別の説明として、ブロックフラッガ804は、基本ブロックnにアクセスして、基本ブロックnが無効マークnを含まないかどうかを判定して、無効の欠如の指示を生成し、ブロックバリデータ802に送信する。ブロックフラッガ804から、基本ブロックnが無効としてマークされているという指示を受信すると、ブロックバリデータ802は、基本ブロックnが無効であると判定する。一方で、基本ブロックnに無効マークnがないという指示をブロックフラッガ804から受信すると、ブロックバリデータ802は、基本ブロックnが無効としてマークされていないと判定する。
基本ブロックnが無効としてマークされていないと判定すると、方法800の操作866において、基本ブロックnが実行される。例えば、操作866は操作662(図6B)に類似している。説明すると、ブロックバリデータ802は、基本ブロックnを実行するためにブロックディスパッチャ302にコマンドを送信する。基本ブロックnを実行するコマンドを受信すると、ブロックディスパッチャ302は基本ブロックnを実行する。この説明では、基本ブロックnを実行するためのコマンドがブロックバリデータ802から受信されるまで、ブロックディスパッチャ302は基本ブロックnを実行しない。
一方で、基本ブロックnが無効としてマークされていると判定したことに応えて、方法800の操作866において、ブロックバリデータ802は、基本ブロックnが実際に有効であるかどうかを判定する。例えば、基本ブロックnが無効としてマークされていると判定すると、ブロックバリデータ802は、基本ブロックnがコンパイルされるエミュレートされたPUコード命令1~Mの1つ以上が格納されているメモリデバイス412内の同じメモリアドレスに格納された更新された命令または破損したデータのいずれかから第2のハッシュ値を生成する。例では、第2のハッシュ値は、基本ブロックnを含むようにキー入力された、キャッシュ102の1つ以上のレジスタに格納される。説明すると、ブロックバリデータ802は、パーサ602に要求を送信して、メモリデバイス412内の1つ以上のメモリアドレスに格納された更新された命令または破損したデータを取得する。パーサ602は、要求を受信すると、メモリデバイス412からの1つ以上のメモリアドレスから更新された命令または破損したデータを読み取り、更新された命令または破損したデータをブロックバリデータ802に提供する。例示では、ブロックバリデータ802は、更新された命令または破損したデータから第2のハッシュ値を生成し、この第2のハッシュ値をキャッシュ102に格納する。例えば、ブロックバリデータ802は、更新された命令または破損したデータからダイジェストまたはチェックサムを生成する。例示では、ブロックバリデータ802は、第2のハッシュ値を第1のハッシュ値と比較して、基本ブロックnが有効であるかどうかを判定する。比較に基づいて、第1のハッシュ値と第2のハッシュ値との間に一致があると判定すると、ブロックバリデータ802は、基本ブロックnが有効であると判定する。この一致は、更新された命令から第2のハッシュ値が生成されたときに発生する。一方で、この比較に基づいて、第1のハッシュ値と第2のハッシュ値との間に一致がないと判定すると、ブロックバリデータ802は、基本ブロックnが無効であると判定する。この一致の欠如は、破損したデータから第2のハッシュ値が生成されたときに発生する。
基本ブロックnが有効であると判定したことに応えて、方法800の操作870において、無効なマークnが除去される。例えば、ブロックバリデータ802は、ブロックフラッガ804に、キャッシュ102に格納された基本ブロックnから無効なマークnを除去するコマンドを送信する。ブロックバリデータ802からコマンドを受信すると、ブロックフラッガ804は、キャッシュ102から基本ブロックnにアクセスし、基本ブロックnから無効なマークnを消去する。説明すると、ブロックフラッガ804は、無効なマークnが格納されているキャッシュ102の1つ以上のメモリアドレスから無効なマークnを消去する。無効なマークnを除去すると、ブロックフラッガ804は、ブロックディスパッチャ302に基本ブロックnを実行するコマンドを送信し、ブロックディスパッチャ302は、コマンドを受信すると、操作866において、基本ブロックnを実行する。一例として、ブロックディスパッチャ302は、基本ブロックnを実行するためのコマンドがブロックフラッガ804から受信されるまで、基本ブロックnを実行しない。
一方で、基本ブロックnが有効でないと判定すると、方法800の操作872において、基本ブロックnと同じ機能または操作を有する追加の基本ブロックがコンパイルされる。例えば、ブロックバリデータ802は、ブロックディスパッチャ302に基本ブロックnを実行しないというコマンドを送信し、基本ブロックnが無効であるという指示をブロッククリエータ604に送信する。指示を受信すると、ブロッククリエータ604は、基本ブロックnを再コンパイルする。説明すると、追加の基本ブロックが、追加のレガシーマシンのメモリデバイスに格納された、エミュレートされたPUコード命令1~Mの1つ以上などのエミュレートされたPUコード命令の追加セットからコンパイルされることを除いて、ブロッククリエータ604は、メモリデバイス412に格納されたエミュレートされたPUコード命令1~Mの1つ以上から基本ブロックnをコンパイルするのと同じ方法で追加の基本ブロックをコンパイルする。追加のレガシーマシンは、メモリデバイス412を含むレガシーマシンとは異なっている。また、エミュレートされたPUコード命令の追加セットは、ゲームコードgcNの追加セットと同じゲームタイトルGNのものである。別の例示として、追加の基本ブロックが、エミュレートされたPUコード命令1~Mが格納されている、メモリアドレスとは異なるメモリデバイス412のメモリアドレスに格納された、エミュレートされたPUコード命令1~Mの1つ以上などのメモリデバイス412のエミュレートされたPUコード命令の追加セットからコンパイルされることを除いて、ブロッククリエータ604は、メモリデバイス412に格納されたエミュレートされたPUコード命令1~Mの1つ以上から基本ブロックnをコンパイルするのと同じ方法で追加の基本ブロックをコンパイルする。さらに別の例示のように、追加の基本ブロックが、メモリデバイス412とは異なるメモリデバイスに格納された、エミュレートされたPUコード命令1~Mの1つ以上などのエミュレートされたPUコード命令の追加セットからコンパイルされることを除いて、ブロッククリエータ604は、メモリデバイス412に格納されたエミュレートされたPUコード命令1~Mの1つ以上から基本ブロックnをコンパイルするのと同じ方法で追加の基本ブロックをコンパイルする。
追加の基本ブロックは、実行のためにブロッククリエータ604からブロックディスパッチャ302に送信される。例えば、ブロックディスパッチャ302は、追加の基本ブロックを実行して、仮想環境452(図4B)などの追加の仮想環境の一部を生成する。説明すると、ブロックディスパッチャ302は、追加の基本ブロックを実行して、画像フレームの一部を生成し、この画像フレームは、仮想オブジェクト454の位置及び方向、仮想オブジェクト454のパラメータ、仮想環境452内の他の仮想オブジェクトの位置及び方向、及び追加の仮想環境内の他の仮想オブジェクトのパラメータなどの追加の仮想環境データを含む。ブロックディスパッチャ302は、画像フレームをエミュレーションプロセッサシステム409のGPUに提供して、ディスプレイデバイス410のディスプレイ画面上に追加の仮想環境をレンダリングするなどして表示する。
方法850は、基本ブロックn及び追加の基本ブロックを参照して示されているが、方法850は、追加の基本ブロックが生成されるのと同じ方法で生成される他の基本ブロック1~(n-1)及びより多くの追加の基本ブロックに等しく適用可能であることに留意されたい。
一実施形態では、エミュレートされたPUコード命令1~Mのセットは、レガシーマシンの外部に配置された1つ以上のメモリデバイスの第1のセットに格納され、エミュレートされたPUコード命令の追加のセットは、追加のレガシーマシンの外部に配置された1つ以上のメモリデバイスの第2のセットに格納されている。
図9Aは、レガシーマシン900の実施形態を説明するための図である。レガシーマシン900の例は、PS1(登録商標)またはPS2(登録商標)である。レガシーマシン900は、レガシーCPU902、レガシーGPU904、メモリデバイス906、及びCD-ROMドライブ908を含む。メモリデバイス906は、メモリデバイス412(図4A)の一例である。レガシーCPU902の例は、1クロックサイクル中に最大32ビットを処理することができる32ビットCPUである。また、レガシーGPU904の例は、1クロックサイクル中に最大32ビットを処理することができる32ビットGPUである。メモリデバイス906の例は、2メガバイト(MB)RAMである。
レガシーCPU902及びレガシーGPU904は、CD-ROMドライブ908に結合されているメモリデバイス906に結合されている。エミュレートされたPUコード106は、メモリデバイス906内に格納されている。
レガシーCPU902またはレガシーGPU904は、メモリデバイス906からエミュレートされたPUコード106にアクセスし、エミュレートされたPUコード106を処理する。CD-ROMドライブ908は、更新された命令または破損したコードを含むCD-ROMを受け入れる。更新された命令または破損したコードは、レガシーCPU902によってCD-ROMからメモリデバイス906に転送され得る。
一実施形態では、レガシーマシン900はキャッシュを含まない。一実施形態では、レガシーマシン900は、4キロバイト(KB)のキャッシュなどの限られた容量のキャッシュを含む。
図9Bは、更新されたマシン920の実施形態を説明するための図である。更新されたマシン920の例は、PS4(登録商標)またはPS5(登録商標)である。更新されたマシン920は、CPU922、GPU924、メモリシステム926、及びキャッシュ102(図1)の一例であるキャッシュ928を含む。ゲームコンソール402(図4B)は、更新されたマシン920の一例である。一例として、CPU922は2つのクアッドコアモジュールを含み、各モジュールは、各クロックサイクル中に64ビットを処理することができる。各コアは、32キロバイト(KB)のキャッシュを有する。CPU922の別の例は、1クロックサイクル中に最大64ビットを処理できる64ビットCPUである。一例として、GPU924は1152コアを有し、各コアは1クロックサイクル中に64ビットを処理できる。別の例として、レガシーGPU924は、64ビットGPUであり、1クロックサイクル中に最大64ビットを処理できる。
CPU922及びGPU924は、メモリシステム906に結合されている。一例として、エミュレートされたPUコード106は、レガシーメモリシステム906内に格納されている。メモリシステム926が含むものの一例は、500ギガバイト(GB)または2テラバイト(TB)のストレージを提供するハードドライブである。CPU922、GPU924、キャッシュ928、及びメモリシステム926は、バス930を介して互いに結合されている。
CPU922またはGPU924は、メモリシステム926にアクセスする前に、最初にキャッシュ928にアクセスする。キャッシュ928が、CPU922またはGPU924によって要求されたデータを含まないと判定すると、CPU922またはGPU924は、メモリシステム926にアクセスする。
一実施形態では、ゲームコードgcNは、CPU922またはGPU924によって実行できないが、レガシーCPU902またはレガシーGPU904によって実行できることに留意されたい。説明すると、CPU922またはGPU924はゲームコードgcNを実行できず、レガシーCPU902またはレガシーGPU904はゲームコードgcNを実行できる。また、基本ブロック1~nは、CPU922またはGPU924によって実行できるが、レガシーCPU902またはレガシーGPU904によって実行できる。説明すると、CPU922またはGPU924は基本ブロック1~nを実行でき、レガシーCPU902またはレガシーGPU904は基本ブロック1~nを実行できない。
一実施形態では、キャッシュ928は、CPU922内に位置する。
一実施形態では、キャッシュ928は、GPU924内に位置する。
一実施形態では、キャッシュ928は、CPU922内に位置し、キャッシュ102などの別のキャッシュは、GPU924内に位置する。
図10Aは、基本ブロックコンパイラ104(図1)による複数の基本ブロックの1つの基本ブロックへの結合を説明するためのシステム1000の実施形態の図である。ブロッククリエータ604(図6A)は、仮想オブジェクト454(図4B)が、ゲームタイトルGNを有するレガシーゲームNのレベル1において、位置P1及び方向O1で開始されることを示す信号などのユーザー入力1を受信する。ユーザー入力1を受信すると、基本ブロック1は、エミュレートされたPUコード命令1に基づいて基本ブロックコンパイラ104によって生成され、ユーザー入力1を処理する。同様に、ブロッククリエータ604は、仮想オブジェクト454がレガシーゲームNのレベル2で位置P1及び方向O1で開始されることを示す信号などのユーザー入力2を受信する。ユーザー入力2を受信すると、基本ブロック2は、エミュレートされたPUコード命令2に基づいて基本ブロックコンパイラ104によって生成され、ユーザー入力2を処理する。
仮想オブジェクト454がレガシーゲームNのレベル3で位置P1と方向O1で開始されることを示す信号などのユーザー入力3が受信されると、ブロックコンパイラ104は、基本ブロック1及び2をユーザー入力3の処理として識別する。そのように識別すると、ブロッククリエータ604は、基本ブロック1及び2を結合するなど、基本ブロック1または基本ブロック2などの単一の基本ブロックに統合する。統合は、キャッシュ102内のメモリスペースを節約し、基本ブロック1及び基本ブロック2にアクセスする代わりに、単一の基本ブロックにアクセスする際の効率も高める。
ブロッククリエータ604はさらに、キャッシュ102のポインタに値を生成する。本明細書で使用されるポインタの例は、レジスタである。ポインタは、基本ブロック1または基本ブロック2を処理するためのユーザー入力が受信されたときに、単一の基本ブロックを実行するようにブロックディスパッチャ302に示す。ブロックディスパッチャ302が基本ブロック1または2を実行するとき、ブロックディスパッチャ302は、ポインタにアクセスし、基本ブロック1または2の代わりに単一の基本ブロックを実行する。
図10Bは、基本ブロック1~nの1つ以上の修正を説明するためのシステム1020の実施形態の図である。システム1020は、ブロックインターフェース1022、キャッシュ102、及びブロックディスパッチャ302を含む。一例として、基本ブロックnは、推測航法の操作nが含まれる。別の例として、基本ブロックnは、ディスプレイデバイス410(図4B)のディスプレイ画面の端から十字線を跳ね返す操作nを含む。ブロックインターフェース1022の例は、ASIC、またはPLD、またはマイクロプロセッサ、またはマイクロコントローラ、またはコンピュータプログラム、またはコンピュータプログラムの一部である。ブロックインターフェース1022は、キャッシュ102に結合されている。
ブロックインターフェース1022は、キャッシュ102に格納された1つ以上の基本ブロック1~nへのアクセスをユーザーに提供する。例えば、ユーザーは、キーボード、マウス、またはキーパッドなどの入力デバイス上の1つ以上のボタンを選択して、修正入力1024を生成する。一例として、修正入力1024は、基本ブロックnを修正するためのソースコードの形式の1つ以上のユーザー命令を含む。説明すると、修正入力1024は、基本ブロックnから推測航法の操作nを除去するためのユーザー命令を含む。別の例として、修正入力1024は、十字線がディスプレイデバイス410のディスプレイ画面の端から滑り落ち、ディスプレイデバイス410のディスプレイ画面の反対側の端に表示されることを含むように操作nを変更する命令を含む。反対側のエッジは、十字線が滑り落ちる端と対角線上にある。
入力デバイスは、ブロックインターフェース1022に結合されている。修正入力1024は、入力デバイスからブロックインターフェース1022に送信されて、基本ブロックnを修正して、修正された基本ブロックnを出力する。一例として、修正された基本ブロックnは、推測航法の操作を含んでいない。別の例として、修正された基本ブロックnは、十字線を端から反対側の端に滑り落ちる操作nを含む。さらに別の例として、修正された基本ブロックnは、操作nの実行のクロックサイクル数を計算し、その数を基本ブロックnに格納する操作を含む。説明すると、サイクル数は、基本ブロック1が格納されているキャッシュ102のメモリアドレスに格納されている。クロックサイクル数を計算する操作は、操作nを実行することに加えて、ブロックディスパッチャ302(図3)によって実行される。ブロックディスパッチャ302は、操作nの実行時にクロックサイクル数を計算し、その数を基本ブロックnに格納する。
ブロッククリエータ604はさらに、キャッシュ102内のポインタに値を生成し、ポインタは、基本ブロックnを処理するためのユーザー入力が受信されたときに、変更された基本ブロックnを実行するようにブロックディスパッチャ302に示す。ブロックディスパッチャ302が基本ブロックnを実行するとき、ブロックディスパッチャ302は、ポインタにアクセスし、基本ブロックnの代わりに単一の基本ブロックを実行する。
図10Cは、サブルーチンに基づいて作成された基本ブロックと、サブルーチンを呼び出すエミュレートされたPUコード命令に基づいて生成された基本ブロックとを組み合わせることを示すシステム1030の実施形態の図である。ブロッククリエータ604(図6A)は、仮想オブジェクト454の破壊になる仮想オブジェクト454(図4B)の位置及び/または方向の変化を示す信号などのユーザー入力1を受信する。ユーザー入力1を受信すると、基本ブロック1は、エミュレートされたPUコード命令1に基づいて基本ブロックコンパイラ104によって生成され、ユーザー入力1を処理する。エミュレートされたPUコード命令1は、サブルーチン1への関数呼び出しを含む。このように、ユーザー入力1を受信すると、基本ブロック2は、エミュレートされたPUコード命令2の一例であるサブルーチン1に基づいて、基本ブロックコンパイラ104によって生成される。一例として、基本ブロック2は、位置P1及び方向O1で仮想オブジェクト454を再生成する操作2を含む。
仮想オブジェクト454の破壊になる、仮想オブジェクト454(図4B)の位置及び/または方向の変化を示す信号などのユーザー入力2が受信されるとき、ブロックコンパイラ104は、ユーザー入力2を処理するとして基本ブロック1及び2を識別する。そのように識別すると、ブロッククリエータ604は、基本ブロック1及び2を、基本ブロック1または基本ブロック2などの単一の基本ブロックに結合するなど、統合する。例えば、ユーザー入力2を受信すると、仮想オブジェクト454の破壊及び仮想オブジェクト454の再生成がトリガーされる。基本ブロック1と2を組み合わせると、サブルーチン1はスキップされる。
ブロッククリエータ604はさらに値を生成し、その値をキャッシュ102内のポインタに格納する。この値は、基本ブロック1及び2を処理するためのユーザー入力が受信されたときに、単一の基本ブロックを実行するようにブロックディスパッチャ302に示す。ブロックディスパッチャ302が、基本ブロック1及び2を実行するためであるときに、ブロックディスパッチャ302は、ポインタにアクセスし、基本ブロック1の代わりに単一の基本ブロックを実行する。
図10Dは、2つの基本ブロックの間への基本ブロックの挿入を示すシステム1040の実施形態の図である。システム1040は、ブロックインターフェース1022及びキャッシュ102を含む。基本ブロック1及び2がキャッシュ102に格納された後、修正入力1042が、入力デバイスを介してユーザーから受信される。一例として、修正入力1042は、キャッシュ102内のソースレジスタアドレス1.1と、キャッシュ102内の宛先レジスタアドレス1.1と、ソースレジスタアドレス1.1に格納されたデータに、または宛先レジスタアドレス1.1に、またはソースレジスタアドレス1.1と宛先レジスタアドレス1.1の両方に格納されているデータに対して実行される操作1.1とを含む基本ブロック1.1を定義するソースコードを示す信号である。操作1.1の例には、ジャンプ、格納、ロード、分岐、及び算術操作が含まれる。
修正入力1042は、基本ブロック1.1の場所の指示、及び基本ブロック1.1と基本ブロック1または2との関連付けをさらに含む。例えば、修正入力1042は、基本ブロック1.1がキャッシュ102内の基本ブロック1と2の間に挿入されることを示す信号と、基本ブロック1.1が基本ブロック1及び/または2にリンクされることを示す信号と、を含む。説明すると、基本ブロック1.1は、基本ブロック2の無効なマーク2を受信するために、1つ以上のレジスタアドレスなどのキャッシュ102内の場所を含むために挿入される。別の説明として、基本ブロック1.1は、基本ブロック2の実行のサイクル数を受信するために、キャッシュ102内の1つ以上のレジスタアドレスなどの場所を含むために挿入される。例示では、ブロックインターフェース1022は、修正入力1042を受信し、基本ブロック1.1が基本ブロック1と2の間に挿入されることを修正入力1042から識別し、基本ブロック1と2との間に基本ブロック1.1を挿入する。別の例として、ブロックインターフェース1022は、基本ブロック1.1が、ゲームタイトルGNを有するレガシーゲームNのレベルをロック解除するための操作を含むことを判定する。レベルは、基本ブロック1の操作で識別される第1のレベルと、基本ブロック2の操作で識別される第2のレベルとの間にある。第1レベルと第2レベルは、ゲームタイトルGNを有するレガシーゲームNにある。第1レベルと第2レベルの間に挿入されたレベルは、ゲームコードgcNの一部ではないが、レガシーゲームNの新しいレベルである。第1のレベルと第2のレベルとの間に挿入されるレベルの例は、仮想オブジェクト454がミサイルの代わりにレーザ銃を発射するレベルである。
さらに、ブロックインターフェース1022は、修正入力1042からポインタの値を識別し、その値をキャッシュ102に格納する。一例として、ポインタの値は、基本ブロック1.1の実行が基本ブロック2の実行の直前に発生することを示している。ブロックディスパッチャ302が基本ブロック2を実行する場合、ブロックディスパッチャ302は、基本ブロック1.1を指すためにポインタ内の値を識別し、基本ブロック2を実行する直前に基本ブロック1.1を実行する。別の例として、ポインタの値は、基本ブロック1.1の実行が基本ブロック2の実行の直後に発生することを示す。ブロックディスパッチャ302が基本ブロック2を実行した後、ブロックディスパッチャ302は、基本ブロック1.1を指すためにポインタ内の値を識別し、基本ブロック2を実行した直後に基本ブロック1.1を実行する。
図10Eは、基本ブロックの実行の順序での切り替えを示すシステム1050の実施形態の図である。システム1050は、キャッシュ102及びブロックインターフェース1022を含む。キャッシュ102は、キャッシュ102のポインタ内に値を含み、その値は、基本ブロック1の実行後に基本ブロック2が実行されることを示している。ユーザーは、入力デバイスを使用して、基本ブロック1及び2の実行順序が切り替えられることを示す信号を含む修正入力1052を提供する。信号を受信すると、ブロックインターフェース1022は、キャッシュ102内のポインタの値を変更して、基本ブロック2を実行した後に基本ブロック1が実行されることを示す。
図11Aは、基本ブロックnに格納されたサイクル数の実際のカウントの使用を説明するための方法1100の実施形態のフローチャートである。方法1100は、基本ブロックnを実行する操作662を含む。方法1100の操作1102において、ブロックディスパッチャ302(図3)は、操作662において、基本ブロックnの実行のサイクル数をカウントして、第1のカウントを生成する。ブロックディスパッチャ302は、方法1100の操作1104において、基本ブロックnに第1のカウントを格納する。例えば、ブロックディスパッチャ302は、基本ブロックnに割り当てられた、キャッシュ102内のレジスタアドレスの1つを有するレジスタに実際のカウントを書き込む。
方法1100の操作1106において、ブロッククリエータ604(図6A)は、同じ基本ブロックnが再度実行されるべきかどうかを判定する。例えば、ブロッククリエータ604は、同じ基本ブロックnを処理するためのユーザー入力が、クライアントデバイスから受信されたかどうかを判定する。ブロッククリエータ604は、ユーザー入力が受信されるまで、同じ基本ブロックnを処理するためのユーザー入力が受信されたかどうかを判定し続ける。
図11Bは、図11Aの方法1100のフローチャートの続きである。基本ブロックnを処理するためのユーザー入力が再び受信されたと判定すると、基本ブロックnは、ブロックディスパッチャ304によって再び実行される。方法1100の操作1108では、ブロックディスパッチャ304は、操作1106において、基本ブロックnの実行のサイクル数をカウントして、第2のカウントを計算する。
ブロックディスパッチャ304は、第2のカウントが、方法1100の操作1108における第1のカウントからの所定の制限内にあるかどうかを判定する。所定の制限は、キャッシュ102に格納される。第2のカウントが第1のカウントからの所定の制限内にないと判定したことに応えて、方法1100の操作1110において、ブロックディスパッチャ304は通知を生成する。例えば、ブロックディスパッチャ304がゲームコンソール402(図4A)内に位置するとき、ゲームコンソール402のGPU924(図9B)は、クライアントデバイスのディスプレイデバイス410(図4A)に通知の表現を表示し、サーバシステム404に通知するために、コンピュータネットワーク408を介してサーバシステム404に通知を送信する。別の例として、ブロックディスパッチャ304が、サーバシステム404(図4B)内に位置するとき、ブロックディスパッチャ304は通知を生成し、サーバシステム404のGPUは、サーバシステム404に結合されたディスプレイデバイス上に通知の表現を表示する。一方で、第2のカウントが、第1のカウントから所定の制限内にあると判定すると、方法1100の操作1112において、ブロックディスパッチャ304は通知をトリガーしない。
図12は、第1のクライアントデバイスから第2のクライアントデバイスへの基本ブロック1~nの転送を説明するためのシステム1200の実施形態の図である。システム1200は、ゲームコンソール402、コンピュータネットワーク408、サーバシステム404、ゲームコンソール1202、及びディスプレイデバイス1204を含む。ゲームコンソール1202は、ゲームコンソール402に類似している。例えば、ゲームコンソール402と1202の両方ともPS4(登録商標)であるか、またはゲームコンソール402と1202の両方ともPS5(登録商標)であるか、またはゲームコンソール402がPS4(登録商標)であり、ゲームコンソール1202がPS5(登録商標)であるか、またはゲームコンソール402がPS5(登録商標)であり、ゲームコンソール1202がPS4(登録商標)である。別の例として、ゲームコンソール1202はレガシーマシンではない。また、ディスプレイデバイス1204は、図4Aのディスプレイデバイス410に類似している。例えば、ディスプレイデバイス410は、HMDまたはテレビまたはスマートテレビまたはコンピュータモニタである。
ゲームコンソール402は、ネットワークインターフェースコントローラ1213を含む。ゲームコンソール1202は、エミュレートされたプロセッサシステム1206、キャッシュ1208、及びネットワークインターフェースコントローラ1210を含む。エミュレートされたプロセッサシステム1206は、エミュレートされたプロセッサシステム409と同じ構造及び同じ機能を有する。また、キャッシュ1208は、キャッシュ102と同じ構造及び同じ機能を有する。エミュレートされたプロセッサシステム1206、キャッシュ1208、及びネットワークインターフェースコントローラ1210は、バス1218を介して互いに結合されている。
基本ブロック1~nがキャッシュ102に格納されると、エミュレートされたプロセッサシステム409のブロックコンパイラ104は、基本ブロック1~nをネットワークインターフェースコントローラ1213に送信する。ネットワークインターフェースコントローラ1213は、ネットワーク通信プロトコルを基本ブロック1~nに適用して、基本ブロック1~nを埋め込む1つ以上のパケットを生成し、コンピュータネットワーク408を介して1つ以上のパケットをサーバシステム404に送信する。1つ以上のパケットを受信すると、サーバシステム404のネットワークインターフェースコントローラは、ネットワーク通信プロトコルを1つ以上のパケットに適用して、ゲームタイトルGNを有するレガシーゲームNの基本ブロック1~nを抽出し、基本ブロック1~nをサーバシステム404の1つ以上のメモリデバイスに格納する。
ユーザー2は、ハンドヘルドコントローラ1212を使用して、ハンドヘルドコントローラ1212上の1つ以上のボタンを選択して、サーバシステム404によってユーザー2に割り当てられた自分のユーザーアカウントにログインする。ユーザー2は、ユーザーネームなどのユーザーID2及びパスワードがサーバシステム404によって認証されると、自分のユーザーアカウントにログインする。ユーザー2が自分のユーザーアカウントにログインすると、ユーザー2は、ゲームタイトルGNまでゲームタイトルG1、ゲームタイトルGa、ゲームタイトルG2、などの複数のゲームタイトルにアクセスすることができる。
ユーザーアカウント2にログインすると、ユーザー2は、ハンドヘルドコントローラ1212を使用して、ハンドヘルドコントローラ1212上の1つ以上のボタンを選択して、ユーザー入力1214を生成する。ユーザー入力1214は、ディスプレイデバイス1204上に表示されたタイトルGNを有するレガシーゲームNの選択時に生成される。ユーザー入力1214が生成されるとき、キャッシュ1208は、基本ブロック1~nを含まない。例えば、ユーザー入力1214を受信すると、エミュレートされたプロセッサシステム1206の基本ブロックコンパイラは、キャッシュ102をチェックして、キャッシュ102が、ユーザー入力1214を処理するためのゲームコードGCNの基本ブロック1~nの1つ以上を含むかどうかを判定する。キャッシュ102が、ユーザー入力1214を処理するための基本ブロック1~nの1つ以上を含まないと判定すると、エミュレートされたプロセッサシステム1206は、基本ブロック1~nの1つ以上に対する要求1220を生成し、ネットワークインターフェースコントローラ1210への要求1220を送信する。
要求1220を受信すると、ネットワークインターフェースコントローラ1210は、ネットワーク通信プロトコルを要求1220に適用することによって要求1220を埋め込む1つ以上のパケットを生成し、コンピュータネットワーク408を介してサーバシステム404に1つ以上のパケットを送信する。サーバシステム404のネットワークインターフェースコントローラは、1つ以上のパケットを受信し、ネットワーク通信プロトコルを適用して、1つ以上のパケットから要求1220を抽出する。サーバシステム404のプロセッサは、要求1220を分析して、基本ブロック1~nが要求されていることを識別する。
基本ブロック1~nが要求されたと判定したことに応えて、サーバシステム404は、サーバシステム404の1つ以上のメモリデバイスに格納された基本ブロック1~nにアクセスして、基本ブロック1~nをサーバシステム404のネットワークインターフェースコントローラに提供する。サーバシステム404のネットワークインターフェースコントローラは、ネットワーク通信プロトコルを適用して、基本ブロック1~nを埋め込む1つ以上のパケットを生成して、コンピュータネットワーク408を介して1つ以上のパケットをゲームコンソール1202に送信する。
ゲームコンソール1202のネットワークインターフェースコントローラ1210は、基本ブロック1~nを有する1つ以上のパケットを受信し、ネットワーク通信プロトコルを適用して、1つ以上のパケットから基本ブロック1~nを抽出し、基本ブロック1~nをエミュレートされたプロセッサシステム1206に送信する。エミュレートされたプロセッサシステム1206の基本ブロックコンパイラは、基本ブロック1~nをキャッシュ1208に格納する。
ユーザー入力1224が、ゲームタイトルGNを有するゲームのプレイ中にハンドヘルドコントローラ1212から受信されると、エミュレートされたプロセッサシステム1206の基本ブロックコンパイラは、ユーザー入力1224を処理するためにキャッシュ1208内の基本ブロック1~nの1つ以上を識別する。エミュレートされたプロセッサシステム1206のブロックディスパッチャは、ユーザー入力1224を処理するために、基本ブロック1~nの1つ以上を実行する。このようにして、基本ブロック1~nがエミュレートされたプロセッサシステム409によってコンパイルされると、基本ブロック1~nは、エミュレートされたプロセッサシステム1206によってコンパイルされる必要はないが、エミュレートされたプロセッサシステム1206によって、サーバシステム404からアクセスされることができる。
図13は、基本ブロック1~nの複数のセットの実行時にプレイされる、チャレンジなどの1つ以上のミニゲームからのメタゲームの生成を示すためのシステム1300の一実施形態の図である。システム1300は、サーバシステム404、コンピュータネットワーク408、ゲームコンソール402、ディスプレイデバイス410、ゲームコンソール1202、及びディスプレイデバイス1204を含む。サーバシステム404は、コンピュータネットワーク408を介してゲームコンソール402及び1202に結合されている。ゲームコンソール402、ディスプレイデバイス410、及びハンドヘルドコントローラ414の組み合わせが、本明細書ではクライアントデバイス1301と呼ばれることに留意されたい。ゲームコンソール1202、ディスプレイデバイス1204、及びハンドヘルドコントローラ1212の組み合わせが、本明細書ではクライアントデバイス1303と呼ばれることにさらに留意されたい。
サーバシステム404は、キャッシュ102、レコーダ1302、ネットワークインターフェースコントローラ1213、メモリデバイス1304、及びメモリデバイス1306を含む。サーバシステム404は、CPU1308、GPU1310、及びメモリデバイス412をさらに含む。CPU1308、GPU1310、メモリデバイス412、キャッシュ102、メモリデバイス1306、レコーダ1302、ネットワークインターフェースコントローラ1213、及びメモリデバイス1304は、バス1312を介して互いに結合されている。一例として、CPU1308及びGPU1310は、エミュレーションプロセッサシステム409(図4B)の構成要素である。例えば、CPU1308は、基本ブロックコンパイラ104及びブロックディスパッチャ302(図3)を実行する。CPU922(図9)は、CPU1308の一例である。GPU924(図9)は、GPU1310の一例である。
レコーダ1302の例は、CPU、PLD、ASIC、コントローラ、コンピュータプログラムの一部、またはコンピュータプログラムを含む。説明すると、レコーダ1302は、CPU1308によって実行されるコンピュータプログラムである。
メモリデバイス1306は、ユーザーアカウント1及びユーザーアカウント2などの複数のユーザーアカウントを格納するユーザーアカウントデータベース1314を含む。ユーザーアカウント1はCPU1308によってユーザー1に割り当てられ、ユーザーアカウント2は、CPU1308によってユーザー2に割り当てられる。また、メモリデバイス1304は、記録1及び記録2などの複数の記録を含む記録データベース1316を含む。
記録1は、レガシーゲームNのプレイ中にユーザー1がユーザーアカウント1を介して取り組むチャレンジ1の記録であり、記録2は、レガシーゲームNのプレイ中にユーザー1がユーザーアカウント1を介して取り組むチャレンジ2である。例えば、レガシーゲームNのゲームレベル1の間、ユーザー1は、レガシーゲームNを一時停止させ、ハンドヘルドコントローラ114上のボタンを選択してユーザー入力を生成する。例では、ユーザー入力は、ハンドヘルドコントローラ414によって生成され、ゲームコンソール402(図13)及びコンピュータネットワーク408(図13)を介してサーバシステム404に送信される信号である。また、例では、サーバシステム404は、ユーザー入力に基づいて、ユーザー1が、レガシーゲームNを一時停止させることを希望していると判定し、レガシーゲームNを一時停止させる。説明すると、CPU1308及びGPU1310は、基本ブロック1~nの1つ以上の実行を停止して、コンピュータネットワーク408を介してゲームコンソール402に送信するためのレガシーゲームNの1つ以上の画像フレームの生成を停止する。例示では、CPU 1308は、レガシーゲームNのプレイが一時停止する基本ブロック1~Nの1つを識別する値を生成し、値をキャッシュ102内のポインタに格納する。
例を続けると、ユーザー1は、レガシーゲームNが一時停止した後にチャレンジ1のプレイを開始する。例では、ユーザー1がユーザーアカウント1を介してチャレンジ1のプレイを希望していることを示すユーザー入力を受信すると、CPU1308は、キャッシュ102からポインタにアクセスして、1つ以上の基本ブロック1~nのどれの実行を終了するのかを識別し、1つ以上の基本ブロック1~nの実行を続ける。ユーザー1がチャレンジ1のプレイを希望していることを示すユーザー入力は、ユーザー1がハンドヘルドコントローラ414(図13)上の1つ以上のボタンを選択すると、信号として生成される。さらに、例では、ユーザー1がチャレンジ1のプレイを開始すると、レコーダ1302は、ユーザーアカウント1を介したユーザー1によるチャレンジ1のプレイの記録を開始して記録1を生成し、記録1を記録データベース1316に格納する。同様に、例では、レガシーゲームNのゲームレベルZの間、ユーザー1は、レガシーゲームNを一時停止させ、チャレンジ2を選択するためにハンドヘルドコントローラ114上の1つ以上のボタンを選択し、ここでZは正の整数である。ユーザー1がチャレンジ2のプレイを開始すると、レコーダ1302は、チャレンジ2のプレイの記録を開始して記録2を生成し、記録2を記録データベース1316に格納する。
一例として、各記録はゲーム状態を含む。説明すると、記録1は、レガシーゲームNのチャレンジ1の間に表示された1つ以上の仮想オブジェクトのゲーム状態を含み、記録2は、レガシーゲームNのチャレンジ2の間に表示された1つ以上の仮想オブジェクトのゲーム状態を含む。ゲーム状態の例は、仮想オブジェクトの位置及び方向を含む。別の例として、各記録はまた、仮想オブジェクトの色、または強度、またはテクスチャ、または形状、またはそれらの組み合わせなどのレンダリング要因を含む。説明すると、記録1は、基本ブロック1~nの1つ以上の実行時にチャレンジ1の間に表示される仮想オブジェクトのレンダリング要因を含む。例示では、記録2は、基本ブロック1~nの1つ以上の実行時にチャレンジ2の間に表示される仮想オブジェクトのレンダリング要因を含む。
別の例として、各記録は、ユーザー1によるチャレンジのプレイのビデオ、及びチャレンジをプレイしているユーザー1のビデオを含む。例えば、記録1は、チャレンジ1のプレイ中の仮想オブジェクトの動きのビデオ、及びチャレンジ1中の動きの1つ以上を説明するユーザー1のビデオを含む。また、例では、記録2は、チャレンジ2のプレイ中の仮想オブジェクトの動きのビデオ、及びチャレンジ2中の動きの1つ以上を説明するユーザー1のビデオを含む。
さらに別の例として、各記録は、チャレンジをプレイしているユーザー1のビデオを含まず、ユーザー1によるチャレンジのプレイのビデオを含む。例えば、記録1は、チャレンジ1のプレイ中の仮想オブジェクトの動きのビデオを含み、チャレンジ1中の動きの1つ以上を説明するユーザー1のビデオを除外する。また、例では、記録2は、チャレンジ2のプレイ中の仮想オブジェクトの動きのビデオを含み、チャレンジ2中の動きの1つ以上を説明するユーザー1のビデオを除外する。
一実施形態では、CPU1308に加えて、サーバシステム404は複数のCPUを含み、各CPUは、サーバシステム404のサーバブレードまたは更新されたマシンなどの別個のサーバで実装される。同様に、GPU1310に加えて、サーバシステム404は複数のGPUを含み、各GPUは、サーバシステム404のサーバブレードまたは更新されたマシンなどの別個のサーバで実装される。
一実施形態では、ユーザーアカウントデータベース1314及び記録データベース1316は、同じメモリデバイスに格納される。
一実施形態では、チャレンジ2がレガシーゲームNの一部である代わりに、チャレンジ2は、レガシーゲームNとは異なる、レガシーゲーム(N-1)などの別のレガシーゲームの一部である。
一実施形態では、キャッシュ102に格納された基本ブロック1~nは、サーバシステム404の複数のキャッシュに分散される。
図14Aは、チャレンジ1の例を示すディスプレイデバイス410の一実施形態の図である。ユーザーアカウント1にログインした後、ユーザー1はレガシーゲームNのゲームレベル1をプレイする。レガシーゲームNのレベル1のプレイ中、ユーザー1はハンドヘルドコントローラ414上の1つ以上のボタンを選択して、レガシーゲームNを一時停止させるためのユーザー入力を生成する。レガシーゲームNが一時停止すると、ユーザー1は、ハンドヘルドコントローラ414上の1つ以上のボタンをさらに選択して、チャレンジ1をプレイするための別のユーザー入力を生成する。チャレンジ1は、仮想オブジェクト454が上が下になり、次に下が上になるクールな動きなどのスタントを含む。例えば、チャレンジ1のプレイ中、仮想オブジェクト454は、時刻t1において位置P1及び方向O1にある。ユーザー1は、ハンドヘルドコントローラ414を制御して、時刻t2において、仮想オブジェクト454を位置P1及び方向O1から位置P2及び方向O2に移動させる。さらに、ユーザー1は、ハンドヘルドコントローラ414を制御して、時刻t3において、仮想オブジェクト454を位置P2及び方向O2から位置P3及び方向O3に移動させる。時刻t3において、仮想オブジェクト454は上が下になる。また、ユーザー1は、ハンドヘルドコントローラ414を制御して、時刻t4において、仮想オブジェクト454を位置P3及び方向O3から位置P4及び方向O4に移動させる。ユーザー1は、さらにハンドヘルドコントローラ414を制御して、時刻t5において、仮想オブジェクト454を位置P4及び方向O4から位置P5及び方向O5に移動させる。時刻t5において、仮想オブジェクト454は下が上になる。
仮想オブジェクト454が、仮想ピラミッド411の周りを移動することに留意されたい。例えば、仮想オブジェクト454は、位置P2~P4を経由して位置P1から位置P5に移動して、仮想ピラミッド411を周回する。
図14Bは、レガシーゲームNのゲームレベル1の基本ブロック1~nの任意の2つの間に挿入されるフックを示すための図である。一例として、本明細書で使用されるフックは、レガシーゲームNの機能を変更するためにユーザー1のプログラマによって挿入される1つ以上のフックブロックである。説明すると、フックは、キャッシュ102に格納される基本ブロック1~nの任意の2つの連続する基本ブロック間に挿入される。したがって、フックはキャッシュ102に格納される。別の例として、フックブロックの構造は、基本ブロックの構造と同じである。さらに説明すると、フックは、キャッシュ102内のソースレジスタのソースレジスタアドレスと、キャッシュ102内の宛先レジスタの宛先レジスタアドレスと、ソースレジスタアドレスに格納されたデータ、または宛先レジスタアドレスに格納されたデータ、またはソースレジスタアドレスと宛先レジスタアドレスの両方に格納されたデータに対して実行される操作とを含むフックブロックを含む。別の例示として、フックは、キャッシュ102内の1つ以上のソースレジスタの1つ以上のソースレジスタアドレスと、キャッシュ102内の1つ以上の宛先レジスタの1つ以上の宛先レジスタアドレスと、1つ以上のソースレジスタアドレスに格納されたデータ、または1つ以上の宛先レジスタアドレスに格納されたデータ、または1つ以上のソースレジスタアドレス及び1つ以上の宛先レジスタアドレスに格納されたデータに対して実行される1つ以上の操作とを含むフックブロックを含む。別の例示として、フックは、キャッシュ102に結合される入力デバイスを介してプログラマまたはユーザー1によって挿入される。
ゲーム一時停止フック1420は、基本ブロック11の後に挿入される。基本ブロック11は、レガシーゲームNのゲームレベル1の間に実行される。基本ブロック11は、仮想オブジェクト454を位置P10及び方向O10から位置P11及び方向O11に移動させるためにブロックディスパッチャ302(図3)によって実行される。ゲーム一時停止フック1420は、基本ブロック11が実行された後にユーザー1がレガシーゲームNを一時停止させることを可能にするために、入力デバイスを介してプログラマによってキャッシュ102に挿入される。ゲーム一時停止フック1420は、基本ブロック11がキャッシュ102に格納される1つ以上のメモリアドレスの後にキャッシュ102に挿入される。例えば、ゲーム一時停止フック1420を指す値は、レガシーゲームNが、ユーザー1から、レガシーゲームNのゲームレベル1の間にレガシーゲームNを一時停止させるための要求を受信することを可能にするために基本ブロック11に挿入される。ゲーム一時停止フック1420は、ブロックディスパッチャ302によって実行される。
また、チャレンジ作成フック1422は、レガシーゲームNの基本ブロック1~5などの基本ブロック1~nの1つ以上からチャレンジ1を作成するために、入力デバイスを介してプログラマによってキャッシュ102に挿入される。例えば、チャレンジ作成フック1422を指す値は、レガシーゲームNが、ユーザー1からチャレンジ1を開始するための要求を受信することを可能にするためにゲーム一時停止フック1420に挿入される。チャレンジ1を開始するための要求が受信されると、チャレンジ1の一部として含まれる基本ブロック1~5は、チャレンジ1の間に受信されたユーザー入力に基づいてブロックディスパッチャ302によって実行される。説明すると、第1のユーザー入力がチャレンジ1の間に受信されると、基本ブロック1が第1のユーザー入力を処理するために実行され、第2のユーザー入力がチャレンジ1の間に受信されると、基本ブロック2が第2のユーザー入力を処理するために実行される。別の例示として、第1のユーザー入力がチャレンジ1の間に受信されると、基本ブロック1及び2は、第1のユーザー入力を処理するために実行され、第2のユーザー入力がチャレンジ1の間に受信されると、基本ブロック3及び5が、第2のユーザー入力を処理するために実行される。さらに別の例示として、第1のユーザー入力がチャレンジ1の間に受信されると、基本ブロック2は、仮想オブジェクト454を位置P1及び方向O1から位置P2及び方向O2に移動させるために実行される。また、例示では、第2のユーザー入力がチャレンジ1の間に受信されると、基本ブロック3は、仮想オブジェクト454を位置P2及び方向O2から位置P3及び方向O3に移動させるために実行される。さらに例示では、第3のユーザー入力がチャレンジ1の間に受信されると、基本ブロック4は、仮想オブジェクト454を位置P3及び方向O3から位置P4及び方向O4に移動させるために実行される。例示では、第4のユーザー入力がチャレンジ1の間に受信されると、基本ブロック5は、仮想オブジェクト454を位置P4及び方向O4から位置P5及び方向O5に移動させるために実行される。チャレンジ作成フック1422は、ブロックディスパッチャ302によって実行される。
さらに記録開始フック1424は、ゲーム一時停止フック1422が実行されるとすぐにチャレンジ1を記録するために入力デバイスを介してプログラマによってキャッシュ102に挿入される。例えば、記録開始フック1424を指す値は、ブロックディスパッチャ302によるチャレンジ1の基本ブロック1~nの1つ以上の実行の開始時に、チャレンジ1の記録を開始するためにチャレンジ作成フック1422に挿入される。チャレンジ1の記録は、メモリデバイス1304(図13)に記録1として格納される。記録開始フック1424が実行されると、CPU1308はレコーダ1302に記録を開始する命令を送信する。命令を受信すると、レコーダ1302は、ユーザー1によるチャレンジ1のプレイに関する画像フレーム及び音声フレームなどのフレームを記録し、記録1をメモリデバイス1304に格納する。記録開始フック1424は、ブロックディスパッチャ302によって実行される。
さらに、チャレンジ終了フック1426は、レガシーゲームNの基本ブロック1~nの1つ以上から生成されたチャレンジ1を終了するために入力デバイスを介してプログラマによってキャッシュ102に挿入される。例えば、チャレンジ終了フック1426を指す値は、基本ブロックの実行時にチャレンジ1を終了するために基本ブロック1~5のそれぞれに挿入される。説明すると、チャレンジ1のすべての基本ブロック1~5が仮想オブジェクト454を移動させるために実行されると、チャレンジ終了フック1426が実行される。別の例として、CPU1308(図13)は、チャレンジ1の基本ブロック1~nの1つ以上の実行の開始以降の時間量をカウントするために、クロック発信器またはタイマなどのクロックソースを含む。CPU1309は、カウントが所定の閾値を超えているかどうかを判定する。カウントが所定の閾値を超えていると判定すると、CPU1308は、チャレンジ1の基本ブロック1~nの1つ以上の実行を終了する。一方、カウントが所定の閾値を超えていないと判定すると、CPU1308は、チャレンジ1の基本ブロック1~nの1つ以上の実行を終了しない。チャレンジ終了フック1426は、ブロックディスパッチャ302によって実行される。
また、ユーザーチャレンジ終了フック1428は、ユーザー1が、チャレンジ1のプレイ中の任意のときにレガシーゲームNの基本ブロック1~nの1つ以上から生成されたチャレンジ1を終了することを可能にするために、入力デバイスを介してプログラマによってキャッシュ102に挿入される。例えば、ユーザーチャレンジ終了フック1428は、基本ブロック1~nの1つ以上のそれぞれに挿入される。説明すると、ユーザーチャレンジ終了フック1428を指す値は、ユーザー1が、チャレンジ1の基本ブロック1~5の1つ以上の実行中の任意の点でユーザーアカウント1を介してチャレンジ1を終了することを可能にするために、基本ブロック1~5のそれぞれに挿入される。ユーザーチャレンジ終了フック1428は、ブロックディスパッチャ302によって実行される。
さらに、記録終了フック1430は、チャレンジ1が終了するとき、またはユーザー1がチャレンジ1を終了するときにチャレンジ1の記録を終了するために入力デバイスを介してプログラマによってキャッシュ102に挿入される。一例として、記録終了フック1430を指す値は、チャレンジ終了フック1426の実行時にチャレンジ1の記録を終了するためにチャレンジ終了フック1426に挿入される。別の例として、記録終了フック1430を指す値は、ユーザーチャレンジ終了フック1428の実行時にチャレンジ1の記録を終了するためにユーザーチャレンジ終了フック1428に挿入される。記録終了フック1430は、ブロックディスパッチャ302によって実行される。記録終了フック1430が実行されると、CPU1308はレコーダ1302にチャレンジ1の記録を停止する命令を送信する。
一実施形態では、ブロックディスパッチャ302は、CPU1308、またはGPU1310、またはCPU1308とGPU1310の両方の一部である。
図14Cは、チャレンジ2の例を示すためのディスプレイデバイス410の一実施形態の図である。ユーザーアカウント1にログインした後、ユーザー1はレガシーゲームNのゲームレベルZをプレイする。レガシーゲームNのレベルZのプレイ中、ユーザー1はハンドヘルドコントローラ414上の1つ以上のボタンを選択して、レガシーゲームNを一時停止させるためのユーザー入力を生成する。レガシーゲームNが一時停止すると、ユーザー1は、ハンドヘルドコントローラ414上の1つ以上のボタンをさらに選択して、チャレンジ2をプレイするための別のユーザー入力を生成する。チャレンジ2は、仮想オブジェクト454がジグザグの経路に沿って移動するクールな動きなどのスタントを含む。例えば、チャレンジ1のプレイ中、仮想オブジェクト454は、時刻taにおいて位置P101及び方向O101にある。ユーザー1は、ハンドヘルドコントローラ414を制御して、時刻tbにおいて、仮想オブジェクト454を位置P101及び方向O101から位置P102及び方向O102に移動させる。さらに、ユーザー1は、ハンドヘルドコントローラ414を制御して、時刻tcにおいて、仮想オブジェクト454を位置P102及び方向O102から位置P103及び方向O103に移動させる。またユーザー1は、ハンドヘルドコントローラ414を制御して、時刻tdにおいて、仮想オブジェクト454を位置P103及び方向O103から位置P104及び方向O104に移動させる。ユーザー1は、ハンドヘルドコントローラ414をさらに制御して、時刻teにおいて、仮想オブジェクト454を位置P104及び方向O104から位置P105及び方向O105に移動させる。
図14Dは、レガシーゲームNのゲームレベルZの基本ブロック1~nの任意の2つの間に挿入されるフックを示すための図である。ゲーム一時停止フック1450は、基本ブロック111の後に挿入される。基本ブロック111は、レガシーゲームNのゲームレベルZの間に実行される。基本ブロック111は、仮想オブジェクト454を位置P110及び方向O110から位置P111及び方向O111に移動させるためにブロックディスパッチャ302(図3)によって実行される。ゲーム一時停止フック1450は、基本ブロック111が実行された後にユーザー1がレガシーゲームNを一時停止させることを可能にするために、入力デバイスを介してプログラマによってキャッシュ102に挿入される。ゲーム一時停止フック1450は、基本ブロック111がキャッシュ102に格納される1つ以上のメモリアドレスの後にキャッシュ102に挿入される。例えば、ゲーム一時停止フック1450を指す値は、レガシーゲームNが、ユーザー1から、レガシーゲームNのゲームレベルZの間にレガシーゲームNを一時停止させるための要求を受信することを可能にするために基本ブロック111に挿入される。ゲーム一時停止フック1450は、ブロックディスパッチャ302によって実行される。
また、チャレンジ作成フック1452は、レガシーゲームNの基本ブロック101~105などの基本ブロック1~nの1つ以上からチャレンジ2を作成するために、入力デバイスを介してプログラマによってキャッシュ102に挿入される。例えば、チャレンジゲームフック1452を指す値は、レガシーゲームNが、ユーザー1からチャレンジ2を開始するための要求を受信することを可能にするためにゲーム一時停止フック1450に挿入される。チャレンジ2を開始するための要求が受信されると、チャレンジ2の一部として含まれる基本ブロック101~105は、チャレンジ2の間に受信されたユーザー入力に基づいてブロックディスパッチャ302によって実行される。説明すると、第1のユーザー入力がチャレンジ2の間に受信されると、基本ブロック101が第1のユーザー入力を処理するために実行され、第2のユーザー入力がチャレンジ2の間に受信されると、基本ブロック102が第2のユーザー入力を処理するために実行される。別の例示として、第1のユーザー入力がチャレンジ2の間に受信されると、基本ブロック101及び102は、第1のユーザー入力を処理するために実行され、第2のユーザー入力がチャレンジ2の間に受信されると、基本ブロック103及び105が、第2のユーザー入力を処理するために実行される。さらに別の例示として、第1のユーザー入力がチャレンジ2の間に受信されると、基本ブロック102は、仮想オブジェクト454を位置P101及び方向O101から位置P102及び方向O102に移動させるために実行される。また、例示では、第2のユーザー入力がチャレンジ2の間に受信されると、基本ブロック103は、仮想オブジェクト454を位置P102及び方向O102から位置P103及び方向O103に移動させるために実行される。さらに例示では、第3のユーザー入力がチャレンジ2の間に受信されると、基本ブロック104は、仮想オブジェクト454を位置P103及び方向O103から位置P104及び方向O104に移動させるために実行される。例示では、第4のユーザー入力がチャレンジ2の間に受信されると、基本ブロック102は、仮想オブジェクト454を位置P104及び方向O104から位置P105及び方向O105に移動させるために実行される。チャレンジ作成フック1452は、ブロックディスパッチャ302によって実行される。
さらに記録開始フック1454は、ゲーム一時停止フック1452が実行されるとすぐにチャレンジ2を記録するために入力デバイスを介してプログラマによってキャッシュ102に挿入される。例えば、記録開始フック1454を指す値は、ブロックディスパッチャ302によるチャレンジ2の基本ブロック1~nの1つ以上の実行の開始時に、チャレンジ2の記録を開始するためにチャレンジ作成フック1452に挿入される。チャレンジ2の記録は、メモリデバイス1304(図13)に記録2として格納される。記録開始フック1454が実行されると、CPU1308はレコーダ1302に記録を開始する命令を送信する。命令を受信すると、レコーダ1302は、ユーザー1によるチャレンジ2のプレイに関する画像フレーム及び音声フレームなどのフレームを記録し、記録2をメモリデバイス1304に格納する。記録開始フック1454は、ブロックディスパッチャ302によって実行される。
さらに、チャレンジ終了フック1456は、レガシーゲームNの基本ブロック1~nの1つ以上から生成されたチャレンジ2を終了するために入力デバイスを介してプログラマによってキャッシュ102に挿入される。例えば、チャレンジ終了フック1456を指す値は、基本ブロックの実行時にチャレンジ2を終了するために基本ブロック101~105のそれぞれに挿入される。説明すると、基本ブック101~105がチャレンジ2の間に仮想オブジェクト454を移動させるために実行されると、チャレンジ終了フック1456が実行される。別の例として、CPU1308(図13)は、チャレンジ2の基本ブロック1~nの1つ以上の実行の開始以降の時間量をカウントするために、クロック発信器またはタイマなどのクロックソースを含む。CPU1309は、カウントが事前に設定された閾値を超えているかどうかを判定する。カウントが事前に設定された閾値を超えていると判定すると、CPU1308は、チャレンジ2の基本ブロック1~nの1つ以上の実行を終了する。一方、カウントが事前に設定された閾値を超えていないと判定すると、CPU1308は、チャレンジ2の基本ブロック1~nの1つ以上の実行を終了しない。チャレンジ終了フック1456は、ブロックディスパッチャ302によって実行される。
また、ユーザーはチャレンジ終了フック1458は、ユーザー1が、レガシーゲームNの基本ブロック1~nの1つ以上から生成されたチャレンジ2を終了することを可能にするために、入力デバイスを介してプログラマによってキャッシュ102に挿入される。例えば、ユーザーチャレンジ終了フック1458は、基本ブロック1~nの1つ以上のそれぞれに挿入される。説明すると、ユーザーチャレンジ終了フック1458を指す値は、ユーザー1が、チャレンジ2の基本ブロック1~5の1つ以上の実行中の任意の点でユーザーアカウント1を介してチャレンジ2を終了することを可能にするために、基本ブロック101~105のそれぞれに挿入される。ユーザーチャレンジ終了フック1458は、ブロックディスパッチャ302によって実行される。
さらに、記録終了フック1460は、チャレンジ2が終了するとき、またはユーザー1がチャレンジ2を終了するときにチャレンジ2の記録を終了するために入力デバイスを介してプログラマによってキャッシュ102に挿入される。一例として、記録終了フック1460を指す値は、チャレンジ終了フック1456の実行時にチャレンジ2の記録を終了するためにチャレンジ終了フック1456に挿入される。別の例として、記録終了フック1450を指す値は、ユーザーチャレンジ終了フック1458の実行時にチャレンジ2の記録を終了するためにユーザーチャレンジ終了フック1458に挿入される。記録終了フック1460は、ブロックディスパッチャ302によって実行される。記録終了フック1460が実行されると、CPU1308はレコーダ1302にチャレンジ2の記録を停止する命令を送信する。
一実施形態では、ゲームレベルZの代わりに、基本ブロック101~105が、基本ブロック1~5が属するのと同じゲームレベル1に属する。例えば、基本ブロック101~105は、基本ブロック1~5が実行されるゲームレベルと同じゲームレベル内で実行される。
一実施形態では、同じレガシーゲームNのゲームレベルZの代わりに、基本ブロック101~105は、例えばレガシーゲーム(N-1)など、基本ブロック1~5が属しているレガシーゲームNとは異なるレガシーゲームに属している。例えば、基本ブロック101~105は、レガシーゲーム(N-1)のプレイ中に実行され、基本ブロック1~5は、レガシーゲームNのプレイ中に実行される。
図15Aは、システム1500の一実施形態の図である。システム1500は、メモリデバイス1304、キャッシュ102、及びブロックディスパッチャ302を含む。プログラマは、メタゲーム要求フック1506をキャッシュ102に追加する。例えば、基本ブロック1~5の1つ以上、及び基本ブロック101~105の1つ以上が、ユーザーアカウント1を介してチャレンジ1及び2のプレイ中にブロックディスパッチャ302によって実行された後、ブロックディスパッチャ302は、メタゲーム要求フック1506を実行して、ユーザーアカウント1を介して、チャレンジ1及び2に基づいたメタゲームの生成を要求するユーザー入力を検索する。例では、メタゲームの生成を要求するユーザー入力がユーザーアカウント1を介して受信されると、ブロックディスパッチャ302はメタゲーム要求フック1506を実行して、チャレンジ1及び2の記録1及び記録2から、ユーザー1によってチャレンジ1及び2のプレイ中に実行される基本ブロック1~5及び101~105を識別する。説明すると、ユーザーチャレンジ終了フック1428(図14B)が、ユーザーアカウント1を介してチャレンジ1を終了するユーザー入力を受信する場合、基本ブロック1~5のすべてではないが1つ以上は、チャレンジ1の実行中に実行される。例示では、ブロックディスパッチャ302は、基本ブロック1~5のすべてではないが1つ以上を識別するためにメタゲーム要求フック1506を実行し、メタゲームを生成するために基本ブロック1~5のすべてではないが1つ以上を含む。別の例示として、チャレンジ1を終了するためにディスパッチャ302によってチャレンジ終了フック1426(図14B)が実行される場合、基本ブロック1~5のすべてはメタゲーム内に含まれる。例示では、ブロックディスパッチャ302は、基本ブロック1~5のすべてを識別するためにメタゲーム要求フック1506を実行し、メタゲームの別のプレイ中の基本ブロック1~5のすべてを含む。
さらに別の例示として、ユーザーチャレンジ終了フック1458(図14D)が、ユーザーアカウント1を介してチャレンジ2を終了するユーザー入力を受信する場合、基本ブロック101~105のすべてではないが1つ以上が、チャレンジ2の実行中に実行される。例示では、ブロックディスパッチャ302は、基本ブロック101~105のすべてではないが1つ以上を識別するためにメタゲーム要求フック1506を実行し、メタゲームを生成するために基本ブロック101~105のすべてではないが1つ以上を含む。さらに別の例示として、チャレンジ2を終了するためにディスパッチャ302によってチャレンジ終了フック1456(図14D)が実行される場合、基本ブロック101~105のすべてはメタゲーム内に含まれる。例示では、ブロックディスパッチャ302は、基本ブロック101~105のすべてを識別するためにメタゲーム要求フック1506を実行し、メタゲームの別のプレイ中の基本ブロック101~105のすべてを含む。
さらに、プログラマは、シーケンス要求フック1508をキャッシュ102に追加する。例えば、ブロックディスパッチャ302は、ユーザーアカウント1を介して基本ブロック1~5及び101~105の実行のシーケンスを要求するユーザー入力を検索するためにシーケンス要求フック1508を実行する。ユーザー入力がユーザーアカウント1を介して受信されると、ブロックディスパッチャ302は、メガゲームのために基本ブロック1~5の1つ以上及び101~105の1つ以上の実行順序を生成するなど、スティッチングするためにシーケンス要求フック1508を実行する。説明すると、基本ブロック1~5の1つ以上は、ユーザーアカウント2を介したユーザー2によるメタゲームのプレイ中に、基本ブロック101~105の1つ以上の前に実行される。基本ブロック1~5の1つ以上が基本ブロック101~105の前に実行されると、チャレンジ1のプレイは、チャレンジ2のプレイ前に円滑に進められる。例示では、基本ブロック101~105の1つ以上は、基本ブロック1~5の1つ以上の実行が完了する前に実行されない。別の例示として、基本ブロック101~105の1つ以上は、ユーザーアカウント2を介したユーザー2によるメタゲームのプレイ中に、基本ブロック1~5の1つ以上の前に実行される。基本ブロック101~105の1つ以上が、基本ブロック1~5が実行される前に実行されると、チャレンジ2のプレイは、チャレンジ1のプレイ前に円滑に進められる。例示では、基本ブロック1~5の1つ以上は、基本ブロック101~105の1つ以上の実行が完了する前に実行されない。
さらに、プログラマは、リーダーシップスコアボード要求フック1508をキャッシュ102に追加する。例えば、ブロックディスパッチャ302は、ユーザーアカウント1を介して、リーダーシップスコアボードがメタゲームに追加されることを要求するユーザー入力を検索するためにリーダーシップスコアボード要求フック1508を実行する。ユーザーアカウント1を介してユーザー入力を受信すると、ブロックディスパッチャ302は、リーダーシップスコアボードフック1508を実行して、リーダーシップスコアボードをメタゲームに追加する。リーダーシップスコアボードの使用は、以下にさらに説明される。
また、プログラマは、トロフィーフック1512をメタゲームに追加する。例えば、ブロックディスパッチャ302は、メタゲームのプレイ中にトロフィーフック1512を実行する。トロフィーフック1512のさらなる詳細は以下に説明される。
さらに、プログラマは、ゴースト要求フック1514を再度追加する。ブロックディスパッチャ302は、チャレンジ1及び2をプレイするために使用される、仮想オブジェクト454などの対応する1つ以上の仮想オブジェクトの1つ以上のゴーストを生成するためにゴースト要求フック1514を実行する。ゴースト要求フック1514は、対応する仮想オブジェクトにゴーストを付加する方法をさらに含む。例えば、ゴースト要求フック1514は、ゴーストが対応する仮想オブジェクト上にオーバーレイされるべきか、それとも対応する仮想オブジェクトの下に提示されるべきかを指定する。例では、ゴーストは対応する仮想オブジェクトを表し、対応する仮想オブジェクトとは異なった方法で表示されるべきである。説明すると、ゴーストは、対応する仮想オブジェクトと比較してより透明であるとして表示されるべきである。別の例として、ゴースト要求フック1514は、第1のゴーストがチャレンジ1の第1の仮想オブジェクトに付加されるべきであり、第2のゴーストがチャレンジ2の第2の仮想オブジェクトに付加されるべきであることを示す。第1のゴーストは、第1の仮想オブジェクトの形状と類似した形状または同じ形状を有し、第2のゴーストは、第2の仮想オブジェクトの形状と類似した形状または同じ形状を有する。ゴースト要求フック1514のさらなる詳細は以下に説明される。
ユーザーアカウント2を介したユーザー2によるメタゲームのプレイ中、ブロックディスパッチャ302は、シーケンス要求フック1510の実行時にユーザーアカウント1を介してユーザーから受信された順序などのシーケンスで基本ブロック1~5の1つ以上及び基本ブロック101~105の1つ以上を実行する。例えば、ユーザーアカウント1を介して受信されたユーザー入力が、基本ブロック101~105を実行した後に基本ブロック1~5が実行されるべきであることを示すと、ブロックディスパッチャ302は、最初に基本ブロック101~105を実行し、次に基本ブロック1~5を実行する。例では、チャレンジ2は、順序に従ってチャレンジ1をプレイする前にプレイされる。
一実施形態では、シーケンス要求フック1508、リーダーシップスコアボードフック1510、トロフィーフック1512、及びゴースト要求フック1514の1つ以上は、任意選択である。例えば、キャッシュ102はリーダーシップスコアボードフック1510を含むが、シーケンス要求フック1508、トロフィーフック1512、及びゴースト要求フック1514を除外する。
一実施形態では、メタゲーム要求フック1506、シーケンス要求フック1508、またはリーダーシップスコアボードフック1510、トロフィーフック1512、及びゴースト要求フック1514のそれぞれは、ブロックディスパッチャ302によって実行される。
一実施形態では、ゴーストフック1514の代わりに、またはゴーストフック1514に加えて、ゲームプレイフックが、プログラマによってキャッシュ102に含められる。ゲームプレイフックは、ブロックディスパッチャ302によって実行される。ゲームプレイフックのさらなる詳細は以下に説明される。
図15Bは、ユーザーアカウント1を介したユーザー1によるチャレンジ1及び2の実行の順序の選択を示すためのディスプレイデバイス410の図である。ユーザー1は、ハンドヘルドコントローラ414上の1つ以上のボタンを選択して、メタゲームを生成する要求を含む信号であるユーザー入力1550を生成する。信号はハンドヘルドコントローラ414によって生成される。ユーザーアカウント1を介してユーザー入力1550を受信すると、ブロックディスパッチャ302(図3)は、メタゲーム要求フック1506(図15A)を実行して、メタゲームを生成するために基本ブロック1~5の1つ以上及び基本ブロック101~105の1つ以上を識別する。さらに、基本ブロック1~5の1つ以上及び基本ブロック101~105の1つ以上を識別した後、ブロックディスパッチャ302はシーケンス要求フック1508(図15A)を実行して、画像1552の画像データを生成し、ユーザーアカウント1及びコンピュータネットワーク408(図13)を介して画像データを送信して、ディスプレイデバイス410に画像1552を表示する。画像1552は、チャレンジ1及び2の実行の順序の選択のための通知を含む。さらに、画像1552は、ハンドヘルドコントローラ414上のボタンの選択によってユーザー1が選択できるグラフィックボタン1554を含む。画像1552は、ハンドヘルドコントローラ414上のボタンの選択によってユーザー1が選択できるグラフィックボタン1556をさらに含む。
コンピュータネットワーク408を介してグラフィックボタン1554の選択を示すユーザー入力を受信すると、ブロックディスパッチャ302は、チャレンジ1のブロック1~5の1つ以上が、チャレンジ2のブロック101~105の1つ以上の実行の前に実行される第1のシーケンスを生成するためにシーケンス要求フック1508を実行する。一方、コンピュータネットワーク408を介してグラフィックボタン1556の選択を示すユーザー入力を受信すると、ブロックディスパッチャ302は、チャレンジ2のブロック101~105の1つ以上が、チャレンジ1のブロック1~5の1つ以上実行の前に実行される第2のシーケンスを生成するためにシーケンス要求フック1508を実行する。
図16Aは、メタゲームの生成を説明するための方法1600の一実施形態のフローチャートである。方法1600の操作1602において、レガシーゲームNの第1の部分の実行中にチャレンジ1などの第1のチャレンジに対するユーザー入力が受信されたかどうかが判定される。例えば、ブロックディスパッチャ302は、レガシーゲームNをゲームレベル1で一時停止させる要求を含むユーザー入力が、コンピュータネットワーク408(図13)及びユーザーアカウント1を介して受信されたかどうかを判定する。例では、ユーザー入力は、ユーザー1がハンドヘルドコントローラ414(図13)上で1つ以上のボタンを選択すると生成される信号である。信号はハンドヘルドコントローラ414によって生成される。ブロックディスパッチャ302は、例でそのように判定すると、レガシーゲームNをゲームレベル1で一時停止させるためにゲーム一時停止フック1422(図14B)を実行する。また、例では、ブロックディスパッチャ302は、チャレンジ作成フック1422(図14B)を実行して、チャレンジ1を開始するために、チャレンジ1作成ボタンを含む画像フレームなどの画像フレームを生成し、表示のために画像フレームをユーザーアカウント1及びコンピュータネットワーク408を介してディスプレイデバイス410に送信する。例を続けると、ユーザー1は、ハンドヘルドコントローラ412を介して、チャレンジ1作成ボタンを選択し、選択の指示は、ゲームコンソール402及びコンピュータネットワーク408を介してサーバシステム404に送信される。さらに、例では、選択の指示を受信すると、ブロックディスパッチャ302は、レガシーゲームNがチャレンジ1を生成するために一時停止された時点からレガシーゲームNのプレイを続行するために基本ブロック1~nの1つ以上を実行し、ユーザー1がチャレンジ1をプレイすることを可能にする。ブロックディスパッチャ302は、ユーザー入力が受信されるまで、ユーザー入力が操作1602で受信されたかどうかを判定し続ける。
方法1600の操作1604において、第1のチャレンジのプレイは、レコーダ1302(図13)によって記録1として記録される。例えば、ブロックディスパッチャ302は、ユーザーアカウント1を介したユーザー1によるチャレンジ1のプレイの記録を開始する信号をレコーダ1302に送信するために記録開始フック1424(図14B)を実行する。記録する信号を受信すると、レコーダ1302は、ユーザーアカウント1を介したユーザー1によるチャレンジ1のプレイの記録を開始する。チャレンジ1のプレイ中に記録が開始すると、ユーザー1は、チャレンジ1の間にハンドヘルドコントローラ414(図14A)上の1つ以上のボタンを選択して1つ以上のユーザー入力を生成する。ユーザーアカウント1を介して1つ以上のユーザー入力を受信すると、ブロックディスパッチャ302は、チャレンジ1のプレイの間に1つ以上のユーザー入力を処理するために基本ブロック1~5の1つ以上を実行する。記録1は、レコーダ1302によってメモリデバイス1304(図13)に格納される。
方法1600の操作1606において、レガシーゲームNの第2の部分の実行中のチャレンジ2などの第2のチャレンジに対するユーザー入力が受信されたかどうかが判定される。例えば、ブロックディスパッチャ302は、レガシーゲームnをゲームレベルZで一時停止させる要求を含む、信号などのユーザー入力が、コンピュータネットワーク408を介してユーザーアカウント1で受信されたかどうかを判定する。例では、ユーザー入力は、ユーザー1がハンドヘルドコントローラ414(図13)上の1つ以上のボタンを選択すると、ハンドヘルドコントローラ414によって生成される。例を続けると、ブロックディスパッチャ302は、そのように判定すると、レガシーゲームNをゲームレベルZで一時停止させるためにゲーム一時停止フック1450(図14D)を実行する。また、例では、ブロックディスパッチャ302は、チャレンジ作成フック1452(図14D)を実行して、チャレンジ2を開始するために、チャレンジ2作成ボタンを含む画像フレームなどの画像フレームを生成し、表示のために画像フレームをユーザーアカウント1及びコンピュータネットワーク408を介してディスプレイデバイス410に送信する。例では、ユーザー1は、ハンドヘルドコントローラ412を介して、チャレンジ2作成ボタンを選択し、選択の指示は、ゲームコンソール402及びコンピュータネットワーク408を介してサーバシステム404に送信される。さらに、例では、選択の指示を受信すると、ブロックディスパッチャ302は、レガシーゲームNがチャレンジ2を生成するために一時停止された時点からレガシーゲームNのプレイを続行するために基本ブロック1~nの1つ以上を実行し、ユーザー1がチャレンジ2をプレイすることを可能にする。ブロックディスパッチャ302は、ユーザー入力が受信されるまで、ユーザー入力が操作1606で受信されたかどうかを判定し続ける。
方法1600の操作1608において、第2のチャレンジのプレイは、レコーダ1302によって記録2として記録される。例えば、ブロックディスパッチャ302は、ユーザーアカウント1を介してユーザー1によるチャレンジ2のプレイの記録を開始する信号をレコーダ1302に送信するために記録開始フック1454(図14D)を実行する。例では、記録する信号を受信すると、レコーダ1302は、ユーザーアカウント1を介してユーザー1によるチャレンジ2のプレイの記録を開始する。さらに例では、チャレンジ2のプレイ中に記録が開始すると、ユーザー1は、チャレンジ2の間にハンドヘルドコントローラ414上の1つ以上のボタンを選択して1つ以上のユーザー入力を生成する。例では、ユーザーアカウント1を介して1つ以上のユーザー入力を受信すると、ブロックディスパッチャ302は、チャレンジ2のプレイの間に1つ以上のユーザー入力を処理するために基本ブロック101~105の1つ以上を実行する。記録2は、レコーダ1302によってメモリデバイス1304に格納される。
方法1600の操作1610においては、メタゲームを生成するためのユーザー入力が受信されたかどうかが判定される。例えば、ブロックディスパッチャ302は、チャレンジ1及び2からメタゲームを生成するための要求を含む信号であるユーザー入力が、ユーザーアカウント1で受信されたかどうかを判定する。例では、ユーザー入力は、ハンドヘルドコントローラ414(図13)上の1つ以上のボタンを選択することによってユーザー1によって生成される。説明すると、ブロックディスパッチャ302は、ユーザーアカウント1で受信されたユーザー入力がメタゲームを生成する要求を含むかどうかを判定するためにメタゲーム要求フック1506(図15A)を実行する。ブロックディスパッチャ302は、ユーザー入力が受信されるまで、メタゲームを生成するためのユーザー入力が受信されたかどうかを判定し続ける。
メタゲームを生成するためのユーザー入力が受信されたと判定すると、操作1612が実行される。操作1612は、ユーザーアカウント1を介してチャレンジ1のプレイ中に実行される、基本ブロック1~5などの基本ブロック1~nの1つ以上、及びユーザーアカウント1を介してチャレンジ2のプレイ中に実行される、基本ブロック101~105などの基本ブロック1~nの1つ以上を識別することを含む。例えば、ブロックディスパッチャ302は、ユーザーアカウント1を介して、チャレンジ1のプレイ中に実行される基本ブロック1~5の1つ以上を記録1から識別するためにメタゲーム要求フック1506を実行する。例では、ブロックディスパッチャ302は、ユーザーアカウント1を介して、チャレンジ2のプレイ中に実行される基本ブロック101~105の1つ以上を記録2から識別するためにメタゲーム要求フック1506を実行する。説明すると、ブロックディスパッチャ302は、メモリデバイス1304から記録1及び2にアクセスする要求をレコーダ1302に送信する。例示では、要求を受信すると、レコーダ1302は、ブロックディスパッチャ302から要求を取得すると、メモリデバイス1304から記録1及び2にアクセスし、記録をブロックディスパッチャ302に提供する。さらに、例示では、ブロックディスパッチャ302は、記録1及び2を解析して、記録1から、記録1を生成するために実行された基本ブロック1~5の1つ以上を識別し、記録2から、記録2を生成するために実行された基本ブロック101~105の1つ以上を識別する。
図16Bは、チャレンジ1の基本ブロック1~5の1つ以上を、チャレンジ2の基本ブロック101~105の1つ以上とスティッチングするための方法1600を示すための図16Aのフローチャートの続きである。方法1600の操作1614において、操作1612で識別された基本ブロック1~5などの基本ブロック1~nの1つ以上、及び操作1612で識別された基本ブロック101~105などの基本ブロック1~nの1つ以上の実行のシーケンスを生成するためのユーザー入力が受信されたかどうかが判定される。例えば、ブロックディスパッチャ302(図3)はシーケンス要求フック1508(図15A)を実行して、ユーザーアカウント1に対する画像1552(図15B)の画像データを生成し、コンピュータネットワーク408(図13)を介して画像データを送信して、ディスプレイデバイス410(図13)に画像1552を表示する。例では、ブロックディスパッチャ302は、シーケンス要求フック1508を実行して、画像1552の表示に応えて、コンピュータネットワーク408を介してサーバシステム404(図13)のユーザーアカウント1で、グラフィックボタン1554(図15B)の選択を含むユーザー入力が受信されるのか、それともグラフィックボタン1556(図15B)の選択を含むユーザー入力が受信されるかを判定する。
方法1600の操作1616において、ユーザー入力が操作1614で受信されたと判定したことに応えて、チャレンジ1のプレイを容易にするための基本ブロック1~5などの基本ブロック1~nの1つ以上が、チャレンジ2のプレイを容易にするための基本ブロック101~105などの基本ブロック1~nの1つ以上とスティッチングされる。例えば、グラフィックボタン1554の選択を含むユーザー入力が受信されたと判定すると、ブロックディスパッチャ302は、シーケンス要求フック1508(図15A)を実行して、ユーザーアカウント1を介してチャレンジ1のプレイ中に実行された基本ブロック1~5を、ユーザーアカウント1を介してチャレンジ2のプレイ中に実行された基本ブロック101~105とスティッチングする。例では、基本ブロック1~5は基本ブロック101~105とスティッチングされて、基本ブロック101~105の実行前に基本ブロック1~5の実行を可能にする。説明すると、CPU1308は、基本ブロック101~105が格納されるキャッシュ102を用いて、アドレスなどの記憶場所を指すポインタを生成する。CPU1308は、基本ブロック1~5のすべてが実行された直後にポインタへのアクセスを提供する。したがって、基本ブロック1~5のすべての実行直後に、ポインタは、基本ブロック101~105の実行のための基本ブロック101~105の記憶場所を指す。
一方、例では、グラフィックボタン1556の選択を含むユーザー入力が受信されたと判定すると、ブロックディスパッチャ302は、シーケンス要求フック1508を実行して、ユーザーアカウント1を介してチャレンジ2のプレイ中に実行された基本ブロック101~105などの基本ブロック1~nの1つ以上を、ユーザーアカウント1を介してチャレンジ1のプレイ中に実行された基本ブロック1~5などの基本ブロック1~nの1つ以上とスティッチングする。例では、1つ以上の基本ブロック101~105は1つ以上の基本ブロック1~5とスティッチングされて、1つ以上の基本ブロック1~5の実行前に1つ以上の基本ブロック101~105の実行を可能にする。説明すると、CPU1308は、基本ブロック1~5が格納されるキャッシュ102を用いて、アドレスなどの記憶場所を指すポインタを生成する。CPU1308は、基本ブロック101~105のすべてが実行された直後にポインタへのアクセスを提供する。したがって、基本ブロック101~105のすべての実行直後に、ポインタは、基本ブロック1~5の実行のための基本ブロック1~5の記憶場所を指す。
方法1600の操作1618において、ユーザー入力が操作1614で受信されなかったと判定したことに応えて、基本ブロック1~5の1つ以上は、基本ブロック101~105の1つ以上とスティッチングされない。例えば、グラフィックボタン1554の選択を含むユーザー入力も、グラフィックボタン1556の選択を含むユーザー入力も受信されなかったと判定すると、ブロックディスパッチャ302は、ユーザーアカウント1を介してチャレンジ1のプレイ中に実行された1つ以上の基本ブロック1~5を、ユーザーアカウント1を介してチャレンジ2のプレイ中に実行された1つ以上の基本ブロック101~105とスティッチングするためにシーケンス要求フック1508を実行しない。例では、スティッチングを行わない場合、基本ブロック1~5及び101~105は、基本ブロック1~5及び101~105が、ユーザーアカウント1を介したユーザー1によるメタゲームのプレイ中に実行される同じシーケンスで、後に実行される。
図16Cは、メタゲーム内でのリーダーシップスコアボードの追加、及びメタゲームへのトロフィーの付加を示すための図16Bのフローチャートの続きである。方法1600の操作1620において、リーダーシップスコアボードを追加するためのユーザー入力が受信されたかどうかが判定される。例えば、CPU1308は、リーダーシップスコアボードがメタゲームに追加されることを示すユーザー入力が、クライアントデバイス1301(図13)からコンピュータネットワーク408(図13)及びユーザーアカウント1を介して受信されたかどうかを判定する。ユーザー入力は、ユーザー1がハンドヘルドコントローラ414上の1つ以上のボタンを選択すると、ハンドヘルドコントローラ414(図13)によって生成される信号である。
方法1600の操作1622において、リーダーシップスコアボードを追加するためのユーザー入力が受信されたと判定すると、CPU1308は、リーダーシップスコアボードをメタゲームに追加する。例えば、CPU1308は、リーダーシップスコアボードをメタゲームに結合するためにリーダーシップスコアボード要求フック1508(図15A)を実行する。一方、方法1600の操作1624において、リーダーシップスコアボードを追加するためのユーザー入力が受信されなかったと判定したことに応えて、CPU1308は、メタゲーム内にリーダーシップスコアボードを含めないか、または追加しない。
方法1600を続けると、方法1600の操作1626において、CPU1308は、仮想ポイントなどのポイント総数をリーダーシップスコアボードに掲載する。例えば、CPU1308は、チャレンジ1のプレイ中にユーザーアカウント1を介してユーザー1によって蓄積されたポイント数、及びチャレンジ2のプレイ中にユーザーアカウント1を介してユーザー1によって蓄積されたポイント数を加算して、ポイント総数を決定する。CPU1308は、リーダーシップスコアボードにポイント総数を公表する。ユーザー2が、ユーザーアカウント2及びコンピュータネットワーク408を介してサーバシステム404(図13)からリーダーシップスコアボードにアクセスすると、リーダーシップスコアボードはディスプレイデバイス1204(図13)に表示される。
方法1600の操作1628において、CPU1308は、トロフィーをメタゲームに付加することを決定する。例えば、CPU1308は、メタゲーム内にトロフィーを含めるためにトロフィーフック1512を実行する。説明すると、トロフィーフックは、ユーザーアカウント2を介してユーザー2に仮想報酬を提供するための基準を含む。所定の制限などの基準がメタゲームの実行中に達成されると、仮想報酬がユーザーアカウント2に授与される。基準の例は、メタゲーム内で所定のポイント数より多くを達成すること、またはメタゲーム内の所定のレベルを通過すること、またはそれらの両方を含む。
一実施形態では、方法1600は操作1628を含まない。
一実施形態では、メタゲーム内の操作1626におけるポイントの総数を計算し、公開する代わりに、メタゲームのプレイの別のタイプの仮想尺度を使用することができる。例えば、ポイント総数の代わりに、通過した仮想レベルの総数または蓄積した金貨の総数を使用することができる。
図16Dは、図16Cのフローチャートの続きである。方法1600の操作1630において、CPU1308(図13)は、メタゲームにアクセスする要求がユーザー2から受信されたかどうかを判定する。例えば、CPU1308は、メタゲームにアクセスする要求が、ユーザーアカウント2及びコンピュータネットワーク408(図13)を介してクライアントデバイス1303(図13)から受信されたかどうかを判定する。例では、メタゲームにアクセスする要求は、メタゲームを実行する要求でもある。さらに、例では、ユーザー2は、ハンドヘルドコントローラ1212(図13)上の1つ以上のボタンを選択してメタゲームにアクセスする要求を含む信号を生成する。信号はハンドヘルドコントローラ1212によって生成される。
メタゲームにアクセスする要求が受信されなかったと判定したことに応えて、操作1632において、CPU1308は、メタゲームを実行しない。一方、メタゲームにアクセスする要求が受信されたと判定すると、方法1600の操作1634において、CPU1308は、1つ以上のゴーストを対応する1つ以上の仮想オブジェクトに付加するためのユーザー入力が受信されたかどうかを判定する。操作1634の例として、ゴーストをオーバーレイするためのユーザー入力が、ユーザーアカウント2及びコンピュータネットワーク408を介してクライアントデバイス1303から受信されたかどうかが判定される。例では、ユーザー入力は、ユーザー2がハンドヘルドコントローラ1212上の1つ以上のボタンを選択すると、ハンドヘルドコントローラ1212によって生成される信号である。別の例として、1つ以上のゴーストは、第1のゴースト及び第2のゴーストを含み、対応する1つ以上の仮想オブジェクトは第1の仮想オブジェクト及び第2の仮想オブジェクトを含む。第1のゴーストは第1の仮想オブジェクトに付加され、第2のゴーストは第2の仮想オブジェクトに付加される。第1の仮想オブジェクトは、チャレンジ1のプレイ中に各ユーザー1及び2によって対応するハンドヘルドコントローラ414及び1212を介して制御される。第2の仮想オブジェクトは、チャレンジ2のプレイ中に、各ユーザー1及び2によって対応するハンドヘルドコントローラ414及び1212を介して制御される。ゴーストの図示は、オーバーレイ仮想キャラクタなどのオーバーレイ仮想オブジェクトを含む。さらに、例示では、ゴーストのディスプレイは、ゴーストがオーバーレイされている仮想オブジェクトのディスプレイに比較してより透明である。また、例示では、ゴーストは、仮想オブジェクトの形状と類似した形状または同じ形状を有する。別の例示として、ゴーストは、アンダーレイ仮想キャラクタなどのアンダーレイ仮想オブジェクトである。例示では、ゴーストのディスプレイは、ゴーストがオーバーレイされている仮想オブジェクトのディスプレイに比較してより透明である。また、例示では、ゴーストは、仮想オブジェクトの形状と類似した形状または同じ形状を有する。
方法1600の操作1636において、1つ以上のゴーストを対応する1つ以上の仮想オブジェクトに付加するためのユーザー入力が受信されなかったと判定すると、CPU1308は、1つ以上のゴーストを対応する1つ以上の仮想オブジェクトに付加することなくメタゲームを実行する。例えば、オーバーレイのためのユーザー入力が受信されなかったと判定したことに応えて、CPU1308は、第1のゴーストを第1の仮想オブジェクトにオーバーレイせず、第2のゴーストを第2の仮想オブジェクトにオーバーレイしない。
一方、方法の操作1638中、1つ以上のゴーストを対応する1つ以上の仮想オブジェクトに付加するためのユーザー入力が受信されたと判定したことに応えて、CPU1308は、ユーザー2によるメタゲームのプレイ中に1つ以上のゴーストを対応する1つ以上の仮想オブジェクトに付加する。
一例として、CPU1308は、メモリデバイス1314(図13)から記録1及び2にアクセスするためにゴースト要求フック1514を実行し、記録1及び2を解析する。記録1及び2は、チャレンジ1及び2のプレイ中に、ユーザーアカウント1及びハンドヘルドコントローラ414(図13)を介してユーザー1によって制御される、第1の仮想オブジェクト及び第2の仮想オブジェクトなどの1つ以上の仮想オブジェクトを識別するために解析される。CPU1308は、チャレンジ1のプレイ中にユーザーアカウント1を介してユーザー1によって制御される第1の仮想オブジェクトの形状と類似したまたは同じ形状を有する第1のゴーストを生成し、チャレンジ2のプレイ中にユーザーアカウント1を介してユーザー1によって制御される第2の仮想オブジェクトの形状と類似したまたは同じ形状を有する第2のゴーストを生成する。例示として上述の例の第1及び第2の仮想オブジェクトは同じである。さらに説明すると、第1及び第2の仮想オブジェクトのそれぞれは仮想戦闘機または仮想キャラクタである。別の例示として、上述の例の第1及び第2の仮想オブジェクトは異なっている。さらに説明すると、第1の仮想オブジェクトは仮想戦闘機であり、第2の仮想オブジェクトは仮想キャラクタである。
別の例として、CPU1308は、ゴースト要求フック1514を実行して、メモリデバイス1304(図13)から記録1にアクセスし、記録1から、仮想オブジェクトが様々な位置及び方向にある時刻を決定する。時刻の例示は、時刻t1、時刻t2、時刻t3、時刻t4、及び時刻t5を含む。例を続けると、CPU1308は、チャレンジ1のプレイを容易にするためにCPU1308によるレガシーゲームNの一部の実行の開始からの時間を計算し、時間を記録1に格納する。記録1として格納される部分は、プレイを容易にするために実行される。したがって、一部の実行の開始からの時間は、記録1の開始からの時間と同じである。CPU1308は、仮想オブジェクトをゴーストとして表し、チャレンジ1に対応する時間に基づいてゴーストを移動させるためにゴースト要求フック1514(図15A)を実行する。例では、レガシーゲームNの部分がチャレンジ1のプレイを容易にするためにユーザーアカウント2を介してアクセスされると、GPU1310(図13)は、記録1に格納された時刻と、時刻t1で同じ位置及び方向に仮想オブジェクト及びゴーストを表示する。時刻t1は、ユーザーアカウント2を介してアクセスされたレガシーゲームNの一部の実行の開始からCPU1308によって計算される。CPU1308は、時刻がt1からt2に変化したかどうかを判定し、時刻t2に対応する位置及び方向にゴーストを表示するようにGPU1310に指示する。時刻t2に対応する位置及び方向は記録1に格納される。また、CPU1308は、時刻がt2からt3に変化したかどうかを判定し、時刻t3に対応する位置及び方向にゴーストを表示するようにGPU1310に指示する。時刻t3に対応する位置及び方向は、記録1に格納される。
別の例として、CPU1308はメモリデバイス1304(図13)から記録2にアクセスし、記録2から、仮想オブジェクトが様々な位置及び方向にある時刻を決定する。時刻の例示は、時刻ta、時刻tb、時刻tc、時刻td、及び時刻teを含む。例を続けると、CPU1308は、チャレンジ2のプレイを容易にするためにCPU1308によるレガシーゲームNの一部の実行の開始からの時間を計算し、時間を記録2に格納する。記録2として格納される部分は、プレイを容易にするために実行される。したがって、一部の実行の開始からの時間は、記録2の開始からの時間と同じである。CPU1308は、仮想オブジェクトをゴーストとして表し、チャレンジ2に対応する時間に基づいてゴーストを移動させる。レガシーゲームNの部分がチャレンジ2のプレイを容易にするためにユーザーアカウント2を介してアクセスされると、GPU1310は、記録2に格納された時刻と、時刻taで同じ位置及び方向に仮想オブジェクト及びゴーストを表示する。時刻taは、ユーザーアカウント2を介してアクセスされたレガシーゲームNの一部の実行の開始からCPU1308によって計算される。CPU1308は、時刻がtaからtbに変化したかどうかを判定し、時刻tbに対応する位置及び方向にゴーストを表示するようにGPU1310に指示する。時刻tbに対応する位置及び方向は記録2に格納される。また、CPU1308は、時刻がtbからtcに変化したかどうかを判定し、時刻tcに対応する位置及び方向にゴーストを表示するようにGPU1310に指示する。時刻tcに対応する位置及び方向は、記録2に格納される。
さらに別の例として、ユーザー2が、クライアントデバイス1303及びユーザーアカウント2を介してチャレンジ1にアクセスすると、CPU1308は、第1の仮想オブジェクトの上部に第1のゴーストをレンダリングするようにGPU1310(図13)に指示する。例では、ユーザー2が、クライアントデバイス1303及びユーザーアカウント2を介してチャレンジ2にアクセスすると、CPU1308は、第2の仮想オブジェクトの上部に第2のゴーストをレンダリングするようにGPU1310に指示する。説明すると、第1のゴーストは第1の仮想オブジェクトと同じキャラクタを表し、第2のゴーストは第2の仮想オブジェクトと同じキャラクタを表す。さらに説明すると、第1の仮想オブジェクトがシューターであるとき、第1のゴーストもシューターであり、第2の仮想オブジェクトが仮想飛行機であるとき、第2のゴーストも仮想飛行機である。別の例として、ユーザー2が、クライアントデバイス1303及びユーザーアカウント2を介してチャレンジ1にアクセスすると、CPU1308は、第1のゴーストをアンダーレイ仮想オブジェクトとして第1の仮想オブジェクトの下に表示するようにGPU1310(図13)に指示する。例では、ユーザー2が、クライアントデバイス1303及びユーザーアカウント2を介してチャレンジ2にアクセスすると、CPU1308は、第2のゴーストをアンダーレイ仮想オブジェクトとして第2の仮想オブジェクトの下に表示するようにGPU1310(図13)に指示する。
上述の2つの例では、第1の仮想オブジェクトと第1のゴーストと第2の仮想オブジェクトと第2のゴーストの動きの間にはリンクがないことに留意されたい。例えば、第1の仮想オブジェクトは、ハンドヘルドコントローラ1212(図13)を介してユーザー2によって制御され、第1のゴーストは、ユーザー1によるチャレンジ1のゲームプレイに従って表示される。例では、第1の仮想オブジェクトに対する第1のゴーストのオーバーレイまたはアンダーレイは、ユーザーアカウント2を介したユーザー2によるチャレンジ1のプレイの開始の時刻に発生する。また、例では、チャレンジ1中のある程度のプレイ時間の後、第1のゴーストは、第1の仮想オブジェクトの位置及び方向とは異なった位置及び方向にある。別の例として、第2の仮想オブジェクトは、ハンドヘルドコントローラ1212(図13)を介してユーザー2によって制御され、第2のゴーストは、ユーザー1によるチャレンジ2のゲームプレイに従って表示される。例では、第2の仮想オブジェクトに対する第2のゴーストのオーバーレイまたはアンダーレイは、ユーザーアカウント2を介したユーザー2によるチャレンジ2のプレイの開始の時刻に発生する。また、例では、チャレンジ2中のある程度のプレイ時間の後、第2のゴーストは、第2の仮想オブジェクトの位置及び方向とは異なった位置及び方向にある。
メタゲームが、グラフィックボタン1554または1556(図15B)によって示されるシーケンスに従って、操作1636または操作1638で実行されることに留意されたい。例えば、グラフィックボタン1554の選択の指示が受信されると、ブロックディスパッチャ302は、メタゲームを実行するために基本ブロック1~5の1つ以上を実行した後に、基本ブロック101~105の1つ以上を実行する。一方、グラフィックボタン1556の選択の指示が受信されると、ブロックディスパッチャ302は、メタゲームを実行するために基本ブロック101~105の1つ以上を実行した後に、基本ブロック1~5の1つ以上を実行する。
一実施形態では、操作1634及び1638に基づいて、1つ以上のゴーストを対応する1つ以上の仮想オブジェクトに付加する代わりに、メタゲームのユーザー1によるゲームプレイの1つ以上のビデオ、またはメタゲームをプレイしているユーザー1の1つ以上のビデオなどの1つ以上のビデオは、ユーザーアカウント2を介してユーザー2によってメタゲームのプレイ中に表示される。例えば、操作1634の代わりに、CPU1308は、クライアントデバイス1301及びユーザーアカウント1を介したユーザー1によるメタゲームのゲームプレイの1つ以上のビデオをオーバーレイするためのユーザー入力が、クライアントデバイス1303及びユーザーアカウント2を介してユーザー2から受信されたかどうかを判定する。ユーザー入力は、ユーザー2がハンドヘルドコントローラ上の1つ以上のボタンを選択すると、ハンドヘルドコントローラ1212によって生成される信号を含む。ユーザー入力が受信されなかったと判定したことに応えて、操作1636の代わりに、メタゲームは1つ以上のビデオをオーバーレイすることなく実行される。一方、ユーザー入力が受信されたと判定すると、操作1638を実行する代わりに、CPU1308は、1つ以上のビデオをメタゲームにオーバーレイするためにゲームプレイフックを実行する。例えば、CPU1308は、メモリデバイス1314(図13)から記録1及び2にアクセスし、ユーザー2によるプレイに対して第1のチャレンジの実行中に記録1の第1のビデオをオーバーレイし、ユーザー2によるプレイのために第2のチャレンジの実行中に記録2の第2のビデオをオーバーレイする。CPU1308は、ユーザーアカウント1を介してチャレンジ1の実行中の第1のビデオを記録し、ユーザーアカウント1を介してチャレンジ2の実行中の第2のビデオを記録するためにレコーダ1302を制御する。
一実施形態では、ゴーストは、異なる色、または強度、またはテクスチャ、または形状、またはそれらの組み合わせなどの仮想オブジェクトとは異なるレンダリング要因を使用することによって、GPU1310によってレンダリングされる。ゴーストは仮想オブジェクトに付加されるべきである。
図16Eは、図16Dのフローチャートの続きである。操作1640において、CPU1308(図13)はリーダーシップスコアボードがメタゲームに追加されるかどうかを判定する。例えば、リーダーシップスコアボードが操作1622(図16C)でメタゲームに追加されると、リーダーシップスコアボードがメタゲームに追加されることを示す識別子が、CPU1308によってキャッシュ102に格納される。CPU1308は、操作1640において、識別子を見つけるためにキャッシュ102をチェックする。識別子を見つけると、リーダーシップスコアボードがメタゲームに追加されたと判定される。識別子が見つからないとき、CPU1308は、リーダーシップスコアボードがメタゲームに追加されていないと判定する。
リーダーシップスコアボードがメタゲームに追加されたと判定したことに応えて、方法1600の操作1642において、CPU1308は、ユーザーアカウント2を介したユーザー2のメタゲームのプレイ中に蓄積されたポイント数が、操作1626(図16C)においてリーダーシップスコアボードに公開されたポイント総数を超えているかどうかを判定する。メタゲームのポイント総数は、メタゲームのプレイ中にユーザーアカウント1を介してユーザー1によって蓄積される。ユーザー2によるメタゲームのプレイが操作1636(図16D)で開始することに留意されたい。例として、CPU1308は、第1の仮想ポイント数が、チャレンジ1のプレイ中にユーザーアカウント1を介してユーザー1によって蓄積され、第2の仮想ポイント数が、チャレンジ2のプレイ中にユーザーアカウント1を介してユーザー1によって蓄積されると判定する。CPU1308は、第1の数を第1のバランス定数で乗算して、第1の結果を出力し、第2の数を第2のバランス定数で乗算して第2の結果を出力し、第1の結果及び第2の結果を加算して、第1の合計を決定する。同様に、CPU1308は、第3の仮想ポイント数が、チャレンジ1のプレイ中にユーザーアカウント2を介してユーザー2によって蓄積され、第4の仮想ポイント数が、チャレンジ2のプレイ中にユーザーアカウント2を介してユーザー2によって蓄積されると判定する。CPU1308は、第3の数を第1のバランス定数で乗算して第3の結果を出力し、第4の数を第2のバランス定数で乗算して第4の結果を出力し、第3の結果及び第4の結果を加算して、第2の合計を決定する。CPU1308は、第2の合計が第1の合計よりも大きいかどうかを判定する。
操作1642において、ユーザーアカウント2を介したユーザー2によるメタゲームのプレイ中に蓄積されたポイント数が、操作1626において公開されたポイント総数を超えていると判定したことに応えて、CPU1308は、操作1644において、ユーザーアカウント2に対して、ユーザーアカウント1よりも高いランクまたは高い順位を割り当てる。例えば、上述の例で第2の合計が第1の合計よりも大きいと判定すると、CPU1308は、ユーザー2がリーダーであると判定し、ユーザー2に割り当てられたユーザーID2をリーダーシップスコアボードに追加する。CPU1308は、ユーザーID1の上にユーザーID2をレンダリングするようにGPU1310(図13)を制御する。
一方、ユーザーアカウント2を介したユーザー2によるメタゲームのプレイ中に蓄積されたポイント数が、操作1642において公開されたポイント総数を超えていないと判定すると、CPU1308は、操作1646において、ユーザーアカウント2に対して、ユーザーアカウント1よりも低いランクを割り当てる。例えば、第2の合計が第1の合計よりも大きくないと判定すると、CPU1308は、ユーザー1が依然としてリーダーであると判定し、ユーザー2に割り当てられたユーザーID2をリーダーシップスコアボードに追加する。CPU1308は、ユーザーID1の下にユーザーID2をレンダリングするようにGPU1310(図13)を制御する。
操作1640においてリーダーシップスコアボードがメタゲームに付加されていないと判定したことに応えて、CPU1308は、操作1648において、トロフィーがメタゲームに付加されているかどうかを判定する。例えば、トロフィーが操作1628(図16C)でメタゲームに付加されると、トロフィーがメタゲーム内に含まれていることを示す識別子が、CPU1308によってキャッシュ102内に格納される。CPU1308は、操作1648において、識別子を見つけるためにキャッシュ102をチェックする。識別子を見つけると、トロフィーがメタゲームに追加されたと判定される。識別子が見つからないとき、CPU1308は、トロフィーがメタゲームに付加されていないと判定する。
CPU1308は、トロフィーがメタゲームに付加されていないと判定すると、トロフィーがメタゲームに付加されたかどうかをチェックし続ける。一方、トロフィーがメタゲームに付加されたと判定したことに応えて、方法1600の操作1650において、CPU1308は、ユーザーアカウント2を介したユーザー2によるメタゲームのプレイ中に蓄積されたポイント数が、所定の制限を超えているかどうかを判定する。例えば、CPU1308は、ユーザーアカウント2を介したメタゲームのプレイ中に蓄積された第2の合計が、操作1628(図16C)と関連する所定のポイント数より大きいかどうかを判定する。
ポイント数が所定の制限を超えていると判定すると、CPU1308は、方法1600の操作1652においてユーザーアカウント2にトロフィーを授与することを決定する。トロフィーの例は、仮想スキン、仮想ポイント数、またはメタゲームにおけるゲームレベルなどの栄誉または仮想報酬である。ゲームレベルは、トロフィーを与えるためにロック解除される。トロフィーが授与される前に、ゲームレベルはロックされ、ユーザーアカウント2を介してユーザー2によってアクセスすることはできない。一方、ポイント数が所定の閾値を超えていないと判定されると、CPU1308は、方法1600の操作1654においてユーザーアカウント2にトロフィーを授与しないことを決定する。
図17は、ディスプレイデバイス1204に表示されるゴーストを含むメタゲームの一実施形態を示すための図である。ユーザーアカウント2を介したユーザー2によるメタゲームのチャレンジ1及び2のプレイ中、仮想オブジェクト454は、ディスプレイ画面1204に表示される。仮想オブジェクト454は、ディスプレイデバイス1204上にGPU1310(図13)によってレンダリングされる。
ユーザーアカウント2を介したチャレンジのプレイを容易にするために、CPU1308は、ユーザーアカウント1を介してチャレンジ1のプレイを容易にするために実行されたメタゲームの同じ部分を実行する。例えば、CPU1308は、ユーザーアカウント1を介したレガシーゲームNのプレイを容易にするためにレガシーゲームNの第1の部分を実行し、ユーザーアカウント2を介したレガシーゲームNのプレイを容易にするために第1の部分を実行する。同様に、ユーザーアカウント2を介したチャレンジ2のプレイを容易にするために、CPU1308は、ユーザーアカウント1を介してチャレンジ2のプレイを容易にするために実行されたメタゲームの同じ部分を実行する。例えば、CPU1308は、ユーザーアカウント1を介したレガシーゲームNのプレイを容易にするためにレガシーゲームNの第2の部分を実行し、ユーザーアカウント2を介したレガシーゲームNのプレイを容易にするために第2の部分を実行する。別の例として、CPU1308は、ユーザーアカウント1を介したレガシーゲーム(N-1)のプレイを容易にするためにレガシーゲーム(N-1)の部分を実行し、ユーザーアカウント2を介したレガシーゲーム(N-1)のプレイを容易にするために部分を実行する。
メタゲームのチャレンジ1のプレイの開始時刻である時刻t1において、仮想オブジェクト454は、ディスプレイデバイス1204のディスプレイ画面で位置P1及び方向O1に表示される。また、時刻t1において、仮想ゴースト1704は仮想オブジェクト454の上部にオーバーレイされる。仮想ゴースト1704は、ディスプレイデバイス1204上にGPU1310によってレンダリングされる。仮想ゴースト1704は、時刻t1における仮想オブジェクト454のと同じ位置P1及び同じ方向O1にある。仮想ゴースト1704は、仮想オブジェクト454(図14C)の表現である。仮想ゴースト1704は、図17においては破線を使用して示されており、仮想オブジェクト454は、図17において実線を使用して示されている。
チャレンジ1のプレイ中、仮想オブジェクト454は、ユーザー2によってハンドヘルドコントローラ1212(図13)を介して、位置P1及び方向O1から位置Pb及び方向Obに移動される。仮想オブジェクト454が位置Pb及び方向Obにある時刻t2において、仮想ゴースト1704は、位置P2及び方向O2にある。位置Pbは位置P2とは異なり、方向Obは方向O2とは異なる。
その後、チャレンジ1のプレイ中、仮想オブジェクト454は、ユーザー2によってハンドヘルドコントローラ1212を介して、位置Pb及び方向Obから位置Pc及び方向Ocに移動される。仮想オブジェクト454が位置Pc及び方向Ocにある時刻t3において、仮想ゴースト1704は、位置P3及び方向O3にある。位置Pcは位置P3とは異なり、方向Ocは方向O3とは異なる。
さらに、チャレンジ1のプレイ中、仮想オブジェクト454は、ユーザー2によってハンドヘルドコントローラ1212を介して、位置Pc及び方向Ocから位置Pd及び方向Odに移動される。仮想オブジェクト454が位置Pd及び方向Odにある時刻t4において、仮想ゴースト1704は、位置P4及び方向O4にある。位置Pdは位置P4とは異なり、方向Odは方向O4とは異なる。
また、チャレンジ1のプレイ中、仮想オブジェクト454は、ユーザー2によってハンドヘルドコントローラ1212を介して、位置Pd及び方向Odから位置Pe及び方向Oeに移動される。仮想オブジェクト454が位置Pe及び方向O5にある時刻t5において、仮想ゴースト1704は、位置P5及び方向O5にある。位置Peは位置P5とは異なり、方向Oeは方向O5とは異なる。
仮想オブジェクト454の位置P1、Pb、Pc、Pd、及びPeならびに方向O1、Ob、Oc、Od、及びOeは、チャレンジ1のプレイを容易にするためのレガシーゲームNの一部の実行中に発生する。ユーザーアカウント2を介してアクセスされるとき、一部はチャレンジ1に相当する。また、仮想ゴースト1704の位置P1~P5及び方向O1~O5は、ユーザーアカウント1を介してアクセスされるときにレガシーゲームNの同じ部分の実行中に発生する。
ユーザーアカウント2を介したメタゲームのチャレンジ2のプレイの開始時刻である時刻taにおいて、仮想オブジェクト454は、ディスプレイデバイス1204のディスプレイ画面で位置P101及び方向O101に表示される。例えば、メタゲームにおいては、CPU1308は、仮想オブジェクト454を、位置Peから位置P101に、方向Oeから方向O101に移動させるようにGPU1310に指示する。時刻taにおいて、仮想ゴースト1704は仮想オブジェクト454の上部にオーバーレイされる。仮想ゴースト1704は、時刻taにおける仮想オブジェクト454と同じ位置P101及び同じ方向O101にある。
チャレンジ2のプレイ中、仮想オブジェクト454は、ユーザー2によってハンドヘルドコントローラ1212を介して、位置P101及び方向O101から位置Px2及び方向Ox2に移動される。仮想オブジェクト454が位置Px2及び方向Ox2にある時刻tbにおいて、仮想ゴースト1704は、位置P102及び方向O102にある。位置Px2は位置P102とは異なり、方向Ox2は方向O102とは異なる。
その後、チャレンジ2のプレイ中、仮想オブジェクト454は、ユーザー2によってハンドヘルドコントローラ1212を介して、位置Px2及び方向Ox2から位置Px3及び方向Ox3に移動される。仮想オブジェクト454が位置Px3及び方向Ox3にある時刻tcにおいて、仮想ゴースト1704は、位置P103及び方向O103にある。位置Px3は位置P103とは異なり、方向Ox3は方向O103とは異なる。
さらに、チャレンジ2のプレイ中、仮想オブジェクト454は、ユーザー2によってハンドヘルドコントローラ1212を介して、位置Px3及び方向Ox3から位置Px4及び方向Ox4に移動される。仮想オブジェクト454が位置Px4及び方向Ox4にある時刻tdにおいて、仮想ゴースト1704は、位置P104及び方向O104にある。位置Px4は位置P104とは異なり、方向Ox4は方向O104とは異なる。
また、チャレンジ2のプレイ中、仮想オブジェクト454は、ユーザー2によってハンドヘルドコントローラ1212を介して、位置Px4及び方向Ox4から位置Px5及び方向Ox5に移動される。仮想オブジェクト454が位置Px5及び方向Ox5にある時刻teにおいて、仮想ゴースト1704は、位置P105及び方向O105にある。位置Px5は位置P105とは異なり、方向Ox5は方向O105とは異なる。
仮想オブジェクト454の位置P101、Px2、Px3、Px4、及びPx5、ならびに方向O101、Ox2、Ox3、Ox4、及びOx5~O105は、チャレンジ2のプレイを容易にするために、レガシーゲームNの部分またはレガシーゲーム(N-1)の部分などのメタゲームの部分の実行中に発生する。メタゲームの部分は、ユーザーアカウント2を介してアクセスされる。また、仮想ゴースト1704の位置P101~P105及び方向O101~O105は、ユーザーアカウント1を介してアクセスされるときにメタゲームの同じ部分の実行中に発生する。
メタゲームのプレイ中、仮想ピラミッド411が、GPU1310によって、チャレンジ1及び2が実行される位置の周りにレンダリングされることに留意されたい。例えば、位置P1、Pb、Pc、Pd、及びPeは仮想ピラミッド411の上方に達成され、位置P101、Px2、Px3、Px4、及びPx5は、仮想ピラミッド411の下方に達成される。
図18Aは、ユーザー1によって操作されるディスプレイデバイス410に表示されるリーダーシップスコアボード1802の一実施形態の図である。リーダーシップスコアボード1802は、メタゲームのプレイ中にユーザーアカウント1を介してユーザー1によって蓄積されるポイント数を含む行1804を含む。リーダーシップスコアボード1802は、ユーザーアカウント1にログインした後、ユーザー1によってアクセスされる。
図18Bは、ユーザー2によって操作されるディスプレイデバイス1204に表示されるリーダーシップスコアボード1802の位置実施形態の図である。リーダーシップスコアボード1802は、行1806を含む。追加の行1806は、ユーザーID2及びメタゲームのプレイ中にユーザーアカウント2を介してユーザー2によって蓄積されたポイント数を含む。ユーザー1が、ユーザー2に比較してより多くのポイント数を蓄積しているため、ユーザーID1が行1804に表示されていることに留意されたい。行1804は、行1806と比較してより高いレベルにある。したがって、ユーザー1によって蓄積されたポイント数は、ユーザー2によって蓄積されたポイント数よりも上位に並べられるか、またはランクされる。
図19は、メタゲームのプレイ後にユーザー2がトロフィーを獲得したことを示す通知1902を示すために、ユーザー2によって操作されるディスプレイデバイス1204の一実施形態の図である。一例として、通知1902は、文または語句など、テキストによる説明を含む。別の例として、それらのユーザー2がユーザーアカウント2でトロフィーを獲得したことを示す通知は、一連の英数字または記号またはグラフィックスまたはそれらの組み合わせを含む。
一実施形態では、ユーザー2がトロフィーを獲得したことを示す通知は、報酬を含む。報酬は、ユーザーアカウント2を介してユーザー2によって獲得される。例えば、通知は、ユーザー2がメガゲームのゲームレベルにアクセスできるようになったことを示す。ゲームレベルは、トロフィーを獲得する前に、ユーザーアカウント2を介してユーザー2によってアクセスすることはできない。別の例として、通知は、ユーザーアカウント2を介してCPU1308(図13)によってユーザー2に授与される仮想ポイント数を含む。
図20は、本開示の実施態様に従って、クラウドビデオゲームをクライアントデバイスにストリーミングするために実行される様々な操作を概念的に示すフロー図である。クライアントデバイスの例は、ゲームコントローラ、スマートフォン、ゲームコンソール、及びコンピュータを含む。ゲームサーバ2002は、メタゲームまたはレガシーゲームNなどのビデオゲームを実行し、未処理の(非圧縮の)ビデオ2004及び音声2006を生成する。仮想環境452(図4A)、図14に示される仮想シーン、図17Aに示される仮想シーン、または図17Cに示される仮想シーンなどの仮想環境、及び仮想環境の提示中に出力される音声は、ビデオ2004及び音声2006の例である。ゲームサーバ2002は、サーバシステム404(図4A)の一例である。ビデオ2004及びオーディオ2006は、図示された図内の参照番号2008に示されているように、ストリーミング目的でキャプチャされ、符号化される。符号化は、ビデオ及びオーディオストリームの圧縮を提供して、帯域幅の使用量を低減し、ゲーム体験を最適化する。符号化形式の例は、H.265/MPEG-H、H.264/MPEG-4、H.263/MPEG-4、H.262/MPEG-2、WMV、VP6/7/8/9などを含む。
符号化された音声2010及び符号化されたビデオ2012は、コンピュータネットワーク408(図4A及び図13)の例であるコンピュータネットワーク2020を介した伝送の目的で、参照数字2014に示されるように、ネットワークパケットにさらにパケット化される。いくつかの実施形態では、ネットワークパケット符号化プロセスはまた、データ暗号化プロセスを採用し、それにより、強化されたデータセキュリティを提供する。図示した実施態様では、オーディオパケット2016及びビデオパケット2018は、コンピュータネットワーク2020を介した転送のために生成される。
ゲームサーバ2002はさらに、ネットワーク送信のためにやはりネットワークパケットにパケット化される触覚フィードバックデータ2022を生成する。図示された実装形態では、触覚フィードバックパケット2024は、コンピュータネットワーク2020を介した転送のために生成される。
未処理のビデオ及びオーディオ及び触覚フィードバックデータを生成する前述の操作は、データセンタのゲームサーバ2002上で実行され、ビデオ及びオーディオを符号化し、符号化されたオーディオ/ビデオフィードバック及び触覚フィードバックデータを転送のためにパケット化する操作は、データセンタのストリーミングエンジンによって実行される。示されるように、オーディオ、ビデオ、及び触覚フィードバックパケットは、コンピュータネットワーク2020を介して転送される。参照番号2026において示されているように、オーディオパケット2016、ビデオパケット2018、及び触覚フィードバックパケット2024は、クライアントデバイスによって、例えば、解析されるなど、分解され、クライアントデバイスにおいて、ネットワークパケットから符号化されたオーディオ2028、符号化されたビデオ2030、及び触覚フィードバックデータ2022を抽出する。データが暗号化されている場合、データは解読もされる。符号化されたオーディオ2028及び符号化されたビデオ2030は、次いで、参照番号2034に示されるように、クライアントデバイスによって復号され、クライアントデバイスのディスプレイデバイス2040上でレンダリングするためのクライアント側の未処理のオーディオデータ及びビデオデータを生成する。触覚フィードバックデータ2022は、クライアントデバイスのプロセッサによって処理されて、コントローラデバイス2024、または例えば、触覚効果をレンダリングすることができる、HMDなどの他のインターフェースデバイスで触覚フィードバック効果を生成する。コントローラデバイス2024は、クライアントデバイスのハンドヘルドコントローラの例である。触覚効果の一例は、コントローラデバイス2024のバイブレーションまたはランブルである。
ビデオゲームは、プレイヤーの入力に応答し、そのため、プレイヤー入力の伝送及び処理について上述した同様の手順フローが実行されるが、クライアントデバイスからサーバへの逆方向であることが理解されよう。図示されるように、コントローラデバイス2024、または例えば、ユーザー1の身体部分、ユーザー2の身体部分など別の入力構成要素、またはそれらの組み合わせが入力データ2048を生成する。入力データ2048は、コンピュータネットワーク2020を介したデータセンタへの転送のためにクライアントデバイスでパケット化される。入力データパケット2046は、データセンタ側で入力データ2048を定義するために、ゲームサーバ2002によってパケット解除及び再構築される。入力データ2048はゲームサーバ2002に供給され、ゲームサーバ2002は、入力データ2048を処理して、ビデオゲームのゲーム状態を生成する。
オーディオパケット2016、ビデオパケット2018、及び触覚フィードバックパケット2024のコンピュータネットワーク2020を介した転送中に、いくつかの実施形態では、サービス品質を保証するためにコンピュータネットワーク2020を介したデータの伝送が監視される。例えば、アップストリーム及びダウンストリームネットワーク帯域幅の両方を含む、コンピュータネットワーク2020のネットワーク状態は、参照番号2050によって示されるように監視され、ゲームストリーミングは、利用可能な帯域幅の変化に応じて調整される。すなわち、ネットワークパケットの符号化及び復号は、参照番号2052によって示されるように、現在のネットワーク状態に基づいて制御される。
図21は、クライアントデバイスのディスプレイデバイスとインターフェースするために互換性があり、コンピュータネットワーク2020(図20)を介して、サーバシステム404(図4A、図12、及び図13)など、ゲームホスティングシステムと通信することができるゲームコンソール2100の実施形態のブロック図である。ゲームコンソール2100は、ゲームコンソール402及びゲームコンソール1202(図13)の例である。ゲームコンソール2100は、データセンタ内に配置されているか、またはユーザー1または2などのプレイヤーが位置する場所に配置されている。いくつかの実施形態では、ゲームコンソール2100を使用して、HMD上に表示されるゲームを実行する。ゲームコンソール2100は、ゲームコンソール2100に接続可能な様々な周辺機器を具備する。ゲームコンソール2100は、セルプロセッサ2128、ダイナミックランダムアクセスメモリ(XDRAM)ユニット2126、専用ビデオランダムアクセスメモリ(VRAM)ユニット2132を備えたリアリティシンセサイザグラフィックプロセッサユニット2130、及び入出力(I/O)ブリッジ2134を有する。ゲームコンソール2100はまた、I/Oブリッジ2134を通してアクセス可能な、ディスク2140aから読み出すためのBlu Ray(登録商標)ディスクリードオンリメモリ(BD-ROM)光ディスクリーダ2140と、取り外し可能スロットインハードディスクドライブ(HDD)2136とを有する。任意選択で、ゲームコンソール2100はまた、コンパクトフラッシュ(登録商標)メモリカード、及びメモリStick(登録商標)メモリカードなどを読み出すためのメモリカードリーダ2138を含み、メモリカードリーダ2138は、I/Oブリッジ2134を介して同様にアクセス可能である。I/Oブリッジ2134はまた、USB2.0ポート2124、ギガビットイーサネット(登録商標)ポート2122、IEEE802.11b/gワイヤレスネットワーク(Wi-Fi(登録商標))ポート2120、及びBluetooth(登録商標)接続をサポートできるBluetooth(登録商標)ワイヤレスリンクポート2118に接続する。
操作中、I/Oブリッジ2134は、ゲームコントローラからの、及びHMD2105からのデータを含む、すべての無線データ、USBデータ、及びイーサネット(登録商標)データを取り扱う。例えば、プレイヤーが、ゲームコードGCNなどのゲームコードの一部の実行によって生成されたビデオゲームをプレイしているとき、I/Oブリッジ2134は、ゲームコントローラ2042(図20)または2103から、及び/またはHMD2105から、Bluetooth(登録商標)リンクを介して本明細書で説明する入力データまたは入力信号を受信し、入力データをセルプロセッサ2128に向け、セルプロセッサ2128は、それに応じて、ビデオゲームの現在の状態を更新する。例として、HMD2105内のカメラは、プレイヤーのジェスチャをキャプチャして、ジェスチャを表す画像を生成する。ゲームコントローラ2042は、ハンドヘルドコントローラ406または1212(図13)の例である。
無線ポート、USBポート、及びイーサネット(登録商標)ポートは、ゲームコントローラ2042と2103、及びHMD2105に加えて、例えば、リモートコントロール2104、キーボード2106、マウス2108、例えば、Sony Playstation Portable(登録商標)エンターテインメントデバイスなどのポータブルエンターテインメントデバイス2110、例えば、EyeToy(登録商標)ビデオカメラ2112などのビデオカメラ、マイクロフォンヘッドセット2114、及びマイクロフォン2115などの他の周辺デバイスへの接続性も提供する。ポータブルエンターテインメントデバイス2110は、ゲームコントローラの例である。いくつかの実施形態では、そのような周辺機器は、無線でゲームコンソール2100に接続され、例えば、ポータブルエンターテインメントデバイス2110は、Wi-Fi(登録商標)アドホック接続を介して通信し、一方、マイクロフォンヘッドセット2114は、Bluetoothリンクを介して通信する。
これらのインターフェースの提供は、ゲームコンソール2100が、デジタルビデオレコーダ(DVR)、セットトップボックス、デジタルカメラ、ポータブルメディアプレイヤー、ボイスオーバーインターネットプロトコル(IP)電話、モバイル電話、プリンタ、スキャナなどの他の周辺機器とも互換性がある可能性があることを意味する。
さらに、レガシーメモリカードリーダ2116は、USBポート2124を介してゲームコンソール2100に接続され、ゲームコンソール2100によって使用される種類のメモリカード2148の読み取りを可能にする。ゲームコントローラ2042と2103、及びHMD2105は、Bluetooth(登録商標)リンク2118を介してゲームコンソール2100と無線で通信するように動作可能であるか、またはUSBポート2124に接続されるように動作可能であり、それによってゲームコントローラ2042と2103、及びHMD2105の電池を充電するための電力を受け取る。いくつかの実施形態では、ゲームコントローラ2042と2103の各々、及びHMD2105は、メモリ、プロセッサ、メモリカードリーダ、例えば、フラッシュメモリなどの固定メモリ、例えば、照光式球形セクション、発光ダイオード(LED)、または赤外線ライト等、などの発光体、超音波通信用のマイクロフォン及びスピーカ、音響チャンバ、デジタルカメラ、内部クロック、例えば、ゲームコンソール2100に面する球形セクションなどの認識可能な形状、及び、例えば、Bluetooth(登録商標)、Wi-Fi(登録商標)などのプロトコルを使用する無線デバイスを含む。
ゲームコントローラ2042は、ユーザー1または2などのプレイヤーが両手で使用するように設計されたコントローラであり、ゲームコントローラ2103は、アタッチメントを備えた片手用コントローラである。HMD2105は、頭の上部またはプレイヤーの目の前に取り付けるように設計されている。1つ以上のアナログジョイスティック及び従来の制御ボタンに加えて、各ゲームコントローラ2042及び2103は、3次元位置決定の影響を受けやすい。同様に、HMD2105は、3次元位置決定の影響を受けやすい。その結果として、いくつかの実施形態では、ゲームコントローラ2042と2103、及びHMD2105を使用するプレイヤーによるジェスチャ及び動きは、従来のボタンまたはジョイスティックコマンドに加えてまたはその代わりに、ビデオゲームのゲームコードに対する入力として変換される。任意選択で、例えば、Playstation(登録商標)ポータブルデバイスなどの他の無線で対応する周辺デバイスはコントローラとして使用される。Playstation(登録商標)ポータブルデバイスの場合、追加のゲームまたは制御情報、例えば、制御命令または生存数などが、デバイスのディスプレイ画面上に提供されている。いくつかの実施形態では、例えば、ダンスマット(図示せず)、ライトガン(図示せず)、ステアリングホイール及びペダル(図示せず)、特注のコントローラなどの他の代替的または補足的な制御デバイスが使用される。特注のコントローラの例は、高速回答クイズゲーム用の単一の、またはいくつかの大きなボタン(同様に図示せず)を含む。
リモートコントロール2104も、Bluetooth(登録商標)リンク2118を介してゲームコンソール2100と無線で通信するように動作可能である。リモートコントロール2104は、Blu Ray(登録商標)ディスクBD-ROMリーダー2140の操作に適した制御、及びディスクコンテンツのナビゲーションに適した制御を含む。
Blu Ray(登録商標)ディスクBD-ROMリーダー2140は、従来の事前記録及び記録可能なCD、及びいわゆるスーパーオーディオCDに加えて、ゲームコンソール2100と互換性のあるCD-ROMを読み取るように動作可能である。Blu Ray(登録商標)ディスクBD-ROMリーダー2140はまた、従来の事前記録及び記録可能なDVDに加えて、ゲームコンソール2100と互換性のあるデジタルビデオディスク-ROM(DVD-ROM)を読み取るように動作可能である。Blu Ray(登録商標)ディスクBD-ROMリーダー2140はさらに、ゲームコンソール2100と互換性のあるBD-ROM、ならびに、従来の事前記録された、及び記録可能なBlu-Ray(登録商標)ディスクを読み取るように動作可能である。
ゲームコンソール2100は、オーディオコネクタ2150及びビデオコネクタ2152を介して、例えばディスプレイ画面2144及び1つ以上のラウドスピーカ2146を有するモニタまたはテレビなどのディスプレイ及び音声出力デバイス2142に、リアリティシンセサイザーグラフィックスユニットグラフィックスユニット2130を介して生成または復号されたオーディオ及びビデオを供給するように動作可能であるか、またはBluetooth(登録商標)無線リンクポート2118を介してHMD2105のディスプレイデバイスにオーディオまたはビデオを供給するように動作可能である。オーディオコネクタ2150は、様々な実施形態において、従来のアナログ及びデジタル出力を含み、他方、ビデオコネクタ2152は、コンポーネントビデオ、Sビデオ、コンポジットビデオ、及び1つ以上の高解像度マルチメディアインターフェース(HDMI(登録商標))出力を様々に含む。結果として、ビデオ出力は、位相反転線(PAL)または全国テレビジョン方式委員会(NTSC)などの形式、または、2220p、1080i、もしくは1080pの高解像度であってよい。例えば、生成、復号などのオーディオ処理は、セルプロセッサ2108によって実行される。ゲームコンソール2100のオペレーティングシステムは、Dolby(登録商標)5.1サラウンド音声、Dolby(登録商標)シアターサラウンド(DTS)、及びBlu-Ray(登録商標)ディスクからの7.1サラウンド音声の復号をサポートしている。ディスプレイ及び音声出力デバイス2142は、ディスプレイデバイス410または1204(図4A及び図13)の例である。
いくつかの実施形態では、例えば、ビデオカメラ2112などのビデオカメラは、単一の電荷結合素子(CCD)、LEDインジケータ、及びハードウェアベースのリアルタイムデータ圧縮及び符号化装置を含み、これにより、圧縮されたビデオデータは、ゲームコンソール2100による復号のために、画像内ベースのMPEG(motion picture expert group)規格などの適切な形式で送信される。ビデオカメラ2112のLEDインジケータは例えば、不利な照明条件などを示すために、ゲームコンソール2100からの適切な制御データに応えて点灯するように配置される。ビデオカメラ2112のいくつかの実施形態は、USB、Bluetooth(登録商標)、またはWi-Fi(登録商標)通信ポートを介してゲームコンソール2100に接続する。ビデオカメラの様々な実施形態は、1つ以上の関連するマイクロフォンを含み、オーディオデータを送信することもできる。ビデオカメラのいくつかの実施形態では、CCDは、高解像度ビデオキャプチャに適した解像度を有する。使用時、ビデオカメラによってキャプチャされた画像は、ゲーム内に組み込まれる、またはゲーム制御入力として解釈される。別の実施形態では、ビデオカメラは、赤外線光を検出するのに適した赤外線カメラである。
様々な実施形態において、例えば、ビデオカメラまたはリモートコントロールなどの周辺デバイスとのゲームコンソール2100の通信ポートの1つを介したデータ通信を成功させるために、デバイスドライバなどの適切なソフトウェアが提供されている。
いくつかの実施形態では、ゲームコンソール2100及びゲームコントローラ2042または2103を含む上述のシステムデバイスは、HMD2105がビデオゲームのインタラクティブセッションのビデオを表示及びキャプチャすることを可能にする。システムデバイスは、ビデオゲームのインタラクティブセッションを開始する。インタラクティブセッションは、ビデオゲームのプレイヤーと他のプレイヤーとの間の対話性を定義する。システムデバイスはさらに、プレイヤーによって操作されるゲームコントローラ2042もしくは2103、及び/またはHMD2105の初期の位置及び方向を決定する。ゲームコントール2100は、プレイヤーとビデオゲームとの間の対話性に基づいてゲームの現在の状態を決定する。システムデバイスは、ビデオゲームとのプレイヤーのインタラクティブセッション中、ゲームコントローラ2042もしくは2103及び/またはHMD2105の位置及び方向を追跡する。システムデバイスは、レガシーゲームNの現在の状態、ならびにハンドヘルドコントローラ(HHC)及び/またはHMD2105の追跡された位置及び向きに基づいて、インタラクティブセッションの観客ビデオストリームを生成する。HHCの例は、コントローラ2042及びコントローラ2103を含む。いくつかの実施形態では、HHCは、観客ビデオストリームをHHCのディスプレイ画面上にレンダリングする。様々な実施形態では、HMD2105は、観客ビデオストリームをHMD2105のディスプレイ画面上にレンダリングする。
図22を参照すると、HMD2202の構成要素を示す図が示されている。HMD2202は、HMD2105(図21)の例である。HMD2202は、プログラム命令を実行するためのプロセッサ2200を含む。メモリデバイス2202は、格納目的のために提供されている。メモリデバイス2202の例は、揮発性メモリ、不揮発性メモリ、またはそれらの組み合わせを含む。例えば、プレイヤーが見る保存データなどから生成された画像フレームの表示などの視覚的インターフェースを提供するディスプレイデバイス2204が含まれている。HMD2202の電源として、電池2206が提供されている。動き検出モジュール2208は、磁力計2210、加速度計2212、及びジャイロスコープ2214などの様々な種類のモーションセンシティブハードウェアのいずれかを含む。
加速度計は、加速度と重力によって引き起こされる反力を測定するためのデバイスである。単軸及び多軸モデルは、異なる方向における加速度の大きさ及び方向を検出するために利用可能である。加速度計は、傾き、バイブレーション、衝撃を感知するために使用される。一実施形態では、3つの加速度計2212は、重力の方向を提供するために使用され、重力の方向は、2つの角度、例えば、世界空間ピッチ及び世界空間ロールなどの絶対基準を与える。
磁力計は、HMD2202の近傍の磁場の強度と方向を測定する。いくつかの実施形態では、3つの磁力計2210は、HMD2202内で使用され、世界空間ヨー角度の絶対基準を保証する。様々な実施形態において、磁力計は、±80マイクロテスラである地球磁場にまたがるように設計されている。磁力計は金属により影響を受け、実際のヨーと単調なヨー測定値を提供する。いくつかの実施形態では、磁場は、実世界の環境において金属のために歪められ、これは、ヨー測定において歪みを引き起こす。様々な実施形態において、この歪みは、例えば、ジャイロスコープ2214、カメラ2216などの他のセンサからの情報を使用して較正される。一実施形態では、加速度計2212は、HMD2202の傾斜及び方位角を取得するために磁力計2210とともに使用される。
ジャイロスコープは、角運動量の原理に基づいて方向を測定または維持するためのデバイスである。一実施形態では、ジャイロスコープ2214の代わりに、3つのジャイロスコープが、慣性感知に基づいて、それぞれの軸(x、y、及びz)を横切る動きに関する情報を提供する。ジャイロスコープは、高速回転の検出に役立つ。しかしながら、ジャイロスコープは、いくつかの実施形態では、絶対基準が存在しないと時間の経過とともにドリフトする。これにより、ジャイロスコープは周期的にリセットされ、これは、オブジェクトの視覚的な追跡、加速度計、磁力計などに基づいた位置/方向の判定など、他の利用可能な情報を使用して実行され得る。
カメラ2216は、例えば、部屋、キャビン、自然環境など、プレイヤーを取り巻く実世界環境の画像及び画像ストリームをキャプチャするために提供される。様々な実施形態において、HMD2202には、例えば、プレイヤーがHMD2202などのディスプレイを見ているときに、プレイヤーから離れる方向に向けられた後ろ向きのカメラ、及び例えば、プレイヤーがHMD2202のディスプレイを見ているときにプレイヤーに向けられる、正面向きのカメラを含む複数のカメラが含まれている。さらに、いくつかの実施形態では、実世界環境内のオブジェクトの深度情報を感知するための深度カメラ2218がHMD2202に含まれている。
HMD2202は、オーディオ出力を提供するためのスピーカ2220を含む。また、いくつかの実施形態では、周囲環境からの音声を含む実世界環境からのオーディオ、及びプレイヤーによってなされた発話などをキャプチャするために、マイクロフォン2222が含まれている。HMD2202は、触覚フィードバックをプレイヤーに提供するための、例えば、バイブレーションデバイスなどの触覚フィードバックモジュール2224を含む。一実施形態では、触覚フィードバックモジュール2224は、HMD2202の動き及び/またはバイブレーションを起こして、プレイヤーに触覚フィードバックを提供することができる。
LED2226は、HMD2202のステータスの視覚インジケータとして提供される。例えば、LEDは、電池レベル、電源オンなどを示してよい。HMD2202がメモリカードからの情報を読み出し、メモリカードに情報を書き込むことを可能にするために、カードリーダ2228が提供される。周辺デバイスの接続、または例えば、他のポータブルデバイス、コンピュータなどの他のデバイスへの接続を可能にするためのインターフェースの一例としてUSBインターフェース2230が含まれている。HMD2202の様々な実施形態では、様々な種類のインターフェースのいずれかが、HMD2202のより高い接続性を可能にするために含まれてよい。
Wi-Fi(登録商標)モジュール2232は、無線ネットワーク技術を介したインターネットへの接続を可能にするために含まれている。また、HMD2202は、他のデバイスへの無線接続を可能にするために、Bluetooth(登録商標)モジュール2234を含む。いくつかの実施形態では、他のデバイスへの接続のために通信リンク2236も含まれている。一実施形態では、通信リンク2236は、無線通信のために赤外線送信を利用する。他の実施形態では、通信リンク2236は、他のデバイスとの通信のための様々な無線または有線伝送プロトコルのいずれかを利用する。
入力ボタン/センサ2238は、プレイヤーに入力インターフェースを提供するために含まれている。ボタン、タッチパッド、ジョイスティック、トラックボールなど、様々な種類の入力インターフェースが含まれている。様々な実施形態において、超音波通信モジュール2240が、超音波技術を介して他のデバイスとの通信を容易にするためにHMD2202に含まれている。
生体センサ2242は、プレイヤーからの生理学的データの検出を可能にするために含まれている。一実施形態では、生体センサ2242は、プレイヤーの皮膚を通して、プレイヤーの生体電気信号を検出するための1つ以上の乾式電極を含む。
HMD2202の前述の構成要素は、HMD802内に含まれ得る単なる例示的な構成要素として記載した。様々な実施形態において、HMD2202は、様々な上述の構成要素のいくつかを含むか、または含まない。
図23は、情報サービスプロバイダ(INSP)アーキテクチャの実施形態を示している。INSP2302は、地理的に分散し、例えば、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、またはそれらの組み合わせなどのコンピュータネットワーク2306を介して接続されたプレイヤーに多数の情報サービスを提供する。コンピュータネットワーク2306は、コンピュータネットワーク2020(図20)の例である。WANの例はインターネットを含み、LANの例はイントラネットを含む。ユーザー1は、クライアントデバイス2320-1を操作し、ユーザー2は、別のクライアントデバイス2320-2を操作し、ユーザー3は、さらに別のクライアントデバイス2320-3を操作する。
いくつかの実施形態では、各クライアントデバイス2320-1、2320-2、及び2320-3は、中央処理装置(CPU)、ディスプレイ、及び入力/出力(I/O)インターフェースを含む。各クライアントデバイス2320-1、2320-2、及び2320-3の例は、パーソナルコンピュータ(PC)、携帯電話、ネットブック、タブレット、ゲームシステム、パーソナルデジタルアシスタント(PDA)、ゲームコンソール2100及びディスプレイデバイス、HMD2202(図22)、ゲームコンソール2100及びHMD2202、デスクトップコンピュータ、ラップトップコンピュータ、スマートテレビなどを含む。いくつかの実施形態では、INSP2302は、クライアントデバイスのタイプを認識し、使用する通信方法を調整する。
いくつかの実施形態では、INSP2302は、株価更新などの1種類のサービス、または放送メディア、ニュース、スポーツ、ゲームなどの様々なサービスを提供する。さらに、各INSPによって提供されるサービスは動的である、すなわち、任意の時点でサービスを追加する、または取り除くことができる。したがって、特定の個人に特定のタイプのサービスを提供するINSPは、時間の経過とともに変化することがある。例えば、クライアントデバイス2320-1がユーザー1の地元にある間、クライアントデバイス2320-1は、クライアントデバイス2320-1に近接するINSPによってサービスを提供され、クライアントデバイス2320-1は、ユーザー1が別の都市に移動すると、異なるINSPによってサービスを提供される。地元のINSPは、要求された情報及びデータを新しいINSPに転送するため、情報は新しい都市へクライアントデバイス2320-1に「付いていき」、データはクライアントデバイス2320-1により近く、よりアクセスしやすくなる。様々な実施形態では、クライアントデバイス2320-1のために情報を管理するマスタINSPと、マスタINSPからの制御下でクライアントデバイス2320-1と直接的にインターフェースをとるサーバINSPとの間にマスタ-サーバ関係が確立される。いくつかの実施形態では、クライアントデバイス2320-1が世界中を移動するにつれ、データはあるISPから別のISPに転送され、クライアントデバイス2320-1にサービスを提供するためにより良い位置にあるINSPをこれらのサービスを送達するクライアントデバイスにする。
INSP2302は、コンピュータネットワーク2306を介して顧客にコンピュータベースのサービスを提供するアプリケーションサービスプロバイダ(ASP)2308を含む。ASPモデルを使用して提供されるソフトウェアは、オンデマンドソフトウェアまたはサービスとしてのソフトウエア(SaaS)とも称されることもある。例えばカスタマ関係管理など、コンピュータベースのサービスにアクセスを提供する簡単な形は、例えばハイパーテキスト転送プロトコル(HTTP)など、標準プロトコルを使用することによる。アプリケーションソフトウェアは、ベンダーのサーバ上にあり、ベンダー、及び/またはシンクライアントなどの他のリモートインターフェースによって提供されている専用クライアントソフトウェアによって、ハイパーテキストマークアップ言語(HTML)などを使用したウェブブラウザを介して各クライアントデバイス2320-1、2320-2、及び2320-3によってアクセスされる。
広い地理的エリアで提供されるサービスは、多くの場合、クラウドコンピューティングを使用する。クラウドコンピューティングは、動的にスケーラブルで、多くの場合、仮想化されたリソースがコンピュータネットワーク2306を介してサービスとして提供されるコンピューティングのスタイルである。ユーザー1から3は、それらをサポートする「クラウド」の技術基盤の専門家である必要はない。いくつかの実施形態では、クラウドコンピューティングは、サービスとしてのインフラストラクチャ(IaaS)、サービスとしてのプラットフォーム(PaaS)、及びサービスとしてのソフトウエア(SaaS)などの異なるサービスに分けられる。クラウドコンピューティングサービスは、多くの場合、ウェブブラウザからアクセスされる一般的なビジネスアプリケーションをオンラインで提供し、一方で、ソフトウェア及びデータはサーバに格納されている。クラウドという用語は、コンピュータネットワーク2306が、どのようにコンピュータネットワーク図に描かれているか、かつ、秘匿する複雑なインフラストラクチャの抽象化であるかに基づいて、例えば、サーバ、ストレージ、及びロジックなどを使用して、コンピュータネットワーク2306のメタファーとして使用される。
さらに、INSP2302は、本明細書ではゲーム処理サーバとも呼ばれる、シングルプレイヤー及びマルチプレイヤーのビデオゲームをプレイするためにクライアントデバイス2320-1、2320-2、及び2320-3によって使用されるゲーム処理プロバイダ(GPP)2310を含む。コンピュータネットワーク2306上でプレイされる大部分のビデオゲームは、ゲームサーバへの接続を介して動作する。通常、ゲームは、クライアントデバイス2320-1、2320-2、及び2320-3からデータを収集し、他のユーザーによって操作される他のクライアントにデータを分配する専用サーバのアプリケーションを使用する。これはピアツーピア装置よりも効率的で効果的であるが、別のサーバが、サーバアプリケーションをホストするために使用される。いくつかの実施形態では、GPP2310は、集中型のGPP2310にさらに頼ることなく情報を交換するクライアントデバイス2320-1、2320-2、及び2320-3の間で通信を確立する。
専用のGPPは、クライアントから独立して実行されるサーバである。このようなサーバは、通常、データセンタに配置された専用ハードウェア上で実行し、より多くの帯域幅及び専用処理能力を提供する。専用サーバは、ほとんどのPCベースのマルチプレイヤーゲームのためのゲームサーバをホストする方法である。大規模なマルチプレイヤーオンラインゲームは、通常、ゲームタイトルを所有しているソフトウェア会社がホストする専用サーバで実行され、専用サーバがコンテンツを制御及び更新することを可能にする。
ブロードキャスト処理サーバ(BPS)2312は、本明細書ではブロードキャスト処理プロバイダとも呼ばれ、オーディオまたはビデオ信号を視聴者に配信する。非常に狭い範囲の視聴者へのブロードキャストは、ナローキャスティングと呼ばれることがある。ブロードキャスト配信の最後の区間は、信号がクライアントデバイス2320-1、2320-2、及び2320-3にどのように到達するかであり、いくつかの実施形態では、信号は、ラジオ局もしくはテレビ局と同様に無線でアンテナ及び受信機に、またはケーブルテレビもしくはケーブルラジオもしくは局を介した「無線ケーブル」を通して配信される。コンピュータネットワーク2306はまた、様々な実施形態において、ラジオ信号またはテレビ信号のいずれかをクライアントデバイス2320-1、2320-2、及び2320-3に持ち込み、特に、マルチキャスティングで信号または帯域幅を共有することを可能にする。歴史的に、ブロードキャストは、いくつかの実施形態では、例えば全国放送、地域放送など、地理的領域によって区切られている。しかしながら、高速インターネットの急増により、コンテンツは世界のほぼすべての国に到達できるため、ブロードキャストは地域によって定義されていない。
ストレージサービスプロバイダ(SSP)2314は、コンピュータストレージスペースと関連管理サービスを提供する。SSP2314はまた、周期的なバックアップとアーカイブも提供する。サービスとしてのストレージを提供することによって、クライアントデバイス2320-1、2320-2、及び2320-3は、ストレージがサービスとして使用されていないときと比較してより多くのストレージを使用する。別の重要な利点は、SSP2314がバックアップサービスを含んでおり、クライアントデバイス2320-1、2320-2、及び2320-3は、ハードドライブが故障した場合もデータを失わない点である。さらに、いくつかの実施形態では、複数のSSPは、クライアントデバイス2320-1、2320-2、及び2320-3から受信したデータの完全なコピーまたは部分的なコピーを有し、クライアントデバイス2320-1、2320-2、及び2320-3がどこに位置しているのか、またはクライアントのタイプに関係なく、クライアントデバイス2320-1、2320-2、及び2320-3が効率的にデータにアクセスすることを可能にする。例えば、プレイヤーは、自宅のコンピュータを介して、及びプレイヤーの移動中は携帯電話を介して個人ファイルにアクセスする。
通信プロバイダ2316は、クライアントデバイス2320-1、2320-2、及び2320-3への接続を提供する。通信プロバイダ2316の1つの種類は、コンピュータネットワーク2306へのアクセスを提供するインターネットサービスプロバイダ(ISP)である。ISPは、ダイヤルアップ、デジタル加入者線(DSL)、ケーブルモデム、ファイバ、無線または専用の高速相互接続などのインターネットプロトコルデータグラムを送達するために適切なデータ転送技術を使用して、クライアントデバイス2320-1、2320-2、及び2320-3を接続する。通信プロバイダ2316はまた、いくつかの実施形態では、電子メール、インスタントメッセージング、及びショートメッセージサービス(SMS)テキストメッセージなどのメッセージングサービスを提供する。別のタイプの通信プロバイダは、コンピュータネットワーク2306への直接バックボーンアクセスを提供することによって、帯域幅またはネットワークアクセスを販売するネットワークサービスプロバイダ(NSP)である。ネットワークサービスプロバイダの例は、電気通信会社、データキャリア、ワイヤレス通信プロバイダ、インターネットサービスプロバイダ、高速インターネットアクセスを提供するケーブルテレビ事業者などを含む。
データ交換2318は、INSP2302内のいくつかのモジュールを相互接続し、コンピュータネットワーク2306を介してこれらのモジュールをクライアントデバイス2320-1、2320-2、及び2320-3に接続する。データ交換2318は、様々な実施形態において、INSP2302のすべてのモジュールが近接している小さな領域をカバーするか、または異なるモジュールが地理的に分散しているときに、広い地理的領域をカバーする。例えば、データ交換2302は、データセンタのキャビネット内の高速ギガビットイーサネット(登録商標)または大陸間仮想LANを含む。
いくつかの実施形態では、サーバシステム404(図4A及び図13)とクライアントデバイス2320-1~2320-3との間の通信は、無線技術を使用して促進され得る。そのような技術は、例えば、5G無線通信技術を含み得る。
一実施形態では、本明細書で説明するレガシーゲームNまたはメタゲームなどのビデオゲームは、ゲーム機、パーソナルコンピュータのいずれかでローカルに実行されるか、またはサーバ上で実行される。いくつかの場合、ビデオゲームは、データセンタの1つ以上のサーバによって実行される。ビデオゲームが実行されるとき、ビデオゲームのいくつかのインスタンスは、ビデオゲームのシミュレーションであり得る。例えば、ビデオゲームは、ビデオゲームのシミュレーションを生成する環境またはサーバによって実行され得る。いくつかの実施形態では、シミュレーションは、ビデオゲームのインスタンスである。他の実施形態では、シミュレーションは、エミュレータによって生成され得る。いずれの場合も、ビデオゲームがシミュレーションとして表される場合、そのシミュレーションは、ユーザー入力によってインタラクティブにストリーミング、実行、及び/または制御できるインタラクティブコンテンツをレンダリングするために実行されることが可能である。
様々な実施形態において、本明細書に記載されるいくつかの実施形態の1つ以上の特徴は、本明細書に記載される残りの実施形態の1つ以上の1つ以上の特徴と組み合わされることに留意されたい。
本開示に記載の実施形態は、ハンドヘルドデバイス、マイクロプロセッサシステム、マイクロプロセッサベースまたはプログラム可能な一般消費者向け電気製品、小型コンピュータ、及びメインフレームコンピュータなどを含む様々なコンピュータシステム構成で実施され得る。一実施態様では、本開示に記載の実施形態は、有線または無線ネットワークを通してリンクされたリモート処理デバイスによってタスクが行われる分散コンピューティング環境で実践される。
前述の実施形態を念頭に置いて、一実施態様では、本開示に記載の実施形態は、コンピュータシステムに記憶されたデータを伴う様々なコンピュータ実施操作を採用することを理解されたい。これらの操作は、物理量の物理的操作を要する操作である。本開示に記載の実施形態の一部を形成する、本明細書で説明される操作のいずれも、有用な機械操作である。本開示に記載のいくつかの実施形態はまた、これら操作を実行するためのデバイスまたは装置に関する。装置は、必要な目的のために特別に構築される、または装置は、コンピュータに記憶されたコンピュータプログラムにより選択的に起動または構成される汎用コンピュータである。具体的には、一実施形態において、様々な汎用マシンは、本明細書の教示に従って書かれたコンピュータプログラムと共に使用される、または、必要な操作を行うためにさらに特化した装置を構築するほうがより好都合な場合がある。
実施態様においては、本開示に記載されているいくつかの実施形態は、コンピュータ可読媒体上のコンピュータ可読コードとして具体化される。コンピュータ可読媒体は、データを格納することができる任意のデータ格納装置であり、これは、その後、コンピュータシステムによって読み取られることができる。コンピュータ可読媒体の例には、ハードドライブ、ネットワーク接続ストレージ(NAS)、ROM、RAM、CD-ROM、CD-recordable(CD-R)、CD-recordable(CD-RW))、磁気テープ、光学データ記憶装置、非光学データ記憶装置などが含まれる。一例として、コンピュータ可読媒体は、ネットワーク結合コンピュータシステム上に分散されたコンピュータ可読有形媒体を含み、コンピュータ可読コードが分散方式で格納及び実行されるようになっている。
さらに、上述の実施形態のいくつかは、ゲーム環境に関して説明されているが、いくつかの実施形態では、ゲームの代わりに、例えば、ビデオ会議環境などの他の環境が使用される。
方法操作が特定の順序で説明されたが、他のハウスキーピング操作が操作の間に実行されてもよく、または操作が、わずかに異なる時刻に生じるように調整されてもよく、もしくはオーバーレイ操作の処理が所望の手法で実行される限り、処理に関連する様々な間隔で処理操作の発生を可能にするシステム内に分散されてもよいことが理解されるべきである。
本開示に記載の前述の実施形態は、理解を明確にするためにある程度詳細に説明したが、添付の特許請求の範囲内で特定の変更及び修正を実施できることは明らかであろう。したがって、本実施形態は、限定ではなく例示としてみなされるべきであり、本実施形態は、本明細書に記載される詳細に限定されるべきではなく、添付の特許請求の範囲及び均等物の中で変更されてもよい。

Claims (20)

  1. メタゲームを生成するための方法であって、
    第1のユーザーアカウントを介して、1つ以上のレガシーゲームのプレイ中に第1のチャレンジに対する第1のユーザー入力を受信することであって、前記第1のチャレンジが、前記1つ以上のレガシーゲームの第1の複数の基本ブロックから作成される、前記受信することと、
    前記第1のチャレンジの少なくとも一部を記録することと、
    前記第1のユーザーアカウントを介して、前記1つ以上のレガシーゲームの前記プレイ中に第2のチャレンジに対する第2のユーザー入力を受信することであって、前記第2のチャレンジが、前記1つ以上のレガシーゲームの第2の複数の基本ブロックから作成され、前記第1の複数の基本ブロックが、前記1つ以上のレガシーゲームの第1の複数の命令からコンパイルされ、前記第2の複数の基本ブロックが、前記1つ以上のレガシーゲームの第2の複数の命令からコンパイルされて、前記1つ以上のレガシーゲームを更新されたマシンでプレイすることを可能にする、前記受信することと、
    前記第2のチャレンジの少なくとも一部を記録することと、
    前記メタゲームの作成を要求するための第3のユーザー入力が前記第1のユーザーアカウントを介して受信されたかどうかを判定することと、
    前記第3のユーザー入力が受信されたと判定すると、前記第1及び前記第2のチャレンジから前記メタゲームを生成することと
    を含む、前記方法。
  2. 前記第1のユーザーアカウントを介して、前記第1のチャレンジ及び前記第2のチャレンジの実行のシーケンスを選択するオプションを提供することと、
    前記第1のユーザーアカウントを介して前記シーケンスを受信することと、
    前記シーケンスに従って、前記第1の複数の基本ブロック、及び前記第2の複数の基本ブロックをスティッチングすることと、
    第2のユーザーアカウントを介して、前記メタゲームの実行を要求するユーザー入力を受信することと、
    前記第2のユーザーアカウントを介して受信された前記ユーザー入力に応えて、前記第1及び前記第2の複数の基本ブロックを前記シーケンスで実行することと
    をさらに含む、請求項1に記載の方法。
  3. 前記第1のユーザーアカウントを介して、前記メタゲームのリーダーシップスコアボードを作成するための第4のユーザー入力を受信することと、
    前記第4のユーザー入力に応えてリーダーシップスコアボードを作成することであって、前記リーダーシップスコアボードが、前記第1のチャレンジのプレイ中に前記第1のユーザーアカウントを介して蓄積された第1のポイント数と、前記第2のチャレンジのプレイ中に前記第1のユーザーアカウントを介して蓄積された第2のポイント数の合計を含む、前記作成することと、
    前記合計を前記リーダーシップスコアボードに掲載することと、
    前記メタゲームのプレイ中に第2のユーザーアカウントに蓄積されたポイント数を受信することと、
    前記合計が、前記第2のユーザーアカウントに蓄積された前記ポイント数を超えているかどうかを判定することと、
    前記合計及び前記第2のユーザーアカウントに蓄積された前記ポイント数の表示の順序を決定することと
    をさらに含む、請求項1に記載の方法。
  4. 前記メタゲームにトロフィーを付加することと、
    第2のユーザーアカウントを介して前記メタゲームをプレイする要求を受信することと、
    前記第2のユーザーアカウントを介した前記メタゲームのプレイ中に蓄積されたポイント数が所定の制限を超えているかどうかを判定することと、
    前記メタゲームの前記プレイ中に蓄積された前記ポイント数が前記所定の制限を超えていると判定したことに応えて、前記第2のユーザーアカウントに前記トロフィーを授与することと
    をさらに含む、請求項1に記載の方法。
  5. 前記メタゲームをプレイするための第1のユーザー入力が、第2のユーザーアカウントを介して受信されたと判定することと、
    前記メタゲームの仮想オブジェクトにゴーストを付加するための第2のユーザー入力が、前記第2のユーザーアカウントを介して受信されたかどうかを判定することであって、前記仮想オブジェクトが、前記第1のユーザーアカウントを介して、前記第1のチャレンジのプレイ及び前記第2のチャレンジのプレイ中に制御される、前記判定することと、
    前記第2のユーザー入力が前記第2のユーザーアカウントを介して受信されたと判定すると、前記第2のユーザーアカウントを介して制御される前記仮想オブジェクトに前記ゴーストを付加することと
    をさらに含む、請求項1に記載の方法。
  6. 前記メタゲームをプレイするための第1のユーザー入力が、第2のユーザーアカウントを介して受信されたと判定することと、
    前記第1及び前記第2のチャレンジの前記記録を再生するための第2のユーザー入力が、前記第2のユーザーアカウントを介して受信されたかどうかを判定することと、
    前記第2のユーザー入力が前記第2のユーザーアカウントを介して受信されたと判定すると、前記メタゲームのディスプレイに前記記録をオーバーレイすることと
    をさらに含む、請求項1に記載の方法。
  7. 前記第1の複数の命令及び前記第2の複数の命令が、64ビットプロセッサを含む前記更新されたマシンで実行することができず、32ビットプロセッサを含むレガシーマシンで実行することができる、請求項1に記載の方法。
  8. 前記第1及び前記第2の複数の基本ブロックが、32ビットプロセッサを含むレガシーマシンで実行することができず、64ビットプロセッサを含む前記更新されたマシンで実行することができる、請求項1に記載の方法。
  9. メタゲームを生成するためのコンピュータシステムであって、
    プロセッサであって、
    第1のユーザーアカウントを介して、1つ以上のレガシーゲームのプレイ中に第1のチャレンジに対する第1のユーザー入力を受信することであって、前記第1のチャレンジが、前記1つ以上のレガシーゲームの第1の複数の基本ブロックから作成される、前記受信することと、
    前記第1のチャレンジの少なくとも一部を記録することと、
    前記第1のユーザーアカウントを介して、前記1つ以上のレガシーゲームの前記プレイ中に第2のチャレンジに対する第2のユーザー入力を受信することであって、前記第2のチャレンジが、前記1つ以上のレガシーゲームの第2の複数の基本ブロックから作成され、前記第1の複数の基本ブロックが、前記1つ以上のレガシーゲームの第1の複数の命令からコンパイルされ、前記第2の複数の基本ブロックが、前記1つ以上のレガシーゲームの第2の複数の命令からコンパイルされて、前記1つ以上のレガシーゲームを更新されたマシンでプレイすることを可能にする、前記受信することと、
    前記第2のチャレンジの少なくとも一部を記録することと、
    前記メタゲームのプレイを要求するための第3のユーザー入力が前記第1のユーザーアカウントを介して受信されたかどうかを判定することと、
    前記第3のユーザー入力が受信されたと判定すると、前記第1及び前記第2のチャレンジから前記メタゲームを生成することと
    を行うように構成された前記プロセッサと、
    前記プロセッサに結合されたメモリデバイスと
    を備える、前記コンピュータシステム。
  10. 前記プロセッサが、
    前記第1のユーザーアカウントを介して、前記第1のチャレンジ及び前記第2のチャレンジの実行のシーケンスを選択するオプションを提供することと、
    前記第1のユーザーアカウントを介して前記シーケンスを受信することと、
    前記シーケンスに従って、前記第1の複数の基本ブロック、及び前記第2の複数の基本ブロックをスティッチングすることと、
    第2のユーザーアカウントを介して、前記メタゲームの実行を要求するユーザー入力を受信することと、
    前記第2のユーザーアカウントを介して受信された前記ユーザー入力に応えて、前記第1及び前記第2の複数の基本ブロックを前記シーケンスで実行することと
    を行うように構成された、請求項9に記載のコンピュータシステム。
  11. 前記プロセッサが、
    前記第1のユーザーアカウントを介して、前記メタゲームのリーダーシップスコアボードを作成するための第4のユーザー入力を受信することと、
    前記第4のユーザー入力に応えてリーダーシップスコアボードを作成することであって、前記リーダーシップスコアボードが、前記第1のチャレンジのプレイ中に前記第1のユーザーアカウントを介して蓄積された第1のポイント数と、前記第2のチャレンジのプレイ中に前記第1のユーザーアカウントを介して蓄積された第2のポイント数の合計を含む、前記作成することと、
    前記合計を前記リーダーシップスコアボードに掲載することと、
    前記メタゲームのプレイ中に第2のユーザーアカウントに蓄積されたポイント数を受信することと、
    前記合計が、前記第2のユーザーアカウントに蓄積された前記ポイント数を超えているかどうかを判定することと、
    前記合計及び前記第2のユーザーアカウントに蓄積された前記ポイント数の表示の順序を決定することと
    を行うように構成された、請求項9に記載のコンピュータシステム。
  12. 前記プロセッサが、
    前記メタゲームにトロフィーを付加することと、
    第2のユーザーアカウントを介して前記メタゲームをプレイする要求を受信することと、
    前記第2のユーザーアカウントを介した前記メタゲームのプレイ中に蓄積されたポイント数が所定の制限を超えているかどうかを判定することと、
    前記メタゲームの前記プレイ中に蓄積された前記ポイント数が前記所定の制限を超えていると判定したことに応えて、前記第2のユーザーアカウントに前記トロフィーを授与することと
    を行うように構成された、請求項9に記載のコンピュータシステム。
  13. 前記プロセッサが、
    前記メタゲームをプレイするための第1のユーザー入力が、第2のユーザーアカウントを介して受信されたと判定することと、
    前記メタゲームの仮想オブジェクトにゴーストを付加するための第2のユーザー入力が、前記第2のユーザーアカウントを介して受信されたかどうかを判定することであって、前記仮想オブジェクトが、前記第1のユーザーアカウントを介して、前記第1のチャレンジのプレイ及び前記第2のチャレンジのプレイ中に制御される、前記判定することと、
    前記第2のユーザー入力が前記第2のユーザーアカウントを介して受信されたと判定すると、前記第2のユーザーアカウントを介して制御される前記仮想オブジェクトに前記ゴーストを付加することと
    を行うように構成された、請求項9に記載のコンピュータシステム。
  14. 前記プロセッサが、
    前記メタゲームをプレイするための第1のユーザー入力が、第2のユーザーアカウントを介して受信されたと判定することと、
    前記第1及び前記第2のチャレンジの前記記録を再生するための第2のユーザー入力が、前記第2のユーザーアカウントを介して受信されたかどうかを判定することと、
    前記第2のユーザー入力が前記第2のユーザーアカウントを介して受信されたと判定すると、前記メタゲームのディスプレイに前記記録をオーバーレイすることと
    を行うように構成された、請求項9に記載のコンピュータシステム。
  15. 前記第1の複数の命令及び前記第2の複数の命令が、64ビットプロセッサを含む前記更新されたマシンで実行することができず、32ビットプロセッサを含むレガシーマシンで実行することができる、請求項9に記載のコンピュータシステム。
  16. 前記第1及び前記第2の複数の基本ブロックが、32ビットプロセッサを含むレガシーマシンで実行することができず、64ビットプロセッサを含む前記更新されたマシンで実行することができる、請求項9に記載のコンピュータシステム。
  17. メタゲームを生成するためのプログラム命令を含む非一時的なコンピュータ可読媒体であって、コンピュータシステムの1つ以上のプロセッサによって前記プログラム命令が実行されると、前記1つ以上のプロセッサが、
    第1のユーザーアカウントを介して、1つ以上のレガシーゲームのプレイ中に第1のチャレンジに対する第1のユーザー入力を受信することであって、前記第1のチャレンジが、前記1つ以上のレガシーゲームの第1の複数の基本ブロックから作成される、前記受信することと、
    前記第1のチャレンジの少なくとも一部を記録することと、
    前記第1のユーザーアカウントを介して、前記1つ以上のレガシーゲームの前記プレイ中に第2のチャレンジに対する第2のユーザー入力を受信することであって、前記第2のチャレンジが、前記1つ以上のレガシーゲームの第2の複数の基本ブロックから作成され、前記第1の複数の基本ブロックが、前記1つ以上のレガシーゲームの第1の複数の命令からコンパイルされ、前記第2の複数の基本ブロックが、前記1つ以上のレガシーゲームの第2の複数の命令からコンパイルされて、前記1つ以上のレガシーゲームを更新されたマシンでプレイすることを可能にする、前記受信することと、
    前記第2のチャレンジの少なくとも一部を記録することと、
    前記メタゲームのプレイを要求するための第3のユーザー入力が前記第1のユーザーアカウントを介して受信されたかどうかを判定することと、
    前記第3のユーザー入力が受信されたと判定すると、前記第1及び前記第2のチャレンジから前記メタゲームを生成することと
    の複数の操作を実行する、前記非一時的なコンピュータ可読媒体。
  18. 前記複数の操作が、
    前記第1のユーザーアカウントを介して、前記第1のチャレンジ及び前記第2のチャレンジの実行のシーケンスを選択するオプションを提供することと、
    前記第1のユーザーアカウントを介して前記シーケンスを受信することと、
    前記シーケンスに従って、前記第1の複数の基本ブロック、及び前記第2の複数の基本ブロックをスティッチングすることと、
    第2のユーザーアカウントを介して、前記メタゲームの実行を要求するユーザー入力を受信することと、
    前記第2のユーザーアカウントを介して受信された前記ユーザー入力に応えて、前記第1及び前記第2の複数の基本ブロックを前記シーケンスで実行することと
    を含む、請求項17に記載の非一時的なコンピュータ可読媒体。
  19. 前記複数の操作が、
    前記第1のユーザーアカウントを介して、前記メタゲームのリーダーシップスコアボードを作成するための第4のユーザー入力を受信することと、
    前記第4のユーザー入力に応えて前記リーダーシップスコアボードを作成することであって、前記リーダーシップスコアボードが、前記第1のチャレンジのプレイ中に前記第1のユーザーアカウントを介して蓄積された第1のポイント数と、前記第2のチャレンジのプレイ中に前記第1のユーザーアカウントを介して蓄積された第2のポイント数の合計を含む、前記作成することと、
    前記合計を前記リーダーシップスコアボードに掲載することと、
    前記メタゲームのプレイ中に第2のユーザーアカウントに蓄積されたポイント数を受信することと、
    前記合計が、前記第2のユーザーアカウントに蓄積された前記ポイント数を超えているかどうかを判定することと、
    前記合計及び前記第2のユーザーアカウントに蓄積された前記ポイント数の表示の順序を決定することと
    を含む、請求項17に記載の非一時的なコンピュータ可読媒体。
  20. 前記複数の操作が、
    前記メタゲームにトロフィーを付加することと、
    第2のユーザーアカウントを介して前記メタゲームをプレイする要求を受信することと、
    前記第2のユーザーアカウントを介した前記メタゲームのプレイ中に蓄積されたポイント数が所定の制限を超えているかどうかを判定することと、
    前記メタゲームの前記プレイ中に蓄積された前記ポイント数が前記所定の制限を超えていると判定したことに応えて、前記第2のユーザーアカウントに前記トロフィーを授与することと
    を含む、請求項17に記載の非一時的なコンピュータ可読媒体。
JP2023560877A 2021-04-01 2022-03-24 レガシーゲームからメタゲームを生成するためのシステム及び方法 Pending JP2024513862A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/220,227 2021-04-01
US17/220,227 US11504628B2 (en) 2021-04-01 2021-04-01 Systems and methods for generating a meta-game from legacy games
PCT/US2022/021792 WO2022212178A1 (en) 2021-04-01 2022-03-24 Systems and methods for generating a meta-game from legacy games

Publications (1)

Publication Number Publication Date
JP2024513862A true JP2024513862A (ja) 2024-03-27

Family

ID=81307831

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2023560877A Pending JP2024513862A (ja) 2021-04-01 2022-03-24 レガシーゲームからメタゲームを生成するためのシステム及び方法

Country Status (6)

Country Link
US (1) US11504628B2 (ja)
EP (1) EP4313338A1 (ja)
JP (1) JP2024513862A (ja)
CN (1) CN117136092A (ja)
TW (1) TWI809786B (ja)
WO (1) WO2022212178A1 (ja)

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8641521B2 (en) * 2004-08-25 2014-02-04 Igt Emulation in a secure regulated environment
US10406429B2 (en) * 2012-08-29 2019-09-10 Sony Interactive Entertainment, LLC User-based mini-game generation and distribution
US9707476B2 (en) * 2012-09-28 2017-07-18 Sony Interactive Entertainment Inc. Method for creating a mini-game
EP2745893B1 (en) 2012-12-21 2019-03-20 Sony Computer Entertainment America LLC Automatic generation of suggested mini-games for cloud-gaming based on recorded gameplay
US20140256445A1 (en) * 2013-03-07 2014-09-11 Cfph, Llc Fantasy gaming
US11207600B2 (en) * 2018-01-08 2021-12-28 Sony Interactive Entertainment LLC Utilizing social engagement to generate metagaming resources
US10559281B2 (en) * 2018-05-31 2020-02-11 Sony Interactive Entertainment LLC Challenge game system

Also Published As

Publication number Publication date
EP4313338A1 (en) 2024-02-07
WO2022212178A1 (en) 2022-10-06
US11504628B2 (en) 2022-11-22
TWI809786B (zh) 2023-07-21
US20220314124A1 (en) 2022-10-06
TW202247876A (zh) 2022-12-16
CN117136092A (zh) 2023-11-28

Similar Documents

Publication Publication Date Title
EP3749427B1 (en) Methods and systems for providing shortcuts for fast load when moving between scenes in virtual reality
US20230038618A1 (en) Systems and methods for using a distributed game engine
US11321900B2 (en) Systems and methods for adjusting one or more parameters of a GPU
US12017140B2 (en) Systems and methods for emulation of graphical and audio parameters during a play of a legacy game
US20220360812A1 (en) Systems and methods for decoding and displaying image frames
US20220387893A1 (en) Systems and methods for coaching a user for game play
US11360750B1 (en) Systems and methods for converting a legacy code into an updated code
US11806625B2 (en) Patch and bulk operations for a legacy game
US11813522B2 (en) Systems and methods for emulation of user input during a play of a legacy game
TWI809786B (zh) 用於自舊有遊戲產生元遊戲之系統及方法
JP7436579B2 (ja) レガシーゲーム用aotコンパイラ
WO2022140167A1 (en) Systems and methods for converting a legacy code into an updated code
CN116635120A (zh) 用于将传统代码转换为更新代码的系统和方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20231002

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20240909

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240924