找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4153|回复: 1

【工具分享】SI INI 连接器

[复制链接]
发表于 2022-10-11 12:35:14 | 显示全部楼层 |阅读模式
此程序是我自己独立开发的。

这个工具需要使用工程文件夹,其实就是我发布的那个拆分的 rules 的文件结构,但是实际上限制没有那么多。
它相当于开发工具包中的编译器的角色(我猜的),总之和文编编辑器不会冲突,它们是两个方向。
主要目的是减少源代码的数量,采用自动生成的方式输出代码。

详细使用方法请见压缩包内的【使用说明】和【开发文档】。
下面是简略版本:

使用说明:

这是一个控制台程序 , 没有界面 (以后或许会有)
它主要有两个功能 :

1. 连接代码文件

所谓连接代码文件就是把工程内的各种散装的 ini 连接成一个 ini 的功能
在连接各种 ini 的时候 , 可以适用一些【特殊的逻辑】 , 比如【自动注册】【自动排序】【版本】【复制】【自动创建】【赋值型自动值】【计算型自动值】【匹配型自动值】等 , 详情请见【开发文档】
运行中 , 程序会分析代码的种类 , 并注册到相应的注册表中 (但是 [General] , [AI] 代码片段下的建筑注册和其他类似注册的地方则不会自动注册需要手动维护 , 或许以后会支持)
运行后 , 会在【输出结果】中制作出来 4 个 ini 文件 , 即 rules , art , sound 和 ai
把生成出来的 ini 当作正常的 ini 使用即可 , 也就是丢到游戏根目录或塞进 mix 即可

2. 把工程内的文件复制到游戏目录里(即部署功能)

这个功能是把功能内的各种文件一起复制到游戏目录内
这可以有效减少手动复制粘贴的频率 , 提升开发 MOD 的体验

控制台程序没有界面,就哪个黑框。

常见问题 :

问 : 支持哪些扩展平台 ?
答 : 游戏的原始引擎肯定是支持的 , 然后就是在一定程度上支持 Ares 和 Phobos , 由于我没使用 DP 所以没有特殊支持 (包括 DP 的额外扩展) , 对于其他的扩展平台那肯定是没有特殊支持的

问 : 什么操作系统可以使用《SI INI 连接器》?
答 : 我是目标 win10 系统开发的 , 理论上 win7 也能用 , 但是我没试过 , 至于别的系统 , 我没有能力测试 , 目前不知道

问 : 执行部署时反复遇到 "创建/删除/复制 xxxxxx(文件/文件夹名称)" , 该怎么办 ?
答 : 首先考虑你的这个文件是不是在属性里设置了 "只读" , 如果还不行的话 , 请考虑手动复制它们或给程序管理员权限
     如果你使用管理员权限运行脚本的话 , 需要给脚本添加程序的完整路径而不是当前的相对路线 , 不然系统会提示你找不到这个程序
     如果问题在于文件的 "只读" 属性 , 在【工程文件】中的 "工程设置.ini" 中提供了相应的自动化解决方案 , 默认关闭

问 : 不是上述的情况 , 但是依然反复遇到这个问题 , 该怎么办 ?
答 : 正在使用的程序是无法被删除或覆盖的 , 因此如果在部署的时候你还开着游戏 , 那么必然会收到文件读写类的报错 , 这个只能通过关闭游戏等部署完成后重启游戏来解决

问 : 为啥程序报错了 ?
答 : 这个报错有几种可能 , 首先你要确定程序没有被杀毒软件卷走 , 其次要保证部署的时候要被部署的文件没有启动中 , 比如你开着游戏呢又尝试替换 gamemd.exe 肯定是不行的
     对于其他情况 , 则可能需要专门分析了

问 : 既然已经有了懒部署了 , 为何还要保留完整部署功能 ?
答 : 那是因为有些时候 DTA 会莫名抽风打不开 , 这时候可能就需要使用完整部署来完全刷新一次 MOD 文件了 (但愿有用)

问 : 我的 rules 已经改了很多了 , 不想再手动拆分了 , 该怎么用《SI INI 连接器》?
答 : 你依然需要《原版 rules 拆解》或同类结构的文件夹作为工程文件夹 , 可以直接把 rules 装进去 , 要进行 3 步操作
     1. 删除工程文件夹内的所有普通阵营和特殊阵营 (即 "盟军" , "苏军" , "尤里" 和 "特殊阵营") , 并删除 "X-基础设置" 内除 4 个 "自定义设置" 以外的全部文件
     2. 把你修改过的 rules , art , sound 和 ai (尤复版本就是 md) 分别复制进以 "rules" , "art" , "sound" 和 "ai" 结尾的 "自定义设置" 文件中 (也可以直接替换 , 但是要保证是 utf-8 无 bom 格式 , 记事本保存的文件是 utf-8 有 bom 格式)
     3. 在【工程文件】中找到 "工程设置.ini" , 并把其中的 "启用自动注册" 改为 no , 再把 "启用关联校验" 改为 no , 然后把各个注册表添加进 "强制禁用随机排序的单位" 中 , 或者你可以使用 "工程设置【未拆解rules专用】.ini" 然后再调整
     如果不进行 rules 拆分 , 那么是使用不了【自动注册】【关联校验】【自动图标排序】功能的 , 除此以外其他功能都是可用的
     "自定义设置" 也是可以拆分成多个部分的 , 只要保证它们是以 "ZA-" , "ZB-" , "ZC-" 和 "ZD-" 开头的就能正常读取
     (实际上你用一个空的工程文件夹都能正常连接 , 当然要保证有 "工程设置.ini" 这个文件在要求的位置)

