【文献】
Behavior TreeによるUnity上でのUIフローコントロール,GREE Engineers' Blog[online],2014年 6月20日,[2018年 7月26日検索],URL,http://labs.gree.jp/blog/2014/06/10895/
【文献】
三宅 陽一郎,ディジタルゲームにおける人工知能技術の応用の現在,人工知能 第30巻 第1号,日本,(一社)人工知能学会,第30巻 第1号 通巻169号,p.45〜64
(58)【調査した分野】(Int.Cl.,DB名)
キャラクタの状態が割り当てられたノードを含む有限状態マシン、キャラクタの行動内容が割り当てられたノードを含むビヘイビアツリー、の何れか一方に含まれているノードのうち1つのノードがユーザ操作に応じて指定されると、該1つのノードに有限状態マシン及びビヘイビアツリーの何れを割り当てるのかをユーザに問い合わせるための画面を表示画面に表示させる表示制御手段と、
前記有限状態マシン及び前記ビヘイビアツリーのうちユーザ操作に応じて選択された一方を、前記1つのノードに割り当てる割り当て手段と
を備えることを特徴とする情報処理装置。
前記表示制御手段は、前記画面を介したユーザ操作に応じて前記有限状態マシンが選択された場合には、前記1つのノードに割り当てる候補となる1以上の有限状態マシンを一覧表示し、
前記割り当て手段は、前記一覧表示された1以上の有限状態マシンのうちユーザ操作に応じて選択された有限状態マシンを、前記1つのノードに割り当てることを特徴とする請求項1に記載の情報処理装置。
前記表示制御手段は、前記画面を介したユーザ操作に応じて前記ビヘイビアツリーが選択された場合には、前記1つのノードに割り当てる候補となる1以上のビヘイビアツリーを一覧表示し、
前記割り当て手段は、前記一覧表示された1以上のビヘイビアツリーのうちユーザ操作に応じて選択されたビヘイビアツリーを、前記1つのノードに割り当てることを特徴とする請求項1又は2に記載の情報処理装置。
キャラクタの状態が割り当てられたノードを含む有限状態マシン、キャラクタの行動内容が割り当てられたノードを含むビヘイビアツリー、の何れか一方に含まれているノードのうち1つのノードがユーザ操作に応じて指定されると、該1つのノードに有限状態マシン及びビヘイビアツリーの何れを割り当てるのかをユーザに問い合わせるための画面を表示画面に表示させ、
前記有限状態マシン及び前記ビヘイビアツリーのうちユーザ操作に応じて選択された一方を、前記1つのノードに割り当てる
ことを特徴とする情報処理方法。
【発明を実施するための形態】
【0010】
以下、添付図面を参照して、本発明の実施形態について詳細に説明する。
【0011】
第1の実施形態
キャラクタの状態が割り当てられたノードを含む有限状態マシン、キャラクタの行動内容が割り当てられたノードを含むビヘイビアツリー、の何れか一方に含まれているノードのうち1つのノードがユーザ操作に応じて指定されると、該1つのノードに有限状態マシン及びビヘイビアツリーの何れを割り当てるのかをユーザに問い合わせるための画面を表示画面に表示させ、有限状態マシン及びビヘイビアツリーのうちユーザ操作に応じて選択された一方を、該1つのノードに割り当てることを特徴とする情報処理装置の一例について説明する。
【0012】
ここでいうところの「キャラクタ」とは、ゲームの世界(所謂仮想世界)に存在する仮想物体であって、該仮想世界における動的若しくは静的な情報(イベント)に基づいて次の状態が決定される該仮想物体のことである。然るにこのような定義に該当するものであれば、例えば、人や動物、植物、乗り物、建物等のゲーム中に登場する登場オブジェクトに限らず、仮想空間中の光源等、仮想空間の構成要素までも、以下の「キャラクタ」に当てはめても良い。
【0013】
先ず、このような情報処理装置を適用したPC(パーソナルコンピュータ)等のコンピュータ装置のハードウェア構成例について、
図3のブロック図を用いて説明する。なお、
図3に示したハードウェア構成例は、上記の情報処理装置に適用可能なコンピュータ装置のハードウェア構成の一例であり、以下に説明する処理を実現可能な構成であれば、如何なる構成を採用しても良い。
【0014】
CPU301は、RAM302やROM303に格納されているコンピュータプログラム及び/又はデータを用いて処理を実行することで、コンピュータ装置全体の動作制御を行うと共に、コンピュータ装置が行うものとして後述する各処理を実行若しくは制御する。
【0015】
RAM302は、ROM303や外部記憶装置306からロードされたコンピュータプログラムやデータ、I/F(インターフェース)307を介して外部から受信したデータ、を格納するためのエリアを有する。更にRAM302は、CPU301が各種の処理を実行する若しくは制御する際に用いるワークエリアを有する。このように、RAM302は、各種のエリアを適宜提供することができる。
【0016】
ROM303には、書き換え不要の本装置の設定データやコンピュータプログラム(ブートプログラムなど)が格納されている。
【0017】
操作部304は、キーボードやマウスなどにより構成されており、本装置のユーザが操作することで各種の指示をCPU301に対して入力することができるユーザインターフェースである。
【0018】
表示部305はCRTや液晶画面などにより構成されており、CPU301による処理結果を画像や文字などでもって表示することができる。
【0019】
外部記憶装置306は、ハードディスクドライブ装置に代表される大容量情報記憶装置である。外部記憶装置306には、OS(オペレーティングシステム)や、コンピュータ装置が行うものとして後述する各処理をCPU301に実行若しくは制御させるためのコンピュータプログラムやデータが保存されている。外部記憶装置306に保存されているコンピュータプログラムには、後述するGUI(グラフィカルユーザインターフェース)に係るコンピュータプログラムが含まれている。また、外部記憶装置306に保存されているデータには、上記のGUIに係るデータや、以下の説明において既知の情報として取り扱うデータが含まれている。外部記憶装置306に保存されているコンピュータプログラムやデータは、CPU301による制御に従って適宜RAM302にロードされ、CPU301による処理対象となる。
【0020】
I/F307は、外部の機器との間で有線及び/又は無線でもってデータ通信を行うためのものであり、例えば、以下の説明において外部記憶装置306から取得するものとして説明するコンピュータプログラムやデータは、I/F307を介して外部の機器から取得するようにしても構わない。
【0021】
上記のCPU301、RAM302、ROM303、操作部304、表示部305、外部記憶装置306、I/F307は何れも、バス308に接続されている。
【0022】
次に、ゲームに登場するキャラクタの行動パターンを規定する人工知能データを作成するためのGUIについて説明する。なお、外部記憶装置306には、予め作成したFSMやBTが複数個、ファイルとして保存されているものとする。そしてユーザが操作部304を操作してGUIの起動指示を入力すると(例えば表示部305の表示画面上に表示されているGUIのアイコンをマウスの左ボタンでダブルクリックすると)、CPU301は、GUIのコンピュータプログラムやデータを外部記憶装置306からRAM302にロードし、該コンピュータプログラムを該データを適宜参照しながら実行することで、GUIの初期画面を表示部305の表示画面上に表示させる。この初期画面においてユーザは先ず、階層構造を有する人工知能データの最上位階層にFSM及びBTの何れかを設定するのかを操作部304を操作して指示する必要がある。
【0023】
例えば、ユーザが操作部304を用いてGUIを操作し、最上位階層にFSMを設定する指示を入力すると、CPU301は表示部305の表示画面に、外部記憶装置306に保存されているFSMのファイル名(必要に応じて対応するアイコン)を一覧表示する。ユーザは操作部304を操作して該一覧表示されているFSMから1つを選択する。これによりCPU301は、該選択されたFSMのファイルによって規定されるノード群を表示部305の表示画面に表示させる。
【0024】
一方、ユーザが操作部304を用いてGUI操作し、最上位階層にBTを設定する指示を入力すると、CPU301は表示部305の表示画面に、外部記憶装置306に保存されているBTのファイル名(必要に応じて対応するアイコン)を一覧表示する。ユーザは操作部304を操作して該一覧表示されているBTから1つを選択する。これによりCPU301は、該選択されたBTのファイルによって規定されるノード群を表示部305の表示画面に表示させる。
【0025】
以下では、ユーザが操作部304を用いてGUIを操作し、最上位階層にFSMを設定する指示を入力し、その後、一覧表示されたFSMのファイル群から「キャラクタの状態Aが割り当てられたノード、キャラクタの状態Bが割り当てられたノード、キャラクタの状態Cが割り当てられたノードを有し且つそれぞれのノード間が遷移ラインでもって接続されているFSM」のファイルが選択されたケースを例にとり説明する。
【0026】
このとき、GUI上には、
図4に示す如く、ノード401〜403が遷移ラインと共に表示される。キャラクタの状態Aが割り当てられたノード401には「状態A」を表す文字列が重ねて表示され、キャラクタの状態Bが割り当てられたノード402には「状態B」を表す文字列が重ねて表示され、キャラクタの状態Cが割り当てられたノード403には「状態C」を表す文字列が重ねて表示されており、更に、ノード間には遷移ラインが表示されている。
【0027】
ここで、ノード403に、FSM及びBTの何れかを割り当てる操作方法について説明数する。以下では、操作部304の一例であるマウスを用いた操作方法を説明するが、同様の目的を達成できるのであれば、どのようなデバイスを用いても構わない。
【0028】
図5に示す如く、ユーザがマウスを操作してマウスポインタ501をノード403上に移動させて、そこでマウスの右ボタンを押下すると、CPU301は、ノード403にFSMを割り当てるのか、それともBTを割り当てるのかをユーザに問い合わせる(選択させる)ためのメニューウィンドウ502を表示部305の表示画面上に表示させる。
【0029】
ここでユーザがマウスを操作してマウスポインタ501をメニューウィンドウ502内の領域502a(FSMを選択するための領域)内に移動させてそこでマウスの左ボタンを押下すると、CPU301は、
図6aに示す如く、外部記憶装置306に保存されているそれぞれのFSMのファイルのファイル名(必要に応じて対応するアイコン)を一覧表示したメニューウィンドウ600を表示部305の表示画面上に表示させる。ユーザがマウスを操作してマウスポインタ501を「FSM3」に移動させてそこでマウスの左ボタンを押下すると、CPU301は、ノード403にファイル名が「FSM3」であるファイルが規定するFSMを割り当てる。ファイル名が「FSM3」であるファイルが規定するFSMの構成を
図6bに示す。
図6bに示す如く、ファイル名が「FSM3」であるファイルが規定するFSMは、「キャラクタの状態C1が割り当てられたノード601、キャラクタの状態C2が割り当てられたノード602、キャラクタの状態C3が割り当てられたノード603を有し且つそれぞれのノード間が遷移ラインでもって接続されているFSM」である。そしてCPU301は、
図6cに示す如く、
図4のFSMにおいてノード403が
図6bのFSMに置換されたものを表示部305の表示画面上に表示させる。
【0030】
なお、
図6cに示す構成を有する人工知能の動作則については次の通りである。基本的には、ゲーム中にイベントが発生した場合に、キャラクタの状態が該イベントに対応する状態に遷移するというFSMの動作に沿ってはいるが、キャラクタの現状態が状態Aである状況において、状態Aから状態Cに遷移するための条件がゲーム中で満たされると(状態Aから状態Cに遷移させるためのイベントがゲーム中で発生すると)、キャラクタの状態は状態Cに属する状態C1に遷移する。また、キャラクタの現状態が状態Bである状況において、状態Bから状態Cに遷移するための条件がゲーム中で満たされると(状態Bから状態Cに遷移させるためのイベントがゲーム中で発生すると)、キャラクタの状態は状態C1に遷移する。これは、状態Cにおける初期状態がC1に設定されているからであって、例えば初期状態がC2に設定されている場合には、状態A(状態B)から状態C2に遷移することになる。また、キャラクタの現状態が状態C1であった場合に、状態C1から状態C2(C3)に遷移するための条件がゲーム中で満たされると、キャラクタの状態は状態C2(C3)に遷移する。また、対応する条件を満たしていれば、状態C1,C2,C3から状態Aや状態B等に遷移することができる。
【0031】
一方、
図5において、ユーザがマウスを操作してマウスポインタ501をメニューウィンドウ502内の領域502b(BTを選択するための領域)内に移動させてそこでマウスの左ボタンを押下すると、CPU301は、
図7aに示す如く、外部記憶装置306に保存されているそれぞれのBTのファイルのファイル名(必要に応じて対応するアイコン)を一覧表示したメニューウィンドウ700をGUI上に表示させる。ここでユーザがマウスを操作してマウスポインタ501を「BT3」に移動させてそこでマウスの左ボタンを押下すると、CPU301は、ノード403にファイル名が「BT3」であるファイルが規定するBTを割り当てる。ファイル名が「BT3」であるファイルが規定するBTの構成を
図7bに示す。
図7bに示す如く、ファイル名が「BT3」であるファイルが規定するBTは、「ルートノード701、Sequenceノード702、キャラクタの行動1が割り当てられたノード703、キャラクタの行動2が割り当てられたノード704、キャラクタの行動3が割り当てられたノード705を有し且つルートノード701とSequenceノード702との間、Sequenceノード702とノード703〜705との間が遷移ラインでもって接続されているBT」である。CPU301は、
図7cに示す如く、
図4のFSMにおいてノード403が、
図7bのBTに置換されたものを表示部305の表示画面上に表示させる。
【0032】
なお、
図7cに示す構成を有する人工知能の動作則については次の通りである。キャラクタの現状態が状態Aである状況において、状態Aから状態Cに遷移するための条件がゲーム中で満たされると(状態Aから状態Cに遷移させるためのイベントがゲーム中で発生すると)、キャラクタの状態は状態Cに遷移すると共に、CPU301はルートノード701を介してSequenceノード702を実行する。Sequenceノード702とは、子ノード(
図7cではノード703〜705)を順次実行するノードである。ここでCPU301はSequenceノード702を実行することで、ノード703〜705を順次実行し、これによりキャラクタを行動1に従って行動させ、行動2に従って行動させ、行動3に従って行動させる。
【0033】
以降、ユーザは、GUI上に表示中のノード群のうち何れか1つを指定して、該指定したノードに、所望のFSM若しくは所望のBTを割り当てることができる。このような作業により構成される、FSMとBTの入れ子階層構造の一例を
図9に示す。
図9では、FSM900(最上位階層:1番目の階層)のノード901にはFSM902(2番目の階層)が割り当てられており、FSM900のノード903にはBT904(2番目の階層)が割り当てられている。また、BT904のノード905にはFSM906(3番目の階層)が割り当てられている。
【0034】
そしてユーザが操作部304を操作して保存指示を入力すると、CPU301は、GUI上に表示されているノード群及びノード間の遷移関係を示すデータを人工知能のデータとして外部記憶装置306に保存する。
図9の場合、FSM900のデータが人工知能のデータとして外部記憶装置306に保存されることになる。FSM900のデータでは、ノード901にFSM902が組み込まれており、ノード903にBT904が組み込まれており、ノード905にFSM906が組み込まれている。もちろん、人工知能のデータの構成はこのような構成に限るものではなく、ノード間の関係が分かるような構成であれば、如何なる構成を採用しても良い。また、人工知能のデータは適宜圧縮してから保存するようにしても良い。
【0035】
FSMとBTとの入れ子階層構造を作成中のGUIの表示例、FSMの入れ子階層構造を作成中のGUIの表示例、BTの入れ子階層構造を作成中のGUIの表示例、をそれぞれ
図10〜12に示す。
【0036】
以上説明した、GUIを用いた人工知能のデータの生成処理について、同処理のフローチャートを示す
図8を用いて説明する。
【0037】
<ステップS801>
CPU301は、GUI上に表示中のノード群のうち1つのノードがユーザによって指定された(上記の例では、ノード上にマウスポインタを移動させてそこで右ボタンを押下された)か否かを判断する。この判断の結果、GUI上に表示中のノード群のうち1つのノードがユーザによって指定された場合には、処理はステップS802に進み、指定されていない場合には、処理はステップS806に進む。
【0038】
<ステップS802>
CPU301は、ユーザによって指定されたノード(指定ノード)にFSMを割り当てるのか、それともBTを割り当てるのかをユーザに選択させるためのメニューウィンドウを表示部305の表示画面上に表示させる。
【0039】
<ステップS803>
CPU301は、ユーザによってFSMを割り当てる旨の指示が入力された(上記の例では、マウスポインタ501を領域502a内に移動させてそこでマウスの左ボタンが押下された)場合には、外部記憶装置306に保存されているそれぞれのFSMのファイルのファイル名を一覧表示したメニューウィンドウをGUI上に表示させる。一方、CPU301は、ユーザによってBTを割り当てる旨の指示が入力された(上記の例では、マウスポインタ501を領域502b内に移動させてそこでマウスの左ボタンが押下された)場合には、外部記憶装置306に保存されているそれぞれのBTのファイルのファイル名を一覧表示したメニューウィンドウをGUI上に表示させる。
【0040】
<ステップS804>
CPU301は、一覧表示されたファイル群(FSMのファイル群若しくはBTのファイル群)からユーザが選択したファイルを指定ノードに割り当てる。
【0041】
<ステップS805>
CPU301は、GUIの表示を更新する。上記の例では、
図4のFSMの表示の代わりに、
図6cに示した構成(ユーザによって
図6bのFSMを割り当てる旨の指示が入力された場合)若しくは
図7cに示した構成(ユーザによって
図7bのBTを割り当てる旨の指示が入力された場合)を表示する。
【0042】
<ステップS806>
ユーザが操作部304を操作して終了指示(作成中の人工知能のデータを保存して終了する指示)を入力したことをCPU301が検知した場合、処理はステップS807に進む。一方、ユーザが操作部304を操作して終了指示を入力したことをCPU301が検知していない場合には、処理はステップS801に戻る。
【0043】
<ステップS807>
CPU301は、現段階でGUI上に表示されている構成を有する人工知能のデータを外部記憶装置306に保存して、GUIを終了させる。
【0044】
第2の実施形態
第1の実施形態では人工知能のデータを作成する技術について説明した。本実施形態では、このような人工知能のデータを用いてキャラクタの動作制御を行う技術について説明する。第1の実施形態で説明した人工知能のデータは、ゲームに登場するキャラクタの動作制御を行うためのものであるから、該ゲームのデータに組み込まれる。ゲームのデータはゲーム機に読み込まれ、該ゲーム機のプロセッサが該データを用いてゲームを実行する。なお、人工知能のデータやゲームのデータには、データだけでなくコンピュータプログラムも含まれている。
【0045】
ゲーム機の構成については様々な構成が考えられるが、以下では一例として、
図3に示す構成を有するものとして説明する。この場合、外部記憶装置306には、上記の人工知能のデータを含むゲームのデータがインストールされており、CPU301が該ゲームのデータを用いてゲームを実行することになる。なお、外部記憶装置306にゲームのデータをインストールする代わりに、CD−ROMやDVD−ROM等のコンピュータ読み取り可能な記憶媒体にゲームのデータを格納しておき、該ゲームのデータを記憶媒体ドライブ装置によって読み取り、CPU301が該読み取られたゲームのデータを用いてゲームを実行するようにしても良い。
【0046】
図6cに示した構成を有する人工知能のデータに従ったキャラクタの動作制御、
図7cに示した構成を有する人工知能のデータに従ったキャラクタの動作制御、については第1の実施形態で説明したが、例えば、
図7cに示した構成を有する人工知能のデータに従ったキャラクタの動作制御において、例えばノード704の実行中に、状態Bに遷移させるための条件が満たされた場合には、次のような動作制御を行う。すなわち、CPU301は、ノード704の実行を中断して、キャラクタの状態を状態Bに遷移させる制御を行う。このように、n番目の階層におけるFSMにおいて状態遷移の条件が満たされた場合には、該FSMを親とする下位の階層(m(>n)番目の階層)のBTの動作を停止させてから状態遷移を行う。BTの動作停止は、より下位のBTから順に行う。
【0047】
また、BTのノードには、「ランダム」、「プライオリティ」、「パラレル」といったノードがある。「ランダム」ノードとは、該ノードの1つ下位の階層における子ノードのうち1つをランダムに決定し、該決定した子ノード及び該決定した子ノードを親とする子ノードを実行するものである。「プライオリティ」ノードとは、該ノードの1つ下位の階層における子ノードのうちGUI上でより上方に配置した子ノード(子ノードの配置位置は操作部304の操作に応じて適宜変更可能である)及び該より上方に配置した子ノードを親とする子ノードを優先的に実行し、該実行が失敗した場合には、「プライオリティ」ノードの1つ下位の階層における子ノードのうち実行が失敗した子ノードの1つ下方の子ノード及び該子ノードを親とする子ノードを実行するものである。「パラレル」ノードとは、該ノードの1つ下位の階層におけるそれぞれの子ノード及び該子ノードを親とする子ノードを並列に実行するものである。ここで、このようなノードを用いてBTを構成しても良い。なお、並列処理するそれぞれの処理を個々のプロセッサに割り当てて実行するようにしても良い。
【0048】
なお、第1,2の実施形態では、FSMとして
図6bに示した構成のFSM、BTとして
図7bに示した構成のBTを用いたが、FSMの構成は
図6bの構成に限るものではないし、BTの構成は
図7bの構成に限るものではない。
【0049】
また、
図6cや
図7cのように、ユーザが指定したノードにFSM若しくはBTを割り当てた後で、該割り当てたFSMやBTをユーザが操作部304を操作して編集しても良い。例えば、新たにノードを追加したり、既存のノードを削除したり、既存のノードを他のノードに置換したり、ノードの遷移先を変更したりしても良い。そして編集したFSMやBTを別途保存しておけば、この別途保存したFSMやBTを、新たな人工知能のデータを作成する際に最上位階層に設定する候補として利用できるし、また、現在作成中の若しくは次回以降作成する人工知能のデータにおいて対象ノードに割り当てる候補として利用できる。
【0050】
また、第1,2の実施形態では、ノードに割り当てるFSM若しくはBTは、予め作成して外部記憶装置306に保存されたFSM若しくはBTからユーザによって選択されたものであった。しかし、ノードに割り当てるFSM若しくはBTをGUI上で作成しても良い。例えば、ユーザがマウスを操作してマウスポインタを対象ノード上に移動させて、そこでマウスの右ボタンを押下すると、CPU301は、
図5のメニューウィンドウ502を表示部305の表示画面上に表示させる。ここでユーザがマウスを操作してマウスポインタをメニューウィンドウ502内の領域502a内に移動させてそこでマウスの左ボタンを押下すると、CPU301は、FSMを作成するためのGUI(FSM作成用GUI)を新たに表示部305の表示画面上に表示させる。これによりユーザはマウスやキーボード等を用いてFSM作成用GUI上でFSMを作成することができる。そしてユーザがキーボードやマウスを操作して作成完了指示を入力すると、CPU301は、FSM作成用GUI上で作成したFSMを対象ノードに割り当てる。一方、ユーザがマウスを操作してマウスポインタをメニューウィンドウ502内の領域502b内に移動させてそこでマウスの左ボタンを押下すると、CPU301は、BTを作成するためのGUI(BT作成用GUI)を新たに表示部305の表示画面上に表示させる。これによりユーザはマウスやキーボード等を用いてBT作成用GUI上でBTを作成することができる。そしてユーザがキーボードやマウスを操作して作成完了指示を入力すると、CPU301は、BT作成用GUI上で作成したBTを対象ノードに割り当てる。
【0051】
本発明については典型的な実施の形態を用いて説明したが、本発明が上記実施の形態に制限されるものではないことは理解されるべきである。以下の特許請求の範囲については、そのような全ての変更及び等価な構成、機能を網羅するような広い解釈が認められるべきである。
【0052】
本願は、2015年3月13日提出の米国仮出願番号62/132651を基礎として優先権を主張するものであり、その記載内容の全てを、ここに援用する。