缺氧吧 关注:164,834贴子:2,149,335

缺氧mod制作教程

只看楼主收藏回复

缺氧mod的中文教程太少了,而且官方在去年七月更新了mod标准所以大部分都有点过时,发个新的教程


IP属地:湖北1楼2022-05-02 22:48回复
    二楼备用,方便补充


    IP属地:湖北2楼2022-05-02 22:49
    收起回复
      mod主要分为,前两个应该不算mod:
      1. 不需要写代码直接改游戏配置文件的
      2. 不需要写代码直接改游戏代码的
      3. 不需要写代码的mod
      4. 最常见的需要写代码的mod
      第一种跟第二种每次游戏更新都会失效,第三种和第四种只有官方改接口的时候才会失效


      IP属地:湖北3楼2022-05-02 22:51
      收起回复
        首先讲一下第一种mod的开发,这种mod需要对游戏文件很熟悉,注意改文件之前要先备份原文件
        ps:后面说的所有游戏的文件只会在OxygenNotIncluded\OxygenNotIncluded_Data\StreamingAssets文件夹里
        这里先说一下缺氧的游戏目录结构
        codex:还不知道是啥,以后更
        dlc: 应该是dlc的东西,不玩dlc没看
        elements:翻译就是元素,里面四个文件分别记录了气体,液体,固体还有一个不知道是啥的各种属性,比如水蒸气的就有比热容,导热率,冷凝点,冷凝后是啥
        string:里面只有一个文件strings_preinstalled_zh_klei需要用到,用poedit打开它,这就是游戏的汉化文件,不知道游戏中一些英文名词可以直接搜,后面会经常用到
        templates:里面只有两个文件会用到,geysers和poi,geysers是各种泉的信息,poi是遗迹的,有些泉也在遗迹里,比如poi里的jungle文件里的geyser_steam.yaml这个文件就是每次看到的冷蒸的文件
        worldgen:里面是世界的各种属性,worlds文件里是世界的各种数据,这些翻译我会放到下面评论里,包括各种泉的英文,subworlds里是各种生态,temperatures里的是关于温度的定义,这个后面会说


        IP属地:湖北5楼2022-05-02 23:10
        收起回复
          热乎的


          IP属地:上海来自Android客户端6楼2022-05-02 23:41
          回复
            这里只写一个地图修改的例子,这类不需要写代码的mod只有替换贴图的时候比较常用,加新地图属于替换地图贴图,看教程之前请先百度yaml语法,必须明白:
            1. 大小写敏感
            2. 使用缩进表示层级关系
            3. 缩进不允许使用tab,只允许空格
            4. 缩进的空格数不重要,只要相同层级的元素左对齐即可
            5. '#'表示注释
            这五条,其他具体语法的可以照着文件写,上面五条是yaml文件的基本格式,格式不对游戏会崩溃!!!
            这里以荒芜为例,打开荒芜所在文件夹,把荒芜的文件 Badlands.yaml 拖到vscode界面里,也就是用vscode打开它,下面的行号都是源文件的行号
            第一行的name是这个星球的名称,这里的在代码里定义的,包括第二行的星球的说明都是在代码里定义的不要动
            直接看到第六行,wordsize是地球尺寸,X就是横着的,y就是竖着的
            然后到第15行,这一行是这个星球所包含的生态类型,所有的value(看完了yaml语法应该知道key-value是什么)都是文件路径,表示subworlds文件夹下的生态文件夹下的子生态文件,子生态是什么不用管我也不知道,具体需要区分的子生态在后面会提到,minCount不用管,如果想加生态直接在后面加就行了,注意格式还有文件必须存在,如果不存在会崩溃
            第31行是出生时候的生态,看后面那个子生态里有个单词Start,这个是专门为出生准备的生态
            后面几行是啥我也不知道
            到第48行,这里是定义各种生态的位置,第49到52行是初始出生时的,52行要跟31行保持相同
            然后直接看到第88到92行,89行的AtDepths表示在最底层,90行表示替换,地图刚开始就是张白纸,所有的东西都是替换上去的,第91行是子生态类型,92行表示这个子生态是岩浆,这里可以改成subworlds/frozen/CO2Lakes这个就是冰核,第94到101行就是原油区的,那个还有个marsh是沼泽,原油区有的时候会有沼泽,看到这里应该明白,AtDepths的区域就是最底部的岩浆和上面的原油区
            然后看到第103到115行,space表示太空,Surface这个子生态就是浮土,Space子生态就是浮土上面的太空,你应该也明白AtSurface是哪了
            那么剩下的地方就是AtStart,看到第54到86行,也就是AtStart的,minDistance不知道写啥就写1,MaxDistance不知道写啥就是999,我也不知道这俩是啥,然后subworldNames就是这个区域的生态名
            注意第48到115行的所有subworldNames标签下出现的生态必须在上面16到29行里出现过,反过来也一样,不然加载地图会报错
            再往下看到第118行这里定义的是遗迹和泉的信息,第121行这里定义的是冷蒸的信息,122行表示尝试生成一个,第123行不用管,不会用到,第124行下面的zoneTypes表示所在的生态,Replace刚才说过了,这个后面也不会用到
            第127行这里的name下面有两个文件,这表示二选一,再下面的148行表示油井的,油井贴图有很多,不用奇怪为什么有这么多文件,times表示三个
            剩下的基本都是遗迹了,直接看到175行,这里的geysers/generic表示全部泉,下面的times表示12个,这里其实是在全部泉中进行有放回的抽样,抽12个,我是这么理解的,至于有的时候只有8个圈,有的时候14个,这个应该是在代码里面控制的
            如果自己要加什么泉就直接复制175行到184行的然后粘贴到175行上面,注意格式,然后改geysers/generic跟times就行了,generic还是改成geysers文件里的泉,里面已经有所有泉的定义了


            IP属地:湖北7楼2022-05-02 23:45
            回复
              所用工具:
              vscode,Visual Studio,poedit这三个百度搜索
              然后dnspy在ht缺氧tps://git缺氧hub.co缺氧m/dnS缺氧py/dnS缺氧py/rele缺氧ases
              把缺氧去掉


              IP属地:湖北8楼2022-05-02 23:48
              回复
                接7喽
                至于怎么把你改的文件做成mod
                进入你的缺氧的mod文件夹,一般在文档下的Klei下的缺氧(英文)里面有个mods,然后在这里新建文件夹,比如dev,然后在dev里新建文件夹,名字随机知道是什么mod就行,然后在你新建的mod文件夹里,用vscode打开这个文件,怎么用vscode打开文件自己百度
                用vscode打开后新建文件mod.yaml和mod_info.yaml,怎么在vscode里新建文件和文件夹也自己百度,这两个文件必须有不然会显示版本错误
                mod.yaml里写上(三引号里的是代码块,格式已经弄好)
                ```
                title: mod名称
                description: mod说明
                ```
                然后mod_info.yaml里的写上
                ```
                supportedContent: VANILLA_ID表示只支持本体,dlc忘记是啥了不玩dlc,ALL表示两个都支持
                minimumSupportedBuild: 支持的最低游戏版本,写489681,以后的也是,这是我抄别人的
                version: mod的版本号
                APIVersion: 我也不知道是啥,写1,2随意
                ```
                然后你不是更改了地图文件嘛,比如改的是荒芜名字叫啥忘了,文件名字不要改,荒芜不是在目录worldgen/worlds文件夹里嘛,你在你的mod文件夹里也建一个这样的文件夹,目录必须一样,然后把你改过的地图文件放进去,然后打开游戏,打开mod选项开启mod,进入荒芜就行了
                提一下,类地里第四行那个value是true的那个,那个的意思是没有特质,然后荒芜里第43行的标签worldTraitRules的min表示世界的最少特质,max表示最多


                IP属地:湖北9楼2022-05-02 23:58
                收起回复
                  第一类mod跟第二类mod讲完了,这两类主要是对游戏文件必须熟悉,包括文件的每个key有哪些value,用的不多,下次讲第三类,第三类是第四类的基础,第四类东西会特别多,包括怎么添加物品,怎么更改游戏数值,具体数值怎么改等,建议有时间的可以先学C#,不需要学太多,基础语法跟C一样,现在大学C都是必修了,C#大概能看懂个一二三,要用到的C没有的就是面向对象,只需要知道面向对象的基础就行了,什么封装继承多态,知道继承是什么就行了,别的用不到,至于反射,这玩意有专门的工具类,你甚至不需要知道是啥


                  IP属地:湖北10楼2022-05-03 00:04
                  收起回复
                    催更


                    IP属地:云南来自Android客户端11楼2022-05-03 00:27
                    回复
                      本来想讲一下C#语法的,但是那样楼会太多了,放弃了,大家自己看,下面的默认大家都会
                      讲一下怎么更改游戏代码,让大家准备的工具dnspy,打开它,在缺氧游戏目录下的OxygenNotIncluded\OxygenNotIncluded_Data\Managed里有个文件叫Assembly-CSharp.dll,别问dll文件是啥,想知道自己百度,用dnspy把他打开,拖到左侧工作栏也行,然后点击最上面最右边有个放大镜,下面会出现搜索栏,把搜索栏的右边选项改为图里这样,以上所有跟所有文件

                      然后打开poedit,上面已经说了开哪个文件,后面打开pordit都是这个文件
                      这里以修改蒸汽机为例,教大家怎么修改数据,在poedit中按ctrl+f搜索蒸汽涡轮机,蒸汽机的游戏名字叫蒸汽涡轮机,搜蒸汽机啥都搜不到,搜蒸汽倒可以搜到

                      为什么这里有个弃用呢,因为这是老版蒸汽机,大砍之前的,不过不影响,前面那个link的value就是他在游戏里的名字,steamturbine,把这个名字复制到第一张图的搜索栏,大写小写无所谓

                      前面那个是啥我也不知道,后面那个是文件名字,config是配置的意思,这是最基本的英语单词了,第一个就是蒸汽机的配置文件,一共两个一个1一个2,1就是老版的,我们只修改2,点击他你会看到密密麻麻的代码,学了C#的应该都知道驼峰命名法和那啥命名法,所以不知道单词什么意思直接翻译就行了,注意补空格就行,这里只讲几个
                      看到第30行,最后的OnFloor,点他,你会进入到另一个文件,这类就是建筑能建造的位置,OnFloor表示在地上,第七行的Anywere表示任何地方都能建造
                      点最上面向左的箭头表示返回,如果我想把他改成任何地方都可以造怎么办呢,光标移动到OnFloor上右键,编辑类,把OnFloor这个单词改成AnyWhere就行了,然后点编辑,然后按ctrl+shift+s保存再进入游戏你就会发现你的蒸汽机不必再造在地上
                      剩下的比如33行

                      OutputConduitType就是输出元素类型,这都是基本单词,Liquid表示液体,点击Liquid进去,最上面的None表示空,不输出,Gas为气体,Solid为液体,Max为混合有的东西既输出液体又输出气体
                      34行应该是在哪个格子输出,后面的(2,2)是个坐标,大家在游戏里看到的只是个贴图,虽然游戏里再哪个地方有个输出口,但如果你把(2,2)改成(1,1)那么真正的输出口就在(1,1)虽然贴图还是在(2,2)
                      下面两个MAX_WATTAGE表示最大功率,这俩也是基本单词,不知道在哪的可以跟上面一样点他,你会发现他就在最下面定义,想改的可以参照上面方法修改
                      下面有什么想改的大家可以自行翻译修改,这里提一下怎么改吸入的温度
                      按ctrl+f在弹出的搜索框里(不是最下面的那个)搜索398.15,蒸汽机吸热温度明明是125度,为什么要搜398.15呢,两者相减你就知道了,缺氧里的所有温度都是这样的
                      你会发现这个文件里没有这个数字,为什么没有呢,因为蒸汽机最低吸入温度的定义根本不在这里,点击下面的SteamTurbine.States文件然后按F3,或者点上面搜索框里的向右的箭头也行,你会发现有这个数字,然后还是跟上面一样的方法修改就行了,你可以改成373.15f,这样只要是蒸汽他就会吸,注意最后的f,他是float类型
                      至于为什么我知道在这个文件里,因为大部分建筑都会有一个State文件,State翻译过来就是状态,自己写的mod加新物品也要有这个文件,不然无法工作,你要问你不知道怎么办,下面那么多文件,一个个点总会搜到,至于是不是,看他的变量名称就知道了


                      IP属地:湖北12楼2022-05-03 04:46
                      收起回复
                        下面会讲怎么做mod,毕竟这才是这个帖子的重点,前面的最好复习一下先熟悉熟悉,不然会手忙脚乱的,做mod也是先从最简单的开始有些mod还是挺复杂的


                        IP属地:湖北13楼2022-05-03 05:00
                        收起回复
                          楼主早上好。


                          IP属地:广东来自Android客户端14楼2022-05-03 07:03
                          回复
                            gkd


                            IP属地:山东来自Android客户端15楼2022-05-03 10:32
                            回复
                              哈人


                              IP属地:河北来自Android客户端16楼2022-05-03 13:19
                              回复