介绍
这是一个系列
探索 Golang 云原生游戏服务器开发,5 分钟上手 Nano 游戏服务器框架 | https://juejin.im/post/6870388583019872270
探索 Golang 云原生游戏服务器开发,根据官方示例实战Gorilla WebSocket的用法 | https://juejin.im/post/6872641375297339399
探索 Golang 云原生游戏服务器开发,Nano 内置分布式游戏服务器方案测试用例 | https://juejin.im/post/6877028133116706823
探索 Golang 云原生游戏服务器开发,Nano 分布式(集群)示例(Distributed Chat) | https://juejin.im/post/6878706308682350605
示例仓库
官方仓库:nanoserver | https://github.com/lonng/nanoserver
为方便使用 Docker Compose 进行二次开发,笔者改过的仓库:Hacker-Linner/nanoserver | https://github.com/Hacker-Linner/nanoserver
服务器
编写 Dockerfile.dev
FROM golang:
构建本地开发 Image
docker build -f Dockerfile.dev -t scmj-server:dev .
编写 mysql.cnf
[client]wait_timeout = 28800
quick
max_allowed_packet = 500M
[myisamchk]
key_buffer_size = 8M
sort_buffer_size = 8M
read_buffer = 4M
write_buffer = 4M
编写 docker-compose.mysql.yaml
version:
一键启动 MySql 和 Adminer
docker-compose -f docker-compose.mysql.yaml up -d
登录 Adminer 管理界面
我们进入 http://localhost:8086,使用如下配置登录:
系统:
MySQL
服务器:
db
用户名:
root
密码:
123456
数据库:
scmj
加入 launch.json
方便 VSCode 调试
{
"version": "0.2.0",
"configurations": [
{
"name": "nanoserver",
"type": "go",
"request": "launch",
"mode": "remote",
"remotePath":"/workspace/app",
"port": 2345,
"program": "${workspaceFolder}",
"env": {
"GO111MODULE":"on"
},
"args": [],
"trace": "log",
"showLog": true
}
]
}
加入 .air.toml
# Config file for [Air](https://github.com/cosmtrek/air) in TOML format
编写 docker-compose.dev.yaml
"3.4"
使用 docker-compose 调试
docker-compose -f docker-compose.dev.yaml up scmj-debug
使用 docker-compose 开发
docker-compose -f docker-compose.dev.yaml up scmj
因为 nanoserver 使用了 xorm,它会自动的根据定义的 model
生成数据库表 schema
。
XORM 同步数据库
重新查看 Adminer,发现在 scmj
数据库中,xorm 已经为我们生成了表。
相关代码是:
....
func syncSchema() {
database.StoreEngine("InnoDB").Sync2(
new(model.Agent),
new(model.CardConsume),
new(model.Desk),
new(model.History),
new(model.Login),
new(model.Online),
new(model.Order),
new(model.Recharge),
new(model.Register),
new(model.ThirdAccount),
new(model.Trade),
new(model.User),
new(model.Uuid),
new(model.Club),
new(model.UserClub),
)
}
...
客户端
这里我们直接使用 nanoserver 作者提供的 apk
。
安装安卓模拟器
这里我推荐网易的 MuMu模拟器。
安装 APK
mahjong.apk,已经放到笔者修改过的项目中。这里我们使用多开助手,开4个空来血战。
客户端登录
我们点击微信登录。
发现登录失败……
解决客户端登录失败问题
当然这问题,也好解决:
按作者所说那样,反编译
apk
,找到appConfig.luac
,使用二进制编辑器改完服务器地址,然后重新打包。
直接使用代理,如
Charles
进行请求地址转发。(本地调试服务器程序完全够了)
Charles 对客户端请求地址转发
使用 Map Remote
映射到你本机调试的地址就完全够了。
加入 guest 测试渠道 konglai
重新登录进入游戏
完美,搞定。