跳轉到

D-20260814-11|技能停用權威投影

背景與驅動力

chip broken 後物理引擎已不執行技能,但 RacePage 仍會接受 press、維持 hold active 並播放成功音效; 玩家看到的回饋與共識執行結果不同。逐回合禁用晶片與 chassis 淘汰已有各自 UI 閘,卻沒有共同來源。

考慮過的選項

  • 只保留引擎靜默拒絕:會繼續產生錯誤回饋,棄。
  • 儲存另一個 skillsDisabled latch:可能與零件、房規及退出狀態漂移,棄。
  • 每幀推導 ordered reason set,HUD、輸入、音效共同消費(採納)。

決定

  • HudState.skillDisableReasons 每幀由權威 VehicleState、逐回合 disallowChip 與編排層退出集合 推導;固定順序為 disallow-chipchip-brokenfunctional-disabledphysics-retiredeliminatedquit,車況缺席另為 state-unavailable。原因可同時存在且語意不得互相冒充。
  • reason set 非空時所有技能槽 disabled=trueactive=false。RacePage 在 enabled→disabled 邊沿 釋放全部鍵盤/指標 hold,並在音效與 feedInput 前拒絕新 press;release 仍可送出以清除狀態。
  • 原因消失即可由同一投影恢復,不保存跨幀 latch。RaceLoop 與物理引擎既有 fail-closed 閘保留, 因此 presentation/input projection 不是共識安全的唯一防線。
  • 專案仍為 pre-launch;直接採用單一 current HudState shape,不建立舊 HUD 相容或 migration。

後果與影響

tap、hold、HUD active 與音效不再對已失效技能提供成功回饋。新增原因時必須擴充同一 union、固定順序 及測試,不得在頁面另加平行布林狀態。