DST模组制作记录

寒假里第一次制作mod,达成了一个小小心愿,从自用到发现居然被不少人订阅,于是为自己的mod加上了详细的描述和美观的图标,这个过程看了数十个lua脚本文件,几千行代码,整理编辑了几百行代码的lua文件,很有成就感。自己一点点在游戏里调试,debug,最后成功解决问题的那一瞬间,真的感觉到,原来这些都没有想象中那么难,只要愿意去学,下功夫理解源代码的逻辑再举一反三,就可以做到!在写mod之前,很羡慕那些会自己做mod的人,以前自己只会照葫芦画瓢,按部就班地修改一些游戏文件实现教程视频里的“破解”“修改”之类的功能,那时候不理解,不懂代码不懂框架,不懂文件与文件之间可以有盘根错节的联系,只是奇怪怎么电脑上下个软件带这么多文件夹,一大堆带着奇怪后缀名的打不开的白色文件。经过DST模组的编写,学到了所谓ECS(entity component structure)框架,见识到了轻量级脚本语言lua,熟悉了类、构造函数这些操作的实际应用,还熟悉了VScode的操作,游戏里能有更好的体验,并把这样好的体验分享给更多有同样爱好的人,真的收获良多。

连续更新了四天,里程碑式地宣告mod更新告一段落。在做mod的过程中,觉得在游戏里实现一些功能比玩游戏有意思多了,也渐渐意识到,游戏本身没什么好玩的,是因为和有趣的人一起玩才收获到许多快乐。
虽然有时候一点点很愚蠢的小问题折腾好久,但也不觉得辛苦,偶尔还会有豁然开朗的感觉。比如头一回遇到那种文件名与返回字符串不一致的情况,也许是游戏开发者的一点小疏忽吧。
关于mod本身,我采用的修改方式是非文件覆盖,所有对源文件的改动都是通过在modmain函数内使用官方给出的API(接口)靶向修改,并且对所有改动项做了可配置,也符合我做这个mod的初衷,让更多的内容可自定义,一站式加强游戏的平衡性。
只要通过源文件和创意工坊里订阅其它modder改过后的文件对比,了解lua一些常用语法,再分析其中实现逻辑,再举一反三就可以制作自己的mod啦,涉及到贴图的mod会比较费时费力,适合团队型mod,所以我只是大致了解了一下,不打算深入。
通过steam订阅工具DST mod tools可以上传mod,这个tools工具包内还包括音频文件修改,新地形制作等功能,暂不深究。
制作图标需要先下载一个tex图片加密转化工具,一个用于加密生成tex文件(载入游戏的话支持64*64、128*128、256*256像素大小的图标,其它的没尝试过),一个用于解密查看。

下面列出部分常用的API:
GetModConfigData(“关键字”)
--用于获取modinfo内配置表对应关键字的data,支持中文传参,常用于对TUNING文件(常数表)直接修改;
AddComponentPostInit("原组件类名",改写后成员函数)
--实现组件(component)文件局部修改,重写原成员函数时变量传参要在最前面加上self;
AddPrefabPostInit("原预制件类名",修正函数)
--实现预制件(prefab)文件局部修改,由于函数只是进行一些操作,实际赋值给实例,所以会看到别人写的mod或者官方文件中多处使用inst(instance)作为形式参数传参

DST模组制作的一些分享,为同样有类似想法的小伙伴提供一些参考
浙公网安备 33010602011771号