敵12種・3ボスへのコンテンツ拡張
初期のVOID STRIKERは、dart(直進)・sine(サイン波)・orbiter(旋回して撃つ)・turret(自機狙い)という基本4種の雑魚敵と、tank・carrierという中型2種、そしてボス1体(現在の
vanguardアーキタイプ)だけで構成されていました。ワンプレイが数分で終わるカジュアルな縦シューティングとしてはこれでも成立していましたが、繰り返し遊んでもらうにはパターンの引き出しが少なすぎました。そこで「敵コンテンツ大幅拡張」と題した一連の作業で、敵を6種類追加して合計12種に、ボスを3アーキタイプに増やす拡張を行いました。
先に弾幕の「部品」を増やす
新しい敵の動きを考える前に、まず取り組んだのは弾のプリミティブ(部品)を増やすことでした。それまで敵弾は直進・自機狙い・扇状・全方位リングの4パターンしかなく、これだけでは「機雷を踏むと危険」「時限爆弾が破裂する」といった駆け引きを表現できません。そこで
G.Bullets
モジュールに、時限で炸裂してリング状に弾をばらまく orb、その場に静止して起爆する
mine、自機をゆっくり追尾する homing、隙間のある弾の壁を生成する
wall
という4つの新しい生成関数を追加しました。既存の弾は基底の
{x, y, r, dead, type, grazed}
という形を守っていたため、これらの新しい弾も同じ形を維持することで、グレイズ判定やボムでの一掃処理、円同士の衝突判定といった既存の仕組みにそのまま乗せることができ、衝突判定を担当する
main.js側は一切変更せずに済みました。
新しい敵を「役割」で設計する
弾の部品が揃ったところで、新しい敵タイプを追加しました。高速ジグザグで avoidしにくい
weaver、テレグラフ(予告)を挟んでから高速弾を連射する
sniper、倒すと分裂する splitter、時限爆弾を落としていく
bomber、被ダメージ半減のシールドを持つ重装甲の
aegis、機雷を設置して離脱する miner
の6種です。それぞれ単に見た目や数値を変えるのではなく、「プレイヤーに要求する行動」がなるべく被らないよう役割を意識して設計しました。例えばsniperは「見てから避ける」反射神経、weaverは「追わずに待つ」我慢、splitterは「倒した後の分裂を見越した先読み」というように、覚えることが増えるほどプレイに深みが出るよう意図しています。
解禁のタイミングとウェーブの3幕構成
12種類の敵を最初から全部出してしまうと初見のプレイヤーには情報過多です。そこでステージごとに解禁ロスターを分け、序盤(ステージ1)は基本4種のみ、ステージ2でweaver・sniper、ステージ3でsplitter・bomber、ステージ4でaegis・minerが加わり、以降は全12種が混在するようにしました。さらに1ステージの中でも、序盤35%・中盤40%・終盤25%という3幕構成にウェーブを分割し、幕ごとに異なる抽選プールを使うことで、同じステージの中でも徐々に密度と種類が濃くなっていく体感を作っています。
ボスを3アーキタイプへ
雑魚敵の拡張と並行して、ボスも1種類から3アーキタイプ(vanguard/serpent/fortress)へ拡張しました。既存のvanguard(メカ機動型)の挙動は変えず、新たに機動力で押す
serpent
(リサージュ曲線の軌道+ホーミング弾)と、火力と設置物で攻める
fortress
(弾の壁+時限弾+機雷)を追加し、ステージ番号に応じて3種が順番にローテーションする形にしました。フェーズ構成(3段階のHP帯)やフェーズ移行時の無敵演出といった共通の骨格は3種で揃えつつ、移動パターンと攻撃の組み立てだけをアーキタイプごとに変えることで、実装コストを抑えながらもプレイ体験にはっきりとした違いを出せたと思います。
バランスを支える難易度スケーリング
敵の種類とボスの種類が増えたことで、単純にステージを進めるだけでもコンテンツの物量が倍増しました。これに合わせて、有効ステージ
S = min(stage, 8)
を軸にした難易度スケーリング(敵HP・弾速・発射頻度・出現数の倍率)も導入し、8ステージ相当で強化が頭打ちになるようにしています。この設計のおかげで、コンテンツを拡張しつつも「進めば進むほど手に負えなくなる」という詰みを避け、エンドレスに遊び続けられるバランスに落ち着きました。詳しい数式は
難易度スケーリング解説
で、敵・ボスそれぞれの詳しい挙動は
敵図鑑とボス攻略
で紹介しています。