ベイズネットワークのゲームへの応用
「ゲーム開発者のためのAI入門」って本にベイズ推定とベイズネットワーク(ベイジアンネットワークとか信念ネットワークとも呼ばれますね)をゲームに応用する方法が書いてあった。ゲーム領域が不確定な状況下にあるときにプレーヤー以外のキャラクター(NPC)を操作するためにはどうしたらいいかって話。一般的にNPCの動作はプロダクションルール(if-thenルール)だと思うけどそれだと行動が固定的になってしまうので確率論を取り入れましょうってこと。プレイヤーの動きに適応して予想外の行動取ったらおもしろそうですよね。
ベイジアンネットワークをスクラッチから実装するのも何なので既存のライブラリがないか調べてみた。日本だと産総研の本村さんの作ったBayonetっていうツールがけっこう有名だけど、ソースが公開されていないし、自作プログラムへの組み込みは無理そう。
そこで海外に目を向けてみると
- Bayesian Network Toolbox for Matlab(BNT)
- JavaBayes(リンク切れ)
- OpenBayes
なんてのがいろいろ見つかった。BNTというのは有名らしいけど、Matlabなんて高価なもの持ってない・・・JavaBayes?Javaはちょっと・・・そんなわけで3つめのPythonで実装されたOpenBayesを調べてみた。さっそくOpenBayesのサイト見に行ったら、いきなり開発終了宣言されてた・・・
とは言え、学習や確率推論の基本アルゴリズムはすでに実装完了しているのでとっかかりとしてちょうどよいかも。ちょっとソースを読んで勉強してみたい。
ちなみにベイジアンネット関連のライブラリ・ツールの詳細なリストはBayesian Network (Wikipedia)を参照。けっこうたくさんある。
追記
MatlabはOctaveと高い互換性があるらしい。Octaveはフリーで手に入るのでBNTは動くかも。
関連リンク
- ゲーム開発者のためのAI入門(2005/3/17)

- 作者: David M. Bourg,Glenn Seemann,株式会社クイープ
- 出版社/メーカー: オライリージャパン
- 発売日: 2005/01/12
- メディア: 大型本
- 購入: 24人 クリック: 395回
- この商品を含むブログ (78件) を見る