2

我想用权威服务器构建一个 2 人回合制游戏来管理游戏状态/逻辑。我想到的流程是这样的:

  • 玩家订阅了一个独特的游戏频道(通过 pubnub/pusher/类似的东西)
  • 玩家通过 HTTP 直接向游戏服务器提交他们的回合
  • 服务器运行游戏逻辑并将结果发布到游戏的频道(两个玩家都订阅)
  • 客户端处理响应并呈现结果
  • 对接会有点让我困惑。有什么建议么?

这是在这种情况下使用发布/订阅服务的“正确”方式吗?有没有更好的方法(除了不断地轮询服务器)?

4

2 回答 2

2

这是我们办公室的热门话题!我一直使用 PubNub 作为权威的游戏服务器,使用创造性的频道名称选择。它是这样工作的:

  1. 运行一个 node.js 服务器(不必是节点;可以是任何东西)为您的内容提供服务,并且还充当权威实体。
  2. 当客户端连接时,生成一个 UUID(可以在服务器端或客户端完成)并让客户端和服务器都在该通道上侦听(类似于“my_game_[UUID]”)。
  3. 因为没有其他客户端知道这个通道名称,所以客户端和服务器可以在这个通道上自由通信。
  4. 服务器可以与每个人交谈,客户端可以通过服务器执行安全操作,并使用“不安全”的 vanilla pubnub 通道相互通信。
于 2011-12-14T00:15:55.427 回答
1

你的提议听起来不错,是“正确”的方式。您面临的挑战是从计算机时代开始就共享的,在这个时代,同步数据是多个设备(例如移动智能手机)之间的要求。轮询缓慢且昂贵(对大量玩家来说没有意义)。多人游戏是一个很好的例子,需要配对玩家并提供游戏室。您的解决方案是:

  1. 创建游戏大厅,玩家可以在这里创建游戏房间和加入游戏房间。
  2. 创建玩家自动配对(快速加入)[推荐]

您可以使用 Socket.IO 等产品和其他一些开源选项来解决这一技术挑战。但是,您只想构建您的游戏,而不是专注于部署 Node.JS 服务器并将其连接到 Express。

而是使用PubNub、PusherApp 或 Beacon Push 等云服务。利用 Pub/Sub API 在多人游戏环境中轻松同步用户。

于 2011-12-12T22:49:37.287 回答