我的世界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%

Copyright © 2018-2023 PHP源码网 版权所有
PHP源码网 » 我的世界IC2供电机制分析

提供最优质的资源集合

立即查看 了解详情