ROLLBACK_FRAME_BUFFER_DEFAULT |
8 |
輸入可受理/回滾深度基準值;過舊 input(current - 8 之前)直接丟棄 |
ROLLBACK_FRAME_BUFFER_MIN |
7 |
界標常數(不變式用) |
ROLLBACK_FRAME_BUFFER_MAX |
10 |
界標常數(不變式用;STATE_BUFFER_MAX_FRAMES ≥ 此值) |
STATE_BUFFER_MAX_FRAMES |
12 |
StateBuffer 儲存容量;精確保留 12 個 pre-step 快照,非一般 input acceptance window;catch-up offer 會複製 pin 對齊候選,不依賴其後續保留 |
SNAPSHOT_INTERVAL_FRAMES |
120 |
2 秒 |
SNAPSHOT_CHECKSUM_BYTES |
32 |
SHA-256 |
MAX_INPUT_EVENTS_PER_FRAME |
4 |
chip 技能槽上限;同 skill 每幀至多一筆 |
SYNC_SNAPSHOT_MAX_BYTES |
4_194_304 |
catch-up SavedState 單包上限(4 MiB) |
RACE_MESSAGE_MAX_BYTES |
4_194_688 |
race raw packet 解碼前上限(snapshot 加 wire/PeerId/簽章裕度) |
INGRESS_INPUT_TOKEN_BUCKET_MESSAGES |
120 |
依 DataChannel 真 peer、跨 drain() 的 input burst token 容量;合法 60Hz 不得誤丟 |
INGRESS_INPUT_TOKEN_REFILL_PER_SECOND |
90 |
input 持續補充率(tokens/s);高於合法 60Hz,保留傳輸抖動裕度 |
INGRESS_CONTROL_TOKEN_BUCKET_MESSAGES |
32 |
checksum 與四種 catch-up 控制訊息的獨立低頻 burst 容量 |
INGRESS_CONTROL_TOKEN_REFILL_PER_SECOND |
32 |
低頻控制訊息持續補充率(tokens/s);不得借用 input 90/s 配額 |
INGRESS_TOKEN_BUCKET_BYTES |
4_260_224 |
decode 前每 peer、跨 drain() raw byte token 容量(單一最大 race packet + 64 KiB) |
INGRESS_TOKEN_BUCKET_REFILL_MS |
1_000 |
message/byte token bucket 由空補滿時間;呼叫 drain() 不重置 |
VERIFIED_QUEUE_MAX_MESSAGES_PER_PEER |
256 |
每 peer 驗簽後尚未 drain 訊息數上限 |
VERIFIED_QUEUE_MAX_BYTES_PER_PEER |
4_259_840 |
每 peer 驗簽後 queue byte 預算(4 MiB + 64 KiB) |
CONTROL_MESSAGE_MAX_BYTES |
262_144 |
ordered control DataChannel 的 DAG-CBOR decode 前單包上限 |
CHAT_MAX_LENGTH |
500 |
單則聊天 Unicode code-point 上限 |
CHAT_MAX_PER_SECOND |
5 |
per-sender 聊天 token bucket 每秒上限 |
ROOM_CHAT_MESSAGE_CAPACITY |
20 |
host 全房聊天每秒 message bucket 容量/補充率 |
ROOM_CHAT_BYTE_CAPACITY |
32_000 |
host 全房聊天每秒 raw byte bucket 容量/補充率 |
SPECTATOR_MAX_PENDING_OPENS |
8 |
host 同時未完成 spectator channel open 的上限 |
CONTROL_INGRESS_TOKEN_BUCKET_MESSAGES |
32 |
每個真實 remote peer 的 control 訊息 burst 容量 |
CONTROL_INGRESS_MESSAGE_REFILL_PER_SECOND |
16 |
control 持續訊息補充率;與 race channel 的 catch-up bucket 分離 |
CONTROL_INGRESS_TOKEN_BUCKET_BYTES |
327_680 |
每 peer control raw byte burst 容量(單包上限 + 64 KiB) |
CONTROL_INGRESS_BYTE_REFILL_PER_SECOND |
262_144 |
control raw byte 持續補充率 |
CONTROL_WIRE_VIOLATION_LIMIT |
3 |
oversized/非 binary/畸形或 schema 不符累積到此值即關 link、標記 offline |
CONTROL_RACE_ID_MAX_BYTES |
256 |
key announce 的 raceId UTF-8 byte 上限 |
CONTROL_APP_TYPE_MAX_BYTES |
64 |
app payload discriminator 的 UTF-8 byte 上限 |
CONTROL_KEY_ANNOUNCES_MAX_PER_PEER |
8 |
每 peer 早到 key announce 保留筆數;配合固定 32/64-byte key/signature 與 raceId 上限形成總 byte 硬界 |
ROOM_INGRESS_TOKEN_BUCKET_MESSAGES |
64 |
每條 waiting-room control link 的一般訊息 burst 容量 |
ROOM_INGRESS_MESSAGE_REFILL_PER_SECOND |
32 |
room-control 一般訊息持續補充率 |
ROOM_INGRESS_TOKEN_BUCKET_BYTES |
327_680 |
room-control 在 decode 前的 raw byte burst 容量(256 KiB 單包上限 + 64 KiB) |
ROOM_INGRESS_BYTE_REFILL_PER_SECOND |
262_144 |
room-control raw byte 持續補充率 |
ROOM_EXPENSIVE_TOKEN_BUCKET_MESSAGES |
8 |
OPAQUE/join/state/簽章/grid/chat/match-start 等高成本 wire 的獨立 burst 容量 |
ROOM_EXPENSIVE_MESSAGE_REFILL_PER_SECOND |
4 |
高成本 room wire 的持續補充率 |
ROOM_INGRESS_CONSECUTIVE_DROP_CLOSE_THRESHOLD |
16 |
oversized、畸形或 quota overflow 連續達此數即關閉 link;成功分派會清除此連續計數 |
SPECTATOR_WIRE_MAX_BYTES |
262_144 |
source→viewer 非 checkpoint JSON 的 UTF-8 decode 前單包上限 |
SPECTATOR_REPLAY_WIRE_MAX_BYTES |
5_657_942 |
4 MiB SavedState 的 canonical base64url 加 metadata 裕度;只供 canonical checkpoint prefix |
SPECTATOR_CLIENT_WIRE_MAX_BYTES |
128 |
viewer→source exact mode-select 的 decode 前單包上限 |
SPECTATOR_SOURCE_INGRESS_TOKEN_BUCKET_MESSAGES |
120 |
source→viewer replay/fallback message burst;容許合法 60Hz replay |
SPECTATOR_SOURCE_INGRESS_MESSAGE_REFILL_PER_SECOND |
90 |
source→viewer 持續 message 補充率 |
SPECTATOR_SOURCE_INGRESS_TOKEN_BUCKET_BYTES |
6_706_518 |
一份最大 checkpoint 加 1 MiB late-join backlog 的 raw byte burst |
SPECTATOR_SOURCE_INGRESS_BYTE_REFILL_PER_SECOND |
4_194_304 |
source→viewer 持續 raw byte 補充率 |
SPECTATOR_CHECKPOINT_TOKEN_BUCKET_MESSAGES |
1 |
大型 checkpoint 在 UTF-8/JSON 前的獨立 burst |
SPECTATOR_CHECKPOINT_MESSAGE_REFILL_PER_SECOND |
0.2 |
大型 checkpoint 最快每 5 秒補一個 token |
SPECTATOR_VIEWER_INGRESS_TOKEN_BUCKET_MESSAGES |
8 |
viewer→source mode-select burst |
SPECTATOR_VIEWER_INGRESS_MESSAGE_REFILL_PER_SECOND |
4 |
viewer→source 持續 message 補充率 |
SPECTATOR_VIEWER_INGRESS_TOKEN_BUCKET_BYTES |
1_024 |
viewer→source raw byte burst |
SPECTATOR_VIEWER_INGRESS_BYTE_REFILL_PER_SECOND |
512 |
viewer→source 持續 raw byte 補充率 |
SPECTATOR_INGRESS_CONSECUTIVE_DROP_CLOSE_THRESHOLD |
16 |
任一方向 oversized、畸形或 quota overflow 連續達此數即關閉 spectator link |
SYNC_REQUEST_COOLDOWN_FRAMES |
120 |
同 peer 成功把完整 snapshot 交給 DataChannel 後 2 秒內不再服務;send false/throw 不啟動 cooldown,保留 pinned offer 供同 request 重試 |
CATCH_UP_OFFER_ALIGNMENT_FRAMES |
8 |
offer candidate 對齊間隔;最近兩個候選讓 current 相差最多 7 幀的 peers 仍可共享一個 aligned frame |
CATCH_UP_OFFER_CANDIDATES |
2 |
每個 requester offer 最多 pin 的 snapshot 數量 |
CATCH_UP_OFFER_TTL_FRAMES |
900 |
pinned offer TTL(15 秒 reconnect horizon) |
CATCH_UP_PROBE_TIMEOUT_FRAMES |
60 |
signed offer 遺失時的 probe timeout;逾時以相同 offerId重送,讓 responder 重用 pinned bytes/hash |
CATCH_UP_PROBE_RETRY_LIMIT |
2 |
每個 peer 在 t=60/120 以相同 offerId bounded 重送;t=180 才結束等待且不再送 |
CATCH_UP_PROBE_REPLACE_AFTER_FRAMES |
120 |
新且單調 requestId 最早可安全取代舊 attempt 的時間,恰與最後一次重送重合;更早的新 id 與所有 unordered 舊 id 均拒絕 |
CATCH_UP_REQUEST_TIMEOUT_FRAMES |
300 |
4 MiB snapshot 等待 5 秒;逾時先取消 transport pending,再切換下一 voter |
CATCH_UP_OFFER_MAX_ENTRIES |
8 |
responder 全域 pinned offer entry 上限;同 requester 同 offerId 冪等重送不重複 copy/hash |
CATCH_UP_OFFER_MAX_BYTES |
67_108_864 |
全域 pinned snapshot byte 硬上限(8 × 2 × 4 MiB);超額 fail-closed |
PEER_DESYNC_TOLERANCE_FRAMES |
30 |
checksum 等待容差(0.5 秒;逾窗未到 = 該輪缺席、不阻塞多數決) |
CATCH_UP_MAX_ADVANCE_FRAMES |
900 |
重連 catch-up 快照相對請求幀的最大前跳(15 秒 × 60Hz);超界回應丟棄,防簽章 peer 以巨幅未來幀凍結/跳過賽程 |
CHECKSUM_PAST_HORIZON_FRAMES |
150 |
已逾 checksum 週期 120 + 等待窗 30 的舊票丟棄,不得重建票倉 |
DESYNC_STRIKE_LIMIT |
3 |
連續 checksum mismatch 達此值 → persistent-desync(mismatch 不 rollback、僅累積) |
SPECTATOR_BROADCAST_INTERVAL_MS |
100 |
僅精簡 presentation fallback 的 state broadcast 10Hz;deterministic replay 不使用此節拍 |