特許第6514352号(P6514352)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社スクウェア・エニックスの特許一覧

特許6514352情報処理装置、情報処理方法、非一時的なコンピュータ読み取り可能な記憶媒体
<>
  • 特許6514352-情報処理装置、情報処理方法、非一時的なコンピュータ読み取り可能な記憶媒体 図000002
  • 特許6514352-情報処理装置、情報処理方法、非一時的なコンピュータ読み取り可能な記憶媒体 図000003
  • 特許6514352-情報処理装置、情報処理方法、非一時的なコンピュータ読み取り可能な記憶媒体 図000004
  • 特許6514352-情報処理装置、情報処理方法、非一時的なコンピュータ読み取り可能な記憶媒体 図000005
  • 特許6514352-情報処理装置、情報処理方法、非一時的なコンピュータ読み取り可能な記憶媒体 図000006
  • 特許6514352-情報処理装置、情報処理方法、非一時的なコンピュータ読み取り可能な記憶媒体 図000007
  • 特許6514352-情報処理装置、情報処理方法、非一時的なコンピュータ読み取り可能な記憶媒体 図000008
  • 特許6514352-情報処理装置、情報処理方法、非一時的なコンピュータ読み取り可能な記憶媒体 図000009
  • 特許6514352-情報処理装置、情報処理方法、非一時的なコンピュータ読み取り可能な記憶媒体 図000010
  • 特許6514352-情報処理装置、情報処理方法、非一時的なコンピュータ読み取り可能な記憶媒体 図000011
  • 特許6514352-情報処理装置、情報処理方法、非一時的なコンピュータ読み取り可能な記憶媒体 図000012
  • 特許6514352-情報処理装置、情報処理方法、非一時的なコンピュータ読み取り可能な記憶媒体 図000013
  • 特許6514352-情報処理装置、情報処理方法、非一時的なコンピュータ読み取り可能な記憶媒体 図000014
  • 特許6514352-情報処理装置、情報処理方法、非一時的なコンピュータ読み取り可能な記憶媒体 図000015
  • 特許6514352-情報処理装置、情報処理方法、非一時的なコンピュータ読み取り可能な記憶媒体 図000016
  • 特許6514352-情報処理装置、情報処理方法、非一時的なコンピュータ読み取り可能な記憶媒体 図000017
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6514352
(24)【登録日】2019年4月19日
(45)【発行日】2019年5月15日
(54)【発明の名称】情報処理装置、情報処理方法、非一時的なコンピュータ読み取り可能な記憶媒体
(51)【国際特許分類】
   A63F 13/60 20140101AFI20190425BHJP
   A63F 13/55 20140101ALI20190425BHJP
   G06F 8/34 20180101ALI20190425BHJP
【FI】
   A63F13/60
   A63F13/55
   G06F8/34
