反应堆控制器

反应堆控制器

alaindustrial:reactor_controller
核能设施HV已实现nuclearreactormultiblockshieldingautomationtier-hv

概览

反应堆控制器是外壳里唯一"聪明"的方块,也是这间房间里唯一的机器。房间还在建的时候,它在自己 周围寻找这间房间、检查它,并告诉你哪里不对、在哪儿。房间一旦封闭,它本身就成了反应堆:收集反应堆 柱、计算发电与发热、烧开水、整理每一摞柱子内部的流体、消耗燃料棒、输出 EU/FE。

控制器要顶替竖墙上的一块外壳放置,正面朝外:正面是玩家看的屏幕,红石也接在那里。电缆接在其他 任意一面。有两个控制器的房间不会成形——一间房间只有一个大脑。

控制器不需要房间也能工作。没有房间时它转入无壳模式:用半径扫描找出周围的料架,交出明显被削减 的功率,代价是料架自己周围的方块会定期熔化。这是玩家有意的选择,而不是故障——细节见 「无壳模式」一节。

过热的尽头。越过 这条线,房间就开始熔掉自己的内容物;刻度涨到 100% 则会启动倒计时——若不把刻度降下来,两到三分钟后就会爆炸。运转中的 堆芯周围的辐射与熔毁、事故都各自独立。

它该立在哪儿

要求为什么
在竖墙上(不能在地板或天花板)正面是要读的面板,红石也接在那里;装在天花板上就看不见了
不能在外壳的棱或角上棱上的格子没有"内侧"可以朝向
正面朝外房间内部在控制器背后;把它转过来,玩家会看到"控制器不在墙上"
每间房间正好一个同一个外壳里的第二个控制器会给出"房间里有第二个控制器"并附上坐标

这四个条件由同一次扫描检查,给出的也是同一类回答——状态加位置。没有单独的"配置模式":放好、看屏幕、 改。

扫描

扫描分两趟,这不是实现细节,而是那些提示之所以有用的原因。

  1. 六面墙——从控制器面前的格子出发,沿 ±X、±Y、±Z 各找一面。每面墙不是靠一条射线找,而是靠最多

九条平行射线:这一格自己的射线,加上与方向垂直的平面上它周围八格的射线。墙立在多数射线停下的 地方;票数相同时,这一格自己的射线胜出,其次是较近的那面墙。本身就是外壳方块的相邻格(控制器所在 的墙、这一格下面的地板)不投票。如果没有一条射线找到外壳,房间就"在这个方向上没有边界"——要么它 太大,要么它有一面被打穿了。

  1. 沿整个周长巡视,范围由这六面墙确定。正是这一趟能在 14³ 的外壳里任何位置找出缺失的格子并说出

它的坐标。找到第一个洞之后,巡视不会中断,而是继续数出其余所有的洞:前 12 个按坐标记住,之后 只计数。只要还没有洞,同一趟里还会统计控制器数量、记住门的格子、算出玻璃的占比。

为什么用投票,而不是一条射线(实机测试,)。每个方向只有一条射线时,它撞上的是它唯一那一列 上立着的东西。天花板正中的两个洞,其中一个正在控制器面前那一格的上方,就把射线放上了天,于是天花板有 洞的房间被判成没有天花板的房间——"未找到墙"而不是"外壳有破口"。反过来,房间内部同一列上多出来的一块 外壳,会让射线停在真正的天花板下面,房间就"缩小"了。相邻的射线在这两种情况下都占上风。

为什么报出所有的洞,而不是第一个(同一次测试)。巡视以前在第一块非外壳格处就停下,一个在右边砸掉 两格、左边砸掉四格的玩家,只看到右边一个标记。他修好它,等下一次扫描,然后才知道下一个。

射线的射程是尺寸上限再加一步,而不是正好到上限。多出的这一步不是余量,而是"房间太大"这个状态 能够存在的前提:一条恰好在上限处截断的射线,永远看不到那面比规格宽出一格的远墙。

为什么不用简单的洪水填充:填充分不清"房间太大"和"房间漏了"——两种情况下它都只是一直跑到头。两趟 扫描回答的是两个不同的问题。

检查的顺序同样是关于体验的决定,而不是关于代码的:

  1. 控制器的位置(它正面前方是否有一格是空的);
  2. 边界——六条射线;
  3. 尺寸(太小,然后太大);
  4. 密封性——巡视中遇到的非外壳格(报出第一个,统计全部);
  5. 控制器本身是作为墙格而不是棱格被找到的;
  6. 第二个控制器;
  7. 门洞;
  8. 玻璃占比。

每一条回答都可以单独修好,玩家一次修一件事,而不是拿到一张清单。玻璃上限刻意排在最后:这是唯一 "软性"的问题——出现它时建筑仍然密封且正确,只是不算作防护性的。

什么时候重新扫描条件
定期40 刻 = 2 秒
邻居变化时立刻:旁边的墙被砸了、装了端口、门被炸了

定期扫描是必需的:邻居更新只对紧挨着控制器的六个方块生效,而房间可以有 14 格宽。远墙上被挖掉的 方块对控制器来说不是邻居。也正因如此,控制器从不"休眠"。

状态

一共九种状态。其中八种是待解决的问题,第九种是"就绪"。

状态含义显示位置显示尺寸
房间已成形密封且尺寸合规
控制器不在墙上在地板/天花板、在棱上、被封死或转错了面射线测到了就显示
房间没有边界射线越过上限也没找到墙
房间太小某个轴上的内部尺寸小于下限
房间太大某个轴上的内部尺寸大于上限
外壳有缺口周长上的某一格不是外壳方块是,所有的洞
没有门洞有门,但没有门洞
房间里有第二个控制器同一个外壳里还立着一个
玻璃太多玻璃超过外壳格数的 30%

"玻璃太多"指出的位置不是"有罪"的那一格(有罪的是占比,不是方块),而是巡视顺序里的第一块玻璃。 它的作用是让烟把玩家引到外壳的玻璃部分。

它怎么带动反应堆

成形的房间是一台机器,它的整个刻更新都由控制器执行。燃料柱完全没有自己的刻更新:摆了三十根柱子的 大厅,对服务器的开销和一个带实体的方块相同。

收集柱子

