0

这是交易。我正在制作一个有玩家和机器人的游戏(想想玩家之间自动驾驶汽车的赛车游戏)。每次玩家(比如玩家 A)通过按键改变方向时,都会向服务器发送一条消息,该消息又会发送给所有其他玩家,让所有玩家知道 A 已经改变了方向,并且他们应该通过以下方式计算他未来的位置沿新方向递增。在并行计算中,服务器会计算所有玩家的位置,并且每个客户端都会定期将他们的玩家位置与服务器的位置进行比较,以防客户端以某种方式错误地计算了玩家的位置。到目前为止,一切都很好。

当我实施机器人时,问题就来了。这个想法是他们使用 A-star 算法来计算从 A 到 B 的路径,并将路径存储在直线的步骤中。路径只存储在服务器上,不能发送给客户端,因为它是游戏的重要组成部分,玩家不知道其他哪些汽车是机器人。因此,如果机器人 B 想要从 (0,0) 到 (200,200),它可能首先从 (0,0) 到 (200,0),然后从 (200,0) 到 (200,200)。这个想法是当机器人降落在 (200,0) 时向所有客户端发送“改变方向”消息。但是玩家每帧移动的像素数量取决于帧运行所花费的时间,并且不一定是恒定的,因为客户端必须以与服务器端相同的速度运行,并且存在 s 没有切实可行的方法来确保每个帧在客户端和服务器上完全相同的时间运行。因此,机器人在改变方向之前可能会过冲到 (203, 0),这使其卡在角落等处。它无法在一帧内从 (198, 0) 转到 (200, 3),因为没有客户端在服务器告诉它之前知道要采取什么方向的方法,它只能在机器人到达过去 (200,0) 之后才能执行。我也不能故意低于机器人以适应确切的框架(200,0),因为那样他们会比玩家开得慢,而且他们应该是无法区分的。3)在一帧中,因为客户端无法在服务器告诉它之前知道要采取的方向,它只能在机器人到达(200,0)之后才能执行。我也不能故意低于机器人以适应确切的框架(200,0),因为那样他们会比玩家开得慢,而且他们应该是无法区分的。3)在一帧中,因为客户端无法在服务器告诉它之前知道要采取的方向,它只能在机器人到达(200,0)之后才能执行。我也不能故意低于机器人以适应确切的框架(200,0),因为那样他们会比玩家开得慢,而且他们应该是无法区分的。

关于如何很好地实现这一点的任何聪明的想法?正确完成这部分对游戏很重要。

4

0 回答 0