(57)【特許請求の範囲】
【請求項１】
プロセッサ上で実行される人工知能サブシステム（ＡＩサブシステム）が、コンピュータゲームの人工知能キャラクタ（ＡＩキャラクタ）が見ることができる前記コンピュータゲームのシーンの変形可能なオブジェクトを特定する段階と、
前記ＡＩサブシステムが、前記変形可能なオブジェクトに対する前記ＡＩキャラクタによる少なくとも１つの動作の結果を判断するべく、前記少なくとも一つの動作により生じる前記変形可能なオブジェクトの変形をシミュレーションする少なくとも１つの投機的物理シミュレーションを物理サブシステムに要求する段階と、
前記ＡＩサブシステムが、前記物理サブシステムによる前記少なくとも１つの投機的物理シミュレーションに少なくとも部分的に基づいて、前記ＡＩキャラクタがとりうる複数の動作のうち１つの動作を選択する段階とを備える方法。
【請求項２】
前記選択する段階は、前記複数の動作のそれぞれに関するコストに少なくとも部分的に基づいて、前記複数の動作から前記１つの動作を選択する段階を含む請求項１に記載の方法。
【請求項３】
前記要求する段階は、複数の前記投機的物理シミュレーションを前記物理サブシステムに要求する段落を含み、
前記物理サブシステムによる複数の前記投機的物理シミュレーションの優先順位は、対応する前記変形可能なオブジェクトと前記ＡＩキャラクタとの間の距離に基づく請求項１又は２に記載の方法。
【請求項４】
前記物理サブシステムが、複数の前記投機的物理シミュレーションの要求を受信すると、第１の精度を有するシミュレーションモデルを用いて前記少なくとも１つの投機的物理シミュレーションを行う段階をさらに備え、
前記第１の精度は、前記変形可能なオブジェクトの実際の動きに対して行われるシミュレーションモデルの第２の精度よりも低い請求項１から３のいずれか一項に記載の方法。
【請求項５】
前記複数の動作のうち１つの動作を選択する段階の前に、前記ＡＩサブシステムが、前記少なくとも１つの動作の前記結果を前記物理サブシステムから受信して、前記結果に基づいて前記ＡＩキャラクタがとるべき潜在的な動作のグラフを更新する段階をさらに備える請求項１から４のいずれか一項に記載の方法。
【請求項６】
前記少なくとも１つの投機的物理シミュレーションを行う段階では、複数の前記投機的物理シミュレーションの各々が、前記プロセッサに含まれる複数のコアのうちの異なるコア上で実行される請求項４に記載の方法。
【請求項７】
前記物理サブシステムが、前記ＡＩサブシステムによって要求された前記少なくとも１つの投機的物理シミュレーションの実行に対して利用可能なプロセッサリソースを予め定められたレベルに制限する段階をさらに備える請求項１から６のいずれか一項に記載の方法。
【請求項８】
前記コンピュータゲームのシーンの前記変形可能なオブジェクトを特定する段階、前記ＡＩサブシステムから要求する段階、及び前記ＡＩサブシステムにより前記動作のうち１つの動作を選択する選択する段階は、前記ＡＩサブシステムが前記コンピュータゲームのプロトタイプを実行中に行われる請求項１から７のいずれか一項に記載の方法。
【請求項９】
コンピュータに実行させるためのプログラムであって、
前記コンピュータに、
コンピュータゲームの人工知能キャラクタ（ＡＩキャラクタ）が見ることができる前記コンピュータゲームのシーンの変形可能なオブジェクトを特定させ、
前記変形可能なオブジェクトに対する前記ＡＩキャラクタによる少なくとも１つの動作の結果を判断するべく、前記少なくとも一つの動作により生じる前記変形可能なオブジェクトの変形をシミュレーションする少なくとも１つの投機的物理シミュレーションを要求させ、
前記少なくとも１つの投機的物理シミュレーションに少なくとも部分的に基づいて、前記ＡＩキャラクタがとりうる複数の動作のうち１つの動作を選択させる、プログラム。
【請求項１０】
プロセッサ上で実行される人工知能サブシステム（ＡＩサブシステム）と、
少なくとも１つの投機的物理シミュレーションを行う物理サブシステムと
を備え、
前記ＡＩサブシステムが、コンピュータゲームの人工知能キャラクタ（ＡＩキャラクタ）が見ることができる前記コンピュータゲームのシーンの変形可能なオブジェクトを特定し、
前記ＡＩサブシステムが、前記変形可能なオブジェクトに対する前記ＡＩキャラクタによる少なくとも１つの動作の結果を判断するべく、前記少なくとも一つの動作により生じる前記変形可能なオブジェクトの変形をシミュレーションする前記少なくとも１つの投機的物理シミュレーションを前記物理サブシステムに要求し、
前記ＡＩサブシステムが、前記物理サブシステムによる前記少なくとも１つの投機的物理シミュレーションに少なくとも部分的に基づいて、前記ＡＩキャラクタがとりうる複数の動作のうち１つの動作を選択する、システム。
【請求項１１】
コンピュータに実行させるためのプログラムであって、
前記コンピュータに、
コンピュータゲームのプロトタイプ版の開発実行中に人工知能キャラクタ（ＡＩキャラクタ）が見ることのできる前記コンピュータゲームのシーンの変形可能なオブジェクトを特定させ、
前記ＡＩキャラクタによる前記変形可能なオブジェクトに対する可能性のある少なくとも１つの動作の結果を判断するべく、前記少なくとも１つの動作により生じる前記変形可能なオブジェクトの変形をシミュレーションする少なくとも１つの投機的物理シミュレーションを行わせ、
前記ＡＩキャラクタがとりうる可能性のある複数の静的に定義された動作のグラフを、動的に定義された動作に対応する結果で動的に更新させ、
前記結果を、前記コンピュータゲームのプログラマがアクセスする一時記憶に格納させる、プログラム。
【請求項１２】
前記コンピュータに、更に、前記可能性のある複数の静的に定義された動作の前記グラフから前記ＡＩキャラクタがとりうる複数の動作のうち１つの動作を選択させる請求項１１に記載のプログラム。
【請求項１３】
前記コンピュータに、更に、前記動的に定義された動作に関するコストが前記複数の静的に定義された動作のコストより高い場合であっても、前記動的に定義された動作を実行のために前記ＡＩキャラクタに選択させる請求項１１又は１２に記載のプログラム。
【請求項１４】
前記コンピュータに、更に、選択された前記動作により生じる結果を、前記プログラマがアクセスする前記一時記憶に格納させる請求項１１から１３のいずれか一項に記載のプログラム。
【発明の詳細な説明】
【背景技術】
【０００１】
コンピュータゲームの分野では、コンピュータに制御される実体の動作を統括するべく人工知能（ＡＩ）が含められる場合がある。ビデオゲームにおけるＡＩの例としては、ＡＩの実体が有限状態マシンまたは目的に基づく計画を利用してゲーム内の目的を達成して、知能の錯覚を起こさせるような計画、ＡＩにより制御される実体が経路発見アルゴリズムを利用して環境をナビゲートして所望の地点に到達する経路発見、および、ＡＩにより制御される実体がしばしば自身の動きを他人の動きに基づいて調節するステアリングが含まれる。ＡＩ技術の適用により、コンピュータゲームは、知能の錯覚および興味深い目標をプレーヤに提示し、ビデオゲームの成功の決定要因になりうる非人間実体を含むことができるようになる。
【０００２】
コンピュータゲームでは物理シミュレーション（以下、「物理」と称する）も利用される。ゲームにおける物理は、オブジェクト間の衝突を検出したり、衝突の反応（反発、融合、粉砕）を制御したりする行動、流体の流れのシミュレーション（例えば、河川を含む環境または流体を利用する武器を示す目的から）、衣類シミュレーション（着衣または武装する人または生き物のリアリティを高める目的から）武器物理（軌道シミュレーション、爆発シミュレーション）、その他様々なトピックを含む。より最近のビデオゲームへの物理応用には、オブジェクトを物理で操作できるような変形可能な世界というコンセプトが含まれるようになってきている。変形可能な世界では、オブジェクトの幾らかまたは全てを物理的特性により記述し、プレーヤとオブジェクトとの相互作用により、ゲーム環境を変化させ、操作することができる。このような変形可能な世界の物理が可能とする事例には、ドアを通るのではなく壁に穴を開けること、あるいは、武器を発射させるのではなく環境内に見つかる椅子を投げつけること等が含まれる。
【０００３】
しかし、物理もＡＩも双方とも、ビデオゲームにおいてコンピュータを集中的に利用する傾向にある。現在のゲームの物理は、毎秒１０−１００ｘ１０９浮動小数点演算を消費し（ＧＦＬＯＰＳ）、将来のゲームは、体積流体（volumetric fluid）等の多くの環境物理特性をサポートするためにこれ以上のコンピュータリソースを消費することが見込まれる。さらに、物理およびＡＩを実装するソフトウェアは、コードの複雑性（分岐、不定期／非ストリーミングメモリアクセス）およびデータの複雑性（高度なデータ構造の利用）両面から、複雑な場合が多い。一般的には、物理サブシステムおよびＡＩサブシステムは、相互作用はしない。
【図面の簡単な説明】
【０００４】
【図１Ａ】本発明の一実施形態における予めプログラミングされた潜在的な動作の例示的なグラフである。
【図１Ｂ】本発明の一実施形態における例示的なグラフを示す。
【図２】本発明の一実施形態における方法のフロー図を示す。
【図３】本発明の一実施形態における１以上の投機的物理シミュレーションを行う方法のフロー図を示す。
【図４】本発明の一実施形態におけるシステムのブロック図である。
【発明を実施するための形態】
【０００５】
実施形態は、ビデオゲーム等のコンピュータベースのゲームにおいてＡＩと物理とを組み合わせることに利用可能である。より詳しくは、これら異なる技術を、ＡＩが達成を希望する一定の目的（例えばプレーヤの殺人）を有する目的指向のＡＩというコンセプトと、変形可能な世界の物理の投機的実行（例えば壁を撃つことによりプレーヤの上に建物が倒れるか否かを評価すること）を組み合わせる等により組み合わせることができる。ゲーム物理およびＡＩの場合に、目的指向のＡＩシステムは、このように、物理指向の変形可能な世界を、可能性ある動作の一般的な（状況に応じた、または予めプログラミングされたものではない、という意味）レパートリに加えることができる。従って設計者が常に物理環境の変形可能性によりＡＩ実体に与えられる全てのオプションを予期する必要があるのではなく、ＡＩ実体が、変形可能なオブジェクトと投機的に相互作用することによりオプションを動的に発見する機能を有するようになる。本明細書で利用される「ＡＩ実態」または「ＡＩキャラクタ」という称呼は、ＡＩシステムが制御するゲーム環境に存在するアクタまたはその他のエージェントを表す。
【０００６】
ＡＩ指向の発見の一例では、ＡＩシステムは、壁を撃つことで、プレーヤが衝突により死ぬか否か、ベンチを押すことがプレーヤを捕まえる新たな方策となりうるか、あるいは、爆弾の爆発によりプレーヤの通過を妨げることができるか、等を決定することができる。これにより、さらに、変形可能な世界の物理機能を有効利用することが可能となり、同時に、ＡＩの創造性が豊かになり、ＡＩキャラクタの知性をプレーヤに与えたかのように見えるようになる。
【０００７】
これに対して、今日の殆どのビデオゲームでは、ＡＩおよび物理は、比較的限定された様式で利用されている。通常ＡＩは、状態に基づく、あるいは、非常に限定された目的指向の行動をとる。さらに、ＡＩキャラクタが利用可能なオプションは、設計者により記述される必要がある。これは労力がかかるプロセスであり、且つ、設計者が静的に生成する環境との相互作用にＡＩを限定するプロセスである。従って、現在のゲームのＡＩは、世界の変形の可能性を提供する場合もあるが、このような可能性はゲームの設計者により手動で予めプログラミングされている現状である。例えば、ＡＩキャラクタが窓から侵入して部屋に入るというオプションは、設計者がこのオプションを明示的にＡＩアルゴリズムに追加しているときに限って可能となる。通常このようなオプションは、試みることのできる特定のオブジェクトまたは動作のリストのみを含む。さらに、現在のコンピュータゲームは、プレーヤが動作して、物理シミュレーションによりその結果をモデリングするという反応性の物理を利用している。しかしこのようなゲームでは、目的指向のＡＩと投機的物理実行との組み合わせが利用できない。本発明の一実施形態を利用してこれら２つの技術を組み合わせることにより、ゲームがプレーヤにとってよりチャレンジングで、且つ面白いものになり、ゲームの設計者が必要な作業量を低減させることができ、ＡＩの機能を増やすことで、設計者も予期しない方法で物理環境を有効利用できるようになる。
【０００８】
多くの実装例が可能であるが、一実施形態を一例として示す。本例示的な実施形態では、目的指向の計画を利用して、設計者がゲーム開発中に、ＡＩキャラクタがとりうる動作とその可能性ある結果を示す潜在的な動作のグラフを作成する。これを利用することでＡＩキャラクタの目的が達成される。
【０００９】
図１Ａは、予めプログラミングされた潜在的な動作を示す例示的なグラフを示し、ここでの目的は、ドアの壁の反対側のスイッチを押すことである。図１Ａでは、ノードは、ＡＩキャラクタがとりうる状態であり、エッジはＡＩキャラクタがとりうる動作を示す。エッジは、さらにコスト値とともに示されており、ＡＩキャラクタの特定の動作に対する嗜好性を示す。従って図１Ａの潜在的な動作のグラフ１０は、ＡＩキャラクタがとりうる状態をそれぞれ示す複数のノード２０、２５、および３５を含む。特に、状態２０は、ドアを開けた後のＡＩキャラクタの位置および状態に関しており、ノード２５は、ドアを蹴り倒した後のＡＩキャラクタの状態および位置に関しており、ノード３５は、ＡＩキャラクタがスイッチを押した後であってよい。一実施形態では、ＡＩサブシステムは、グラフから目的までの最も低いコストの経路を探し、計画を実行する。例えばドアが施錠されている場合、ＡＩはこれに気づいて、計画を練り直す。図１Ａの実施形態では、括弧内の数値が各動作のコストを示している。
【００１０】
本発明の一実施形態を利用すると、この予めプログラミングされたグラフを、ＡＩシステムから物理システムへのクエリにより提供されるオプションにより動的に強化することができる。例えば上述のシナリオでは、壁の幾らかの部分をレンガの積層として、爆発で操作可能な状態にモデリングすることができる。設計者からの入力がない場合、ＡＩシステムは、キャラクタから見ることのできる全ての変形可能なオブジェクトを動的にレイキャストすること（raycast）により特定することができる。オブジェクトが見つかると、投機的物理シミュレーションを行って、例えばロケット発射によりオブジェクトを射撃した結果、ＡＩキャラクタが目的を達成できるか否かを判断することができる。このオプションが利用可能であった場合には、図１Ａは、図１Ｂのグラフに類似するよう強化されうる。
【００１１】
より具体的には、図１Ｂは、本発明の一実施形態による潜在的な動作のグラフを示す。グラフ１０では、さらなる状態４０が存在している。このさらなる状態４０は、ゲームのランタイム中に動的に追加されうる。つまり、ＡＩサブシステムは、自身の存在する環境を見て、変形可能なオブジェクト（例えば壁）の存在を判断し、物理サブシステムに対する要求を生成して、投機的物理シミュレーションを行わせ、ある動作（例えば壁に向けてロケット発射を行うこと）の結果、所望の結果が生じるか否か（つまり、壁またはその一部を打破して、ＡＩキャラクタが最終目的を達成することができるか否か）を判断させることができる。従って、図１Ｂのグラフ１０'は、図１Ａのグラフ１０のものに等しい予めプログラミングされたオプションから始めてこのグラフをＡＩサブシステムが要求する１以上の投機的物理シミュレーションの結果に基づいて更新することで、ランタイム中に動的に生成される。このようにして、この強化されたグラフによって、設計者が明示的にその全ての可能性ある動作を記述する必要なく、ＡＩキャラクタが様々な方法で環境と相互作用することができるようになる。図１Ｂの実施形態では、壁に向けたロケット発射のコストは、他の潜在的な動作のものよりも高い場合がある。幾らかの実装例では、このような投機的動作に伴うコストは、設計者が決定することもできる。例えば、全てのロケット発射は、設計者がＡＩキャラクタに対してより繊細な方法を望む場合には、乱闘よりも高い一定のコストを付すことができる。他の実装例では、コストを物理サブシステムにより生成することもできる。例えば、特定の重量のブロックを押す際に加えられる動作を利用して、ＡＩキャラクタに、より小さい物理動作を嗜好させることができる。
【００１２】
図２は、本発明の一実施形態による方法のフロー図を示す。図２に示すように、方法１００がランタイム中にＡＩサブシステムにより利用されることで、１以上の投機的物理シミュレーションの結果を要求して取得して、この結果を、とるべき動作の決定に利用することができる。図２のフロー図はゲーム実行中のランタイムに関するが、実施形態は、ゲーム開発の設計段階中に利用されてもよい。従って以下に示すように、ＡＩサブシステムは、ゲームのプロトタイプの実行中に図２に示すものに類似した方法で動作することで、変形可能なオブジェクトに対してとりうる様々な潜在的な動作を決定して、投機的物理シミュレーションの結果に基づいてゲームの設計者が１以上の潜在的な動作を予めプログラミングされた動作の選択肢に組み込むという選択ができるようにしてよい。
【００１３】
図２の方法１００は、ＡＩキャラクタが見ることのできる変形可能なオブジェクトを特定する要求を発行することから始まる（ブロック１１０）。様々な実施形態では、ゲーム実行中にＡＩサブシステムは、ＡＩキャラクタが環境に入ると、ＡＩキャラクタが見ることのできる１以上の変形可能なオブジェクトの存在を判断することができる。これら変形可能なオブジェクトの少なくとも１つまたはこれより潜在的に多い数または全てについて、ＡＩサブシステムは、これら変形可能なオブジェクトの１以上に対して行われるべき投機的動作の投機的物理シミュレーションの要求を生成することができる（ブロック１２０）。このようにしてＡＩサブシステムは、これら要求を、以下に詳述するように投機的物理シミュレーションを実行することのできる物理サブシステムに対して送る。
【００１４】
ブロック１３０で、シミュレーション結果が物理サブシステムから受信されてよい。任意の投機的動作が所望の結果を生じさせること（例えば壁を蹴り倒すこと、バリアを構築すること、または、その他所望の動作を生じさせること）に成功するか否かを示しうるこれらの結果に基づいて、これら結果を潜在的な動作のグラフに組み込むことができる（ブロック１４０）。例えば、図１Ｂに戻ると、投機的物理シミュレーションの結果に基づいて、ＡＩサブシステムはさらなるノード４０を追加して、グラフ１０を作成することができる。このグラフに基づいて、潜在的な動作（グラフに示すもの等）のうちの１つが選択されうる（ブロック１５０）。より具体的には一実施形態では、ＡＩサブシステムは、実行する際のコストが最も低い動作を選択することができる。最後に、ブロック１６０で、選択された動作を実行することができる。本発明の範囲は図２の実施形態におけるこの特定の実装例に限定はされず、ＡＩサブシステムは上述した方法とは異なる投機的物理シミュレーションの結果を要求および利用することもできる。
【００１５】
投機的物理シミュレーションの実行は演算上高価なものとなりうる。従って幾らかの実施形態では、全投機的物理シミュレーションの分散（variance）を実行することで複雑度を下げ、幅広いゲームシナリオおよびハードウェア環境での動作を可能とすることができる。これら分散（variant）には、オブジェクトを実際にゲームで動作させる物理と比べて精度の劣る投機的物理シミュレーションを実行すること、投機的物理シミュレーションを行うときの処理時間を制限すること（例えば、この種類のシミュレーションは５０％未満等の所定のレベルの処理帯域幅に限定されることがある）、および、オブジェクトがＡＩキャラクタの視界からどのくらい遠くにいるかに応じて物理シミュレーションの優先順位を決めること、等が含まれる。ここで、別個の投機的物理シミュレーションが完全に独立して動作可能であるので、多数の同時シミュレーションを並行して行うこともできる点に留意されたい。
【００１６】
上述したように、投機的物理シミュレーションに関して様々な最適化を行うことで演算上の複雑度を低減させる等の効果が可能となる。図３は、本発明の一実施形態における１以上の投機的物理シミュレーションを行う方法のフロー図を示す。図３の方法２００は、１以上の投機的物理シミュレーションについての要求を受信することから開始されてよい（ブロック２１０）。次に、物理サブシステムは、ＡＩキャラクタと変形可能なオブジェクトとの間の距離に基づいてこれらシミュレーションの優先順位を決めてよい（ブロック２２０）。例えば、幾らかの要求が受信され、このうち少なくとも１つの要求がＡＩキャラクタの視野内にある多数の変形可能なオブジェクトの各々に関連していると仮定する。優先順位決定を行うべく、物理サブシステムは、物理シミュレーションを行う際に最も近いオブジェクトを選択することができる。少なくとも、物理サブシステムは、最も近いオブジェクトを最初に分析するようシミュレーションの順位付けを行うことができる。
【００１７】
図３では次に、各シミュレーションに対して、該シミュレーションを行うのに足るリソースが存在するかを判断してよい（ダイアモンド２３０）。例えば一実装例では、シミュレーションを複数並列に行い、個々を任意のプロセッサの多数のコアまたは他の処理部に対して提供することができる。あるシミュレーションに対して利用可能なリソースがない場合には、方法はそのシミュレーションについて終了してよい。一方リソースが利用可能である場合には、制御はブロック２４０に移り、動作をシミュレーションして、物理モデルを生成することができる（ブロック２４０）。例えば、物理モデルの実装により、統合段階および衝突検出段階を実行することができる。統合段階では、変形可能なオブジェクトおよび／または他の本体を移動させ、この統合段階中の１以上の時点において、衝突検出を行って、２つの本体が衝突したか否かを判断することができる。利用可能なリソース量に基づいて、これら統合段階および衝突検出段階を異なる粒度で行うことができる。シミュレーションが完了すると、変形可能なオブジェクトの特定および投機的結果（例えば壁が打破されたか等）に相当していてよいシミュレーション結果をＡＩサブシステムへ戻してよい（ブロック２５０）。そして、さらに行うべきシミュレーションがある場合には、制御を前述したダイアモンド２３０に戻してよい。本発明の範囲は、図３の実施形態のこの特定の実装例には限定されない。
【００１８】
上述したように、実装例の幾らかにおいては、ＡＩおよび物理シミュレーションの組み合わせは、ゲームの設計段階中に行うこともできる。より詳しくは、最初のプログラミングが終わりプロトタイプのプログラムが実行用に利用可能となってから、このプロトタイプまたは確認実行段階で、ＡＩサブシステムは１以上の投機的物理シミュレーションの実行を試みて、可能性のある動作の潜在的な結果を判断することができる。これら投機的物理シミュレーション結果は、その後、ゲーム設計者により分析されてよい。この結果に基づいて、ゲーム設計者は、潜在的な動作のグラフに組み込むべく、１以上の潜在的な動作を選択することができる。従ってこの投機的動作に基づいて、ＡＩキャラクタが利用可能な予めプログラミングされた動作一式に対して、１以上のさらなる潜在的な動作をプロトタイププログラムへの修正または更新として含めることができる。図１Ｂに戻ると、さらなるノード４０が、ゲームのプロトタイプ動作中に実行される投機的物理シミュレーションに基づいて図１Ａのグラフ１０等の予めプログラミングされたグラフに追加されてよい。
【００１９】
従って本発明の様々な実施形態を利用すると、ゲーム実行中にＡＩキャラクタは、設計者が記述してゲームに組み込む予めプログラミングされた決定に基づいて複数の潜在的な動作から選択を行うことができる。またさらに、さらなる潜在的な動作を、ゲーム開発中にＡＩサブシステムが生成する潜在的な決定に基づいて行うことができる。このプロトタイプのゲーム実行中に、潜在的な決定を含む結果を受信すると、ＡＩサブシステムは、ゲーム設計者が予めプログラミングした１以上の潜在的な動作を既に含んでいる潜在的な動作のグラフを更新することができる。このプロトタイプの動作モードでは、一実装例のプロトタイプゲームは、グラフに対する任意のさらなる潜在的な決定を、後にゲーム設計者がアクセス可能なトレースキャッシュまたは他の格納位置に保存するよう、制御されてよい。またさらに、幾らかの実装例では、コストが静的に定義された動作のものより大きい場合であっても、これら動的に更新される潜在的な動作の１以上をＡＩキャラクタによる実行用に選択するよう、プロトタイプのゲーム実行を制御することができる。この実行結果もトレースキャッシュまたは他の記憶装置に保存することにより、ゲーム設計者がゲーム実行を見直す際、潜在的な動作のグラフにこれら動作を予めプログラミングすることが望ましいかを判断することができる。従って、この動作に基づき、これら潜在的な決定がゲーム開発中に設計者により選択されて、ゲームの最終版に予めプログラミングすることができるようになる。
【００２０】
最後に、様々な実施形態では、ランタイム動作中に、ＡＩサブシステムは、物理サブシステムに、ランタイム中に自動的に１以上の投機的物理シミュレーションを要求することができる。これら潜在的な動作に関する結果は、実行される潜在的な動作のグラフに追加することができる。従って、ＡＩキャラクタはランタイム中にこれら動的に追加された動作のいずれかを選択して、ユーザに対するゲームの現実感を向上させることができる。
【００２１】
実施形態は、多くの異なる種類のシステムで実装可能である。図４は、本発明の一実施形態におけるシステムのブロック図である。図４のマルチプロセッサシステム５００は、ポイントツーポイントインターコネクトシステムであり、ポイントツーポイントインターコネクト５５０で連結された第１のプロセッサ５７０および第２のプロセッサ５８０を含む。図４に示すように、プロセッサ５７０および５８０の各々は、第１および第２のプロセッサコア（つまり、プロセッサコア５７４ａおよび５７４ｂ、およびプロセッサコア５８４ａおよび５８４ｂ）を含むマルチコアプロセッサであってよいが、これより多い数のコアがプロセッサに存在していてもよい。各プロセッサコアは、インタープロセッサ通信ネットワークにより連結されたコヒーレントな幅広いベクトル処理部およびキャッシュメモリを有するインオーダのプロセッサ（in-order processor）であってよい（図４には不図示）。さらに、幾らかの実施形態では、プロセッサ５７０および５８０はさらに、一実施形態では１以上の専用物理処理部を含み、投機的物理シミュレーションを行うよう適合させることができる固定機能コプロセッサを含むことができる。しかし多くの実装例では、投機的物理シミュレーションは、本発明の一実施形態により選択された１以上の（例えば１つのサブセットの）プロセッサコア上で実行されてよい。従って実施形態は、多くのコアを含む環境を有するアーキテクチャを有効利用して、高速投機的物理シミュレーションを、１以上のプロセッサコアで実行されるＡＩサブシステムが制御するＡＩキャラクタとの関連で実行することができる。
【００２２】
図４の第１のプロセッサ５７０はさらに、メモリコントローラハブ（ＭＣＨ）５７２とポイントツーポイント（Ｐ−Ｐ）インタフェース５７６および５７８とを含む。同様に、第２のプロセッサ５８０は、ＭＣＨ５８２とＰ−Ｐインタフェース５８６および５８８とを含む。図２に示すように、ＭＣＨ５７２および５８２は、プロセッサそれぞれにローカルに添付されるメインメモリ（例えばＤＲＡＭ）の一部でありうるそれぞれのメモリ（メモリ５３２およびメモリ５３４）にプロセッサを連結する。第１のプロセッサ５７０および第２のプロセッサ５８０は、Ｐ−Ｐインターコネクト５５２および５５４を介してチップセット５９０に連結されてよい。図４に示すように、チップセット５９０はＰ−Ｐインタフェース５９４および５９８を含む。
【００２３】
さらにチップセット５９０は、Ｐ−Ｐインターコネクト５３９により、チップセット５９０を高性能グラフィックスエンジン５３８に連結するインタフェース５９２を含む。そして、チップセット５９０は、インタフェース５９６を介して第１のバス５１６に連結されてよい。図４に示すように、様々な入出力（Ｉ／Ｏ）デバイス５１４が、第１のバス５１６を第２のバス５２０に連結するバスブリッジ５１８とともに、第１のバス５１６に連結されてよい。一実施形態では、例えばキーボード／マウス５２２、通信デバイス５２６、および、コード５３０を含んでよいディスクドライブまたは他の大容量記憶デバイス等のデータ記憶ユニット５２８を含む様々なデバイスが、第２のバス５２０に連結されてよい。さらに、音声入出力５２４が第２のバス５２０に連結されてよい。
【００２４】
実施形態は、コードによる実装が可能であり、システムを、命令を行わせるようプログラミングに利用されうる命令を格納する記憶媒体上に格納することができる。記憶媒体は、フロッピー（登録商標）ディスク、光学ディスク、ＣＤ−ＲＯＭ、ＣＤ−ＲＷ、および光磁気ディスク等の任意の種類のディスク、ＲＯＭ、ＤＲＡＭ等のＲＡＭ、ＳＲＡＭ、ＥＰＲＯＭ、フラッシュメモリ、ＥＥＰＲＯＭ（登録商標）、磁気または光学カードを含む半導体デバイス、または電子命令を格納するのに適した任意の他の種類の媒体を含みうるがこれらに限定はされない。
【００２５】
本発明を限られた数の実施形態に関して記載してきたが、当業者であれば多数の変形例および変更例について想到することができる。添付請求項はこれら全ての変形例および変更例を本発明の真の精神および範囲内に含むことを意図している。
【図１Ａ】
0005746509.tif 000002
【図１Ｂ】
0005746509.tif 000003
【図２】
0005746509.tif 000004
【図３】
0005746509.tif 000005
【図４】
0005746509.tif 000006