概述
一、整服务器部署架构。
服务端包含:两组server
connector server : 用于建立后维护长连接、根据用户不同的ip一致性hash分配到固定server; 维持session; 路由转发
room Server:
一个room server 代表一个游戏房间, 例如初级房、中级房等。只有同一房间的用户可以组成游戏。room server 维护游戏牌局信息,处理开始,叫分,出牌,游戏结束等所有业务逻辑。
room Server 同各个connector server 都保持一个长连接socket通信。
目前:只有同房间的用户可以互相聊天。
在room server, 根据游戏用户session中存储的connector id, 找到同游戏用户建立长连接的connecotr server, 通过channel service 将room server中产生的消息,下发到各个用户。
二、room server 设计(以斗地主为例)。
在每个room server 的进程中都各自包含一个单例的room service 对象。
在进程启动时room service 对象负责初始化100张桌子,这200张桌子永久存在。
每个桌子对象里,包含一个poker对象,poker 对象用户初始化手牌,记录出牌,炸弹等信息,保持当前游戏的各用户手牌信息; poker对象在一句游戏结束时重新初始化。
room service 对象中包含一个players[]数据,存储登录到当前房间的所有用户。 定时器没3秒检查,将举手的但不在牌桌中的用户每3个一组组成牌局,同时将不在游戏中的离线用户以及2分钟内没举手的用户踢出房间。
三、出牌的处理流程
client 发出playHandle.doPushCards 请求时。
框架中有connector server 将dopushcards请求路由到后端的 room server 服务器, 交个它的playHandler 的doPushCards方法处理
playHandler通过请求的 uid获取得到room service 中的player对象,调用player对象的doPushCards方法。
如过dopushcards为最后一轮牌,游戏介绍,在desk对象中emit gameOver事件,用于持久化数据。
https://github.com/NetEase/pomelo
https://github.com/NetEase/pomelo/wiki/Home-in-Chinese
最后
以上就是含蓄蓝天为你收集整理的pomelo 开发棋牌手游 架构的全部内容,希望文章能够帮你解决pomelo 开发棋牌手游 架构所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复