仕様メモ(機能と体験だけ)

このページは「達成したい体験/機能(仕様)」を中心にしつつ、 現行実装(src/main.ts)で満たしているかも合わせてチェックできるようにしたメモです。 移植する場合は「目標/コアループ/HUD/安定性」を仕様として先に持って行き、 数値や細かい分岐は実装メモ(一次情報)側で追います。

※星々の幻境(Miliastra Wonderland)固有の用語(stage 変数、g.server、シグナル、GlobalTimer など)が分からない場合は、先に 開発ノート:全体像 の「星々の幻境 / Genshin-TS の前提」を読むと、このページのチェック項目を追いやすい。

根拠リンク集(用語/一次情報/公式資料):

前提

  • 対象:星々の幻境(Miliastra Wonderland)上の UGC マップ内で動く、元素試練系の PvE
  • ここで書くのは「達成したい機能/体験」だけ。コード構造や実装手段は別章(src/main.ts)へ

目標

  • 限定時間の中で、戦闘→元素反応→オーブ回収の判断を回して、クリア/失敗をはっきりさせる
  • ルールとフィードバックが一貫していて、プレイ中に迷いにくいこと

範囲(入れる/入れない)

  • 入れる:ステージ進行、敵/増援、回収(オーブ)、計時、スコア、HUD、提示、決算
  • 入れない:外部サーバー、プラットフォーム外の権限が要る仕組み、独自レンダリング

コアループ

図:コアループ(概念)

flowchart TD Prep[準備: 目標表示/主副元素の見え方] --> Combat[戦闘: 敵を倒す] Combat -->|反応| React[反応名/色を表示] Combat --> Check[回収/進捗チェック] React --> Check Check --> Window[短時間だけ拾える窓] Window -->|拾う| Collect[回収数が進む] Window -->|時間外で拾えない/敵接触| Penalty[状況が悪化: 増援など] Collect --> Judge{勝敗判定} Penalty --> Judge Judge -->|成功| Clear[決算 → 次ステージ] Judge -->|失敗| Fail[失敗表示]

1) 準備

  • 目標(時間/回収数/スコア)と、主/副元素の見え方を出す

2) 戦闘

  • 敵を倒す
  • 反応が起きたら反応名/色を出す(必要なら加点のフックにする)

3) 回収/進捗チェック

  • 「短時間だけ拾える」窓でオーブを拾う
  • ミス(時間外で拾えない、敵に触れられる等)で状況が悪化する(増援など)

4) 結果

  • クリア:決算 → 次ステージ
  • 失敗:タイムアウト等 → 失敗表示

勝敗条件(この作品の寄せ方)

  • 勝利:敵がいなくなり、必要数のオーブを回収できたら成功
  • 失敗:タイムアウト、または運用上の事故を「敗北扱い」で収束させるケース(タイマー喪失等)

※「スコアが閾値を超えたら勝利」みたいな条件は、今は採用していない(入れるなら UI とセットで再設計)。

HUD/提示(最低限)

  • 残り時間
  • 回収数(現在/目標)
  • 反応表示(名前/色)
  • 主/副元素のアイコン

安定性(この作品で意識していること)

  • 同時敵数やオーブ数に上限を設ける
  • 生成/拾得まわりが詰まったときに、無限待ちにならない逃げ道を作る

QA 観点(簡易)

  • 時間:0 になったときに失敗へ行く/二重で動かない
  • 回収:拾得/不可/敵接触などの分岐が UI と一致する
  • 進行:成功条件を満たしたら決算→遷移へ行く
  • 生成:敵/オーブが上限を超えない、詰まったときの回復がある

現行実装でのチェック結果

  • 時間:タイムアウトで失敗へ行く → 達成。二重に動かない → PlayerEntered で開始し、PlayerLeaved/決算/遷移で停止する設計(進行ループ側の setInterval も成功/敗北/中断で clearInterval
  • 回収:分岐ロジック → 達成(拾得不可なら増援トリガーでオーブは残る/拾得可なら回収・加点してオーブを消す)。UI との整合 → オーブの表示ON/OFF、主/副元素アイコン更新、タイマーUI表示はコードで制御している(回収数や目標の表示は UI レイアウト側の変数バインド前提)
  • 進行:成功で決算→遷移 → 達成(enemyCount==0 かつ orbsCollected>=orbsRequired を毎秒チェックし、成功時は次ステージ(最終は勝利決算)へ)
  • 生成:上限を超えない → 達成(enemyCount < maxEnemies のときのみウェーブ生成)。詰まったときの回復 → タイムアウトでの収束のみ(位置詰まりの救済リスポーン等は現状は入れていない)
  • 安定性(上限/無限待ち回避):達成(maxEnemies テーブル + orbCount=10 の固定生成で上限を制御。タイムアウトや StageTimer 失効も敗北へ収束)

確認の入口: