歷史記錄 · 2026-06-29¶
重大重構里程碑¶
2026-06-29 ─ 車輛組裝 完整重審 + 多回合模型釐清(揭露跨檔大洞)¶
決策檔:D-20260629-01
使用者要求完整 review 車輛組裝.md。3 項變動:
| 項 | 變動 | 依據 |
|---|---|---|
| §3.4 Tamiya envelope 內部矛盾 | 列在「超過 → 拒絕儲存」硬表、又稱「軟性建議」→ 標 Tamiya「軟性建議、不拒收」;line 103「拒絕儲存」收斂到前三項(質量 / AABB / 質量比) | canonical = 軟性建議(歷史 §690 I1 / §604 / 建模 §284:Tamiya 軟、AABB 硬) |
| §6「複合 mesh」→ multi-actuator 對齊 | 重寫 §6 body:獨立運動(雙鎚 / 多轉子)→ 多 actuator weapon_actuators[](建模 §3.7)/ 靜態複合造型(三叉戟 / passive)→ 複合 mesh;單一 Mount_Weapon 不變 |
對齊 2026-06-28 multi-actuator |
| §10 + 算式表 §347「三回合」→「回合間」 | 固定 3 的舊假設 → 回合數可變 N(房間設定) | 使用者裁定可變 N |
⭐模型釐清(使用者補充):車輛組裝 = 純車庫造車、與回合 / 房間 / 比賽結構無關(§2 單台 loadout 本就對)。回合 / 場地 / 圈數 / 人數 = 房間設定(房主開房時設);流程 = 開房設定 → 建房 → 配對 → 從車庫選車(N 台對 N 回合)→ 比賽。圈數 ≠ 回合(圈數 = 回合內依場地、回合 = 一場比賽幾輪、可變 N)。
⚠️ 揭露跨檔大洞(獨立任務、未做、另記於本機工作筆記):多回合模型幾乎沒文件化 —— 賽內機制(整份單場、無回合結構)+ 配對流程(無每回合場地 / 選車流程)+ ledger threeCarRotation(固定 3、應改可變長度)+ 人數 host-set vs 建模 §5.4 auto-max 待釐清。需獨立補完。
查核乾淨:§3.2 部件數量、§3.3 鐵則 5(武器需晶片)、§3.4 質量 / AABB / 質量比(= 建模 §7.1)、§4 kinetic_ratio immutable + 公式(算式表 §3)、§9 lenient ±15%、§10 reset(算式表 §11)、§13 版本相依(賽內 §1.6 + 版本規範 B 軸)、§12 fork 分潤 全一致。
2026-06-29 ─ 賽內機制 完整重審:4 項(drift / 完整性 / 結算模型對齊)¶
決策檔:D-20260630-02
使用者要求完整 review 賽內機制.md(首次逐檔複審)。多角度(常數 / 內部一致 / 跨檔 drift / 結算共識模型 / 完整性)查核,撈出 4 項全執行:
| 項 | 變動 | 依據 |
|---|---|---|
| §4 timeout 寫死「10 分」 | 「Race timeout(10 分強制結束)」→「達房間賽程時間上限(預設 600s / 範圍 60–1800)」 | 時間上限是房間設定(§1.5/§3.1、RACE_DURATION_* 60/600/1800)非固定值 |
thermal_limit_effective 術語漂移(2 處) |
賽內 §2.4 HUD + interfaces §157 → auto_thermal_limit |
canonical = auto_thermal_limit(建模/材質/算式/遊戲機制 7+ 處);熱系統改版殘留 |
| §3.2 名次缺決定性 tiebreak | 「依完賽時間 + 完成圈數」→「完賽時間 → 完成圈數 → PeerId lexicographic 決定性 tiebreak;見 比賽結算流程」 | 比賽結算流程 §1 有三層、§3.2 漏最終 PeerId(共識消歧靠它) |
| ⭐ §3.2 步驟 5–8 結算事件模型 | 「多簽 RaceEconomySettlement」「寫入鑄幣 / 分潤事件」→ 對齊 ledger.md §5:多簽整個 RaceResultEvent(economySettlement 為內嵌欄位)/ 無獨立鑄幣事件(economy.md §9)/ rating·信譽為 DerivedState 套用;原 5–8 收成 5–7 |
ledger.md §5 + economy.md §9(結算模型於 2026-06-04~05 脫鉤時定案、歸位 ledger.md §5,見 §386;§3.2 是當時沒收乾淨的舊摘要、使用者記憶正確) |
查核乾淨:常數全對(TIME_STEP_X1000 16 / CHECKPOINT_INTERVAL_FRAMES 7200 / RACE_DURATION_* 60·600·1800 / RACE_LAP_COUNT_* 1·3·10 / STARTUP_COUNTDOWN_SEC 3 / ROLLBACK_FRAME_BUFFER_* 7·8·10 = 程式參數表);異常斷線 −5 = 信譽系統 §39(正確、非漂移;先前「Q2③ 暫緩」註記是另一個「頻繁斷線加碼罰」議題);兩 snapshot 機制(2s rollback checksum vs 60s 多簽 RaceSnapshotEvent)+ 三 checkpoint(賽道/賽內/帳本)命名不混;⌊在場/2⌋+1 多簽、整除截斷 bigint、Checkpoint 依序、配對窗口 ±5/+5per10s/±30 全一致。
同日第二輪多角度再審(2 項 + 1 裁決):
- ⭐ §4「賽中網路斷線」混淆斷線 / desync:原「rollback 容忍 30 frame;超過判定 desync」→ 對齊 比賽進行流程 §12:斷線走重連窗 15s(
RECONNECT_TIMEOUT_MS)→ 逾時異常斷線(與 desync = checksum 偏離 30 frame 是兩套機制、desync 屬 §2.2/§5)。原摘要漏 15s 重連窗、又誤把斷線叫 desync(同 §3.2「摘要沒對齊 flow 權威」模式)。 - ⭐ §5「卡關自動 reset」釐清 + 卡牆裁決:使用者裁定卡牆(場內物理卡死)不另設偵測 = 當無法完賽(形態無窮難窮舉、stuck-timer 會誤判正常慢速 + 增決定性風險;賽程時間上限 §1.5 已兜底無限拖、stall 無利益);卡空(掉出 / 脫離)沿用 遊戲機制 §12 自動重定位。賽內 §5 + 鏡像 比賽進行流程 §199 + 資安規範 §198 三處同步(去舊「卡牆自動 reset + 觀戰自動切換」誤述)。
- 查核乾淨:broken 致命(D3 已裁、觀戰流程 §5 唯一定義)、配對窗口三常數(程式參數表 §117-119)、INTEGER_SCALE 1000。
2026-06-29 ─ UGC機制 完整重審(multi-actuator 整合後)— H/C drift 修 + A/B 細節¶
使用者要求完整 review UGC機制.md(2026-06-02 Q1–Q8 早已結案、本輪為新一輪多角度)。結構紮實,撈出 2 處 corpus 對齊漂移 + 2 項細節改良:
| 項 | 變動 | 位置 |
|---|---|---|
| H wave B 階段標籤 | §4.1「自動算第二波(Stage 2 wave B)」→「Stage 3 wave B」(它在「## 4. Stage 3」段下、且 建模 §10 第二波 = Stage 3、編輯器操作 §560 寫「Stage 3 wave B」;原為唯一寫錯) | UGC機制 §4.1 |
| C fork 燒幣標籤 | §5.3「燒 50 / 500 minor units」→「50(零件)/ 500(場地)」(其餘 5 檔皆有標籤、§5.3 唯一漏) | UGC機制 §5.3 |
| A「Option C」殘留標籤 | §3.7「(Option C:auto + manual)」→「(auto + manual 混合)」(spec 無 Option A/B 對照、孤立標籤) | UGC機制 §3.7 |
| B actuator payload 檢核 | §4.2 + UGC上傳流程 §4 補拒收列「general actuator payload 非 mesh_node / chain 二選一(缺 / 並存)」(其他武器檢核皆明列、原僅靠「schema 互斥」大傘隱含;兩檔同步) |
UGC機制 §4.2 + UGC上傳流程 §4 |
查核乾淨:常數 / 門檻(FORK_SIMILARITY_THRESHOLD_PERCENT 10 / players 2–8 / 密度比 50:1 / MAX_WEAPON_DRIVEN_*)、tag enums(terrain 7 / difficulty 4 / feature_tags ≤ 5 = 其他.md §7)、fingerprint 30+ 特徵點、fork ancestors ≤ 2 筆 + 70/20/10、三階段(組裝獨立)、§10 B 軸版本(與材質絕版品另一軸、不衝突)全部一致。
同日第二輪多角度再審(撈出第一輪漏的 2 項):
- ⭐ §4.4 ↔ §7 內部矛盾:§4.4「上鏈後可變欄位」把創作者署名列為可改,但 §7 元資料分層表寫「創作者署名 / fork 關係 ❌ 不可改」→ attribution 必須 immutable(防竄改盜用、護分潤血緣)→ §4.4 移除創作者署名(只留 顯示名稱 / 描述 / tag)+ 補註 immutable 見 §7。
- §3.7 未指派 cluster 預設材質漂移:「scope 預設(asphalt / type)」是 2026-06-04 Q8 搬章節(§9.2.1→§3.7)時承接舊「固定 asphalt」字、未對齊 2026-05-28 已定的「未指派 sub-mesh → 主
materialfallback」(建模 §2 零件 + §8.5 場地、Q6 / H2 深思決策)→ §3.7 改 fallback 主material(編輯器操作 §147「零件補主 material」本已正確、§3.7 是唯一殘留)。使用者記憶「最後定案 = 主 material fallback」經查證正確(§3.7 雖日期較新但屬搬家未收乾淨、非重新裁決)。 - 查核乾淨:§10 版本遷移(vs 版本規範 B 軸 三分類 / 鏈式 / yank / unusable / 免費 / 三救援)、分潤 70/20/10(算式表 §15)。
2026-06-29 ─ 建模參數表 三次重審(multi-actuator 整合後)+ phase_offset 改角度¶
使用者再次要求完整多角度 review 建模參數表(623 行)。逐角度(內部一致 / 整合 artifact / 跨檔 drift / 數值帳 / 邊界)查下來無設計層矛盾,撈出 1 處錯字 + 3 項細節釐清/改良,逐項裁決執行:
| 項 | 變動 | 位置 |
|---|---|---|
| 鏈段上限漏字(drift) | §3.7.2 scene graph 註「全武器鏈段總和 ≤ MAX_WEAPON_DRIVEN_BODIES」漏「剛體轉子」→ 改「剛體轉子 + 鏈段總數」(對齊 §3.7 line 114 / §5.3 / 程式參數表 §3 常數本義;否則誤讀成可放滿 16 鏈段再加轉子 → 撐破預算) |
建模 §3.7.2 |
| B 鏈條順序權威釐清 | chain: string[] 是歸屬清單(多鏈分辨哪段歸哪支)、鏈序由 GLB children 順序定、非陣列序(比照 bullet、不由名稱後綴);§3.7.2 / §5.3 本已寫此規則,補明 line 112 cell + interfaces chain 註同步 |
建模 §3.7 + interfaces |
C general_push 動作語義補完 |
舊「無 Pivot」案遺留的薄定義 → 建模 §3.7 補「無自運動 mesh / 無角度速度參數;觸發沿 Axis +Z 對接觸目標前推衝量 ∝ applied_energy、chassis 反向反衝」;算式表 §4 補 action 側遞送(actuated/launch 經實體碰撞自然遞送、唯 general_push 無實體 → 引擎對接觸目標施加等大反向 +action_direction 衝量、與 recoil 成 action-reaction 對) |
建模 §3.7 + 算式表 §4 |
⭐ F phase_offset_ms → phase_offset_deg(僅武器 actuator) |
武器 actuator energy-driven、無 period_ms → 用 ms 偏移換算成角度會隨功率 ω 浮動(雙刃想固定 180° 會跑掉)。改相位偏移角度 0–360(360 = 一個完整運動週期)→ 與功率脫鉤、多臂相對相位恆定(對稱多臂用例不出乎意料)。改 5 處:建模 §3.7 / interfaces / 編輯器操作 §3.2 / 武器多轉子 ×2 |
5 檔 |
F 關鍵分界:entity kinematic 的 phase_offset_ms 保留不動(entity 有 period_ms、ms 對應固定角度、正確);只有「無週期的武器 actuator」改 deg。4 處 entity _ms(零件與場景 §198 / 建模 §9.2 + 時間驅動式 / 編輯器 kinematic_move)grep 確認未誤動。
D(2 可重議)維持現狀(反作用力 weapon-level / weapon_main_mesh_node 必填當基座;已報備、日後想推翻再開)。查核乾淨:轉速式(算式表 §3)/ WeaponActuator(interfaces)/ body 預算 8·12+8·16+8·8+100+64 = 452 ≤ 512(程式參數表 assert 同式)/ 常數 / 磁源三系統分離 / 軸向慣例 全部一致;general_rotate 殘留只剩 asset-image-prompts §8.2(已知壓後)。