三维交互商业项目· 游戏与品牌官网系
Hunter World:3DGS 真实场景多人寻宝竞速
将 3DGS 真实场景变为多人同屏游戏,以隐形 GLB 碰撞网格承担物理,单机 AI 与在线联机共用一套游戏模式接口。
- Babylon.js 8
- Havok 物理(WASM)
- LiveKit
- TypeScript
- Go
- Chi
- 我的角色
- 游戏架构与物理层设计,角色控制器,联机同步与服务端权威规则
- 材料说明
- 项目资料与交付记录
- 单局宝箱数(300 秒竞速)
- 15
- 同构运行模式(单机 AI / 在线联机)
- 2
- 物理引擎(WASM,胶囊体角色控制器)
- Havok
其余 1 项指标与口径
- 物理引擎(WASM,胶囊体角色控制器)
- Havok
背景问题
3DGS 只有光子级的视觉表示,没有真实的体积,角色无法站立、跳跃或被阻挡。游戏需要一套独立的物理表示,同时保证多人同步的公平性。
约束
- 场景由平台训练得到,游戏需要复用同一份 3DGS 资产。
- 多人同屏需要低延迟的位置同步,但分数与宝箱分配必须可信。
- 前端保持零框架,减少每帧开销。
架构
前端(Babylon.js 8 + Havok)
├─ 视觉层:GaussianSplattingMesh(3DGS)
├─ 物理层:碰撞 GLB 逐子网格建静态刚体,脱离根节点避免坐标翻转
└─ 游戏模式接口 GameMode
├─ AI 模式:宝箱刷新 + 行为状态机
└─ 联机模式:LiveKit DataChannel
服务端(Go + Chi + LiveKit SDK)
├─ 有损高频通道:玩家位置、朝向、动画
└─ 可靠权威通道:宝箱生成与认领、敲击抽奖、比赛结算
关键决策与取舍
- 双轨表示:视觉上使用 3DGS,物理上使用 C-11 碰撞工具生成的 GLB。出生点与宝箱生成区由碰撞体的包围盒推导,地面高度通过垂直射线求得。
- 胶囊体角色控制器:状态机包含地面、起跳与空中三种状态,并设置掉出场景后的自动重生,防止穿模后永久丢失角色。
- 同构的游戏模式:单机 AI 与在线联机实现同一个接口,业务规则不分叉。
- 服务端仲裁:宝箱认领防止双抢,敲击抽奖的概率由服务端按频率计算,分数只在服务端结算。
结果
- 单机与联机共享地图、宝箱与 HUD 逻辑,联机问题可以在单机模式下复现。
- 玩家在真实扫描场景中可以跑、跳并与碰撞体交互。
我的职责
- 游戏架构与 GameMode 接口设计。
- 物理层的碰撞网格接入与角色控制器。
- 联机同步协议与服务端规则的协作设计。