lobby game后端架构

大厅是供用户选择游戏对象的场所。图中是大厅的基本形式,左侧的目录树有三个层级:游戏(game)、分区(zone)和房间(room)。每款游戏都会基于某些规则来划分zone和room 。游戏的基本单元是游戏桌,即图中右侧的那些table,当table上“积攒”的玩家数满足要求时,该table上的游戏即可开始。

若要搭建一个大厅系统,后端应该具备一个负责客户登陆的loginsvrd,一个主管各游戏服的lobbysvrd,一个用于访问数据库的dbsvrd,和多个游戏服务器。
按图中所示,使用Libevent库与client通信,消息编解码基于ProtoBuf来做。图中所有连接均为TCP连接。

client首先要通过loginsvrd登陆到后台系统,然后连接lobbysvrd,向其查询,哪个游戏服务器可以为自己提供想要的游戏服务。比如当前client想要到01号游戏的01游戏区中的01房间玩游戏,那么lobbysvrd就会从所有在线的,运行着01号游戏逻辑的gamesvrd中选一个合适的服,将该服的IP和服务端口返回给客户。

dbsvrd除负责对MySQL的调用之外,还起到了数据缓存的作用。另外,单个gamesvrd可只运行一个游戏逻辑,也可以运行多个游戏逻辑。