问 : 我可以将《SI INI 连接器》和 ini 编辑器一起用吗 ?
答 : 《SI INI 连接器》只是一个把 ini 连接成另一个 ini 的工具 , 这和 ini 编辑器没有联系 (记事本 , notepad++ , vscode , 甚至是 excel) , 你可以用 ini 编辑器把 ini 编辑好 , 然后用《SI INI 连接器》连接
     当然要在《SI INI 连接器》连接 ini 时保证要被连接的 ini 和输出位置没有被锁定 (有些 ini 编辑器 , 杀毒软件 , 或者防火墙可能会把文件或目录锁定以防止被别的程序更改)


问 : 为啥这个程序这么大 , 一般控制台程序不是就几十几百 kb 吗 ?
答 : 程序使用了自带运行环境的方式编译的 , 一出来就是 12M 左右 , 后来因为突发奇想增加了自动图标的功能 , 导致程序又背上了图形处理相关的框架 , 结果就变成现在这么大了

问 : 我可以添加新的功能吗 ?
答 : 如果你能编程那自然可以写扩展 , 如果你想让我添加新功能 , 那肯定是需要把功能描述清楚 , 什么情况下做什么操作之类的 . 当然太离谱的就算了 (比如 ai 续写之类的)

问 : 既然有了 notepad++ , vscode , excel 等一众好用的编辑器了 , 为什么还要开发《SI INI 连接器》?
答 : 当然它们都很好用 , 而且我也在用 , 我只是选择了最适合我的方式 , 多一个选择总比少一个选择要好

程序的历史演变:
1. 最最开始的时候,我当然是使用记事本来写 ini 的,那么遇到的问题其实就是 ini 实在是太长了,于是我背住几个行号比如注册表之类的,需要在那里写代码的时候直接跳转到行,但是随着开发的深入,需要背的行号越来越多,我就只能拿个 txt 来辅助一下,但是这毕竟治标不治本,很快,这个辅助的 txt 也不短了,我就不得不考虑新的方式。
2. 后来,我了解到了 notepad++,富文本编辑器自然要比记事本好用多了,但是查找某个代码段依然很费劲,一直想着要是程序能记住 10 个行号,用的时候一键跳转就好了,于是我就想着要不要开发个界面的编辑器。
3. 通过 java swing 界面,我写了一个带界面的编辑器,但是由于个人开发水平的限制,再加上 java swing 对界面的支持程度比较差,很难做出理想的效果。结果就是这个编辑器始终做不好,最后陷入了无尽的开发迭代中,都没时间写 ini 了,本末倒置了属于是。最终由于生活变动再加上比较忙,界面编辑器项目被放弃了,当然 ini 也没写了,算是弃坑状态。
4. 后来,由于一些原因刷到了 ra2 的视频,我重拾起了 MOD 制作。当然当年的问题依旧存在,ini 太长了,找东西不好找。于是那时候就决定拆分了 rules 了(后来也把 art,sound,ai也都拆了),当时拆分外加翻译陆陆续续拆了快 1 个月。虽然知道 Ares 可以合并 ini,但是面对茫茫多的小 ini 文件,还要随时应对各种增加的减少的 ini 文件,所以 Ares 的固定的 ini 合并并不是很好用。于是经过考虑,我就写了 ini 连接器,也就是此程序的前身。当然这个时候程序依然是使用 java 写的。
5. 当时把连接器写完之后,想着都能读取 ini 了,那就加个自动注册吧。于是乎,第 1 个有实际意义的定制化功能便出现了。
6. 再后来,由于看到 java 在无环境的电脑上运行比较费劲,毕竟很多人不会安装 java runtime,再加上一些程序本身内部逻辑的问题,所以我开始考虑要不要重构这个程序。经过考虑后,我决定使用 c# 来重构。相比于 java 版本的程序,重构后的版本可以完全识别 ini 代码而不是 java 版本的简单读取和输出,这就为后续的功能的扩展打下了基础,而且现在我也有一定的能力驾驭复杂的内部结构,并不怕内部逻辑爆炸导致无法维护。
7. 经过若干次的升级迭代,现在版本的程序就做出来了。
8. 至于为什么没有界面,是因为 notepad++ 或者 vscode 或者其他的编辑器已经拥有较好的界面了,我并不需要添加一套专用的界面,直接用那个程序的界面就好了。也正是这个思路,所以,此程序并没有在编辑文本上下功夫,而是在自动生成上下功夫。
(由于发帖时间的限制,所以写了这么多废话.jpg)

题外话:
截至发帖时间我的 MOD 中大概有 87% 的代码是自动生成的。
我现在一直怀疑我的开发方向有点歪,在实际游戏中基本用不到的方向填了 2M 多的 rules 代码。

关于版本号:
我的习惯是每更新一次就加 0.0.1,满 10 进 1,和什么完成没完成无关,只代表了更新次数,不要在意就好了。

由于文件太大上传不了,所以就走网盘了。
下载地址:
链接:https://pan.baidu.com/s/1MZ2y-d8r_2miqU5m1xUkKA
提取码:0sie
发表于 2022-10-12 15:22:46 | 显示全部楼层
没有实例图片啊……弄不清具体有什么优势
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|Archiver|手机版|管理员邮箱|红警DIY论坛 |网站地图

GMT+8, 2026-6-27 13:52 , Processed in 0.061664 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表