发布于 2026-01-06 6 阅读
0

提出一种用于构建多人游戏的实时通信框架

提出一种用于构建多人游戏的实时通信框架

各位游戏开发者们好!

简而言之——我构建了一个实时通信框架,让游戏开发者无需操心网络方面的问题,就能专注于游戏逻辑,从而构建多人游戏。它基于Ably 的实时基础设施,主要采用WebSocket技术,并使用 Node.js 和原生 JavaScript 构建(当然,你也可以搭配任何你喜欢的 JavaScript 框架使用 😉)。此外,它还实现了 Node.js 工作线程,用于模拟多个“游戏房间”(相当于按需启动的专用服务器),从而允许不同玩家群体同时进行游戏。欢迎查看:https://github.com/Srushtika/multiplayer-games-scalable-networking-framework

演示应用程序

几个月前,我开始涉足构建高频(实时)多人游戏领域,以引起我老板的注意,因为他非常热衷于游戏开发(挑战:尝试与Ben Gamble进行技术对话,而不谈及游戏开发!🌚🕹)。

刚开始的时候,我对游戏开发有很多误解。我低估了某些方面,对可扩展的游戏架构也有错误的认识。但从那时起,我学到了很多关于游戏开发的知识,并开发了一些经典游戏的多人版本,例如多人太空侵略者多人像素鸟。我还就游戏开发在各种平台上撰写和发表过大量文章和演讲。

在2020年HalfStack线上会议上展示了多人太空侵略者游戏

YouTuber Eddie Jaoude 频道上的多人 Flappy Bird 游戏实况

每次演示中,我都会对游戏进行改进,不仅提高效率,还充分利用底层编程语言的最新最佳特性。例如,我使用Node.js 工作线程(稳定版于 2020 年 1 月发布)来模拟多个游戏房间,以便不同玩家群体可以同时进行游戏。这类似于为每个游戏按需启动专用服务器。Ably的命名空间功能确保了各个房间之间互不干扰,从而使这一策略成为可能。

更多游戏=重复的模板?🤯🥵

当我继续构思更多足够酷炫的多人游戏创意,并努力说服团队让我利用 Ably 的工作时间进行开发时,我意识到所有这些项目都存在一些共同点:
我目前所有的多人游戏都遵循客户端/服务器架构。因此,基本的网络架构完全相同,并包含以下几个方面:

  • 服务器维护游戏状态,并以高频率将其发布到所有玩家都订阅的频道。这确保所有玩家保持同步。

  • 每个玩家都会通过一个专用于该客户端的专属频道发送其当前状态(基于用户输入等信息)。服务器订阅了该频道,并利用这些信息来维护上述最新的游戏状态。

  • 游戏设有多个游戏房间。

  • 主机玩家可以选择开始和结束游戏。

  • 一般来说,玩家可以清楚地了解自己的得分、位置、生死状态、加入/离开游戏的更新等信息。

客户端/服务器架构,每种颜色代表一个实时通道

仔细想想,这似乎正是大多数实时多人游戏所需要的。因此,我认为构建一个网络框架能够帮助游戏开发者快速地为任何游戏添加多人功能。如果使用 Ably 构建,那就更好了,因为这意味着您可以轻松扩展它,并访问许多其他实时通信功能(例如消息排序、可用性、消息送达保证等)。所以,这就是它!

多人游戏可扩展网络框架

该框架是一个入门套件,可让您为游戏添加多人游戏功能(遵循客户端/服务器策略)。它提供了一个通信框架,使玩家能够在整个游戏过程中与中央服务器实时通信。

基于此框架的演示应用程序的主页

它还允许你使用 Node.js 工作线程来实现“游戏房间”功能,这类似于按需启动专用服务器,从而可以启动多个游戏实例,每个实例对应一组不同的玩家。它附带一个框架演示应用程序,可以在其中模拟此游戏功能。其理念是让游戏开发者能够利用这个框架,添加自己的游戏逻辑,使其成为他们自己的游戏!

运行于此框架上的演示应用程序的主机等待区

您可以在 GitHub 上找到完整的项目以及详细的使用指南:https://github.com/Srushtika/multiplayer-games-scalable-networking-framework


如果您有任何问题/建议等等,欢迎随时发送邮件至devrel@ably.io或直接在Twitter上联系我,我非常乐意与您交流😃

如果你喜欢,请点赞⭐️,也别忘了分享你用它制作的任何多人游戏,我很乐意看看并为你点赞!🥇🚀🔥

文章来源:https://dev.to/abile/building-realtime-multiplayer-games-has-never-been-easier-presenting-a-realtime-communication-framework-for-games-1lk7