# BALANCE_DESIGN.md

本文件固化 M60-M69 之後的 v1.1 平衡設計依據。它不是新規格，也不覆蓋任何 OpenSpec；它只把已落地的 proposal、spec、comparison-report 與 audit 結論整理成後續調參時可追溯的設計說明。引用格式以 milestone 與章節標題表示，例如「M62 specs §1」代表 `openspec/changes/M62-coupling-formula/specs/coupling-formula.md` 的對應章節。

## 1. 設計總綱：快推進派、雙軸對等與三個 anchor

v1.1 的平衡核心是「快推進派」：玩家在第一段 session 內必須連續得到可感知的前進，而不是先讀完龐大系統再等待長時間產出。M60 proposal 指出，若玩家不知道剛解鎖什麼，再快的數值反饋也會變成「快迷路」；因此 M60 先以強制教學、焦點鎖定、三層跳過建立導流。M61 specs §3、§4、§5 隨後把這個體感轉成四種 player profile、anchor 與 feedback density，讓後續每個數值改動都能被回測。

三個主要時間 anchor 是本輪設計的骨架。第一，第一次突破要在 1-2 分鐘內發生，這由 M63 招募品質、M64 早期建築與 M65 突破門檻共同支撐。第二，第一座新建築應在 2-3 分鐘內可見；M64 specs §3 把早期 buildCost 砍半並讓六座早期建築 buildTime 歸零，是為了避免「有資源但等建造條」拖慢節奏。第三，第一次世界飛升目標落在 3-5 小時；M65 proposal 將 immortal requirement 從 10 名飛升弟子與 1e15 cultivation 下修到 3 名與 1e10，讓完整循環可在一個 play day 中看見。

雙軸對等由 M62 完成。M62 proposal 明確指出，原本 `tickSlot` 沒有呼叫 `calcDiscipleBonus`，弟子屬性沒有真正影響生產；M62 specs §1 把 rateMultiplier 定義為建築等級、弟子 baseline、弟子乘法 bonus、派別匹配與境界倍率的乘積。此後建築不再只是容器，弟子也不再只是 UI 展示，兩者同時構成產能。派別深度則由 M62 的主派/副派/不匹配係數、M67 的道學 affinity bonus、M68 的同派 stacking 共同形成。

M61 baseline 是後續判斷的尺。`optimal-no-tutorial` 在 60 分鐘時 spiritQi 為 76000，5 名弟子、9 座建築、265 次突破、stage 4；`optimal-with-tutorial` 只多出約 0.6667 分鐘教學耗時，代表教學成本可接受。`idle-no-tutorial` 在 60 分鐘時 spiritQi 為 107400，但只有 1 名弟子、4 座建築、0 突破，說明資源數字本身不是唯一目標；推進密度與系統解鎖才是快推進派的核心。

引用：M60 proposal「為什麼」、M61 specs §3-§5、M62 specs §1、M65 specs §2、`.bridge/balance/baseline-*.json`。

## 2. 建築 baseRate 表與設計來源

M64 將建築數值重新定位為「弟子為 0 時仍能支撐早期推進」的穩定底座。M62 已保證無弟子時 additive baseline 為 1.0，M64 則把這個理論落到資料表。凡界 baseRate 以早期資源鏈為優先：靈田 0.5、靈礦 0.4，確保靈氣與基礎礦物不被弟子 RNG 卡住；木工坊 0.18、煉爐 0.15、煉丹房 0.10 對應早期加工與消耗線；藏書閣 0.15 保持研究入口的可見性；倉庫 1.0 保持功能性建築身份，不被產能曲線重做牽動。

| 類別     |   建築 | baseRate | 設計來源                                    |
| -------- | -----: | -------: | ------------------------------------------- |
| gather   |   靈田 |      0.5 | 早期主產，無弟子也能推動前 2 分鐘           |
| gather   |   靈礦 |      0.4 | 早期礦物來源，避免第一段材料卡死            |
| gather   | 採露亭 |      0.2 | sect_level 5 後接續 gather 線               |
| process  |   煉爐 |     0.15 | 早期加工解鎖後立刻有回饋                    |
| process  | 玉煉房 |     0.12 | 中早期加工，低於主線但不失效                |
| process  | 木工坊 |     0.18 | start 建築，支撐 buildCost 降低後的連續建造 |
| craft    | 製符堂 |     0.08 | sect_level 10，作為符道入口而非主產         |
| craft    | 煉丹房 |     0.10 | start craft，支撐早期丹藥與消耗             |
| craft    | 煉器房 |     0.04 | sect_level 15，高價值但慢節奏               |
| craft    | 陣法堂 |     0.05 | sect_level 20，作為後續系統入口             |
| research | 藏書閣 |     0.15 | 研究入口，與道學系統銜接                    |
| storage  |   倉庫 |      1.0 | 功能性建築，不參與一般產能排序              |

