遺伝的アルゴリズムを使ってゲームのAIを作る
この記事はDXRuby Advent Calendar 2014 17日目の記事です。
昨日の記事はGameKazuさんの『DXRubyでRPGを作りたくて』でした。
DXRuby Advent Calendar 2014 - Adventar
DXRuby Advent Calendar 16日目 DXRubyでRPGを作りたくて
RPGを作ろうという熱い意気込みが感じられる記事でした。
私も昔からずっとゲームを作っていて、GUIゲームを簡単に作れるDXRubyに出会ったときは「やべえ…これでなんでも作れんじゃん…」と唾液を垂れ流しながら軽くトリップしたのを覚えています。
意気込みだけでなく、実際にゲームの開発も順調そうなので、今後が楽しみですね!
ところで俺のコードを見てくれ こいつをどう思う?
さて今回のお題目である『遺伝的アルゴリズムを使ってゲームのAIを作る』ですが、サンプルコードをちゃんと書こうと欲張った結果、サンプルコードしかできてないといういつものパターンに相成りました。
vivit-jc/evolve_defence · GitHub
git cloneしてローカルでmain.rbを実行してみてください。
これは何?
コードの中身をご覧になればなんとなく分かるような分からないような、といったところだと思うのですが。
作りたかったのはタワーディフェンス型のゲームで、ルールは以下の様な感じです。
- 15*15マスのフィールドがある
- モンスターが時間内にスタートからゴールまでたどり着いたら敗北、それ以外は勝利
- モンスターは一歩で上下左右のいずれかのマスに進む
- モンスターが一歩動くごとに武器の攻撃判定が入る
- マスには武器として地雷と砲台が置ける
- 砲台は隣接マスにモンスターが来たら1ダメージ
- 地雷はそのマスにモンスターが来たら2ダメージ
- 武器はモンスターが真上に来たら破壊される(将棋の駒のように)
モンスターは遺伝的アルゴリズムによって成長し、より賢い道筋を通ってゴールに向かいます。
AI自体は既に実装できているので、中身の解説などを後々書こうと思います。
年末年始にこれを利用した、本格的な、ゲームを、作れたら、いいなあ……。
明日(18日目)はshinokaroさんの『ゲーム・プログラミングとサウンドについて』です。
私はその辺をサボることが多いのですが、BGMや効果音が付くとゲームはぐっとそれっぽくなるので、今から興味津々です。