Mar*_*arc 10 html5 canvas multiplayer websocket
我正在考虑实现一个HTML5 mmog,其中涉及快速运行的对象.玩家通过射击不断改变该物体的方向.我想过WebSockets等(socket.io)和画布.
我认为方向改变的计算必须在客户端和服务器端进行,然后同步 - 与服务器是主服务器以避免作弊.
我担心的是,无论服务器的速度有多快,延迟都会导致延迟,从而导致同步失败.
有没有一种解决这个难题的好方法?如何实现这一数据量的实时同步,其中所有信息对于不错过方向变化至关重要.所有玩家都需要毫不拖延地获得移动物体的新方向,以免破坏游戏玩法.
我认为这个问题已经在现有的mmogs中解决了.
有任何想法吗?
您可以在这类情况,最好的办法是尝试和预测移动客户端(推算),然后如果/当需要时从服务器纠正数据的位置/速度.
例如,假设您的快速运行对象在屏幕上以5的速度从左向右移动,并且玩家向它射击并且它改变方向,因此它现在在屏幕上以5的速度向上移动(90度转弯).
客户端应用程序可能会比从服务器获取数据更频繁地更新(例如,每秒客户端60次更新,每秒从服务器接收10个数据包).让我们说实时,在服务器更新到来之前,对象改变方向,剩下5帧.在客户端,对象将继续沿其当前轨迹移动,直到它从服务器接收到更改方向的更新(即,当它没有从服务器接收数据时它不会停止),此时,客户将纠正对象的位置和速度.
如何进行校正将决定动画的外观.你可以立即将它快速移动到正确的位置,从而引起一点跳跃,但是立即给出正确的位置,或者你可以改变它的速度,使它以平滑的方式移动到那个位置,不会引起跳跃,但是在校正的平均时间内稍微不准确的位置.
你总会遇到一些情况,这些修正最终会变得非常大(例如某人连接非常糟糕,丢包,天高等等).这时候,你疯狂的异常人们通常称之为滞后于网络游戏的,比如当一个对象跳过大的距离或移动非常快,以"追赶"到它应该是.没有办法一直100%同步.你所能做的就是对事情应该做的事情做出非常好的猜测.
这里有一些更详细的文章,祝你好运!
http://gmc.yoyogames.com/index.php?showtopic=415538 http://www.gamasutra.com/view/feature/3230/dead_reckoning_latency_hiding_for_.php