TDEngine游戏平台框架逻辑

服务器组成

服务器由网关服(可多个),大厅服(可多个),和游戏逻辑服组成,其中游戏逻辑服可布置在大厅服上,详情请参考下图

如果没有外部负载均衡或者偏小型的服务器,网关服当做负载均衡,大厅即为实际服务器

服务器连接情况

客户端

客户端只与网关服进行连接

网关服

网关服会监听两个端口,一个是来自客户端的端口,一个是来自大厅服的接口,网关服会连接Redis服,并定时的把自己的地址及负载情况通知出去。

收到来自客户端的请求,建立连接,会分配一个对应处理的大厅服,完成验证后,之后的消息会传给相对应的大厅服,如果没有任何大厅服,则直接拒绝接受请求,关闭客户端的连接

收到来自大厅服的请求(Ps.这里通过监听地址和防火墙来进行验证,也就是能连上此端口的都认为是合法的连接,不接受公网的请求),记录大厅服的连接

大厅服

大厅服启动时会连接Redis取所有的网关服连接,然后选择负载比较小的网关服进行连接。如果未发现任何的网关服,会定时的重新取,并重连直到连上网关服为止,一个大厅服同时只会连接一个网关服

接受网关服转发过来的消息,进行真正的逻辑处理。

如果信息为房间的信息,则通过Redis发布订阅到指定的频道,让指定房间服接收消息

订阅以此服务器id的Redis频道,其它服得知服务器id可通过id发布消息到该频道

房间服

房间服会连接Redis然后订阅此房间名字的渠道,通常来说一组服务器内,房间名唯一的,也就是同时最多只有一台服务器服务于一个房间

房间服并不持有用户的实际对象,比如玩家进入斗地主服务器,大厅服只会把玩家的基本数据和斗地主相关的数据及服务器id发给斗地主房间服,所以对玩家来说他只有连上了任一一个大厅服,他就可以进这组服务的任意玩家,并且这个房间服的玩家不要求在同一个大厅服

房间服会定时把自己的房间及游戏类型及进入房间人数发布出去,由大厅服接收房间数据并解析

用户异常情况

用户掉线

用户掉线时会发布掉线消息,此用户的对象不会被立刻进行析构

如果此用户不在游戏状态中,则房间服接受到掉线消息,让玩家离开已进入的桌子,并且退出房间 如果此用户正在游戏中,则房间服会把消息推送给其它与之正在玩游戏的人,并自动为其拖管,直至游戏结束或者重连上来

用户登陆

  1. 如果此用户在别的服务器上登陆,或者已掉线但对象并没有被析构,则此时通知析构此玩家对象,等待析构完成之后跳转到2
  2. 正常的处理登陆流程,登陆成功后发布消息登陆成功,如果房间服接受到有此用户在此房间内,则推送消息给客户端上次进入哪个房间,进入后正常的参与游戏

项目地址

TDEngine

转载于:https://my.oschina.net/tickbh/blog/674719

