ティック

提供: Minecraft Wiki
ナビゲーションに移動 検索に移動
コマンドについては「コマンド/tick」をご覧ください。

ティック(英:Tick)とは、Minecraftを含めた多くのビデオゲームが採用する周期的な更新処理システムにおける1ループのことである。ゲーム内世界の進行に関わるほとんどの処理がこのループの一部に組み込まれているため、ティック数はゲーム内世界の経過時間を表す単位としても用いられる。

ティックは、ゲームティック(英:Game Tick)とも呼ばれる。また、この周期的な処理をティック処理と呼ぶ。

ティック速度[編集 | ソースを編集]

Minecraft は、基本的に1秒あたり20ティックのループ処理で実行されており、1ティックは通常0.05(120)秒である。しかし、コンピューターがこの速度についていけない場合は単位時間あたりのティック数は低下し、ゲーム内現象はゆっくり進行する。

ティック処理の実行速度を表す値としては、一般に以下の2つの値が使用される。

  • TPSTicks Per Second、ティック毎秒)
    • 1秒あたりのティック処理の回数。平時なら、TPSは20ティック/秒に維持される。
  • MSPTMilli Secnds Per Tick、ミリ秒毎ティック)
    • 1ティックの処理にかかる時間[ミリ秒]。平時なら、MSPTは50ミリ秒/ティック以下に維持される。

Java Editionでは、MSPTはF3で開くデバッグ画面の左上3行目に「<MSPT>/50.0 ms」として表示される。TPSは、F3 + 2で開くフレーム時間グラフのうち右側に表示される。これらの値は現在参加しているサーバーから提供される値であり、シングルプレイヤー時には必ず表示することが可能だが、マルチプレイヤーではサーバーのホストのみが確認することができる。

Java Editionでは、/tickコマンドでワールドのTPSを変更することができる。

ティック処理[編集 | ソースを編集]

Java Editionでは、1ティックの処理の内訳と順序は次の通りである。/tick freeze時は、「*」を付した処理はスキップされる。

  • 予期される処理時間より2秒以上遅れている場合に、次のティックの実行時刻をリセットする。
  • 次のティックの実行時刻を計算する。
  • ティック数を1増加させる。
  • /tick freeze下で/tick stepを用いて進行させている場合は、残りのティック数を計算する。
  • *ワールドのリロード時に限り、loadタグ内の関数を実行する。
  • *tickタグ内の関数を実行する。
  • ディメンションについて、以下の処理を行う。デフォルトの処理順は、オーバーワールドネザーエンドカスタムディメンションの順である。
  • 各プレイヤーに対して、キュー内のパケットを送信し、受け取ったパケットを処理する。
  • サーバー上で計算されたプレイヤーの情報を、プレイヤーに送信する。
  • 6000ティック(/tick sprint中は300×TPS、それ以外は300×最大TPS)ごとに、オートセーブを実行する。
  • 保留中の処理を実行し、次のティックの実行時刻まで待機する。

チャンクティック[編集 | ソースを編集]

ここでは、ティック処理の一部であるチャンクに対するティック処理を詳説する。/tick freeze中は、チャンクに対するティック処理がすべて停止する。

チャンクティックの過程では、読込レベル処理レベルがともに32以下のチャンクについて以下の処理を行う。

  • 中心がプレイヤーから水平距離で半径128ブロック以内のチャンクに限り、以下の処理が行われる。
    • チャンク内時間を増加させる。
    • 周期的スポーンを行う。
    • 天候が雷雨の場合、の処理を行う。
      • 毎ティック、ゲームルールdoMobSpawningtrueなら1100000の確率で雷の発生を試行する。
      • 雷の直撃地点が計算される。避雷針があればそこに誘導され、直撃地点の降水が「なし」なら発生をキャンセルする。
      • 発生に成功した場合、避雷針への直撃でなければ地域難易度×1%の確率でスケルトントラップが発生する。
  • さらに処理レベルが31以上のチャンクに限り、以下の処理を行う。
    • 天候がの場合、雨と雪に関する処理を行う。
      • 148の確率で、ランダムティックと同様の仕組みで以下の雨・雪に関する処理をブロックに適用する。
      • ランダムティックと同様に選択された位置について、そのXZ座標上にある当たり判定付きのブロックの最高点(MOTION_BLOCKING)を取得する。
        • その位置がであり、凍結の条件を満たせばその水をに変える。
        • その位置に雪が降っていて、雪が積もることができるならの層を加算する。
        • その位置が大釜なら、水や雪が溜まる処理を行う。天候が雨なら、5%の確率で水位を1上げる。天候が雪なら、10%の確率で粉雪のレベルを1上げる。
    • ゲームルールrandomTickSpeedが1以上なら、各サブチャンク内でランダムティックを実行する。

Bedrock Editionでは、読み込まれているすべてのチャンクがティック処理を受ける。

ランダムティック[編集 | ソースを編集]

