Skip to content

ミッション

ミッションシステム概要

ミッションはダンジョンに挑む際の目標を定義する。ロビーのミッションポータルからミッションを選択してダンジョンに突入する。

5回サイクル制

ダンジョンは 5回1サイクル で進行する。1〜4回目は通常ミッション、5回目にサイクルボスが出現する。 ボス戦では大量の雑魚が同時に湧き、弱点を突かないと物量で押し潰される。 過去4回のダンジョンにボスの弱点ヒントが散りばめられている。

サイクル進行フロー

ミッション選択フロー

ミッションタイプ

1. 殲滅ミッション(Extermination)

指定数の敵を全て倒す。最もスタンダードなミッション。

パラメータNormalHardNightmare
必要撃破数50体100体200体
制限時間5分7分10分
最終ウェーブエリート1体エリート2体エリート3体
データコア報酬102035

達成条件: 必要撃破数に到達する。 脱出ポータル: 達成後、最終ウェーブ(エリート)を撃破すると出現。

2. ボスミッション(Boss Hunt)

ダンジョン深部のボスを討伐する。

パラメータNormalHardNightmare
ボスの種類ランダムランダムランダム
ボスHP倍率1.0x1.5x2.5x
ボスATK倍率1.0x1.3x1.8x
制限時間8分8分8分
道中の敵密度
データコア報酬153050

達成条件: ボスのHP全フェーズを0にする。 脱出ポータル: ボス撃破後、ボスアリーナ中央に即出現。

3. 収集ミッション(Collection)

ダンジョン内に散らばったデータフラグメントを集める。

パラメータNormalHardNightmare
必要収集数5個8個12個
全体配置数8個12個16個
制限時間5分6分8分
フラグメント配置各部屋に0〜2個各部屋に0〜2個各部屋に0〜2個
データコア報酬122240

達成条件: 必要数のデータフラグメントを収集する。 脱出ポータル: 収集完了後、ポータル部屋に出現。 特殊ルール: フラグメントはミニマップに表示されない(部屋に入ると表示)。

4. サバイバルミッション(Survival)

制限時間を生き残る。時間経過で難易度が急上昇する。

パラメータNormalHardNightmare
生存時間3分5分8分
難易度上昇速度1.5x(通常の1.5倍速で上昇)2.0x3.0x
ダンジョン構造1部屋のみ(アリーナ)1部屋のみ1部屋のみ
敵スポーン上限60体80体100体
データコア報酬153050

達成条件: 制限時間が0になるまで生存する。 脱出ポータル: タイマー終了後、部屋中央に即出現。 特殊ルール: 部屋から出られない。全方向から敵がスポーンし続ける。

難易度システム

難易度解放条件

難易度解放条件敵ステータス倍率ドロップ品質倍率
Normal初期解放1.0x1.0x
Hard永続Lv5到達1.5x1.3x
Nightmare永続Lv10到達2.5x1.8x

難易度による敵ステータス変化

敵HP = 基本HP × 難易度倍率 × 時間経過倍率
敵ATK = 基本ATK × 難易度倍率 × 時間経過倍率
敵DEF = 基本DEF × 難易度倍率

ドロップ品質への影響

高難易度ではレアリティ判定にボーナスが加算される。

レアリティボーナス = (難易度ドロップ品質倍率 - 1.0) × 100%

Hard の場合: Legendary ドロップ確率が 0.5% → 0.5% × 1.3 = 0.65%

脱出ポータル

出現条件と仕様

パラメータ
出現タイミングミッション目標達成時
出現場所ポータル部屋の中央(サバイバルは部屋中央)
サイズ半径1.5 units
視覚エフェクトシアン色の渦巻き + パーティクル
音声ポータル出現SE + 環境音
インタラクション距離2.0 units

脱出フロー

脱出時の注意

  • 脱出ポータル出現後も敵のスポーンは止まらない
  • 脱出には3秒間のチャネリングが必要(被ダメージでキャンセル)
  • 脱出に失敗して死亡した場合、戦利品は全ロスト
  • ポータル出現から60秒後にポータルが不安定化(画面揺れ演出)
  • ポータル出現から90秒後にポータルが崩壊し強制終了(戦利品なし)

