本项目是一个基于Due框架实现的第三人称射击(TPS)游戏服务器框架,支持分布式部署,包含完整的游戏核心功能模块。
- 框架: Due v2.4.1
- 语言: Go 1.23+
- 网络协议: TCP + WebSocket + Protobuf + RSA加密
- 服务发现: etcd
- 节点通信: gRPC
- 配置管理: YAML + TOML本地配置
- 缓存: Redis v9
- 数据库: MongoDB
- 消息队列: Kafka
- 安全: RSA加密保护
- 账号密码登录认证
- RSA加密保护
- 登录排队系统
- 会话管理
- Token生成与验证
- 客户端连接管理
- 消息转发
- 心跳检测
- 连接安全验证
- 玩家信息管理
- 房间匹配
- 游戏状态同步
- 社交功能支持
- PVE/PVP战斗系统
- 战斗状态同步
- 伤害计算
- 战斗结算
- 战斗数据通过Kafka传输
- 数据持久化
- 数据同步
- 数据备份与恢复
- 性能优化
├── configs/ # 配置文件
│ ├── gate/ # 网关服务配置
│ ├── job/ # 任务服务配置
│ └── node/ # 节点服务配置
├── define/ # 数据模型定义
├── mode/ # 运行模式模块
│ ├── battle/ # 战斗服务
│ ├── dbmgr/ # 数据库管理服务
│ ├── gate/ # 网关服务
│ ├── lobby/ # 大厅服务
│ └── login/ # 登录服务
├── proto/ # Protobuf定义
├── test/ # 测试代码
│ └── client/ # 客户端测试
├── utils/ # 工具类
├── go.mod # Go模块定义
├── go.sum # 依赖校验文件
├── deploy.md # 部署文档
└── README.md # 项目说明文档
- Go 1.23+
- MongoDB
- Redis 7+
- Kafka
- etcd
# 设置Go代理(国内用户推荐)
export GOPROXY=https://goproxy.cn,direct
export GOSUMDB=off
# 安装依赖
go mod tidy
go mod download在启动前,需要配置以下服务:
- MongoDB连接
- Redis连接
- Kafka连接
- etcd连接
- RSA密钥配置
项目采用微服务架构,各服务需要单独启动,并指定配置文件:
# 启动登录服务
cd mode/login
go run main.go
# 启动网关服务
cd mode/gate
go run main.go --etc=../../configs/gate.toml
# 启动大厅服务
cd mode/lobby
go run main.go --etc=../../configs/lobby.toml
# 启动战斗服务
cd mode/battle
go run main.go --etc=../../configs/node/node-1.yaml
# 启动数据库管理服务
cd mode/dbmgr
go run main.go --etc=../../configs/node/node-2.yaml- 本框架默认单进程玩家数量上限可在对应服务的配置文件中调整
- 各服务模块支持分布式部署,通过etcd进行服务发现
- 所有敏感数据(如密码)通过RSA加密传输
- 战斗数据实时通过Kafka进行异步处理
- 配置文件中的RSA密钥需要提前生成并正确配置
- 新增功能模块请参考现有模块结构,在mode目录下创建对应的服务
- 消息定义需在proto/pb目录下添加对应的proto文件
- 数据模型定义在define目录下
- 关键操作请添加日志记录
- 性能瓶颈部分可考虑添加Redis缓存
- 配置文件需根据实际环境进行调整
- 战斗同步算法优化
- 服务器负载均衡策略改进
- 数据分片存储
- 添加监控告警系统
- 自动化运维部署脚本
- 服务熔断和降级机制
- 更完善的错误处理和重试机制