ティック
ティック(英:Tick)とは、Minecraftを含めた多くのビデオゲームが採用する周期的な更新処理システムにおける1ループのことである。ゲーム内世界の進行に関わるほとんどの処理がこのループの一部に組み込まれているため、ティック数はゲーム内世界の経過時間を表す単位としても用いられる。
ティックは、ゲームティック(英:Game Tick)とも呼ばれる。また、この周期的な処理をティック処理と呼ぶ。
ティック速度[編集 | ソースを編集]
Minecraft は、基本的に1秒あたり20ティックのループ処理で実行されており、1ティックは通常0.05(1⁄20)秒である。しかし、コンピューターがこの速度についていけない場合は単位時間あたりのティック数は低下し、ゲーム内現象はゆっくり進行する。
ティック処理の実行速度を表す値としては、一般に以下の2つの値が使用される。
- TPS(Ticks Per Second、ティック毎秒)
- 1秒あたりのティック処理の回数。平時なら、TPSは20ティック/秒に維持される。
- MSPT(Milli 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タグ内の関数を実行する。 - 各ディメンションについて、以下の処理を行う。デフォルトの処理順は、オーバーワールド、ネザー、エンド、カスタムディメンションの順である。
- 20ゲームティックごとに、各プレイヤーと現在の時刻を送信し同期させる。
- *ワールド境界を更新する。
- *天候のサイクルを更新する。
- プレイヤーの睡眠に関する処理を行う。
- 内部の明るさを、時刻と天候に応じて変更する。
- *昼夜サイクル内での時刻を更新する。
- 実行予約されたコマンドを実行する。
- *実行予約されたティック処理を行う。それぞれ、最大65536件の処理を実行できる。
- ブロックの予約処理を行う。
- 液体の予約処理を行う。
- *襲撃周りの処理を行う。
- チャンク周りの処理を行う。
- *ブロックイベントを処理する。
- *エンダードラゴン戦の処理を行う。
- *すべてのエンティティに関する処理を行う。
/tick freezeは、プレイヤーとプレイヤーが騎乗しているエンティティには影響しない。- デスポーン可能かどうか確認する。
- エンティティ自身を処理する。
- そのエンティティに騎乗しているエンティティを処理する。
- *ブロックエンティティを処理する。
- ゲームイベントを処理する。
- 各プレイヤーに対して、キュー内のパケットを送信し、受け取ったパケットを処理する。
- サーバー上で計算されたプレイヤーの情報を、プレイヤーに送信する。
- 6000ティック(
/tick sprint中は300×TPS、それ以外は300×最大TPS)ごとに、オートセーブを実行する。 - 保留中の処理を実行し、次のティックの実行時刻まで待機する。
チャンクティック[編集 | ソースを編集]
ここでは、ティック処理の一部であるチャンクに対するティック処理を詳説する。/tick freeze中は、チャンクに対するティック処理がすべて停止する。
チャンクティックの過程では、読込レベル・処理レベルがともに32以下のチャンクについて以下の処理を行う。
- 中心がプレイヤーから水平距離で半径128ブロック以内のチャンクに限り、以下の処理が行われる。
- さらに処理レベルが31以上のチャンクに限り、以下の処理を行う。
Bedrock Editionでは、読み込まれているすべてのチャンクがティック処理を受ける。
ランダムティック[編集 | ソースを編集]
チャンクティックの中には、毎ティックいくつかのブロックをランダムに選択し、そのブロック特有の処理を発生させるものがある。このような処理をランダムティックという。
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ゲームティック(1⁄10秒)を基準とする単位である。
この単位は、レッドストーン回路部品の遅延が基本的に偶数ゲームティックであることから説明や計算の簡単のためにプレイヤー間で導入された単位であり、レッドストーン回路の部品のみ特殊なティック処理が行われていて、2ティックに1度しか処理が行われないなどといった仕様が存在するわけではない。回路を構成するブロックも通常のブロックとしての更新は毎ティック行われている。レッドストーン回路に関する説明をする場において、簡単のためにしばしばこのレッドストーンティックを単にティックと表記している場合がある。それぞれを特に区別する必要のある場合は「ゲームティック」「レッドストーンティック」と表現することが望ましい。
レッドストーンリピーターの遅延は1~4レッドストーンティック(2~8ゲームティック)、ピストンの伸長、格納にかかる時間は1レッドストーンティック(2ゲームティック)[Java Edition限定]である。
歴史[編集 | ソースを編集]
| [閉じる]Java Edition | |||||||
|---|---|---|---|---|---|---|---|
| 1.20.2 | 23w31a | チャンクティック中に天候に関する更新を行う頻度が、ゲームルール randomTickSpeed に影響されるようになった。 | |||||
| 1.21.5 | 25w06a | チャンクティックの処理のうち降雨時の処理とランダムティックが、中心がプレイヤーから128ブロック以内でなくても行えるようになった。 | |||||
| チャンクティックが行われる範囲が、読込レベル31以下から、読込・処理レベル32以下に変更された。 | |||||||
| チャンクティックの処理の内訳と順番が変更された。 | |||||||
| 25w09a | チャンクティックのうちランダムティック系の処理に限り、要求レベルが処理レベルのみ31に引き上げられた。 | ||||||
ナビゲーション[編集 | ソースを編集]
| [閉じる] | |||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||
| [閉じる] | |||||||
|---|---|---|---|---|---|---|---|
| エディション |
| ||||||
| 開発 |
| ||||||
| 技術的 | |||||||
| マルチプレイ | |||||||
| 限定要素 |
| ||||||
| 削除された要素 | |||||||