誤區澄清
動作/格鬥類網遊若將碰撞、尋路完全放在服務端用物理引擎(如 Unity 的 PhysX、Havok),會帶來巨大計算壓力且難以保證確定性同步。
業界主流架構
- 服務端極簡模型:每個實體只保留 位置坐標、包圍盒半徑、朝向。碰撞判定 =
distance(posA, posB) < radiusA + radiusB。
- 客戶端表現層:客戶端運行完整物理引擎,負責動畫、特效、視覺表現。發起攻擊請求時攜帶目標 ID、技能 ID、時間戳。
- 服務端權威裁決:收到請求後,按簡化模型判定「是否在攻擊距離、冷卻是否就緒、視野是否遮擋」,返回結果(命中/傷害/Buff)。客戶端據此播放確認動畫。
- 尋路:服務端運行輕量級 NavMesh(如 Recast/Detour 僅計算路徑點),不模擬物理碰撞;客戶端同步路徑點做平滑移動。
優勢
- 服務端 CPU 占用極低,單機支撐萬級併發。
- 確定性邏輯,易於回放、防作弊、跨平台同步。
- 客戶端可自由升級表現效果,不影響服務端邏輯。
結論:服務端不需要重型物理引擎,幾何距離判定 + 簡化 NavMesh 即可滿足絕大多數動作類網遊需求。