D-20260814-06|場地碎片統一純視覺¶
背景與驅動力¶
D-20260811-03 曾為可破壞 Track Entity 選擇 load-time 預配置 dynamic fragment body、五秒物理 生命與 64-body FIFO。後續產品裁決已把車輛碎片改為純視覺;若場地仍保留物理碎片,會繼續增加 solver、body budget、SavedState、checksum 與跨 peer 驗證成本,也會讓同一「碎裂」語意出現兩套規則。
考慮過的選項¶
- 保留場地物理碎片、只有車輛純視覺:規則與驗證路徑分裂,棄。
- 破壞時動態建立短命 body:仍增加非必要物理與 rollback topology,棄。
- 車輛與場地碎片一律由版本化 descriptor 重建呈現(採納)。
決定¶
- destructible Track Entity 破壞當幀停用 intact body、colliders、move、conveyor 與 entity-local magnets;不建立、啟用或保留 fragment body、collider、sensor、damage 或路障。
- PhysicsManifest v9 的 destructible entry 保留 intact
mass,供破壞前 reduced-mass 撞擊計算; 碎片只保存共用visualFragments {version, method, totalVolumeLossPct, fragments[index,seedM,volumeM3]}。 runtime 只讀 typed manifest,不回退 raw extras,也不做即時幾何切割。 VORONOI_FRAGMENT_COUNT_MAX仍是 authoring/presentation 上限;物理FRAGMENT_POOL_MAX、FRAGMENT_LIFETIME_MS與 body 預算占用刪除。車輛與場地共用VISUAL_FRAGMENT_LIFETIME_MS=5000、VISUAL_FRAGMENT_FADE_MS=1000與 presentation config version。- SavedState v13 與 checksum 只保存 entity
fatigue/broken/breakFrame。逐片 active、spawn、expiry、 fade、pose 與 velocity 不進共識;Rapier snapshot 只驗證 intact body enabled 狀態。 - 場地視覺 seed 由
entityIndex + breakFrame + descriptor/presentation version派生。觀戰、重播與 late join 在五秒期限內可重建同一組 descriptor,逾時不生成;wire 不傳physicsActive或 fragment pose。 - PhysicsManifest/
open4wd_version/builtin assets 基線直接升為 v9。專案仍為 pre-launch,v8 資產與 SavedState v12 一律拒絕,不建立 fallback 或遷移。
後果與影響¶
最大物理 body 保守帳由 452 降為 388,512 上限餘量由 60 增為 124。破壞後 intact collider 同幀退出且不留下物理路障;presentation 數量不再受 64-body pool 限制。D-20260811-03 的 typed Track Entity、kinematic、conveyor、visual-only、fatigue 與 magnet 條款仍有效,只有其物理碎片、 FIFO、snapshot fragment lifecycle 與相關 benchmark 條款由本決策取代。