跳轉到

Protocol

本頁是所列 namespace 的內容權威;程式參數 只提供導覽。

2. protocol/physics(物理引擎)

Body 預算帳(最壞情況):8 車 × 12(chassis 組合體 1 + tire 4 + roller 6 + weapon 主體 1)= 96;武器內部驅動體(剛體轉子 + 鏈段)8 × MAX_WEAPON_DRIVEN_BODIES(16)= 128;bullet(飛行中 + 落地留場障礙物,同一批)8 × LAUNCH_AMMO_COUNT_MAX(8)= 64;kinematic entity ≤ TRACK_ENTITY_COUNT_MAX(100)→ 388 ≤ 512(餘量 124;此為保守上界——每車僅 1 weapon、鏈條 128 與 bullet 64 per car 互斥不會同時滿載,實際更低)。碎片一律純視覺,不占 body;fixed / static(場地本體、未破壞 decoration)不計入。CI 不變式見 §19.2

常數 說明
GRAVITY_X1000 -9810 -9.81 m/s²(×1000 量化)
FIXED_FRAMERATE_HZ 60 固定 timestep
MAX_SUBSTEPS 4 fixed timestep loop 每 render tick 的追趕步數上限;不是 Rapier CCD substep
PHYSICS_HARD_CCD_ENABLED true 所有 gameplay dynamic body 的 hard CCD 固定開關;physics-version-pinned,禁止依當幀速度動態切換
PHYSICS_CCD_MAX_SUBSTEPS 2 Rapier 每 fixed step 的 CCD 解算 substep 上限(初估、待最大拓撲 benchmark/playtest 校準);只可經集中參數與 physics major 調整
PHYSICS_SOFT_CCD_PREDICTION_M 0 soft CCD 預測距離(m);0=初版停用。soft CCD 是提前建立預測約束,不替代 hard CCD,非零值須另有接觸提前容差與效能證據
PROJECTILE_EXIT_CLEARANCE_M 0.001 projectile 完整 convex support 越過 LaunchExit 平面後的額外離膛間隙(m;初值 1 mm);只過濾 projectile ↔ source weapon pair,離膛後永久恢復
SOLVER_VELOCITY_ITERATIONS 8 Rapier 0.19 TGS 單一迭代軸 numSolverIterations唯一 solver 迭代參數(初估;影響模擬結果 = protocol 級)
INTEGER_SCALE 1000 1mm 精度
MAX_RIGID_BODIES_PER_RACE 512 動態 + kinematic body 計入;fixed / static(場地本體、未破壞 decoration)不計;最壞情況帳見下註
CHASSIS_SOLVER_SAFETY_LIMITS { massMinGrams: 1, principalInertiaMinKgM2: 1e-9 } 最終烘焙 chassis 的 solver 安全地板;asset/loadout admission 與損毀後重算只引用此組。不得藉此限制材質種類或另訂直接體積下限,也不得補幽靈質量
K_AERO_DRAG 0.6 六軸相對氣流 drag 係數(synthetic 初值,待正式 body playtest)
K_AERO_LIFT 1 水平 drag 推導 lift/downforce 係數(synthetic 初值)
K_AERO_MAX_WEIGHT_MULTIPLIER 2 aero 總力上限為車重的倍數,避免極端合法幾何瞬間失控

3. protocol/ugc(UGC 規格約束)

