Node.js多人游戏使用express和socket.io

这些天我正试图与2名玩家实现一个简单的多人游戏。 游戏逻辑在服务器端,也就是玩家的创造和移动。 我也想要实现在canvas周围弹跳的球。 我怎样才能实现呢? 在服务器端还是客户端? 我认为在服务器上创build它们会更好,但是我已经尝试过了,创build好了,但是之后当我将球的位置发送给客户端时,每个球都有相同的位置,当服务器尝试移动球时,不要移动,例如改变位置。 最糟糕的是我无法渲染它们。 任何人都已经遇到过这样的问题,并解决了这个问题? 我怎样才能解决这个球的弹跳问题?

希望这个问题还为时不晚。 构build一个多人游戏实际上是一个非常大的话题。 在你的问题中,你有很多概念上的误解。

首先,build议在服务器端有游戏逻辑,只有服务器才能决定球的真实位置和运动。 这被称为权威服务器。 然后你在客户端渲染球,这通常只是一个浏览器页面。 您可以使用Canvas API或WebGL来实现该function。 如果只是2D游戏,Canvas API就足够了。 这意味着您将需要在服务器和客户端执行相同的创build,更新和删除实体操作。 您可能需要在服务器和客户端之间共享相同的球模型。 既然你在双方使用JavaScript,这不会是一个问题。

基本的多人游戏最重要的部分是服务器和客户端之间的通信。 每当您在服务器上创build一个球时,您需要将球信息发送给所有客户端。 那么你需要在客户端创build相同的球。 之后,您需要更新服务器上的所有球信息,并以固定的时间间隔发送给客户端。 一旦您收到更新信息,您可以更改客户端上的信息,以便您的球可以“移动”。 渲染它们很容易。 您只需清除屏幕并在新的位置绘制它们。

球的弹跳与碰撞检测有关。 您可以search碰撞检测或实体碰撞检测以获取更多详细信息。