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

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

不会保存留言。

换句话说,如果你离开组队,将会丢失这些信息。这将极大地简化我们的任务,因为我们不必处理任何类型的数据存储,也不必浪费时间来优化存储和恢复旧消息的数据结构。它们都存在于内存中,只要聊天室处于活动状态,就会一直存在。一旦关闭,就会简单地对它们说Goodbye!

通过网络套接字进行通信。

可悲的是,我们的客户将不得不处理双重沟通渠道:游戏引擎的 RESTful 和聊天服务器的套接字。这可能会增加客户端的复杂性,但与此同时,它将为每个模块使用最佳通信方法。 (在聊天服务器上强制 REST 或在游戏服务器上强制使用套接字没有任何意义。这种方法会增加服务器端代码的复杂性,这也是处理业务逻辑的代码,所以让我们关注目前的问题。)

这就是聊天服务器。毕竟,它不会很复杂。在开始编码之前还有很多工作要做,但是对于本文来说已经足够了。

客户端

这是最后一个需要编码的模块,它将是最笨重的一个模块。根据经验来看,我更喜欢让客户端笨重,使服务器轻巧。这样为服务器开发新的客户端会更加容易。

这是我们最终应该采用的架构。

最终架构

我们要实现的ClI客户端很简单,不会实现任何非常复杂的东西。实际上,必须要解决的最复杂的部分是 UI,因为它是一个基于文本的界面。

客户端应用程序必须实现的功能如下:

创建一个新游戏。

因为我希望尽可能保持简单,所以这只能通过 CLI 界面完成。实际用户界面只会在加入游戏后被用到,这把我们带到下一个问题。

加入现有游戏。

玩家可以根据由上一条返回的游戏编号来加入游戏。另外,这件事应该能够在没有 UI 的情况下完成,因此这个功能将成为开始使用文本 UI 所需的过程的一部分。

解析游戏定义文件。

我们将对这点进行的讨论,客户端应该能够理解这些文件,以便能够理解要显示的内容,并知道应该如何使用这个数据。

与冒险互动。

基本上,这使玩家能够在任何时间与给出描述的环境进行交互。

为每位玩家维护背包内容。

客户端的每个实例都将在内存中包含一份道具列表。此列表将被备份。

支持聊天。

客户端程序还需要连接到聊天服务器,并使用户登录到组队的聊天室。