【问题标题】:Node.js Multiplayer Game using express and socket.io使用 express 和 socket.io 的 Node.js 多人游戏
【发布时间】:2017-03-21 13:47:20
【问题描述】:
这些天来,我正在尝试实现一个有 2 名玩家的简单多人游戏。
游戏逻辑在服务器端,即玩家的创建和移动。我还想实现在画布周围弹跳的球。
我该如何实施?在服务器端还是客户端?我认为最好在服务器上创建它们,但是我已经尝试过,并且创建还可以,但是之后当我将球的位置发送给客户端时,每个球都具有相同的位置,并且当服务器尝试移动球时他们'不移动,例如改变位置。最糟糕的是我无法渲染它们。
有人遇到过这种问题并解决了吗?
我该如何解决这个球弹跳的问题?
【问题讨论】:
标签:
node.js
express
socket.io
multiplayer
【解决方案1】:
希望这个问题还为时不晚。构建多人游戏其实是一个很大的话题。您对问题中的许多概念有误解。
首先,建议在服务器端有游戏逻辑,只有服务器才能决定球的真实位置和运动。这称为权威服务器。然后在客户端渲染球,这通常只是一个浏览器页面。您可以使用 Canvas API 或 WebGL 来实现它。如果只是 2D 游戏,Canvas API 就足够了。这意味着您将需要在服务器端和客户端执行相同的创建、更新和删除实体操作。您可能需要在服务器和客户端之间共享相同的球模型。由于您在双方都使用 javascript,所以这不是问题。
基本多人游戏最重要的部分是服务器和客户端之间的通信。每当您在服务器上创建一个球时,您都需要将球信息发送给所有客户端。然后你需要在客户端创建相同的球。之后,您需要更新服务器上的所有球信息,并以固定的时间间隔发送给客户端。收到更新信息后,您可以在客户端上更改该信息,以便您的球可以“移动”。渲染它们很容易。您只需清除屏幕并将它们绘制到新位置即可。
球的弹跳与碰撞检测有关。您可以搜索碰撞检测或实体命中测试以获取更多详细信息。