常數 說明
UGC_CONTENT_PROFILE_ID 'open4wd-unixfs-1m-balanced-v1' client/pinning 共用的 canonical UnixFS profile id
UGC_CONTENT_ROOT_CODECS ['raw', 'dag-pb'] canonical root codec allowlist
UGC_CONTENT_MULTIHASH 'sha2-256' canonical內容 multihash
UGC_CHUNK_BYTES 1_048_576 UnixFS 固定 chunk 大小(1 MiB)
UGC_LOGICAL_MAX_BYTES 83_886_080 canonical UGC logical bytes 上限(80 MiB)
UGC_MAX_BLOCKS 81 80 個 data blocks + 1 root block
UGC_MAX_UNIXFS_LINKS 80 canonical root links 上限
UGC_MAX_DAG_BYTES 83_951_616 logical bytes 加 64 KiB DAG overhead 上限
ASSET_SCHEMA_VERSION_CURRENT (九種 asset current version 全為 1) per-type current schema object;完整 shape 由 pre-launch current authority gate 看守
VEHICLE_TOTAL_MASS_MIN_GRAMS 50 整車最小總質量
VEHICLE_TOTAL_MASS_MAX_GRAMS 500 整車最大總質量
VEHICLE_AABB_MAX_M [0.25, 0.13, 0.1] 整車 [長, 寬, 高] 上限(m);軸對應定死(runtime GLB 框架):長 = Z(車頭 = −Z)、寬 = X、高 = Y(重力反向),見 零件與共用介面.md §5 軸向速查
PART_MATERIAL_DENSITY_RATIO_MAX 50 單一零件內 最大/最小材質密度比(多材質零件;part-upload Stage 3 檢核)
VEHICLE_PART_MASS_RATIO_MAX 300 整車 最重/最輕零件質量比(loadout 組裝層檢核;依正式 canonical loadout 校準並保留設計餘裕)
PART_VERTEX_COUNT_MAX 100_000 單零件頂點上限
PART_TRIANGLE_COUNT_MAX 100_000 單零件三角形上限
PART_COLLIDER_PROXY_COUNT_MAX 32 單零件 deterministic convex collider proxy 上限
PART_COLLIDER_PROXY_POINT_MAX 26 每個 convex proxy 固定方向 support point 上限
PART_AABB_MIN_M [0.001, 0.001, 0.001] 單零件 AABB 下限(m)
PART_AABB_MAX_M [1, 1, 1] 單零件 AABB 上限(m;1m 立方)
PART_DEGENERATE_TRIANGLE_AREA_MIN_M2 0.00000001 退化三角形面積偵測閾值(m²)
TRACK_AABB_MAX_M [500, 500, 100] 場地 [長, 寬, 高] 上限(m;500×500 占地 × 100 m 高;高 = Y 軸 = 重力反向)
TRACK_GLB_SIZE_MAX_MB 80 MiB(80 × 1024² bytes;常數名沿用 _MB 場地 GLB 檔案大小上限(強制 Draco + KTX2,未壓縮 Stage 3 拒收)
TRACK_VISUAL_TRIANGLE_COUNT_MAX 3_000_000 場地 visual 三角形上限
TRACK_COLLIDER_TRIANGLE_COUNT_MAX 500_000 場地 collider 三角形上限
TRACK_COLLIDER_REGION_COUNT_MAX 256 場地依材質/來源節點拆分的 solid collider region 上限
TRACK_TEXTURE_BUDGET_1K_MAX 16 主場地貼圖預算(1024² 張數;與 4K 預算擇一)
TRACK_TEXTURE_BUDGET_4K_MAX 4 主場地貼圖預算(4096² 張數;與 1K 預算擇一)
TRACK_ENTITY_COUNT_MAX 100 場地 entity 總數上限
TRACK_DESTRUCTIBLE_ENTITY_COUNT_MAX 50 destructible entity 上限(進 savestate)
WEATHER_PATCH_COUNT_MAX 50 同場併存天氣 patch 上限
TRACK_MAX_PLAYERS_HARDCAP 8 場地能容納最大玩家數
ROUTEPOINT_SURFACE_TOLERANCE_M 0.005 RoutePoint position 貼 mesh 表面容差(m;Stage 3 檢核)
ROUTEPOINT_MIN_SPACING_M 0.1 相鄰 RoutePoint 最小中心距(m;< 此值視為重合、spline 段退化拒收;fixed + loop 的 RP1 ↔ RPn 除外,見 場地.md §8.2
LAP_MODE_LOOP_DISTANCE_M 1 RP1 ↔ RPn 中心距低於此值(m;且 route ≥ 3 點)→ lap_mode: loop場地.md §8.2
TRACK_CHECKPOINT_TRIGGER_MIN_M [0.1, 0.1, 1] 賽道 Checkpoint trigger box 最小 scale(m;empty local [x, y, z],z = 行進向深度、防高速穿隧)
TRACK_CHECKPOINT_TRIGGER_MAX_AABB_RATIO 0.1 賽道 Checkpoint trigger box 最大 scale = 場地 AABB 各軸 × 此值
START_GRID_SAFETY_MARGIN_M 0.05 玩家上限推導的起跑 safety margin(m;floor(RP1.width_m / (0.13 + 此值)),0.13 = 整車 AABB 寬上限)
START_GRID_CELL_WIDTH_M 0.18 可驗算起跑格中心距(m)=0.13m 整車 AABB 寬上限+0.05m safety margin;N 車需求寬度為 N × 此值
START_GRID_LIFT_M 0.05 起跑 root 沿 RP1 surface-frame up 的抬升量(m;集中參數,runtime 不寫死)
FINISH_GATE_PLANE_EPS_M / FINISH_GATE_LATERAL_EPS_M 0.001 / 0.001 chassis COM 正向 swept crossing 的終點平面前後容差/左右界線容差(m)
CHASSIS_MOUNT_TEMPLATES 單一 18-entry meter offset table 96mm 軸距 chassis mount 模板:canonical 9 個(Body×4/Battery/Tire×4)鎖定,custom 9 個(Motor/Chip/Roller×6/Weapon)是可編輯初始值;不按 chassis 外形分 type。機器權威:src/editor/import/part-import-policy.ts
MOUNT_AABB_WARN_M / MOUNT_AABB_REJECT_M 0.01 / 0.03 chassis mount 偏離 chassis AABB 的警告/拒收門檻(m);機器權威:src/editor/validation/part-rules.ts
MOUNT_GAP_REJECT_M / MOUNT_GAP_WARN_M 0.003 / 0.01 mount center 彼此距離的重疊拒收/近距警告門檻(m);機器權威:src/editor/validation/part-rules.ts
HINGE_AXIS_WARN_SIN / HINGE_AXIS_REJECT_SIN 0.5 / √3÷2 tire/roller hinge 軸偏離 chassis local X-Z 平面的 30° 警告/60° 拒收門檻,以 sin 值 deterministic 比較;機器權威:src/editor/validation/part-rules.ts
CHIP_SLOT_VOLUME_THRESHOLDS_M3 [0.0000015, 0.000003, 0.000006] chip volume_m3 → skill slot 數階梯,依序等同 1.5/3/6 cm³:< 0.0000015 → 1 槽、≥ 0.0000015 → 2、≥ 0.000003 → 3、≥ 0.000006 → 4(初估、待 playtest 校準;Stage 2 推導 + 編輯器升階提示用,見 零件與共用介面.md §3.6
NARROWEST_PATH_MARGIN_M 0.05 最窄路寬相容性檢查 margin(m;車輛 AABB.x + 此值 ≤ auto_narrowest_path_m,警告不阻擋;與起跑 margin 同值、不同用途)
MAX_WEAPON_DRIVEN_BODIES 16 一把武器剛體轉子 + 所有鏈段總數上限(body 預算帳,見 §2 註;單鏈是其特例)
MAX_WEAPON_DRIVEN_PIVOTS 8 一把武器 weapon_actuators[] 獨立驅動 pivot 數上限(剛體轉子 + 鏈條基座一起算)
LAUNCH_AMMO_COUNT_MAX 8 launch 武器 bullet 子節點數上限(body 預算帳,見 §2 註)
VORONOI_FRAGMENT_COUNT_MAX 8 per object(零件 / destructible entity)Voronoi 碎片烘焙上限
WIND_SPEED_MPS_MAX 30 weather.wind_speed_mps 上限
MAGNET_SOURCE_STRENGTH_N_MAX 10 magnet_source_strength_n 上限(零件 / entity 共用)
KINEMATIC_PERIOD_MS_MIN 500 kinematic_move 週期下限(防 sub-frame 瞬移牆;初估、待 playtest
KINEMATIC_AMPLITUDE_M_MAX 20 kinematic_move 位移向量長度上限(m;初估、待 playtest
CONVEYOR_VELOCITY_M_S_MAX 10 conveyor 表面速度絕對值上限(負值反向;初估、待 playtest
FORK_SIMILARITY_THRESHOLD_PERCENT 10 修改幅度 < 10% 拒絕上傳
DEPRECATED_TO_UNUSABLE_THRESHOLD 3 per-type;鏈上「不同創作者」的升級件數達此值,動態最低支援版抬升、該版以下轉 unusable(數不同創作者非 CID,防 griefing)

4. protocol/security(安全)

常數 說明
SANITIZE_TIMEOUT_MS 5000 UGC sanitize Web Worker 上限
SANITIZE_WORKER_VERSION 'v1' JSON chunk/結構 admission schema;live 後 bump 即升 protocol
SANITIZE_JSON_CHUNK_MAX_BYTES 16_777_216 GLB JSON chunk 在 TextDecoderJSON.parse 前的 16 MiB 硬上限
SANITIZE_DOCUMENT_MAX_ENTRIES 250_000 GLB JSON 全文件可遍歷 entries 總上限
SANITIZE_DOCUMENT_MAX_DEPTH 64 GLB JSON 文件巢狀深度上限
SANITIZE_GLTF_COLLECTION_MAX nodes 50_000;meshes 10_000;accessors/bufferViews 100_000;buffers/scenes 64;images/textures/samplers/materials/skins/cameras 4096;animations 1024;extensions 128 glTF 主要 collection 的逐類硬上限
SANITIZE_GLTF_PRIMITIVES_MAX 50_000 全 meshes primitive 總上限
SOURCE_TEXTURE_EDGE_MAX_PX 8192 首次 admission 的 encoded source image 最大邊;合法來源可在 Stage 3 等比降採樣,不得提前套用 canonical 成品上限
CANONICAL_TEXTURE_EDGE_MAX_PX 4096 Stage 3 finalizer 轉換、壓縮並重驗後的 canonical 成品最大邊
SANITIZE_DECODED_GEOMETRY_MAX_BYTES 83_886_080 accessor/index 在建立 typed array 前共用 reservation 的 decoded 幾何 byte 上限(80 MiB);重疊 bufferView storage slice 只計一次,獨立 index 配置逐筆計入
SANITIZE_DECODED_GEOMETRY_MAX_ELEMENTS 20_971_520 decoded 幾何元素的第二道硬上限(byte 上限 / 4),避免大量極小 component 放大配置/迴圈成本
SANITIZE_EXTRAS_MAX_BYTES 16_777_216 GLB extras(自訂 metadata JSON)總量上限(16 MiB;非 GLB 檔案大小——檔案天花板 = §3 TRACK_GLB_SIZE_MAX_MB)。防 junk-JSON 灌爆的絕對天花板、非設計預算——場地 extras 合法可大(route[] 間距下限 100mm、長賽道可累積數萬節點名 + ≤100 entity extras,極端估 5–10 MiB);初估程式架構/security.md §1.2
SANITIZE_EXTRAS_MAX_DEPTH 8 GLB extras 巢狀深度上限(初估
ED25519_PUBLIC_KEY_BYTES 32
ED25519_SIGNATURE_BYTES 64
P2P_MESSAGE_TIMESTAMP_TOLERANCE_SEC 30
P2P_MESSAGE_NONCE_BYTES 16
P2P_MESSAGE_SIGNER_MAX_CHARS 256 簽章 envelope signer 字串長度上限
P2P_NONCE_SET_MAX_ENTRIES 8192 通用 NonceSet 單實例硬上限;GossipSub 不使用全域單例,改採 §10 每 authenticated source 64 nonce
TEXT_BLACKLIST_VERSION 'v1' DMCA 上傳 pre-check 與可選聊天 starter list 共用的條目格式版本;DMCA 逐筆支援 exact / substring / regex,聊天固定 normalized literal substring,沒有全域 mode;兩者資料皆隨 client minor 出貨、不 gate 配對,玩家聊天本機副本不隨版本覆寫(版權.md §7程式架構/chat-system.md §7

5. protocol/ledger(鏈與多簽)

常數 說明
CONSENSUS_ANCHOR_FALLBACK_SLOT_MS 2_000 回合終局 anchor proposer 逾時後,依 original roster 穩定順序切換下一位的 slot
CONSENSUS_ANCHOR_COLLECTION_TIMEOUT_MS 12_000 每回合唯一證書 bounded 收集總窗;到期未達嚴格多數則 MatchResultEvent.roundAnchors[roundIndex] 為 null、禁止鑄幣,不做單簽 fallback
LEDGER_DB_ADDRESS (build 注入) 官方 ledger OrbitDB 位址=鏈身分;exact shape 為 /orbitdb/<CIDv1-base58btc>,禁止尾接 /open4wd-ledger 或其他 segment(manifest CID、純內容派生不含域名——部署資訊.md §8.3 CI 不變式);換位址=鏈重生;空值只允許 development 或明確 genesis 指令以固定名稱 open4wd-ledger 建庫,private/public client 缺值必須拒絕啟動
LEDGER_EVENT_MAX_BYTES / LEDGER_EVENT_MAX_DEPTH / LEDGER_EVENT_MAX_ENTRIES 65_536 / 16 / 2_048 custom access-controller 在 OrbitDB persistence 前的 deterministic event admission
LEDGER_EVENT_TYPES 20 項 persistence allowlist;另有未啟用 asset-version-upgrade 保留案不在此集合。unknown 與保留案在啟用前拒絕;新增事件須同步 deep schema/簽章驗證/pinning vendor/本表
LEDGER_ADMISSION_VERSION 1 所有 20 種永久 Orbit entry 的頂層 proof scheme;event schema 本身不含 admission
LEDGER_ADMISSION_BASE_BITS / LEDGER_ADMISSION_SIZE_UNIT_BYTES / LEDGER_ADMISSION_MAX_EXTRA_BITS 18 / 4,096 / 4 requiredBits = 18 + min(4, ceil(log2(max(1, ceil(baseEntryBytes/4096)))));完整已簽 BaseEntry 納入大小,固定 18–22 bits
LEDGER_ADMISSION_NONCE_BYTES 8 workNonce 固定 unsigned big-endian 8 bytes;proof 綁定 canonical BaseEntry digest
LEDGER_ADMISSION_WORK_TIMEOUT_MS / LEDGER_ADMISSION_INTENT_QUEUE_MAX 30,000 / 8 單一身分一次一筆 Worker mining;FIFO pending intent 硬上限,timeout 不降難度、不 seal
LEDGER_ADMISSION_OUTBOX_MAX_ENTRIES / LEDGER_ADMISSION_OUTBOX_MAX_BYTES 32 / 2,097,152 durable sealed final-entry outbox 雙硬上限;滿載 fail-closed,不淘汰舊 entry
LEDGER_ENTRY_BLOCK_MAX_BYTES 262_144 Orbit entry block 與 remote sync head 單筆 decode 前硬上限
LEDGER_BLOCKSTORE_MAX_BYTES / LEDGER_BLOCKSTORE_MAX_ENTRIES 134_217_728 / 10_000 本機 ledger entry blockstore 硬 quota;只淘汰 checkpoint-covered block,無安全 victim 時 fail-closed
LEDGER_TRAVERSAL_MAX_BYTES / LEDGER_TRAVERSAL_MAX_ENTRIES 67_108_864 / 2_048 單一 remote head 沿 next 因果鏈 join 的 aggregate quota
LEDGER_ENTRY_MAX_NEXT_LINKS / LEDGER_ENTRY_MAX_REFERENCE_LINKS 64 / 128 entry link shape 上限;refs 僅驗證、不 traversal,不能繞 checkpoint boundary
LEDGER_SYNC_PEER_WINDOW_MS 60_000 Orbit sync authenticated libp2p source 固定窗口
LEDGER_SYNC_PEER_MAX_BYTES_PER_WINDOW 1_048_576 每 source 每窗口 raw head aggregate bytes
LEDGER_SYNC_PEER_MAX_MESSAGES_PER_WINDOW 256 每 source 每窗口 raw head 訊息數,阻擋極小畸形包 decode CPU 放大
LEDGER_SYNC_PEER_STATES_MAX 4096 sync source budget 狀態硬上限,LRU 淘汰
LEDGER_SYNC_GLOBAL_MAX_BYTES_PER_WINDOW / LEDGER_SYNC_GLOBAL_MAX_MESSAGES_PER_WINDOW 16,777,216 / 4,096 Orbit sync 全來源 aggregate 固定窗口;不隨 source LRU churn 重置
LEDGER_SYNC_QUEUE_MAX_BYTES / LEDGER_SYNC_QUEUE_MAX_MESSAGES 4,194,304 / 64 listener/stream 收到 raw bytes 時同步 reserve;滿額不把 payload 捕獲進 Promise queue
LEDGER_SYNC_HEAD_STREAM_MAX / LEDGER_SYNC_ENTRY_FETCH_STREAM_MAX 16 / 32 bounded sync 同時處理的 head/entry-fetch stream pool;超額排隊受 queue cap
LEDGER_SYNC_STREAM_TIMEOUT_MS 30_000 head/entry-fetch stream deadline;timeout 必 abort/close 並釋放 pool
LEDGER_HEADS_VALUE_MAX_BYTES / LEDGER_HEADS_MAX 65,536 / 64 heads metadata 在 JSON parse 前的 byte cap 與解析後 head count cap
LEDGER_CHECKPOINT_MAX_BYTES / LEDGER_CHECKPOINT_MAX_SIGNATURES 32,768 / 64 checkpoint v1 block decode 前上限;log_head_cids 與簽章數/治理 signer set 均最多 64
LEDGER_CHECKPOINT_CONFLICT_MAX_BYTES 16,384 durable sibling-equivocation evidence canonical CBOR 上限
LEDGER_SIGNER_SET_MAX_BYTES / LEDGER_DERIVED_STATE_MAX_BYTES 16,384 / 16,777,216 signer-set/derived-state content block per-call fetch 上限;exact CID+canonical decode-reencode
LEDGER_COLD_PARTITION_MAX_BYTES / LEDGER_CONTENT_BLOCK_MAX_BYTES 8,388,608 / 67,108,864 cold partition per-call cap/所有 ledger content block put/get 絕對上限
CHECKPOINT_ADOPTION_MAX_PENDING / CHECKPOINT_ADOPTION_MAX_PENDING_BYTES 64 / 262,144 遠端 checkpoint adoption pending+active 數與 pending bytes;獨立於 fold queue
CHECKPOINT_ADOPTION_MAX_MESSAGE_BYTES / CHECKPOINT_ADOPTION_MAX_CONCURRENCY 8,192 / 2 單 announcement 記帳上限/同時完整驗證數
CHECKPOINT_ADOPTION_MAX_RETRIES / CHECKPOINT_ADOPTION_NEGATIVE_CACHE_MAX 1 / 256 unavailable 只重試一次;僅 checkpoint block 本身 exact CID/canonical/shape 等 intrinsic-invalid 可進 bounded negative LRU。timeout、不可得、wrapper/context 不符、retry 耗盡都不得永久快取
STARTUP_CHECKPOINT_SCAN_TIMEOUT_MS 30,000 啟動 durable announcement 掃描的前景等待上限;queue 滿時 backpressure、不得丟棄,逾時後背景續掃至完成
ARBITRATION_PANEL_SIZE 7 每案隨機抽選仲裁者數(合格池 < 7 → 流局;人數依據見 流程/檢舉與仲裁.md §4.2
ARBITRATION_QUORUM_VOTES 4 成案所需有效票(pass + reject,棄權不計)
ARBITRATION_PASS_THRESHOLD_PCT 60 加權 pass 必須嚴格大於 60%;恰 60% 仍 reject,使用整數交叉相乘
ARBITRATION_REDRAW_MAX 1 有效票不足時重抽次數上限;仍不足 → 流局
ARBITRATION_DRAW_DELAY_HOURS 24 抽籤點 = 檢舉後首個滿此時數的帳本檢查點;亦為撤回窗邊界
ARBITRATION_VOTE_WINDOW_HOURS 72 投票期;期滿判定 = 抽籤點起首個滿此時數的帳本檢查點(重抽輪自重抽檢查點重新起算;待 playtest 校準,程式架構/moderation.md §5.3
ARBITRATION_WEIGHT_X100_TABLE 預算表 round(100 × log10(rep + 10))、離線一次性生成隨 client 出貨;共識計算禁浮點 log10(算式表.md §17
REPORT_EXPIRE_DAYS 90 檢舉未結案自動過期(純 derive,程式架構/moderation.md §3
REPORT_OPEN_MAX_PER_REPORTER 3 每檢舉者同時開放案上限(表單層拒收,防仲裁注意力洪水;結案 / 撤回 / 流局 / 過期即釋放額度,程式架構/moderation.md §4
UPLOAD_PENDING_MAX_PER_UPLOADER 3 每上傳者同時 similarity-pending(灰區待審)上限——超限僅可 fork / 取消(防灰區量產燒仲裁注意力,與 REPORT_OPEN_MAX_PER_REPORTER 同構,程式架構/anti-piracy.md §5.1
UPLOAD_PENDING_SUSPEND_STRIKES 3 安全港次數閘:rolling 窗內上傳期判抄達此數 → pending 通道暫停(斷「鹽化」變體鏈;純 derive、不動信譽、< 70% 原創上傳不受影響,程式架構/anti-piracy.md §5.1
UPLOAD_PENDING_SUSPEND_DAYS 30 上述 rolling 窗 = 暫停時長
GLOBAL_PEER_BLACKLIST_STRIKES 3 三振:同一責任人仲裁定罪達此數 → 全域玩家黑名單(純 derive,程式架構/moderation.md §5.5
REPUTATION_MATCH_GAIN_DAILY_MAX 10 比賽來源加分(完賽 +1 + 連勝 +5 合計)rolling 24h 上限(逐筆檢查、超額不發;扣分不設上限;防合謀完賽農場,待 playtest 校準,信譽系統.md §2.2
REPUTATION_INITIAL / REPUTATION_MIN / REPUTATION_MAX 500 / 0 / 1000 信譽 clamp 模型(算式表.md §16protocol 常數、非治理 config——改值=全史分數重算,§17.3 治理可調鐵則)
NEWCOMER_PROTECTION_DAYS 7 新手保護期(唯一條款:信譽下限保護,信譽系統.md §4.1;protocol 常數——getEffectiveScore 烘進評分權重等累積 derive)
NEWCOMER_REPUTATION_FLOOR 400 保護期內信譽下限(同上)
MALICIOUS_REPORTER_ACCURACY_MAX_PCT 30 惡意檢舉判定:lifetime 通過率低於此值(pct 整數、整數交叉相乘評估,信譽系統.md §4.3
MALICIOUS_REPORTER_SAMPLE_MIN 10 惡意檢舉判定:已結案樣本下限
MALICIOUS_REPORTER_COOLDOWN_DAYS 30 惡意檢舉判定:前科保護 rolling 窗(lastMaliciousReporterAt 索引,程式架構/reputation.md §5.3
REPEAT_INFRINGER_THRESHOLD 3 pinning DMCA repeat-infringer 封鎖門檻;外部 owner open-4wd-pinning/dmca,主 corpus 各處只引用此名
RATING_NEUTRAL_X100 300 少量評分 Bayesian prior 的中性 3.00
BAYESIAN_PRIOR_SAMPLES 5 少於 5 票時的 prior 樣本數
MATCH_HISTORY_DEFAULT_PAGE_SIZE 20 玩家賽事歷史預設單頁筆數
MATCH_HISTORY_MAX_PAGE_SIZE 50 玩家賽事歷史單頁 API 上限
MATCH_HISTORY_MAX_PARTITIONS_PER_PAGE 4 單次請求最多延遲載入的 cold quarter 數
CHECKPOINT_PROPOSAL_EXPIRY_MS 1_800_000 checkpoint proposal 30 分鐘 expiry
LEDGER_CHECKPOINT_INTERVAL_HOURS 24 帳本檢查點提案間隔(signer 本地時鐘觸發、距上一檢查點未滿間隔的提案拒簽;仲裁抽籤 / 期滿掛在檢查點節奏上,程式架構/ledger-checkpoint.md §3
ECONOMY_MONTHLY_FLOW_RETENTION_MONTHS 12 月流水衍生投影保留當月含前 11 個 UTC 月;累積型 derive 的 protocol 常數、非治理 config(程式架構/economy.md §6
ROOM_PINNED_CHECKPOINT_MAX_AGE_HOURS 72 開房 pin 的帳本檢查點 staleness 上限(初估isPinnedCheckpointFresh 拒絕過舊 pin、host 須先 sync——防惡意 host pin 遠古檢查點讓 unusable 資產復活,版本規範.md §20

6. protocol/matchmaking(配對)

常數 說明
PLAYERS_PER_RACE_MAX 8 FFA 最多 8 人
PLAYERS_PER_RACE_MIN 2
START_GRID_NONCE_BYTES 32 每位 participant commitment/reveal nonce 固定長度
START_GRID_CEREMONY_PHASE_TIMEOUT_MS 15000 commitment 與 reveal 各自的有界逾時;逾時 fail closed 並列出缺席 PeerId
READY_COUNTDOWN_SEC 5 ReadySet 全驗證完成後、進入 preloading 前的玩家反悔倒數
QUICK_MATCH_TIMEOUT_MS 120_000 quick match discovery 等待既有公開房出現的 client policy 上限
SPECTATOR_DEFAULT_MAX 20 建房預設觀戰容量
SPECTATOR_MAX 50 房間可設定的觀戰者硬上限
TRUESKILL_MU_INITIAL_X1000 25000 TrueSkill 初始平均值(μ=X1000 整數定點,算式表.md §20
TRUESKILL_SIGMA_INITIAL_X1000 8333 TrueSkill 初始標準差(X1000)
MATCH_RATING_WINDOW_INITIAL 5 初始 rating 配對窗口(displayRating ÷ 1000 整數分域)
MATCH_RATING_WINDOW_GROWTH_PER_10SEC 5 每 10 秒 +5 擴張
MATCH_RATING_WINDOW_MAX 30 上限(見 賽內機制.md §1.2 / 程式架構/matchmaking.md
TRUESKILL_SIGMA_MIN_X1000 6000 頻繁斷線者 σ 不收斂下限(X1000;流程/比賽進行.md §12.3
FREQUENT_DISCONNECT_THRESHOLD 5 累積斷線次數達此值壓 σ 權重
TRUESKILL_BETA_X1000 4166 β = 25/6 ≈ 4.166(初估)
TRUESKILL_TAU_X10000 833 τ = 25/300 ≈ 0.0833(初估;尺度 X10000、公式使用處明確換算)
TRUESKILL_V_TABLE_X1000 (1201 筆、離線生成) v(t) 整數查表(t clamp ±TRUESKILL_VW_T_CLAMP_X1000、步長 TRUESKILL_VW_T_STEP_X1000、不插值);浮點 erf 禁入共識的查表替代——同仲裁權重表模式、隨 client 出貨(算式表.md §20
TRUESKILL_W_TABLE_X1000 (1201 筆、離線生成) w(t) 整數查表(同上)
TRUESKILL_VW_T_CLAMP_X1000 6000 查表 t 值 clamp 界(±6=X1000 尺度 ±6000)
TRUESKILL_VW_T_STEP_X1000 10 查表步長(= 0.01)

FFA 不平手 =draw margin 0,無平手機率常數;rating 屬共識 derive,整數定點權威見 算式表.md §20

7. protocol/gameplay(比賽)

常數 說明
MATCH_ROUND_COUNT_DEFAULT 3 一場比賽回合數,房間設定預設
MATCH_ROUND_COUNT_MIN 1 房間可設下限
MATCH_ROUND_COUNT_MAX 5 房間可設上限(暫定、待 playtest
RACE_DURATION_DEFAULT_SEC 600 房間設定預設(10 分;per 回合
RACE_DURATION_MIN_SEC 60 房間可設下限
RACE_DURATION_MAX_SEC 1800 房間可設上限(30 分;clamp 天花板)
RECONNECT_TIMEOUT_MS 15_000 斷線重連等待窗(逾時視為異常斷線)
LOADOUT_SUBMIT_WINDOW_SEC 60 賽前 loadout 提交收集窗(preloading;窗內收件即驗、絕對 deadline 到即定案,timer 只喚醒、回前景立即重評;無獨立互驗窗;未提交=absent 落 disconnects、無參與證明不罰;初估、待 playtest流程/比賽進行.md §1.1
SETTLEMENT_TIMEOUT_SEC 30 賽後結算簽章收集總超時;達不到視為失敗、本場無經濟結算(consensus-critical 結算協議時序,流程/比賽結算.md §8.2
SETTLEMENT_TAKEOVER_WAIT_SEC 5 主 peer 掉線後接手等候窗,蒐集合法 takeover、選 PeerId 最小者為新主
RACE_LAP_COUNT_DEFAULT 3 房間設定預設(僅 lap_mode: loopper 回合
RACE_LAP_COUNT_MIN 1
RACE_LAP_COUNT_MAX 10
STARTUP_COUNTDOWN_SEC 3
STARTUP_COUNTDOWN_TICK_MS 1000 正式賽前倒數相鄰數字的單調時鐘間隔;屬 race/gameplay 行為,不是視覺動畫時長
RACE_READY_STALL_TIMEOUT_MS 30_000 GO 前 race-ready 屏障無嚴格 milestone 進度的絕對 deadline;timer 只喚醒、回前景立即重評,重送/倒退不重置,逾時取消且不產生結算或懲罰(流程/比賽進行.md §1.7
LAUNCH_FIRE_INTERVAL_MS 250 launch 武器 Hold 連發間隔(每 interval 依子節點序發 1 顆、打完即空;下一回合換新車即滿彈;初估、待 playtest
ROUND_ENDGAME_MAX_FRAMES 120 場上已無未完賽存活車後,單一回合級失能滑行窗上限(2 秒;初估、待 playtest
ROUND_ENDGAME_SETTLED_FRAMES 15 所有未完賽失能車同時低速時,提早結束所需連續幀數(0.25 秒;初估、待 playtest
ROUND_DISABLED_LINEAR_SPEED_MAX_MPS 0.05 失能車低速判定的 chassis 線速度嚴格上限(初估、待 playtest
ROUND_DISABLED_ANGULAR_SPEED_MAX_RAD_S 0.1 失能車低速判定的 chassis 角速度嚴格上限(初估、待 playtest

比賽 / 回合 / race 三層:一場比賽(match)MATCH_ROUND_COUNT回合(round),每回合各自一軌、一份圈數(RACE_LAP_COUNT_*)、一份賽程時間上限(RACE_DURATION_*)—— 故圈數 / 時限為 per 回合 房間設定。RACE_* / PER_RACE 常數界定「回合內即時 race(physics / netcode)」,沿用 race 命名;比賽層結算 / 帳本見 賽內機制.md §1.5 / §3程式架構/ledger-settlement.md §5