控制器用检查外壳的同一趟巡视(每 40 刻一次)走过房间内部,记下每一根反应堆柱——装了料的和 空的都算。同时它累加带铀的燃料棒,并统计相邻对数。

空柱子被收进名单是有意为之。按燃料过滤看起来无害,其实不然:空料架会掉出水回路和整摞流体的整理, 以至于从底部送进去的水升不过第一根装了料的柱子。柱子属于这台机器,是因为它立在房间里,而不是因为 有人给它装了料。

而相邻加成仍然按燃料统计:两根并排的空料架什么也加速不了,否则加成就等于花在脚手架上。

巡视 12³ 的内部意味着 1728 次方块读取:每秒六十次很荒唐,每两秒一次很便宜。代价是延迟:用手插进去 的燃料棒要到下一趟巡视才计入。

发电、燃料与发热

怎么算
潜力(100% 时)燃料棒 × 6 × M能,其中 M能 = 1 + 0.5 × 相邻对数
产出× 深度‰ / 1000`,且不超过缓存的剩余空间
发热满热 × 产出 / 潜力,其中满热 燃料棒 × 4 × M热M热 = 1 + 0.8 × 相邻对数
燃料消耗正好是产出那么多 EU/FE,按各柱子的燃料棒数成比例分摊
热量clamp(热量 + 发热 − 水带走 − 自然散热, 0, 10000);外壳散热只在反应停止时才有

上限在深度之前生效,而不是之后。先把潜力钳到 512 EU/FE/刻,然后才按深度取。反过来看似等价,其实 不然:任何潜力已经超过 512 的区域,滑块的每一档都给出同样的 512 EU/FE/刻。

燃料是按 EU/FE 计的,不是按时间。控制器从柱子那里扣掉的正是它输出的能量,而柱子把它换算成燃料棒 的耐久格(每格 144 EU/FE)。由此得到这套模型的核心性质:一根燃料棒在哪里都值 144 000 EU/FE,没有 任何布局能让铀变便宜。

发热有自己的相邻系数,而且比发电的大——40% 对 25%。这是水回路最关键的数字:密集的区域升温 比增益更快,因此提高功率的布局同样提高了冷却的代价

也正是这个除法从上方限制了发热:

HV 上限时的发热 → 512 × (4 × 0.8) / (6 × 0.5 = 546 点/刻

处在上限的密集房间每刻发热 500…546 点,没有哪一间会超过 546

大房间给的不是功率,而是自持力。任何超过 512 EU/FE/刻 的配置,输出都是同样的 512 EU/FE/刻;变长的 只是两次装料之间的时间。而房间的胃口在任何到达上限的布局上都一样:256 根燃料棒 = 每小时 128 块铀矿石。各种布局的数字见

热量每刻都会结算,哪怕反应堆已经停机:冷却必须照常工作,否则"停堆再等等"就不成其为自救手段。 停机反应堆的满刻度降到零需要 395 刻(19.8 秒)。越过 这条线,房间 就开始熔掉自己的内容物——见「堆芯熔毁」;刻度涨到 100% 则会启动 事故倒计时

操作:红石与深度

机构作用
接到控制器的红石信号——反应堆运转,撤掉——紧急停堆
深度滑块五档 0 / 25 / 50 / 75 / 100%;0% 就是停堆,只不过是在屏幕里操作

刻意不再有别的操作机构:两个,正好是站在冒烟的大厅里的玩家脑子里装得下的数量。

滑块在任何规模上都有效:它切的是已经被上限钳过的值,所以 3×3 一层用 50% 就是 256 EU/FE/刻——热量、 水和每小时的铀也正好减半。

冷却:水是运行中的房间唯一的降温手段

反应进行期间,外壳完全不散热。凡是水没带走的热量都留在刻度上,所以没有水的反应堆会一路升温到 顶端——并在那里启动倒计时。发电与水无关:干烧的反应堆输出同样的 EU/FE、消耗同样 的燃料,只是在走向事故。走得多快,只取决于功率:

活性区发热,点/刻无水升到 70%无水升到 100%水,mB/刻
1 根柱子(4 根燃料棒)16438 刻(22 秒)625 刻(31 秒)8
2 根并排57123 刻(6 秒)176 刻(9 秒)29
3 根一排(12 根燃料棒)12457 刻(3 秒)81 刻(4 秒)62
6 根排成 2×3 或更密500…54613…14 刻19…20 刻(1 秒)250…273

以前并非如此。在 之前,外壳随时都会散掉 4 + 热量 × 8 / 1000——最多 84 点/刻——任何比这 弱的区域都会停在自己的平衡点上:一根柱子在 15%,两根相邻的在 66%,八根燃料棒在 65% 深度下停在 40%。只要把燃料棒收一收,就完全可以不接水,而"控制台"标签页的第一次实机测试就暴露了这一点。

停下来的房间会自己冷却——沿着同一条曲线 4 + 热量 × 8 / 1000:撤掉拉杆、深度 0%、燃料耗尽。 否则"停堆再等等"就不再是自救手段。

水每刻带走反应的全部热量,此外还带走已经积下热量的二十分之一:

反应热 = 请求 > 0 ?: 0
水,mB = ceil((反应热 + ceil(热量 / 20)) / 2) (向**上**取整)
带走 = 沸腾量 × 2
外壳散热 = 反应进行中 ? 0: 4 + 热量 × 8 / 1000
热量(t+1 = clamp(热量 + 反应热 − 带走 − 外壳散热, 0, 10000)

第一项守住刻度,第二项在断水之后把它降下来。两项都没有阈值,这治好了实机测试发现的锯齿:旧 回路只从刻度的 60% 起才启动,而且以每次两点的步子带走热量,所以停在这条线上的堆芯每隔几刻就越过 它一次,刻度在 59/60% 之间闪烁。

水够用的反应堆,刻度显示为零,热量条是空的。黄区意味着水应付不过来,而"警告"标牌亮得还要 更早——只要水带走的热量少于反应热的 95%。

烧水的是控制器而不是柱子:它沿自己的柱子名单走一遍,向每根要还差的那部分。烧不掉的那部分留作 热量,爬上刻度。

整理每一摞

控制器每刻都会把每一摞连续的竖直柱子内部的流体理顺:水全部沉到底,蒸汽全部升到顶。这样一摞 就表现得像一个容器,插在它任意一格上的管道就能把整摞灌满。

⚠️ 并排站立的柱子彼此不相连。冷却剂出现在一根什么都没接的柱子里,无论多方便,读起来都像 是 bug。

无壳模式:没有房间的反应堆

房间没能成形的控制器并不会闲着。只要有装了料的料架实打实地贴着它,它就直接带动这些料 架。这是第二种完整的工作模式,不是故障状态。

这条联系必须是物理上的。控制器从自己出发向外走,沿着彼此相接的料架屏蔽合金方块 一路延伸——也就是说,还没盖完的外壳同样能导。裸露的地面不导这场反应:隔着空当立在三格开外的 柱子,不管堆了多少,都不算反应堆的一部分。 是这趟巡视的长度上限, 而不是搜索半径。

这条规则来自一次实机测试:以前的查找按半径走,立在光地上的控制器会被隔着空当的一根柱子 点亮。那看起来就像能量在凭空传送。贴着才算数——而这正是它该有的手感。

缓存满了并不会把危险关掉。燃料只在有人要电的时候才消耗(这是对的),但不管有没有人买 电,反应本身照样在进行。所以方块损毁挂在"反应堆没有停机、里面有燃料"上,而不是挂在这一刻的 出力上——否则只要把用电的机器拔掉就能把它关掉。辐射一向也是这么做的,从来如此。

封闭的房间无壳模式
怎么找到料架沿墙巡视,边界由房间给定沿着彼此相接的料架和屏蔽合金方块巡视
功率完整,随房间变大而增长同一布局的 ,且不高于
发热与水完整的热模型与冷却回路都没有:无壳的反应堆没有什么可冷却,面板上也没有热量条和水位条
深度滑块有效被忽略——燃料棒始终插到底
EU/FE 从哪儿走从墙上的 reactor_outlet 端子出去直接从控制器各面输出——无壳模式下输出端是死的
危险越过过热线后熔掉自己的内容物只要在转,就一直熔掉周围的景物
辐射由墙挡住毫无阻碍地打到周围

无壳的反应堆唯一听从的操作机构是红石。撤掉信号就把它彻底停下,这也是一种实用战术:想安心地在 活着的堆芯外面把外壳补完,拉一下拉杆就够了。

深度滑块刻意既不显示也不生效。一个在看不见的地方照样起作用的滑块会变成陷阱:一间抽出了燃料棒 的房间被砸开一面墙之后,会一声不吭,什么也不说明。

功率被削了两道——一道比例,一道上限——而且两道限制都必需。比例让无壳的反应堆弱于建好的房间; 上限则堵住"那就多堆几根燃料棒"这个回答。没有上限的话,堆得足够大的一坨就能压过一间房间,外壳连同 冷却回路都会沦为装饰。

谁的料架归谁

两个控制器挨着同一坨料架,会各自把整坨都算一遍——这就是凭空生出来的能量。规则有两条,而且一次扫描 就都能解决,不需要往存档里记任何账:

别人封闭房间里的料架,从外面谁也看不见。把无壳控制器摆在一台正在运转的反应堆旁边,是喂不到 自己的。 两个无壳控制器之间,料架归较近的那个。平局按坐标判,而不是只按距离:一条各方各算各的规则, 会把同一根料架同时判给两边。

已知的缝隙:位于未加载区块里的控制器是看不见的,因此区块边界远端的料架可能会短暂地被算两次。 这是在邻居加载之前每刻几点 EU/FE 的事;用强制加载区块去堵它,是比病更重的药。

堆芯熔毁:过热的代价

越过 这条线,封闭的房间就开始熔掉自己的内容物:地板、普通管道, 以及玩家带进去的一切。最先没的永远是普通的流体管道,不管它立在哪儿:这是用手边现成材料拼出来的那 部分,也正因如此,它最能说明是哪里出了岔子。

外壳本身完好无损。外壳方块、玻璃、门、入口、输出端和控制器本身都立在内部之外的那一圈上,根本 不会进入选择范围。房间要的就是这个:事故留在里面。

装了燃料的料架同样完好。它们是围着一块屏蔽板拼出来的,而一个为了扛住反应堆才做出来的零件,也 扛得住它的事故。里面的铀不会丢——熔毁从玩家手里拿走的是外围的管线和时间,不是燃料的存量。

每熔掉一块方块就带走 点热量,因此熔毁会自我限制——房间一边吃掉自己 的内脏,一边冷下来。玩家失去的是内容物和其中的燃料,但留下的是一副可以重新装配的外壳,而不是一个 坑。

这期间,面板的标题显示的是"堆芯熔毁",而不是几何判定。此刻一副完好无缺的外壳说的是实话,而这 是所有实话里最没用的一句。

方块损毁:它看起来是什么样

两种模式毁方块的方式完全一样,而且总会提前警告——就在那块方块上,指名道姓地

  1. 某一块被选中。它身上冒出火焰和烟,还有嘶嘶声。
  2. 过 (两秒)。来得及走开,或者把立在它上面的东西撤掉——这点余地正是危险

和惩罚的区别。

  1. 方块变成熔岩。挑选时优先考虑头顶是空气的格子:围着料架的那个球有一半埋在地下,

没有这条规则的话,大部分损毁都在脚底下悄悄啃石头,而看得见的疤痕只有宣称半径的一半宽。 如果玩家在这段时间里把它挖掉了,什么也不会发生:这个选择会被重新核对,而不是闭着眼执行。

两种模式下都不会熔化的东西:空气、内部含有流体的一切(包括含水方块——水在哪里都能止住熔岩,把 屋子灌满水是正当的战术),以及一切不可破坏的方块——判定依据是方块自身的属性而不是一张名字清单, 所以别的模组自带的基岩自然而然也会被尊重。

无论在哪儿、无论什么时候都不会熔化的东西:一切用屏蔽合金做出来的东西。也就是反应堆的 方块——外壳方块、玻璃、门、入口、输出端、灯、按钮、料架和控制器——以及屏蔽箱子。规则 正是这一条:"用屏蔽合金做的就不熔",而不是"属于反应堆的就不熔"。这份清单存放在方块标签 里,数据包可以往里添。没有这一条,"把无壳电站当成长期策略"就不是 一种选择,而是一根导火索。半径内的其他一切——玩家的电缆、他的管道、箱子和脚下的地—— 都是合法目标,这正是抄近路要付的代价。

无壳模式下的半径是从每一个装了料的料架量起的,而不是从控制器量起。控制器只是大脑,危险的是燃 料;辐射早就是这么算的,因此两套机制对"离多远才危险"给出的是同一个答案。从控制器量是个错误,绕到 反应堆背面就看得出来:它立在墙里,球的一半被反应堆自己那副无敌的躯体占掉了,所有的损毁都落在它面 朝的那一侧。

⚠️ 熔岩会流。熔掉的方块会变成熔岩源,而熔岩按原版规则铺开——横向最多三格,向下则没有限制。熔 掉一块方块不是损失一块,而是一滩;透过还没建完的外壳上的窟窿,熔岩会流进里面。这份严苛是有意 的,但把无壳电站紧挨着舍不得的东西去建,并不可取。
⚠️ 玩家或生物脚下的方块并不受保护。这份严苛是有意的:在一场已经开始的事故当中因为大意而丧命 是可能的,不会为了安全而跳过任何一格。

用 可以整个关掉。关掉之后所有警告依旧在——声音、粒子、状态——但不 会改动任何一块方块:这个开关保护的是世界,而不是把反应堆的状态藏起来。

满百分之百的事故

热量条走到顶端不再只是停在那里——它会启动倒计时。面板标题变成「即将熔毁」,下方出现一条不断缩短的红 色条,警报一直响到最后。

条上故意不写数字。时长在每次事故时随机抽取,两到三分钟:固定时长玩家一周就背下来了,然后就不再看面 板。红条诚实地说「时间不多了」,但不告诉你还剩多少。

直到最后一刻都能取消——没有不可挽回的时点。 两种办法,而两种归根到底是同一件事:让热量条离开 百分之百,并在下面保持五秒

打穿一面墙不是办法,尽管面板以前这么建议过。房间会退回裸机模式,而裸机反应堆有自己的刻度:从 14 根燃料棒起,不稳定度大约 20 秒就冲到一百,并启动新的倒计时——这一次已经没有能帮上忙的回路了。

这五秒不是吹毛求疵,而是堵住一个显而易见的漏洞。热量被压在刻度顶端,所以只要一个 tick 没有信号,读数就 会变成 99 %。当倒计时还按这个瞬时读数清零时,一个二十 tick 里断开一 tick 的中继器时钟,就能让反应堆保 持 95 % 的占空比并完全免疫。现在倒计时在低于红线期间会暂停,只有在下面待满整个窗口才会解除;只要有 一个 tick 回到顶端,攒下的进度就清零。任何诚实的补救都能轻松满足,而闪烁信号什么也换不到。

缓冲区满不在这个列表里。 能量无处可去的反应堆并不会停下:反应照旧进行,热量照旧上升,没有冷却照样会 炸。唯一变的是不再消耗铀,因为燃料是按实际输出的能量结算的。开着不管、缓冲区又满的反应堆,白白发 热,也白白炸掉。

事故会被房间完全兜住——里面烧成一片,外面一格不动——大型电站则兜不住。墙壁的造价就是为了这个。

事后留下的是弹坑、震中的岩浆、从堆架里甩出来的铀,以及 辐射污染土——但只出现在爆炸真正够到的地方。开关 会彻底移除事故,保留倒计时、声音和面板显示。

裸机反应堆的不稳定度

没有房间的反应堆既没有热量也没有水——它有的是不稳定度,在面板上单独占一行。它随堆中燃料棒数量增长, 也会自行衰减,所以每种规模都有自己的平衡点:

堆架数量稳定在意味着
1约 29 %可以一直放着
2约 59 %可以一直放着
3约 89 %极限:能一直跑,但面板是红的
4 及以上没有平衡点冲到一百并进入同样的倒计时

由此得出岩浆农场的规则:最多三个堆架可以无人值守地放着跑。第四个把农场变成炸弹,而面板会提前告诉 你。

界面

类型:一个没有任何槽位、也没有玩家物品栏的屏幕——控制器是用来读的,不是用来装东西的。刻意不设 槽位:空槽位会招来漏斗。玩家物品栏的几排格子会占去面板的下半部分,而点它们什么也不会发生。 没有升级面板:控制器不是加工机器,四个隐藏的升级槽会许诺它做不到的事。 没有进度箭头:反应堆没有"正在进行"的操作。

带标签页的屏幕。面板为 236×184,左侧边缘排着标签页,用的是游戏自带进度屏幕的贴图:每个标签页以 一个物品作图标,并带有显示名称的提示。标签页一个一个地加入,没有"留给以后"的空标签页。目前有四个 标签页——"控制台"、"房间"、"堆芯"和"冷却水"。关着的标签页上可能亮着标记:红色表示警报,黄色表示警告。最后打开的标签页会被记住, 直到游戏重启。

每个标签页的页头都一样:标签页名称、右侧的状态标牌,以及标牌下方一条不带数字的事故倒计时条。标牌 按顺序选取——第一个符合的状态胜出:

标牌何时
即将熔毁倒计时正在进行
堆芯熔毁房间正在熔掉自己的内容物
无壳模式房间没有成形,但扫描找到了料架
建造中房间没有成形,也没有料架
警告热量达到警告线或更高、蒸汽排气堵塞,或者水带走的热量少于反应热的 95 %
停机房间已密封,产出为零
运行中其他所有情况

倒计时排在熔毁之前,因为只有它有期限。"警告"排在"停机"之前:反应进行期间外壳不散热,缺水的反应堆 不管在不在卖电,都在走向事故。以前缓冲满时,这样的反应堆会显示成灰色的"停机"。停下来的房间不耗水, 也不算冷却不足。

"控制台"标签页

这个标签页以三种形态之一显示反应堆——绝不会同时出现两种。

形态何时上面有什么
运行FORMED带刻度标记的热量条;"输出"(EU/FE/刻,或用红色写出的停机原因)和"缓冲";带流量的"冷却水"和"蒸汽";"燃料棒";深度滑块和停止按钮;建议
无壳模式不是 FORMED,扫描找到了料架不稳定度条;"输出"、"缓冲"、"燃料棒";滑块的位置换成一条说明:这样的反应堆只有红石信号才能停下;建议
建造不是 FORMED,没有料架用红色写出的扫描器结论;"打开“房间”"按钮——地图、检查清单和问题所在的位置都在那个标签页上;"缓冲";关于该修什么的建议

热量条上的标记——警告(70 %)和熔毁起点(85 %),下面标着各自的数字。冷却目标(60 %)的标记已经 取消:接了水的反应堆停在刻度的零附近,它以前守着的那条线已经说明不了任何东西。它的通道现在传送的是 水带走的热量占比。这些数字通过服务器的通道传来,而不是从客户端的配置里读取。配置不会同步到客户端,所以在改过平衡数值的服务器 上,标记否则就会落在反应堆实际起作用之外的位置。界面的第一版恰恰错在这里:它的黄色区段取自客户端配置。 条的颜色在警告线以下为绿色,到熔毁起点为黄色,再往上为红色。

热量标签旁边有一个趋势箭头:如果过去两秒内热量上升了 2 % 或更多,就朝上;下降了同样多,就朝下。 停在自己平衡点上的反应堆会上下晃动一个百分点,跟着它闪烁的箭头就不再有任何意义。打开屏幕后的头两秒 没有箭头:还没有可以比较的东西。

蒸汽有自己的条。从 90 % 起,它的标签变成"排气堵塞",条也变黄。排气堵住时,冷却水条令人安心地满着, 热量却在上升:水就在那儿,只是没地方沸腾。以前只有冷却水条的黄色在说明这一点,而屏幕上没有任何地方 解释这个颜色是什么意思。

控制棒深度是原版滑块,步长 5 %,外加一个把深度设为 0 % 的停止按钮。数值以一次请求发往服务器:在 松开滑块或按下方向键的时候。它走的是原版容器按钮的通道();按钮编号就是以百分比表示 的深度。请求的数值会在屏幕上保持到服务器回应为止,但最长不超过两秒。不保持的话,拖动时数字会往回跳; 不设上限的话,被服务器拒绝的请求就会永远留在屏幕上。

滑块和停止按钮只在房间已密封时显示。无壳反应堆会忽略深度,而一个看起来能用、实际上什么也不做的控件, 正是当初引入无壳模式时拒绝掉的那个陷阱。在其他形态下,点击滑块本该在的位置什么也不会动——那里根本 没有滑块。

建议是标签页底部的深色框:一个用状态颜色写的标题,以及该做什么。如果译文太长,文字会整体缩小, 而不是在句子中间被截断。

状态建议说什么
倒计时离开刻度顶端并在下方保持几秒;带编号的出路——水和拉杆(无壳反应堆则是拉杆和拆掉一个料架:它没有水)
熔毁调低深度或供水;给出熔毁的阈值
无壳模式料架周围的方块会熔化;不稳定度从 80 % 起发出"已达不稳定极限"警报
建造针对这条扫描器结论该修什么;在哪儿——见"房间"标签页
排气堵塞检查蒸汽喷口
没有水没有水,就没有东西为反应堆降温,它会走到事故;通过反应堆入口引水进来
过热水带不走全部热量;再加一条水管线或调低深度
水量不足给出水带走的热量占比:其余部分在加热反应堆
停机如何修好这一条具体的停机原因
正常水带走了全部热量

"没有水"在任何温度下都是警告。燃料棒工作期间,除了水没有任何东西能给反应堆降温,所以干着的房间 从第一刻起就在走向事故。带走 95 % 及以上热量的水就算够用:个别几刻晚到 1 mB 的供水,不该让标牌闪烁。

鼠标悬停提示覆盖热量条(每个标记是什么意思,用它自己的颜色)、输出、缓冲(以 EU/FE 计的精确电量)、 冷却水、蒸汽、不稳定度、滑块和停止按钮。

"输出"这一行永远不会显示破折号。已经成形、已经装料却一声不吭的反应堆,是这台机器最糟糕的状态, 而它的每一种原因都有不同的修法,所以那里印的不是零,而是用红色写出的停机原因:"外壳未密封"、 "无燃料棒"、"控制棒已抽出"、"无红石信号"、"缓冲已满"。破折号会让玩家在五种不同的故障之间瞎猜。

每一行都是分别测量的标签和数值。数值保持原本大小——人们读这一行就是为了它。标签缩小到剩下的空间 里。这是界面第一版的直接后果:那时标签和数值是同一个字符串,俄文文本压到了图标上。

"房间"标签页

这是建造用的标签页:俯视的外壳、按顺序排列的扫描器检查,以及该修什么。

未成形的房间打开屏幕时直接停在"房间"上。这个决定是在服务器的通道到达后的第一刻做出的,而不是在 打开屏幕时:刚打开的菜单读到的都是零,而零正是已成形房间的序号。通道到达的标志是最大房间尺寸那条通道: 服务器总会发送它,而且它从不为零。如果玩家已经自己选了标签页,这个选择不会被改动,"房间"也不会变成他 下次回来时停留的标签页。标签页上的标记在外壳建造期间为红色,在无壳模式下为黄色。

俯视地图。一格就是一列方块,北在上,东在右。地图上有外壳的环、内部空间、控制器(橙色)和闪烁的 问题格——缺口的话是所有的洞,按坐标最多标出 12 个。格子里标着洞相对于控制器的高度("+2"):从上往 下看,分不清地板和天花板。如果同一列里有好几个洞,格子会标成"×2",鼠标悬停提示会逐个列出。对有多个洞 的缺口,地图下方的框给出洞的数量,而不是到第一个洞的方向;如果洞超过 12 个,还会写出其中有几个在地图 上。朝向按东南西北,而不是"从控制器正面看":文字里的方向——"向东4、向上2"——也是按东南西北,而一张跟 着控制器转动的地图,会在一半的房间里把东画在左边。格子大小随房间调整:5×5 不会画得像邮票那么小,而 15×15 的外壳——比上限大一格的房间——也能完整放下。悬停时,问题格会说出到它每一个洞的方向,控制器格会 说明这是控制器。

在扫描器的射线找齐六面墙之前,地图上没有外壳:只有控制器和问题格,而对 ROOM_UNBOUNDED,地图下方写 着"未找到墙"。

检查清单——扫描器的各项检查,按它执行的顺序排列:

#让它不通过的状态
1控制器朝向房间内CONTROLLER_NOT_IN_WALL,房间未测量
2六面墙都已找到ROOM_UNBOUNDED
3内部 3–12TOO_SMALLTOO_LARGE
4外壳没有破口BREACH
5控制器在墙上,不在棱上CONTROLLER_NOT_IN_WALL,房间已测量
6只有一个控制器SECOND_CONTROLLER
7若有门,须立在地板上NO_DOORWAY
8玻璃不超过 30%TOO_MUCH_GLASS

不通过那一行之前的行打 ✓,不通过的那一行在高亮背景上打 ✗,之后的行是"·":扫描器还没走到那里。检查 清单也回答了"哪些已经通过":逐块修房间的玩家能看到红色的那一行往下移,而单独一条红色结论从来不会显示 尺寸其实从一开始就没问题。

为什么"控制器不在墙上"占两行。扫描器会从两个不同的地方给出这个状态。射线之前——控制器正面前方的 格子被占着:什么都没测量,这是第一项检查。巡视周长期间和之后——控制器装在地板、天花板或棱上:到这时射线 已经测过房间,墙和尺寸都已通过。区分两种情况的,是房间有没有测量过。只用一行、把 ✗ 放在最上面、压在 两行已知通过的行之上,就是在说假话。"不通过之前的全部通过"有一个例外:装在地板或天花板里的控制器是在 巡视周长途中被发现的,所以这种情况下"外壳没有破口"那一行保持"·",而不是 ✓。

行的顺序是对照真正的扫描器核对的:一个 L1 测试会搭出同时带两个缺陷的房间,并要求扫描器报出排在 前面那一行的缺陷。

行里的上下限通过服务器的通道传来,和热量标记一样:配置不会同步到客户端,一份用本地 3…12 的检查 清单,放在上下限不同的服务器上就会显示错误的数字。

地图从哪儿知道墙在哪。通道传送内部空间的尺寸,以及它西边缘和北边缘相对于控制器的偏移;缺口时还 传送洞的数量和前 12 个洞的偏移,每个洞三条通道。没有打包进一条通道:配置里的房间尺寸上限没有封顶, 打包后的偏移在大房间上会溢出翻转。以前扫描失败时会把测出的房间丢掉,缺口时尺寸传过来的是零。现在, 射线之后发现的每一条结论——尺寸、洞、装错位置的控制器或门、玻璃——都带着发现它的那个房间。

地图下方的框——和"控制台"上的建议一样的深色框:用状态颜色写的结论、该修什么、在哪儿。房间已成形 时,写的是"房间已密封",并指向"控制台",反应堆在那里操作。

用破折号代替零。房间还没测量时,尺寸那一行显示"未测量",而不是"0 × 0 × 0"。零也是一次测量,在没有测量 过的地方显示它就是撒谎;破折号老实地表示"没有可显示的"。问题的位置也一样:只有确实指向某个方块的状态 才会印出方向(BREACHSECOND_CONTROLLERCONTROLLER_NOT_IN_WALLTOO_MUCH_GLASS);对 NO_DOORWAY 来说,"位置"就是控制器本身,印偏移量只会是噪音。

ROOM_UNBOUNDED 显示方向,尽管它在技术上有一个位置。这是一次试玩之后的修正:这个状态的"位置"是 射线放弃的地方,在空旷地面上最远可达 13 格,而一个孤零零地朝山坡冒烟的控制器,结果比沉默还糟。它指向 的地方根本没什么可修。

位置是方向,不是坐标。偏移量从控制器自身算起,读作"向东4、向上2":读屏幕的玩家就站在控制器旁边, 这样一句话比三个数字更快把他带到那一格。偏移为零的轴会被省略——正头顶上的缺口读作"向上2",而不是 "向东0、向上2、向南0"。技术上这也是唯一的选择:菜单的同步通道传的是 16 位有符号数,世界的绝对坐标 装不进去,而偏移量按构造不会超过 ±14。

从外面也能看出状态:成形房间的控制器正面会发亮(formed 方块状态),未成形的则是暗的。不打开屏幕 就能检查建造情况。

"堆芯"标签页

这个标签页从上方俯视堆芯:一格就是一个竖列,也就是一摞竖直叠放的柱子。竖列是水和蒸汽共用的一个 容器,所以读起来也是一个整体。网格的朝向和"房间"的地图一样:北在上,东在右。

格子就像物品栏的槽位。燃料棒按竖列里平均一根柱子的情况画成小竖条:亮的是装料的,暗的是空包壳。 下面是一条样式和物品耐久条相同的磨损条:燃料棒新时为绿色,经过黄色,烧尽时为红色,依据的是竖列的 平均磨损。如果竖列里不止一根柱子,格子角上会标出柱子的数量——前提是格子不小于 9 像素,也就是在 9×9 以内的堆芯里。格子大小随堆芯调整:12×12 的大厅能完整放下,只有两个竖列时也不会被放大到铺满整个 网格。在 9×9 及以上的堆芯里,格子太小,画不下四根小竖条,于是整格画成一块颜色:竖列里有燃料为绿色, 只有空包壳为暗色,底部带一条磨损线。

最密集的竖列在格子角上用红色方块标出。模组里没有按柱子分开的热量——整间房间只有一个热量——所以 标记打在的不是"最热的"竖列,而是其柱子在六个方向上拥有最多装料邻居的竖列。相邻加成按整间房间计算: 每一对相邻都会提高整座反应堆的发电和发热,而发电量在所有燃料棒之间平均分配。所以这个标记指出的是这份 加成在哪里挣到,而不是哪一摞更热。只装着空包壳的料架不算邻居。平局时按顺序排在前面的胜出:最北的, 其中再取最西的。

右侧面板是选中竖列的详细信息:柱子数、燃料棒(装料数/位置数)、空包壳(若有则为黄色)、磨损—— 平均和最高、剩余能量、有燃料的邻柱、该竖列的水和蒸汽。点击格子即可选中竖列。什么都没选时,显示应当 优先更换的竖列;如果没有需要更换的,则显示最密集的竖列。选中状态绑定的是竖列相对控制器的位置,而不是 堆芯的角:无壳反应堆失去最西边的料架、堆芯的角随之移动时,选中的仍是同一个竖列。

网格下方是堆芯的汇总(竖列数、装料燃料棒数、平均磨损)和"优先更换"这一行:磨损最重的燃料棒所在 的竖列,其中空包壳按完全磨损计算;平局时取最北的,其次取最西的。只要还没有任何燃料棒磨损,这一行就会 说暂无需要更换的。只要至少有一个料架里放着空包壳,标签页上的标记就是黄色。

状态标签页上有什么
房间已成形按房间内部空间画出的网格
无壳模式按巡视所到达的全部料架外廓画出的网格——既包括装了料的,也包括只装着空包壳的
房间已成形,没有柱子一张空格网格和"房间里没有反应堆柱"
房间未成形,也没有料架"密封房间后才能查看堆芯"

数据走自己的数据包,而不是菜单通道。菜单通道是一个 16 位的数,而堆芯最多有几百个竖列,每个竖列 十五个左右的数。数据包 reactor_zone 只发给打开了这个控制器屏幕的玩家:发送挂在菜单的 上,而原版只在屏幕打开时调用它。最多每秒一次,而且只在快照有变化时发送;第一份快照在打开屏幕时立即 发出。放下或拆掉的柱子,会在下一次房间扫描之后出现在快照里。竖列由服务器汇总,因此数据包里每个堆芯 格子最多一条记录——最多 289 条,也就是 17×17 的面积,搜索半径为 8 的无壳反应堆不会铺得比这更大。宽度 超过 17 格的房间(配置里的房间尺寸上限没有封顶)只显示它西北角的 17×17;截断边缘另一侧的邻居照样计入。 数据包里的坐标是偏移:竖列相对堆芯的角,角相对控制器。服务器不交出世界里的绝对位置。

剩余能量用燃料棒消耗时的同一套算术来算:剩下的耐久格乘以每格的 EU/FE。屏幕上没有第二套公式,因此这个标签页不会许诺料架给不出的能量。

"冷却水"标签页

这个标签页从上方俯视水回路,用的是和"堆芯"相同的网格:一格就是一个竖列,也就是一摞竖直叠放的 柱子。在这两个标签页中任一个上选中的竖列,在另一个上也同样被选中。

格子里并排两根小竖条:左边是水,右边是蒸汽,都从格子底部往上长。这是两个不同的储罐,不会叠成 一根条:藏在满满一罐水后面的满满一罐蒸汽,正是做这个标签页要揭示的那种故障。竖列的排气被判定为堵塞 时,蒸汽条变黄;干涸竖列的水条下方是红色的底。在 12 像素及以上的格子里,出故障的竖列还会在角上标一个 方块:黄色表示排气堵塞,红色表示没有水;在更小的格子里,方块会遮住竖条本身,那里的故障靠竖条的颜色来看。

干涸竖列——它至少有一个容器里连 1 mB 水都没有,并且在上一秒里没有给反应提供过一滴水。有一细股水 就不算干涸:它在沸腾,没必要让玩家去修。反应每一刻都把它烧干、管道又重新补满的竖列也不算干涸:控制器 按自己名单的顺序烧柱子里的水,管道在自己的那一刻补水,所以在快照的瞬间,这样的竖列可能是 0 mB——但它 在工作。排气堵塞——容器里的蒸汽占到空间的 90 % 或更多:水是有的,但几乎没地方沸腾。这和"控制台" 上蒸汽条变黄的是同一条线。容器是竖列在高度上连续的一段,控制器也是按这样的段来整理的;高度上有断开的 格子算两个容器,各自单独判定:满的下段掩盖不了空的或堵塞的上段。

右侧面板显示选中的竖列:柱子数、以 mB 表示的水和蒸汽及其容量(带条),以及状态——"正常"、 "缺水"或"排气堵塞"。什么都没选时,显示第一个排气堵塞的竖列;如果没有,就显示第一个干涸的竖列;如果 干涸的也没有,就显示堆芯的第一个竖列。

网格下方是汇总:有几个竖列干涸、几个排气堵塞,以及反应堆上一刻烧掉了多少水。再往下是建议,按顺序 取第一条符合的:

回路里的情况建议
无壳模式"无壳模式没有冷却回路":没有房间的料架既不加热水,也不需要水
房间未成形"房间未密封":该修什么,"房间"标签页会告诉你
房间已成形,没有柱子"房间里没有反应堆柱"
至少有一个竖列排气堵塞"蒸汽无处可去":点名该竖列,检查它上方的蒸汽喷口——喷口前方需要有空气
所有竖列都没有水"冷却回路里没有水":通过反应堆入口引水进来
有干涸的竖列"有竖列没有水":点名该竖列;并排站立的柱子彼此不分水
水带走的热量不到 95 %"冷却回路不够用",附热量占比
一切正常"冷却回路正常"

排气堵塞排在第一位:无处可去的蒸汽,即使在有管道补水的竖列里也会让沸腾停下,这之前引水毫无用处。 一个干涸竖列夹在有水的竖列之间,几乎总是那种接管错误,所以建议点名的是竖列,而不是房间。第二个原因是 跟不上的水管线:控制器按自己名单的顺序从柱子里烧水,管道补水滞后的竖列迟早会烧干——所以建议也会提议 检查水管线。宽度超过 17 格的堆芯(配置里的房间尺寸上限被调得高于出厂值)按显示出来的西北角来判定: 截断边缘之外的竖列既不计入汇总,也不进入建议。

标签页上的标记在存在干涸竖列或排气堵塞、并且水带走的热量已经不到反应热的 95 % 时为红色:热量在 积累。黄色——有故障,但热量暂时还散得出去。没有干涸和堵塞竖列、只是回路跟不上的情况,由"控制台"标出。

数据走同一个 reactor_zone 数据包。每个竖列加上了以 mB 计的水和蒸汽及其容量,外加两个标志; 故障由服务器根据柱子的储罐判定,客户端什么都不重新计算。耗水量是一条菜单通道,"控制台"本来就在显示 它。配置里的数字不会显示在这个标签页上:配置不会同步到客户端。

世界中的反馈

对一间上千方块的房间来说,光有文字是不够的,所以控制器还会用声音和粒子回应。

事件会发生什么
房间成形控制器处响起铁砧落地声 + 它上方 12 个粒子
房间解体在缺口处响起信标熄灭声,只响一次
问题未修好期间每次扫描都在问题格里冒 16 个烟粒子;缺口的话,前 12 个洞的每一个上方都冒

故障声只在状态切换时响一次,而不是循环播放,这是原则问题。每两秒重复一次的警报,会从提示变成 惩罚。

成形的声音与蒸馏塔搭好塔身时相同:模组里"多方块组好了" 就该是同一个声音。

外壳状态的刷写

控制器是唯一会给外壳打上"已成形"和"棱"标记的一方,而且它是给整个外壳打,不只是给自己。房间里 的灯也由它点亮(见反应堆灯)。

字段数值
遍历什么显式指定的那个盒子的周长格
成功时用哪个盒子本次扫描量出的那个;它同时被记住
失败时用哪个盒子最后一次记住的那个——控制器曾经认可过的
写什么只写值发生了变化的格子
每一格正对着灯的内部格里出现亮度 15 的光方块

为什么盒子要显式传入,而不是取自扫描结果。失败的扫描量不出盒子,因此以扫描结果为准的刷写在 物理上就只会打开标记:墙被砸穿之后,房间照旧无缝、照旧亮着,就像什么也没发生。现在控制器记住 最后一次认可的盒子,扫描失败时熄灭的正是它;盒子会被存档,因为区块可能在完好时卸载、再加载时已经 带着一个洞。

能量

字段数值
角色发电方,等级 HV
缓存(EU/FE)200 000
最大输入(EU/FE/刻)0——反应堆不从外面充电
最大输出(EU/FE/刻)512 = HV 上限
各面除正面外全部输出;正面没有任何能量角色

正面在能量上是惰性的:那上面是玩家要读的面板,一根从界面正中间钻出来的电缆会同时毁掉观感和理解。

200 000 EU/FE 的缓存不是储能库而是缓冲:一时取不走电的电网,不该在一刻之内把堆芯停下。按上限算这是 391 刻(19.5 秒)的输出。一段琥珀金缆承载 192 EU/FE/刻,因此 满负荷运转的反应堆要用三条独立线路才能取空。

方块属性

字段数值
形状完整方块 16³(遮挡)
硬度5.0
爆炸抗性30.0
工具镐(掉落必需)
声音金属
朝向水平;外加"已成形"状态

控制器不会把判定结果写进存档:房间本身就是存档。世界加载后,第一次扫描就会从周围立着的 东西里重新推出状态。

存下来的只有从世界推不出来的东西:最后一次认可的盒子边界、累积的热量滑块的位置。 一个在区块卸载时把它们忘掉的反应堆,会白白冷却,还会擅自回到满功率。

声音

当判断反应堆所用的那条刻度越过警告阈值时,控制器会鸣响一次警报()。 封闭房间看的是热量,无壳反应堆看的是不稳定度。以前警报只读热量,于是没有热量的无壳反应堆会一声不响 地走完整个事故倒计时。墙壁和关闭的气闸都压不住它:它能传到房间之外很远的地方,因为它本来就是给不在 房间里的人听的。只有在刻度降到 (60 %)以下之后,它才会再次鸣响——每次 刻度晃动都要响一次的警报,就不再是警报了。三个料架的岩浆农场停在约 90 % 的不稳定度上,因此只在启动 时响一次。

但刻度顶到上限时是另一回事。只要热量停在百分之百,警报就不会停:它每隔三到五秒不规则地反复鸣响, 直到温度开始下降才停下。在那种时候只响一次是最糟的做法——处于最危险状态的反应堆,反而比只是发热的 反应堆更安静。

燃料柱的嗡鸣只要反应在进行就一直持续,而不是只在反应堆卖电时才有:缓冲满了也不会让它停下。以前 嗡鸣挂在输出上,缓冲已满的反应堆会一边继续升温、一边播放停机的声音。反应本身的停止——红石信号被撤、 燃料耗尽、控制棒抬起——会以一段下坠音回应()。房间组建成功时的短促提示音和外壳破损时的声音写在上面的 「世界中的反馈」一节里。

配方

合成:每次 ×1

S C S S = 屏蔽板 ×4
R A R R = 强化屏蔽板 ×2
S D S C = 反应堆控制电路 ×1
A = 高级机器外壳 ×1
D = 控制棒驱动机构 ×1

反应堆控制电路是单独的物品:4 块钯板、共鸣线圈、2 个高级电路、1 个电子电路和红石。

线圈取代了第一版里的不稳定同位素。同位素是培育舱的产物,而培育舱这条 支线已从反应堆的前置里移除:它为了一件物品把玩家带进模组的生物学部分。

进阶

等级:HV——最高 512 EU/FE/刻 的发电方。 需要:屏蔽板与强化屏蔽板(材料链见反应堆外壳)、 高级机器外壳高级电路、钯板、 共鸣线圈。 解锁:反应堆房间本身——没有控制器,这堆方块就只是一堆方块。

相关内容

反应堆外壳——它扫描的对象、几何和合成链。 气闸门——房间的正规入口;若它立在外壳里,就必须构成真正的门洞。 反应堆玻璃入口输出端——其余会被扫描器算作墙的 方块。 反应堆柱——它烧的、煮的和整理的对象。 燃料棒燃料包壳——它消耗的燃料, 以及留下的包壳。 蒸汽——回路的工质。 蒸汽喷口——回路的末端;它不工作时蒸汽条会变黄、热量会上升。 反应堆按钮——这套方块里唯一被扫描器算作墙的一个。 共鸣链——控制电路里的线圈从哪来。 蒸馏塔培育舱——模组此前的 两个多方块结构;它们检查的都是固定形状,体积扫描器是在这里第一次写出来的。

合成

有序合成
屏蔽板
反应堆控制电路
屏蔽板
强化屏蔽板
高级机器外壳
强化屏蔽板
屏蔽板
控制棒驱动机构
屏蔽板
工作台
反应堆控制器
反应堆控制器