边缘世界 RimWorld

边缘世界 RimWorld

617 个评价
存储区迟滞算法〔智能补货〕
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
246 条留言
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.
Glothia 8 月 19 日 上午 9:41 
@baka1125 太感谢了,我找了好久没找到原因,没想到是 Vehicle Map Framework
Hattsworth 8 月 17 日 下午 7:11 
Question: does this affect all hauling or only hauling from other storage units. My use case is that I want to have a primary storage location, and an overflow one, where they will only take to overflow once the main is full (easily done with priority of course). Ideally then, this mod just prevents them from hauling from overflow every time something is taken out of main storage.
大番薯之怒 8 月 9 日 上午 4:13 
我居然现在才发现这个神级MOD~
躲进温柔的梦 8 月 9 日 上午 1:18 
点击物品架没有相关设置是不是和哪个冲突了
碳烤鱿鱼丝 8 月 7 日 上午 3:36 
太棒了,强迫症狂喜
Soup_UK 8 月 6 日 下午 12:00 
@DawnsGlow - StackGap, a mod I've been using for years to set/configure stack limits - has the same issue regarding settings resetting for storage on GravShips at launch. I've not found a stack limiting mod that works reliably with GravShips yet.
DawnsGlow 8 月 4 日 下午 11:56 
@PureMJ : The storage settings turns itself off after gravship launch.

Will you accept a patch, which I might create, to fix the odyssey gravship ? It would be helpful if you release the source but I can create the patch using ilspy.

A similar error also happens with Farming Hysteresis. You can check the comment of tapuesch and the response of author.
PsychedellicToxin 8 月 4 日 上午 11:56 
@pureMJ all I wanted was a single storage shelf frequently resupplied with a minor amount of meals at all time so that my minions don't have to carry and feed a malnutritioned prisoner in bed. Fill it to the brim, and the food will spoil. They're prisoners not guests, I'm not giving them 30 meals to use one or two a day.
pureMJ  [作者] 8 月 2 日 下午 4:18 
@Psychedellictoxin
You can raise the thresholds, or simply build one more storage.
This mod only turns it off when it's "kind of full". You probably have too many prisoners hence your meal storage depleted from "kind of full" to empty too fast. If that is the case, having more storage is the solution.