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

使用express和socket.io的Node.js多人游戏,node.js,express,socket.io,multiplayer,Node.js,Express,Socket.io,Multiplayer,这些天来,我试图实现一个简单的多人游戏,有两名玩家。 游戏逻辑在服务器端,这意味着玩家的创建和移动。我还想实现在画布上反弹的球。 我如何实现这一点?在服务器端还是客户端?我认为最好在服务器上创建球,但我已经尝试过了,创建也可以,但之后当我将球的位置发送给客户时,每个球都有相同的位置,当服务器尝试移动球时,它们不会移动,例如改变位置。最糟糕的是我无法渲染它们。 有人已经经历过这种问题并解决了它吗? 如何解决球反弹的问题 希望现在回答这个问题还不算太晚。构建多人游戏实际上是一个非常重要的话题。你的问

这些天来,我试图实现一个简单的多人游戏,有两名玩家。 游戏逻辑在服务器端,这意味着玩家的创建和移动。我还想实现在画布上反弹的球。 我如何实现这一点?在服务器端还是客户端?我认为最好在服务器上创建球,但我已经尝试过了,创建也可以,但之后当我将球的位置发送给客户时,每个球都有相同的位置,当服务器尝试移动球时,它们不会移动,例如改变位置。最糟糕的是我无法渲染它们。 有人已经经历过这种问题并解决了它吗?
如何解决球反弹的问题

希望现在回答这个问题还不算太晚。构建多人游戏实际上是一个非常重要的话题。你的问题中有很多概念上的误解

首先,建议在服务器端设置游戏逻辑,只有服务器才能决定球的实际位置和移动。这称为权威服务器。然后在客户端渲染球,客户端通常只是一个浏览器页面。您可以使用Canvas API或WebGL来实现这一点。如果只是2D游戏,画布API就足够了。这意味着您需要在服务器端和客户端执行相同的创建、更新和删除实体操作。您可能需要在服务器和客户端之间共享相同的球模型。因为您在两个方面都使用javascript,所以这不是问题

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

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