第 1 课,MOD 的组成和使用 AccEX 插件制作简易换色
有些图是以前的版本截的,现在的版本会有一点点不一样,但不重要,一样的格式。
MOD 的组成
在 3D 游戏开发中,游戏内的物体本质上都是由 3D 模型组成。
一个完整的 3D 模型通常包含以下几种元素:
Mesh(网格):定义物体的形状,包括顶点、边和面等信息。
Shader(着色器):决定物体的渲染方式,如光影效果、透明度等。
Material(材质):定义贴图如何被渲染到网格上,包含与着色器的关联。
Texture(纹理):一种图片资源,用来描述物体表面的细节,如颜色、光滑度等。
Texture Map(贴图):进一步细分的纹理,用于不同用途,例如法线贴图、光照贴图、UV 贴图等。
Model(模型):包含以上几种信息的文件(也可能只包含部分)。
中文环境中平时基本把 Texture 和 Texture Map 都叫做贴图,其实叫做纹理和映射会更准确。
简单来说:
模型(Model):模型是一个可以包含多种信息的文件,其中可以包含物体的点线面信息(称为网格)定义物体形状,包含材质信息等。在 COM3D2 中是
.model
文件,且.model
文件可以包含材质和着色器等信息,因此部分情况下可以省略.mate
文件。贴图(Texture):定义物体的表面细节,例如颜色和质感。COM3D2 中对应
.tex
文件(就是图片,但是 3D 图形硬件要求纹理以专门格式进行压缩,所以格式不同)。材质(Material):决定模型渲染出来应该是什么样的。COM3D2 中使用
.mate
文件(Material
的缩写)。着色器(Shader):决定物体的渲染方式,例如是否有轮廓线、透明效果等。在
.mate
文件中指定。
COM3D2 特有的文件类型
以下是一些特定于 COM3D2 的文件:
.menu
文件:游戏物品栏中看到的每个物品几乎都由.menu
文件定义,用于指定这个物品使用什么模型、使用什么图标等等,包括男选择界面,以及脱下物品的选项都是一个个.menu
。.pmat
文件:用于定义渲染顺序,一般只在使用透明着色器时有用。.phy
文件:物理信息文件,提供物体的物理行为,例如摇动效果。.col
文件:碰撞箱信息文件,用于实现物体之间的物理交互。.psk
文件:专用于裙子物理模拟的信息文件。.anm
文件:动画文件,可以为模型创建动画,游戏内的动作基本都是使用 .anm 保存和读取的。
最简化的 MOD
制作一个最精简的 MOD,通常只需要以下文件:
.menu
.tex
:.model
:
甚至 .tex 都可以不需要(没有的情况下需要 ExtendedErrorHandling 错误处理插件,不然游戏可能会退出)
甚至有的插件可以直接呼出 .model 而不需要 .menu
最简单来说
网格:物体本身的点线面等 3D 信息
贴图:一张图片
UV 贴图:贴图怎么贴到网格上
着色器:渲染程序,比如会发光、半透明等
材质:贴图+着色器+... 等各种信息的复合体
模型:网格+UV 贴图+材质+... 等各种信息的复合体
.model:模型(不含贴图,含 UV 贴图,材质可以被 .mate 覆盖)
.mate:材质(不含贴图)
.tex:贴图
大概理解组成部分以后
我们通过案例来加深对 MOD 组成的理解
提示
在制作 MOD 的过程中,经常会遇到需要修改一点内容并立即在游戏中查看效果的需求。大部分情况下并不需要每次都重启游戏。
看不懂可以先跳过这个部分。
文件准备
在游戏启动时,游戏会扫描 Mod 文件夹并把可以识别的文件都记忆到一个虚拟的 arc 文件系统中。游戏识别有没有这个文件是通过 arc 进行的,因此在游戏启动后新增文件不会被识别。
arc 只会记住文件的名称,而不会记住其内容,也不会记住路径(如果你使用 MaidLoader 的话是这样的)
由于 arc 不区分目录,因此同名文件只会记忆最后被读取的那个
arc 记住文件名以后并不会去读取文件内容。(当然进入加载模式时游戏会读取 .menu 内的图标和物品名字/描述都,否则你就看不到物品列表了)
在你装备物品时,游戏才会去实际文件夹中实时读取 .menu 文件,如果 menu 中引用了其他文件,那么看看 arc 内有没有记住这个文件,如果有就实时从文件夹内读取(称为热加载)
因此我们可以通过在启动游戏前就准备好相关文件,来使用热加载机制。
热加载方法
在游戏运行过程中,你可以直接修改以下几种文件,而不需要重启游戏:
.menu
文件(部分内容无法热加载).mate
文件.model
文件.tex
文件(如果你装了缓存插件(mate_tex_chache.cs 之类的),那就不能热加载,此时可以通过 AccEX 插件修改查看)
修改完成后:
切换到游戏中的其他物品。
再切换回来你的目标物品。
游戏会读取修改后的最新内容。
注意事项
部分内容无法通过热加载刷新:
.menu 文件中的物品图标数据无法热加载。(可以通过重新进入编辑模式来刷新,但个人不推荐这个办法)
.menu 文件中的物品名称和描述无法热加载。
新增的文件无法通过这种方法直接加载,可能导致游戏出现 BUG。
如果需要加载新增文件:
使用 MaidLoader 的刷新功能,可以将新增文件加载进游戏。
但不推荐使用,因为有时候加载了并不能生效,或是会出现其他问题。
通过以上方法,你可以高效地修改和测试 MOD,而无需频繁重启游戏。
MaidLoader 有一个 QuickMod 功能,可以在文件被修改时重新创建 arc 文件系统,有需要的可以看看。
MOD 是如何加载的
其实游戏官方是有 MOD 支持的。
从 CM3D2 v1.0.4 开始,在编辑界面同时按下 M O D 三个键,就会出现一个导出选项,这个就是官方提供的功能。
这个官方支持就是 .mod
格式的文件,只要把它放进 MOD 文件夹就可以生效。
.mod格式的 MOD 称之为公式 MOD/官方 MOD。
其他格式/方式实现的 MOD 称之为非公式 MOD/非官方 MOD。
不过这个官方支持并不算非常全面,最开始官方只打算让你修改贴图,没有修改模型等功能。许多高级需求(如覆盖已有文件、动态刷新等)必须通过其他办法才能实现。
因此,玩家们在思考如何制作自己的模型等等,而不是仅仅修改贴图。
于是乎出现了 Sybaris 等工具,可以直接加载官方格式的的文件,而不是有限制的 .mod。
从此非公式 MOD 的读取有了官方支持。
总之就是公式 MOD 限制太多,在社区发明出替代方案以后,就没有多少人使用公式 MOD 了,官方也知道这一点,添加了支持直接读取原格式的功能。
于是呢,大家都去制作非公式 MOD 了。
最终,KISS 对公式 MOD 的制作支持与 2023 年 1 月 20 日结束。
来到 COM3D2 时代,更是没有人使用 .mod 了。
它直接拦截官方读取文件的函数,让游戏在访问文件系统时先检查 ModLoader 的目录与缓存,如果没有再从官方路径中查找,从而允许我们直接加载几乎任何官方物品格式的文件。(.menu .mate 之类的)(还可以覆盖官方的文件)
因此官方物品有什么功能,我们就可以使用什么功能。
因此做 MOD 的底层逻辑,其实就是对官方物品进行逆向,学习官方是怎么做的,从而做出自己的物体。
更详细的信息请参考
但是我们仍然需要 Modloader 来做一些覆盖官方文件的操作等等。
其实官方也做了用 MOD 覆盖官方文件的功能,但是还是日本法律问题,官方选择禁用
包括代码可以看到以前游戏还有游戏内编辑换色 MOD 的功能,部分文件格式也有序列化写出的功能等等
所以,并不是 KISS 不想支持,而是不能。
对官方物品进行修改
提取官方物品
以官方的 dress118_stkg_i_.menu 为例
找到文件名
方法 1 :按 Shift + I 打开,或使用齿轮菜单栏按钮 PropMyItem InoryS 版
在袜子栏搜索 118,我有这么多是因为我有 MOD
装备上后在控制台可以看见这个物品的 menu 名称(只有 InoryS 版才会显示)
方法 2:在编辑模式一起按下 M O D 三个键,左上角就会有一个导出,此时装备一个物品,然后点导出,就能看到文件名。(这是制作公式 MOD 用的功能,不过我们只是用来看一下文件名)
方法 3:用 AccEX 插件(F12)点导出时也会显示文件名.
提取文件
官方物品都打包在 .arc 文件内,使用 SybarisArcEditor 可以打开 .arc 文件,因我们使用该工具从游戏的 .arc 文件内提取这个袜子的相关文件。
如果你没有这个,去首页的英文工具包里找到,然后把 SybarisArcEditor.exe 放到 COM3D2.exe 旁边就行了,该程序会自行查找游戏的所有 .arc 文件。
打开后会很卡,耐心等一会
这个程序没做防抖,你输一个字他就搜索一次就会很卡,所以建议直接粘贴进去
然后你会发现 dress118_stkg 什么都搜不到
那是因为这是从 CM3D2 联动过来的,这就是为什么有的东西你找不到
去 CM3D2 那边打开 SybarisArcEditor(同理把 SybarisArcEditor.exe 放到 CM3D2.exe 旁边就行了)
可以看到官方文件种类和 dlc 名称进行了分类
依次点开,你会发现有 .mate .menu .model 和几个 .tex
依次右键,点保存
得到以下几个文件,还记得之前说的组成吗?
修改官方物品
很久以前, KISS 官方推出了 .mod 格式,现在已经淘汰了
随着官方的支持和 Modloader、MaidLoader 的出现,我们可以直接以官方物品的格式来加载物品,因此官方有什么功能,我们就可以使用什么功能。
所以我们需要一些工具来读写这些文件,在目录的 English Modding Tools Pack 里面的 Core Modding Tools (English),有各种工具
menu
用工具转成 txt 或用编辑器打开 .menu
这里用我自己做的 menu 编辑器打开,本来我都是用某 D 的工具,但是他禁止外国人使用,不好分发。
为了大家有相对好用的工具,只好自己做了
可以看到 menu 的基本组成
menu 文件详细请参附录,或 https://seesaawiki.jp/com3d2mod_wiki/d/menu
我们把东西都改个名,比如都改成 learn
注意文件名不能以 mod 开头,不然你会发现它读不了
(MODフォルダにMODファイルが見つかりません。)
然后打开 menu 编辑,编辑指向对应文件
mate
那么你会问其他的 2 个 .tex 是在哪里指定的?
答案是,可以在 .model 或 .mate 里指定
.mate 可有可无,如果你指定了 .mate,那么就会覆盖 .model 里面指定的内容(所以可以通过添加多个 .meun 和 .mate 组合来制作换色 mod 而不需要修改 .model)
这个官方物品使用了 .mate 所以我们这里主要关注 .mate 文件,.model 内的信息在第三课
用 mate 编辑器或者转成 txt 打开 .mate 文件
改成对应贴图名字,但不带 .tex
那个路径没什么用,可以忽略,随便填个东西就行了(COM3D2 2.06 +)
mate文件详情请参考
https://seesaawiki.jp/com3d2mod_wiki/d/mate
tex
用 TexTool 打开 .tex,会转成 .png
用 TexTool 打开其他格式图片,会转成 .tex
打开 mod_learn.tex 用你最爱的图片编辑器编辑一下
作为示例,我们这里乱画一点东西
然后再转回 .tex
同理 mod_learn_i_.tex 这个是我们在 menu 里面指定的图标,也是画点东西在上面
进游戏
把刚刚的文件都放到 MOD 文件夹里,然后启动游戏
铛铛 发现刚刚乱画的线条了吧
然后我们发现后面的贴图并没有被画
取决于光照方向,非光照面会使用 _ShadowTex 中的贴图,我们没有修改,所以不会有变化
恭喜你已经学会了 MOD 的基本组成
对别人的 MOD 进行修改
同理,只不过不需要提取了罢了
使用 ShiftClickExplorer 插件,编辑模式“shift+左键”物品即可转跳到 MOD 文件所在位置。
插件地址都在首页
使用 AlwaysColorChangeEx
我们可以使用 AlwaysColorChangeEx 轻松完成刚刚的操作和编辑 mate,插件地址都在首页
默认快捷键 F12
和 mate 文件的对应关系
color 只会对 _MainTex 生效
点纹理更改按钮
点这个就能更换贴图了 可以直接读 .png 格式的
你可以自己调节各种参数尝试,,然后点击 menu 导出就能导出了 会导出到 MOD/ACC 文件夹
素材包
本人提供的 MOD Thicc_Socks_109 中 提供了许多贴图,你可以自己更换尝试,非常有助于理解
https://zodgame.xyz/forum.php?mod=viewthread&tid=470514&extra=page%3D1
https://mega.nz/folder/U6Jy0a6a#Pv5G9G_J5zoYc46TVmz6iA
使用 AlwaysColorChangeEx 来修改 MOD
修改着色器
如图就是着色器,你可以自己试试
比如我们这里选择透明着色器,但是发现腿没了
还记得 menu 文件里的 消去node設定開始 吗
就是它把腿隐藏了 我们把它删了再看看
可以看到大腿就显示出来了,但是有点穿模
注意:AlwaysColorChangeEx 导出的 MOD 位置在 MOD 文件夹的 ACC 文件夹里面,不在原位置
渲染顺序
RQ 就是 RenderQueue 渲染顺序
一般透明材质要设置为 3000+
可以看出明显区别
鞋子我也调成透明材质了 它的 RQ 是 3071 可以看到,当我们把袜子渲染顺序调到 3072 后,鞋子的显示发生了变化
要保存 RQ,需要使用 .pmat 文件。
使用 .pmat 的前提是需要 .mate, 在 .mate 文件的这一栏可以指定 .pmat 文件名
使用编辑器直接另存为即可新建一个 .pmat,然后在 .mate 中指定,然后 AccEX 插件导出时就能导出 .pmat 了,否则 AccEX 是不会导出 .pmat 的。
当然你也可以手写,编辑器内对所有参数都有说明
作业
将
dress118_stkg
恢复原贴图。将贴图颜色改为蓝色。
设置为透明材质并调整
RQ
顺序。导出为完整的 MOD 文件。
大致效果
最后更新于