几乎所有的游戏(包括Minecraft)都是由一个大循环程序运行的。就像钟内的每个齿轮是和钟摆同步一样,推动游戏模拟进程的每个任务也是和循环程序同步的。相称的,循环程序的一个周期被称之为一“刻(tick)”。
游戏刻
Minecraft的循环程序是以每秒20周期的固定速度运行的。因此每刻发生在每0.05秒。在游戏中的一天将正好为24000刻,或20分钟。
但是这个速率也不是完全固定的。如果电脑的性能不足以跟上这个速度,单位时间内的游戏刻就会变少。由于游戏中的绝大多数动作都是以游戏刻而不是真实世界的时钟作为时间基准,这意味着在较慢的电脑上很多事情都要花更长的时间来完成。
在每刻过去时,游戏中的每个部分都会更新一点:移动的物体改变位置,生物检查它们的周围并更新它们的举止,生命值和饥饿值将根据玩家的情况而改变,还有更多更多。
一件游戏刻不影响的事情是图像绘制。游戏的图像绘制是在一个独立的异步循环中进行的,这也是为什么每个玩家的FPS可能会不同(如果没有开启VSYNC),但TPS(每秒刻数)没有差异。这样做能防止电脑的图形性能影响到游戏模拟,反之亦然。
请注意,在多人游戏服务器刚启动时可能比较“慢”,这是因为Java虚拟机需要在运行时花较长的时间来进行默认的Java代码优化。
区块刻
在每一个游戏刻中,所有处在渲染距离内的区块都被纳入游戏刻计算范围。在1.9中,只有处在渲染距离内并且距离玩家128个方块内的区块被纳入计算。
区块刻有许多作用:
方块刻
每个区块被划分为16个区段,每个区段包含 16×16×16 个方块。在每个游戏刻,纳入游戏刻计算的区块的每个区段会被随机选出3个方块给予一个“随机刻”。你可以通过使用命令/gamerule randomTickSpeed <random tick per section>
来改变给予随机刻的方块数。
大部分方块不会有影响,除了如下这些:
- 小麦可能生长或弹出。
- 蘑菇可能传播或弹出。
- 藤蔓可能传播。
- 火可能熄灭或传播。
- 冰和雪可能融化。
- 树叶可能枯萎。
- 耕地的湿润程度会更新。
- 仙人掌、甘蔗和紫颂花可能生长。
- 草方块和菌丝可能传播或变成泥土。
- 树苗可能长成树。
- 熔岩可能使附近的方块着火。
- 发光的红石矿会熄灭。
- 下界传送门方块可能生成一个僵尸猪人。
- 岩浆块可能使上方的水蒸发。
一些其他的方块可能会在将来的某些时候要求一个方块刻。在一段时间后必定发生并且行为可以预测的变化,往往使用这种“计划刻”——比如,红石中继器会计划一刻来改变它的状态,水会计划一刻来流动。同一个方块上,计划刻与随机刻可能会起到不同的影响。
这两种刻是分开运作的,计划刻调用的是与随机刻不同的代码。
因为随机刻是被随机赋予的,因此无法预测何时某个方块会在下一刻被给予。随机刻的间隔的中值为47秒,即有50%概率不超过47秒,也有50%概率超过47秒,也有可能需要更短或更长的时间:例如,有1%的概率超过5分钟。随机刻的间隔的平均值为68.27秒。对上述数据的计算原理,参见维基百科二项分布和泊松分布。
红石刻
一个红石刻代表着两个游戏刻。这将在一个红石电路中的信号创造一个0.1(1⁄10)秒的延迟。也就是说信号从地点A到地点B是增加了0.1(1⁄10)秒的。一刻只能属于信号时间的增加,因此,一个信号的传送时间在刻的角度讲是永远不会是减少的。
制造多个或是单个刻的方法
- 红石火把在对收到的信号进行反转时会产生1刻延迟。
- 红石中继器在默认情况下当它上面的两个红石火把最相近的时候它将会产生1刻延迟。对中继器右击将以量级1,或0.1(1⁄10)秒增加。一个中继器能够被调整到4刻,同时也就是它的最高等级和两个红石火把是离得最远的。
- 活塞臂的推出或收回需要2刻。
- 漏斗传输或抽取一个物品需要4刻(若是吸取掉落物则没有延迟)。
- 红石比较器对收到的信号做出反应需要1刻。
- 木质按钮的信号持续15刻(不包括被箭射中的情况),石质按钮持续10刻。