bonotakeの日記

元・ソフトウェア工学系研究者、今・AI系エンジニア

ガンビット@FF12

最近、暇なときに『Final Fantasy XII』をやってるんですが。

今回のこのゲーム、フィールド画面と戦闘画面が一体になりました。フィールドにモンスターがいて、近づいたら互いにバカバカ戦闘をおっぱじめるのですよ。
で、併せて「ガンビットシステム」なるものを採用してます。いわゆるAI戦闘なんですが、ドラクエなんかのそれとは違って、ユーザプログラマブルになってます。
知らない人のために簡単に説明すると、

  1. 行動の対象となる「ターゲット」と、それに対する「アクション」(「たたかう」だとか、「ファイア」などの魔法、あるいは「ポーション」などのアイテム)のペアから構成される「スロット」を設定して、
  2. このスロットのリストを作る。「ターゲット」に合致した「アクション」が実行される。ちなみにリストの先頭のほうが優先度が高い。

という、まぁちょっとした制約システムになってる訳です。


しかし…(ココまでが前フリ)ちょっと考えればわかりますが、この方法だと、ものすごいバカAIしか書けなさそうです。制約のガード条件*1が、行為の対象だけって相当厳しくありません?「『目の前の敵』と『戦う』」くらいなら書けますけど、ゲーム中の状況(状態)を現す条件が何も書けない気が。


実際ゲームを進めて、最初「ターゲット」に選べたのは、最初のうちは『味方一人』とか『自分自身』とか『目の前の敵』とか、ほとんどAIの体をなさないもので。

暫くすると*2、『HP≦50%の味方』てなターゲットも手に入るようになったんですが…それでもまだ物足りない。例えばポーション(回復薬)が2,3個しか残ってないときに「『HP≦50%の味方』に『ポーション』」なんて使ってられないのです。

せめてそれくらいの設定したいよなぁ…とか思ってたら、ダンジョンの中で拾ったターゲットが

『アイテム数≧10なら味方に』

ふふふ…小賢しい真似を…(すでに「ターゲット」の範疇を超えてる気がする)


この後、どんな小賢しい「ターゲット」が出現するのだろう。ちょっと楽しみ。

*1:ってこういう表現が正しいのかわかりませんが。

*2:このゲームでは、「ガンビット屋」でターゲットが買えたり(!)ダンジョンの中で拾ったり(!!)するのです。要は「ターゲット」自体がアイテムになってるのですね。

注:bonotakeは、amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、 Amazonアソシエイト・プログラムの参加者です。