M64 proposal 提到「13 凡 + 8 仙 = 21 建築」，而 M64 specs §1 實際鎖定的是 12 個凡界 baseRate；本文件沿用 specs 表中的 12 個凡界值，不自行補第 13 個。仙界 8 建築採相對比例放大：immortal_mine_hall 與 immortal_field_hall 從 1.0 到 1.2，immortal_forge_hall 與 immortal_library_hall 從 0.5 到 0.6，其他依 specs §4 乘 1.2。這樣的設計讓仙界是「跨界後加速」而非重置；舊界仍運轉，新界疊加新階梯，符合永不重置原則。

升級係數同樣在 M64 收斂。`UPGRADE_RATE_MULTIPLIER = 1.15`，因為 1.15^5 約等於 2.01，玩家每 5 級能感到約 2 倍產能；`UPGRADE_COST_MULTIPLIER = 1.4`，五級成本約 5.38 倍，讓升級不是無腦連點。M64 comparison 顯示 30/60 分鐘 spiritQi 低於 specs §7 下界，但 audit 接受此偏差，原因是 M64 是累積平衡鏈的一段，單一 data-table milestone 不應越界改公式。

引用：M64 proposal §A-§E、M64 specs §1-§4、M64 comparison-report、M64 audit。

## 3. Coupling 公式推導

M62 的 rateMultiplier 是本輪平衡的核心公式：

```text
rateMultiplier =
  buildingLevelMul
  × additiveBaseline
  × (1 + discipleMultBonus)
  × affinityMatchCoef
  × realmMultiplier
```

其中 `buildingLevelMul = UPGRADE_RATE_MULTIPLIER^(building.level - 1)`，代表純建築深度；`additiveBaseline = 1.0 + max(0, (avgAttribute - 20) / 100) × 0.5`，代表弟子屬性對底盤的溫和加成；`discipleMultBonus` 將 cultivation、建築 category 對應屬性、靈根 rateBonus 與靈根等級納入；`affinityMatchCoef` 則承接派別匹配；`realmMultiplier = 1.5^REALM_INDEX` 控制境界成長。

加法 baseline 的設計目的是保底而不是爆發。弟子不存在時回傳 1.0，弟子屬性低於 20 時也不讓倍率低於 1.0，避免玩家因抽到弱弟子或空 slot 產能歸零。屬性均值 100 時 baseline 只有 1.4，這使屬性品質能被感知，但不會取代建築升級、派別匹配與境界。這個「建築獨立可跑、弟子接入後變強」的底線，是雙軸對等的第一層。

境界倍率最初曾是 10^realmIndex，comparison 顯示 60 分鐘 spiritQi 暴增到 5503 倍；改為 2^realmIndex 仍有 6.44 倍，超出原 cap。最終 M62 specs §1d 採用 1.5^realmIndex，飛升境界約 11.39 倍，M62 comparison 得到 60 分鐘 192600，相對 M61 baseline 76000 為 2.534 倍，落在修訂 cap [1.3x, 8x]。這個決策保留境界深度，但承認「弟子首次接入生產」是架構級改動，不能沿用過窄的 2.5x cap。

不匹配 ×0.8 是策略懲罰，不是懲罰玩家嘗試。它只在建築有 daoBranch 且弟子主副派皆不匹配時生效；無 daoBranch 建築維持 1.0。如此可避免派別系統懲罰所有基礎操作，同時讓主派、第二派與錯配有可見差距。M67 後，daoBundle 的 affinityMatchBonus 還能把主派係數推到 1.5 + bonus，副派推到 1.2 + bonus/2，使公式具備後續深修 hook。

引用：M62 proposal「新公式」、M62 specs §1a-§1e、M62 comparison-report、M62 audit。

## 4. 派別匹配係數論證

主派 1.5、副派 1.2、不匹配 0.8 形成一個足夠明顯但不至於毀局的區間。主派與不匹配的差距為 1.875 倍，玩家把同派弟子放到同派建築會立刻感到提升；副派與不匹配的差距為 1.5 倍，鼓勵玩家使用 M62 secondaryDao，而不是只追求單一最優主派。主派與副派的 1.25 倍差距則保留主派價值，避免副派把選擇攤平。

