複製鏈接
請複製以下鏈接發送給好友

(遊戲《Minecraft》的循環週期)

鎖定
刻,指遊戲刻,本義項中為Minecraft程序中的一個循環週期 [1] 
中文名
外文名
Tick
分    類
遊戲刻、紅石刻、隨機刻、區塊刻等

遊戲刻

Minecraft的循環程序是以每秒20週期的固定速度運行的。因此每刻發生在每0.05秒。在遊戲中的一天將正好為24000刻,約20分鐘。
但是這個速率也不是完全固定的。如果電腦的性能不足以跟上這個速度,一個遊戲刻的運行時間就被延長,單位時間內的遊戲刻就會變少。由於遊戲中的絕大多數動作都是以遊戲刻而不是真實世界的時鐘作為時間基準,這意味着在較慢的電腦上很多事情都要花更長的時間來完成。
每過去一刻,遊戲的各方面都會更新:移動的實體位置會發生變化,生物會檢查周圍環境並更新自身的行為,玩家的生命值和飢餓值會根據玩家的處境發生變化,等等。
遊戲刻不影響圖像渲染。遊戲的圖像是在遊戲內部更新後渲染的。因此,遊戲的幀率(FPS)不影響TPS(每秒遊戲刻數)。從而電腦的圖形性能不會影響到遊戲機制。

每刻毫秒數

有一個與每秒刻數(TPS)相關的統計量,稱作每刻毫秒數(milliseconds per tick,縮寫為MSPT),即服務器實際用於完成一刻內計算的耗時。只有當MSPT不高於50時,TPS才能維持在20。通常情況下,以下因素是服務器端卡頓的主要誘因:
  • 漏斗頻繁嘗試檢查其上方是否有物品。用任一含有物品欄的容器方塊或堆肥桶即可停止對物品的檢查。也可以利用更快地運輸散裝物品。
  • 紅石機構。紅石元件,尤其是紅石粉會導致大量的方塊更新、亮度更新和卡頓。禁用一些暫不使用的紅石裝置和時鐘、儘量減少空氣空間有助於緩解卡頓情況。
  • 生物AI。可以使用照明控制怪物的產生,並使用更高效的技術養殖家畜。
在Java版中,MSPT值在調試屏幕中顯示為“ms ticks”。打開幀生成時間圖表(Alt + F3)時可查看TPS值。這兩種顯示都只能在多人遊戲的主機或單人遊戲上可見,因為數據來自Minecraft遊戲裏的內置服務端。
[1] 

遊戲流程

在Java版中,遊戲循環的每個週期中,以下行為會依次處理:
  • 執行帶有tick或load標籤的函數
  • 主世界下界末路之地的順序依次對每個維度進行以下流程:
    • 發送時間至客户端
    • 更新世界邊界
    • 天氣邏輯
    • 玩家睡眠邏輯
    • 若維度為主世界
      • 增加遊戲內時間和天數
      • 執行計劃內函數
    • 對每個已加載區塊:
      • 發送區塊信息至客户端
      • 區塊刻邏輯
    • 嘗試生成幻翼、災厄村民、殭屍圍城
    • 發送實體變更至客户端
    • 嘗試卸載區塊
    • 處理計劃刻
      • 方塊的計劃刻
      • 液體的計劃刻
    • 襲擊邏輯
    • 嘗試生成流浪商人
    • 處理方塊事件
    • 處理實體
    • 處理方塊實體
  • 處理玩家實體
  • 如果已過去6000刻,嘗試自動保存
  • 處理來自客户端的數據包

紅石刻

一個紅石刻代表着兩個遊戲刻。這將在一個紅石電路中的信號創造一個0.1(1⁄10)秒的延遲。也就是説信號從地點A到地點B是增加了0.1(1⁄10)秒的延遲。一刻只能屬於信號時間的增加,因此,一個信號的傳送時間在刻的角度講是永遠不會是減少的。在紅石的語境中,“刻”總是指紅石刻。
需注意:
在基岩版中,紅石刻作為遊戲機制是併發的,紅石信號的傳遞受到紅石刻的影響。
在Java版中,紅石刻不是“真實”存在的事物,但是這個由社區創造的術語使得製作和描述紅石電路或機器工作流程更加簡單。 [1] 

隨機刻

每個區塊被劃分為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秒。對上述數據的計算原理,參見幾何分佈 [1] 

區塊刻

作為遊戲刻的一部分,每個遊戲刻都會對特定的區塊執行區塊刻。
Java版中,在每個遊戲刻中,加載標籤在31級或以下、區塊中心與最近的玩家的水平距離小於128的區塊會執行區塊刻。
在基岩版中,在每個遊戲刻中,所有已加載區塊都會執行區塊刻。
區塊刻有許多影響:
生物自然生成。
雷暴天氣下,閃電可能在區塊內某處生成(十萬分之一的幾率)。
每一縱向上的最頂端方塊有十六分之一的幾率檢查天氣更新:在寒冷的生物羣系中,如果條件合適,會結成冰。
如果在下雪,並且條件合適,一片可能被放置。
如果在下雨,煉藥鍋可能被填充。
區塊內某一個方塊會接受到隨機刻更新。 [1] 

計劃刻

一些方塊可能會請求在將來的某一個遊戲刻更新方塊,這種更新方塊的方式被稱為計劃刻。在一段時間後必定發生並且行為可以預測的變化,往往使用這種“計劃刻”——比如,紅石中繼器會在Java版中計劃一刻之後改變其狀態,水在需要流動時會計劃一個計劃刻。
作為遊戲刻的一部分,已經請求計劃刻的方塊所在之處會得到給定量的刻。
在Java版中,計劃刻有兩種:方塊計劃刻和液體計劃刻。方塊計劃刻的處理順序首先取決於優先級,其次取決於計劃順序。優先級越小,執行時間越早。若紅石中繼器指向紅石二極管的背面或側面,則該中繼器將有-3的優先級。若中繼器準備熄滅,則優先級為-2,否則中繼器將有-1的優先級。若紅石比較器指向紅石二極管的背面或側面,比較器將有-1的優先級。其他所有方塊計劃刻的優先級都為0。方塊計劃刻執行完後,將處理液體計劃刻。液體計劃刻沒有優先級,僅根據計劃順序依次執行。
在Java版中,每個遊戲刻內所能處理的最大計劃刻數是65536。在基岩版中,每個遊戲刻內,一個區塊所能處理的最大計劃刻數為100。

換算關係

20遊戲刻=10紅石刻=1秒
參考資料
  • 1.      .中文Minecraft Wiki - 最詳細的官方我的世界百科[引用日期2020-03-31]