回顾SKPhysicsWorld

时间:2015-10-13 19:29:57

标签: objective-c sprite-kit multiplayer latency game-development

假设我有一个没有重力的SKScene,并且有一个冲动,并且正在慢慢移动它通过SKScene。让我们说我在10秒钟的标记,如果我在5秒钟的时候给它一个轻推,我想看看我的精灵在哪里。换句话说,我想快速将场景倒回到5秒标记,施加冲动,然后快速将其快速回到10秒标记。理想情况下,用户不需要查看此活动,只需跳转到精灵的新位置/向量。

我试图在这里解决的问题是如何使用Sprite Kit和Websocket服务器进行持久的MMO 2d太空游戏。而且我有点坚持如何让所有玩家保持同步并且仍然具有相对无延迟的游戏。我考虑过:

  1. 游戏套件 - 没有足够的玩家,没有执着
  2. 客户端发送命令(推力,转弯等),服务器管理物理,用新位置/向量进行响应
    • 如果我为所有对象发送恒定位置更新,这似乎并不高效,因为在空间中所有对象将不断移动/旋转,因此这将导致巨大的流。
    • 如果我发送更新的向量,本地对象将不断口吃和跳跃,因为每次更新的延迟量将根据网络延迟而变化
  3. 客户端发送命令,服务器记录命令,给他们一个官方时间戳,并将命令发送到客户端,客户端然后将官方时间戳与他们自己的运行时间代码匹配,将他们的本地物理回放到命令的时间发送,进行相关更改,然后快进到用户所在的位置。这可能导致单艘船稍微跳跃但可以更顺畅。

0 个答案:

没有答案