边缘世界 RimWorld

边缘世界 RimWorld

660 个评价
存储区迟滞算法〔智能补货〕
16
12
2
7
2
2
3
3
   
奖励
收藏
已收藏
取消收藏
Mod, 1.5, 1.6
文件大小
发表于
更新日期
551.468 KB
2024 年 6 月 22 日 下午 9:00
7 月 15 日 下午 1:26
10 项改动说明 ( 查看 )

订阅以下载
存储区迟滞算法〔智能补货〕

在 pureMJ 的 1 个合集中
Common Sense +
5 件物品
描述
存储区添加了“智能补货”(迟滞算法)功能。
低于设定值则补货,高于另一个设定值则停止。

这可以有效防止“单送一份饭”这种蠢事,让存储更平衡,让搬运自适应。

支持存储区域,货架,冰箱以及一切存储类建筑,也支持联结在一起的多个存储建筑。
支持营养机进料口!

有自动算法和手动切换功能。



背景知识
在游戏里我们有存储区域,货架,冰箱(mod里的)等东西,统称为存储区。小人会自己搬货到存储区。

老玩家常用的策略:在餐桌/工作室/厨房等地方建一些高优先级的货架/冰箱/小型存储区域,这样小人干活/吃饭时就可以随手从旁边拿材料,而不用跑很远去通用存储区拿货。

这个办法好是好,但是我们会发现当一个小人这么做时,很有可能有另一个小人穿越整个地图跑到通用存储区拿单单一份饭,然后再跑很远到刚才有人吃饭的桌子那里把那一份饭放进冰箱。

这也太蠢了,我看着想死。

这个Mod新加
迟滞, 一个神奇的词解决问题!

怎么做?装上这个mod,对你喜欢的存储区开启“智能补货”功能,一切OK了!

详细解释
我们会设置一个目标使用区间。
小人把货架上的材料慢慢使用消耗之后,这个货架的使用率会降到区间里的最小值以下,此时补货就被自动开启了。
小人可以一次搬运比较多的货来补货。(尤其是如果你有Pickup And Haul Mod时那智能补货就非常必要)
补货完成时这个货架的使用率会提升到区间里的最大值,此时补货就又被暂停了。
之后再降到最小值以下,再开启,……循环

这个过程被称为“迟滞”。 原理跟各种工作台里做东西设置成的“一直做直接到有X个”并且"暂停等个数低于Y”是一样的。
这个目标区间我们叫它“迟滞区间”

常用情形
迟滞区间的不同设置能产生不同的工作模式。
下面是一些例子。

6-9 智能补货模式
经典的[60%, 95%). (这也是默认值。可以在mod设置里改这个默认值)
这个模式下你的存储区会被一些补货到95%以上一点,然后补货就暂停了,直到被用到低于60%.
这两个数值对常用的货架冰箱来说正好。再也不用看小人送单单一份饭了。

补货一次模式
迟滞区间[0%, x%).
存储区会被补货到x%,然后就停了。之后不会再自动开始补货,但你可以点一下手动按钮则再次开始补货。

无迟滞模式
迟滞区间[x%, x%).
存储区会补货到x%, 然后只要用掉一点就又会再补。
这个模式跟SatisfiedStorage mod很类似,不过本mod会完整的计算一个存储区的所有格子,并且支持联结在一起的存储.

监控模式
迟滞区间[100%, 100%). ( 也可以用[95%, 95%) )
即使你不想用智能补货功能,打开它也是有好处的。
在这个模式下,小人的补货行为类似你不用本mod,但是本mod:
1. 能提升大存储区的后期游戏性能
2. 能让你轻松地在存储界面上看见你的存储区使用比例。

更多玩法等你来发现。

性能
经过后期游戏,几万存储空间的测试,本mod无负面性能影响。

实际上,靠着缓存算法,本mod反而提升了游戏性能。原理是在本体游戏里如果你的大存储区快满了,小人搬东西时会一个一个格子试(后台计算),并且是每次都算。
而本mod会直接告诉游戏“不用试了,补货已经停了”。

兼容
兼容:Deep Storage, Pickup and Haul, While You Are Nearby, Rim Fridge 等等.
也兼容:Adaptive Storage Framework, RimKeeper - Storage & Filters Helper 等等。

F.A.Q
会影响游戏运行速度吗?
不会。事实上本mod能提升游戏运行速度。

能随便加入存档或者移除吗?
可以

为什么我的小人会往存储区里送货送到高出设定的上限?
这个是正常的。超量送货效果是设计好的。

详细解释:
设定上限是为了两个目标:
  1. 使用率低于上限时,如果是允许送货状态,则不会停止。
  2. 使用率达到上限时,送货自动停止。

注意,第一个目标是严格的.没到上限补货一定不会停。
但是第二目标不是。当上限达到的一瞬间,游戏里会花上一点时间,最多一秒左右(可以在Mod设定里设置),然后才会停补货。这个是为了游戏运行效率考虑。
同时,考虑到小人的工作效率,本Mod并不会强制停止已经在送货的小人。他们会送完这最后一次再停止。
(如果你仔细考虑一下,就会发现强制停止没有意义。其相当于浪费了上限之上的存储空间,也浪费了小人最后一次送货到一半的劳力付出)


更新
v0.2.0 支持 1.6.
v0.1.6 修复了一个小BUG:蓝图状态的储物架无法联结.
v0.1.5 修复了一个小BUG:Mod设置只在DEV模式下才会显示.
v0.1.4 紧急修复了一个游戏无法读取的BUG.
v0.1.3 修复了一个小BUG:营养机进料口的填充工作原来会忽略智能补货设定。
v0.1.2 改进了UI的逻辑,现在跟更多的mod兼容了。
v0.1.1 修复了一个小BUG:当本Mod加入存档时,老的存储区无法打开迟滞功能。
v0.1.0 初版

感谢和链接
非常感谢在Rimworld Discord 服务器里#mod-development频道的成员!

如果你喜欢这个Mod, 请关注我的其它Mod
热门讨论 查看全部(1)
0
2024 年 6 月 26 日 上午 8:45
Bug Report
pureMJ
255 条留言
Leminos 10 月 12 日 上午 12:24 
Is this compatible with stack gap???
能给智能补货设计一个调节补货数量的功能吗,我用其他mod把一组改成20000个了,根本没法精准拖动百分比到200个:steamsad:
Szilreo 10 月 9 日 上午 9:37 
飞船起飞和降落之后打开的智能补货会自动关闭:(
anon ame 9 月 28 日 上午 3:31 
lovely mod

would you consider implementing a stack limit per item?

e.g max 1,2,3,etc stacks of any same stored item

this would make it so "one of everything" can be available close to crafting station
WeskerMo 9 月 26 日 上午 9:16 
复议,希望默认开启。
Matsumoto Rise 9 月 13 日 上午 2:20 
建议在模组设置里加上默认是否开启,后期这么多存储区一个一个开太反人类了。
guojiaqi 9 月 12 日 下午 8:20 
能设置默认开启吗,一个一个货架手动开太断手了😭
jpinard 9 月 8 日 下午 1:16 
@DawnsGlow - Would you mind sharing your patch with me? Thanks :)
Vril 9 月 2 日 上午 5:22 
How this compares to stack gap mod?
Barblegarb 8 月 21 日 上午 10:04 
It's infuriating that they implemented hysteresis on production bills, so they are obviously aware of the necessity, but have done nothing to add it to storage functionality.