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_size、crop_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 文件
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直接添加一个额外的资源产出:Kerbalism 的 Greenhouse MODULE 的
crop_size、crop_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 自带的部件
更多 Patch 可参考本项目中的 SomeMMPatches/KerbalismGreenHouse.cfg 文件