ミッションリザルト

リザルト画面

+=======================================+
|        MISSION COMPLETE               |
|                                       |
|  ミッション: 殲滅(Normal)            |
|  クリアタイム: 4:32                    |
|                                       |
|  撃破数: 67体                          |
|  最大コンボ: 23                        |
|  被ダメージ回数: 8                      |
|  取得EXP: 1,250                        |
|                                       |
|  ---- 報酬 ----                        |
|  データコア: 10                         |
|  + ボス撃破ボーナス: +0                 |
|  + ノーダメージボーナス: +0              |
|  + 制限時間内ボーナス: +5               |
|  合計: 15 データコア                     |
|                                       |
|  取得武器: 2本                          |
|  + Enhanced Data Lance (Rare)          |
|  + Neon Blade (Common)                 |
|                                       |
|  [ロビーに戻る]                         |
+=======================================+

ボーナス条件

ボーナス条件報酬
ボス撃破ボスを倒した+15 データコア
ノーダメージ被ダメージ0回+10 データコア
制限時間内制限時間の50%以内にクリア+5 データコア
コンボマスター最大コンボ50以上+5 データコア
全部屋探索全部屋を訪問した+3 データコア

ミッション3択の生成ルール

ロビーでミッション選択時、3つのミッションがランダム生成される。

生成ルール

1. ミッションタイプを重複なしで3つ選択(4タイプから3つ)
2. 各ミッションにランダムな環境テーマを割り当て
3. 報酬にランダムなボーナス要素を追加(確率30%で特殊報酬)

特殊報酬(確率30%で付与)

報酬効果
武器保証クリア時にRare以上の武器が1本追加ドロップ
EXP 1.5倍ダンジョン内のEXP獲得量が1.5倍
データコア 2倍クリア時のデータコア報酬が2倍
ラッキーダンジョン内のLUCK+20

サイクルボスシステム

5回目ボスの設計思想

5回目に出現するサイクルボスは、大量の雑魚を引き連れて出現する。 弱点を突けば雑魚を高速殲滅してボスに集中できるが、弱点なしだと物量で押される。 レベルが十分に高ければゴリ押しも可能(Diablo 4のパワーファンタジー)。 1〜4回目のダンジョンで提示されたヒントから弱点を把握すると効率的に攻略できる。

ヒントシステム

1〜4回目のダンジョンに、5回目ボスの弱点を示唆するヒントが配置される。

潜入回数ヒントの形式内容例
1回目なし(通常ミッション)
2回目環境テキスト壁に刻まれた文字「炎は水に弱し」
3回目ドロップアイテム「ボスの欠片」— ツールチップに弱点属性の色
4回目ミニボスの行動ミニボスが特定属性で大ダメージを受ける(ボスと同じ弱点)

弱点の役割: 物量を捌く効率(Diablo 4参考)

設計思想: 弱点 = 殲滅効率

弱点は「ダメージカット」ではなく「敵の物量に対する処理効率」で差が出る。 ボス戦では、ボス本体 + 大量の雑魚が同時に湧く。 弱点を突けば雑魚を高速殲滅してボスに集中できるが、 弱点なしだと雑魚の処理が追いつかず物量で押し潰される。

ボスのダメージ倍率(ボス本体):

攻撃属性ボスへのダメージ倍率体感
弱点属性2.0x(+ 弱点エフェクト)快適にHP削れる
通常属性1.0x(カットなし)普通にダメージ通る
無属性0.8xやや硬い程度

弱点の真の効果 — 雑魚殲滅速度:

弱点活用雑魚処理ボス戦の体感
弱点ありAoEで一掃(1〜2発)雑魚を瞬殺 → ボスに専念。爽快
弱点なしAoEで倒しきれない(3〜4発)雑魚が溜まる → 被弾増加 → ジリ貧

