Bulletsmorph ABA Games

Bulletsmorph

for Java Bulletsmorph ver. 0.1 (c) 長 健太(ABA."Saba")
Japanese
Bulletsmorph image

進化する弾幕の遺伝子。

遺伝的プログラミングを応用した弾幕生成エンジン「Bulletsmorph」。

以下のアプレットでエンジンのデモを見ることができる。

ソースは以下からダウンロード。


はじめに

近年、アーケードにおいてリリースされるシューティングゲームの ほどんどが、弾幕シューティングと呼ばれるものに分類される。 弾幕シューティングとは、敵の放つ圧倒的な量の弾幕を、きわめて当たり判定の 小さい自機で避けるシューティングゲームである。 弾幕シューティングにおいては、避けることが楽しく、バリエーションに富んだ弾幕を プレイヤーに提供できるかが、ゲームの楽しさの鍵となる。

さまざまなバリエーションの弾幕を生成するには、従来、弾幕職人の持つ 絶妙なバランス感覚が要求され、一般の人間が弾幕パターンを記述することは 困難であった。著者は、簡便な弾幕記述方法として、 XMLで弾幕を記述する弾幕記述言語 BulletMLを 提唱した。BulletMLにより、近代的な弾幕パターンを簡潔に記述できる。

本稿では、BulletMLの持つ木構造に注目し、遺伝的プログラミングを 利用した弾幕自動作成エンジンBulletsmorphについて説明する。 Bulletsmorphを用い、既存の弾幕を掛け合わせることで、 さまざまな弾幕パターンを自動生成することができる。

遺伝的プログラミングとBulletML
Fig 1

遺伝的プログラミング(GP)については、 東京大学伊庭研究室のページが詳しく、わかりやすい。 GPでは、木構造であらわされたプログラムに対して、 ある操作(GPオペレータ)を行い、次の世代のプログラムに進化させることを繰り返す。

BulletMLはXMLをベースとした弾幕記述言語であるため、 木構造であらわすことができる(図1)。 そこで、BulletMLに対してGPオペレータを適用し、さまざまな弾幕パターンを 自動生成する弾幕生成エンジンBulletsmorphを提案する。


Bulletsmorphの実装
Fig 2

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トップページへ