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

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

摘要

听说过文字冒险游戏吗? 如果你的年龄足够大的话(就像我一样),那么你可能听说过、甚至玩过“back in the day”。在本文中,我将向你展示编写的整个过程。这不仅仅是一个文本冒险游戏,而是一个能让你和你的朋友们一起玩的,可以进行任何剧情的文本冒险游戏引擎。 没错,我们将通过在添加多人游戏功能来增加它的趣味性。

文字冒险是最早的 RPG 形式的游戏之一,回到还没有图形画面的时代,你只能通过阅读 CRT 显示器上黑色背景下的描述,并且依赖自己的想象力来推动游戏剧情的发展。

如果要怀旧的话,可能世界上第一个文字冒险游戏名叫 Colossal Cave Adventure(也许是叫 Adventure)。

文字冒险游戏 back in the day 的画面

上图是你实际看到的游戏画面,这与我们现在的顶级 AAA 冒险游戏相差甚远。 尽管如此,但是他们玩起来却很有趣,并会很容易的消磨你几百个小时的时间,因为只有你自己自己坐在显示器前,试图找到打穿它的途径。

可以理解的是,多年以来,文字冒险已经被更好的视觉效果所取代,特别是在过去几年里,游戏的协作性越强,你可以和朋友们一起玩。 这是原始的文字冒险游戏所缺少的,同时也是我想在本文中提到的功能。

我们的目标

可能你已经从标题中猜到了,本文的重点在于创建一个文字冒险引擎,并且让你和朋友们一起玩,使你能够与他们进行协作,就像在玩“龙与地下城”这个游戏一样。

在创建引擎时,聊天服务器和客户端的工作了相当大。 在本文中,我将向你展示设计思路、解释引擎背后的架构、客户端如何与服务器交互以及这个游戏的规则。

为了让你对我的目标又一个直观的感受,先上一张图:

游戏客户端的 UI 设计

这就是我们的目标。 一旦达成这个目标,将会得到截图而不是简单和肮脏的模型。 所以,需要了解这个过程。首先要介绍的就是整体设计;然后介绍我将用来编码的相关工具;最后我将向你展示一些核心代码(当然,还有指向完整代码库的链接)。

希望到最后,你能够自己创造一个新的文字冒险游戏,并与朋友一起乐在其中!

设计阶段

在设计阶段,我将描述这个游戏的整体蓝图。 我会尽力不让你觉得无聊,不过我认为在给你展示第一行代码之前,很有必要先搞清楚幕后的一些工作。