【发布时间】:2016-03-05 16:03:07
【问题描述】:
我开始用 javascript 构建非常简单的赛车游戏。服务器由 node.js 提供支持,客户端由 canvas 提供支持。我在本地测试想法时编写了汽车运动逻辑。我能够创建非常漂亮和流畅的移动逻辑(它首先加速直到达到全速,然后当你不再按住键时减速):
car = {
x: 0,
y: 0,
velX: 0,
velY: 0,
thrust: 1.2
}
if(hold_up) {
car.velY += car.thrust;
}
if(hold_down) {
car.velY -= car.thrust;
}
if(hold_left) {
car.velX += car.thrust;
}
if(hold_right) {
car.velX -= car.thrust;
}
game_loop() {
car.velX *= 0.92;
car.velY *= 0.90;
car.x -= car.velX;
car.y -= car.velY;
draw_car();
request_next_frame();
}
现在我正在尝试将这个逻辑实现到游戏项目中,但我在理解客户端应如何与服务器进行通信方面的汽车移动方面存在一些问题。
由于requestAnimationFrame() 提供了稳定的 60 fps 并且众所周知,它在画布上与屏幕刷新率同步(只要屏幕准备好),因此本地化效果非常好。
问题:
- 我是否应该计算并在本地进行移动并将我当前的坐标每帧发送到服务器(以便其他玩家可以更新我在地图上的位置)?
- 我应该只向服务器发送向特定方向移动的愿望,让服务器计算下一个位置并用它更新每个人(包括我自己)吗?
我是 node js 服务器游戏开发的新手,我不知道正确的方法来使其“正确”并保持此逻辑的流畅视觉效果。
任何帮助appriciated:)
【问题讨论】:
标签: javascript node.js canvas