歷史記錄 · 2026-06-28¶
重大重構里程碑¶
2026-06-28 ─ 武器 multi-actuator 統一模型整進 canonical(機制定案、UI 留草案)¶
決策檔:D-20260628-01
承「兩邊各自獨立旋轉武器」討論:經多輪設計收斂,把武器 general 機制統一為 weapon_actuators[](一組獨立驅動 pivot,每項 payload = 剛體轉子 mesh_node 或鏈條 chain)。單轉、多轉、單鏈、多鏈全是其特例。使用者裁定機制 / 參數現在定案進 canonical、只有編輯器 UI 留草案(綁整體版面 A1)。
核心設計:
- 轉速 energy-driven + 守恆:
ωᵢ = P × K_WEAPON_ROTOR_SPEED × (speed_weightᵢ / Σ speed_weight),P = kinetic_ratio × battery.declared_output_w。speed_weight預設 1 → 均分1/N;加 actuator → 各自變慢(總功率守恆、無 exploit);耗能/發熱不隨數量變(仍 ∝ applied_energy、由 kinetic_ratio 決定)。 - 鏈條 = actuator payload:基座旋轉吃 speed_weight、尾段
Chain_Segment物理 joint 甩動不吃(使用者澄清的「後面帶動的揮甩」)。 - 共用單一觸發(晶片 1 weapon 槽);獨立的是運動、非觸發。kinematic 預定運動(非 joint+motor);同武器各 actuator 間關碰撞。
- 反作用力:weapon-level 沿
Axis(多 actuator 共用applied_energy、淨值不變、同既有線性簡化、不模擬轉向 recoil 抵銷)。放開:360 減速停 / <360 回歸原位。motion_curve無step。
常數:新增 MAX_WEAPON_DRIVEN_PIVOTS(8) / K_WEAPON_ROTOR_SPEED;MAX_CHAIN_SEGMENT→MAX_WEAPON_DRIVEN_BODIES(16、= 剛體轉子 + 全鏈段總數、走 a 總數封頂給「一短一長」自由)。body 預算不變(8×16=128 保留額沿用,只改標籤)。保留 weapon_max_angle_deg 名(移進 actuator、不另改名省 8 檔 churn)。
落檔:建模 §3.7(schema + scene graph)/ §5.2 / §5.3 / §4.3 auto_chain、算式表 §3(轉速、連帶釘單轉子揮速)/ §4(反作用力加總)、程式參數表 §3(caps + rename)/ §18(K)/ §2(預算 + assert)、零件與場景 §9.2、程式架構/interfaces(WeaponActuator)、編輯器操作 §3.2(單 actuator 沿用 + 驗證 + 多 actuator UI 指草案)、UGC機制 / UGC上傳流程(欄位 + 檢核)、builtin-assets §5、其他.md §5/§10、其他/武器多轉子.md(瘦身成 UI-only 草案)。
殘留(壓後):asset-image-prompts §8.2「general_rotate」術語(art prompt、視覺等同 1-actuator、隨該檔壓後複審清)。
整合後自我 review 修 4 處(整合自造):weapon_main_mesh_node desc「操作 mesh」→「不轉本體 / 基座(hub)」、反作用力改 weapon-level、§3.7.1「左 / 右 slot」舊措辭、auto_empties 多 Pivot。2 可重議判斷(已報備、使用者可推翻):① 反作用力 weapon-level(沿 Axis、不模擬反向雙臂 torque 抵銷;若要抵銷須改逐 actuator 拆向)② weapon_main_mesh_node 對 general_actuated 仍必填當基座 / hub(若要允許「純 actuator 無基座」武器則改可選)。
2026-06-28 ─ 建模參數表 二次完整重審:passive 武器 / 磁源框架釐清¶
決策檔:D-20260628-02
使用者再次完整 review + 釐清關鍵設計:武器磁源 = 僅 active;材質型磁源(source 材質 + magnet_source_strength_n)是另一套系統、正常僅場地 entity / 地板;passive 武器 = 純物理碰撞、不是磁鐵;車輛部件有 source 材質 = 設定錯誤 fallback。兩套系統不混用。
| 項 | 變動 | 位置 |
|---|---|---|
| ⭐ A passive 武器 / 磁源框架釐清 | §3.7 line 105 原把 passive 武器「等同靜態磁源模型」= 把材質型磁源誤掛到武器(與歷史 §1「2026-06-12 武器 magnet 不用 magnet_source_strength_n、與 §9.4 靜態磁源分流」相違、屬後續漂移)→ 重寫「武器 magnet 僅 active / 無 passive magnet 武器(純物理)/ 材質型磁源是另一套、僅場地、部件出現即 fallback」。連帶修 §9.4 desc(零件 = fallback)+ 編輯器操作 §197(去「passive 磁鐵」誤掛) |
建模 §3.7 + §9.4 + 編輯器操作 §197 |
| C body 預算保守註 | §2 預算帳 chain 128 + bullet 64 同時計、但每車僅 1 weapon → 兩者 per car 互斥 → 補「保守上界、實際更低」 | 程式參數表 §2 |
| ⏸️ B 兩邊獨立旋轉武器(評估、未動) | 評估目前單 Pivot + 單 weapon_max_angle_deg 模型:中心 slot ✅ + 整體一起轉 ✅(對稱旋轉棒 / 螺旋槳);兩邊各自獨立轉 ❌(需多 Pivot + 多角度擴充)→ 待使用者決定要否擴充 |
待議 |
材質表 §8.2 / 算式表 §5.1 / 零件與場景 §9 查證本就正確(已分流兩套系統)、不動。
後續(同日)— 多轉子武器可行性評估 + 草案:B(兩邊各自獨立旋轉武器)經多面向評估——玩家側 0(純創作者編輯)/ schema·物理·body 預算 低(kinematic + 重用 §9.2 運動模型 + cap≤16 與 chain 互斥、重用保留額零增)/ 難點在開發端手機編輯器互動(非玩家、非物理 / 共識)。使用者裁定進設計但僅到草案(功能龐大、受編輯器整體版面 A1 等未定項影響、先定其他優先項)→ 起草 其他/武器多轉子.md(非 canonical、parked、後經授權刪除;已定範圍 = 獨立運動共用觸發 / kinematic / 重用 §9.2 / cap≤16 互斥 chain)+ 其他.md §10 索引。順手修 編輯器操作 §3.2 鏈條「上限 32 segment」→ MAX_CHAIN_SEGMENT 16(32 與全 corpus + body 預算 8×16 矛盾、會爆預算)。
2026-06-28 ─ 建模參數表 後合併重審 + 軸向慣例全 corpus 統一審查¶
使用者直覺「後續大合併後沒重審建模參數表」→ 全檔重讀 + 跨檔驗證(604 行、§1–§12)。本體大致乾淨,但撈出含我上一輪自己造成的錯;另對軸向慣例做專門全 corpus 掃描確認統一。
| 項 | 變動 | 位置 |
|---|---|---|
| ⚠️ A 修正我上輪的錯(§3→§18) | 材質表第四輪我把 K_STRESS_BURST_FACTOR 註解誤寫「程式參數表 §3」,實際在 §18(物理/武器 K 常數;歷史 §1「5 個 K 常數進 §18」條可證)→ 改正 3 處 live 註解(算式表 §7·§10.1、遊戲機制 §4.5)+ 歷史第四輪條 + 本機工作筆記 |
算式表 + 遊戲機制 + 歷史 + 本機工作筆記 |
M1 C4 鐵則 殘留標籤 |
§3.7.1「對齊 C4 鐵則」= 漏進 spec 的審查項標籤(C4 實為賽後結算協議項、與武器方向無關)→ 改白話「組裝層完全 deterministic、無自由旋轉方向參數」 | 建模 §3.7.1 |
| M2 鐵則無集中定義(維持) | 鐵則 1-4 = five-decisions、跨檔且 inline 自述(鐵則 1 在 遊戲機制 §2);另立 建模-local 索引反造重複權威 → 維持現狀 | — |
| M3 §10 鬆引用 | §4.1「零件凍結留車」原掛 遊戲機制 §10 當權威,但 §10(視覺反饋)只講 broken 視覺 → 機制 inline 自述、§10 ref 改標「broken 視覺呈現」 | 建模 §4.1 |
| ⭐ C 軸向慣例全 corpus 統一審查 | 專門掃全 corpus [±XYZ] 命中:除 遊戲機制 §1 外全部一致 建模 §5(Axis +Z / RoutePoint·conveyor −Z / hinge +X / gravity −Y / wind 0=+X·90=−Z / contact_area right=+X·left=−X / aero 前仰−Z+Y 後仰+Z+Y)。修 2 處:X1 遊戲機制 §1 技能軸 raw +X/+Y/+Z(舊框架 forward=+X、up=+Z,06-12 軸向定錨沒傳播到此)→ 對齊 算式表 §3 的 ±VEHICLE_X/Y/Z;X2 VEHICLE_X/Y/Z 全 corpus 從未定義 → 算式表 §3 補定義(= 前向/左向/上向 = GLB −Z/−X/+Y、建模 §5)。asset-image-prompts +X=forward 查證為刻意 art-space(06-11 已審、由 Axis empty 橋接 runtime Axis +Z)非 drift、不動。實作層(physics-engine/interfaces/ugc-fork/builtin-assets)僅存 skill enum 無方向、不受影響 |
遊戲機制 §1 + 算式表 §3 |
2026-06-28 ─ 材質表 第五輪保險複審:A/B/C 三項微修¶
第五輪深掃(材料學不變式 / 決策表組合覆蓋 / 合成 edge case)。全 31 種 ultimate ≥ yield、單位、cross-ref 皆乾淨;撈出 1 結構 + 1 歧義 + 1 細項,使用者全採納:
| 項 | 變動 | 位置 |
|---|---|---|
| ⭐ A §10.2 表頭自相矛盾 | 表頭宣稱「與 §10.1 決策無關的純技術保護」,但列1(entity 未標 destructible)/ 列2(fluid)正是 §10.1 列3/列5 決策的覆述,只有列3/列4(÷0 / thermal null)才是純技術 → 表頭改「完整 skip 清單(前 2 列=§10.1 決策派生、後 2 列=純數學保護)」(不刪列、保留實作層完整清單價值) | 材質表 §10.2 |
B §7 mass_g ↔ 注 1 fluid density 歧義 |
注 1 說 fluid density「不直接使用」,但 §7 mass_g = Σ all density 含 fluid(合法 weapon fluid 如熔岩刃)→ 採方案 X:注 1 改「fluid sensor 只是 friction/restitution 不參與碰撞,density 仍計入 mass_g(幾何質量恆計)」= 對齊 §7、不動公式 |
材質表 §2 注 1 |
| C visual_only + destructible 矛盾組合 | §10.1 列4 補「即使誤標 destructible: true 仍不可破壞——visual_only 優先(無 collider 無從受力)」(原靠列2「需 physics:default」隱含、現明寫) |
材質表 §10.1 |
2026-06-28 ─ 材質表 第四輪複審(多角度):A/B/C/D 全執行¶
承第三輪後再做一次多角度全檔複審(檔內一致性 / 跨檔指標 / 常數註冊 / 決定性 / 物理數值真實性 / 平衡 / i18n / schema / 上傳驗證 / 版本政策)。全 cross-ref 與常數逐一查證皆對得上;撈出 1 真矛盾 + 平衡討論 + 細節潤飾,使用者裁決後全執行:
| 項 | 變動 | 位置 |
|---|---|---|
| ⭐ A 版本分類矛盾 | §11.1「新增材質 = client minor」與 版本規範 §4 path-based(src/material-params/ → major)+ §3(擋配對 = major)打架;其 builtin/derive +1 本就擋配對 → 實為強制升 → minor 改 major(「改 id」新增半同步 minor→major)。對齊版本權威檔、非功能 bug 是標籤不一致 |
材質表 §11.1 |
| B1 鎂壓制鋁 desc | 數值上 magnesium 比 aluminum 更輕且更強(只熱輸),desc 原寫「有相當強度」與數值不符 → 改「更輕且更強」(數值不動、留 playtest;只校 desc) | 材質表 §2 |
| B2 鈦「磁吸免疫」誤導 | 全非鋼材質皆 none=磁吸免疫(鋼才是例外),titanium desc 單列像獨有 → 改「磁吸免疫=全非鋼材質預設,見 §8」(保留資訊、去除獨有暗示;只動鈦不動全表設計) |
材質表 §2 |
| C1 廢止清單路徑正向錨 | DEPRECATED_MATERIAL_IDS 原只否定式定位(「不在 src/material-params/」)→ 補正向錨「登記於 程式參數表 §3」+ 強化排除「刻意置於 path-based major 路徑之外」。未杜撰 src/... 模組(codebase 無 upload-validation 模組、sanitize 在 src/security/ 屬別事) |
材質表 §11.1 |
| C2 環境材質熱欄位名目值 | env 材質 tc/sh 為死值(vehicle-forbidden 不進零件熱合成 / entity 不模擬溫度 / ambient 來自 weather)→ 補注 6 點明名目值、同 rolling_resistance fallback 性質 | 材質表 §2 注 6 |
| C3 注 5 補 thermal_limit | magnet_floor 鏡像 steel 但 thermal_limit=null 沒跟著鏡像 → 注 5 補「tl 不在鏡像、依環境慣例 null、非 steel 的 800」 | 材質表 §2 注 5 |
| C4 desc 也走 i18n | §1 命名分層原只提 name i18n、desc(UI tooltip)漏 → 補「i18n 取 name + desc」 | 材質表 §1 |
| ⭐ D 一擊重傷 1.5 硬編 drift | 跨檔 grep:burst factor × 1.5 硬編於 4 處(算式表 §7 / §10.1、遊戲機制 §4.5、interfaces)未用具名常數 → 全改 × K_STRESS_BURST_FACTOR(值留 程式參數表 §18 單一 authority);niche 經濟 ×1.5 與 程式參數表 定義 / 歷史條目不動 |
算式表 §7·§10.1 + 遊戲機制 §4.5 + 程式架構/interfaces.md |
2026-06-28 ─ 材質表 第三輪完整複審:A–H 八項(全處理)¶
整檔重讀 + 跨檔查一致性(31 種計數 / deploy 對映 / §11 廢止模型皆一致)。撈出 8 項並全數處理:
| 項 | 變動 | 位置 |
|---|---|---|
| A 磁源規則措辭過寬 | §8.2「物件成為磁鐵的條件」像通則、與武器列「不依賴 role」字面互打 → scope 成「材質型磁源(場地 / 部件)的條件」+ 武器分支型例外 | 材質表 §8.2 |
| ⭐ B 絕版材質提示落地缺口 | §11.3 提示原引用比賽進行流程 §1(賽中)、grep 該檔無此字樣 → 提示實為房間內 → 配對流程 §9(房間等待頁)新增「開賽前揭露提示」列(收絕版材質 + §21 降版兩種)、§11.3 cross-ref 改指配對流程 §9 | 材質表 §11.3 + 配對流程 §9 |
| ⭐ C 不可破壞涵蓋缺口 | §10.1 / §10.2 原只列「Fixed + 未標 destructible」、漏 Dynamic / Kinematic entity → 放寬成「場景 entity 未標 destructible(不論 body type)」、車輛部件恆可破壞不適用 | 材質表 §10.1 / §10.2 |
| D 分類措辭 | §1「12 種地表類」→「地表 + 場地特殊材質如 magnet_floor」(magnet_floor 非地表) | 材質表 §1 |
| E magnet_floor 鏡像 steel | 物理欄位刻意鏡像 steel、但兩者獨立可分歧、改 steel 不自動同步 → 補注 5 | 材質表 §2 |
| F ultimate 命名統一 | 跨檔查證短寫 ultimate 為主流(算式表 / 遊戲機制 / 零件與場景 + 材質表多處);全名只在 §9 → §9 公式 sub_mat.ultimate_strength → sub_mat.ultimate(欄位定義保留全名;方案 X) |
材質表 §9 |
| G §10.4 去重複 | §10.4 原重述 §6 規則 2 機制 → 改「機制見 §6 規則 2、不重列」+ 只留本節 disambiguation | 材質表 §10.4 |
| H 跨節引用(維持) | §10.1 引用算式表 §10.1 佐證「entity 無溫度」—— 查證遊戲機制無明文、算式表 §10.1 fatigue-only 式即最佳佐證 → 維持原樣 | — |
壓後:track-image-prompts.md(track-functional-spec 引用 ×5 / 「12 種場地材質」/ ui-image-prompts:234 GP 殘字)使用者裁決續壓。