M63 的招募重做是派別係數的供給端。前 3 次 mortal 請求保底 elite，mortal 屬性上調到 [45,75]，genius 上調到 [80,110]；靈根分布也讓 dual、variant 出現率提升。M63 comparison 的高品質靈根抽樣為 37.94%，高於 25% 門檻。這代表玩家早期更容易拿到能觸發主/副派策略的弟子，派別係數不會只存在於理論。

M67 則是派別係數的長線深化。position 35 給 affinity_match_bonus +0.2，position 40 給 +0.3；若同流派深修，主派匹配可從 1.5 提高到 2.0，副派則從 1.2 提高到 1.45。M67 controlled check 顯示 body_035/body_040 使輸出從 18000 到 23900，提升 32.78%，驗證道學深度能轉為實際生產。

M68 stacking 是派別係數的編隊層。單一主派匹配不額外 stacking，避免重複獎勵；1 主派 + 1 副派給 1.05，2 主派給 1.10，3 主派給 1.25。這讓「同建築塞滿同派」有上限收益，避免 secondary × secondary stacking 增加理解成本。派別深度因此分成三層：單 slot 的 affinity、道學的 affinity bonus、整棟建築的 stacking。

引用：M62 specs §1a、M63 specs §1-§3、M67 specs §5-§7、M68 specs §1。

## 5. 突破與飛升 anchor 校準依據

第一次突破 anchor 由三個改動共同壓低。M63 提高早期弟子品質，M64 提高早期建築底盤，M65 將煉氣到築基 cost 從 1e3 降為 1e2，並讓 seclusion gain ×2。M65 comparison 顯示 firstBreakthrough 為 0 分鐘，滿足 ≤2 分鐘目標。這個 0 分鐘不是要求實際玩家無等待，而是 simulator 在最優 profile 下的錨點；設計意義是「系統不應阻止玩家在第一段操作中看見突破」。

完整突破曲線為 1e2、1e4、1e6、1e9、1e13、1e18、1e25。跨度仍有 23 個量級，保留後期挑戰，但中段不再像舊值那樣以 1e30、1e60 把回饋推到遙遠時間。這條曲線與 realmMultiplier 1.5^n 搭配：突破成本下降讓玩家更常進階，境界倍率則被控制在飛升約 11.39 倍，避免進階頻率與產能倍率一起失控。

世界飛升 anchor 的設計目標是 3-5 小時。M65 specs §2 將 immortal requirement 改為 3 名飛升弟子與 1e10 cultivation，後續 divine、true_divine、dao 依序為 25/1e20、100/1e40、500/1e70。cosmicMul 則設為 mortal 1、immortal 3e3、divine 3e6、true_divine 3e9、dao 3e12。這代表跨界是強儀式感疊加，而不是歸零換倍率。

M65 comparison 同時記錄了一個邊界：現有 simulator 暴露弟子飛升 anchors，但未暴露 world-ascension anchor，也未在 `runSimulation()` 中跑 `ascendRealm()`。因此 M65 將 240 分鐘內 world ascension 驗收轉移到 M66-auto。這不是公式缺口，而是驗收工具邊界；M70 將它記入 decisions log，後續 M71 或相關 milestone 應用自動 playtest 報告統一收斂。

引用：M65 proposal §A-§D、M65 specs §1-§4、M65 comparison-report、M66-auto proposal。

## 6. 道學節點數值原則

M67 的目標是讓 230 個道學節點不再只是平鋪小數值，而是有主分支節奏、品質節點、屬性節點、仙界節點與派別深修 hook。主分支節點採階梯式倍率：position 5 為 1.25、10 為 1.5、15 為 1.8、20 為 2.2、25 為 2.8、30 為 1.8。這些點是玩家路線中的顯性里程碑，必須比一般節點有更強的感知。

非主幹的 mod 5 rate_mul 統一為 1.15，作為穩定小步推進；quality_shift 維持 position 8/16/24/32 的 +1/+1/+2/+2，讓品質系統有固定節拍；disciple_attr_mul 從 1.15 提升到 1.20，讓道學不只加建築，也能回頭增強弟子。仙界 position 41/43/45 的 rate_mul 從 1.5 提到 2.0，對應跨界後的高階節點密度。

新增 `affinity_match_bonus` 是 M67 最重要的長線 hook。它不是直接加全局產出，而是加深特定流派建築的主/副派匹配價值。這避免道學變成通用乘區堆疊，也讓玩家在「研究哪一派」與「弟子派別如何分配」之間建立連動。M67 comparison 的標準 60 分鐘 profile 數字與 M65 一致，因為 60 分鐘內尚未深到 position 35/40；controlled check 才證明該 hook 在深修情境有效。這個結果符合設計：道學深化不是早期膨脹器，而是中後期路線放大器。

引用：M67 proposal §A-§E、M67 specs §1-§7、M67 comparison-report、M67 audit。

## 7. 羈絆與 stacking bonus 規則

M68 把弟子社交與同派編隊變成清楚的倍率規則。Bond 的數值刻意保守：雙弟子 pair bond 為 1.05，三弟子 ring bond 為 1.10，滿好感 affinity 100 為 1.15。這些倍率提供「長期養成有回報」的感覺，但不搶走派別匹配、境界與建築升級的主乘區地位。

Stacking bonus 以建築為單位計算，而不是每個 slot 各自計算。若同一建築有 3 個 primaryDao 匹配弟子，建築 rate ×1.25；2 個 primary 匹配為 ×1.10；1 主派 + 至少 1 副派為 ×1.05；單一主派沒有 stacking，維持 1.0。這個設計的用意是把「編隊」與「單卡匹配」分開：單卡已由 M62 affinity 付費，stacking 只獎勵多名弟子的組合配置。

M68 明確禁止 secondary × secondary stacking，也讓無 daoBranch 建築直接返回 1.0。這降低了 UI 與心智成本，避免玩家為每個建築計算多層副派排列。controlled stacking check 顯示 1 primary 為 1.00x、1 primary + 1 secondary 為 1.05x、2 primary 為 1.10x、3 primary 為 1.25x，與 spec 完全一致。標準 60 分鐘 simulator 保持 stage 4、5 弟子、9 建築、spiritQi 66200，說明 M68 是深度機制，不是早期膨脹補丁。

引用：M68 proposal §A-§B、M68 specs §1-§3、M68 comparison-report、M68 audit。

## 8. 升級樹廣度/深度節點分類

M69 將建築升級樹拆為 `breadth`、`depth`、`main` 三類。`breadth` 是解鎖 recipe、slot 或 capability 的節點，rateBonus 固定 0.05；`depth` 是純加成節點，rateBonus 固定 0.15；`main` 是每 5 個位置的主幹必經點，rateBonus 0.5。這個分類把「解鎖新玩法」與「堆高產能」拆開，避免所有節點都被玩家只按倍率排序。

廣度節點的 5% 是刻意偏低，因為它的價值來自新功能；深度節點的 15% 是日常升級動機；main 節點的 50% 是階段性目標。main cost 為相鄰 depth cost ×3，對應其更高的收益與節點地位。M69 proposal 還提到純加成節點 cost 等比 1.4×，這與 M64 的 UPGRADE_COST_MULTIPLIER 1.4 相呼應，讓建築本體升級與升級樹深度有相近的成本語言。

仙界 8 建築若缺升級樹，M69 補 5 個基本節點，3 depth + 2 breadth。這確保跨界後不是只有 baseRate ×1.2，而是也有可投資的結構。M69 audit 顯示 819/819 tests pass、仙界節點補完、rate bonus 統一為 5%/15%/50%，因此後續調整可以依 kind 精準改，不必再逐節點猜測意圖。

引用：M69 proposal §A-§C、M69 specs §1-§3、M69 audit。

## 9. 回測 anchor 與 cap

M61 建立四種 baseline：`idle-no-tutorial`、`idle-with-tutorial`、`optimal-no-tutorial`、`optimal-with-tutorial`。這四種 profile 不是玩家分類學，而是測試邊界。idle profile 用來檢查不操作是否仍能維持基本生產；optimal profile 用來檢查曲線上限與 anchor；with-tutorial profile 用來估算教學耗時是否破壞節奏。M60 的 25 步教學因此不是純 UI，而是進入平衡模型的時間成本。

M62-M69 的 comparison 顯示，單一 milestone 的回測不一定全部達標，但每個 deviation 都有處理邏輯。M62 因架構級接入弟子而放寬 cap 到 [1.3x, 8x]，最終 2.534x pass。M64 的 spiritQi 下界未達，但未超 5x upper cap，audit 接受交由 M66/M71 累積調整。M65 記錄 world ascension anchor 不在 simulator 中，轉交 M66-auto。M67/M68 標準 60 分鐘 profile 數字穩定，但 controlled checks 證明深度機制有效。

