跳轉到

零件與場景

本檔角色:8 類零件 + 3 類場景 entity 的定位、必填、特殊規則。 詳細物理算式見 算式表.md;GLB 欄位見 建模參數.md;材質見 材質表.md;組裝規則見 車輛組裝.md

1. 零件 8 類總表

類別 必要 數量 必裝晶片 主要用途
chassis 1 底盤;承載所有 mount
body 1 車殼;空氣動力 + 視覺
tire 4(固定不放寬) 抓地 / 滾動
motor 1 駕駛動力;扭力 vs 速度由 torque_ratio 決定
battery 1 供能;駕駛 + 技能 + 武器全部從此扣電
roller 0–6 過彎導輪;可選 6 位置
chip(晶片) 0–1 技能模組;不裝 = 純物理車(無技能、無武器)
weapon 0–1 武器;passive / active 皆需晶片才能裝

整車約束:數值與檢核語意只由 零件與共用介面.md §7.1 定義。

物理退役:只有 chassis broken 會令整車 physicsRetired 並自動切觀戰。batterymotor broken 只停止供能/驅動,車體仍以慣性、環境力或碰撞繼續物理並可合法通過終點;其餘零件只失去自身功能。

2. chassis(底盤)

承載 18 個 Mount(9 canonical 固定 + 9 自訂位置)。

2.1 Mount 配置

類別 位置 玩家編輯
Body × 4(F / RL / RC / RR) canonical 固定 🔒
Battery × 1 canonical 固定 🔒
Tire × 4(FL / FR / RL / RR) canonical 固定 🔒
Motor × 1 自訂 ✏️ Stage 2 拖放
Chip × 1 自訂 ✏️ Stage 2 拖放
Roller × 6(FL / FR / CL / CR / RL / RR) 自訂 ✏️ Stage 2 拖放
Weapon × 1 自訂 ✏️ Stage 2 拖放

Canonical 位置採單一 96mm 軸距 mount 模板,不依 chassis 外形分成標準/寬軌/短軸距類型;canonical 9 個鎖定、custom 9 個只提供初始 offset 並可依規則編輯。完整權威見 零件與共用介面.md §6protocol.md §3 CHASSIS_MOUNT_TEMPLATES

2.2 設計含意

  • body 4 接點(F + RL/RC/RR)用戶明確指定,不對稱的物理意義由 chassis 創作者自行處理
  • 馬達 / 晶片位置由 chassis 創作者決定(影響重心 / 散熱對外環境)
  • 全車最多 1 個 weapon Mount,但武器零件內部可建模複合 mesh 做多部位武器

3. body(車殼)

  • 4 個 part-side mount(Mount_Body_F / _RL / _RC / _RR)必須與 chassis canonical 嚴格相符
  • 主要影響:六軸迎風面積/各向壓力中心與 lift factor 的相對氣流空氣動力 + 視覺
  • 不參與駕駛動力傳遞

