開発ノート:仕様メモ
- 親ページ: エレメント・オデッセイ
- 開発ノート(入口): 開発ノート(入口)
仕様メモ(機能と体験だけ)
このページは「達成したい体験/機能(仕様)」を中心にしつつ、
現行実装(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失効も敗北へ収束)
確認の入口: