游戏项目,我始负责项目架构,开发核心模块功能。
1) 开发内部框架
- Netty+Protobuf 的底层通信框架,有自动生成接口代码、批量广播优化、限流、加解密等功能;
- 数据层框架,简化 Mongodb 操作,自动生成查询 Key和 Update 语句;
- 一些并发工具类库;
2) 搭建分布式服务
利用 Spring Clould、Nacos、Sentinel 搭建分布式服务框架。开发分布式的聊天和好友系统,可多点部署实现可扩展和高可用,在 Redis 缓存操作上利用 lua 脚本组合原子操作,实现并发安全。
3) 搭建 DEVOPS 流程
实现从提交代码到部署服务器全自动,提高协作效率。在项目后台的 web 页面可以选择服务器代码版本一键部署。使用的工具有Gitlab/Gradle//Nexus/Jenkins/K8S/Docker 。自己写 web 后端调用K8S的 API 实现自动部署。
4)开发游戏服务器核心模块
游戏类型是大地图的 SLG ,并且有不同场景的玩法,比如全服大地图、单人刷副本、活动组队,不同的玩法有基本相同的行军和战斗规则。在代码复用和性能优化方面非常具有挑战性。
为此我们将世界抽象成一个独立的项目模块以复用代码,用 Guice 框架实现数据隔离和依赖注入。实现多线程的行军和战斗系
统。我们的行军操作延迟可以优化到150ms ,而已经上线多年的竞品 ROK 操作延迟上限是1s. 还开发了异步数据回写模块,在数据多线程频繁修改的情况下,使数据的存储能够兼顾安全和性能。