先说 ini 文件的拆分,其实就是 rules,art,sound 和 ai 的拆分,所有内容均已按一定规则拆分并翻译了主要的注释。
此文件拆分主要是为了 INI 连接器服务的,同时也适合于新手了解 rules 的各个模块内容。
(注意:ini 是使用 yr 1.000 的文件进行拆分的,因此会有一些 yr 1.001 才修复的错误,如果用此做 mod,需要对比两个版本的 ini 文件找到并修改对应的代码块的属性值)
工具名称:SI INI 连接器
最新版本:v0.1.5
使用 c# 开发的控制台程序,需要外置 bat 文件启动(命令行代码见下)。
主要功能:
1. 最核心的功能,那当然是连接 ini 文件,把很多很多的 ini 文件(指上述的拆分好的 ini)连接成一个整体文件。拆分成很多文件的好处就是可以多人协作而很少冲突。
2. 自动生成单位图标 pcx 文件,并支持 Phobos 的图标排序(pcx 文件是全彩的,因此需要 Phobos 才能使用此功能)。由于可以自动生成图标,所以单位图标只需要准备一个原始图片就可以了。
3. 版本限制,连接器支持设置部署的版本,支持给代码块和属性添加所属的版本,版本不匹配的代码块和属性不会输出,导出测试版和正式版就只是改一个版本号的事情。
4. 继承,一个块继承另一个块的各项属性,支持嵌套,ARES 和 Phobos 都增加了继承的功能,但是连机器是预编译的,导出的 ini 并不包含继承的代码,游戏可以直接载入,在一些情况下,载入效率会提高。
5. 自动创建,说白了就是反向继承,支持嵌套。说白了,就是告诉连接器,这个块要创建若干个新的块,新的块要继承当前块的各项属性,并支持微调。
6. 自动值,通过已有的属性计算得出指定属性的指,有字符串型和数值型两种类型的自动值,支持多种类型的运算,代码图片见下。
7. 关联校验(检测),可以检测未使用的块。
8. 自动注册,所有的原版类型都可以自动注册(以及武器注册),并且为了支持地图和脚本,在自动注册的同时,也支持手动注册,最终注册的结果会以手动注册为前提进行自动注册。
9. AI 触发和脚本的代码优化,AI 触发可以拆开写(见下图),AI 脚本支持使用单位名称,导出的时候,连接器会把它们变成游戏认识的形式。
10. 可以分别让最终输出的 ini 的代码块和块内属性乱序(支持排除特定块),此种方案可以提高修改 ini 的门槛,而且不会对载入造成影响。栗子:结合上述的继承和自动值功能,可以轻松维护每个弹头对自定义护甲的比例,这样就使得定义数百个护甲来精确控制单位的防御能力成为轻松的工作,而对于修改者来说,他想修改某个弹头的伤害,就要面对完全没有顺序可言的数百个精确的比例值,使得修改难度暴增。
11. 支持移除空行和注释(可选)。
限制(注意事项):
1. 连接器需要专门的符合结构的工程文件夹结构,否则无法正常运行;并不强制要求使用上述的拆分 ini,任何文件结构类似的都可以(主要看文件和文件夹的前缀)。
2. 连接器不检测 ini 的整体完整性,因此只有部分 ini 也可以正常运行。
3. 不能使用“区间注释”,它会造成连接器的读取错误。
4. 如果仅仅是使用乱序和移除空行、注释功能的话,并不需要拆分 ini,直接把 ini 放在【基础设置 -> 自定义设置(每种)】中即可,其他文件删除或保留空文件都行,记得设置好要排除的特定块(注册表也要排除)并关闭自动注册功能。
5. 此工具并不具备把给定的 ini 拆分的功能,只能连接已经拆好的 ini,这是故意的。
搭建工程:
我个人的做法是用 vscode,无需额外设置,把 vscode 的工程文件夹设置为拆分好的 ini 的文件夹根目录即可。