4. tire(輪胎)

  • part-side 通用名 Mount_Tire,由前綴匹配對應 chassis 4 個 Mount_Tire_FL/FR/RL/RR
  • 與 chassis mount 軸建立 Revolute hinge constraint(auto_hinge: true
  • 4 個必填,不開放放寬(無三輪車 / 缺輪設計)
  • 摩擦磨耗(算式表.md §9):相對環境至熱限的比例以 1 + K_TIRE_THERMAL_WEAR_MAX × r² 放大,合法範圍 1→3;積分後超過熱限會 broken
  • 與 solid surface 依實際 normal impulse 導熱,實際 tangential impulse × slip speed 形成滑移熱;HUD 只顯示全車最熱 tire 的環境相對狀態
  • broken 後該輪 collider、獨立 body 與 Revolute 退出物理;主車體在幀末依其餘完好零件的 canonical 有效質量重算質量、local COM 與慣量,線速度與角速度保持不變。驅動份額不重分配,視覺碎片由 manifest 描述重建但不生成物理 body
  • 軸向檢核:HINGE_AXIS_REJECT_SIN 拒收、HINGE_AXIS_WARN_SIN 起軟警告;值見 protocol.md §3

5. motor(馬達)

  • 玩家宣告 torque_ratio: 0–100%(拆分扭力 vs 速度)
  • auto_input_mw = round(volume_m3 × K_MOTOR_INPUT_W_M3 × 1000)(80,000,000 W/m³;系統算)
  • 駕駛功率:drive_input_mw = min(motor.auto_input_mw, battery.available_output_mw)available_output_mw 隨 SOC 全域線性下降,見 算式表.md §2
  • 武器/技能不過 motor;motor 僅供駕駛
  • 駕駛發熱:heat_power_w = K_MOTOR_HEAT × actual_power_w,進單一能量 ledger
  • 過熱直接 broken(無 graceful degradation)

6. battery(電池)

  • 玩家宣告 configured_output_w ≤ volume_m3 × K_BATTERY_OUTPUT_W_M3(80,000,000 W/m³)
  • auto_energy_capacity_mj = round(volume_m3 × K_BATTERY_ENERGY_MJ_M3)(90,000,000,000,000 mJ/m³)
  • 駕駛耗電:固定 60Hz 下實際供應 P mW 一幀扣 P1/60 mJ quantum;到極速、失去牽引或卡牆仍照實際供應扣除
  • 技能 / 武器耗電:依 skill_power_budget_mw × cost_frames 從同一 quantum 帳結算;餘量不足同比例縮放,禁止透支
  • 駕駛連帶發熱:K_BATTERY_PASSIVE × actual_supply_power_w(W)
  • 技能連帶發熱:battery_cost_j × K_BATTERY_SKILL_WASTE_HEAT(J)

7. roller(導輪)

  • 可選 0–6 個
  • part-side 通用名 Mount_Roller,前綴匹配 chassis 6 個位置
  • 與輪胎類似 hinge constraint;同樣接入 solid surface 導熱與滑移熱,但不套 tire fatigue 溫度倍率
  • broken 後 collider、獨立 body 與 joint 退出物理,剩餘主車體於同一幀末交易重算質量屬性;碎片純視覺
  • 軸向檢核同 tire,使用相同 hinge 具名門檻

8. chip(晶片)

顯示文字統一稱「晶片」;技術識別符用 chip / Chip

8.1 Slot 數量

由 chip volume_m3 算出,1–4 個(玩家不可宣告 slot 數);階梯門檻 CHIP_SLOT_VOLUME_THRESHOLDS_M3(初估 [0.0000015, 0.000003, 0.000006] m³,等同 [1.5, 3, 6] cm³;protocol.md §3)。

8.2 Skill Slot 結構

"skill_slots": [
  { "skill": "boost",          "allocation_pct": 40 },
  { "skill": "brake",          "allocation_pct": 10 },
  { "skill": "weapon", "allocation_pct": 50 }
]
  • skill_slots[] 長度 ≤ auto slot 數
  • 內容禁止重複(除非全部空著)
  • 上傳時玩家選定 skill + allocation_pct(bake 進 chip extras,上鏈後全部 immutable
  • 每 slot allocation_pct: 1–100,全 chip 總和 ≤ 100
  • 組裝階段不調整任何參數,純粹組合零件(車輛組裝.md

8.3 Skill Enum(8 種)

詳見 遊戲機制.md § 技能boost / brake / swerve_left / swerve_right / jump / slam / stabilize / weapon

8.4 過熱破壞

  • per-chip thermalLimitC(由 current PhysicsManifest hydrate;pre-bake 取多材質 weakest non-null sub-mesh)
  • 觸發熱能:battery_cost_j × K_CHIP_SKILL_WASTE_HEAT(J)進 ledger,禁止直接加溫
  • 殺手鐧:投影溫度跨過 thermalLimitC 時該次仍以正常強度執行,統一熱解算後 broken
  • broken 後所有技能立即失效但能基本駕駛;HUD/輸入/音效消費同一份每幀權威 skillDisableReasons 投影,停用邊沿立即釋放 hold 並清除 active,不另存可漂移 latch

9. weapon(武器)

9.1 通用規則

  • 全車最多 1 個(不分 passive / active)
  • 裝任何武器都需晶片:晶片缺席 = 武器自動失效;不用 runtime 額外判斷
  • passive 武器(純物理)占 chassis Mount_Weapon slot,並占一個 chip weapon(同 active;設定如此):差別僅在 passive 常駐物理生效、不主動觸發
  • active 武器占 chip weapon 槽,由該槽主動觸發
  • passive 占用的 weaponallocation_pct被動武器加持的外層總量(schema 同 active 1–100、計入全 chip 總和 ≤ 100):runtime 不消耗電池能量(純物理動能來自碰撞),此值改作加持係數;僅 active 武器以 allocation_pct 計算 applied_energy

被動武器加持(補償「不耗能、不可主動操控」的取捨價值;公式權威 算式表.md §3):

  • 三因子 =allocation_pct(chip 上鏈鎖死)× passive_weight_split_pct組裝層分配 0–100,車輛組裝.md §3.5)× K_PASSIVE_EFFECT_MAX_PCT(30、初估待 playtest)
  • 兩效果同預算競爭:重量減輕(撞角流——更輕快、但撞擊動量自然變小)vs 損壞抗性含耐熱(裝甲流——fatigue 與武器自身 burn 正熱量打折、freeze 負熱量不打折、thermal_limit 不變、但維持重量)
  • 僅及 passive 武器零件自身:chip / motor / battery 熱模型與其他零件耐久零改動(chip 閾值殺手鐧不稀釋);抗性只改自身承受、不改對外輸出(熔岩刃塗層等攻擊性材質照舊)
  • 靜態係數:組裝 / 實例化時套用、非 runtime 變動;整車質量以加持後有效質量檢核,界限見 零件與共用介面.md §7.1

9.2 機制設定(active)

GLB extras(扁平化,無容器):weapon_mechanism / weapon_main_mesh_node / weapon_actuators[]general 多驅動單元、每項含 weapon_max_angle_deg 等,見 零件與共用介面.md §3.7)。

weapon_mechanism weapon_main_mesh_node 解釋 必要欄位
general 不轉本體 / 基座(actuator 掛其上) Axis empty 必填;weapon_actuators[] 有項 = general_actuated(每項一個 Pivot + 剛體 / 鏈條 payload、各需 weapon_max_angle_deg),無項 = general_push
magnet 磁場原點(mesh 中心) Axis empty 必填(決定 N 極方向);強度由 battery.available_output_w × allocation_pct / 100 動態決定(磁力公式見 算式表.md §5
launch launcher_body;子彈 = weapon_main_mesh_node 子節點 mesh(≤ 8 顆、Hold 每 250ms 連發 1 顆、打完即空、下一回合新車即滿彈;零件與共用介面.md §3.7.3 Axis empty 必填(決定發射方向)

Axis / Pivot empty node 命名見 零件與共用介面.md §5.2

9.3 武器反作用力

詳見 算式表.md §4reaction_impulse = -action_direction × applied_energy × K_REACTION,加到 chassis 質心。magnet 不需此函數(Rapier 物理自然處理)。

9.4 part-side Mount_Weapon 編輯權限

weapon 外觀無法預知(揮鎚 / 刺槍 / 磁鐵盤 / 發射筒),因此 part-side Mount_Weapon 位置 玩家可在 Stage 2 拖放;其他 part-side mount 不可改。

9.5 鏈條 / 鞭 / 雙節

獨立機制:Chain_Segment_1...Chain_Segment_N全武器剛體轉子 + 鏈段總數 ≤ MAX_WEAPON_DRIVEN_BODIES 16protocol.md §3);convert script 自動建立相鄰 segment 的 Revolute / Spherical joint。

10. 場景 Entity 3 類

Entity = 場地 GLB 內帶 entity_type extras 標記的子節點(場地僅單一 GLB)。RoutePoint(起終點)/ Checkpoint 不是 entity,而是場地設定(用 Empty Node 標記,見 零件與共用介面.md §5.4)。

10.1 通用規則

可破壞性決策與破壞行為見 材質表.md §10。本節僅列各 entity 類別的驅動行為差異(destructible 觸發後 entity 類別獨有的後續處理)。

Canonical finalizer 必須把 entity 轉為 current PhysicsManifest typed entry:依 scene traversal 給連續穩定 entityIndex,並固定初始 pose、visual/collider node 分組、各 collider 材質、motion/conveyor、intact 質量/慣量、entity-local magnets 與完整純視覺 fragment descriptor。admission 對實際 GLB 幾何獨立重建並核對 digest;race runtime 禁止讀 raw node/root extras。physics: visual_only 不建立 body、collider、sensor 或磁源,其 mesh 也不進 collider triangle budget;default decoration 建 fixed body,兩種 kinematic 建 position-based kinematic body。

磁場 entity 取代方案:任意 entity 只要含 magnetism_role: source 材質的 sub-mesh + node-level 宣告 magnet_source_strength_n > 0,即自動成為磁鐵物件。配合 destructible 可實現可破壞磁陷阱、配合 kinematic_move 可實現動態磁陷阱。詳見 材質表.md §8.2

10.2 decoration

  • physics: "visual_only"(無 collider,純裝飾)或 "default"(有 collider,可碰撞)
  • 純裝飾 mesh 可不指派材質(Stage 2 checkbox)

10.2.1 視覺水體(湖、河流、瀑布)設計指南

「實際佔體積的液體」不採用 3D 液體體積 entity,改用組合做法:

元素 做法
湖底 / 河床 跑道 mesh 從地面延伸到水體底部位置(rigid body collider,車輛物理上「連續跑」進去)
水面 獨立 mesh 標 physics: "visual_only"(無 collider,純視覺)
水面 shader 模擬波浪、折射、反射等視覺效果(美術自由發揮)
水下體驗 車輛進入水體後加 underwater post-processing(藍綠色調 + 模糊)

為什麼不用 3D 液體 entity

  • 真實液體模擬效能極差(不適合 60Hz P2P 物理)
  • 開放式設計:創作者用 mesh + shader 自由表達水體視覺,runtime 只需處理車輛接觸 collider 邊界
  • 物理一致:車輛在「水中」其實還是在 collider mesh 上跑,避免浮力 / 阻力等複雜模擬

對比 fluid deploy zone(fluid 材質見 材質表.md §2 共 5 種;deploy 行為見 §3):

  • fluid deploy = 平面 sensor + deploy_behavior 觸發特殊效果(油坑 / 熔岩池)
  • 視覺水體 = 體積感的湖泊 / 河流(純視覺 + 跑道 collider)
  • 兩者職責分明

10.3 kinematic_move

  • 動態位移:旋轉門 / 推板 / 升降平台 / 兩階段瞬移
  • body type = Kinematic(時間驅動)
  • motion_curvesin(連續往返、平滑)/ step(兩階段瞬移)/ linear(等速三角波)
  • 參數:period_ms / phase_offset_ms / amplitude_m(平移,entity local)/ rotation_axis + rotation_amplitude_deg(旋轉:360 = 連旋、< 360 = 往返;與平移至少填一、可並用)/ open_duration_ratio(step 用);schema 見 場地.md §9.2
  • runtime 先把 ms 轉為固定 60Hz frame 整數,以 simulation frame 推導下一 pose;不得使用 wall clock。sin 與旋轉四元數只用版本固定的 deterministic 近似,不直接呼叫平台超越函數。
  • destructible 觸發後:往返驅動停止(沿用 §10.1 通用流程)

10.4 kinematic_conveyor

  • 輸送帶(表面速度推動接觸物)
  • body type = Kinematic + surface velocity
  • conveyor_velocity_m_s:沿 entity 自身 −Z(forward)的表面速度(絕對值 ≤ CONVEYOR_VELOCITY_M_S_MAX(10)、負值反向)
  • 只處理 Rapier 本幀實際 contact manifold;對接觸動態 body 施加沿 entity local −Z 的切向衝量,大小不得超過該接觸的 friction × normal impulse,不以 trigger/AABB 鄰近推動。
  • destructible 觸發後:表面速度歸零(沿用 §10.1 通用流程)

10.5 Destructible runtime

每個 destructible 在 world 只建立 intact body/colliders。破壞當幀停用 intact collider/visual、move/conveyor/magnet,且不建立或啟用任何 fragment body/collider;碎片不產生碰撞、推力、傷害、磁力或路障。current PhysicsManifest 只保存完整版本化純視覺 descriptor,presentation 以 entityIndex + breakFrame + descriptor version 重建,並與車輛碎片共用 VISUAL_FRAGMENT_LIFETIME_MSVISUAL_FRAGMENT_FADE_MS。current SavedState 與 checksum 對此區塊只保存 entity fatigue/broken/breakFrame,不保存逐片 active、pose、velocity 或期限;未破壞 kinematic pose 可由固定 frame 重建。詳見 D-20260814-06

11. 場地 schema 核心欄位

完整 schema 見 場地.md §8。摘要:

區塊 內容
識別 marker open4wd_version + type: "track" Root Extras(零件與場地共用,見 版本規範.md §15
track type: open / fixed + lap_mode: linear / loop + route[]lap_count 為房間設定,不在 GLB)
weather normal / rain / snow + 溫度 + 風速向 + 雨雪 patch 參數
physics gravity_direction + gravity_strength_m_s2(支援低重力 / 反重力 / 橫向重力)
material / materials[] Root material 是必填 fallback;materials[] 只列需要覆寫的 sub-mesh,可為空
Entity nodes 帶 node-level entity_type extras 的子節點,合計 ≤ 100、3 類 (§10);Root 沒有 entities[] 陣列
Empty Node RoutePoint_<n> 序列(RP1 = 起點、RPn = 終點;open 恰 2 點 / fixed ≥ 2 點)+ Checkpoint_N / KillZone_N / RespawnPoint_N(可選);順序語義由 track.route[] / track.checkpoints[] 陣列承載、名稱僅需唯一(零件與共用介面.md §5.4

11.1 跑道兩種模式

模式 結構 玩法
open(全場地跑道) route 恰 2 點(走廊關)、無寬度約束 起點 → 終點純物理 + 場地設計引導;無圈數概念(強制 lap_mode: linear);可加 Checkpoint(有序防抄近路關卡,須依序通過;checkpoint 間可走最短直線)
fixed(固定跑道) RoutePoint 序列 ≥ 2 點(每點 width_m 全寬,走廊開) 線性 (起≠終) 或環形 (起=終,圈數由房間設定 1–10);車在表面時偏離 spline 中心線 > width/2 → 觸發 b-soft 處罰流程(空中段不檢核,見 遊戲機制.md §場地系統

open 零實作成本(純物理 + 三層 fall-out 兜底);fixed 需 route spline 預採樣折線 BVH 查詢。

11.2 場地約束摘要

完整見 零件與共用介面.md §7.2:AABB ≤ 500×500×100m、GLB ≤ 80 MiB(強制 Draco + KTX2)、visual ≤ 3M tri、entity ≤ 100、destructible ≤ 50、patch ≤ 50。

12. 破壞模型分工

詳見 材質表.md §10.3 三種破壞機制分工(車內部件 / 場地物件 / Fluid deploy)+ §9 耐受度因子族 公式。

過熱破壞為獨立路徑:per-part temperature > manifest hydrate 的 thermalLimitC → 直接 broken(無 graceful degradation),見 算式表.md §6 + 遊戲機制.md §4