Galactic Arms Race におけるパーティクル自動生成

Galactic Arms Race http://gar.eecs.ucf.edu/ におけるパーティクル自動生成  http://www.ieee-cig.org/cig-2009/Proceedings/proceedings/papers/cig2009_033e.pdf の論文の簡単な解説です。2Dシューティングゲーム(みかけは3D)で、自機の出す弾(パーティクル)がニューラルネットワークで制御されていて、このニューラルネットワークが遺伝的アルゴリズムで進化します。
18
三宅陽一郎MiyakeYouichiro @miyayou

今日は、ちょっと、面白い論文を解説した。

2010-11-24 22:12:07
三宅陽一郎MiyakeYouichiro @miyayou

どういうものかっていうと、ニューラルネットワークでシューティングゲームのプレイヤーのウエポンのパーティクルを自動生成かつ自律進化させるっていう論文です。

2010-11-24 22:13:46
三宅陽一郎MiyakeYouichiro @miyayou

実際に、Galaxy Arms Race っていう XNA のフリー(?)ゲームに実装されていて、ユーザーが遊びたびに、自機のウエポンの出す弾(パーティクル)が、遺伝的アルゴリズムとニューラルネットワークを組み合わせたシステム(NEAT)で進化して行く。 

2010-11-24 22:15:19
三宅陽一郎MiyakeYouichiro @miyayou

Galactic Arms Race はこちら。ダウンロード先や、パーティクル自律進化の仕組みや、ムービーまで用意されている。  http://gar.eecs.ucf.edu/

2010-11-24 22:16:30
三宅陽一郎MiyakeYouichiro @miyayou

原理を説明すると長くなるのだけれど、GAR のサイトのムービーコーナーにある4つのムービーの最後のものを見れば概要がわかると思う。 http://gar.eecs.ucf.edu/index.php?content=media

2010-11-24 22:17:54
三宅陽一郎MiyakeYouichiro @miyayou

進化アルゴリズム NEAT は、僕のゲームAI連続セミナー第5回でも説明したものですね。あの時は、NERO と言って、FPS の兵士のAIの自律進化に使っていました。

2010-11-24 22:18:54
三宅陽一郎MiyakeYouichiro @miyayou

テキサス大学のKenneth O. Stanley の FPS のAIを自律進化させる研究 NERO = ニューラルネットと遺伝的アルゴリズムを組み合わせた NEAT という手法 http://z.cs.utexas.edu/users/nn/nero/

2010-11-24 22:20:55
三宅陽一郎MiyakeYouichiro @miyayou

今回はそれを、2D(みかけは3D)シューティングゲームの弾パーティクルの生成に使用した成果です。簡単な解説はこちら。 http://gar.eecs.ucf.edu/index.php?content=weapons

2010-11-24 22:23:20
三宅陽一郎MiyakeYouichiro @miyayou

イメージとしては @abagames さんの遺伝的プログラミングを応用した弾幕生成エンジン「Bulletsmorph」 http://bit.ly/db7nw9 に似ています。 cgNEAT は、GAとニューラルネットで自律進化します。 http://bit.ly/amyfiP

2010-11-24 22:27:39
三宅陽一郎MiyakeYouichiro @miyayou

ゲーム内では、ユーザーは自機にスロットがあって、そこにニューラルネットで制御するパーティクル生成ユニットを搭載できて、どれを一番よく選んだかによって、評価が高くなり、遺伝的アルゴリズムで親となる確率が高くなります。

2010-11-24 22:29:17
三宅陽一郎MiyakeYouichiro @miyayou

実際にムービーを見ると、いろいろな弾幕というかパーティクルが生成されているのが見えます。ニューラルネットワークの出力が速度と色なので、パーティクルも位置によって色が変化して行きます。 http://bit.ly/eoktV9

2010-11-24 22:30:51
三宅陽一郎MiyakeYouichiro @miyayou

もう少し丁寧に説明すると、まず自機の発射する弾の軌道は次のようなシステムになってます。 入力(弾の自分を原点とする座標系の現在位置座標など) →(ニューラルネット)→出力(その位置における速度、弾の色)。

2010-11-24 22:53:36
三宅陽一郎MiyakeYouichiro @miyayou

このニューラルネット(NN)を遺伝的アルゴリズム(GA)によって進化させる仕組みが NEAT (Neuro-Evolution of Augmenting Topologies)です。ニューラルネットの形自身を変化させながら進化させます。

2010-11-24 22:54:08
三宅陽一郎MiyakeYouichiro @miyayou

NEAT (Neuro-Evolution of Augmenting Topologies) 自身は結構新しいアルゴリズムです。 http://z.cs.utexas.edu/users/nn/nero/

2010-11-24 22:54:47
三宅陽一郎MiyakeYouichiro @miyayou

数値だけ交叉させるのは、昔からありましたが、トポロジーまで変化させるのは、最近だと思います。 RT @akehoyayoi NNをGAで進化させること自体は前からやってそうだけど、新しいのか。。。

2010-11-24 22:57:54
三宅陽一郎MiyakeYouichiro @miyayou

この論文を全部理解するには、僕のゲームAI連続セミナー第5回の資料を読んでからだと、よくわかると思います。

2010-11-24 23:03:22
三宅陽一郎MiyakeYouichiro @miyayou

NEAT というシステムは、まず NERO という FPS のAIの進化に使用され、次に、今回のシューティングゲームのパーティクル自動生成に利用されました。どちらとも同じ研究者がしています。 http://bit.ly/e24ptu

2010-11-24 23:04:41
三宅陽一郎MiyakeYouichiro @miyayou

ということで、参考文献を含めて色々つけ加えました。 RT Galactic Arms Race におけるパーティクル自動生成 http://togetter.com/li/72283

2010-11-24 23:06:29
三宅陽一郎MiyakeYouichiro @miyayou

弾幕自動生成をしたい方も参考にされるとよいと思う。

2010-11-24 23:07:51
三宅陽一郎MiyakeYouichiro @miyayou

NEAT の方法は、少なくとも、参考文献に上げた2002年の「AI Techniques for Game Programming 」の教科書に既に載っていますね。 RT @mnagaku @akehoyayoi NNをGAで進化

2010-11-24 23:33:10
三宅陽一郎MiyakeYouichiro @miyayou

「AI techniques for Game Programming」 を見てみました。 NEAT の説明は、今回の論文の著者 Kenneth Stanley を引用していて、2002年の論文からですね。  @mnagaku @akehoyayoi

2010-11-24 23:33:59
三宅陽一郎MiyakeYouichiro @miyayou

【訂正】 NEAT(Neuro-Evolution of Augmenting Topologies)の手法については、Mat Buckland の AI Techniques for Game Programming に詳しいです。 http://amzn.to/gSlWyK

2010-11-24 23:36:03