さて、じっくり1手ずつ読み切るCLASSICモードやHARDモードとは対照的に、136 BPMのシンセビートに乗ってハイスピードにブロックを叩きつけるのが「PARTYモード(4×4×4盤面)」です。

「タイムアタック形式なのに、ランキング上位のプレイヤーはどうやって長時間生き残って何十万点も稼いでいるのか?」と疑問に思った方もいるのではないでしょうか。実はPARTYモードには、+TIMEブロックの育成とPARTY FEVERによるタイマー凍結という明確なリソース循環サイクルが存在します。今回はjs/game-core.jsの実装から、その数値テーブルをすべて公開します。

01. 4×4×4(64マス)と「毎ターン1〜4個スポーン(期待値2.5個)」の物量バランス

PARTYモードを選択すると、グリッドサイズは3×3×3(27マス)から4×4×4(64マス)へと固定拡張されます。体積比で約2.37倍に広がるわけですが、もしここで1ターンに1個しかブロックが湧かなければ、盤面がスカスカすぎてマージがほとんど起きない退屈なゲームになってしまいます。

そこでPARTYモードでは、毎ターンの移動後に1〜4個の一様乱数(平均期待値2.5個)のタイルをまとめてスポーンさせています。

// js/game-core.js : PARTYモードのスポーン数決定
} else if (this.gameType === 'party') {
  const count = Math.floor(Math.random() * 4) + 1; // 1, 2, 3, or 4個(平均2.5個)
  for (let i = 0; i < count; i++) {
    const t = this.spawnTile();
    if (t) spawned.push(t);
  }
}

また、4×4×4では1本の軸ライン上に最大4個のタイルが並ぶため、[2, 2, 2, 2]という並びをスライドさせたときに1ターンで2組のペア([4, 4])が同時マージします。3×3×3では1ラインにつき最大1組しか合体できなかったのに対し、4×4×4では1回のスワイプで5組〜8組の同時マージが日常茶飯事になるわけです。

02. +TIMEブロックの出現確率(通常7% / FEVER中14%)と合体値別ボーナス秒数テーブル

PARTYモードのタイマーを回復する手段が、緑色の時計バッジが付いた「+TIMEボーナスブロック」の合体です。まずはspawnTile()における出現確率のコードを見てみましょう。

// js/game-core.js : PARTYモードのスポーン数値と+TIME付与判定
if (this.gameType === 'party') {
  if (this.feverActive) {
    const r = Math.random();
    value = r < 0.50 ? 4 : (r < 0.85 ? 8 : 16);
    if (Math.random() < 0.14) type = 'time_plus';
  } else {
    value = Math.random() < 0.90 ? 2 : 4;
    if (Math.random() < 0.07) type = 'time_plus';
  }
}

通常時はスポーンごとに7%、FEVER中は2倍の14%の確率でtype = 'time_plus'が付与されます。毎ターン平均2.5個湧くため、通常時でも約5.7ターンに1個、FEVER中なら約2.8ターンに1個のペースで+TIMEブロックが盤面に供給される計算です。

そして最大のポイントが、「+TIMEブロックがマージしたとき、合体後の数値(newValue)が大きいほど加算される秒数が増える」という仕様です。getTimeBonusSeconds(newValue)内の秒数計算テーブルは以下のようになっています。

// js/game-core.js : getTimeBonusSeconds(newValue) 内の+TIME加算秒数ロジック
getTimeBonusSeconds(newValue) {
  if (newValue <= 4) return 3;
  if (newValue <= 8) return 5;
  if (newValue <= 16) return 7;
  if (newValue <= 32) return 10;
  return 15;
}
PARTYモードにおける+TIMEタイル合体時の数値別加算秒数テーブル
合体後の数値(newValue) 合体組み合わせ例 獲得ボーナス秒数 制限時間の上限(キャップ)
4 2(+TIME) + 2 +3秒(3,000ms) 最大 300秒(5分) まで蓄積可能
(TIME_LIMIT_MS = 300000)
8 4(+TIME) + 4 +5秒(5,000ms)
16 8(+TIME) + 8 +7秒(7,000ms)
32 16(+TIME) + 16 +10秒(10,000ms)
64以上 32(+TIME) + 32 など +15秒(15,000ms)

