D-20260814-09|回合名次與失能終局¶
背景與驅動力¶
舊排序把終局幀是否淘汰置於完賽幀之前,導致已合法完賽者之後損毀會失去成績;未完賽者又只有 圈數,無法在同圈決定性比較實際路線進度。battery/motor 功能失能與 chassis 物理退役也曾共用 立即淘汰語意,排除了慣性或撞擊推過終點的玩法。
考慮過的選項¶
- 所有失能者固定末位:會推翻已形成的合法完賽,棄。
- 以世界直線距離或浮點位置排序:彎道可抄近路且非 canonical,棄。
- 每台車從失能幀各算 120 幀:會形成多個交疊回合尾窗,棄。
- 完賽鎖定、未完賽分區、checkpoint 約束量化弧長與單一回合級終局窗(採納)。
決定¶
- 名次依序分為已完賽、未完賽存活、未完賽失能、未完賽退出。已完賽依完賽幀;其餘區內依
圈數、
routeProgressUm、PeerId。合法完賽不因後續損毀、退役或退出降級。 routeProgressUm是微米整數量化、單調不退的 route arc-length;未依序通過下一 checkpoint 前 不得超過該 checkpoint 的弧長。欄位進 SavedState v15 與 state hash,pre-launch 不接收 v14。- battery/motor broken 關閉輸入、驅動、技能與主動武器,但 chassis 持續物理、checkpoint 與 swept finish 判定;慣性、環境或撞擊仍能促成合法完賽。chassis broken 依既有交易原子退役。
- 只有場上已無未完賽存活車時才啟動一次回合級失能滑行窗。上限 120 幀;全部未完賽失能車 線速度 < 0.05 m/s 且角速度 < 0.1 rad/s 連續 15 幀可提前結束。既有回合時限是絕對上限, chassis 已退役或退出且無滑行車時可立即以淘汰語意結束。
後果與影響¶
RoundResult、participant 與 spectator HUD 使用相同分區與進度鍵;completed 僅表示全員合法
完賽,duration-limit 優先於滑行窗,滑行窗解算完使用既有 eliminated 結束語意。四個門檻均
集中於 protocol/gameplay,可 playtest 調整,不散落在判斷或物理程式中。