这个游戏是一个低图形(SVG)的战略游戏。每个服务器代表一个游戏域和它的玩家。所有的服务器都应该能够相互通信,因为玩家可以(在游戏中)从一个域移动到另一个域/发送“外交信使”等。
我们选择了这个想法,因为它使我们能够无休止地扩大世界地图,它使第二方能够将他们的游戏服务器连接到我们,而那些扩大世界的人甚至可以进一步扩大世界。如果一台服务器(及其备份)出现故障,游戏仍将继续运行(一个真正的分布式环境)。
我们才刚刚开始。我们应该关注哪些平台,这些平台将帮助我们开发这样一个世界?
发布于 2009-03-03 23:29:50
XMPP (以前称为Jabber )可能是一个很好的起点。
发布于 2009-03-04 09:02:23
这在很大程度上取决于您希望在服务器之间共享多少数据。您希望每台服务器处理其自己的域,但是帐户数据库、关于谁拥有哪些信息的数据、域的拓扑结构、这些数据是否将是集中的和/或分布式的,以及如何保持它们的同步。因此,除了游戏的工作原理之外,还有另一组元数据,服务器需要就这些元数据进行通信。至于游戏数据,您可能会传递事件、数据对象以及有关数据所有权和控制的信息。最重要的是,必须有一些游戏中的时钟元数据,以保持域时间同步。
我可能会使用异步队列系统,对元数据、请求和响应消息使用不同的优先级。像XMPP这样的协议在交换消息的基础上可以为您带来在线信息、身份验证、加密等优点。但在一开始,传递协议本身并不像消息结构和数据交换那样重要。本质上,交付协议是可互换的。
示例:一个玩家将游戏单元X从域A发送到域B。域A服务器向域B服务器发送带有事件的消息。在处理事件队列时,B接收消息并向A上的请求队列发送请求,以获取关于X单元的数据以及控制/修改X单元数据的权限。请求队列具有较高的优先级,将先于A域上的其他事件进行处理。A域A将请求的数据和控制令牌发送到具有最高优先级的B域响应队列。同时,域B服务器已经处理了另外3个事件,没有在会话中等待。
重要的是,您必须设计数据封装协议,可能是某种XML模式。事件处理的协议。事件列表、允许的响应、错误消息、恢复。这些都是特定于游戏的。
发布于 2009-03-03 23:35:14
我会认真考虑Erlang和CouchDB,或者在Google AppEngine下实现它。
https://stackoverflow.com/questions/608674
复制相似问题