ここで注目すべきは、if (current.type === 'time_plus' || next.type === 'time_plus')という条件です。片方だけが+TIMEを持っていればボーナスが発動しますが、合体した時点でその+TIME属性は消費され、合体後の通常タイルになります。つまり「2の+TIMEが出たからといって即座に2同士で合体させてしまうと+3秒にしかならないが、FEVER中に出現した16(+TIME)を通常の16とぶつければ一撃で+10秒になる」わけです。

03. PARTY FEVERの4大恩恵:タイマー完全凍結・スコア3倍・初期値4/8/16引き上げ

PARTYモードのもう一つの主役が、累計5組以上のマージコンボで発動する「PARTY FEVER」です。FEVER突入中に内部で何が起きているのか、コードを追ってみましょう。

// js/game-core.js : FEVER中のタイマー凍結とスコア倍率計算
if (this.gameType === 'party' && this.feverActive && this.feverFreezeStart !== null) {
  currentFreeze = now - this.feverFreezeStart;
}
const effectiveElapsed = Math.max(0, rawElapsed - this.frozenTimeTotal - currentFreeze);

PARTY FEVERが発動している間(5手持続)には、次の4つの強力なバフが同時にかかります。

  1. 残り時間タイマーの完全凍結(TIME FREEZE):feverFreezeStartからの経過時間はfrozenTimeTotalとして実経過時間から差し引かれるため、FEVER中は1ミリ秒たりとも持ち時間が減りません。しかもその間に獲得した+TIMEボーナスはそのまま持ち時間に上乗せされます。
  2. 獲得スコア倍率が常時3倍(×3.0):CLASSIC/HARDのFEVER倍率が2倍なのに対し、PARTYモードではFEVER中の獲得スコアが3倍に跳ね上がります。
  3. 新規スポーンから「2」が消滅し、4・8・16のみが出現:通常時は90%が「2」、10%が「4」ですが、FEVER中は「4が50%、8が35%、16が15%」という高数値テーブルに切り替わります。
  4. +TIMEブロックの出現確率が7% → 14%に倍増:高数値スポーンと組み合わさることで、最初から8(+TIME)や16(+TIME)が直接盤面に湧いてくるボーナスタイムになります。

04. 残り時間を維持・回復する「+TIME育成」と高速スワイプ戦術

この仕様を踏まえると、PARTYモードでスコアを伸ばすための定石はシンプルに導き出せます。

  • 通常時は「高速循環スワイプ」で累計5組マージを達成し、FEVER突入を最優先する:4×4×4盤面では1手ごとの精密な読みよりも、例えば「左→下→奥→下」のように3〜4方向をリズミカルに回して複数マージを起こし、一刻も早くFEVERに入れてタイマーを止めることが先決です。
  • FEVERに入ったら湧いてくる8(+TIME)と16(+TIME)を確実に回収する:FEVER中に湧く8(+TIME)(合体で16になり+7秒)や16(+TIME)(合体で32になり+10秒)を2〜3個回収するだけで、FEVERが明けたときには突入前より20秒以上持ち時間が増えています。
  • ペアが隣り合っているのに合体しないときは「直交する第3軸」へ振る:4×4×4で平面方向ばかり連打していると、同じ数値がZ軸(奥行き)方向に並んでいるのに気づかず手が止まりがちです。手が詰まったと感じたらすかさず奥・手前方向へスライドさせると、一気に10個近いブロックが連鎖合体して道が開けます。

さて、ここまで第1回〜第4回にわたって各モードの仕様と攻略を解説してきました。次回(第5回)からはさらに一歩踏み込み、「1ターン1合体原則(processLine)のアルゴリズムと、インタラクティブ練習場(LessonCore)の内部設計」についてソースコード単位で紐解いていきます。それでは、また次回の記事でお会いしましょう!

PARTY Mode Time Attack

PARTYモードでFEVER 3倍スコアと+TIME連鎖を体験する

4×4×4の64マス空間で136 BPMのビートに乗り、タイムアタックの限界へ挑もう。

🎉 PARTYモードで遊ぶ ➔ 📖 遊び方・モード一覧を見る