使用Node.js实现一个多人游戏服务器引擎

2020-06-17 05:39:30易采站长站整理

战斗

战斗是这种游戏另一个非常重要的方面,我们不得不考虑将它添加到引擎中,否则我们最终会失去一些乐趣。

说实话,这并不需要重新发明轮子。基于回合制的组队对战已经存在了几十年,所以在这里只实现这个机制的一个简单版本。我们将把它与“龙与地下城”中的“主动性”这个概念混合起来,产生一个随机数使战斗更有活力。

换句话说,就是参与战斗的每个人的行动顺序将会被随机化,其中包括敌人。

最后(虽然我将在下面详细介绍这一点),你可以用设置的“攻击力”值的物品。这些是你在战斗中可以使用的道具;如果一个道具没有这个属性的话只能对敌人造成 0 点伤害。当你试图用这样的道具进行战斗时,我们可能会添加一条消息,这样你就能知道自己要做的事情是毫无意义的。

客户端 – 服务器交互

现在来看看客户端怎样基于前面定义的功能与服务器进行交互(目前还没考虑端点,不过马上就会讲到这个):

客户端与服务器之间的交互

客户端和服务器之间的初始交互(从服务器的角度来看)是一个新游戏的开始,其步骤如下:

创建一个新游戏。

客户端请求向服务器创建新游戏。

创建聊天室。

虽然没有明确说明,但是服务器不只是在聊天服务器中创建聊天室,而且还设置好了所需的一切,可以允许一组玩家进行游戏。

返回游戏的元数据。

一旦服务器为玩家创建好了游戏和聊天室,那么客户端会在后续请求用到这个信息。这是客户端可以用来标识自己和将要加入的游戏实例的一组ID。

手动分享游戏ID 。

这一步必须由玩家自己完成。我们可以提出某种共享机制,但我会将它留在愿望清单上等待将来改进。

加入游戏。

这个非常简单。每个人都有一个 ID,客户端通过这个 ID 加入游戏。

加入聊天室。

最后,玩家的客户端程序将通过游戏的元数据加入对应的聊天室。这是游戏开始前的最后一步。一旦完成所有操作,玩家就可以开始在游戏中冒险了!

游戏的动作指令

一旦满足了先决条件,玩家就可以开始游戏,通过聊天室分享他们的想法,并推动故事的发展。上图显示了所需的四个步骤。