幾乎所有的遊戲(包括Minecraft)都是由一個大循環程式執行的。相稱地,循環程式的一個週期被稱之為一「刻(tick)」。
遊戲刻
Minecraft的循環程式是以每秒20週期的固定速度執行的,即TPS(每秒刻數)為20.0。因此每遊戲刻為0.05秒。每過去一遊戲刻,遊戲的各方面都會更新:移動的實體位置會發生變化,生物會檢查周圍環境並更新自身的行為,玩家的生命值和飢餓值會根據玩家的處境發生變化,等等。遊戲中的一天正好為24000遊戲刻,相當於現實中的20分鐘。遊戲中的絕大多數功能都是以遊戲刻而不是現實時間作為時間基準。
但是這個速率也不是完全固定的:如果發生卡頓以至於電腦的效能不足以跟上這個速度,一個遊戲刻的執行時間就延長,每秒中遊戲刻就會變少。和每秒刻數(TPS)相關的一個單位是每刻毫秒數(MSPT),即伺服器實際上用來計算一刻所需的時間。只有在MSPT不超過50時,TPS才可以達到20。
以下的遊戲機制比較消耗資源,容易導致伺服器端卡頓:
- 漏斗收集上方物品。可以透過在漏斗上加入容器方塊防止這一行為發生。也可以直接換成吞吐量更大的水流運輸。
- 紅石電路更新。應該在時鐘等線路上增加開關,以避免不必要的狀態改變。另外紅石造成的亮度更新也會造成卡頓,可以透過儘量減少空氣空間避免。[1]
- 生物AI。可以使用照明控制怪物的產生,並使用更高效的技術養殖家畜。
- 有些Mods可以最佳化或簡化遊戲邏輯。由於Mods是第三方內容,本wiki不會特別聲稱其適用性。
但遊戲的FPS(FPS)不影響TPS,電腦的圖形效能不會影響到遊戲機制。
遊戲流程
區塊刻
在Java版中,作為遊戲刻的一部分,每個遊戲刻都會對特定的區塊執行區塊刻。在每個遊戲刻中,載入等級在31級或以下、區塊中心與最近的玩家的水平距離小於128的區塊會執行區塊刻。
區塊刻有許多影響:
隨機刻
在Java版中,隨機刻作為區塊刻的一部分執行。
在基岩版中,在每個遊戲刻中,所有載入的區塊都會執行隨機刻。
每個區塊被劃分為16個區段,每個區段包含16×16×16=4096個方塊。
在Java版中,在每個遊戲刻,執行區塊刻的區塊中,每個區段預設會被隨機選出3個方塊(可以重複)給予一個「隨機刻」。在基岩版中,每個遊戲刻每個區段預設會隨機選出1個方塊給予一個隨機刻。大部分方塊不會有影響,除了如下這些
- 小麥、胡蘿蔔、馬鈴薯和甜菜根可能生長或拔除。
- 蘑菇可能傳播或拔除。
- 藤蔓可能傳播。
- 冰和雪可能融化。
- 樹葉可能枯萎。
- 耕地的濕潤程度會更新。
- 仙人掌、甘蔗、海帶、竹子、歌萊花、紫水晶晶簇和滿足生長條件的鐘乳石可能生長。
- 草地和菌絲可能傳播或變成泥土。
- 樹苗可能長成樹。
- 熔岩可能使附近的方塊著火。
- 發光的紅石礦或深板岩紅石礦會熄滅。
- 地獄傳送門方塊可能生成一個殭屍化豬布林。
- 海龜蛋破裂或孵化。
- 營火冒出煙霧粒子。
- 銅質方塊可能會鏽蝕。
- 上有水源或熔岩源的鐘乳石正下方的鍋釜可能會被逐漸填充。
因為隨機刻是被隨機賦予的,無法預測某個方塊何時會接收到隨機刻。
在Java版中,隨機刻的間隔的中位數為47.35秒,即有50%機率不超過47.35秒,也有50%機率超過47.35秒,也有可能需要極短或極長的時間:例如,有1.5%的機率間隔時間小於1秒,也有1%的機率超過5分鐘。隨機刻的間隔的平均值為68.27秒。對上述資料的計算原理,參見維基百科幾何分布。
可以透過使用指令/gamerule randomTickSpeed <數量>來改變每個區段給予隨機刻的方塊數。
計劃刻
一些方塊可能會請求在將來的某一個遊戲刻更新方塊,這種更新方塊的方式被稱為計劃刻。在一段時間後必定發生並且行為可以預測的變化,往往使用這種「計劃刻」——比如,偵測器會計劃2遊戲刻之後來改變它的狀態。
作為遊戲刻的一部分,之前請求的計劃刻如果已到達指定時間,如果區塊的載入等級小於33(不包括33)
在Java版中,計劃刻有兩種:方塊計劃刻和液體計劃刻。[4]
- 執行時刻相同的方塊計劃刻的執行順序首先取決於優先級,優先級相同則取決於建立順序。優先級的較小的執行時間較早。
- 若紅石中繼器指向紅石二極管,且紅石二極管的朝向非反向,中繼器的計劃刻將有-3的優先級。若中繼器準備熄滅,則優先級為-2。否則中繼器將有-1的優先級。
- 若紅石比較器指向紅石二極管,且紅石二極管的朝向非反向,比較器將有-1的優先級。
- 其他的所有方塊計劃刻優先級都為0。
- 方塊計劃刻執行完後,將執行液體計劃刻。液體計劃刻沒有優先級,僅根據建立順序依次執行。
在Java版中,每個遊戲刻內所能執行的最大計劃刻數是65536個。在基岩版中,每個遊戲刻內每個區塊所能執行最大計劃刻數量為100個。
紅石刻
一個紅石刻代表著兩個遊戲刻。在紅石的語境中,「刻」常指紅石刻。
參考
| 版本 | |||||||
|---|---|---|---|---|---|---|---|
| 開發週期 |
| ||||||
| 技術 |
| ||||||
| 多人遊戲 | |||||||
| 遊戲訂製 | |||||||
| 版本 |
| ||||||
|---|---|---|---|---|---|---|---|
| 開發 |
| ||||||
| 技術性 | |||||||
| 多人遊戲 | |||||||
| 特色功能 | |||||||