game 项目 github地址
作用
game项目是游戏的主要逻辑。本文将对game的主要目录和文件先做一个说明,后面会根据具体业务做进一步讲解。
如何使用
1.启动game服务
参考前面的章节,搭建好环境。
check out proj 项目到本地后,进入game目录
打开文件: config_deploy/server.config
配置 game_mongo_cfg 和 端口,别的参数先不理
打开terminal,输入命令 $ rebar3 shell 启动服务 没有报错则启动成功
2.启动测试
进入stress目录
打开terminal,输入没命令 $ rebar3 shell 启动服务 没有报错则启动成功
在erl交互界面,继续输入 ts_test_login:do_test() 测试登陆。没有报错则创角登陆成功
继续跑test_suit 下面给个业务模块的测试用例
3.开发参考
- 开发的时候在game_tpl项目或者在game下找到对应类似的模板
- 用工具的替换功能把 gtpl 替换成业务名称,比方 hero
- 把生成的文件加入到项目中,这样就可以实现模块之间结构的一致性
- 按照当前业务修改生成的代码
- 开发完成后写测试用例测试功能,也可以TDD,先写测试功能(建议只写主流程测试,游戏业务经常改动,不适合做全面的测试覆盖)
主要目录
comm 目录,一些业务无关的通用模块
- comm/mongo 数据持久化,统一用 game_mongo_dao 做业务的dao层。
- comm/game_cfg 游戏配置,会读取 config_deploy/server.config 生成对应的配置。
- comm/game_rpc 给es_game生成的脚本开发的rpc服务,根据自己需要进行扩展。
- comm/user_default 和erlang虚拟机交互的时候使用的方法的重定义,比方q(),为了防止线上误操作使用该命令关掉服务,这个方法重写了。
cross 目录,跨服业务(跨节点的业务),后面按业务分章节逐个讲解。
local 目录,本地业务(同节点内的业务),后面按业务分章节逐个讲解。
role 目录,玩家进程内的业务
- role/role_create 创角逻辑。
- role/role-gw tcp网关逻辑,创建tcp链接,封包,解包,业务分发等,根据登陆用例边调试边看代码。
- role/role_online 玩家进程内业务,每个玩家登陆的时候都会拉起一个玩家进程,处理和该玩家相关的业务。玩家下线一段时间后会自动关闭进程,回收资源。