Skip to content

Kerbalism 相关 #51

Description

@tinygrox

Kerbalism 自动化食物产出

Kerbalism 对于食物的生产模拟是间隔产出而不是像 TAC LS 的实时产出,这是为了模拟植物的生长,为了拟真化体验。
但是这功能有个弊端,即玩家需要在食物成熟时(通常是200天)手动切换到目标进行手动收获,这个机制一开始很新鲜,但重复操作的次数多了之后只会觉得很恼人,因为我们没有自动收获的选项。
所以为了实现自动化,或者实现类似于 TAC LS 的食物产出,我们就需要修改 Kerbalism 的这个系统,让食物作为资源实时产出,无需等待收获时间。

接下来就是如何手动改写 Kerbalism 的 Patch 配置。

Kerbalism 有个名为 Greenhouse 的 MODULE:https://github.com/Kerbalism/Kerbalism/wiki/TechGuide-~-PartModules-~-Greenhouse

为了实现实时产出,我们可以在这个 MODULE 中添加 OUTPUT_RESOURCE 直接添加一个额外的资源产出:

OUTPUT_RESOURCE
{
    name = Food
    rate = 每秒产出
}

Kerbalism 的 Greenhouse MODULE 的 crop_sizecrop_rate 分别为食物的收获量和产出速度,根据这两个字段来计算我们所需的 rate。

首先用 1 / crop_rate 得到 crop_rate 增长到 1 的总经过秒数 T
然后用 crop_size / T 即可得到食物每秒产出食物的 rate 的值

rate的值已经确定,但同时还要取消掉原来的产出,即将 crop_size 设置为 0,理应也将 crop_rate 设置为 0,但是在 Kerbalism 的代码中:

https://github.com/Kerbalism/Kerbalism/blob/master/src/Kerbalism/Modules/Greenhouse.cs#L233-L235

https://github.com/Kerbalism/Kerbalism/blob/master/src/Kerbalism/Modules/Greenhouse.cs#L343-L345

https://github.com/Kerbalism/Kerbalism/blob/master/src/Kerbalism/Modules/Greenhouse.cs#L442

crop_size 会作为除数存在,所以不能设置为 0,所以只好退而求其次,将生长速度设置为负,或让生长速率极其缓慢(生长个几千年)。

那么接下来的事情就是为这些 Greenhouse 编写所需的 MM Patch,如 Kerbalism 自带的部件

@PART[kerbalism-greenhouse]:NEEDS[ProfileDefault]:AFTER[KerbalismDefault]
{
  @MODULE[Greenhouse]
  {
    @crop_size = 0 // 27.5625
    
    @crop_rate = -0.00000000001 // 0.00000023148
    
    OUTPUT_RESOURCE
    {
        name = Food
        rate = 0.0000063802
    }
  }
}

更多 Patch 可参考本项目中的 SomeMMPatches/KerbalismGreenHouse.cfg 文件

Metadata

Metadata

Assignees

No one assigned

    Labels

    记录Mod问题(非本项目导致)相关或解决办法

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions