跳轉到

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 調整,不散落在判斷或物理程式中。