草が伝播している範囲が、ランダムティックが行われるチャンクの範囲。演算距離5、描画距離13で撮影しているため、草は11×11チャンクに広がっている。

チャンクティックの中には、毎ティックいくつかのブロックをランダムに選択し、そのブロック特有の処理を発生させるものがある。このような処理をランダムティックという。

Java Editionでは上述のように、ランダムティックは読込レベルが32以下・処理レベル31以下のすべてのチャンクで行われる。プレイヤーの周囲では、次の条件をともに満たす範囲がこれに該当する。

  • プレイヤーのいるチャンクを中心に...

それ以外の要因で読み込まれた領域については、チャンク#チケットの種類を参照。

チャンクは高さ16ブロックごとにセクションと呼ばれる立方体領域に分割される。1セクションは16^3=4096ブロックからなっており、毎ティック各セクションからいくつかのブロックがランダムティックを受け取る。受け取るブロックの数は、Java EditionではゲームルールrandomTickSpeed(デフォルト: 3)丁度である。Bedrock Editionにおいても選択されるブロックの個数をrandomTickSpeedで調整できる(デフォルトでは1)が、この値は実際に選択されるブロックの個数ではなく単なる相対的な値である。なお選択の重複によって、ランダムティックの発行数は指定より小さくなることがある。

ランダムティックを受け取ると、ブロックの種類や状態によって次のような変化が発生する。石など、特別の動作が設定されていないブロックはランダムティックで選択されても何も起こらない。 また、一部の変化はランダムティックを受け取った際にさらに条件・確率を通過する必要がある。

Java Editionでは、特定のブロックがランダムティックを1度受けるのにかかる時間の中央値は47.30秒(946.03ティック)、平均値は68.27秒(1365.33ティック)である。

スケジュールされたティック処理[編集 | ソースを編集]

一部のブロックは、未来の特定の時刻に自分にティック処理を行うように事前に要求することができる。これにより発生するティック処理をスケジュールされたティック処理(英:Scheduled tick)と呼ぶ。これは、レッドストーンリピーターの出力やの広がりなど、次に発生する動作と時間が確定しているものに対して使用されている。

Java Editionでは、スケジュールされたティックにはブロックに関するティック処理と液体に関するティック処理の二種類があり、このうち前者が優先的に行われる。さらにブロックに関するティック処理の中にも優先順序が定める値が存在し、その値が小さいものから優先的に処理される。レッドストーンリピーターは、他の構成素子[1]の側面および背面に接続している場合は-3、信号が切れるときは-2、それ以外の動作をするときは-1の優先度を持つ。レッドストーンコンパレーターは、他の構成素子の側面および背面に接続している場合は-1、それ以外の動作をするときは0の優先度を持つ。上記二つ以外のブロックはすべて優先度0である。この次に液体に関するティック処理が行われるが、こちらには液体ごとの優先度などはない。1ティックで実行できるスケジュールされたティック処理の数はJava Editionでワールド全体の総回数を計上しており65536個まで[2]Bedrock Editionではチャンクごとの総回数が制限されており100個/チャンクまでとなっている。

レッドストーンティック[編集 | ソースを編集]

レッドストーンティック(英:Redstone tick)とは、2ゲームティック(110秒)を基準とする単位である。

この単位は、レッドストーン回路部品の遅延が基本的に偶数ゲームティックであることから説明や計算の簡単のためにプレイヤー間で導入された単位であり、レッドストーン回路の部品のみ特殊なティック処理が行われていて、2ティックに1度しか処理が行われないなどといった仕様が存在するわけではない。回路を構成するブロックも通常のブロックとしての更新は毎ティック行われている。レッドストーン回路に関する説明をする場において、簡単のためにしばしばこのレッドストーンティックを単にティックと表記している場合がある。それぞれを特に区別する必要のある場合は「ゲームティック」「レッドストーンティック」と表現することが望ましい。

レッドストーンリピーターの遅延は1~4レッドストーンティック(2~8ゲームティック)、ピストンの伸長、格納にかかる時間は1レッドストーンティック(2ゲームティック)‌[Java Edition限定]である。

歴史[編集 | ソースを編集]

[閉じる]Java Edition
1.20.223w31aチャンクティック中に天候に関する更新を行う頻度が、ゲームルール randomTickSpeed に影響されるようになった。
1.21.525w06aチャンクティックの処理のうち降雨時の処理とランダムティックが、中心がプレイヤーから128ブロック以内でなくても行えるようになった。
チャンクティックが行われる範囲が、読込レベル31以下から、読込・処理レベル32以下に変更された。
チャンクティックの処理の内訳と順番が変更された。
25w09aチャンクティックのうちランダムティック系の処理に限り、要求レベルが処理レベルのみ31に引き上げられた。

ナビゲーション[編集 | ソースを編集]

  1. ここでいう構成素子は、レッドストーンリピーターあるいはレッドストーンコンパレーターを指す。
  2. この制限は、ブロックに関するティック処理と液体に関するティック処理のそれぞれで適用される。