Preserve approved pixel tower prototype as development baseline
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
# MVP人物・来客カタログ
|
||||
|
||||
この文書は14日MVPで使用する静的な人物データの索引である。ゲームルールの正本は `GAME_SPECIFICATION.md`、機械処理の正本は `SYSTEM_SPECIFICATION.md` とし、実データは `data/characters/` のJSONを正本とする。
|
||||
|
||||
## データ境界
|
||||
|
||||
- 客クラスと種族は別データとし、8クラス×4種族の32組合せを生成できる。
|
||||
- 自由雇用候補20人は固定ID、成人確認済み年齢、役割、日給、契約金、4技能、許可業務を持つ。
|
||||
- MVPのユニーク人物はアンリとライの2人とし、相互の`counterpart_id`を必須にする。
|
||||
- 全IDは表示名から独立したlowercase snake_caseとする。セーブやイベント参照にはIDだけを使う。
|
||||
- JSONはSchema 1として厳密検証する。不明フィールド、不明タグ、重複ID、不足技能、18歳未満、成人未確認、孤児参照が一件でもあればカタログ全体を公開しない。
|
||||
- 14日MVPで参照されるID集合は固定する。同数の別IDへ差し替えて既存セーブ・イベント参照をすり替えることも許可しない。
|
||||
- JSONは1文書1 MiB、深さ64、10万値までとし、同一Object内の重複KeyはUnicode escape表現を含めて構文解析前に拒否する。検証エラーは最大256件で打ち切りを明示し、不正データによるメモリ増幅を防ぐ。
|
||||
- IDは64文字、表示名は80文字までとし、表示名の制御文字、経路の`..`、非有限数、JSONで正確に往復できない巨大数を受け入れない。
|
||||
- 倍率は浮動小数ではなくbasis pointで保持する。`10000`が1.00倍、`9000`が0.90倍である。
|
||||
- 客クラスの`need_rates`は`hunger`、`sleep`、`hygiene`、`medical`、`leisure`、`intimacy`の6 Keyを必須とする。種族の`need_rate_modifiers`もこの6 Key以外を許可しない。
|
||||
- Hygieneは汚れ、Medicalは負傷・病気、Intimacyは成人確認と昼夜Contextで変化させるため、MVP静的データの基礎値は0とする。安全は`risk_tolerance`と候補Risk、交流は選好・GroupFit・関係Eventへ分離する。
|
||||
|
||||
## 客クラス8種
|
||||
|
||||
| ID | 表示 | 主な需要・判断特性 |
|
||||
|---|---|---|
|
||||
| `warrior` | 戦士 | 忍耐と危険許容が高く、食事・酒場を優先 |
|
||||
| `mage` | 魔法使い | Manaと静かな施設を好み、騒音を忌避 |
|
||||
| `rogue` | 盗賊 | 夜・地下を好み、警備を避ける |
|
||||
| `cleric` | 聖職者 | 信仰と清潔を重視し、違法・地下への感度が高い |
|
||||
| `noble` | 貴族 | 高予算・低忍耐・高品質要求・VIP需要 |
|
||||
| `merchant` | 商人 | 交易と価格差を重視 |
|
||||
| `outsider` | 亜人・魔族客 | 夜行性傾向と地下嗜好を持つ来客枠 |
|
||||
| `diplomat` | 外交官 | 高品質・安全・VIP対応を要求 |
|
||||
|
||||
`outsider`は種族そのものではない。たとえば`outsider_human`も生成可能だが、通常の需要構成では獣人・魔族の出現重みを高くする。種族と職業を同一軸に戻さないための互換クラス名である。
|
||||
|
||||
## 種族4種
|
||||
|
||||
| ID | 表示 | 成人基準 | 主な補正 |
|
||||
|---|---|---:|---|
|
||||
| `human` | 人間 | 18 | 基準値 |
|
||||
| `elf` | エルフ | 20 | Mana・静穏嗜好、忍耐増、危険許容減 |
|
||||
| `beastfolk` | 獣人 | 18 | 食事需要、忍耐、危険許容がやや高い |
|
||||
| `demonfolk` | 魔族 | 20 | 夜・地下嗜好、危険許容が高い |
|
||||
|
||||
種族は所持金、忍耐、危険許容、嗜好、欲求増加率だけを補正する。性別や種族を破産結果、基本能力、成人契約の可否へ直結させない。
|
||||
|
||||
## 自由雇用候補20人
|
||||
|
||||
| ID | 表示 | 年齢 | 役割 | 希望番 | 日給G |
|
||||
|---|---|---:|---|---|---:|
|
||||
| `staff_akane` | アカネ | 24 | 受付 | 昼 | 120 |
|
||||
| `staff_bardo` | バルド | 38 | 受付 | 夜 | 135 |
|
||||
| `staff_chika` | チカ | 27 | 調理 | 昼 | 145 |
|
||||
| `staff_doran` | ドラン | 44 | 調理 | 夜 | 160 |
|
||||
| `staff_eri` | エリ | 22 | 清掃 | 昼 | 90 |
|
||||
| `staff_fugo` | フゴ | 31 | 清掃 | 夜 | 100 |
|
||||
| `staff_gina` | ジーナ | 29 | 運搬 | 昼 | 110 |
|
||||
| `staff_haru` | ハル | 21 | 運搬 | 夜 | 95 |
|
||||
| `staff_iris` | イリス | 26 | 接客 | 昼 | 130 |
|
||||
| `staff_juno` | ユノ | 33 | 接客 | 夜 | 140 |
|
||||
| `staff_klaus` | クラウス | 36 | 警備 | 昼 | 155 |
|
||||
| `staff_lina` | リナ | 30 | 警備 | 夜 | 150 |
|
||||
| `staff_marc` | マルク | 41 | 警備 | 任意 | 170 |
|
||||
| `staff_nadia` | ナディア | 28 | 酒場 | 夜 | 145 |
|
||||
| `staff_otto` | オットー | 35 | 酒場 | 夜 | 150 |
|
||||
| `staff_petra` | ペトラ | 25 | 施術 | 昼 | 145 |
|
||||
| `staff_quinn` | クイン | 32 | 施術 | 夜 | 160 |
|
||||
| `staff_rika` | リカ | 23 | 事務 | 昼 | 105 |
|
||||
| `staff_sven` | スヴェン | 39 | 保守 | 任意 | 125 |
|
||||
| `staff_tessa` | テッサ | 34 | 医療 | 任意 | 165 |
|
||||
|
||||
雇用時には静的データから`role_id`、4技能、許可業務、日給、通常雇用種別を実行時従業員へ投影する。希望番はSchedule作成側へ、年齢・成人確認・契約金は雇用Commandの検証境界へ渡し、コンテンツ条件を実行時の暗黙知にしない。これにより、カタログから生成した従業員の日給が実行時に0へ脱落することを防ぐ。
|
||||
|
||||
## ユニーク人物
|
||||
|
||||
| ID | 表示 | 種別 | 年齢 | 役割 | 対応人物 | 初期機械効果 |
|
||||
|---|---|---|---:|---|---|---|
|
||||
| `heroine_anri` | アンリ | ヒロイン | 25 | 女将 | `rival_rai` | 配置階の忍耐減少を0.90倍 |
|
||||
| `rival_rai` | ライ | ライバル | 29 | 影響者 | `heroine_anri` | Shield攻撃8、夜間+4 |
|
||||
|
||||
両者は`unique`かつ`unsellable`であり、通常の売却・自由雇用解雇へ流さない。関係値50・80の境界は静的効果だけでは越えず、予告付きの明示イベントを必要とする。
|
||||
|
||||
ユニーク人物の機械効果Keyは既知の効果だけを許可し、ヒロイン用とライバル用を相互に流用しない。倍率は0.25~3.00、MVPのShield攻撃値は0~100へ制限する。自由雇用候補へ`unique`または`unsellable`を付与することも、ユニーク人物から両タグを外すことも拒否する。
|
||||
|
||||
## 実装上の次境界
|
||||
|
||||
静的カタログは、内容の欠落や危険な人物データを起動時に検出するところまでを担当する。自動来客でのクラス・種族出現重み、雇用画面、アンリとライの同一施設・同一シフト接触判定は、運営Coordinatorと実行環境を接続した後に行う。
|
||||
|
||||
客個体の年齢、性別、社会ランク、危険度はアーキタイプではなく生成個体の責務である。現在の`GuestDefinition`は成人確認済みフラグまでを受け取るため、個体生成を接続する際は、選択種族の`adult_age`以上の実年齢を生成・保存し、年齢不詳の個体を成人向け判定へ流さない検証を追加する。
|
||||
@@ -0,0 +1,20 @@
|
||||
# MVP施設カタログ実装メモ
|
||||
|
||||
`GAME_SPECIFICATION.md` 7.6の16施設を、`FacilityDefinition`の現在の項目へ対応付けている。
|
||||
|
||||
施設の地上一般/地下FRONT/BACK分類と、MVP互換性を保った追加16施設は`docs/FACILITY_LIST.md`を正本とする。追加施設は`data/facilities/expansion/`へ分離し、通常のMVP Registry scanと建築パレットにはまだ含めない。
|
||||
|
||||
詳細Schema version 2のフィールド、Definition/Instance/日次履歴の責務分離、移行規則は`docs/FACILITY_DATA_DESIGN.md`を正本とする。
|
||||
|
||||
## 現スキーマと実行時投影
|
||||
|
||||
- 客用昇降機・業務用昇降機は `vertical_connector`、従業員ドアは `cross_layer_connector` を持つ。従業員ドアはBACK側を配置基準とし、完成時に同座標FRONTとの職員専用Connectorへ投影する。
|
||||
- 客用通路・裏通路は `route_subslot` と `schema_facility_proxy` を持つ1セル建設定義として受け付ける。完成後は通常の稼働施設へ登録せず、主要占有と共存するROUTE subslotと実Pathへ投影する。
|
||||
- 客用/業務用昇降機は、安全な垂直Topologyが未実装のため、Runtimeの建設確定前に資源・状態を変えず明示拒否する。
|
||||
- 「常時」「出動依存」「移動」のように固定サービス時間を持たない施設は、正の時間を必須とする現スキーマに合わせ、1分を状態更新・通過の最小単位としている。
|
||||
- 厨房の「15分で4食」は `base_service_minutes = 15` と `inventory_outputs` の4食で表現する。
|
||||
- 受付、厨房、成人向け個室は詳細Schema version 2へ移行済み。複数サービスは`service_profiles`で個別の時間、品質、価格、処理単位、欲求効果を持つ。
|
||||
|
||||
## 既存試作値
|
||||
|
||||
既存の受付、大衆食堂、一般客室には、統合済みの経済・来客回帰試験が依存する試作調整値がある。今回は互換性を維持し、仕様表との差分(受付の処理時間と直接料金、大衆食堂の処理時間と料金、一般客室の料金)は後続のバランス移行で扱う。
|
||||
Reference in New Issue
Block a user