|
|
4 tháng trước cách đây | |
|---|---|---|
| .. | ||
| .idea | 4 tháng trước cách đây | |
| .vscode | 4 tháng trước cách đây | |
| _excel | 4 tháng trước cách đây | |
| _proto | 4 tháng trước cách đây | |
| docs | 4 tháng trước cách đây | |
| etc | 4 tháng trước cách đây | |
| internal | 4 tháng trước cách đây | |
| nodes | 4 tháng trước cách đây | |
| tool | 4 tháng trước cách đây | |
| .gitattributes | 4 tháng trước cách đây | |
| AGENTS.md | 4 tháng trước cách đây | |
| Makefile | 4 tháng trước cách đây | |
| README.md | 4 tháng trước cách đây | |
| go.mod | 4 tháng trước cách đây | |
| go.sum | 4 tháng trước cách đây | |
基于Go语言和Cherry框架构建的SLG(策略类)游戏服务器,采用分布式架构和Actor模型。
F1游戏服务器是一个高性能、分布式的游戏服务端项目,核心玩法为地图沙盘系统。项目使用以下技术栈:
clone本仓库,通过bash来执行初始化命令protoc (v3.17.3) 和 protoc-gen-go (v1.36.8)make查询相关指令,执行make init进行项目初始化make chmod设置脚本权限| 组件 | 版本要求 |
|---|---|
| Go | 1.24+ |
| protoc | v3.17.3 |
| protoc-gen-go | v1.36.8 |
| MongoDB | 7.0+ |
| Redis | 8.0+ |
| NATS | 2.x |
注意:确保所有依赖版本满足要求,否则可能导致构建或运行问题。
f1-server/
├── nodes/ # 各个节点目录
│ ├── center/ # 中心节点
│ ├── game/ # 游戏节点
│ ├── gate/ # 网关节点
│ ├── master/ # 主节点
│ ├── web/ # Web节点
│ ├── chat/ # 聊天节点
│ ├── map/ # 地图节点(核心功能)
│ ├── record/ # 记录节点
│ ├── match/ # 匹配节点
│ └── ops/ # 运维节点
├── internal/ # 内部共享代码
│ ├── actor_remote/ # 远程调用
│ ├── component/ # 组件
│ ├── pb/ # 协议文件(自动生成)
│ ├── types/ # 自定义类型
│ └── ...
├── etc/ # 配置文件
│ ├── profile/ # 环境配置
│ ├── data/ # Excel数据(JSON)
│ └── script/ # 脚本文件
├── tool/ # 工具目录
├── docs/ # 文档目录
└── AGENTS.md # AI代理开发指南
地图沙盘是本项目的核心功能模块,包含以下特性:
详细文档请参考 README。
游戏服务节点是核心游戏逻辑处理中心,承载玩家会话和游戏主流程:
网关节点是客户端统一接入层,负责连接管理和请求路由:
详细文档请参考 README。
中心节点提供跨游戏服的中心数据与控制平面:
详细文档请参考 README。
主节点是节点发现服务,仅在NATS模式下使用:
Web节点处理对外HTTP业务,提供RESTful API:
聊天节点处理游戏内聊天功能:
记录节点处理游戏数据记录和日志存储:
运维节点提供运维相关接口和管理功能:
克隆仓库并初始化:
git clone <repository-url>
cd f1-server
make init
设置脚本权限:
make chmod
更新外部仓库:
make pull-excel
make pull-proto
构建项目:
make build
启动节点:
run -path=./etc/profile/dev.json -node=1
node 节点,每个服务进程都称为一个节点,通过节点类型进行归类pid 平台iduid 游戏内用户唯一idplayerID 玩家idopenID 第三方的用户唯一id(项目使用基于nats集群的架构)
etc/profile/ 目录下存放各环境的配置文件:
详细配置说明请参考 Profile配置文件说明。
nodes/main.go的run命令进行etc/profile/目录是否有您需要的profile配置dev环境,开发人员仅需启动game节点即可进行本地调试# 查看所有可用命令
make help
# 运行所有测试
go test ./...
# 运行特定测试文件
go test ./tool/test/slice/slice_test.go
# 运行测试并显示详细输出
go test -v ./path/to/test
# 运行单个测试函数
go test -run TestSpecificFunction ./path/to/test
# 运行基准测试
go test -bench=. ./path/to/test
# 运行测试并生成覆盖率报告
go test -cover ./path/to/package
# 更新外部仓库
make pull-excel # 更新Excel配置
make pull-proto # 更新protobuf协议
make pull-cherry # 更新Cherry框架(go work方式开发则有必要拉取cherry框架)
make chmod # 设置脚本权限
# 更新Excel仓库并转换为JSON
make pull-e # 拉取Excel仓库
make e # 转换xlsx文件到etc/data/并生成go文件到internal/data/
make build,根据提示选择对应的版本发布。docs/git-flow/ 目录下的git flow文档。Auto Crlf convert参数。AutoCrlf:false, SafeCrlf:falseSettings -> Editor -> Code Style -> Line Separator修改为Unix and MacosHeroID不能是小写如Heroid或者HeroIdAGENTS.mdgo https://go.dev/doc/installprotoc https://github.com/protocolbuffers/protobuf/releasesmake或make help 查看相关脚本指令make chmod 设置相关脚本的权限make init 初始化相关组件请参考 docs/git-flow/ 目录下的git flow文档了解开发流程。