首先讲一下第一种mod的开发,这种mod需要对游戏文件很熟悉,注意改文件之前要先备份原文件
这里先说一下缺氧的游戏目录结构
codex:还不知道是啥,以后更
dlc: 应该是dlc的东西,不玩dlc没看
elements:记录了各种物品的属性,比如水的比热容、水蒸气的比热容等等
string:要用到的文件概述里说了,不用管他了
templates:
geysers:里面是各种泉的贴图数据
poi:里面是遗迹的数据
worldgen:
subworlds:里面有各种生态的信息,生态名称就是文件夹名,文件夹里的是子生态名
worlds:里面有各种世界的贴图数据
地图数据说明
这里只写一个地图修改的例子,这类不需要写代码的mod只有替换贴图的时候比较常用,加新地图属于替换地图贴图,看教程之前请先百度yaml语法,必须明白:
- 大小写敏感
- 使用缩进表示层级关系
- 缩进不允许使用tab,只允许空格
- 缩进的空格数不重要,只要相同层级的元素左对齐即可
- '#'表示注释
这五条,其他具体语法的可以照着文件写,上面五条是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文件里的泉,里面已经有所有泉的定义了
# 地图文件在steamapps\common\OxygenNotIncluded\OxygenNotIncluded_Data\StreamingAssets\templates\poi\jungle里
# Badlands: 荒芜
# ForestDefault: 乔木
# ForestHot: 干热
# ForestLush: 翠绿
# Oasis: 绿洲
# Oceania: 海洋
# SandstoneDefault: 类地
# SandstoneFrozen: 冰霜
# Volcanea: 火山
name: STRINGS.WORLDS.BADLANDS.NAME # 荒芜
description: STRINGS.WORLDS.BADLANDS.DESCRIPTION
asteroidIcon: Asteroid_badlands
# 世界特征尺度,和世界大小一起调整,特征被调整到基本的游戏世界大小
worldTraitScale: 1
# 地图大小
worldsize:
X: 256
Y: 384
layoutMethod: PowerTree
# Notes:
# minCounts只是足够的空间来生成有保证的模板
# 生态信息
subworldFiles:
# 砂岩
- name: subworlds/sandstone/SandstoneStart
# 砂岩
- name: subworlds/sandstone/SandstoneMiniMetal
# 砂岩
- name: subworlds/sandstone/SandstoneMiniWater
# 丛林
- name: