|
|
vor 4 Monaten | |
|---|---|---|
| .. | ||
| .idea | vor 4 Monaten | |
| .vscode | vor 4 Monaten | |
| docs | vor 4 Monaten | |
| etc | vor 4 Monaten | |
| internal | vor 4 Monaten | |
| nodes | vor 4 Monaten | |
| tool | vor 4 Monaten | |
| .gitattributes | vor 4 Monaten | |
| AGENTS.md | vor 4 Monaten | |
| Makefile | vor 4 Monaten | |
| README.md | vor 4 Monaten | |
| go.mod | vor 4 Monaten | |
| go.sum | vor 4 Monaten | |
基于Go语言和Cherry框架构建的SLG(策略类)游戏服务器,采用分布式架构和Actor模型。
F1游戏服务器是一个高性能、分布式的游戏服务端项目,核心玩法为地图沙盘系统。项目使用以下技术栈:
clone本仓库,通过bash来执行初始化命令protoc (v3.17.3) 和 protoc-gen-go (v1.27.1)make查询相关指令,执行make init进行项目初始化make chmod设置脚本权限node 节点,每个服务进程都称为一个节点,通过节点类型进行归类pid 平台iduid 游戏内用户唯一idplayerID 玩家idopenID 第三方的用户唯一id(项目使用基于nats集群的架构)
nodes/main.go的run命令进行etc/profile/目录是否有您需要的profile配置dev环境,开发人员仅需启动game节点即可进行本地调试run -path=./etc/profile/su.json -node=master-1 启动master类型的节点,环境为dev,节点id为master-1run -path=./etc/profile/su.json -node=center-1 启动center类型的节点,环境为dev,节点id为center-1run -path=./etc/profile/su.json -node=gate-1 启动gate类型的节点,环境为dev,节点id为gate-1run -path=./etc/profile/su.json -node=gate-1 启动gate类型的节点,环境为dev,节点id为gate-1run -path=./etc/profile/su.json -node=web-1 启动web类型的节点,环境为dev,节点id为web-1run -path=./etc/profile/su.json -node=map-1 启动map类型的节点,环境为dev,节点id为map-1run -path=./etc/profile/su.json -node=3 启动game类型的节点,环境为dev,节点id为3run version 或 run v 或 run ver 查看节点版本信息nodes/{xxx}/{xxx}.go的Run函数进行etc/profile/目录是否有您需要的profile配置dev环境,开发人员仅需启动game节点即可进行本地调试run -path=./etc/profile/ryansu.json -node=master-1 启动master类型的节点,环境为ryansu,节点id为master-1run -path=./etc/profile/ryansu.json -node=center-1 启动center类型的节点,环境为ryansu,节点id为center-1run -path=./etc/profile/ryansu.json -node=gate-1 启动gate类型的节点,环境为ryansu,节点id为gate-1run -path=./etc/profile/ryansu.json -node=web-1 启动web类型的节点,环境为ryansu,节点id为web-1run -path=./etc/profile/ryansu.json -node=1 启动game类型的节点,环境为ryansu,节点id为1# 查看所有可用命令
make help
# 初始化项目(安装protoc-gen-go)
make init
# 构建完整项目(交互模式)
make build
# 非交互模式构建
make build <env> <update_excel> <publish>
# env: 1=dev, 2=test, 3=dev&test, 4=prod
# update_excel: y/Y/1 表示更新并导出Excel数据
# publish: y/Y/1 表示推送到发布仓库
# 仅构建源代码
make code
# 构建Excel数据文件
make excel
# 构建protobuf文件
make proto
# 清理构建产物
make clean
# 清理数据库
make clean_db
# 更新外部仓库
make pull-excel # 更新Excel配置
make pull-proto # 更新protobuf定义
make pull-cherry # 更新Cherry框架
# 设置脚本权限
make chmod
# 更新Excel仓库并转换为JSON
make pull-e # 从f1/excel.git更新excel仓库
make e # 转换xlsx文件到etc/data/并生成go文件到internal/data/
# 运行所有测试
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 build,根据提示选择对应的版本发布。docs/git-flow/ 目录下的git flow文档。make e导表etc/data/ 目录internal/pb/ 目录,基于 /f1/protocol.git 仓库生成etc/script/build_proto.sh脚本make pull-p 更新protocol.git仓库make proto 生成最终的协议文件nodes/map/README.md区设置一个网关地址。通过数据库center.area.gate字段进行设置SLB服务进行多网关节负载部署profile->cluster->discovery模式为nats时使用该节点client-cli: 客户端命令行工具,用于测试cleandb: 数据库清理工具proto-route: 协议路由工具test: 各种测试工具gorm的migrator功能管理数据库结构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 初始化相关组件f1-server/
├── nodes/ # 各个节点目录
│ ├── center/ # 中心节点
│ ├── game/ # 游戏节点
│ ├── gate/ # 网关节点
│ ├── master/ # 主节点
│ ├── web/ # Web节点
│ ├── chat/ # 聊天节点
│ ├── map/ # 地图节点(核心功能)
│ ├── pay/ # 支付节点
│ ├── record/ # 记录节点
│ ├── match/ # 匹配节点
│ └── ops/ # 运维节点
├── internal/ # 内部共享代码
│ ├── actor_remote/ # 远程调用
│ ├── component/ # 组件
│ ├── pb/ # 协议文件(自动生成)
│ ├── types/ # 自定义类型
│ └── ...
├── etc/ # 配置文件
│ ├── profile/ # 环境配置
│ ├── data/ # Excel数据(JSON)
│ └── script/ # 脚本文件
├── tool/ # 工具目录
├── docs/ # 文档目录
└── AGENTS.md # AI代理开发指南
地图沙盘是本项目的核心功能模块,包含以下特性:
详细文档请参考 nodes/map/README.md。
AGENTS.mddocs/git-flow/docs/ 目录克隆仓库并初始化:
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=10002
请参考 docs/git-flow/ 目录下的git flow文档了解开发流程。
[请在此处添加许可证信息]