项目名称:三国小将
项目介绍:2023年7月微信上线,是一款三国卡牌类游戏,30人项目编制,
技术栈: MySQL + Redis + GuavaCache + Jetty + Netty + Quartz + RabbitMQ
职责描述:
开发gvg玩法,引入netty长链接通讯方式,4核8g的机器JVM分配5g的内存,Jmeter测试:每秒吞吐量1万8千多,CPU压力不到30%
研究核心战斗系统和技能系统
负责本服和跨服大型玩法系统架构设计(副本、养成系统、活动、聊天、邮件、排行榜、走格子、跨服战,公会战等)
分析文档,设计底层数据结构,提供第三方接口,并分配开发工作,推进项目进度
负责后端项目框架维护和调整
开发易维护、可复用、可扩展、灵活性好的公共模块组件
使用docker部署新跨服环境(git、jdk、mysql、redis集群),解决服务器吞吐量问题
培养和对新人代码Review
项目难点:
随着游戏的线上运行,前期买量进行测试,bug对于在线运营的游戏收入和测试数据影响很大,关服和加班加点解决bug都需要时间
跨服数据的体积量越来越大,同步数据性能遇到瓶颈,如果盲目提高服务器配置会增加成本
战斗流程和技能系统增加频繁,特别是技能buff的后续增加存在互斥和克制的效果,容易因为考虑不周造成严重bug,且外挂泛滥,影响游戏生态
大型跨服项目,业务会随着时间产生变化,需要有一些的状态用于服务端和客户端的同步问题,需要服务端承担起项目沟通、推进的工作
解决方案:
开发补丁系统,利用java的反射机制,将要更新的json文件和class文件上传,修改JVM中的class文件和重读服务器中表对象对应的json文件。
在世界服战斗的高并发场景下,redis缓存玩家基础数据,线程池处理业务, 增大吞吐量
配置多台跨服服务器,根据游戏服业务将请求分散到不同的服务器上面,缓解高频跨服活动高频战斗 的cpu压力
引入Google Guava和Redis缓存,缓解数据库的读压力,来提高服务器性能,增加吞吐量
将战斗系统进行优化,所有技能效果都以buff的形式出现,以时间点(回合前、回合后、攻击前、攻击后等)来进行事件(攻击、buff的生成和销毁、进入下一回合)的触发和处理,事件彼此之间不存在强关联性,便于后续维护和扩展,不同技能效果通过增加buff和时间点来实现。
开发反作弊系统,设计时间校验和战斗校验两种方式,对堪堪通过校验的玩家进行日志追踪。
项目名称:三国纷争
项目介绍:2022年前出上线,一款经典重度三国卡牌游戏,30人项目编制,测试模型显示月流水可到达3000万左右
技术栈:Jetty + Mysql + Redis + GuavaCache + Quartz + Json + Guava + Docker
职责描述:
研发系统功能(跨服战、全服排行榜、系统养成、活动开发等)
对接微信推送接口和数数打点的玩家行为收集
微信版本的开发和维护
开发战斗系统
项目难点:
随着游戏的运营,游戏排行榜业务需求多、修改频率高、排序方式不同,影响开发效率,且采用mysql形式进行存储,读写压力大
客户端开发压力大,人员不足,往往服务端没有时间与客户端核心协议和数据
解决方案:
开发可扩展、高并发、高可用的排行榜系统,使用redis zset结构提供多种排序机制(名次、积分)避免因相同业务重复开发的人为bug,提高开发效率
调整开发流程,充分了解游戏流程,完成系统开发和协议数据,减少与客户端对协议的时间