【請求項の数】7
【全頁数】13
(21)【出願番号】特願2017-542925(P2017-542925)
(86)(22)【出願日】2016年3月10日
(65)【公表番号】特表2018-512186(P2018-512186A)
(43)【公表日】2018年5月17日
(86)【国際出願番号】JP2016001325
(87)【国際公開番号】WO2016147620
(87)【国際公開日】20160922
【審査請求日】2017年8月23日
(31)【優先権主張番号】62/132,651
(32)【優先日】2015年3月13日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】308033283
【氏名又は名称】株式会社スクウェア・エニックス
(74)【代理人】
【識別番号】100076428
【弁理士】
【氏名又は名称】大塚 康徳
(74)【代理人】
【識別番号】100115071
【弁理士】
【氏名又は名称】大塚 康弘
(74)【代理人】
【識別番号】100112508
【弁理士】
【氏名又は名称】高柳 司郎
(74)【代理人】
【識別番号】100116894
【弁理士】
【氏名又は名称】木村 秀二
(74)【代理人】
【識別番号】100130409
【弁理士】
【氏名又は名称】下山 治
(74)【代理人】
【識別番号】100134175
【弁理士】
【氏名又は名称】永川 行光
(72)【発明者】
【氏名】三宅 陽一郎
(72)【発明者】
【氏名】横山 貴規
(72)【発明者】
【氏名】並木 幸介
【審査官】 前地 純一郎
(56)【参考文献】
【文献】 特開2000−242499(JP,A)
【文献】 再公表特許第2013/179468(JP,A1)
【文献】 米国特許出願公開第2004/0075677(US,A1)
【文献】 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名)
A63F13/00 −13/98
A63F 9/24
G06N 5/00 − 7/06
G06F 3/01
G06F 3/048− 3/0489
G06F 8/34
(57)【特許請求の範囲】
【請求項1】
キャラクタの状態が割り当てられたノードを含む有限状態マシン、キャラクタの行動内容が割り当てられたノードを含むビヘイビアツリー、の何れか一方に含まれているノードのうち1つのノードがユーザ操作に応じて指定されると、該1つのノードに有限状態マシン及びビヘイビアツリーの何れを割り当てるのかをユーザに問い合わせるための画面を表示画面に表示させる表示制御手段と、
前記有限状態マシン及び前記ビヘイビアツリーのうちユーザ操作に応じて選択された一方を、前記1つのノードに割り当てる割り当て手段と
を備えることを特徴とする情報処理装置。
【請求項2】
前記表示制御手段は、前記画面を介したユーザ操作に応じて前記有限状態マシンが選択された場合には、前記1つのノードに割り当てる候補となる1以上の有限状態マシンを一覧表示し、
前記割り当て手段は、前記一覧表示された1以上の有限状態マシンのうちユーザ操作に応じて選択された有限状態マシンを、前記1つのノードに割り当てることを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記表示制御手段は、前記画面を介したユーザ操作に応じて前記ビヘイビアツリーが選択された場合には、前記1つのノードに割り当てる候補となる1以上のビヘイビアツリーを一覧表示し、
前記割り当て手段は、前記一覧表示された1以上のビヘイビアツリーのうちユーザ操作に応じて選択されたビヘイビアツリーを、前記1つのノードに割り当てることを特徴とする請求項1又は2に記載の情報処理装置。
【請求項4】
更に、
前記有限状態マシン及び前記ビヘイビアツリーのうち前記画面を介したユーザ操作に応じて選択された一方を、ユーザ操作に応じて編集する編集手段を備えることを特徴とする請求項1乃至3の何れか1項に記載の情報処理装置。
【請求項5】
更に、
前記割り当て手段による割り当てによって生成された、前記有限状態マシン及び前記ビヘイビアツリーの何れか一方のノードに前記有限状態マシン及び前記ビヘイビアツリーの何れか一方が割り当てられた構造を有するデータを、前記キャラクタの人工知能データとして保存する保存手段を備えることを特徴とする請求項1乃至4の何れか1項に記載の情報処理装置。
【請求項6】
キャラクタの状態が割り当てられたノードを含む有限状態マシン、キャラクタの行動内容が割り当てられたノードを含むビヘイビアツリー、の何れか一方に含まれているノードのうち1つのノードがユーザ操作に応じて指定されると、該1つのノードに有限状態マシン及びビヘイビアツリーの何れを割り当てるのかをユーザに問い合わせるための画面を表示画面に表示させ、
前記有限状態マシン及び前記ビヘイビアツリーのうちユーザ操作に応じて選択された一方を、前記1つのノードに割り当て
ことを特徴とする情報処理方法。
【請求項7】
コンピュータを、
キャラクタの状態が割り当てられたノードを含む有限状態マシン、キャラクタの行動内容が割り当てられたノードを含むビヘイビアツリー、の何れか一方に含まれているノードのうち1つのノードがユーザ操作に応じて指定されると、該1つのノードに有限状態マシン及びビヘイビアツリーの何れを割り当てるのかをユーザに問い合わせるための画面を表示画面に表示させる表示制御手段、
前記有限状態マシン及び前記ビヘイビアツリーのうちユーザ操作に応じて選択された一方を、前記1つのノードに割り当てる割り当て手段
として機能させるためのコンピュータプログラムを格納した、非一時的なコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ゲームキャラクタの人工知能に係る技術に関するものである。
【背景技術】
【0002】
近年、ゲームで用いられる人工知能には、より抽象的な思考が求められると同時に、柔軟な振る舞いが必要とされている。従来では、ゲームにおける人工知能は、有限状態マシン(Finite State Machine、以下FSM)、ビヘイビアツリー(Behavior Tree、以下BT)のいずれかで開発されていた。
【0003】
FSMとは、図1に示す如く、状態(ステート)をノードとし、該ノード間を遷移ラインで接続して構成されたもので、イベントが発生すると、該イベントに応じたノードに遷移し、該遷移したノードに対応する状態をキャラクタの状態とするものである。一方、BTとは、キャラクタの行動規則をツリー表現したもので、例えば、図2に示す如く、親ノードによって、子ノード(行動A〜C)のどれを及び/又はどの順序で実行するのかを規定するものである。一般に、FSMは定型的な制御に優れており、BTは臨機応変な制御に優れていた。
【先行技術文献】
【非特許文献】
【0004】
【非特許文献1】Damian Isla、“GDC 2005 Proceeding: Handling Complexity in the Halo 2 AI”、[online]、March 11, 2005、[2016年2月5日検索]、インターネット<URL:http://www.gamasutra.com/view/feature/130663/gdc_2005_proceeding_handling_.php>
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかし従来では、FSM及びBTの何れか一方のみを使用してキャラクタの人工知能を開発していたので、FSM及びBTの双方の利点を活用することはできなかった。そこで、本発明では、FSM及びBTの双方の利点を活用して、より柔軟なキャラクタの行動パターンを表現する人工知能を開発するための技術を提供する。
【課題を解決するための手段】
【0006】
本発明の一様態は、キャラクタの状態が割り当てられたノードを含む有限状態マシン、キャラクタの行動内容が割り当てられたノードを含むビヘイビアツリー、の何れか一方に含まれているノードのうち1つのノードがユーザ操作に応じて指定されると、該1つのノードに有限状態マシン及びビヘイビアツリーの何れを割り当てるのかをユーザに問い合わせるための画面を表示画面に表示させる表示制御手段と、前記有限状態マシン及び前記ビヘイビアツリーのうちユーザ操作に応じて選択された一方を、前記1つのノードに割り当てる割り当て手段とを備えることを特徴とする。
【発明の効果】
【0007】
本発明の構成によれば、FSM及びBTの双方の利点を活用して、より柔軟なキャラクタの行動パターンを表現する人工知能を開発することができる。
【0008】
本発明の更なる特徴は、添付図面を参照して以下の例示的な実施の形態の説明から明らかになるであろう。
【図面の簡単な説明】
【0009】
添付図面は明細書に含まれ、その一部を構成し、本発明の実施の形態を示し、その記述と共に本発明の原理を説明するために用いられる。
図1図1はFSMの構成例を示す図。
図2図2はBTの構成例を示す図。
図3図3はコンピュータ装置のハードウェア構成例を示すブロック図。
図4図4は選択されたFSMの構成例を示す図。
図5図5はFSM及びBTの何れかを割り当てる方法を説明する図。
図6a図6aはFSMの割り当てを説明する図。
図6b図6bはFSMの割り当てを説明する図。
図6c図6cはFSMの割り当てを説明する図。
図7a図7aはBTの割り当てを説明する図。
図7b図7bはBTの割り当てを説明する図。
図7c図7cはBTの割り当てを説明する図。
図8図8はGUIを用いた人工知能のデータの生成処理のフローチャート。
図9図9はFSMとBTの入れ子階層構造の一例を示す図。
図10図10はFSMとBTとの入れ子階層構造を作成中のGUIの表示例を示す図。
図11図11はFSMの入れ子階層構造を作成中のGUIの表示例を示す図。
図12図12はBTの入れ子階層構造を作成中のGUIの表示例を示す図。
【発明を実施するための形態】
【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を基礎として優先権を主張するものであり、その記載内容の全てを、ここに援用する。
図1
図2
図3
図4
図5
図6a
図6b
図6c
図7a
図7b
図7c
図8
図9
図10
図11
図12