模组简介
Protobuf加载器是面向《黑神话:悟空》模组开发者打造的底层运行时数据加载工具,普通游戏玩家本身不会直接用到这个模组的功能,只有当你安装的其他功能类模组明确标注依赖该加载器时,才需要额外部署它来让对应功能正常生效。传统的黑神话数据类修改模组大多采用pak打包的形式分发,一旦多个模组同时修改同一个数据表的不同条目,很容易出现内容互相覆盖的冲突问题,需要用户手动合并pak文件才能同时运行多个同类修改,门槛极高,对普通玩家也非常不友好。这个加载器的核心价值就是打破传统pak模组的冲突限制,支持以单条记录为单位加载修改后的protobuf .data格式文件,只要不同模组没有修改同一条数据记录,就可以互不干扰地同时运行,大幅降低了数据类模组的冲突概率,同时也省去了模组开发者将修改后的data文件手动打包成pak的冗余步骤,能大幅提升黑神话数据类模组的开发、调试与分发效率。
功能要点
- 支持游戏运行时动态加载符合命名规则的 .data 格式Protobuf数据文件,无需重启游戏即可通过热键完成数据重载,大幅缩减调试数据修改内容的等待时间。
- 采用逐记录替换而非全表覆盖的加载逻辑,多个修改同一数据表不同条目的data模组可以共存,大幅降低传统pak数据模组极易出现的内容覆盖冲突问题,不需要用户手动合并pak文件。
- 提供多档不同程度的重置与重载热键,从单文件重载到完整还原游戏初始状态的全量重置都可以通过快捷键触发,适配不同调试场景的需求,同时自动同步修改Protobuf底层数据与GameDB缓存,确保改动可以在游戏内实时生效。
- 支持普通模式与追加插入模式两种加载规则,普通模式直接替换同ID的已有记录,追加插入模式会自动生成新的ID并将记录插入到数据表的空白位置,不会覆盖游戏原有的任何原生数据。
- 支持通过文件夹前缀数字自定义加载优先级,按照字典序先后执行加载流程,方便开发者根据自己的模组依赖关系调整加载顺序,满足复杂多模组组合的运行需求。
- 提供多档可调节的日志输出配置项,可以按需关闭冗余日志输出,在加载大量数据文件时减少性能损耗,同时支持开启UTF-8中文控制台日志显示,避免中文内容出现乱码问题。
前置依赖
使用本模组前必须提前安装CSharpLoader,要求版本不低于v0.0.8,若用户升级了CSharpLoader的版本,也需要同步升级本Protobuf加载器的对应版本,避免出现版本不兼容导致的加载失败问题,其他额外的前置组件原文未给出说明的项以压缩包内说明为准。
手动安装步骤
首先确认自己的游戏环境已经提前部署好了符合版本要求的CSharpLoader组件,之后下载本加载器的压缩包文件完成解压操作,将解压得到的ProtobufLoader文件夹完整复制到游戏根目录下的b1BinariesWin64CSharpLoaderMods路径中,完成部署后的完整目录结构需要符合要求:在b1BinariesWin64CSharpLoaderModsProtobufLoader路径下可以找到核心文件ProtobufLoader.dll,所有用户自己新增的.data格式模组子文件夹都需要放在这个ProtobufLoader根目录下,子文件夹命名推荐采用「数字_自定义名称」的格式调整加载优先级。加载自定义数据文件时需要注意严格遵循命名规则,普通修改类数据文件需要命名为[原数据表名]_自定义注释.data的格式,追加插入类数据文件需要命名为[原数据表名]_自定义注释.insert.data的格式,带有.bak后缀的.data文件会被自动忽略无法加载,数据表前缀必须和游戏原生的Protobuf表名完全匹配,不符合命名规则的文件都无法被加载识别。
注意事项与兼容性说明
本模组并不能消除所有类型的模组冲突,只有按照该加载器规范制作的.data格式数据模组才能获得更低的冲突概率,传统的pak格式模组之间的冲突问题不会因为安装了本加载器而发生任何改变,原先就会冲突的pak模组依旧会保持之前的冲突状态。有6个原生游戏数据表不被本加载器支持动态修改,分别是UISettingControlDesc、ScrollDesc、ActivityTaskDesc、ActivityDesc、CombatSkillDesc、FUStCollectionSpawnInfoDesc,针对这些表的修改无法通过本加载器生效。部分游戏内置组件仅会在初始化阶段从描述表读取一次数据,比如TransQiTianDaShengConfigDesc表对应齐天大圣相关的配置组件,游戏启动完成初始化之后再重载该表的内容,改动不会实时生效,需要重启游戏才能让对应配置的修改正常运行。本加载器不会递归读取子文件夹内的文件,所有的.data数据文件都必须直接放在你新建的第一级子文件夹中,嵌套在更深层子目录里的文件无法被扫描加载。本模组提供三个不同功能的热键:Ctrl+F7为数据重载热键,执行时会先自动重置已修改的数据再重新扫描加载所有.data文件;Ctrl+F8为普通重置热键,仅将本加载器修改过的所有数据恢复到加载前的原始状态;Ctrl+F9为超级重置热键,会直接丢弃当前内存中的所有游戏数据,从游戏原始pak文件中重新加载所有内容,和刚启动游戏时的加载状态完全一致。配置文件Config.json内的多档日志开关可以根据自身需求调整,当你同时加载数十个上百个数据文件时,将日志输出级别调低可以有效减少不必要的性能占用,提升游戏运行的流畅度。
常见问题
Q:我安装了好几个不同的修改装备属性的.data模组,为什么有些改动没有在游戏里生效?
A:首先检查这些未生效的修改是不是改了同一条装备记录,本加载器对于同一条记录的修改会以最后加载的文件内容为准,加载顺序靠前的文件的同ID记录改动会被后面的覆盖,你可以通过调整文件夹名的前缀数字来控制加载优先级,把希望最终生效的文件对应的文件夹数字设置得更大即可。
Q:我按下Ctrl+F7重载数据之后,部分改动没有出现在游戏里是什么原因?
A:部分游戏组件仅在初始化阶段读取一次数据,运行时动态修改数据表不会触发组件的二次初始化,这类改动需要重启游戏才能正常生效,你也可以确认自己的.data文件命名是否符合规范,有没有把表名写错或者漏了.data后缀。
Q:为什么我创建的.data文件放在对应路径下,加载的时候直接被跳过了完全没有反应?
A:首先确认你的文件没有被命名为带.bak.data后缀的格式,其次检查文件存放的路径有没有嵌套进更深的子文件夹里,本加载器不会扫描二级及以下的子目录,最后确认文件名的前缀部分和游戏原生的Protobuf数据表名完全一致,错误的表名前缀会直接导致文件被忽略。

评论(0)