ソースコード解説・目次

CHAPTER 21 · 全23項目

改造するときの着眼点

数値、絵、アイテム、ボスの強さを変更するときに、関連する処理を一緒に確認します。

主な参照先:TYPES / PU_DEFS / SHOT_SPEED / makeBoss / startGame / tests

小さな変更から始める

変更したいこと主な場所合わせて確認すること
編隊の行・列ROWS / COLS / ROW_TYPE初期位置・横幅・キャッシュ用キーの整数精度
敵の点数・見た目TYPES画像寸法と当たり判定、アニメーション2コマ
コンボの猶予・段の上がり方COMBO_WINDOW / COMBO_STEPSゲームの説明文、時間切れの処理、MULT_COLORS の色数(段の数と合わせる)
残機獲得の得点FIRST_LIFE / LIFE_STEPnextLife の初期化と加点処理
自機の弾の速さSHOT_SPEED / SHOT_H1フレーム(最大0.05秒)に進む距離と、敵の高さ・弾の長さの関係(定数のコメントと、すり抜けを確かめるテスト)
ミスで失う連結砲BEAM_LOSSミス後に残る門数と、テストの期待値
レーザー照射中の自機の速さLASER_MOVE1回のレーザーで届く列の数と、ボスの最高速度(約59 px/秒)より速いか
後半の厳しさenemyFireInterval() / maxEnemyBullets() / aimedChance() / AIMED_WAVE などの開始ウェーブクリア画面の予告(WAVE_NEWS と文言)、編隊の基本速度の上限(formSpeed())
ボムの範囲BOMB_RADIUS距離判定とリングの広がり
BGMのテンポBPMMSTEP に基づく長さと予約

パワーアップを追加するなら

  • PU_DEFS に表示と効果の定義を追加する。
  • active に状態を持ち、applyPU() で取得時の値を設定する。
  • 時間制限があるなら updatePlay() で残り時間を減らす。
  • 射撃や移動など、実際に効果を使う処理へ反映する。
  • HUD・文言・新規ゲーム・ミス・次ウェーブでどう扱うかを決める。

定義表へ項目を足すだけでは、新しいルールの全体は完成しません。「取得していること」と「それが何を変えるか」は別の処理だからです。既存の wide や beam を入口から出口まで追うと、変更箇所を整理できます。

ボス戦の手応えを変えるなら

makeBoss() の耐久値(砲台 7 + hpLevel * 2、コア 20 + hpLevel * 8)と頭打ちのレベル BOSS_HP_LEVEL_MAX、左右に揺れる速さ BOSS_SWAY、ボムが各部位に与えるダメージ BOSS_BOMB_DAMAGE、ボス戦での通常弾の上限(maxB の5)をまとめて見直します。耐久値を上げると倒すまでの時間が延び、ボムの価値も変わります。攻撃の種類は startBossAttack() と fireBossVolley() のレベル条件、間隔は bossAttackInterval()、挟み撃ちの幅は BOSS_TWIN_GAP で変えられます。ボムの後の残り耐久値やボス戦の弾数は数値でテストしているため、期待値も合わせて更新します。

変更を確かめる順番

  1. 1. 小さく変更まず定数や関数を1つ変える
  2. 2. ルールを確認node --test tests/*.test.cjs
  3. 3. 画面で確認入力・表示・音・画面端を試す

表示の変更は実際のブラウザで、ルールの変更は再現できるテストで確認します。配布する際にバージョンを上げる場合は、VERSION、README、CHANGELOGの説明も合わせて更新します。