Bulletsmorph | ABA Games |
for Java | Bulletsmorph ver. 0.1 | (c) 長 健太(ABA."Saba") |
Japanese
|
進化する弾幕の遺伝子。
遺伝的プログラミングを応用した弾幕生成エンジン「Bulletsmorph」。
以下のアプレットでエンジンのデモを見ることができる。
ソースは以下からダウンロード。
はじめに |
|
近年、アーケードにおいてリリースされるシューティングゲームの ほどんどが、弾幕シューティングと呼ばれるものに分類される。 弾幕シューティングとは、敵の放つ圧倒的な量の弾幕を、きわめて当たり判定の 小さい自機で避けるシューティングゲームである。 弾幕シューティングにおいては、避けることが楽しく、バリエーションに富んだ弾幕を プレイヤーに提供できるかが、ゲームの楽しさの鍵となる。
さまざまなバリエーションの弾幕を生成するには、従来、弾幕職人の持つ 絶妙なバランス感覚が要求され、一般の人間が弾幕パターンを記述することは 困難であった。著者は、簡便な弾幕記述方法として、 XMLで弾幕を記述する弾幕記述言語 BulletMLを 提唱した。BulletMLにより、近代的な弾幕パターンを簡潔に記述できる。
本稿では、BulletMLの持つ木構造に注目し、遺伝的プログラミングを 利用した弾幕自動作成エンジンBulletsmorphについて説明する。 Bulletsmorphを用い、既存の弾幕を掛け合わせることで、 さまざまな弾幕パターンを自動生成することができる。
遺伝的プログラミングとBulletML |
|
遺伝的プログラミング(GP)については、 東京大学伊庭研究室のページが詳しく、わかりやすい。 GPでは、木構造であらわされたプログラムに対して、 ある操作(GPオペレータ)を行い、次の世代のプログラムに進化させることを繰り返す。
BulletMLはXMLをベースとした弾幕記述言語であるため、 木構造であらわすことができる(図1)。 そこで、BulletMLに対してGPオペレータを適用し、さまざまな弾幕パターンを 自動生成する弾幕生成エンジンBulletsmorphを提案する。
Bulletsmorphの実装 |
|
BulletsmorphではBulletMLに対してGPオペレータの交叉(部分木の取替え)を 繰り返すことで弾幕を進化させる。 具体的には、BulletMLで記述された既存の弾幕パターンを、弾幕遺伝子プールとして 利用し、遺伝子プールからランダムに選ばれた弾幕の部分木を、 自動生成される弾幕パターンに追加する(図2)。
これにより、弾幕の行う動作(Action要素で定義される)が拡張され、 さまざまな弾幕パターンが生成される。 弾幕パターンが生成される様子は、 Bulletsmorphアプレットで確認することができる。
関連研究 |
|
従来からさまざまな弾幕を避けるゲーム(避けげー)が存在する。 避けげーについては、 shooting maniacs.がよくまとまっている。
おたまは、 BMクローンのフォーマットであるBMSを利用し、曲に同期した弾幕生成を行う。 白い弾幕くんは、 BulletMLを利用して既存シューティングのさまざまな弾幕を再現している。 著者が作成したPalm用避けげー Noizは、 24種類の弾幕を難易度に合わせて調整し、弾幕パターンを生成する。
既存シューティングのさまざまな弾幕の分類については、 STGと弾幕美を語ろうに詳しい。
今後の課題 |
|
現状では、生成された弾幕に対して評価関数(適合度)を算出していない。 そのため、世代が進むと仙人でも回避不能な弾幕が生成されてしまう。 著者が確認しただけでも、
などの非道なパターンがある。これらを解決するために、
などを検討していく。
まとめ |
|
BulletMLにGPを適用することで、弾幕を自動生成する手法について述べた。 また、弾幕生成エンジンBulletsmorphを試作し、本手法の有用性を検討した。
謝辞 |
|
Bulletsmorphは、 Biomorphから着想を得た。 Biomorphは遺伝子によって枝の広がりを制御することで、さまざまな形の生物を 作り出すプログラムである。
ご意見、ご感想 |
ご意見、ご感想は、 cs8k-cyu@asahi-net.or.jp までお願いします。
■ | ABA Gamesトップページへ |