ボス戦中の雑魚スポーン:

サイクル雑魚スポーン間隔1波あたりの数弱点なしの体感
18秒5体まだ捌ける
26秒8体押され始める
35秒12体物量で圧倒される
4+4秒15体+弱点なしでは生存困難

Diablo 4 の難易度感

「レベルが足りれば勝てる」が大前提。弱点は「効率」の問題。 弱点を突けば画面を埋め尽くす雑魚をAoEで一掃して爽快。 弱点なしでも高レベルならゴリ押し可能。ただし低レベル+弱点なしだと物量で潰される。 「もっとレベル上げよう」「次は属性合わせよう」が自然な動機になる。

サイクル進行とボス強化

サイクルボスHP倍率ボスATK倍率追加ギミック報酬倍率
1 (潜入1-5)1.0x1.0xなし1.0x
2 (潜入6-10)1.5x1.3xフェーズ追加1.5x
3 (潜入11-15)2.0x1.6x属性切替2.0x
4 (潜入16-20)3.0x2.0x時間制限強化3.0x
5+ (潜入21+)4.0x+2.5x+ランダム複合4.0x+

リベンジシステム

概要

ダンジョンで敗北した場合、同じマップ・同じ敵配置で再挑戦できる。 スキル選択や装備を変更して攻略の正解を探す楽しさ。

リベンジフロー

リベンジポータルの仕様

パラメータ
出現条件ダンジョンで敗北(死亡 or 時間切れ)
配置場所ロビーのミッションポータル横
外観赤いリフト + 警告パーティクル
保存期間次のダンジョンクリア or 新規ミッション選択まで
保存対象シード値、ミッション内容、敵配置、ボス情報
変更可能スキル選択、装備、レベル(成長分)
変更不可マップ、敵配置、ボス弱点

リベンジ時の学習ループ

設計意図

リベンジシステムにより「同じ敵に何度でも挑める」ため、 プレイヤーは「このボスにはどの属性が効くか」を実験で学べる。 ローグライクの「毎回ランダムで運ゲー」ではなく、 学習→対策→攻略 のサイクルを作る。

データ構造

typescript
interface Mission {
  id: string;
  type: 'extermination' | 'boss' | 'collection' | 'survival' | 'cycle_boss';
  difficulty: 'normal' | 'hard' | 'nightmare';
  theme: 'data-grid' | 'neon-arcade' | 'glitch-core' | 'void-rift';
  objectives: {
    killCount?: number;
    bossId?: string;
    collectCount?: number;
    surviveTime?: number;
  };
  timeLimit: number;
  rewards: {
    dataCores: number;
    bonusType?: 'weapon_guarantee' | 'exp_boost' | 'datacore_double' | 'lucky';
  };
}

interface CycleState {
  currentCycle: number;     // 現在のサイクル番号(1〜)
  runsInCycle: number;      // サイクル内の潜入回数(1〜5)
  bossWeakness: ElementType; // 次のボスの弱点属性
  hints: BossHint[];        // 発見済みヒント一覧
}

interface BossHint {
  runNumber: number;        // 何回目の潜入で発見したか
  type: 'text' | 'fragment' | 'miniboss_behavior';
  content: string;
  element: ElementType;     // ヒントが示す属性
}

type ElementType = 'neon' | 'data' | 'glitch';

interface RevengeData {
  seed: number;              // ダンジョン生成シード
  mission: Mission;          // ミッション内容
  cycleState: CycleState;    // サイクル状態
  playerLevelAtDefeat: number; // 敗北時のレベル
  deathCause: 'hp_zero' | 'timeout' | 'escape_failed';
}

interface MissionResult {
  missionId: string;
  completed: boolean;
  isRevenge: boolean;        // リベンジだったか
  clearTime: number;
  killCount: number;
  maxCombo: number;
  damageTaken: number;
  expGained: number;
  dataCoresEarned: number;
  weaponsObtained: Weapon[];
  bonuses: string[];
  weaknessExploited: boolean; // 弱点を突いたか
}