(57)【要約】      （修正有）【課題】変化している仮想世界の視覚化を得るために、ビデオデータの導出及び編集技術、特に、仮想環境内に設定したビデオシーケンスの編集及び指揮することの効率性を向上させるために、記録されたビデオデータとの対話を容易にする技術を提供する。【解決手段】コンピュータプログラムの実行から導出されたビデオデータの作成装置は、第１及び第２の動作モードを有し、第１の動作モードにおいて、装置は１つ以上のコンポーネントを含むコンピュータプログラムを実行するように動作し、装置はさらに、実行フレームのシーケンスに対応するビデオデータフレームを記録するため前記第１の動作モードで動作し、第２の動作モードにおいて、コンピュータプログラムの実行の視覚化をユーザが得ることができるために、装置はコンピュータプログラムの前実行中に記録していたビデオデータを処理する。【選択図】図１
2009146409.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータプログラムの実行から導出されたビデオデータを作成する、第１及び第２の動作モードを有する装置であって、
前記第１の動作モードにおいて、１つ以上のコンポーネントを含むコンピュータプログラムを実行するように動作可能であり、各コンポーネントの実行は実行フレームのシーケンスで行われ、さらに、実行フレームのシーケンスに対応するビデオデータフレームのシーケンスを含むビデオデータを記録するため前記第１の動作モードで動作可能であり；
前記第２の動作モードにおいて、コンピュータプログラムの実行の視覚化をユーザが得ることができるために、前記コンピュータプログラムの前実行中に記録していたビデオデータを処理するように動作可能であり、かつ、前記第２の動作モードにおいて、さらに、ユーザが、ビデオデータフレームの前記シーケンスの任意のフレームで、前記装置の動作モードを前記第１の動作モードに変え、かつ、前記コンピュータプログラムの対応する実行フレームの状態を前記ビデオデータから得ることができるように動作可能である装置。
【請求項２】
前記ビデオデータが再実行データを含む請求項１に記載の装置。
【請求項３】
前記ビデオデータが、プログラムコンポーネント間の前記実行シーケンス中に行われた対話通信の記憶されたタイムラインとともに、前記実行シーケンスの開始時に前記プログラムコンポーネントの初期状態についての情報を含む請求項１又は請求項２に記載の装置。
【請求項４】
前記装置が、前記コンピュータプログラムの実行を行う決定論的実行環境を作成するように構成されている実行環境作成手段を含む請求項１〜３のいずれか１項に記載の装置。
【請求項５】
前記コンピュータプログラムのコンポーネントの実行が複数のシーケンシャル実行フレームで行われるように動作可能な実行環境を作成するように構成されている実行環境作成手段を含み、前記実行環境がさらに、ｉ）異なる実行フレームにおけるある前記コンポーネントと別の前記コンポーネントとの間の通信を可能にし；かつ、
ｉｉ）前記同一実行フレームにおけるある前記コンポーネントと別の前記コンポーネントとの間の通信を妨げるように動作可能である請求項１〜４のいずれか１項に記載の装置。
【請求項６】
前記実行環境が、隣接する実行フレームにおけるコンポーネント間の通信だけ可能なように動作可能である請求項５に記載の装置。
【請求項７】
前記通信が、別のコンポーネントにメッセージを送信すること、又は別のコンポーネントからデータを読み込むことの少なくとも１つを含む請求項５又は請求項６に記載の装置。
【請求項８】
通信が所定の順序で前記実行環境により処理される請求項５、請求項６、又は請求項７に記載の装置。
【請求項９】
少なくとも１つのコンポーネントがオブジェクトである請求項１〜８のいずれか１項に記載の装置。
【請求項１０】
前記実行が、多数の機械又は複数の並列プロセッサにわたって分散している実行環境で行われる請求項１〜９のいずれか１項に記載の装置。
【請求項１１】
前記装置が、コンピュータプログラムの１つ以上のコンポーネントの実行が複数のシーケンシャル実行フレームで行われるように動作可能な実行環境を含み、前記実行環境がさらに、所定の順序で前記コンピュータプログラムのコンポーネント間の通信を処理するように動作可能である請求項１〜１０のいずれか１項に記載の装置。
【請求項１２】
ユーザが前記ビデオデータを変更できるように動作可能な手段をさらに含む請求項１〜１１のいずれか１項に記載の装置。
【請求項１３】
コンピュータプログラムの実行から導出されたビデオデータの作成方法であって、
ｉ）各コンポーネントの実行が実行フレームのシーケンスで行われるように動作可能な実行環境でコンピュータプログラムの１つ以上のコンポーネントを実行するステップと；
ｉｉ）前記実行中、実行フレームの前記シーケンスに対応する、任意の実行フレームの状態を再作成できるのに十分なビデオデータを記録するステップと；
ｉｉｉ）前記ビデオデータから再実行フレームの所望のシーケンスを得るステップと；
ｉｖ）前記実行環境においてステップｉｉｉ）で得た再実行フレームのシーケンスを実行するステップと；
ｖ）候補フレームを得るため再実行フレームの前記シーケンスの実行を所与のフレームで一時停止するステップと；
ｖｉ）再実行フレームの修正シーケンスを得るため前記候補フレームの状態を修正するステップと、
を含む方法。
【請求項１４】
前記候補フレームの状態を修正する前記ステップが、前記フレームにアイテムを追加するステップ；前記フレームからアイテムを削除するステップ、前記フレームに含まれる１つ以上のアイテムの状態を変更するステップのうちの１つ以上を含む請求項１３に記載の方法。
【請求項１５】
コンピュータプログラムの実行から導出されたビデオデータの作成方法であって、
ｉ）１つ以上のコンポーネントを含むコンピュータプログラムの前記前実行中に記録されたビデオデータから再実行フレームの所望のシーケンスを得るステップと；
ｉｉ）各コンポーネントの実行が実行フレームのシーケンスで行われるように動作可能な実行環境で再実行フレームの前記シーケンスを実行するステップと；
ｉｉｉ）所与の状態を有する候補フレームを得るため所与のフレームで再実行フレームの前記シーケンスの実行を一時停止するステップと；
ｉｖ）再実行フレームの修正シーケンスを得るため前記候補フレームの状態を修正するステップと、
を含む方法。
【請求項１６】
前記候補フレームの状態を修正する前記ステップが、前記フレームにアイテムを追加するステップ；前記フレームからアイテムを削除するステップ；前記フレームに含まれる１つ以上のアイテムの状態を変更するステップのうちの１つ以上を含む請求項１５に記載の方法。
【請求項１７】
実行フレーム又は再実行フレームの前記シーケンスの変化している状態の視覚化を、場合によっては、表示手段上で得るステップをさらに含む請求項１３、請求項１４、請求項１５、又は請求項１６のいずれか１項に記載の方法。
【請求項１８】
前記実行環境がさらに、ｉ）異なる実行フレームにおけるある前記コンポーネントと別の前記コンポーネントとの間の通信を可能にし；かつ、ｉｉ）同一実行フレームにおけるある前記コンポーネントと別の前記コンポーネントとの間の通信を妨げるように動作可能である請求項１３、請求項１４、請求項１５、請求項１６、又は請求項１７のいずれか１項に記載の方法。
【請求項１９】
コンピュータプログラムの実行から導出されたビデオデータの作成装置であって、
ｉ）各コンポーネントの実行が実行フレームのシーケンスで行われるようなコンピュータプログラムの１つ以上のコンポーネントを実行するように動作可能な実行環境を作成するように構成されている実行環境作成手段と；
ｉｉ）ビデオデータは、任意の実行フレームの状態を再作成できるのに十分であり、かつ、前記装置は、ビデオデータから再実行フレームの所望のシーケンスを得るように動作可能であり、再実行フレームの前記シーケンスは、前記実行環境で実行されるものである、前記実行環境によって実行されている実行フレームのシーケンスに対応する前記ビデオデータを記録するように動作可能な記録手段と、；
ｉｉｉ）前記実行環境によって再実行フレームのシーケンスの実行への割り込み後、前記実行環境によって実行される再実行フレームの修正シーケンスを得るため、候補再実行フレームの状態の修正できるように動作可能なフレーム状態修正子と、
を含む装置。
【請求項２０】
前記実行環境作成手段が、前記コンピュータプログラムのコンポーネントの実行が複数のシーケンシャル実行フレームで行われるように動作可能な実行環境を作成するように構成されており、前記実行環境がさらに、ｉ）異なる実行フレームにおけるある前記コンポーネントと別の前記コンポーネントとの間の通信を可能にし；かつ、ｉｉ）前記同一実行フレームにおけるある前記コンポーネントと別の前記コンポーネントとの間の通信を妨げるように動作可能である請求項１９に記載の装置。
【請求項２１】
コンピュータにロードされると、前記コンピュータを、請求項１〜１２、請求項１９、又は請求項２０のいずれか１項に記載の装置として実行させる、或いは、請求項１３〜１８のいずれか１項に記載の方法を実行させるコンピュータプログラムを記憶したコンピュータ可読記憶媒体。
【請求項２２】
キャリア媒体によって持ち運ばれる請求項２１に記載のコンピュータプログラム。
【請求項２３】
前記キャリア媒体が記録媒体である請求項２２に記載のコンピュータプログラム。
【請求項２４】
前記キャリア媒体が伝送媒体である請求項２２に記載のコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ビデオの作成方法及びツールに関する。特に、本発明は、仮想環境内に設定したビデオシーケンスの作成及び指揮するのに有用な技術を説明するものである。
【背景技術】
【０００２】
アニメーション分野は、初期の頃の２−Ｄアニメーションから大きな発展を遂げている。初期の頃の２−Ｄアニメーションは、膨大な数の手描きし、色付けした映像を作成することが必ず必要であり、これらはその後、一コマごとに撮影、又は「ショット」されていた。さらに近年になると、３−Ｄコンピュータ作成映像（ＣＧＩ）が、アニメ映画の視覚的魅力を飛躍的に向上させた。一般に、デジタルビデオ作成には、選択したカメラ視点から所与の照明レベルでシーンを描く映像を作るため、シーン内にモデルを集めること、カメラ視点、及び１つ以上の光源を必要とする。映画は、セット量によって、１つ以上のモデルのセット（例：キャラクターの動作）、照明（例：フェードイン／アウト）、又はカメラ視点（例：パニング）を変更し、フィルムの別フレームをレンダリングし、この過程を繰返すことで作られる。フレーム間の変更は小さいが、累積効果は動きであるため、時間の経過に伴って変化を示す僅かに異なる映像からビデオは作成される。
【０００３】
そのため、ＣＧＩ技術は、各フレームを手で描く骨の折れる過程を回避し、各フレームは代わりに、コンピュータ化された処理能力によってデジタル的に「レンダリング」される。従って、この技術は、手描き映像を伴う技術で見られるよりもアニメ映画の製作をより効率的にすることができる。しかしながら、アニメ映画、又はビデオ製作のコスト及び時間の両面においてさらに多くのものが得られる。実際、１本のアニメ映画を製作、完成するまでには数年かかるのが一般的である。
【０００４】
マシニマの技術分野では、仮想環境内で現実世界の映画制作技術の応用を伴い、キャラクターやイベントは、ユーザの入力コマンド、人工知能、又はスクリプトによって制御される。ライブ・マシニマの製作は、これまで採用されてきたアニメーション製作技術を上回る多くの明らかな利点を示している。キーフレームに頼る必要なく、代わりに、ユーザがリアルタイムで協同的にキャラクターモデルを操作できることでビデオを自由に指揮、又は製作できるだけでなく、かなりの時間及びコスト削減による恩恵も得られる。さらに、優れたグラフィッククオリティを示す今日の多くのコンピュータプログラムによる仮想世界の描写により、映画制作の技術分野においてこのグラフィックの優秀さを利用したいという要望がある。コンピュータゲームグラフィックスの高度化は年々増し続けている。現在の先端技術では、キャラクター及びシーンに対する複雑なモデル、１つ以上の可動カメラ、及び反射やシャドウキャスティングなどのリアルタイム照明効果による３Ｄ世界を提供する。そのようなゲームの目標の１つは、映画館のそれと同等に没頭できるレベルのものを提供することである。
【０００５】
ゲームは、ビデオシーケンスを含むことが多い。これらは、物語の目的であってもよいし、ゲームでなんらかのアクションシーケンスを再生するためであってもよい。ゲーム内のグラフィックスがより原始的であった場合、ビデオシーケンスは事前にレンダリングされることが多かった。しかしながら、今日のグラフィッククオリティレベルにおいては、ゲームビデオを製作するのにゲーム内グラフィックス及びアセット（モデル、テクスチャ）を用いるので十分であることが多い。
【０００６】
ビデオは、プレーヤへのデジタル表示手段に表示されたフレームのシーケンスをセーブすることでゲームから普通に記録することができる。しかしながら、作成されたビデオをその後編集することはそれほど簡単明瞭ではない。ユーザは、その後の再生用にユーザ自身のコンピュータ表示手段に接続されているＤＶＤなどのデジタル記録媒体に、ユーザ自身の仮想性能の視覚結果を記録することが知られている。そのため、ユーザ自身の表示画面に描かれる視点は記録され、コンピュータゲームの媒体内に設定されたフィルム映像になる。より高性能なレベルでは、多くのゲームメーカーは、ユーザがより容易に非インタラクティブな映画としてアクションを繰返し見ることができるよう記録又は再生機能をゲームに加えている。さらに、３Ｄシーンの作成、照明、及びレンダリング、並びに、多数のレンダリングからのビデオ作成に利用可能な多くのツールがある。
【０００７】
コスト及び時間効率においてマシニマにより提案される大きな利点にもかかわらず、マシニマ映画若しくはビデオの製作に現在利用可能なツール及び技術は、映画制作能力において極めて限られている。ゲーム開発者がゲームシステムの一部としてビデオシーケンスを記録する機能性を提供する場合にも、これは、一般に、補足として追加され、始めからシステムに内蔵されていない。従って、そのようなシステムの有用性及び柔軟性は限定される。特に、公知のマシニマ製作システムは、ユーザが、前に記録された表示フレームシーケンスと対話する、或いは潜在的に編集する能力がほとんどない。よくても、記録ビデオシーケンスを作成しようとするユーザは、プログラム実行結果に影響を与えるプレーヤ入力コマンドを用いて視覚的に展開しているシーンを指揮しようと試みることしかできない。上級ユーザは、仮想シーンに住むアバター又はプロップによって行われる１つ以上のアニメーションシーケンスを定義するスクリプトを編集することも可能である。
【０００８】
しかしながら、ビデオ記録を編集するポテンシャルは、所望の結果が得られるまで、所与の実行シーケンスを記録する過程を単に繰返すことに限定される。これは、３つの異なる段階としてＲＥＣＯＲＤ、ＥＤＩＴ、及びＰＬＡＹの基本処理に従う映画制作の古典的手法に類似している。追加のデータがＥＤＩＴ段階で必要或いは所望である場合、戻って、再びＲＥＣＯＲＤする必要がある。これは、最終結果における制御が限られた時間がかかる処理である。ビデオの最終ピースを構築するために、ユーザが種々の「撮影ショット（ｔａｋｅｓ）」を合成し、テキスト、音響部分などを重ね合わせる必要がある。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
従って、仮想環境内に設定した記録ビデオシーケンスの作成技術を改善することが望まれる。特に、本発明者らは、ユーザがビデオデータのシーケンスを指揮し、その後編集できる能力を高めるというニーズを認識した。従って、本発明の実施形態は、その後の表示用にコンピュータプログラムの実行から導出されたビデオデータの作成及び記録用のツール及び方法を提供しようとするものである。
【００１０】
本発明によるコンピュータプログラムの実行から導出されたビデオデータの作成装置は、第１及び第２の動作モードを有し、
第１の動作モードにおいて、装置は１つ以上のコンポーネントを含むコンピュータプログラムを実行するように動作可能であり、各コンポーネントの実行は実行フレームのシーケンスで行われ、実行の各フレームは所与の状態を有しており、装置はさらに、実行フレームのシーケンスに対応するビデオデータフレームのシーケンスを含むビデオデータを記録するため前記第１の動作モードで動作可能であり；
第２の動作モードにおいて、コンピュータプログラムの実行の視覚化をユーザが得ることができるために、装置はコンピュータプログラムの前実行中に記録していたビデオデータを処理するように動作可能であり、かつ、第２の動作モードにおいて、装置はさらに、ユーザが、ビデオデータフレームの前記シーケンスの任意のフレームで、装置の動作モードを第１の動作モードに変え、かつ、コンピュータプログラムの対応する実行フレームの状態を前記ビデオデータから得ることができるように動作可能である。
【００１１】
従って、本発明の実施形態により、ユーザが、変化している視覚表示を制御できない単なる観察者である再生モード（即ち、第２のモード）で装置が動作している状態と、例えば、プログラムの１つ以上のコンポーネントの挙動又はアクションに影響を与える入力コマンドを介して、ユーザが実行結果に影響を及ぼすことができる実行モード（即ち、第１のモード）との間を、ユーザは切り替えることができる。コンピュータゲーム状況下で、例えば、ユーザは、ゲームの前実行を描いているシーケンスを見ることができ、そのシーケンス内の任意のポイントでゲームプレイを始めることができる。従って、プレーヤはビデオシーケンスの終わりから開始することが可能となる。即ち、ビデオは、ゲームがプレーヤによって制御されるポイントへの導入部である。言い換えると、ビデオの期間中、プレーヤがゲームを制御するのではなく、ビデオが終わると制御がもたらされる。
【００１２】
コンピュータプログラムを実行する視覚結果は、最も一般的には、所与のカメラ位置から観察することができる。これは、例えば、ユーザ視点となるように選択することもできるし、プログラムの参加者又は仮想キャラクターの任意の視点から選択することもできる。
【００１３】
実行フレームは、プログラムコンポーネント及び通信、例えば、そのフレーム内におけるコンポーネントを意図しているか或いは、異なるフレームのコンポーネントに送信されるメッセージなどの多くのアイテムを含むのが好ましいことを理解されたい。そのため、この場合、フレームの状態は、アイテム、例えば、フレーム内のプログラムコンポーネント及び通信の状態によって求められる。実行フレーム或いは再検査フレームのシーケンスの変化している状態の視覚化を得るために、フレームの状態は、状態の視覚表示を表示手段に引き出すことができる表示データを得るようにクエリを行う。
【００１４】
コンポーネントは、オブジェクト、即ち、データ及びそのデータ上で動作する必要があるプロシージャを含むコンピュータプログラムの一部を形成する離散アイテムからなることができる。「オブジェクト」及び「コンポーネント」という用語は、本発明において区別なく使用される。本発明を具現化する装置は、オブジェクトコード、又はプログラムコンポーネントの実行を容易にするため、「フレーム」或いは、単位時間若しくは単位仕事に構造化される実行環境を備えているのが好ましい。フレームのシーケンスでプログラムコンポーネントを実行するように動作可能な実行環境を設けることにより、ビデオデータフレームのシーケンスと、ビデオデータフレームが作成された実行フレームのシーケンスとの間の通信（一対一の通信であっても、そうでなくてもよい）を自然に容易化するので有利である。この重要な特徴により、ユーザは再生モード（第２のモード）から実行モード（第１のモード）に簡単に変更することができる。
【００１５】
装置は、これが最も自然なポイントであるので、フレームの終了時に第２のモードから第１のモードに、或いは２つのフレーム間で変更させるのが、本質的ではないが好ましい。本発明を具現化する装置を操作しているユーザに応答するモード変更プロシージャの前に、少なくとも１つのフレーム待ち時間があることを理解されたい。
【００１６】
本発明の文脈の中で、「ビデオデータ」とは、前に実行された実行フレームのシーケンスの視覚結果をユーザがその後直接的、或いは間接的に再生することができるコードを含み得るデータを意味するものとしてインタプリトするべきである。ビデオデータは、ビデオデータが作成されている対応コンピュータプログラムの実行を行った機械のユーザによって認識された際に、或いは該ユーザの視点から視覚結果及び／又は聴覚結果の再生を可能にすることができるので有利である。或いは、ビデオデータフレームは、仮想世界内の任意の位置から記録することができる。ビデオデータは、視覚化を、リアルタイムで、より速く（例：高速前進）、又は、よりゆっくり（例：スローモーション）と前方又は後方にプレイできるように処理できることを理解されたい。
【００１７】
ビデオデータは、例えば、再実行の視覚化を得るために、実行フレームの元のシーケンスにおける再実行を可能にするデータである再生データを含むか、或いは、作成するように処理できるのが好ましい。ビデオデータは、プログラムコンポーネント間の実行シーケンス中に行った対話又は通信（ユーザ導出の入力コマンドを含む）の記憶されたタイムラインとともに、実行シーケンスの開始時にプログラムコンポーネントの初期状態を含むことができる。この情報は、前に実行されたコンピュータプログラムの任意のフレームの状態を再作成できることが好ましい。従って、ビデオデータが再生データを含む場合、これは、任意の実行フレームの状態を再作成できるのに十分でなければならない。いったん所与のフレーム状態が再生データから再作成されると、ビデオデータは、１人以上のユーザによって提供されたリアルタイムの入力コマンドよりも、記憶された対話タイムラインを用いて実行を行うことで、再作成されたフレームから対応する元の実行シーケンスの視覚化を得るために処理することができる。この手法は、装置が両方の動作モードにおけるコンピュータシステムの実行環境、或いはランタイムシステムを利用するように動作可能である「ゲーム内」で表示することを意図したビデオに特に適している。
【００１８】
読者は、実行データ及びビデオデータの二重性が可能であることが理解できるであろう。ここで、ビデオデータは再実行データを含み、このデータは実際には同一の場合がある。しかしながら、データと対話し、データを視覚化するメカニズムは、第１のモードと第２のモードとの間で異なる。
【００１９】
再生又は「再実行」データを含むか或いは含むように処理することができるデータ形式のビデオデータに依存する本発明の実施形態は、仮想環境内に設定したビデオ又は映画シーケンスの作成を指揮するのに有用なツールとして特に有利である。特に好適な実施形態によれば、装置は、再実行データのシーケンスに含まれる１つ以上のフレームの状態をユーザが修正できるように、前記第２のモードで動作可能である。その後、実行（第１のモード）は、修正された実行フレームのシーケンスに基づいて再開することができる。このようにして、記録されたビデオデータと対話し、編集することができる。従って、記録されたビデオデータと対話することで、ユーザは、視覚的に展開しているシーンを指揮できる能力を有し、シーケンス全体を何回も再実行する必要なくそのシーケンス内の任意のポイントで記録されたビデオシーケンスを修正できるので有利である。この機能性により、複数のシーケンスを記録して、種々の撮影ショットを一緒に合成させる必要性が回避されるので、仮想フィルムの製作にかかる時間を大幅に削減する。
【００２０】
例えば、仮想フィルムを開発する際に、前に記録されたシーケンスの２つのフレーム間に追加材料のシーケンスを組み込むことが望まれる場合がある。本発明の実施形態は、ユーザがビデオフレームシーケンスに沿って行ったり来たりすることで、任意のポイントで第１の動作モードに戻す能力を提供し、それにより、実際に、記録されたビデオデータと任意のポイントで対話を容易にできることも有益である。読者には理解されるように、動作の巻き戻しや取り消しを行う能力は、マシニマフィルムの製作を作成、指揮しようとするユーザには特に有用である。
【００２１】
得られた視覚化を変更、編集するために、数多くのその他の変更形態が可能である。例えば：１つ以上のアイテムを削除したり、所与のフレームに追加することができ、及び／又は、１つ以上の既存のアイテムを変異させることができる。
【００２２】
特に好適な実施形態では、装置は、いわゆる「決定論的」実行環境を含み、これは、装置が高度の決定論でコンピュータコンポーネントの実行を容易にするように動作可能であることを意味している。決定論的実行環境とは、同一状態における同一コンポーネントが２つの異なる時間で同一コードを実行する場合に、オブジェクトの新しい状態が両方の機械或いは両方の時間で同一になることを保証する。従って、ビデオデータは決定論的実行環境内で正確に再生できることを理解されたい。そのため、本発明の好適な実施形態は、プログラムコンポーネントの決定論的実行を提供するため装置の能力に依存していると考えられる。これは、対話型実行シーケンスの視覚化と、その同一実行シーケンスのその後の再生とが実質的に同一になることを保証する。
【００２３】
本発明の第２の態様による、コンピュータプログラムの実行から導出されたビデオデータの作成方法は、
ｉ）各コンポーネントの実行が実行フレームのシーケンスで行われるように動作可能な実行環境でコンピュータプログラムの１つ以上のコンポーネントを実行するステップと；
ｉｉ）前記実行中、実行フレームの前記シーケンスに対応する、任意の実行フレームの状態を再作成できるのに十分なビデオデータを記録するステップと；
ｉｉｉ）前記ビデオデータから再実行フレームの所望のシーケンスを得るステップと；
ｉｖ）前記実行環境においてステップｉｉｉ）で得た再実行フレームのシーケンスを実行するステップと；
ｖ）候補フレームを得るため所与のフレームで再実行フレームの前記シーケンスの実行を一時停止するステップと；
ｖｉ）再実行フレームの修正シーケンスを得るため前記候補フレームの状態を修正するステップと、
を含む。
【００２４】
本発明の第３の態様による、コンピュータプログラムの実行から導出されたビデオデータの作成方法は、
ｉ）１つ以上のコンポーネントを含むコンピュータプログラムの前実行中に記録されたビデオデータから再実行フレームの所望のシーケンスを得るステップと；
ｉｉ）各コンポーネントの実行が実行フレームのシーケンスで行われるように動作可能な実行環境で再実行フレームの前記シーケンスを実行するステップと；
ｉｉｉ）所与の状態を有する候補フレームを得るため再実行フレームの前記シーケンスの実行を所与のフレームで一時停止するステップと；
ｉｖ）再実行フレームの修正シーケンスを得るため前記候補フレームの状態を修正するステップと、
を含む。
【００２５】
従って、再実行フレームの１つを形成する候補フレームの状態を修正するステップは、本発明の重要な特徴であることを理解されたい。記録されたビデオデータを修正、或いは、記録されたビデオデータと対話するこの過程により、ユーザは、仮想環境で設定されたビデオシーケンスの製作を容易に編集し、かつ、容易に指揮することができる。該過程は、ユーザによって作成された、又はすでに作成されているビデオデータを用いて行うことができる。
【００２６】
その内容全体を文献引用によって本明細書に組み込んだものとする英国特許出願第０７１２４９６．９号（以下、ＧＢ  ０７１２４９６．９）で、「フレーム」、又は単位時間若しくは単位仕事におけるコードの実行を容易にするように構造化されているコンピュータシステム用の実行環境を提案している。ＧＢ  ０７１２４９６．９の完全な写しは、本発明と一緒に提出される。
【００２７】
ＧＢ  ０７１２４９６．９の教示によれば、コンピュータプログラムの１つ以上のコンポーネントの実行は、複数のシーケンシャル実行フレームで行われるので有利であり、実行環境はさらに、
ｉ）異なる実行フレームにおけるある前記コンポーネントと別の前記コンポーネントとの間の通信を可能にし；
ｉｉ）前記同一実行フレームにおけるある前記コンポーネントと別の前記コンポーネントとの間の通信を妨げるように動作可能である。
【００２８】
また、単独又は第１の態様と組み合わせて提供される第２の態様として、ＧＢ  ０７１２４９６．９は、コンピュータプログラムの１つ以上のコンポーネントの実行が複数のシーケンシャル実行フレームで行われるように動作可能な実行環境も提案しており、実行環境はさらに、所定の順序でコンピュータプログラムのコンポーネント間の通信を処理するように動作可能である。
【００２９】
従って、発明ＧＢ  ０７１２４９６．９の第１及び第２の態様を具現化する実行環境は、プログラムの少なくとも１つのコンポーネントが実行の各フレームに含まれる状態で、「フレーム」、即ち、単位時間又は単位仕事におけるプログラムコードの実行を容易にするよう構造化されているので有利である。さらに、ＧＢ  ０７１２４９６．９に提案されている実行環境は、高度の決定論でコンピュータコンポーネントの実行を容易にするので非常に有利である。これは、同一状態における対応オブジェクト（即ち、２台の異なるコンピュータ上で実行される離散コンポーネント部分、例えば、ゲーム中のキャラクターを実装すること）が２台の異なるコンピュータ上、或いは２つの異なる時間で同一コードを実行すると、オブジェクトの新しい状態は両方の機械若しくは両方の時間で同一となるので有利であることを意味している。
【００３０】
本発明の特に好適な実施形態によれば、プログラムオブジェクトの実行は、ＧＢ  ０７１２４９６．９に記載の技術に従って行われる。従って、本発明を具現化する装置は、コンピュータプログラムのコンポーネントの実行が複数のシーケンシャル実行フレームで行われるように動作可能な実行環境を備えているのが好ましく、ここで、実行環境はさらに、ｉ）異なる実行フレームにおけるある前記コンポーネントと別の前記コンポーネントとの間の通信を可能にし；かつ、ｉｉ）前記同一実行フレームにおけるある前記コンポーネントと別の前記コンポーネントとの間の通信を妨げるように動作可能である。或いは又は更に、本発明を具現化する装置は、コンピュータプログラムの１つ以上のコンポーネントの実行が複数のシーケンシャル実行フレームで行われるように動作可能な実行環境を備えており、実行環境はさらに、所定の順序でコンピュータプログラムのコンポーネント間の通信を処理するように動作可能である。
【００３１】
コンポーネント間の通信は、メッセージを送信すること、又は別のコンポーネントの状態の少なくとも一部を読み込むことの少なくとも１つを含むことができる。通信は、隣接するフレームのコンポーネント間、或いは１フレーム以上離れているフレームのコンポーネント間で行うことができる。プログラムをシーケンシャルフレームに分割することは、プログラムコンポーネントの並列実行を高度にすることもできるので有利である。そのため、プログラムのコンポーネント数が増加するにつれて、プログラムコードの実行は、単一のプロセッサではもはや十分ではない場合、複数のプロセッサにわたって容易に分散することができる。従って、異なるプログラムコンポーネント、又は異なるオブジェクトを並列で容易に実行することができる。
【００３２】
メッセージは、オブジェクトからオブジェクトに、或いは外界（例：ユーザ、又はＣ＋＋プログラム）とオブジェクトとの間に送信できることが好ましい。メッセージは、システム及び外界内のオブジェクト間の通信を可能にする。メッセージは、ネットワークにわたって送信することができる。メッセージは、特定のフレーム番号及び対象オブジェクトに伝達される。同一フレームのコンポーネント間で通信を妨げるように動作可能な本発明の実施形態によれば、オブジェクトがメッセージを送信すると、その後、メッセージは、異なる、その後のフレームでのみ受信することができる。オブジェクトによるメッセージの受信は、各フレームで各オブジェクトに提供された入力メッセージの待ち行列によって実装できることが好ましい。待ち行列は、ネットワークの一貫性を維持するように、決定論的な順序付け方法を用いて順序付けされることが好ましい。
【００３３】
決定論的な順序付け方法は、
１）送信する順序；及び、
２）送信者のｉｄ
に基づいてソートされる所与のフレームで所与のオブジェクトを受信したメッセージのセット全体を含む。
【００３４】
従って、オブジェクトが２つのメッセージ：Ａ次いでＢを送信すると、受信者は、Ａ次いでＢの順で受信する。従って、到達する順は、送信する順と同じである。２つのオブジェクト（１）及び（２）がそれぞれ、２つのメッセージ：Ａ１及びＢ１と、Ａ２及びＢ２を送信すると、受信者はＡ１  Ｂ１次いでＡ２  Ｂ２の順でメッセージを受信し、順序はローカル（単一送信者からのメッセージで）及びグローバル（複数の送信者からのメッセージは送信者のｉｄによって順序付けられる）に保存される。送信者が多数の場合、送信行為は重なる場合があり、例えば、オブジェクト（１）と（２）が同時に実行される場合がある。ユーザ入力メッセージをソートできるように、クライアントに与えられたｉｄ上における追加の順序付けがあることが好ましい。例えば、２つのクライアントが同一オブジェクトにユーザ入力メッセージを送信すると、順序はクライアントｉｄによって決められる。
【００３５】
本発明の範囲内における外界とは、提案された本発明の実行環境内で実行されるプログラムを書くための好適な条件に従わない他の言語で書かれたソフトウェアのことである。外界は、ユーザからの情報の受信、ネットワークにわたるデータのストリーム送信、或いはユーザに戻す表示用結果のような重要な作業をする。外界は、後述するシステムの好適な条件に違反しないのが好ましい。外界は、本発明を具現化するシステム内のオブジェクトにメッセージを送信することができ、システム内のオブジェクトにリファレンスを保持し、システムでオブジェクトを作成し、複製又は推論的に実行するためオブジェクトセットを作成し、又はシステム内でオブジェクトの状態を読み込むことができる。外界は、関数を通じて呼び出すことができるが、システム内の任意のオブジェクトの状態を修正することはできない。しかしながら、そのような関数呼出しが異なる機械上で対応するオブジェクトの実行間で発散する可能性を生じないように確実にするために、関数呼出しは、関数に対するパラメータが同じであり、かつ、関数が呼び出されるフレーム番号が同じであれば常に、システム内の全てのコンピュータ上で全く同一の結果を戻すのが好ましい。そのような関数呼出しは、呼び出しオブジェクトのローカル状態を修正できないことが好ましい。
【００３６】
コンピュータプログラムを一連のフレーム、即ち、単位時間又は単位仕事に分割することは同期化することができ、プログラムコンポーネントの状態を一貫して定義することができるので有利である。本発明の好適な実施形態によれば、オブジェクトはフレーム内の可視状態を変えることだけでき、前フレームの最後にその他のオブジェクトの値を読みだすことだけできる。メッセージは、コンピュータプログラムの所与のフレームにも取り付けられる、若しくは関連付けられる。フレームはクロックに取り付けることができ、新しいフレームは１秒の１／５０（例えば）毎に開始し、又は、新しいフレームは最後のフレームが終了するとすぐに開始でき、或いは、フレームは、実行を完了するのに十分な入力データが利用可能であれば常に開始する個々のオブジェクト実行とパイプライン式に実行することができる。
【００３７】
フレームは階層的であってもよく、ユニバーサルフレームクロックはサブフレームに分解される。この構成により、オブジェクトセットは、複数のオブジェクトにわたって分散している特定のアルゴリズム用にはるかに高速なフレームカウンタを動作させることができるので有利である。細分性が最も粗いフレームはネットワークフレームに対応し、細分性が最も密な好適フレームは現在のプロセッサ上の動作に対応することが考えられる。本発明の実施形態によれば、オブジェクトの状態は、フレームの開始又は終了時にのみ可視でき、従って、あるフレームの開始時の状態は、前フレームの最後の状態と同じである。
【００３８】
フレーム内通信を妨げるように動作可能な実行環境に依存する本発明の実施形態によれば、フレームの開始時におけるシステムの状態は、前フレームの終了時におけるシステムの状態、及びシステムへの任意の外部メッセージだけの関数であることを理解されたい。フレーム開始時におけるシステムの状態は、フレーム開始時の全オブジェクトの状態と、前フレームから送信された任意のメッセージからなる。そのため、複数のオブジェクトを含むコンピュータプログラムに関して、システムにおける全オブジェクトのサブセットを定義することができる。サブセットは、適切なサブセットであってもよく、又は、オブジェクトが１つの場合、重要（ｎｏｎ−ｔｒｉｖｉａｌ）サブセットであってもよい。特定のフレームにおけるシステム内のオブジェクトのサブセットの状態は、前フレームの開始時におけるこれらのオブジェクトの状態の関数であり、全てのメッセージは前フレームからのオブジェクトのサブセットに送信される。
【００３９】
形式上、Ｏｎ，ｉがフレームｎの開始時でオブジェクトｉの状態であり、Ｍｎ，ｉがフレームｎからフレームｎ＋１へオブジェクトｉから送信されるメッセージのリストであり、かつ、ｆｎ，ｉがフレームｎにおけるオブジェクトｉの挙動に対応する関数であるとすれば、
（Ｏｎ＋１，ｉ，Ｍｎ＋１，ｉ）＝ｆｎ＋１，ｉ（Ｏｎ，ｉ，Ｍｎ，ｉ）である。
これは、フレームｎ＋１の状態にリターンしているフレームｎの関数である。見て分かるように、フレームｎ＋１の全体の状態は、フレームｎだけの関数である。これは、フレームｎ内に相互依存性がなく、よってフレームｎの全オブジェクトは並列で実行できるので有利であることを意味する。
【００４０】
オブジェクトの各インスタンスの各フレームは、オブジェクトデータとオブジェクト実行ポイントとを含むのが好ましい。全てのフレームの開始時と終了時で、実行ポイントがエラー又はクイットとなり計算を終了する場合を除いて、実行ポイントは、従って、次のフレームステートメントである。次のフレームステートメントは、フレームで実行される最後の命令である。使用時に、本発明を具現化する実行環境は、次のフレームステートメントを含むところまで各フレームを実行するように動作可能であることが好ましい。そのため、オブジェクト状態は、オブジェクトコードを実行する度に繰返し修正される。しかしながら、好適な実施形態によれば、繰返し変更と中間状態は任意のその他のオブジェクトには決して見えず、前フレームの終了時における状態のみがその他のオブジェクトには見える。
【００４１】
ＧＢ  ０７１２４９６．９の教示による実行環境に依存する本発明の実施形態は、仮想フィルム制作技術において特に有利であり、仮想環境内に設定したビデオデータの作成を指揮する有用な方法及びツールを提供することができる。
【００４２】
本発明の第４の態様による、コンピュータプログラムの実行から導出されたビデオデータの作成装置は、
ｉ）各コンポーネントの実行が実行フレームのシーケンスで行われるようなコンピュータプログラムの１つ以上のコンポーネントを実行するように動作可能な実行環境と；
ｉｉ）前記実行環境によって実行されている実行フレームのシーケンスに対応するビデオデータを記録するように動作可能なレコーダと、ここで、前記ビデオデータは、任意の実行フレームの状態を再作成できるのに十分であり、前記装置は、ビデオデータから再実行フレームの所望のシーケンスを得るように動作可能であり、再実行フレームの前記シーケンスは、前記実行環境で実行されるものであり；
ｉｉｉ）前記実行環境によって再実行フレームのシーケンスの実行を割り込み後、前記実行環境によって実行される再実行フレームの修正シーケンスを得るため、候補再実行フレームの状態を修正できるように動作可能なフレーム状態修正子と、
を含む。
【００４３】
再実行の１つ以上のフレームの状態を修正するステップは、プログラムコンポーネント間のフレーム間通信の特徴を利用することで本発明の実施形態により容易にできるので有利である。さらに、プログラムコンポーネント間の対話は、フレームブレークで有用に遮断し、次に変更し、追加し、随意に繰返すことができる通信に作り変えられることを理解されたい。
【００４４】
再実行のフレームを再作成するのに必要なデータは、対話がプログラムコンポーネント間で交換した通信から明らかなプログラムコンポーネントセットを形成するものとして考えることができる。従って、フレーム間通信を審査するステップは、視覚化に影響を及ぼしているパラメータに関する見識を与え、プログラムコンポーネント間でデータ送信中の際に、記録された通信を除去若しくは修正する機会をユーザに与える。
【００４５】
再実行の１つ以上のフレームの状態を修正する能力は、記録されたビデオデータとの対話を効率的にできるので、記録されたビデオを簡単かつ便利に編集することができる。実際、本発明の実施形態によってもたらされるビデオ作成及び編集の簡易化によりビデオ作成のコストと時間を削減し、仮想世界内に設定されたマシニマ撮影を３Ｄビデオ作成における非常に実現可能な選択肢にする。
【００４６】
対話の例としては、以下のものが挙げられる：
−カメラ制御、カメラ視点を動かすこと−プログラムオブジェクトとしてカメラを実装する場合には、例えば、仮想カメラが３ｄスペースで位置を変更し、自分自身で向きを変え、又は再び合焦させる所与の再実行フレームでそのオブジェクトにメッセージを送信することができる。
−アクター作成及び破棄、記録されている世界からアクターを追加又は除去すること−アクター破棄の場合、これは、仮想世界から除去するアクター（プログラムオブジェクト（単数又は複数））を選択し、未来のフレームからも消失されるよう所与のフレームからそれを除去することで達成される。オブジェクトは、新しいオブジェクトを生みだすのに既存のオブジェクトを要求しているメッセージを送信することによって、或いは、実行環境の所与のフレーム内に新しいオブジェクトを挿入することを介して、種々の方法で作成することができる。
−アクションのレパートリーの１つを実行するようオブジェクトに命令すること−例えば、「ドア」オブジェクトには、開く、或いは閉じるよう命令することができる。アクターは、例えばメッセージパッシング又は状態変異によって、動く、攻撃する、話す、若しくは立ち止まるよう命令することができる。
−アクター変異−所与のプログラムコンポーネントの内部状態を直接変更することができる。これは、瞬間移動を達成するためアクター位置の座標を変えること、或いは、異なるグラフィック効果若しくはアクション結果を達成するため健康状態などの統計値を変更することのように簡単なものとすることができる。
−タイミング変更−アクター間の対話、及びアクターに与えられるコマンドは、前の、或いは、後のフレームに合わせて動かすことができ、作成されたビデオのタイミングを変更することができる。
【００４７】
対話には、１つ以上のメッセージを介して何かをするようコンポーネントに頼むこと、或いは、内部状態の直接的な操作を介してコンポーネントに何かをさせることを含み得ることを理解されたい。
【００４８】
上の実施形態及び態様のいずれにおいて、種々の特徴は、ハードウェアに、或いは１つ以上のプロセッサ上で実行しているソフトウェアモジュールとして実装することができる。ある態様若しくは実施形態の特徴は、その他の態様若しくは実施形態のいずれに適用することができる。
【００４９】
本発明は、本明細書に記載の技術を実装するコンピュータプログラム或いはコンピュータプログラム製品、及び本明細書に記載の技術を実装するプログラムを記憶しているコンピュータ可読記憶媒体も提供する。本発明を具現化するコンピュータプログラムは、コンピュータ可読媒体上に記憶することができ、又は、例えば、インターネットウェブサイトから提供されるダウンロード可能なデータ信号などの信号形式、或いは任意のその他の形式とすることができる。
【発明を実施するための最良の形態】
【００５０】
本発明の理解を深めると共に、それがどのように実施されるかを示すために、添付の図面を参照しながら、単なる例示として、以下に説明する。
【００５１】
図１は、本発明の第１の実施形態による、全体を１０で示されている装置に関連付けられたパーツを示し、第１の動作モード（ＭＯＤＥ１）及び第２の動作モード（ＭＯＤＥ２）における装置の種々のパーツ間のデータの流れも示している。装置は、コンピュータプログラムのプログラムコードを実行する決定論的実行環境１１と、実行環境１１内で実行されたコンピュータプログラムの実行結果を視覚化する表示手段１２とを備える。ビデオデータフレームのシーケンスを記憶するように動作可能なビデオデータ記憶手段１４が設けられ、ビデオデータは再生或いは再実行データを含む。
【００５２】
時間Ｔ１で、装置１０が第１の動作モード（ＭＯＤＥ１）で動作している場合、実行環境１１１は、実行フレームＥＦのシーケンスでコンピュータプログラムのコンポーネントを実行し、ビデオデータ記憶手段１４１にビデオデータＶを出力するように動作可能である。図１に示すように、ビデオデータは、定期的に、例えば、実行フレームの完了後間もなく、ビデオデータ記憶手段に出力される。この実施形態では、ビデオデータは、インターフェース手段１５、及び／又は、プログラムコンポーネント間で行われた対話を介してユーザによって入力されたデータについての情報に加えて、プログラムコンポーネントの初期状態についての情報を含む。得られた対話のタイムラインは、ビデオデータフレームＶＦのシーケンスを形成する。
【００５３】
第１の動作モード中、キーボードなどのインターフェース１５を介してユーザによって入力されたデータは実行結果に影響し、そのため、視覚的に展開しているシーンが表示手段１２上に描かれる。
【００５４】
その後の時間Ｔ２で、装置１０が第２の動作モード（ＭＯＤＥ２）で動作している場合、ビデオデータフレームＶＦのシーケンスは、ユーザインターフェースを介して入力されたデータを用いてプログラムを前に実行した際に得られた同一の視覚化シーケンスを得るために処理される。図１に示すように、最初からビデオシーケンスを再生するために、初期のフレーム状態と、対話のタイムラインとを含むビデオデータフレームは、太矢印Ｘ、続いて情報Ｉ（周期的に入力された）で示すように実行環境に入力される。従って、第２の動作モード中、装置は、ユーザが視覚化を制御できないまま、変化している視覚表示を観察できるように動作可能である。
【００５５】
図１に示す装置の重要な特徴は、インターフェース１５、モード切換手段１６を介して作動することによって、任意の時間、通常、フレームの終了時に、ユーザが第１及び第２の動作モード間を双方向に切換えできることである。重要なのは、装置により、ユーザが、矢印Ｓで示すように第２のモードから第１のモードに装置の動作モードを変更し、動作モードを切換えながら、ビデオデータフレームに対応するフレームの実行を再作成できるのに十分なデータを得ることができることである。
【００５６】
前に行われた実行シーケンスを再生し、記録された対話Ｉのタイムラインを用いて得られた視覚化を観察するために、装置の実行環境１１に入力される第２の動作モードで再実行データを利用する本実施形態によれば、動作モードの変更とは、実行環境がビデオデータ記憶手段から記録された情報を受信しなくなり、むしろ、プログラムコンポーネントの継続実行に使用されるユーザインターフェース１５を介してリアルタイムデータを受信することを実際上意味している。
【００５７】
図２は、第２の動作モードから第１の動作モードに、本発明を具現化する装置の動作モードの変更をフレームレベルで示すものである。図２Ａは、装置が第１の動作モードで動作している際にコンピュータプログラムの実行中に時間Ｔ１で作成された、Ｆ１からＦ１０の実行フレームシーケンスを示す。フレーム状態は、実行プロシージャ中に、第１の実行フレームの開始時における初期状態ＩＳから第１の実行フレームの終了時の状態Ａへと展開する。図２Ａに示すように、実行プロシージャの終了時に、フレーム状態は状態Ｊに展開している。時間の経過に伴って変化しているフレーム状態は、表示データを得るため各フレームの状態をクエリすることで、通常の方法で表示手段上に視覚化することができる。表示データの作成は、必要に応じて、或いは、所望の場合、２つの実行フレーム間の表示データを得るための補間技術を含む場合がある。さらに、初期実行プロシージャ中、ビデオデータは作成され、装置のビデオデータ記憶手段に記憶される。
【００５８】
図２Ｂは、第２の動作モード（ＭＯＤＥ２）から第１の動作モード（ＭＯＤＥ１）への、本発明を具現化する装置の動作モードにおける変更を示している。時間Ｔ２で、装置は、実行フレームＦ１からＦ４にわたって当初行なった実行の視覚化を得て、観察するために、ビデオデータフレームＶ１からＶ４を処理するように動作可能である。Ｖ４で、装置の動作モードはＭＯＤＥ２からＭＯＤＥ１に変更する。この時点で、装置は、ビデオデータフレームＶ４に含まれるビデオデータから、ビデオデータフレームに対応する実行フレームを再作成できるのに十分な実行データＸを導出するように動作可能である。これはＦ４’で示されている。次に、装置が第１の動作モードで動作している状態で、ユーザは、ユーザインターフェースを介して実行環境に入力データを供給することでプログラムコンポーネントの実行を制御することができる。従って、プログラムコンポーネントの対話を制御するためユーザによって入力されたデータが、時間Ｔ１で開始した実行シーケンス中に供給された入力データと同一ではないと仮定すると、フレームＦ１０’でのプログラムコンポーネントの状態はＪ’であり、フレームＦ１０の終了時の状態Ｊと異なる。
【００５９】
図２Ｂに示した実行プロシージャは、動作モードの変更の直後に行ってもよいし、任意のその後の時間Ｔ３で行ってもよいことを理解されたい。
【００６０】
図３は、本発明の第２の実施形態によるユーザによって行われる主なステップを示している。ステップ１で、時間Ｔ１で行う第１の動作モードにおいて、プログラムのコンポーネント（又はその一部）は、表示手段上で実行結果の視覚化を得るために実行される。実行処理中、ビデオデータは作成され、記録される。その後の時間Ｔ２で開始するステップ２で、ステップ１で作成されたビデオデータは、再実行データを得るため処理される。ビデオデータが初期のフレーム状態、及び、プログラムコンポーネント（例：ユーザインターフェースを介する入力）への／からの通信のタイムライン、並びにプログラムコンポーネント間の通信のタイムラインの形態の再生データを含む場合、ビデオデータを処理するステップは、初期のフレーム状態についての情報、及び、初期状態と所望の再実行フレームとの間で行った対話の記録に基づいて、所望の再実行フレーム（第１の実行フレームの実行前の初期状態ではない場合がある）の状態の計算を含む。ステップ３で、ステップ２で作成した再実行データを用いて、ステップ１で得られた実行フレームの所与のシーケンスに対する視覚化を再生することができる。
【００６１】
ステップ４で、方法は、再生モード（モード２）から実行モード（モード１）への動作モードの切換えを含む。次に、ステップ５で、ユーザは、動作モードが切換えられたフレームからプログラムの実行を継続することができる。事実、コンピュータゲームの場合、プレーヤは、記録されたビデオシーケンス内の任意のポイントからゲームプレイを継続することができる。
【００６２】
本発明の第２の実施形態によれば、ビデオの作成中におけるプログラムコンポーネントの実行は、ＧＢ  ０７１２４９６．９に従う決定論的実行環境で行われる。
【００６３】
完全のために、以下の説明は、ＧＢ  ０７１２４９６．９に含まれる教示による実行環境の動作及び技術的実装に関する。
【００６４】
各オブジェクトは、オブジェクトを作成した後に呼び出されるメインプロシージャを有している。メインプロシージャは、例えば、「次のフレーム」ステートメントを含んでもよい。オブジェクトはその状態を変更することができる。しかしながら、修正された状態は次のフレームを開始するまでその他のオブジェクトには見ることはできず、コードはオブジェクトのローカルコピーを保持する。ローカルコピーだけがオブジェクトによって修正される。この修正されたローカルコピーはフレームの終了時にオブジェクトによって戻される。実行システムは、元のフレーム用のデータストアに元のオブジェクトを保持しながら、戻され、修正されたこのオブジェクトをフレーム用に設けたデータストアに記憶する。従って、フレームｎの強要中に、フレームｎ−１を記憶し、各オブジェクトの実行結果をｎに記憶する必要がある。フレームｎ＋１が実行を開始するまで、フレームｎは読み込まれない。
【００６５】
図４は、各オブジェクトのメインプロシージャの流れ図を示している。ここで、コードフラグメントは、（１）オブジェクト作成、或いは単一の次のフレームステートメントのいずれかにより開始し、（２）流れグラフ上の全ての出口ポイントが次のフレームステートメント又はオブジェクトエンドであり、尚且つ、（３）任意のコードフラグメント内には次のフレームステートメントがない、コードセクションと定義する。各コードフラグメントは、入力が、フレームｎ−１の全参照オブジェクトと、フレームｎ−１からフレームｎへの全メッセージの状態であり、かつ、戻り値がフレームｎのオブジェクトと、フレームｎのオブジェクトからフレームｎ＋１へのメッセージの状態である関数である。各々のコードフラグメントは、実行形式に別々にコンパイルすることができるが、その他の選択肢も可能である。各コードフラグメント用の実行形式は単一の入口ポイントを含み、オブジェクトの変更バージョンを戻し、いったん次のフレームが開始すると、継続するためリファレンスにコードフラグメントを戻す。実行コードフラグメントは、次のフレームを開始するまで、その他のオブジェクトに見える任意のデータを変更することはできない。ローカル変数値などのデータがあるフレームから次のフレームに保存する順で、スタックフレームをヒープ上に作成し、ローカル変数値を記憶することができる。
【００６６】
実行はフレームに分割される。各フレームに対して、システムはシステムの全オブジェクトを通して起動し、１つ１つを実行する。オブジェクトを順不同又は並列に実行することが完全に可能である。各オブジェクトは、オブジェクト及び実行ポイントのデータ量を含む状態を有している。オブジェクトが作成されると、実行ポイントは、オブジェクトのメインプロシージャの開始時点である。オブジェクトのメインプロシージャの実行が次のフレームステートメントに到達すると、そのオブジェクトの実行はこのフレームのために停止する。フレームの終了時に、新たなオブジェクト状態が記憶される。オブジェクトコードの実行中に、メッセージを作成してもよい。これらは待ち行列を作り、対象オブジェクトに取り付けなければならない。メッセージは、次のフレーム上の対象オブジェクトによってだけ読み取ることができる。メッセージは、以下に説明するネットワークにわたって送信される必要もある。また、オブジェクトはメッセージに読み込んでもよい。メッセージは決定論的順序で読み込まなければならない。これにより、複数のシステム上で順不同かつ並列な実行をすることができる。順序はシステムによって定義することができ、ここでは説明しない。フレームの終了時に、未使用のメッセージは全て捨てることができる。全ての修正オブジェクトは修正され、フレーム番号は１だけ増える。実行は次のフレームへと継続することができる。
【００６７】
図５は、ＧＢ  ０７１２４９６．９に記載の決定論的実行環境の手段によってａからｄで表示されている４つのオブジェクトの実行を示している。フレームｎの状態は公知であり、フレームｎの実行は、ｂからａにメッセージを作成している。フレームｎ＋１では、オブジェクトｃはオブジェクトｂ及びｄからデータを読み込む。フレームｎ＋２では、オブジェクトはオブジェクトｃからデータを読み込む。図１から、同一フレームのオブジェクト間の通信がないことが分かる。メッセージの依存性はあるフレームから次フレームまでにのみ存在するが、読み込みの依存性は現在のフレームから前フレームまでにのみ存在する。この特徴は、システムを並列及びネットワークにわたって実行することができることである。図は、ａがフレームｎ＋１まで計算され、ｂは無視される部分実行を示している。これは、推論的状態（真の入力データと推測の入力データの混合に基づいている）を計算するため現在の一貫したネットワーク状態を超えて実行することができることを示している。しかしながら、フレームｎ＋１におけるｂがａにメッセージを送信することが後で判明すると、フレームｎ＋１におけるａの実行は偽の可能性があり、再計算する必要があり得る。
【００６８】
各フレームに対する各オブジェクト用のコードは、前フレームにおける全参照オブジェクト値と、オブジェクトによって受信した全メッセージ値との関数として考えられる。従って、フレームｎのオブジェクトとフレームｎからフレームｎ＋１へのメッセージがシステムを通して一貫しているとすると、フレームｎ＋１の全オブジェクトの状態とフレームｎ＋１からフレームｎ＋２へのメッセージは、システムを通して一貫しているデータの関数にすぎない。そのため、初期状態及び初期メッセージが一貫しており、かつ、関数が一貫して実行される限り、オブジェクトは一貫性を保つ。言い換えると、システムは、その原因が全て知られているので決定論的である。
【００６９】
本発明の実行環境内、特に、ＧＢ  ０７１２４９６．９の教示による決定論的実行環境でプログラムを実行することができるように、適切に構造化されているのが好ましい。これを行うために、以下の好適な条件を考慮して書かれているのが好ましい。これら好適な条件は、言語で書くことができることを制限し、プログラムコードがネットワークにわたって安全に分散できることを保証する。好適な条件は以下のものである。
（１）プログラムは、疎結合の独立計算に分割されるように書かれており、各計算は、任意のある時間で実行状態におけるゼロ以上のインスタンスを有する。
（２）各計算インスタンスは、挙動（コード）と状態（データ及び実行ポイント）を有する。
（３）実行は「フレーム」に分割される。
（４）各フレームにおいて、システムは、システムの全計算を通して起動し、「次のフレーム」ステートメントに達するまでこれらのコードを実行する。
（５）計算間の通信に関して、計算はその他の計算へのリファレンスを含むことができ、その他の計算の状態を読み込むことを含むことができ、これらのローカル状態を修正することができ、その他の計算からメッセージを受信することができ、かつ、その他の計算にメッセージを送信することができる。
（６）計算はその他の計算を直接変更できないが、計算にメッセージを送信し、計算状態を読み込むことだけできる。
（７）計算がその状態を変えると、変更はそれ自体に直ちに見えるようにするが、次のフレームまでその他の計算には見えない。
（８）計算はその他の計算を作成することができる。その他の計算は次のフレームが始まると存在する。理解しやすいように、以下の本文はオブジェクトとして計算を指すものとする。しかしながら、その他の形式の計算を同様に使用できることが理解されるであろう。
【００７０】
図６は、ビデオデータのフレーム状態の修正を含む、本発明の別の実施形態によるコンピュータプログラムの実行から導出されたビデオデータの作成を指揮する方法で行われる主なステップを示すものである。
【００７１】
ステップ１で、時間Ｔ１で行う第１の動作モードにおいて、プログラムのコンポーネント（又はその一部）は、表示手段上で実行結果の視覚化を得るために実行される。実行処理中、任意の実行フレームの状態を再作成できるのに十分なビデオデータが作成され、記録される。この実施形態では、プログラムの各コンポーネントの実行は実行フレームのシーケンスで行われ、実行環境は、ある前記コンポーネントと異なる実行フレーム中の別の前記コンポーネントとの間の通信を可能にし、かつ、同一実行フレームにおけるある前記コンポーネントと別の前記コンポーネントとの間の通信を妨げるように動作可能である。
【００７２】
その後の時間Ｔ２で開始するステップ２で、ステップ１で作成されたビデオデータは再実行データを得るように処理される。この実施形態では、ビデオデータは再実行フレームの所望のシーケンスを得るように処理される。ビデオデータが初期状態及び介入のタイムラインを含む場合、尚且つ、初期フレームから元の実行を再生することを望む場合には、このステップは処理する必要がない場合が実際にはある。ステップ３では、ステップ２で作成された再実行データを用いて、ステップ１で得られた実行フレームの所与のシーケンスの視覚化を再生することができる。
【００７３】
ステップ４は、ユーザが再実行データとの対話を可能にするために、再実行データの実行を一時停止することを含む。特に、これは、再実行の１つ以上のフレームの状態を修正する機会を与えるものである。ステップ５で、ビデオデータを再び作成し、記録しながら、修正されたデータの実行を開始する。このようにして、最終ビデオシーケンスを作成するために、必要に応じてビデオデータの修正を介して、得られた視覚化を所望に応じて指揮することができる。
【００７４】
いったん所望の視覚結果が得られると、ビデオデータは、必要に応じて、出力形式に変換することができ、ＤＶＤなどのデジタル記録媒体上に記憶することができる。
【００７５】
図７Ａ、７Ｂ、７Ｃ、及び７Ｄは、記録された再実行フレームのシーケンスの実行の割り込み後に、フレームの状態を修正することができる種々の方法を示している。これらの例のいずれにおいて、コンピュータプログラムはコンピュータゲームであり、プログラムコンポーネントはゲームオブジェクトを含んでいる。
【００７６】
図７Ａは、フレームＮでの記録された再実行フレームのシーケンスの実行を示している。フレームＮの状態は、４つのゲームオブジェクト７１ａ、７１ｂ、７１ｃ、及び７１ｄの状態、及び、入力及び出力メッセージの状態によって決められる。
【００７７】
ユーザインターフェースにより、フレームから１つ以上のアイテムを除去することでフレームＮの状態を修正することができる。図７Ａにおいて、入力メッセージ７２ｂ及び出力メッセージ７３ｂは両方とも削除される。さらに、ゲームオブジェクト７１ｃもフレームから削除される。そのため、修正されたフレームＮ’は、フレームＮに対して変更されている状態をもたらす。
【００７８】
図７Ｂは、アイテムをフレームに追加させることによってフレームＮをフレームＮ’に修正することを示す。これは、新しいアイテムをフレームに挿入することであってもよく、或いは、１つ以上のアイテムにそれらを複製させることであってもよい。図７Ｂにおいて、フレームＮは入力メッセージ７２ｄと出力メッセージ７３ｃ両方の追加により修正される。さらに、新しいゲームオブジェクト７１ｅはフレームに追加される。
【００７９】
図７Ｃは、フレームに含まれる多数のアイテムを変えるか或いは変異させることで、フレームＮをフレームＮ’に修正することを示す。図７Ｃにおいて、入力メッセージ７２ｃと出力メッセージ７３ｂは、ゲームオブジェクト７１ｃと同様に両方とも変えられる。フレームアイテムの変異を実装することができるいくつかの可能な方法を図７Ｄに示す。メッセージＭの場合、誰がメッセージの受信者となるか、及び／又は、メッセージの値が何であるかを変えることができる。メッセージ値は、任意のスクリプト言語データ値（例：単一のデータアイテムから複雑なグラフまで）であってよい。オブジェクトの場合、オブジェクトのデータコンポーネント、例えば、そのフィールド及びローカル変数値の状態を変えることができる。実行のポイントを変えることもできる。
【００８０】
熟練した読者であれば、フレームの状態を修正するこれら種々のメカニズムが、その後の実行で得られた視覚化を変えるために、記録されたビデオデータとの対話をどのように非常に容易かつ有用にできるかは理解できるであろう。
【００８１】
本発明をいくつかの実施形態及び例として記載及び説明してきたが、本発明が、本発明の原理から逸脱せずに種々の方法に変更、具現化、精緻化、又は応用できることは明らかであろう。本発明は、携帯記憶媒体に記憶され、デジタル通信、又はその他の伝送媒体によって送信され、或いは、コンピュータメモリに記憶されるソフトウェアプログラム及びデータ構造に実装することができる。そのようなプログラム及びデータ構造は、本発明を具現化する方法を行い、かつ、本明細書に記載の能力を有する機械、又は装置の一部として動作するようにコンピュータ上で実行することができる。
【図面の簡単な説明】
【００８２】
【図１】本発明の第１の実施形態による装置に関連付けたパーツを示す。
【図２Ａ】本発明を具現化する装置の動作モードにおける変更をフレームレベルで示す。
【図２Ｂ】本発明を具現化する装置の動作モードにおける変更をフレームレベルで示す。
【図３】本発明の第２の実施形態によるユーザによって行われる主なステップを示す。
【図４】別の実施形態によるオブジェクトの流れグラフを示す。
【図５】プログラム実行の図である。
【図６】本発明の別の実施形態によるコンピュータプログラムの実行から導出されたビデオデータの作成を指揮する方法で行われる主なステップを示す。
【図７Ａ】本発明の実施形態によるフレームの状態に行うことができる種々の可能な修正を示す。
【図７Ｂ】本発明の実施形態によるフレームの状態に行うことができる種々の可能な修正を示す。
【図７Ｃ】本発明の実施形態によるフレームの状態に行うことができる種々の可能な修正を示す。
【図７Ｄ】本発明の実施形態によるフレームの状態に行うことができる種々の可能な修正を示す。
【図１】
2009146409.tif 000003
【図２Ａ】
2009146409.tif 000004
【図２Ｂ】
2009146409.tif 000005
【図３】
2009146409.tif 000006
【図４】
2009146409.tif 000007
【図５】
2009146409.tif 000008
【図６】
2009146409.tif 000009
【図７Ａ】
2009146409.tif 000010
【図７Ｂ】
2009146409.tif 000011
【図７Ｃ】
2009146409.tif 000012
【図７Ｄ】
2009146409.tif 000013