Getting Started - changnet/MServer GitHub Wiki

如何使用框架进行开发

学习使用一个游戏框架,基本的步骤都一样:

  1. 建立开发环境,包括编译环境,运行环境(DB等)。
  2. 了解架构,包括服务器的进程、线程结构图,那个进程、线程处理什么逻辑。
  3. 了解协议流程,包括协议接收、转发、处理、打包、发送,通常从登录协议开始。
  4. 模块的写法,包括目录、文件构成、常量定义。
  5. 配置,包括配置格式(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管理,不影响版本管理
    • 快捷部署,无论是线上还是私服,还是需要编译引擎,不需要额外调整目录。使用单个默认配置文件即可起服