编写配置表
Excel配置表文件在这个目录下 \BestGame\Config\Excel\Server
主机与数据库表
主机配置表
数据库配置表
先看上面主机配置表与数据库表,分别每条一个主机数据,数据库数据,这两个表很好理解
服务器Scene表
Scene配置表
再看上图是场景配置表,通常不考虑二级场景,熟悉后自然会发挥使用二级场景。
worldId
是对应数据库World配置表中的数据库Id,如果不用数据库就是0。
ServerConfigId
是服务进程表中的进程Id,这个Scene是哪个服务进程下的,就添哪个进程Id。
路由Id
每个服务场景有自己的路由Id,每个服务进程也有自己的路由Id,提供的配置表格文件中有表格公式,路由Id是通过多种Id计算而成的。
要理解Server与Scene的区别,内外网机制,可以看看 理解内外网发送机制,内网消息Handler如何获取session实例
如果要加一个Realm场景,就在下面像这样加一条数据:
服务进程表
服务进程配置表
如上图服务进程配置表,他的内网访问路由Id是在场景路Id基础上加worldId而成,避免与场景路由Id冲突,当然你也可以自由输入不与其它路由Id冲突的数字。
编写协议文件
proto协议源文件在这个目录下
BestGame\Config\ProtoBuf\Outer
,内网协议在Inner目录下。
练习时内外网协议都可以写在OuterMessage.proto
这个文件中,方便修改。
Proto文件头部定义
syntax = "proto3";
package Fantasy.Network.Message;
syntax是protobuf的协议版本,比如这个是proto3。
package是生成的消息对象使用的命名空间。
普通消息:
/// 发送一个消息到Gate服务器
message C2G_Message // IMessage
{
string Message = 1;
}
请求消息:
/// 注册账号
message C2R_RegisterRequest // IRequest,R2C_RegisterResponse
{
string UserName = 1;
string Password = 2;
}
message R2C_RegisterResponse // IResponse
{
string Message = 1;
}
普通寻址消息:
/// 移动操作
message C2M_UnitOperation // IAddressableRouteMessage
{
string Message = 1;
}
寻址请求消息:
message C2M_ExitRequest // IAddressableRouteRequest,M2C_ExitResponse
{
string Message = 1;
}
message M2C_ExitResponse // IAddressableRouteResponse
{
string Message = 1;
}
所有消息对象都是IMessage
或其子对象类型,{}
中定义的就是消息字段,也就是生成的消息对象的成员变量,这些属性在Protobuff中支持的类型及与C#中类型对应关系见下图。
每个字段 = 后面的数字是字段编号,作用只决定了生成的消息对象中属性的先后顺序,如何排序并无影响。
定义的消息字段编号就都从1开始。
protobuff消息数据类型
Protobuf 支持一系列标量值类型。 下表列出了全部标量值类型及其等效 C# 类型:
Protobuf 支持一系列标量值类型
标量值始终具有默认值,并且该默认值不能设置为 null
。
此约束包括 string
和 ByteString
,它们都属于 C# 类。
string
默认为空字符串值,ByteString
默认为空字节值。 尝试将它们设置为 null
会引发错误。
使用导表协议工具
导表工具在框架仓库根目录下的Tools中,可以复制Tools到 \BestGame\Tools\
导出配置表与协议的操作:
- 可以编辑ExporterSettings.json文件,确保能导出到自己项目正常的各个目录下
\BestGame\Tools\Exporter\ExporterSettings.json
知道是修改这个文件即可,课程练习项目的目录结构的情况下,不用修改。
- 点击运行
\BestGame\Tools\Exporter\Run.bat
导出配置表和协议 (mac或linux下要在命令行运行同样名的.sh脚本)
在命令行交互时,导出消息协议可以分别输入数字3,2,导出配置表可以分别输入数字3,4
如果不会做excel的表达式
服务器数量很多时,纯手动编辑配置表是很麻烦的,需要一些表达式来自动生成一些Id,如果不会做excel的表达式,可以直接下载提供的配置表文件进行修改。