Hasty Briefsbeta

双语

The unlikely story of Teardown Multiplayer

4 days ago
  • #multiplayer
  • #teardown
  • #game-development
  • 多人模式是《Teardown》玩家最期待的功能,但由于需要同步物理效果和完全可破坏、支持模组的世界,最初被认为不切实际。
  • 2021年的内部实验采用简单方法同步物体和体素数据,但占用带宽过大无法实用。
  • 社区项目TDMP通过逆向工程实现了基础多人功能,同步玩家位置和输入,但因非确定性破坏常导致数据不同步。
  • 2022年底采用混合方案:对破坏效果使用确定性计算,其他元素采用状态同步,在保证世界完美同步的同时控制带宽消耗。
  • 初期为避免非确定性而回避浮点运算,后通过精细处理实现可控;使用定点数学重写了体素破坏逻辑。
  • 游戏采用P2P架构,主机兼任服务器:场景变更使用可靠数据流,物体变换等非关键状态采用不可靠同步。
  • 脚本系统适配多人模式时,将服务端与客户端代码保留在同一文件但分区段处理,通过共享状态表和远程调用实现交互。
  • 终端和UI处理最为棘手:服务端运行逻辑,绘图指令经差值压缩后流式传输至客户端,类似X Window系统方案。
  • 多人模式原计划作为独立游戏开发,后并入主分支,耗时数月的合并过程需要持续解决同步问题。
  • 向后兼容性挑战巨大:需保证旧模组在单人模式可用,同时通过API扩展提供可选的多人支持。
  • 通过记录并回放确定性命令实现中途加入功能,但设置了计算时长限制防止过载。
  • 开发工具早期支持单窗口多实例调试,后因复杂度问题回归独立进程模式。
  • 最终方案融合多种技术并包含大量特例,折射出为已发布的模组化游戏添加多人功能的复杂性。