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

Posted goas

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了修改缺氧的存档-太空背景相关的知识,希望对你有一定的参考价值。

修改缺氧的存档

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


数据保存格式复杂.
基本功能可以修改等级,名字,属性这些.

这里重点介绍下修改太空背景

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

在游戏中使用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,再插入字符串. 不过这可能导致信息错位(有空再搞)

以上是关于修改缺氧的存档-太空背景的主要内容,如果未能解决你的问题,请参考以下文章

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

Pygame系列别样的飞机大战:太空陨石VS大型战机对决(内含源码)

关于缺氧(OxygenNotIncluded)的一些零碎想法

淘宝全屏动态特效页面陨石彩带代码

兼容性问题,这个是巨大的陨石坑

Unity 3D项目-Adventure of JM Robot