devise模式build议,用于实时同步在线游戏中的多用户数据

我正在开发一个项目来学习node.js,并且正在寻找一些关于如何处理实时同步用户数据的build议。

假设你有一个二维的矩形地图(大概600×400),有多个玩家在该地图上占据x,y的位置。 每个用户都可以使用箭头键进行导航,并以某种基本方式与其他用户交互。 鉴于这将通过HTTP播放,在处理和同步用户数据方面最好的devise模式是什么,以提供最stream畅,最快速的体验?

我可以考虑几个选项,但是会希望得到更多的想法/澄清:

  1. 客户端将位置数据发送给服务器,服务器将所有位置分配给所有客户端,屏幕呈现结果。 重复。 不利的一面是,客户端的数据往返时间滞后,但好处是它们与所有用户同步。

  2. 客户端在经常性地呈现它,将位置数据发送到服务器,服务器将所有位置分发给所有客户端,然后使用服务器数据更正来自客户端数据的屏幕呈现。 上行是一个快速反应,下行是同步轻微损失。

  3. 两者的混合,但不是使用(x,y)坐标,而是使用[先前的x / y和时间,当前的x / y和时间,在时间间隔build议的x / y]的vector,然后可以用于绘制不断变化的抛射path。 看来这将是棘手的实施。

任何指针?

大多数游戏使用某种forms的推测http://en.wikipedia.org/wiki/Dead_reckoning ,它允许从服务器分发延迟更新,但保留了客户端实时更新的一些幻觉。

最好的select是3.它不是特别复杂 – 只要跟踪你期望每个演员是基于游戏的机制,并且当你从服务器接收到更新时,就会随着时间的推移使两个状态一致。

如果您发现服务器向您发送的状态距离客户端所处的状态太远(太远需要定义),那么您可以跳转到服务器状态并接受客户端上的不连续点。