【发布时间】:2016-11-12 15:51:03
【问题描述】:
小问题:
当客户端向服务器发送数据包时,延迟会突然发生很大变化吗?
长问题(我遇到的问题):
我正在使用 websockets 制作一个 html 游戏,目前正在处理客户端输入预测,我正在为客户端和服务器使用相同的代码来检查冲突,以 30 次/秒计算新玩家位置。这就是我在服务器端和客户端更新玩家移动的方式:
if(controls.pressingRight === true)
{
if(controls.dx < settings.MAX_X_SPEED)
{
controls.dx += settings.DELTA_X_SPEED;
}
else
{
controls.dx = settings.MAX_X_SPEED;
}
}
if(*noCollisions*)
{
game.me.x += controls.dx;
}
这样玩家的移动就比较流畅了。当用户按下并按住“D”键盘按钮时,conrols.pressingRight 值更改为 true,并且在玩家释放“D”按钮之前为 true。我编写代码的原因是因为我不确定问题是出在我的代码中还是与延迟的变化有关。例如,我单击 D 按钮并快速释放它,客户端画布上的播放器移动约 7 像素,但服务器端播放器向一侧移动 20 像素或更多(尽管有时客户端和服务器端移动相同数量的像素) .我猜这个问题是因为当我按下按钮移动播放器时,延迟可能很低,比如说 20,但是当我释放 ping 时可能会像 200,这意味着数据包的传递时间比它应该的晚并且由于该服务器仍然将我的“pressingRight”值设为true。我错过了什么吗?
【问题讨论】:
标签: javascript node.js websocket latency