我的世界IC2供电机制分析
基本概念(对应现实中的概念,方便理解):
EU:电能
EU/t:电功率(但是在游戏中通常被称为电压或电流)
EU/p:电压(然而游戏中(EU电表测得的)电压指的是能量等级)
流失量(EU/块):类似于电阻
(没有和现实中电流对应的)
如果要创造一个量与现实中电流对应,那么就是每tick内这个导线被经过的次数
线损:导线发热功率,因为供电机制,计算公式为IR不是I^2R
每个电源(储电箱、变压器、发电机等)都有每tick输出的能量上限。
一般情况下这个值与该物品输出的EU/p上限的数值相等,比如储电箱是32,MFSU是2048;
但是对于变压器而言,这个值等于其高压面的EU/p的数值(无论升压还是降压),比如低压变压器是128,中压是512。
供电机制:
每tick内,电源会寻找与其输出面相连的用电器(各种用电的机器、储电箱、变压器等),并提供电能,下面给出提供的电能的计算方式(数值计算):
初始化:
-
可输出电能=min(每tick输出的能量上限,电源缓存的电能)。
-
特别的,对于储电箱,当 缓存的电能<每tick输出的能量上限 时,可输出电能=0
对于每个用电器:
-
输入到用电器的电能(EU)=min(用电器需求的电能,min(可输出电能,输出EU/p上限)-经过导线的流失量之和(下取整));(用电器需求的电能=电能缓存上限-目前缓存的电能)
-
当 输入到用电器的电能<=0 时,跳过下面三步;
-
EU/p=输入到用电器的电能+经过导线的流失量之和(下取整);
-
向用电器提供 输入到用电器的电能,并从电源的缓存内扣除EU/p;
-
可输出电能=可输出电能-EU/p;(可输出电能减少EU/p的数值)
其中,在电源上使用EU电表查看到的“能量流出”是 输入到用电器的电能 之和(不包含线损);
在用电器上使用EU电表查看到的“能量流入”是 输入到用电器的电能;
“获得能量”就是“能量流入”-“能量流出”。
机器爆炸、导线烧毁由EU/p决定,超过承受限度就会爆炸,所以不要想着用CESU连120格高压导线给能量等级为1的机器用了。
举个例子:
一个CESU(128EU/t)给64台打粉机供电(缓存已提前充满),2EU/t×64=128EU/t,正常运行。
此时每tick每个打粉机都会收到2EU,2EU/p的电能,正好将CESU的可输出电能消耗完。
启动第65台打粉机
此时CESU的输出比打粉机的消耗少2EU/t,所以每tick会使得这些打粉机缓存的电量总和减少2EU,最后某个打粉机所需求的电能超过32EU,使EU/p超过32,然后导致爆炸。
供电顺序:
有多个用电器时的供电顺序大致按照由近到远,东/南方向优先。但这并不意味着没充满近处用电器时不给远处用电器供能,优先类似于随机的权重增加。
如下图(面向东):
四个MFE(由近到远)的能量流入分别为:
第四个明显比第三个高。
改为面向西:
四个MFE(由近到远)的能量流入分别为:
能量流入依次递减。
供电顺序与用电器需求的电能无关:将面向西的测试的最近的MFE内的测试工具取出。
(测试180s是因为这样可以充入约3MEU,和没电情况进行对比)可以观察到区别不大,并且多次重复实验没有明显表现出偏向多或少。
线损计算:
将储电箱的缓存维持在某个值,根据上面的计算方式,查看储电箱的“获得能量”得到的就是线损。
线损是对于每个用电器分开计算的,所以不建议在用电器与储电箱之间间隔较长距离,特别是电压低的机器。
增加用电器和电源之间导线的流失量反而导致线损变小了?
在第一种情况下,两个打粉机的EU/p分别为14和18,14+18=32,所以每tick内,储电箱都会向它们各发送2EU;
而第二种情况下,两个打粉机的EU/p均至少为18,所以每tick内,储电箱只能向其中一个发送电能,这样总线损就减少了但是还是损耗了80%。