首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于需要相互通信的多个游戏服务器,最好的架构是什么?

对于需要相互通信的多个游戏服务器,最好的架构是什么?
EN

Stack Overflow用户
提问于 2009-03-03 23:26:23
回答 6查看 524关注 0票数 1

这个游戏是一个低图形(SVG)的战略游戏。每个服务器代表一个游戏域和它的玩家。所有的服务器都应该能够相互通信,因为玩家可以(在游戏中)从一个域移动到另一个域/发送“外交信使”等。

我们选择了这个想法,因为它使我们能够无休止地扩大世界地图,它使第二方能够将他们的游戏服务器连接到我们,而那些扩大世界的人甚至可以进一步扩大世界。如果一台服务器(及其备份)出现故障,游戏仍将继续运行(一个真正的分布式环境)。

我们才刚刚开始。我们应该关注哪些平台,这些平台将帮助我们开发这样一个世界?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-03-03 23:29:50

XMPP (以前称为Jabber )可能是一个很好的起点。

票数 4
EN

Stack Overflow用户

发布于 2009-03-04 09:02:23

这在很大程度上取决于您希望在服务器之间共享多少数据。您希望每台服务器处理其自己的域,但是帐户数据库、关于谁拥有哪些信息的数据、域的拓扑结构、这些数据是否将是集中的和/或分布式的,以及如何保持它们的同步。因此,除了游戏的工作原理之外,还有另一组元数据,服务器需要就这些元数据进行通信。至于游戏数据,您可能会传递事件、数据对象以及有关数据所有权和控制的信息。最重要的是,必须有一些游戏中的时钟元数据,以保持域时间同步。

我可能会使用异步队列系统,对元数据、请求和响应消息使用不同的优先级。像XMPP这样的协议在交换消息的基础上可以为您带来在线信息、身份验证、加密等优点。但在一开始,传递协议本身并不像消息结构和数据交换那样重要。本质上,交付协议是可互换的。

示例:一个玩家将游戏单元X从域A发送到域B。域A服务器向域B服务器发送带有事件的消息。在处理事件队列时,B接收消息并向A上的请求队列发送请求,以获取关于X单元的数据以及控制/修改X单元数据的权限。请求队列具有较高的优先级,将先于A域上的其他事件进行处理。A域A将请求的数据和控制令牌发送到具有最高优先级的B域响应队列。同时,域B服务器已经处理了另外3个事件,没有在会话中等待。

  • 注意:在这一点上,A应该废弃、版本化或删除关于单元X的数据。如果请求来自域C的数据,它应该从现在开始将该请求转发到服务器B。
  • 注意:上面的示例可以优化为直接发送有关X单元的数据和相应的事件,但我想用一个简单的示例来说明。

重要的是,您必须设计数据封装协议,可能是某种XML模式。事件处理的协议。事件列表、允许的响应、错误消息、恢复。这些都是特定于游戏的。

票数 1
EN

Stack Overflow用户

发布于 2009-03-03 23:35:14

我会认真考虑Erlang和CouchDB,或者在Google AppEngine下实现它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/608674

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档