ggApp是一个基于gg的游戏服务器示例, 引擎使用skynet,上层使用Lua开发。
开发阶段(Make it work)
- 对skynet引擎无任何修改
- 易于使用
使用ggApp-ansible一键部署,他会自动帮我们 安装必要软件,安装依赖,生成db配置文件等.
-
检出
cd ~ && git clone https://github.com/sundream/ggApp --recursive
-
依赖项
-
工具/库
- ubuntu18.04
# in ubuntu 16.04,you need change readline-dev to libreadline-dev sudo apt install -y protobuf-compiler protobuf-c-compiler readline-dev autoconf git subversion telnet netcat libcurl4-openssl-dev
- centos
sudo yum install -y protobuf-compiler protobuf-c-compiler readline-devel autoconf git subversion telnet nc libcurl-devel
- ubuntu18.04
-
其他工具(非必要安装)
- lua-5.3.5
- python-2.7.15
curl -R -O https://www.python.org/ftp/python/2.7.15/Python-2.7.15.tgz tar -zxvf Python-2.7.15.tgz cd Python-2.7.15 ./configure make sudo make install
- luarocks for lua5.3
git clone https://github.com/luarocks/luarocks cd luarocks ./configure --lua-version=5.3 --with-lua-include=/usr/local/include make build sudo make install
-
-
安装DB(框架默认使用redis)
-
编译accountcenter
accountcenter是基于openresty实现的,并且没有使用第三方C库,因此 编译好openresty即可
-
编译gamesrv
cd ~/ggApp/gamesrv make linux # make macosx
-
运行accountcenter
- 首次启动准备工作
cd ~/ggApp/accountcenter mkdir -p logs
- 启动
openresty -c conf/account.conf -p . &
- 关闭
openresty -c conf/account.conf -p . -s stop
- 重新加载
openresty -c conf/account.conf -p . -s reload
- 首次启动准备工作
-
导入服务器列表
# 首次启动/服务器配置有变动时执行 python tools/script/import_servers.py --appid=appid --config=tools/script/servers.dev.config
-
生成服务器配置文件
# 服务器配置有变动时执行 python tools/script/generate_gamesrv_config.py --appid=appid --config=tools/script/servers.dev.config --accountcenter=127.0.0.1:8887 --out=~/ggApp/gamesrv/src/app/config
-
运行gamesrv
-
首次启动准备工作
cd ~/ggApp # gamesrv_1为服务器名 ln -s gamesrv gamesrv_1 mkdir -p gamesrv_1/log
-
直接启动
cd ~/ggApp/gamesrv_1/skynet ./skynet ../src/app/config/gamesrv_1.config // 启动后成功后控制台会提示start,另外log/game/game$DATE.log会记录启服/关服日志 // 你也可以在控制台中执行任何lua代码
-
shell管理
cd ~/ggApp/gamesrv_1/shell sh status.sh # 查看状态 sh start.sh # 启动 sh stop.sh # 关闭 sh restart.sh # 重启 sh kill.sh # 强制关闭
-
执行gm指令
cd ~/ggApp/gamesrv_1/shell sh gm.sh #提示用法 sh gm.sh 0 help help sh gm.sh 0 exec 'print(\"hello\")' curl 'http://127.0.0.1:18888/call/8 "gm","0 exec print(\"hello\")"'
-
see client/README.md
see robot/README.md
- 节点结构
账号中心: 负责账密验证,充值回调验证等 游戏服: 负责游戏玩法逻辑(根据不同需求可划分成不同功能服) DB集群: 默认采用redis集群(你也可以选择使用mongo集群)
- 内部结构
说明: 这里的结构并不包括skynet本身启动的服务 网关服务: 管理客户端连接,协议编码,协议加解密等。目前支持tcp,kcp,websocket网关,可选择使用/混合使用 主服务: 负责游戏主要玩法逻辑,我们推荐大部分玩法在主服务实现,特定玩法可自定义服务实现 Logger服务: 日志处理
- 大致目录结构
+~/ggApp
+accountcenter // 账号中心
+gamesrv // 游戏服
+src
+gg // 基础代码
+app // 游戏逻辑
+proto // 协议
+shell // 启服/关服等脚本
+client // 简易客户端(如可用来给服务器发送协议,快速登录等)
+robot // 压测工具
+tools // 其他工具
+script // 部分管理脚本
+~/db // db(包含示例配置)
+redis // redis集群
+mongodb // mongo集群
- 生成文档
如果没有安装ldoc,可用以下指令安装 sudo luarocks install ldoc 目前gg和accountcenter进行了文档注释,可以用ldoc工具导出html文档,如: cd accountcenter ldoc . 执行后将会生成doc目录,用浏览器打开doc/index.html即可查看文档
- 查看Wiki来了解更多细节
ggApp is licensed under the MIT License,Version 0.0.1. See LICENSE for the full license text.