【发布时间】:2011-11-18 08:19:03
【问题描述】:
我正在考虑实现一个 HTML5 mmog,其中涉及一个快速运行的对象。玩家不断通过射击来改变该物体的方向。我想到了 WebSockets 等 (socket.io) 和 canvas。
我认为方向变化的计算必须在客户端和服务器端完成,然后与服务器同步,以避免作弊。
我担心的是,无论服务器有多快,延迟都会导致延迟,从而导致同步中断。
有没有解决这个难题的好方法?在所有信息对于不错过方向变化至关重要的情况下,如何实现这些数据量的实时同步。所有玩家都需要及时获取移动物体的新方向,以免破坏游戏玩法。
我认为这个问题已经在现有的 mmog 中解决了。
有什么想法吗?
【问题讨论】:
-
您可以为每个操作发送一个时间戳,然后让服务器在适当的时间追溯插入该操作。 (这并不能完全解决您的问题,因为玩家可以通过更改时间戳来作弊,而玩家直到稍后才能看到更改。但是,它会减少延迟问题,并且您将无法传输数据无论你做什么都会立即。)
-
基于客户端的时间戳永远不会准确。在我写这篇文章时,我的时钟是 2 分钟。
-
主要问题是是否有一种方法可以实时同步大量数据,这些数据是从具有大量连接的小消息(球员射门/方向变化)聚合而成的。
-
选择纯客户端-服务器。所以你只会询问用户关于鼠标位置、点击、按键和类似的东西 - 并计算和同步服务器上的一切。
-
您有过这方面的经验吗?是否可以设法让这么多的实时数据准确同步?
标签: html canvas websocket multiplayer