游戏《Minecraft》的循环周期
刻,指游戏刻,本义项中为Minecraft程序中的一个循环周期
游戏刻
Minecraft的循环程序是以每秒20周期的固定速度运行的。因此每刻发生在每0.05秒。在游戏中的一天将正好为24000刻,约20分钟。
但是这个速率也不是完全固定的。如果电脑的性能不足以跟上这个速度,一个游戏刻的运行时间就被延长,单位时间内的游戏刻就会变少。由于游戏中的绝大多数动作都是以游戏刻而不是真实世界的时钟作为时间基准,这意味着在较慢的电脑上很多事情都要花更长的时间来完成。
每过去一刻,游戏的各方面都会更新:移动的实体位置会发生变化,生物会检查周围环境并更新自身的行为,玩家的生命值和饥饿值会根据玩家的处境发生变化,等等。
游戏刻不影响图像渲染。游戏的图像是在游戏内部更新后渲染的。因此,游戏的帧率(FPS)不影响TPS(每秒游戏刻数)。从而电脑的图形性能不会影响到游戏机制。
每刻毫秒数
有一个与每秒刻数(TPS)相关的统计量,称作每刻毫秒数(milliseconds per tick,缩写为MSPT),即服务器实际用于完成一刻内计算的耗时。只有当MSPT不高于50时,TPS才能维持在20。通常情况下,以下因素是服务器端卡顿的主要诱因:
在Java版中,MSPT值在调试屏幕中显示为“ms ticks”。打开帧生成时间图表(Alt + F3)时可查看TPS值。这两种显示都只能在多人游戏的主机或单人游戏上可见,因为数据来自Minecraft游戏里的内置服务端。
游戏流程
在Java版中,游戏循环的每个周期中,以下行为会依次处理:
对每个已加载区块:
尝试生成幻翼、灾厄村民、僵尸围城
发送实体变更至客户端
尝试卸载区块
处理计划刻
袭击逻辑
尝试生成流浪商人
处理方块事件
处理实体
处理方块实体
处理玩家实体
如果已过去6000刻,尝试自动保存
处理来自客户端的数据包
红石刻
一个红石刻代表着两个游戏刻。这将在一个红石电路中的信号创造一个0.1(1⁄10)秒的延迟。也就是说信号从地点A到地点B是增加了0.1(1⁄10)秒的延迟。一刻只能属于信号时间的增加,因此,一个信号的传送时间在刻的角度讲是永远不会是减少的。在红石的语境中,“刻”总是指红石刻。
需注意:
在基岩版中,红石刻作为游戏机制是并发的,红石信号的传递受到红石刻的影响。
在Java版中,红石刻不是“真实”存在的事物,但是这个由社区创造的术语使得制作和描述红石电路或机器工作流程更加简单。
随机刻
每个区块被划分为16个子区块(1.18及以后的版本则划分为了24个子区块),每个区段包含16×16×16=4096个方块。在每个游戏刻,执行区块刻的区块中,每个区段会被随机选出3个方块(可以重复)给予一个“随机刻”。可以通过使用指令/gamerule randomTickSpeed <数量>来改变每个区段给予随机刻的方块数。大部分方块不会有影响,除了如下这些:
小麦可能生长或拔除。
蘑菇可能传播或拔除。
藤蔓可能传播。
可能熄灭或传播。
和雪可能融化。
树叶可能枯萎。
耕地的湿润程度会更新。
仙人掌甘蔗海带竹子紫颂花可能生长。
草方块菌丝可能传播或变成泥土
树苗可能长成树。
熔岩可能使附近的方块着火。
发光的红石矿会熄灭。
下界传送门方块可能生成一个僵尸猪人
海龟蛋破裂或孵化。
营火冒出烟雾颗粒。
因为随机刻是被随机赋予的,因此无法预测某个方块何时会接收到随机刻。随机刻的间隔的中位数为47.35秒,即有50%概率不超过47.35秒,也有50%概率超过47.35秒,也有可能需要更短或更长的时间:例如,有1.5%的概率间隔时间小于1秒,也有1%的概率超过5分钟。随机刻的间隔的平均值为68.27秒。对上述数据的计算原理,参见几何分布
区块刻
作为游戏刻的一部分,每个游戏刻都会对特定的区块执行区块刻。
Java版中,在每个游戏刻中,加载标签在31级或以下、区块中心与最近的玩家的水平距离小于128的区块会执行区块刻。
在基岩版中,在每个游戏刻中,所有已加载区块都会执行区块刻。
区块刻有许多影响:
生物自然生成。
雷暴天气下,闪电可能在区块内某处生成(十万分之一的几率)。
每一纵向上的最顶端方块有十六分之一的几率检查天气更新:在寒冷的生物群系中,如果条件合适,会结成冰。
如果在下雪,并且条件合适,一片可能被放置。
如果在下雨,炼药锅可能被填充。
区块内某一个方块会接受到随机刻更新。
计划刻
一些方块可能会请求在将来的某一个游戏刻更新方块,这种更新方块的方式被称为计划刻。在一段时间后必定发生并且行为可以预测的变化,往往使用这种“计划刻”——比如,红石中继器会在Java版中计划一刻之后改变其状态,水在需要流动时会计划一个计划刻。
作为游戏刻的一部分,已经请求计划刻的方块所在之处会得到给定量的刻。
在Java版中,计划刻有两种:方块计划刻和液体计划刻。方块计划刻的处理顺序首先取决于优先级,其次取决于计划顺序。优先级越小,执行时间越早。若红石中继器指向红石二极管的背面或侧面,则该中继器将有-3的优先级。若中继器准备熄灭,则优先级为-2,否则中继器将有-1的优先级。若红石比较器指向红石二极管的背面或侧面,比较器将有-1的优先级。其他所有方块计划刻的优先级都为0。方块计划刻执行完后,将处理液体计划刻。液体计划刻没有优先级,仅根据计划顺序依次执行。
在Java版中,每个游戏刻内所能处理的最大计划刻数是65536。在基岩版中,每个游戏刻内,一个区块所能处理的最大计划刻数为100。
换算关系
20游戏刻=10红石刻=1秒
参考资料
.中文Minecraft Wiki - 最详细的官方我的世界百科.
最新修订时间:2023-04-09 15:34
目录
概述
游戏刻
参考资料