Getting Started - changnet/MServer GitHub Wiki
如何使用框架进行开发
学习使用一个游戏框架,基本的步骤都一样:
- 建立开发环境,包括编译环境,运行环境(DB等)。
- 了解架构,包括服务器的进程、线程结构图,那个进程、线程处理什么逻辑。
- 了解协议流程,包括协议接收、转发、处理、打包、发送,通常从登录协议开始。
- 模块的写法,包括目录、文件构成、常量定义。
- 配置,包括配置格式(excel、json)、规则(怎么写)、转换(转换为前后端特定格式)、读取。
最后,自己写个简单的模块,就入门了。其他的应用,比如定时器什么的,参考一下已有的代码即可。 对于一个旧项目,更重要的是理解业务逻辑,比如玩家背包有哪些api,道具有哪些设定。
目录结构
MServer
|-- engine(引擎源代码目录)
| |-- deps(外部子模块依赖)
| |-- package(一些特定版本的二进制第三方包)
| `-- src(引擎源代码)
|-- server(服务器目录)
| |-- bin(主程序二进制文件部署目录)
| | |-- .build(C++编译临时目录)
| | |-- log(运行时日志输出)
| | `-- runtime(运行时临时数据存储)
| |-- certs(认证文件目录,如果启用SSL才用到)
| |-- config(导出的配置,由工具导出)
| |-- c_module(lua的c模块,兼容lua的加载方式)
| |-- fbs(FlatBuffer相关文件)
| |-- pb(protobuf相关文件)
| |-- proto(协议定义,由工具导出)
| |-- setting(服务器配置)
| `-- src(服务器业务逻辑源代码)
|-- project(一些开发相关的工程文件,比如makefile、valgrind配置)
|-- rawresource(原始的资源,主要是一些配置,这个应该由策划管理,这里做个样本)
| |-- rawconfig(原始的excel配置)
| `-- rawproto(原始的协议定义xml文件)
`-- shell(一些开发相关的脚本)
- 这样设计目录结构的原因有几点
- 方便部署,只需要把server目录部署出去,不包含多余的文档、代码(比如C++代码)
- 权限隔离,引擎目录和server目录分开,方便权限管理。策划、测试开私服只用server目录即可
- OutOfSource,临时文件(编译文件、配置、日志...)等都在bin目录,不在git管理,不影响版本管理
- 快捷部署,无论是线上还是私服,还是需要编译引擎,不需要额外调整目录。使用单个默认配置文件即可起服