当前位置: 首页 > news >正文

关于ue4 射击游戏架构设计

传统mmo的服务器架构

网关--->游戏逻辑服--->游戏db服
网关---> 游戏逻辑服--->关系服务器master

其结构简单,方便维护,但是在应对射击游戏时候暴露出很大的缺陷

但是随着大dau产品的像和平精英等游戏问世

腾讯主要的服务器是基于tbus4j,基于共享内存+ socket的数据交互,该框架的相对重度在外面资料相对比较少,基本基于共享内存可以支持的c++重启,因为网关tconnd + lobby是都是共享内存交互,tconnd基本上不重启,如果涉及到加字段的,lobby 是需要重启,天美王者的底层是这样去实现,晚上经常看到他们重启。

和平的是用Lua,基于tbus 的tapp 导出lua run ontick onstop onreload作为程序入口,基于tbus 导出发送、接收数据的回调。

在针对遍历玩家行为,采用类似遍历玩家行为采用分帧做法去处理,内存增长多少以后启动GC,这个值要适当,否则会造成明显CPU锯齿,根据各个系统去取制定

基于数据Table去pack可以做到支持无间断更新,还有采用版本号去支持跨版本DS,这样可以让玩家尽量的留存在游戏,避免更新。

腾讯的产品使用TcaplusDB,做为数据数据库,在数据库保存上采用最新版本号保存,防止数据覆盖问题。

为了防止的单点,在仲裁服那边采用租赁协议+tcaplushdb的最新版本号机制去,实现主从的切换,仲裁服获取最新续约的时间,然后同步到路由服,路由服更新的仲裁服的节点状态。

网关 -->游戏逻辑服 --->游戏db服

                路由服务 

                索引服

                仲裁服

                 好友服

                 军团服

                  房间服

                 匹配服

                 对战服管理服

                 邮件服

                 聊天频道服

像邮件服都才采用Lru的机制去做设计的,缓存热数据在队列的,淘汰没用的数据

在分布式的负载均衡,hash 算法、主从、rand,id的生成在大厅这边生成,确保可以hash 到目的服务器,提高负载能力

对战服管理服,采用开房间,主要是采用fork的参数机制的,定时的上报的机器的负载信息,cpu、内存、房间数、真人数,房间服那边的跟筛选压力最低的战斗服,然后同步到战斗管理服,由战斗管理服去分配的端口,然后通知客户端,客户端再去连接的对战服的端口、IP,然后进行战斗,战斗结束后把战报发送战斗管理服,由它经过路由再转发到大厅,如果玩家在线,直接保存在到历史的战绩,如果不在线保存到离线数据,等玩家上线再加载处理离线数据,然后加入到历史战绩。

匹配服,玩家点匹配然后根据的玩家hash到对应匹配服,根据2人组 4人组 单人组,进行男女混合搭配,在匹配队列是根据段位的设计的slot挂在这些队伍信息,然后优先筛选的属于玩家段位附近的,超时再扩展扫描段位的,然后分组的,把匹配成功后把把队伍信息通知到roomsvr。roomsvr再把筛选到的ds战斗管理服,把房间队伍消息转发过,在上飞机前,房间不够的从再去转到匹配服再去补人,如果再补不到人最后补机器人。机器人段位信息采用的是真人的段位四个码求和的除总人的均值,然后再把消息转发到ds。

基于

和平的协议主要lua table 动态协议,有点动态扩展,缺点也明显很难维护的。

压缩算法 采用的是lz4具备有 压缩、解压缩性能高的特点

http://www.lryc.cn/news/279240.html

相关文章:

  • vc++开发地图
  • 轻量化的yolov8部署到安卓Android手机端
  • 分块矩阵的定义、计算
  • NAND系统性能提升常见方案
  • 集简云动作管理平台上线:创建强大且可分享的AI助手(GPTs)
  • 机器人制作开源方案 | 基于混合现实的可移动机械臂平台
  • JavaScript基础03
  • CMake入门教程【实战篇】使用开源库cmake-modules简化项目开发与维护
  • 基于TOP204的开关电源电路图
  • CES 2024上的AI亮点
  • Canopen学习笔记——sync同步报文增加数据域(同步计数器)
  • CRLF检测工具汇总
  • vue、element-ui使用el-tooltip判断文本是否溢出
  • 高防dns服务器租用有哪些应用场景?-速盾cdn
  • 使用 Goroutine 和 Channel 来实现更复杂的并发模式,如并发任务执行、并发数据处理,如何做?
  • 7个向量数据库对比:Milvus、Pinecone、Vespa、Weaviate、Vald、GSI 和 Qdrant
  • 【正点原子】STM32电机应用控制学习笔记——8.FOC简介
  • Salesforce财务状况分析
  • 服务器管理平台开发(2)- 设计数据库表
  • Python基础知识:整理13 利用pyecharts生成折线图
  • java项目之家政服务中介网(ssm)
  • Spark的内核调度
  • C++代码重用:继承与组合的比较
  • 暴打小苹果
  • 【BetterBench】2024年都有哪些数学建模竞赛和大数据竞赛?
  • Vue-9、Vue事件修饰符
  • 前端面试题集合六(高频)
  • 使用Pygame库创建了一个窗口,并在窗口中加载了一个名为“ball.png“的图片,通过不断改变物体的位置,实现了一个简单的动画效果
  • 常见的AdX程序化广告交易模式有哪些?媒体如何选择恰当的交易模式?
  • VCG 网格平滑之Laplacian平滑