「動物らしい行動」をAIと仕様で実現する際に考えたこと

ペットゲームの制作において「動物らしい行動」をどう実装するかを考え、AI設計と個別仕様に落とし込んでいった過程のセルフまとめです。
13
SiFi-TZK @SiFi_TZK

そいや昨日のAI話参加できなかったけど、テーマは面白そうだったなー。チューリング・テストに合格するようなAIとかには正直(仕事としては)興味ないけど、パンダを作ったときに、「動物の行動らしさ」をどう表現するか、にはかなり頭を絞った。

2011-08-01 01:00:26
SiFi-TZK @SiFi_TZK

パンダくらい人間に近い知能レベルの動物だと、「動物っぽさ」に対して、「人間っぽさ」をどう混ぜ込むか、というさじ加減の話になる。「動物っぽさ」というのはつまり、どれだけ本能と反射に基づいた行動をするか、ということ。

2011-08-01 01:03:33
SiFi-TZK @SiFi_TZK

パンダの場合、他の動物が食わない笹を食って生きてるし、図体がデカイから他の動物と争うことがほぼない。しかし笹は栄養効率が悪いので、図体のデカイパンダがその体を維持するには大量に食い続け、食う以外の行動はセーブする必要がある。

2011-08-01 01:06:40
SiFi-TZK @SiFi_TZK

というわけで、動物園でもおなじみ、なんかゴロゴロ寝てばっかのパンダが出来上がる。他の動物が食わないユーカリを食ってるコアラが寝てばっかりいるのも同じ理由。ただしコアラはジャイアントパンダほど外敵に強くないから木に登ってる。

2011-08-01 01:09:23
SiFi-TZK @SiFi_TZK

で、そのパンダが任天犬よろしくちゃきちゃき行動するのはホントはおかしいのだが、こと子どもの場合、好奇心が強いので色々なものに興味を示し、行動する。ゲームのメインはこっち。

2011-08-01 01:14:04
SiFi-TZK @SiFi_TZK

その反面、大人パンダはぞんぶんにダラダラさせた。パンダのAIはまず目的を設定し、そこに向かって行動を起こすようになっているが、大人パンダの目的設定の頻度は散発的で、しかもそこで設定される目的の多くが「寝返りを打つ」だったりする。

2011-08-01 01:17:44
SiFi-TZK @SiFi_TZK

で、ここに「人間らしさ」も入れてあって、「遊びたくて群がる子ども」と「ゴロゴロしてるお父さん」という、休日の家庭のアナロジーが適用できる。子どもパンダのAIに設定される「目的」には「他のパンダに寄っていく」というのがあるから、一匹寄るともう一匹も寄ってくる。そのへんも人間ぽい。

2011-08-01 01:23:43
SiFi-TZK @SiFi_TZK

子パンダは他のパンダに興味を示すほか、環境にある遊具などの物体、プレイヤーの投げた物体などに吸い寄せられる。また、動物らしさを出すために、実際には表示されない昆虫を追う動作や、なにも鳴らしてないけど聞き耳を立てる動作などを入れた。

2011-08-01 01:28:48
SiFi-TZK @SiFi_TZK

また、たぶんここが犬とパンダの最大の違いだと思うが、パンダは動作がのろいので、犬と比べて目的を速やかに遂行しない。向かってる間に目的を忘れたりとか、目的のために向かっている途中に落ちていたものに興味が移ったりする。ここは人間の子どもとおんなじ。

2011-08-01 01:32:57
SiFi-TZK @SiFi_TZK

また、遊具やアイテム、食べ物などの物体に対して、一体が向かったら他の個体は向かわない、というような処理はあえて行わなかった。同じ物を取り合うように見えるほうが、動物としても、子どもとしてもリアルに見える。

2011-08-01 01:37:47
SiFi-TZK @SiFi_TZK

あと、AIでは設定してないが、起きる可能性がある行動に後付けで意味を付加する、というのもやった。最たるものは、「他のパンダを手伝ってあげた」というやつ。

2011-08-01 01:43:47
SiFi-TZK @SiFi_TZK

ゲームには360の実績みたいな「日記」システムがあって、それに「他のパンダを手伝ってあげた」というのがある。これは、パンダがでんぐり返りをしようとしているときに、ほかのパンダがぶつかると成立する。個々の目的は「でんぐり返り」と「他のパンダに寄っていく」だけ。タイミング重要。

2011-08-01 01:49:30
SiFi-TZK @SiFi_TZK

パンダAの「でんぐり返り」中にパンダBが「他のパンダに寄って」ぶつかる、という現象に「手伝ってあげました」と命名することで、あら不思議、まるでパンダが意志を持って手伝ってあげたかのように。

2011-08-01 01:52:33
SiFi-TZK @SiFi_TZK

そういう、プレイヤーに対する印象操作によって、実際の内容以上にゲーム世界を想像させる、ってことはかなりやってる。とにかく容量とかがキツかった。ひたすら物量に追われたアイマスとは逆。

2011-08-01 01:57:04
SiFi-TZK @SiFi_TZK

そのパターンで一番大きいのは、パンダの個体に性別をつけたところ。パンダは目的の傾向や頻度、腹の減り方や体の汚れ方等で性格づけされているが、それに性別をつけ、登場する順番が設定されるとどうなるか。

2011-08-01 02:01:54
SiFi-TZK @SiFi_TZK

これが、「余裕のお姉ちゃんとやんちゃな弟」とか、「おてんばな姉とクールな弟」のような(腐女子のカップリング妄想にも似た)、兄弟の関係性をプレイヤーに想起させる。実際、ゲーム内部では性別はまったく参照されていないが、プレイヤー側に与える情報によって、行動の意味が違って見える。

2011-08-01 02:08:01
SiFi-TZK @SiFi_TZK

まぁ他にも「ゲームをプレイしていない時間の行動」を想像させるように、プログラマに煙たがれつつもプレイ再開時の仕様にメチャクチャこだわったりとか(男色ディーノ氏のレビューでその部分がクローズアップされて嬉しかった)、ゲームってのは細かいアイディアの積み重ねなわけです。

2011-08-01 02:25:56
SiFi-TZK @SiFi_TZK

とはいえ、もっとメモリや処理能力が強力なハードでもっとこういう方法論を突き詰めてみたい、という欲もあったり。どなたかそーゆーお仕事がありましたらお声がけをー。…と、こんな日曜深夜のTLで。

2011-08-01 02:30:48