TDEngine游戏平台框架逻辑相关推荐

  1. 基于JSF框架的在线棋牌游戏平台

    一.项目总体说明 1.1  项目总体说明 该项目是基于JSF框架的在线棋牌游戏平台,目前有五子棋和象棋两项已完成子模块,皆支持人机对战与在线匹配对战,其中象棋还支持大部分棋牌平台不支持的复盘功能.项目 ...

  2. python游戏服务器框架_mqant首页、文档和下载 - Golang/python语言开发的分布式游戏服务器框架 - OSCHINA - 中文开源技术交流社区...

    mqant mqant 是一款基于 Golang 语言的简洁,高效,高性能的分布式游戏服务器框架,研发的初衷是要实现一款能支持高并发,高性能,高实时性的游戏服务器框架,也希望 mqant 未来能够做即 ...

  3. 游戏开发心得——书籍篇——《游戏引擎框架》-导论

    游戏开发心得--书籍篇--<游戏引擎框架>-导论 FOR THE SIGMA FOR THE GTINDER FOR THE ROBOMASTER 简介: 学习<游戏引擎框架> ...

  4. 高性能分布式游戏服务器框架

    欢迎大家Fork mqant开源框架 为什么决定要重新造一个轮子? 目前网上优秀的开源游戏服务器框架也不少(当然与web框架比起来就少太多了),但总结起来都各有各的优缺点,下面列出我在选型过程中的一些 ...

  5. 网狐棋牌游戏平台服务器架构设计分析[转]

    网狐棋牌游戏平台服务器架构设计分析[转] http://blog.csdn.net/weiwangchao_/article/details/7047044 基本设计概念和处理流程 调用模型 模仿CO ...

  6. 转:高层游戏引擎——基于OGRE所实现的高层游戏引擎框架

    高层游戏引擎--基于OGRE所实现的高层游戏引擎框架 这是意念自己的毕业论文,在一个具体的实践之中,意念主要负责的是物件和GUI之外的其他游戏系统.意念才学疏陋,望众位前辈不吝赐教.由于代码质量不高. ...

  7. 高层游戏引擎——基于OGRE所实现的高层游戏引擎框架

    技术文档(Document) 来自:noslopforever的专栏 高层游戏引擎--基于OGRE所实现的高层游戏引擎框架 这是意念自己的毕业论文,在一个具体的实践之中,意念主要负责的是物件和GUI之 ...

  8. 微信小游戏提供服务器,发布到微信小游戏平台

    发布到微信小游戏平台 早在微信官方正式发布小游戏平台之前,Cocos Creator 团队就和微信开发团队合作完成了 Cocos Creator 对微信小游戏平台的支持.在小游戏正式公布之后,我们也在 ...

  9. python游戏服务器框架_有那些比较成熟的开源游戏服务器引擎/框架(编程语言不限)?...

    更新,没有看到服务器(逃. 下面仅为游戏引擎和框架推荐,需要的小伙伴简单看一下,正确的答案努力撰写中. 从角色扮演游戏到即时策略游戏,从冒险解谜游戏到动作射击游戏,甚至是只有一兆大小的迷你游戏,都有起 ...

最新文章

  1. Beyond Compare注册码
  2. ios LOL 英雄联盟 英雄头像展示
  3. 【报错笔记】Navicat连接数据库显示2003错误,无法连接到数据库
  4. 开篇 — 【面向对象设计模式学习】
  5. Integer源码解析
  6. VS Code 0.5添加ES6支持和Git工具改进
  7. 不要再纠结卷积的公式啦!0公式深度解析全连接前馈网络与卷积神经网络!
  8. MSCRM 报表显示 rsprocessingaborted 错误
  9. 理解文档对象模型(2)
  10. 已刷高格固件的路由器如何更换为潘多拉固件
  11. 软件开发中三员管理职责
  12. netware php_Linux中NetWare客户端简易安装说明(转)
  13. Leetcode——237. 删除链表中的节点(Java)
  14. 产品设计有哪些原则?
  15. ubuntu环境下增加-pie选项导致可执行程序无法通过双击启动的问题
  16. 人工智能芯片龙头之一gti概念股_AI芯片相关股票有哪些?AI芯片概念股票龙头一览...
  17. 微信公众号代运营的的技巧有哪些(1)
  18. 怎么修复linux受损文件,Linux文件数据损坏的快速修复办法-文件或目录损坏且无法读取...
  19. Android 中更改了默认app图标,在手机上还是显示默认图标
  20. Nexus Repository Manager 3 远程命令执行漏洞(CVE-2020-10204),CVE-2020-11444 越权漏洞

热门文章

  1. oracle查询结果展示,ORACLE构造查询日期展示结果
  2. python元祖切片_Python
  3. linux 非root身份安装java_Linux非root用户安装jdk和tomcat
  4. db2 查看表结构_数据库结构文档的生成利器
  5. 计算机工程专业院校排名,法国计算机工程专业大学排名(2020年USNEWS)_快飞留学...
  6. 让自己的网站变成暗黑模式
  7. jmeter中变量的作用范围_Jmeter参数化方式总结
  8. Android的EditText文字动态监听
  9. python用一行代码计算1~100的和(用reduce()和sum()内置函数实现)
  10. java解析xml乱码_大神们,我用DOM4j解析xml文档时,中文乱码