0

我是 node.js 和 socket.io 的新手。所以我做了一个小项目,用一个小的实时聊天测试了一些东西,效果很好。但我问我,用 node.js 和 socket.io 管理多个游戏的最佳方式是什么?

比方说,我想创建一个包含一些简单的多人纸牌游戏的网站。每个游戏都应该是一个窗口,有自己的聊天/房间、玩家列表和游戏更新历史。

将每个游戏的所有功能设置在一个大server.js文件中还是在服务器上的自己的进程上运行每个游戏更好(game1.js... game2.js)?

4

2 回答 2

1

我建议你看看一些好的游戏网络框架,比如GameSparksPhoton等,看看它们是如何工作的。即使您想使用 NodeJS 和 SocktIO(我认为它们非常适合您的项目)制作自己的服务器端代码,我提到的框架也可以为您提供一些关于如何实现目标的好线索。

游戏网络

多人游戏在游戏市场上使用最多的架构是一个中央服务器,通常称为主服务器,它负责匹配,即匹配想要在游戏房间一起玩的玩家。

一旦主服务器匹配了玩家,它就会产生一个新的专用服务来处理所有游戏逻辑,通常称为游戏服务器

制作多人在线游戏并不是那么简单,一旦您需要处理诸如不同步和解延迟补偿等问题。这完全取决于您的游戏类型/类型。我认为一个简单的纸牌游戏不会涉及太多,但这些都是很好的学习主题。

您可以在Valve 的 Source Game Networking等文档和Gabriel Gambetta的这篇文章中查看有关这些术语的更多详细信息。

于 2019-07-18T13:03:18.427 回答
0

在这种情况下,最佳做法是将游戏数据存储在数据库中,并使用身份验证方法(如 cookie/JWT)随时了解要为哪个玩家提供哪些数据。这种设计模式允许更少的开销,因为游戏的逻辑与游戏数据完全断开,这意味着它可以轻松扩展,如果发生崩溃或断开连接,不会丢失任何内容。它还消除了对单个连接的依赖。

于 2019-07-18T12:22:14.343 回答