工程参考/配置文件/Server/ShareMemInfo.ini

来自天龙知识库
跳到导航跳到搜索


首页 · 配置文件索引 · 修改约定

ShareMemory 负责共享数据的存储处理。本文件中的 Key 与 ServerInfo.ini、WorldInfo.ini 的共享内存键相互对应;改错键可能让进程连接到不同的数据区域,不能把它们当作随意编号。

位置与生效 · 字段详解 · 修改实例 · 验证与排查

文件位置与生效

项目 说明
服务器运行路径 Server/Config/ShareMemInfo.ini,以程序实际工作目录为准;源码 resources 中的文件是样本。
主要使用者 主要使用者为 ShareMemory;Server 和 World 使用其中关联的数据键
生效方法 这六份文件通过公共初始化流程读取,主要使用者在本页标明;不需要把它们复制到玩家客户端。重新加载配置的入口没有重读本页字段。修改后按正常流程保存并停服,再重启使用这份配置的程序;服务共用同一 Config 目录时,相关进程须使用一致配置。
样本格式 UTF-8,换行为 CRLF;保留原编码、节名、键名与换行,不自动改成 UTF-8。

[System] 配数据库和周期,[ShareMem] 从 Key0/Type0 开始逐对列出共享数据。KeyCount 是条目数量,不是键的最大数值。

文件格式

使用 [节名] 与 Key=Value。节名和键名按源码拼写保留;本读取器按大小写精确匹配,节标题从行首开始。推荐沿用原有 CRLF 换行,在单独一行用分号写注释,不向值里插入制表符,也不依赖引号转义。详细读取边界见修改约定。

字段详解

表中“必填”表示读取代码要求存在,并不表示程序已校验业务取值合法。序号字段中的 [n] 表示按数量展开,不能原样写成带 [n] 的键。

[System]

项目与类型 含义与修改要点 缺项或特殊值
DBIP
字符串,地址
保存配置中的数据库主机地址。当前核对的 ODBC 连接代码没有把它传入 SQLConnect;实际主机由 DBName 指定的数据源配置决定。修改它不能代替修改 ODBC 数据源。 原配置必填;读取失败会进入断言/错误路径,不把缺项视为采用默认值。
DBPort
整数,端口
保存配置中的数据库端口。当前连接调用不使用此值建立连接;实际端口在对应 ODBC 数据源中设置。不能填游戏或登录端口。 原配置必填;读取失败会进入断言/错误路径,不把缺项视为采用默认值。
DBName
字符串,ODBC 数据源名
作为 SQLConnect 的数据源名称传入。它要对应服务器电脑上已配置的 ODBC DSN;不一定等于数据库中的库名。数据源内部还需选对实际数据库。 原配置必填;读取失败会进入断言/错误路径,不把缺项视为采用默认值。
DBUser
字符串
连接数据库使用的用户,不是玩家账号或 Wiki 账号。应具有目标数据库所需权限。 原配置必填;读取失败会进入断言/错误路径,不把缺项视为采用默认值。
DBPassword
字符串
DBUser 对应的数据库凭据。填写自己的值,不照抄示例;格式还受本程序的 CryptPwd 处理影响。 原配置必填;读取失败会进入断言/错误路径,不把缺项视为采用默认值。
CryptPwd
整数,建议使用明确的 0 或 1
大于 0 时用 Seraph::string2pwd 解码配置中的数据库密码;小于等于 0 时直接使用字符串。它不是玩家登录密码的加密开关,也不能把任意密文填写进来。 原配置必填;读取失败会进入断言/错误路径,不把缺项视为采用默认值。
SMUInterval
正整数,毫秒
多类共享数据检查/保存逻辑使用的周期,10000 为 10 秒。并非所有类型统一采用它:全局数据分支使用固定 30 秒。降低周期会增加处理负担,实际保存结果需要实测。 原配置必填;读取失败会进入断言/错误路径,不把缺项视为采用默认值。
DATAInterval
正整数,毫秒
用于角色数据写入任务的后续保存时间安排。它不是数据库超时,也不保证所有类型每隔这个时间写一次。 原配置必填;读取失败会进入断言/错误路径,不把缺项视为采用默认值。

[ShareMem]

项目与类型 含义与修改要点 缺项或特殊值
KeyCount
正整数,条目数量
循环读取 n=0 到 KeyCount-1 的 Key[n] 与 Type[n],两项都必须存在。样本列出 11 对,但数量须按实际部署核对。 原配置必填;读取失败会进入断言/错误路径,不把缺项视为采用默认值。
Key[n]
整数,共享内存键
对应 ServerInfo.ini 或 WorldInfo.ini 中同一数据用途的键,所有使用者保持一致。不是端口、容量、表行号或玩家 GUID。 启用序号内必填。
Type[n]
整数,数据类型
1 角色;2 帮会;3 邮件;4 玩家商店;5 全局数据;6 寄售商店;7 物品序列号;8 珍兽创建;9 城市;10 帮会联盟;11 交友广告。-1 是无效标识,不用来禁用有效条目。 启用序号内必填;与同序号 Key 配对。

常用修改实例

以下均是局部教学片段,修改原文件对应位置,不能覆盖整份文件。IP、编号、周期均为教学值。

在测试环境调整共享数据处理周期

修改前的教学片段:

[System]
SMUInterval=10000
DATAInterval=60000

修改后:

[System]
SMUInterval=20000
DATAInterval=60000

教学示例把采用 SMUInterval 的周期从 10 秒改为 20 秒,DATAInterval 继续保持 60 秒。先正常完成保存和停服,备份原文件,再修改这两行中的第一行;保留数据库、KeyCount 及所有键。这会降低部分处理频率,但不代表统一改变全部数据的落库间隔。

验证与排查

逐对检查键与类型,再检查数据库连接和保存日志。在独立测试环境修改角色数据、正常停服后重启检查持久化结果;本页没有实际执行该测试。

不要强制结束正在保存的 ShareMemory;不要为了测试本页而清空共享内存或修改线上数据键。完成正常保存后再停服。数据库也使用 ODBC 数据源,DBIP/DBPort 不能代替 DSN 内的连接设置。

关联与依据

ServerInfo.ini · WorldInfo.ini · LoginInfo.ini

服务端外网设置 · 登录器配置 · Lua 接口索引

  • Common/ServerBase/Config.cpp:加载位置、字段读取与重新加载范围
  • Common/ServerBase/Config.h:初始化值与配置结构
  • Common/ServerBase/Ini.cpp:INI 实际解析规则
  • Common/ServerBase/Ini.h:读取失败与返回方式
  • Common/ServerBase/FileDef.h:运行时相对路径
  • Common/GameDefine2.h:程序类型与共享内存类型枚举
  • Server/Server_2026_Project.props:当前 Windows 工程的条件编译定义
  • Server/Server/ShareMemory/ShareMemory/ShareData/SMULogicManager.cpp:字段使用、连接或数据处理分支
  • Server/Server/ShareMemory/ShareMemory/DB/ShareDBManager.cpp:字段使用、连接或数据处理分支
  • Server/Server/ShareMemory/ShareMemory/Main/ShareMemory.cpp:字段使用、连接或数据处理分支
  • Common/DBSystem/DataBase/ODBCInterface.cpp:ODBC DSN 连接调用
  • Common/ServerBase/TimeManager.cpp:计时单位

核对范围为当前维护源码与配置样本;未启动游戏、服务端或数据库。配置解析测试与游戏业务测试分开记录;文中运行效果仍需要实测。