修改缺氧的存档-太空背景

发布于:2022-12-23 ⋅ 阅读:(747) ⋅ 点赞:(0)

修改缺氧的存档

游戏名: Oxygen Not Included (缺氧)
在线编辑器: https://robophred.github.io/oni-duplicity/ (可能需要翻墙)
缺氧的存档文件是16进制对象文件. 使用16进制做为分割符.

数据以KeyValue/List形式保存
数据保存格式复杂.
基本功能可以修改等级,名字,属性这些.
在这里插入图片描述
这里重点介绍下修改太空背景
在这里插入图片描述

修改太空背景(未测试通过)

在游戏中使用debug修改不了"真空和太空"背景. 只能通过编辑存档来实现.
在这里插入图片描述
debug做不了"太空"背景.

在这里插入图片描述
打开在线编辑器,进入RawEditor,先关闭压缩.
在这里插入图片描述
游戏背景 在这个路径下 gameData/worldDetail/overworldCells
以块为组合,有位置坐标和背景名;每个块都是Polygon多边形. 多边形共用背景最后一个tag名就是背景名. 太空的背景名为: 内部代码为7. 修改保存就行.
由于游戏坐标太多找起来太麻烦. 需要用代码来做
在这里插入图片描述

修改变异信息

在github上找到 格式化代码
(https://github.com/RoboPhred/oni-save-parser)
nodejs 示例代码:
https://github.com/youwi/oni-test

npm init
npm install oni-save-parser
// testRW.js
const { readFileSync ,writeFileSync} = require("fs");
const {
    parseSaveGame,
    writeSaveGame,
    AIAttributeLevelsBehavior,getBehavior
} = require("oni-save-parser");

var fileName="不做冷却管"; //存档名。  脚本和存档放在一个目录
function loadFile(fileName) {
  const fileData = readFileSync(`./${fileName}.sav`);
  return parseSaveGame(fileData.buffer,{versionStrictness:"none"});//不检查版本。可能导致奔溃。
}

function saveFile(fileName, save) {
  const fileData = writeSaveGame(save);
  writeFileSync(`./${fileName}.sav`, new Uint8Array(fileData));
}

const saveData = loadFile(fileName);

// Make all duplicants half-sized
const minions = saveData.gameObjects.find(x => x.name === "Minion");
for (const minion of minions.gameObjects) {
  minion.scale.x = 0.5;
  minion.scale.y = 0.5;
}
for (const minion of minions.gameObjects) {
    const skillBehavior = getBehavior(minion, AIAttributeLevelsBehavior);
    // Set each attribute to 10
    for (const attribute of skillBehavior.templateData.saveLoadLevels) {
      attribute.level = 10
    }
  }

saveFile(`${fileName}-tweaked`, saveData);

运行时提示版本不兼容了。。。格式已经升级到了7.28

在这里插入图片描述

//把所有乔木种子搞成旺盛
const seeds2=saveData.gameObjects.find(x=>x.name==="ForestTreeSeed");
for(const seed of seeds2.gameObjects){
    const mutantKey=seed.behaviors.find(x=>x.name=== "MutantPlant")  //找变异属性
     mutantKey.templateData.mutationIDs=['rottenHeaps'] ;//添加旺盛属性
}

有空再搞

修改星球名字路径

在这里插入图片描述

	gameObjects/Asteroid/gameObjects/0/behaviors//AsteroidGridEntity/templateData/m_name

几个重要的字段:
在这里插入图片描述
DLC中支持有“RegolithMoonMeteorShowers” 现在编辑器只能改不能加。。。。

 MeteorShowers   标准陨石
 RegolithMoonMeteorShowers  DLC支持的纯陨石
 可以使用代码来添加陨石雨信息.
  

修改特性信息和3D坐标和大小都没什么用,地图生成以后就只纯显示用. 而且容易导致游戏崩溃
在这里插入图片描述
isDiscovered 这个我认为比较关键. 如果后期很卡的话,修改这个值,让这个星球进入"初始化模式",那么星球上的所有设备都不工作了,性能提升很大(已经验证)
修改辐射和光照数值没有用,要修改Traitkey(上面图片写错了),示例:

sunlightVeryVeryHigh
sunlightMed
sunlightVeryVeryVeryHigh
cosmicRadiationMed (辐射)
cosmicRadiationVeryLow

修正时空裂口

修改这个值可以关闭时空裂口,如果debug导致参数没有走对,陨石出不来,用这个重新开始.

gameObjects/TemporalTear/gameObjects/0/behaviors/TemporalTear/templateData/m_hasConsumedCraft
m_open
gameObjects/TemporalTearOpener 这个是打开器. 在debug菜单POI最下面一层.
在这里插入图片描述

修改种子的信息

在这里插入图片描述

修改数量:

gameObjects/ForestTreeSeed/gameObjects/0/behaviors/PlantableSeed/templateData/timeUntilSelfPlant

修改变异:

gameObjects/ForestTreeSeed/gameObjects/0/behaviors/MutantPlant/templateData/mutationIDs	

MutantPlant表示变异种子的信息.
示例:
在这里插入图片描述

我找到几种对应的名字:

  • rottenHeaps 旺盛
  • extremelyTight
  • moderatelyLoose
  • heavyFruit
  • moderatelyTight
  • loadedWithFruit
  • slowBurn
  • bonusLice
  • sunnySpeed
    翻译有点麻烦…

在这里插入图片描述
现在编辑器无法添加key,添加不了变异信息,只能修改.

如果用16进制修改器直接改呢?
在这里插入图片描述
找到MutantPlant,再插入字符串. 不过这可能导致信息错位(有空再搞)


网站公告

今日签到

点亮在社区的每一天
去签到