【マイクラ回路】Tile Tickの解説
皆さんどうもこんにちは!
今回から本格的に回路を組む上で必要な知識を解説していきます!
今回解説していくのはTile Tickについてです!
Tile Tickは主に回路系アイテムの遅延を実現したり、動作順を決定するために存在しています!
Tile Tickには「スケジュール」「方角依存」「優先度」の3つの要素があります!
今回はこの3つを詳しく解説していきます!
【スケジュール】
スケジュールは回路系アイテムの遅延や水や溶岩の流れなどを実現するために存在しています。
回路系アイテムはレバーなどで特殊なブロック更新を受け取るとスケジュールを作成し、そのスケジュールの内容によって動作します。
少し細かく言うなら、スケジュールはタイマーみたいになっており、1ゲームティック(具体的にはtile tickフェーズ)ごとに何ゲームティック後に動作するかの値が減っていきます。
(厳密にはちょっと違いますが、ちゃんと話そうとするとworld timeというものの解説も必要になってものすごく長くなるのでこういうイメージで大丈夫です!)
こんなこと言われても何言ってるか分からない人がほとんどだと思うので具体例を出して見ていきましょう!
まずはリピーター
1遅延のリピーターは信号とブロック更新が与えられると2ゲームティック後にオンにするようにスケジュールします。
そして毎gtごとに何ゲームティックごとにオンにするという値が現象していき、その値が0になった時にオンになります。
次はコンパレーター
コンパレーターも信号とブロック更新を受け取るとスケジュールを作成するのですが、少しリピーターとはスケジュールの内容が違います。
どんな内容かと言うと、信号を受け取ると2gt後に背面と左右の信号強度を計算して出力するというものです。
減算モードがわかりやすいのでそれで見ていくと、
例えば右からの信号強度が5で背面からの信号強度が8だった場合、スケジュールを受け取ってから2gt後に8-5の値を出力するということです。
最後にオブザーバー
オブザーバーは観察面でブロックの変化(オブザーバーアップデート)が起こると2gt後にオンにするというスケジュールを作成します。
ここまではリピーターと同じなのですが、スケジュールが実行された後がリピーターとはちょっと違っていて、オブザーバーはオンスケジュールが実行された後、自身に2gt後にオフになるようにスケジュールを作成します。
つまりは、観察面で変化が起きる→2gt後に動作するようにスケジュール→スケジュール実行!→オフになるようにスケジュール
こんな風になっています!
ここまではスケジュールの内容について解説してきました!
次はスケジュールの例外(スケジュールが作成出来ない状態や作成されない状態)について解説していきます!
これはすごく単純で、まずスケジュールは1つしか作成することが出来ません!
なので例えば、リピーターが前にあるレバーを1gt間に100回オンオフ繰り返しても、リピーターが作成するスケジュールは1つだけです。
そしてスケジュールは作成しなくても問題ない場合には作成しません。
具体的には減算モードのコンパレーターが挙げられ、減算モードのコンパレーターは左右からの方が信号強度が高い場合は絶対に出力される信号強度は0です。
つまり背面からの信号強度が0、もしくは左右からの信号強度が15の場合は何をしても出力される信号強度は0なのでこの場合はスケジュールを作成しません。
これでスケジュールの解説は終わりです!
結構難しい内容ではあるので理解出来なかった人は何回も読み直して頑張って理解してください!()
次は方角依存の解説です↓
【方角依存】
問題です!
ボタンを押した時、どちらのピストンが先に動くでしょうか!!
ヒント:向いている方角は東
正解は右側でした!
ちなみにこれはjava版だと絶対にこういう結果になります!
ではなぜこういう結果になるのかを解説します!
ピストンにはリピーターが繋がっていてそのリピーターの信号からピストンが動くため、リピーターの動作順=ピストンの動作順という風になっています!
そして左側のピストンは信号を与えている不透過ブロックの北側(-Z方向)から信号を受け取っており、右側のピストンは直接東側(+X方向)から信号を受け取っています!
そしてここからが重要なのですが、ブロック更新を伝える順番は1部例外を除き基本的に、
-X→+X→-Y→+Y→-Z→+Z
の順に伝えていきます!
これを先程の例に当てはめると左側(-Z方向)、右側(+X方向)なので右側の方が先に動くということです!
これで方角依存の解説は終わりです!
これも結構難しいものになるので、実際に確かめてみたりして頑張って理解してください!(?)
次は優先度の解説です↓
【優先度】
問題です!
ボタンを押した時、内部的にはどの順番で動作するでしょうか!
正解は右から順に1→2→3→4→5→6→7の順番で動作するでした!
リピーターもコンパレーターも遅延は同じなのになぜこのような風になるのでしょうか…
これは優先度というものによって決まっています!
回路系アイテムには全て優先度が決まっていてその優先度が低ければ低いほど先に動作します!
ほぼ全ての回路系アイテムの優先度は0です。
リピーターとコンパレーターが少し特殊というようになっています。
リピーターは信号がオフ状態の時は-1、オン状態の時は-2の優先度を持っています。
さらにリピーターの前に別のリピーターかコンパレーターがあれば-3の優先度になります。
コンパレーターは基本的には0の優先度になっていますが、前に別のコンパレーターかリピーターがあれば-1の優先度になります!
これを先程の画像に当てはめれば右から順番に処理されることが分かります!
できない人は多分優先度を足し算して見ようとしてます(自分が優先度を理解出来てない時はそうしてた)。
そうではなくて、リピーターを1、コンパレーターを0として、出力側から1の方が先と考えて辞書順に見ていくと判断できます!
これでTile Tickの解説は以上です!
Tile Tickは理解しないと回路の動作に疑問を持ったり、無駄な回路を作ってしまうことがあるので絶対に理解しておきたい要素です!
その分結構難しい部分はありますが、落ち着いて考えてみると案外簡単なので頑張って理解してください!(?)
それでは次の記事でお会いしましょう!