实时多人网络游戏模拟引擎的澄清

时间:2013-09-28 00:58:04

标签: android networking real-time multiplayer game-development

我一直在阅读有关今天存在的各种形式的多人游戏。在坚果壳中,我认为行业标准方式涉及以下内容:

  1. 在客户端计算机/设备上为每个客户端运行物理
  2. 将此物理的输入数据发送到服务器(可能是运行“服务器”会话的另一个客户端以及他们自己的客户端数据)
  3. 服务器处理此数据以确定客户端是否正在进行合法移动,如果没有,则强制客户端同步其指令(橡皮筋)。
  4. 服务器将历史数据从其他客户端转发到每个客户端进行模拟。
  5. 从每个客户的角度来看,有效的结果是在现在玩,同时看到过去的其他客户。
  6. 通过“倒带”游戏状态在服务器上执行命中检测,以查看时间戳是否发生了事件,受影响的玩家是否在那个时间点。
  7. 目前,我使用纯粹的航位推算系统。从每个客户收集输入,并在每个客户端计算物理。这可行,但是单位快速失去同步和橡皮筋,因为对球员之前位置/速度/方向的依赖性不够高。 AKA:他们可以自由地快速改变方向和速度。

    话虽如此,我该如何解决这个问题?

    我的客户端模拟器是否有效地为每个播放器收集了几个数据点,并在这些节点之间插入渲染? (IE:每个客户都有关于所有其他客户历史位置的多个数据点)。

    因此,我的客户的模拟器绘图播放器B将在时间0处在队列中具有位置X0,X1,X2,X3。在时间0的转换之间 - >时间1,我知道起始相关值(位置,速度,方向等)以及他应该来的时间1。

    解决方案是在这些已知的历史时间和数据点之间插入这些值吗?

    谢谢!

    赖安

0 个答案:

没有答案