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

游戏战斗服随记

一 . 常规跨服玩法对服务器的需求

​ 服务器的需求:负载均衡,固定路由算法,rpc

  • 异步消息中间件

  • 中转服务器

  • gof(直连)


二 . 战斗玩法对服务器的需求

服务器的战斗选择:帧同步和状态同步都可以实现雷神的战斗,选择帧同步是为了更高效。

战斗跳过,战斗回放,战斗观战,这种需求在实现上客户端和服务器的战斗部分最好是一套代码,但是客户端需要表现和逻辑分离,所以代码实现上客户端写战斗更适合。

状态同步:

  • 战斗跳过等需求,单机客户端跑,多人实时战斗服务器跑。
  • 雷神同屏的英雄数基本都超过10个甚至超过30个,绝大部分都是跑ai,服务器运算ai部分需要更多的资源,每次心跳需要的时间会比较长,同步状态会有延迟,同一时间点多个客户端看见的动作效果完全一致略有难度。

帧同步:

  • 天然支持战斗回放,跳过,快进,观战

  • 在同步问题上有更大的优势

  • 客户端和服务器端一套代码,开发效率高,推进速度快

  • 雷神同屏英雄多,但是操作少,省流量

类帧同步:

  • 玩蟹现有的游戏一拳,拳皇,英雄学院类型的游戏,战斗和传统的回合游戏比较类似,战斗中存在战斗等待,多人玩法按照回合走,只需要控制好回合收集指令就可以。但是雷神游戏是及时的,不能有战斗等待,所以需要用帧号来记录出手技能和顺序。

三. 帧同步实践

  • 网络部分使用了公司现在有的方案kcp

  • 服务器4核 16g 1500人kcp初步压力测试没问题,服务器承载仍有较大的空间【内存res 1.5g,cpu100左右,load(3~7)】


四. 战斗验证技术方案

  • C#服务器--->C#战斗代码

  • java--->jni--->mono--->C#战斗代码

  • java--->jni--->.netcore--->C#战斗代码(集团的方案比较成熟)


五. 战斗验证服务器方案

  1. 战斗验证分优先级:
  • 缓存队列:根据战斗的优先级分为同步队列和异步队列,队列预设长度,超过队列长度时,同步队列收到的协议按验证超时处理,直接返回,异步队列直接丢弃

  • 同步验证:优先级高,验证时间有超时限制,验证结果需及时返回,通常是客户端进入战斗前就需要知道战斗结果。验证前需要检查一下在队列中等待的时间,如果已经超时,不验证,直接按照验证超时处理。当前主要是竞技场玩法

  • 异步验证:优先级低,验证没有超时限制,玩家正常都能通过的战斗,战斗结束不需要等待验证结果,临时相信客户端,直接发奖。异步队列缓存战斗消息,线程拿不到同步战斗时,开始拿异步战斗,战斗验证结果和预期结果不一致时,通知游戏服务器玩家作弊

  1. 战斗验证效率
  • 普通的pve,主线,竞技场玩法,战斗基本上50~120ms左右跑完
  • 大战场GVE,30个英雄一个boss,战斗时长10分钟,验证时长约3s
  • 对于多人玩法pvp,gve,战场英雄数量多,本身战斗时间特别长,不适合战斗验证服务器去验证,通过抽帧对比和战斗结果对比的方式验证

六. gof修改

在odin的基础上redis和mongo引入了异步方案

  • jedis 换成 lettuce,天然支持集群,性能提升1倍左右

  • mongo同步驱动换成异步驱动,性能上提升20%左右,虽然性能上没有太大的提升,原有基础上可以节省一步序列化和反序列化


七 . vms和global

公司原有的php版本的vms和global换成java版本,本亮后面会持续的维护和升级,满足后面的项目组使用

  • vms单点压测试: 内网机4c 16g 单台vms的qps建议为1200为参考点

  • global单点压力测试:

    内网机4c16g,mongo 8g

    无sdk校验时,qps建议为800-900为参考点

    有sdk校验(异步延迟20-50ms),qps建议为400为参考点


八 . 服务器结构图


九 . 当前服务器框架的问题以及需要改进的地方

问题:

  • 帧同步服务器和战斗验证服务器需要部署好多台,只能按照最大需求开起,平时利用率低,但是却不能随便减少

改进:

  • 线上集群节点增减对有状态的业务有一定的影响,需要想办法规避。

  • 弱网问题后面需要处理一下

http://www.gsyq.cn/news/34017.html

相关文章:

  • 2025年阻燃输送带生产厂家权威推荐榜单:尼龙输送带/三叶输送带/输送带源头厂家精选
  • 2025年水平桥架供应厂家推荐榜:顶级品牌盘点
  • 2025年水平桥架公司 top 10 权威推荐
  • 2025年口碑好的冲孔铝单板公司排名前十推荐
  • 技术探究:Air8000工业引擎赋能的WiFi AP文件管理系统实现剖析!
  • 图像处理效率神器:光影魔术手 4.7.2,小白也能秒出专业效果
  • 忍痛割爱,Spring Boot 宣布移除 Undertow!!
  • Git 免密认证:Git Credential Helper
  • 类和对象-对象的特性project4
  • 人人聘招聘系统:多端协同的企业招聘解决方案
  • 喵喵估价回收系统:一站式闲置回收解决方案,赋能回收行业数字化升级
  • 向量数据库chroma
  • 云原生向量数据库Milvus知识大全,看完这篇就够了[基本概念、系统架构、主要组件、应用场景]
  • Ubuntu Netplan
  • 2025年成品岗亭供货厂家权威推荐榜单:成品门卫亭/小区保安亭/执法岗亭源头厂家精选
  • 实时期货、黄金贵金属、外汇数据接口文档
  • python动态加载插件 - ling
  • 实用指南:C++设计模式_结构型模式_适配器模式Adapter
  • rbd元数据
  • 2025年不锈钢编织绳网柔性加工厂权威推荐榜单:不锈钢编织绳网围网/不锈钢手工编织绳网/焊接不锈钢编织绳网源头厂家精选
  • onBeforeMount 和 onMounted区分总结
  • Linux应用(6)——网络通信/TCP/IP - 详解
  • 2025 年 pe 板源头厂家最新推荐榜,技术实力与市场口碑深度解析,精选优质企业pp 板 pe 板/耐腐蚀 pe 板/耐磨 pe 板公司推荐
  • 关于如何解决HP笔记本键盘失灵的方法
  • ({behavior: smooth}) 在移动端不生效的问题解决 ios不平滑,使用smoothscroll-polyfill(页面平滑滚动)插件
  • ArkTS语言(三)
  • [转] 封装超时工具方法
  • 2025年激光熔覆涂层制造厂权威推荐:熔覆激光/高速激光熔覆/激光熔覆源头厂家精选
  • 学术会议会议合集 | 大数据、智慧医学 、数据管理 、计算机科学 、管理科学等EI会议合集
  • K8S使用开源CEPH作为后端StorageClass