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

时间:2017-03-21 13:47:20

标签: node.js express socket.io multiplayer

这些天我正试图用2名玩家实现一个简单的多人游戏。 游戏逻辑在服务器端,这意味着玩家的创建和移动。我也想实现在画布上弹跳的球。 我该如何实现呢?在服务器端还是客户端?我认为在服务器上创建它们会更好,但是我已经尝试了这个并且创建没问题,但是当我将球的位置发送给客户端时,每个球都有相同的位置,当服务器试图移动时他们没有移动的球,例如改变位置。最糟糕的是我无法渲染它们。 任何人都已经遇到过这种问题而且已经解决了吗? 我怎样才能解决这个弹跳球的问题?

1 个答案:

答案 0 :(得分:1)

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

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

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

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