M66-auto 是整體驗收閘。它要求 4 profile × 240 分鐘，檢查 firstBreakthrough ≤2 分鐘、firstNewBuilding ≤3 分鐘、fifthDisciple ≤15 分鐘、firstAscension ≤5 小時、stage5 ≤5 小時、stage7 ≤24 小時；同時檢查前 30 分鐘 feedbackDensity 每窗口 ≥5 events，以及 60 分鐘 spiritQi 位於 [3x baseline, 10x baseline]。M70 不更改這些 gate，只把它們定位為「累積平衡驗收」，避免在單一 data milestone 內過度補償。

引用：M61 specs §4-§10、M62 comparison-report、M64 comparison-report、M65 comparison-report、M66-auto proposal。

## 10. 未來迭代 hook：可調與不可動

可調參數分四類。第一類是資料表倍率：M64 baseRate、buildCost、buildTime、仙界 baseRate ×1.2，以及 M69 的 breadth/depth/main rateBonus。這些參數可用於局部調整節奏，但應保留分類意義，例如 breadth 不應因短期產能不足而變成主倍率來源。第二類是派別深度：M62 的 1.5/1.2/0.8、M67 affinity_match_bonus、M68 stacking。這些可以調整策略差距，但應避免讓不匹配變成不可用，否則玩家早期抽卡會被過度懲罰。

第三類是 progression cost：M65 breakthrough exp、world ascension requirement、cosmicMul 與 seclusion rate。這些直接影響 anchor，調整前應先跑 M66-auto 或同等 simulator；特別是 cosmicMul 屬於跨界大乘區，應用於儀式感與長期階梯，而不是修補 30 分鐘內的小缺口。第四類是供給端：M63 招募保底、屬性區間與靈根分布。這類調整會同時影響 early anchor、派別觸發率與角色品質體感，應用 sample 分布驗證，而非只看單次 seed。

不可動的原則更重要。不可引入 prestige、reset、rebirth 或任何歸零換倍率；世界升界是疊加新界內容，舊界繼續運轉。不可讓無弟子建築產能歸零，也不可讓弱弟子把 baseline 壓到 0。不可把 simulator 的 controlled check 當成標準 profile 結論，也不可因單一 milestone 下界偏差就在禁止範圍外改核心公式。後續若 M66 報告出現 FAIL，應以「哪個 anchor 偏離、哪個乘區負責」來選 hook，而不是全局加一個不具語義的倍率。

引用：AGENTS.md §6、M62 specs §1、M63 specs §1-§3、M64 specs §1-§4、M65 specs §1-§4、M66-auto proposal、M69 specs §1-§3。

## Decisions Log

| 決策                                | 依據                                                                   | 後續用途                                            |
| ----------------------------------- | ---------------------------------------------------------------------- | --------------------------------------------------- |
| M70 採 10 章節並附 Decisions Log    | M70 proposal/tasks 要求 10 章節；使用者訊息提到 9 章節 + decisions log | 保留 proposal 全部章節，同時滿足 decisions log 需求 |
| 教學成本納入平衡，而非只視為 UX     | M60 強制教學 + M61 with-tutorial profiles                              | 調整新手節奏時同時檢查 tutorialActiveMinutes        |
| 弟子正式接入生產公式                | M62 發現原 production-loop 未使用 disciple bonus                       | 所有後續建築、招募、道學、羈絆都以新公式為基礎      |
| realmMultiplier 採 1.5^realmIndex   | M62 comparison 兩輪爆 cap 後的 amended v2                              | 保留境界深度，避免 10^n 或 2^n 造成早期失控         |
| 主/副/不匹配係數為 1.5/1.2/0.8      | M62 specs §1a                                                          | 建立派別策略差距，供 M67/M68 深化                   |
| 前 3 次 mortal 招募保底 elite       | M63 specs §1                                                           | 保障 1-2 分鐘突破 anchor，降低新手 RNG 失敗         |
| 建築升級每 5 級約 2×                | M64 specs §2，1.15^5 ≈ 2.01                                            | 讓建築深度有可預期節奏                              |
| M64 下界偏差接受，不在 M64 越界補償 | M64 comparison + audit verdict                                         | 交由 M66-auto/M71 做累積調整                        |
| World ascension 驗收轉交 M66-auto   | M65 comparison 記錄 simulator 缺 world anchor                          | 後續需以自動 playtest 報告統一驗收                  |
| 道學 affinity bonus 放在深層節點    | M67 specs §5-§7                                                        | 避免早期膨脹，把同派深修作為中後期路線              |
| secondary × secondary 不 stacking   | M68 specs §1 MUST NOT                                                  | 控制理解成本，避免副派排列過度複雜                  |
| 升級樹分 breadth/depth/main         | M69 specs §1-§2                                                        | 未來調參可按節點語義修改，不再混雜倍率與解鎖        |
