(57)【特許請求の範囲】
【請求項１】
キャラクタの状態が割り当てられたノードを含む有限状態マシン、キャラクタの行動内容が割り当てられたノードを含むビヘイビアツリー、の何れか一方に含まれているノードのうち１つのノードがユーザ操作に応じて指定されると、該１つのノードに有限状態マシン及びビヘイビアツリーの何れを割り当てるのかをユーザに問い合わせるための画面を表示画面に表示させる表示制御手段と、
前記有限状態マシン及び前記ビヘイビアツリーのうちユーザ操作に応じて選択された一方を、前記１つのノードに割り当てる割り当て手段と
を備えることを特徴とする情報処理装置。
【請求項２】
前記表示制御手段は、前記画面を介したユーザ操作に応じて前記有限状態マシンが選択された場合には、前記１つのノードに割り当てる候補となる１以上の有限状態マシンを一覧表示し、
前記割り当て手段は、前記一覧表示された１以上の有限状態マシンのうちユーザ操作に応じて選択された有限状態マシンを、前記１つのノードに割り当てることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記表示制御手段は、前記画面を介したユーザ操作に応じて前記ビヘイビアツリーが選択された場合には、前記１つのノードに割り当てる候補となる１以上のビヘイビアツリーを一覧表示し、
前記割り当て手段は、前記一覧表示された１以上のビヘイビアツリーのうちユーザ操作に応じて選択されたビヘイビアツリーを、前記１つのノードに割り当てることを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
更に、
前記有限状態マシン及び前記ビヘイビアツリーのうち前記画面を介したユーザ操作に応じて選択された一方を、ユーザ操作に応じて編集する編集手段を備えることを特徴とする請求項１乃至３の何れか１項に記載の情報処理装置。
【請求項５】
更に、
前記割り当て手段による割り当てによって生成された、前記有限状態マシン及び前記ビヘイビアツリーの何れか一方のノードに前記有限状態マシン及び前記ビヘイビアツリーの何れか一方が割り当てられた構造を有するデータを、前記キャラクタの人工知能データとして保存する保存手段を備えることを特徴とする請求項１乃至４の何れか１項に記載の情報処理装置。
【請求項６】
キャラクタの状態が割り当てられたノードを含む有限状態マシン、キャラクタの行動内容が割り当てられたノードを含むビヘイビアツリー、の何れか一方に含まれているノードのうち１つのノードがユーザ操作に応じて指定されると、該１つのノードに有限状態マシン及びビヘイビアツリーの何れを割り当てるのかをユーザに問い合わせるための画面を表示画面に表示させ、
前記有限状態マシン及び前記ビヘイビアツリーのうちユーザ操作に応じて選択された一方を、前記１つのノードに割り当てる
ことを特徴とする情報処理方法。
【請求項７】
コンピュータを、
キャラクタの状態が割り当てられたノードを含む有限状態マシン、キャラクタの行動内容が割り当てられたノードを含むビヘイビアツリー、の何れか一方に含まれているノードのうち１つのノードがユーザ操作に応じて指定されると、該１つのノードに有限状態マシン及びビヘイビアツリーの何れを割り当てるのかをユーザに問い合わせるための画面を表示画面に表示させる表示制御手段、
前記有限状態マシン及び前記ビヘイビアツリーのうちユーザ操作に応じて選択された一方を、前記１つのノードに割り当てる割り当て手段
として機能させるためのコンピュータプログラムを格納した、非一時的なコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ゲームキャラクタの人工知能に係る技術に関するものである。
【背景技術】
【０００２】
近年、ゲームで用いられる人工知能には、より抽象的な思考が求められると同時に、柔軟な振る舞いが必要とされている。従来では、ゲームにおける人工知能は、有限状態マシン（Finite State Machine、以下FSM）、ビヘイビアツリー（Behavior Tree、以下ＢＴ）のいずれかで開発されていた。
【０００３】
FSMとは、図１に示す如く、状態（ステート）をノードとし、該ノード間を遷移ラインで接続して構成されたもので、イベントが発生すると、該イベントに応じたノードに遷移し、該遷移したノードに対応する状態をキャラクタの状態とするものである。一方、ＢＴとは、キャラクタの行動規則をツリー表現したもので、例えば、図２に示す如く、親ノードによって、子ノード（行動Ａ〜Ｃ）のどれを及び／又はどの順序で実行するのかを規定するものである。一般に、FSMは定型的な制御に優れており、BTは臨機応変な制御に優れていた。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Damian Isla、“GDC 2005 Proceeding: Handling Complexity in the Halo 2 AI”、［online］、March 11, 2005、［２０１６年２月５日検索］、インターネット＜URL：http:／／www.gamasutra.com／view／feature／130663／gdc_2005_proceeding_handling_.php＞
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし従来では、ＦＳＭ及びＢＴの何れか一方のみを使用してキャラクタの人工知能を開発していたので、ＦＳＭ及びＢＴの双方の利点を活用することはできなかった。そこで、本発明では、ＦＳＭ及びＢＴの双方の利点を活用して、より柔軟なキャラクタの行動パターンを表現する人工知能を開発するための技術を提供する。
【課題を解決するための手段】
【０００６】
本発明の一様態は、キャラクタの状態が割り当てられたノードを含む有限状態マシン、キャラクタの行動内容が割り当てられたノードを含むビヘイビアツリー、の何れか一方に含まれているノードのうち１つのノードがユーザ操作に応じて指定されると、該１つのノードに有限状態マシン及びビヘイビアツリーの何れを割り当てるのかをユーザに問い合わせるための画面を表示画面に表示させる表示制御手段と、前記有限状態マシン及び前記ビヘイビアツリーのうちユーザ操作に応じて選択された一方を、前記１つのノードに割り当てる割り当て手段とを備えることを特徴とする。
【発明の効果】
【０００７】
本発明の構成によれば、ＦＳＭ及びＢＴの双方の利点を活用して、より柔軟なキャラクタの行動パターンを表現する人工知能を開発することができる。
【０００８】
本発明の更なる特徴は、添付図面を参照して以下の例示的な実施の形態の説明から明らかになるであろう。
【図面の簡単な説明】
【０００９】
添付図面は明細書に含まれ、その一部を構成し、本発明の実施の形態を示し、その記述と共に本発明の原理を説明するために用いられる。
【図１】図１はＦＳＭの構成例を示す図。
【図２】図２はＢＴの構成例を示す図。
【図３】図３はコンピュータ装置のハードウェア構成例を示すブロック図。
【図４】図４は選択されたＦＳＭの構成例を示す図。
【図５】図５はＦＳＭ及びＢＴの何れかを割り当てる方法を説明する図。
【図６ａ】図６ａはＦＳＭの割り当てを説明する図。
【図６ｂ】図６ｂはＦＳＭの割り当てを説明する図。
【図６ｃ】図６ｃはＦＳＭの割り当てを説明する図。
【図７ａ】図７ａはＢＴの割り当てを説明する図。
【図７ｂ】図７ｂはＢＴの割り当てを説明する図。
【図７ｃ】図７ｃはＢＴの割り当てを説明する図。
【図８】図８はＧＵＩを用いた人工知能のデータの生成処理のフローチャート。
【図９】図９はＦＳＭとＢＴの入れ子階層構造の一例を示す図。
【図１０】図１０はＦＳＭとＢＴとの入れ子階層構造を作成中のＧＵＩの表示例を示す図。
【図１１】図１１はＦＳＭの入れ子階層構造を作成中のＧＵＩの表示例を示す図。
【図１２】図１２はＢＴの入れ子階層構造を作成中のＧＵＩの表示例を示す図。
【発明を実施するための形態】
【００１０】
以下、添付図面を参照して、本発明の実施形態について詳細に説明する。
【００１１】
第１の実施形態
キャラクタの状態が割り当てられたノードを含む有限状態マシン、キャラクタの行動内容が割り当てられたノードを含むビヘイビアツリー、の何れか一方に含まれているノードのうち１つのノードがユーザ操作に応じて指定されると、該１つのノードに有限状態マシン及びビヘイビアツリーの何れを割り当てるのかをユーザに問い合わせるための画面を表示画面に表示させ、有限状態マシン及びビヘイビアツリーのうちユーザ操作に応じて選択された一方を、該１つのノードに割り当てることを特徴とする情報処理装置の一例について説明する。
【００１２】
ここでいうところの「キャラクタ」とは、ゲームの世界（所謂仮想世界）に存在する仮想物体であって、該仮想世界における動的若しくは静的な情報（イベント）に基づいて次の状態が決定される該仮想物体のことである。然るにこのような定義に該当するものであれば、例えば、人や動物、植物、乗り物、建物等のゲーム中に登場する登場オブジェクトに限らず、仮想空間中の光源等、仮想空間の構成要素までも、以下の「キャラクタ」に当てはめても良い。
【００１３】
先ず、このような情報処理装置を適用したＰＣ（パーソナルコンピュータ）等のコンピュータ装置のハードウェア構成例について、図３のブロック図を用いて説明する。なお、図３に示したハードウェア構成例は、上記の情報処理装置に適用可能なコンピュータ装置のハードウェア構成の一例であり、以下に説明する処理を実現可能な構成であれば、如何なる構成を採用しても良い。
【００１４】
ＣＰＵ３０１は、ＲＡＭ３０２やＲＯＭ３０３に格納されているコンピュータプログラム及び／又はデータを用いて処理を実行することで、コンピュータ装置全体の動作制御を行うと共に、コンピュータ装置が行うものとして後述する各処理を実行若しくは制御する。
【００１５】
ＲＡＭ３０２は、ＲＯＭ３０３や外部記憶装置３０６からロードされたコンピュータプログラムやデータ、Ｉ／Ｆ（インターフェース）３０７を介して外部から受信したデータ、を格納するためのエリアを有する。更にＲＡＭ３０２は、ＣＰＵ３０１が各種の処理を実行する若しくは制御する際に用いるワークエリアを有する。このように、ＲＡＭ３０２は、各種のエリアを適宜提供することができる。
【００１６】
ＲＯＭ３０３には、書き換え不要の本装置の設定データやコンピュータプログラム（ブートプログラムなど）が格納されている。
【００１７】
操作部３０４は、キーボードやマウスなどにより構成されており、本装置のユーザが操作することで各種の指示をＣＰＵ３０１に対して入力することができるユーザインターフェースである。
【００１８】
表示部３０５はＣＲＴや液晶画面などにより構成されており、ＣＰＵ３０１による処理結果を画像や文字などでもって表示することができる。
【００１９】
外部記憶装置３０６は、ハードディスクドライブ装置に代表される大容量情報記憶装置である。外部記憶装置３０６には、ＯＳ（オペレーティングシステム）や、コンピュータ装置が行うものとして後述する各処理をＣＰＵ３０１に実行若しくは制御させるためのコンピュータプログラムやデータが保存されている。外部記憶装置３０６に保存されているコンピュータプログラムには、後述するＧＵＩ（グラフィカルユーザインターフェース）に係るコンピュータプログラムが含まれている。また、外部記憶装置３０６に保存されているデータには、上記のＧＵＩに係るデータや、以下の説明において既知の情報として取り扱うデータが含まれている。外部記憶装置３０６に保存されているコンピュータプログラムやデータは、ＣＰＵ３０１による制御に従って適宜ＲＡＭ３０２にロードされ、ＣＰＵ３０１による処理対象となる。
【００２０】
Ｉ／Ｆ３０７は、外部の機器との間で有線及び／又は無線でもってデータ通信を行うためのものであり、例えば、以下の説明において外部記憶装置３０６から取得するものとして説明するコンピュータプログラムやデータは、Ｉ／Ｆ３０７を介して外部の機器から取得するようにしても構わない。
【００２１】
上記のＣＰＵ３０１、ＲＡＭ３０２、ＲＯＭ３０３、操作部３０４、表示部３０５、外部記憶装置３０６、Ｉ／Ｆ３０７は何れも、バス３０８に接続されている。
【００２２】
次に、ゲームに登場するキャラクタの行動パターンを規定する人工知能データを作成するためのＧＵＩについて説明する。なお、外部記憶装置３０６には、予め作成したＦＳＭやＢＴが複数個、ファイルとして保存されているものとする。そしてユーザが操作部３０４を操作してＧＵＩの起動指示を入力すると（例えば表示部３０５の表示画面上に表示されているＧＵＩのアイコンをマウスの左ボタンでダブルクリックすると）、ＣＰＵ３０１は、ＧＵＩのコンピュータプログラムやデータを外部記憶装置３０６からＲＡＭ３０２にロードし、該コンピュータプログラムを該データを適宜参照しながら実行することで、ＧＵＩの初期画面を表示部３０５の表示画面上に表示させる。この初期画面においてユーザは先ず、階層構造を有する人工知能データの最上位階層にＦＳＭ及びＢＴの何れかを設定するのかを操作部３０４を操作して指示する必要がある。
【００２３】
例えば、ユーザが操作部３０４を用いてＧＵＩを操作し、最上位階層にＦＳＭを設定する指示を入力すると、ＣＰＵ３０１は表示部３０５の表示画面に、外部記憶装置３０６に保存されているＦＳＭのファイル名（必要に応じて対応するアイコン）を一覧表示する。ユーザは操作部３０４を操作して該一覧表示されているＦＳＭから１つを選択する。これによりＣＰＵ３０１は、該選択されたＦＳＭのファイルによって規定されるノード群を表示部３０５の表示画面に表示させる。
【００２４】
一方、ユーザが操作部３０４を用いてＧＵＩ操作し、最上位階層にＢＴを設定する指示を入力すると、ＣＰＵ３０１は表示部３０５の表示画面に、外部記憶装置３０６に保存されているＢＴのファイル名（必要に応じて対応するアイコン）を一覧表示する。ユーザは操作部３０４を操作して該一覧表示されているＢＴから１つを選択する。これによりＣＰＵ３０１は、該選択されたＢＴのファイルによって規定されるノード群を表示部３０５の表示画面に表示させる。
【００２５】
以下では、ユーザが操作部３０４を用いてＧＵＩを操作し、最上位階層にＦＳＭを設定する指示を入力し、その後、一覧表示されたＦＳＭのファイル群から「キャラクタの状態Ａが割り当てられたノード、キャラクタの状態Ｂが割り当てられたノード、キャラクタの状態Ｃが割り当てられたノードを有し且つそれぞれのノード間が遷移ラインでもって接続されているＦＳＭ」のファイルが選択されたケースを例にとり説明する。
【００２６】
このとき、ＧＵＩ上には、図４に示す如く、ノード４０１〜４０３が遷移ラインと共に表示される。キャラクタの状態Ａが割り当てられたノード４０１には「状態Ａ」を表す文字列が重ねて表示され、キャラクタの状態Ｂが割り当てられたノード４０２には「状態Ｂ」を表す文字列が重ねて表示され、キャラクタの状態Ｃが割り当てられたノード４０３には「状態Ｃ」を表す文字列が重ねて表示されており、更に、ノード間には遷移ラインが表示されている。
【００２７】
ここで、ノード４０３に、ＦＳＭ及びＢＴの何れかを割り当てる操作方法について説明数する。以下では、操作部３０４の一例であるマウスを用いた操作方法を説明するが、同様の目的を達成できるのであれば、どのようなデバイスを用いても構わない。
【００２８】
図５に示す如く、ユーザがマウスを操作してマウスポインタ５０１をノード４０３上に移動させて、そこでマウスの右ボタンを押下すると、ＣＰＵ３０１は、ノード４０３にＦＳＭを割り当てるのか、それともＢＴを割り当てるのかをユーザに問い合わせる（選択させる）ためのメニューウィンドウ５０２を表示部３０５の表示画面上に表示させる。
【００２９】
ここでユーザがマウスを操作してマウスポインタ５０１をメニューウィンドウ５０２内の領域５０２ａ（ＦＳＭを選択するための領域）内に移動させてそこでマウスの左ボタンを押下すると、ＣＰＵ３０１は、図６ａに示す如く、外部記憶装置３０６に保存されているそれぞれのＦＳＭのファイルのファイル名（必要に応じて対応するアイコン）を一覧表示したメニューウィンドウ６００を表示部３０５の表示画面上に表示させる。ユーザがマウスを操作してマウスポインタ５０１を「ＦＳＭ３」に移動させてそこでマウスの左ボタンを押下すると、ＣＰＵ３０１は、ノード４０３にファイル名が「ＦＳＭ３」であるファイルが規定するＦＳＭを割り当てる。ファイル名が「ＦＳＭ３」であるファイルが規定するＦＳＭの構成を図６ｂに示す。図６ｂに示す如く、ファイル名が「ＦＳＭ３」であるファイルが規定するＦＳＭは、「キャラクタの状態Ｃ１が割り当てられたノード６０１、キャラクタの状態Ｃ２が割り当てられたノード６０２、キャラクタの状態Ｃ３が割り当てられたノード６０３を有し且つそれぞれのノード間が遷移ラインでもって接続されているＦＳＭ」である。そしてＣＰＵ３０１は、図６ｃに示す如く、図４のＦＳＭにおいてノード４０３が図６ｂのＦＳＭに置換されたものを表示部３０５の表示画面上に表示させる。
【００３０】
なお、図６ｃに示す構成を有する人工知能の動作則については次の通りである。基本的には、ゲーム中にイベントが発生した場合に、キャラクタの状態が該イベントに対応する状態に遷移するというＦＳＭの動作に沿ってはいるが、キャラクタの現状態が状態Ａである状況において、状態Ａから状態Ｃに遷移するための条件がゲーム中で満たされると（状態Ａから状態Ｃに遷移させるためのイベントがゲーム中で発生すると）、キャラクタの状態は状態Ｃに属する状態Ｃ１に遷移する。また、キャラクタの現状態が状態Ｂである状況において、状態Ｂから状態Ｃに遷移するための条件がゲーム中で満たされると（状態Ｂから状態Ｃに遷移させるためのイベントがゲーム中で発生すると）、キャラクタの状態は状態Ｃ１に遷移する。これは、状態Ｃにおける初期状態がＣ１に設定されているからであって、例えば初期状態がＣ２に設定されている場合には、状態Ａ（状態Ｂ）から状態Ｃ２に遷移することになる。また、キャラクタの現状態が状態Ｃ１であった場合に、状態Ｃ１から状態Ｃ２（Ｃ３）に遷移するための条件がゲーム中で満たされると、キャラクタの状態は状態Ｃ２（Ｃ３）に遷移する。また、対応する条件を満たしていれば、状態Ｃ１，Ｃ２，Ｃ３から状態Ａや状態Ｂ等に遷移することができる。
【００３１】
一方、図５において、ユーザがマウスを操作してマウスポインタ５０１をメニューウィンドウ５０２内の領域５０２ｂ（ＢＴを選択するための領域）内に移動させてそこでマウスの左ボタンを押下すると、ＣＰＵ３０１は、図７ａに示す如く、外部記憶装置３０６に保存されているそれぞれのＢＴのファイルのファイル名（必要に応じて対応するアイコン）を一覧表示したメニューウィンドウ７００をＧＵＩ上に表示させる。ここでユーザがマウスを操作してマウスポインタ５０１を「ＢＴ３」に移動させてそこでマウスの左ボタンを押下すると、ＣＰＵ３０１は、ノード４０３にファイル名が「ＢＴ３」であるファイルが規定するＢＴを割り当てる。ファイル名が「ＢＴ３」であるファイルが規定するＢＴの構成を図７ｂに示す。図７ｂに示す如く、ファイル名が「ＢＴ３」であるファイルが規定するＢＴは、「ルートノード７０１、Sequenceノード７０２、キャラクタの行動１が割り当てられたノード７０３、キャラクタの行動２が割り当てられたノード７０４、キャラクタの行動３が割り当てられたノード７０５を有し且つルートノード７０１とSequenceノード７０２との間、Sequenceノード７０２とノード７０３〜７０５との間が遷移ラインでもって接続されているＢＴ」である。ＣＰＵ３０１は、図７ｃに示す如く、図４のＦＳＭにおいてノード４０３が、図７ｂのＢＴに置換されたものを表示部３０５の表示画面上に表示させる。
【００３２】
なお、図７ｃに示す構成を有する人工知能の動作則については次の通りである。キャラクタの現状態が状態Ａである状況において、状態Ａから状態Ｃに遷移するための条件がゲーム中で満たされると（状態Ａから状態Ｃに遷移させるためのイベントがゲーム中で発生すると）、キャラクタの状態は状態Ｃに遷移すると共に、ＣＰＵ３０１はルートノード７０１を介してSequenceノード７０２を実行する。Sequenceノード７０２とは、子ノード（図７ｃではノード７０３〜７０５）を順次実行するノードである。ここでＣＰＵ３０１はSequenceノード７０２を実行することで、ノード７０３〜７０５を順次実行し、これによりキャラクタを行動１に従って行動させ、行動２に従って行動させ、行動３に従って行動させる。
【００３３】
以降、ユーザは、ＧＵＩ上に表示中のノード群のうち何れか１つを指定して、該指定したノードに、所望のＦＳＭ若しくは所望のＢＴを割り当てることができる。このような作業により構成される、ＦＳＭとＢＴの入れ子階層構造の一例を図９に示す。図９では、ＦＳＭ９００（最上位階層：１番目の階層）のノード９０１にはＦＳＭ９０２（２番目の階層）が割り当てられており、ＦＳＭ９００のノード９０３にはＢＴ９０４（２番目の階層）が割り当てられている。また、ＢＴ９０４のノード９０５にはＦＳＭ９０６（３番目の階層）が割り当てられている。
【００３４】
そしてユーザが操作部３０４を操作して保存指示を入力すると、ＣＰＵ３０１は、ＧＵＩ上に表示されているノード群及びノード間の遷移関係を示すデータを人工知能のデータとして外部記憶装置３０６に保存する。図９の場合、ＦＳＭ９００のデータが人工知能のデータとして外部記憶装置３０６に保存されることになる。ＦＳＭ９００のデータでは、ノード９０１にＦＳＭ９０２が組み込まれており、ノード９０３にＢＴ９０４が組み込まれており、ノード９０５にＦＳＭ９０６が組み込まれている。もちろん、人工知能のデータの構成はこのような構成に限るものではなく、ノード間の関係が分かるような構成であれば、如何なる構成を採用しても良い。また、人工知能のデータは適宜圧縮してから保存するようにしても良い。
【００３５】
ＦＳＭとＢＴとの入れ子階層構造を作成中のＧＵＩの表示例、ＦＳＭの入れ子階層構造を作成中のＧＵＩの表示例、ＢＴの入れ子階層構造を作成中のＧＵＩの表示例、をそれぞれ図１０〜１２に示す。
【００３６】
以上説明した、ＧＵＩを用いた人工知能のデータの生成処理について、同処理のフローチャートを示す図８を用いて説明する。
【００３７】
＜ステップＳ８０１＞
ＣＰＵ３０１は、ＧＵＩ上に表示中のノード群のうち１つのノードがユーザによって指定された（上記の例では、ノード上にマウスポインタを移動させてそこで右ボタンを押下された）か否かを判断する。この判断の結果、ＧＵＩ上に表示中のノード群のうち１つのノードがユーザによって指定された場合には、処理はステップＳ８０２に進み、指定されていない場合には、処理はステップＳ８０６に進む。
【００３８】
＜ステップＳ８０２＞
ＣＰＵ３０１は、ユーザによって指定されたノード（指定ノード）にＦＳＭを割り当てるのか、それともＢＴを割り当てるのかをユーザに選択させるためのメニューウィンドウを表示部３０５の表示画面上に表示させる。
【００３９】
＜ステップＳ８０３＞
ＣＰＵ３０１は、ユーザによってＦＳＭを割り当てる旨の指示が入力された（上記の例では、マウスポインタ５０１を領域５０２ａ内に移動させてそこでマウスの左ボタンが押下された）場合には、外部記憶装置３０６に保存されているそれぞれのＦＳＭのファイルのファイル名を一覧表示したメニューウィンドウをＧＵＩ上に表示させる。一方、ＣＰＵ３０１は、ユーザによってＢＴを割り当てる旨の指示が入力された（上記の例では、マウスポインタ５０１を領域５０２ｂ内に移動させてそこでマウスの左ボタンが押下された）場合には、外部記憶装置３０６に保存されているそれぞれのＢＴのファイルのファイル名を一覧表示したメニューウィンドウをＧＵＩ上に表示させる。
【００４０】
＜ステップＳ８０４＞
ＣＰＵ３０１は、一覧表示されたファイル群（ＦＳＭのファイル群若しくはＢＴのファイル群）からユーザが選択したファイルを指定ノードに割り当てる。
【００４１】
＜ステップＳ８０５＞
ＣＰＵ３０１は、ＧＵＩの表示を更新する。上記の例では、図４のＦＳＭの表示の代わりに、図６ｃに示した構成（ユーザによって図６ｂのＦＳＭを割り当てる旨の指示が入力された場合）若しくは図７ｃに示した構成（ユーザによって図７ｂのＢＴを割り当てる旨の指示が入力された場合）を表示する。
【００４２】
＜ステップＳ８０６＞
ユーザが操作部３０４を操作して終了指示（作成中の人工知能のデータを保存して終了する指示）を入力したことをＣＰＵ３０１が検知した場合、処理はステップＳ８０７に進む。一方、ユーザが操作部３０４を操作して終了指示を入力したことをＣＰＵ３０１が検知していない場合には、処理はステップＳ８０１に戻る。
【００４３】
＜ステップＳ８０７＞
ＣＰＵ３０１は、現段階でＧＵＩ上に表示されている構成を有する人工知能のデータを外部記憶装置３０６に保存して、ＧＵＩを終了させる。
【００４４】
第２の実施形態
第１の実施形態では人工知能のデータを作成する技術について説明した。本実施形態では、このような人工知能のデータを用いてキャラクタの動作制御を行う技術について説明する。第１の実施形態で説明した人工知能のデータは、ゲームに登場するキャラクタの動作制御を行うためのものであるから、該ゲームのデータに組み込まれる。ゲームのデータはゲーム機に読み込まれ、該ゲーム機のプロセッサが該データを用いてゲームを実行する。なお、人工知能のデータやゲームのデータには、データだけでなくコンピュータプログラムも含まれている。
【００４５】
ゲーム機の構成については様々な構成が考えられるが、以下では一例として、図３に示す構成を有するものとして説明する。この場合、外部記憶装置３０６には、上記の人工知能のデータを含むゲームのデータがインストールされており、ＣＰＵ３０１が該ゲームのデータを用いてゲームを実行することになる。なお、外部記憶装置３０６にゲームのデータをインストールする代わりに、ＣＤ−ＲＯＭやＤＶＤ−ＲＯＭ等のコンピュータ読み取り可能な記憶媒体にゲームのデータを格納しておき、該ゲームのデータを記憶媒体ドライブ装置によって読み取り、ＣＰＵ３０１が該読み取られたゲームのデータを用いてゲームを実行するようにしても良い。
【００４６】
図６ｃに示した構成を有する人工知能のデータに従ったキャラクタの動作制御、図７ｃに示した構成を有する人工知能のデータに従ったキャラクタの動作制御、については第１の実施形態で説明したが、例えば、図７ｃに示した構成を有する人工知能のデータに従ったキャラクタの動作制御において、例えばノード７０４の実行中に、状態Ｂに遷移させるための条件が満たされた場合には、次のような動作制御を行う。すなわち、ＣＰＵ３０１は、ノード７０４の実行を中断して、キャラクタの状態を状態Ｂに遷移させる制御を行う。このように、ｎ番目の階層におけるＦＳＭにおいて状態遷移の条件が満たされた場合には、該ＦＳＭを親とする下位の階層（ｍ（＞ｎ）番目の階層）のＢＴの動作を停止させてから状態遷移を行う。ＢＴの動作停止は、より下位のＢＴから順に行う。
【００４７】
また、ＢＴのノードには、「ランダム」、「プライオリティ」、「パラレル」といったノードがある。「ランダム」ノードとは、該ノードの１つ下位の階層における子ノードのうち１つをランダムに決定し、該決定した子ノード及び該決定した子ノードを親とする子ノードを実行するものである。「プライオリティ」ノードとは、該ノードの１つ下位の階層における子ノードのうちＧＵＩ上でより上方に配置した子ノード（子ノードの配置位置は操作部３０４の操作に応じて適宜変更可能である）及び該より上方に配置した子ノードを親とする子ノードを優先的に実行し、該実行が失敗した場合には、「プライオリティ」ノードの１つ下位の階層における子ノードのうち実行が失敗した子ノードの１つ下方の子ノード及び該子ノードを親とする子ノードを実行するものである。「パラレル」ノードとは、該ノードの１つ下位の階層におけるそれぞれの子ノード及び該子ノードを親とする子ノードを並列に実行するものである。ここで、このようなノードを用いてＢＴを構成しても良い。なお、並列処理するそれぞれの処理を個々のプロセッサに割り当てて実行するようにしても良い。
【００４８】
なお、第１，２の実施形態では、ＦＳＭとして図６ｂに示した構成のＦＳＭ、ＢＴとして図７ｂに示した構成のＢＴを用いたが、ＦＳＭの構成は図６ｂの構成に限るものではないし、ＢＴの構成は図７ｂの構成に限るものではない。
【００４９】
また、図６ｃや図７ｃのように、ユーザが指定したノードにＦＳＭ若しくはＢＴを割り当てた後で、該割り当てたＦＳＭやＢＴをユーザが操作部３０４を操作して編集しても良い。例えば、新たにノードを追加したり、既存のノードを削除したり、既存のノードを他のノードに置換したり、ノードの遷移先を変更したりしても良い。そして編集したＦＳＭやＢＴを別途保存しておけば、この別途保存したＦＳＭやＢＴを、新たな人工知能のデータを作成する際に最上位階層に設定する候補として利用できるし、また、現在作成中の若しくは次回以降作成する人工知能のデータにおいて対象ノードに割り当てる候補として利用できる。
【００５０】
また、第１，２の実施形態では、ノードに割り当てるＦＳＭ若しくはＢＴは、予め作成して外部記憶装置３０６に保存されたＦＳＭ若しくはＢＴからユーザによって選択されたものであった。しかし、ノードに割り当てるＦＳＭ若しくはＢＴをＧＵＩ上で作成しても良い。例えば、ユーザがマウスを操作してマウスポインタを対象ノード上に移動させて、そこでマウスの右ボタンを押下すると、ＣＰＵ３０１は、図５のメニューウィンドウ５０２を表示部３０５の表示画面上に表示させる。ここでユーザがマウスを操作してマウスポインタをメニューウィンドウ５０２内の領域５０２ａ内に移動させてそこでマウスの左ボタンを押下すると、ＣＰＵ３０１は、ＦＳＭを作成するためのＧＵＩ（ＦＳＭ作成用ＧＵＩ）を新たに表示部３０５の表示画面上に表示させる。これによりユーザはマウスやキーボード等を用いてＦＳＭ作成用ＧＵＩ上でＦＳＭを作成することができる。そしてユーザがキーボードやマウスを操作して作成完了指示を入力すると、ＣＰＵ３０１は、ＦＳＭ作成用ＧＵＩ上で作成したＦＳＭを対象ノードに割り当てる。一方、ユーザがマウスを操作してマウスポインタをメニューウィンドウ５０２内の領域５０２ｂ内に移動させてそこでマウスの左ボタンを押下すると、ＣＰＵ３０１は、ＢＴを作成するためのＧＵＩ（ＢＴ作成用ＧＵＩ）を新たに表示部３０５の表示画面上に表示させる。これによりユーザはマウスやキーボード等を用いてＢＴ作成用ＧＵＩ上でＢＴを作成することができる。そしてユーザがキーボードやマウスを操作して作成完了指示を入力すると、ＣＰＵ３０１は、ＢＴ作成用ＧＵＩ上で作成したＢＴを対象ノードに割り当てる。
【００５１】
本発明については典型的な実施の形態を用いて説明したが、本発明が上記実施の形態に制限されるものではないことは理解されるべきである。以下の特許請求の範囲については、そのような全ての変更及び等価な構成、機能を網羅するような広い解釈が認められるべきである。
【００５２】
本願は、２０１５年３月１３日提出の米国仮出願番号６２／１３２６５１を基礎として優先権を主張するものであり、その記載内容の全てを、ここに援用する。
【図１】
0006514352.tif 000002
【図２】
0006514352.tif 000003
【図３】
0006514352.tif 000004
【図４】
0006514352.tif 000005
【図５】
0006514352.tif 000006
【図６ａ】
0006514352.tif 000007
【図６ｂ】
0006514352.tif 000008
【図６ｃ】
0006514352.tif 000009
【図７ａ】
0006514352.tif 000010
【図７ｂ】
0006514352.tif 000011
【図７ｃ】
0006514352.tif 000012
【図８】
0006514352.tif 000013
【図９】
0006514352.tif 000014
【図１０】
0006514352.tif 000015
【図１１】
0006514352.tif 000016
【図１２】
0006514352.tif 000017