■ マイクラ : チャンクの読み込みや処理の違いなど | @Kay-nea@のブログ

@Kay-nea@のブログ

アメブロ初心者なのでよく解っていませんが、始めてみました。

(*)FacebookとInstagramはやっていません。

 先日は、

 

■ マイクラ

にて、回路について書きました。とりあえず、レッドストーンの通常の挙動に準じたものだと回路においてブロックの特定の仕様に準じたモノであれば機能します。先日は、こうした内容について書きましたが、今回はそれに関連した事を書こうかなと思います。

 

ンティティーの動作する範囲          

 

 とりあえず、回路については、

 

【 プレイヤーの居る範囲から128ブロックまで 】

 

でなければ、エンティティーは動作しませんから、当然のように回路は動きません。ただし、これは、コンソール版とJEの話なので、この範囲の中から外れると時間凍結対象外になるとの同時にレッドストーン回路も動かなくなります。

 

 ただし、BEの場合、シミュレーション範囲を12チャンクまで拡張できるので、広範囲でエンティティーの動作を実現させることができます。この条件だと、少なくとも表示するチャンク数を12チャンク以上にする必要があるので、16チャンク以上にしておくことになります。

 

 JEの場合、8チャンク位のエンティティーの動作範囲とは別に、スポーンチャンクが存在します。これは、あくまでも、ゲーム開始時のスポーン地点の話になりますから、どこでもという訳ではなく、ゲームスタート時の場所から17チャンク四方(なんですが、最初のスポーン地点で17になる場合と16になる場合があるので、実際には17x17となっていますが場所で変わります。また、エンティティーの動作範囲はもう少し狭いので、12x12チャンクまでになります。)の範囲が時間凍結対象外になります。その範囲だとレッドストーン回路も動きますが、これはJEのみの仕様なので、他のエディションではこの領域は存在しません。通常にマイクラをプレイしている状態ではそうなりますが、BEの場合、チートコマンドを使った場合、ティック領域を指定することで100x100x100の範囲を10個ほど指定できます。つまり、200x200x200などの範囲をスポーン地点おーんちゃぬくのように動かす事もできる様になっていますが、通常のプレイではプレイヤーの周囲のシミュレーション範囲のみの判定になります。

 

 その為、BEとコンソール版(PS4と旧ハード)については、プレイヤーが回路の近くに居なければ回路は機能しません。また、植物の成長や動物の成長も同様です。この時の条件が8チャンク以内やBEのシミュレーション範囲になりますが、これと同様にJEのスポーンチャンクが存在します。

 

 あと、JEの1.14.1が重たいというのは、スポーンチャンクの範囲が広がって21チャンク(5チャンク程広くなりました)になったのもありますから、スポーンチャンク内に色々な物を作ると、プレイヤーの場所がスポーン地点から離れたとしても、レッドストーン回路やコマンドブロックの動作は常に行われているので、プレイヤーの居る8チャンク以内の挙動とは別にスポーンチャンク(現在21チャンクの球体)の範囲の演算が行われています。

 

 この条件から、BEやコンソール版は軽いのですが、JEについては、スポーンチャンクの負荷が加わるので、重くなりますが、以前よりも広範囲で演算が行われているので、重くなっています。

 

 シングルプレイのオフラインの場合だと、スポーンチャンクにあるエンティティーを除去して軽くするという方法がありますが、マルチで何か開拓してしまっている場合、それを含めて負荷の分散を考える必要が出てきます。

 

 その為、サーバが重たいとかマシンスペックが低くて重たいとかアップデートで負荷が増えたというのもあるのかもしれませんが、それ以外に仕様変更で

 

融通が利くようにスポーンチャンクが広くなった

 

ので、JEは以前の1.13よりも重くなっています。この広さですが、磁石をたどった時に磁石が反転するブロックの境目から各方向に8ブロック程伸ばしたものが1チャンクの目安になるので、そこから東西南北に20チャンク伸ばした範囲が21チャンク目になりますから、その幅の正方形の範囲がスポーンチャンクになります。

 

 1.13では12x12チャンクまではスポーンチャンクで読み込みができていましたが、1.14では17x17までの範囲がエンティティーの動作可能範囲になったので、以前のスポーンチャンクの最大サイズがすっぽり収まるような広さになっています。ここまで書くとお気づきかと思いますが、この範囲で色々な物が時間凍結対象外になっているので重くなって当たり前の状態が存在しています。その分、巨大な回路を作れるようになっているのですが、こうした仕様変更からJEは重くなっています。サーバを使うと軽くなるという特性があるのがJE(と言うか、そうなるような設定があるようですが...。)ですが、JEのREALMS(マイクロソフトが提供している有償で使用可能なレルムズのサーバ)の場合だと表示チャンク数の上限が切られていたりするので、

重たい設定で使うことができるようなスペックにしたものを無茶な設定で動かしているような個人サーバとは異なるのですが、基本的に、

 

【 ゲームの仕様が便利になって降りスポーンチャンクの拡大と

言う要素もあるので負荷が高くなっている 】        

 

ので、サーバを使っても重たいしクライアントのシングルプレイでも重たい状態になっています。

 

 ャンクの読み込み                 

 

 マイクラがスタートするとワールド生成時にブロックが描画さえていきますが、この時に、視界のほうがシミュレーション範囲よりも広いので、JEの場合だと、シミュレーションチャンクが8チャンクで視界がいくつか?と言う事になるので、プレイヤーを基準とした場合の広さはその範囲になります。ただし、スポーン直後の場所の場合、8チャンクではなく、スポーンチャンクの判定になりますから、シミュレーション範囲は12チャンク(現在の1.14では17チャンク)なので、その範囲が描画されます。つまり、スポーンチャンクの広さを全て見るという条件だと21チャンク表示と言う選択になります。

 

 とは言っても、それを行うと1.14では重くてプレイできない環境も多いので、もう少し抑え目なチャンク数にしてプレイすることになります。とりあえず。スタート直後にスポーン地点のバイオームに合ったマップがランダムで生成さえれて行きますが、この時に表示する視界のチャンク数分だけマップがが生成され、ブロックが配置されます。つまり、

 

【 指定チャンク数の平面x256ブロックの高さの範囲の構造物 】

 

になりますが、バイオームによっては高さがそれほど高くならない場所もありますし、とんでもない高さになっている場所もありますから、この辺りはバイオームによって違いますが、地下ついてもこの時に生成されます。

 

 プレイを始めた時になかなかプレイヤーが動けない場合、生成に時間がかかっているのが主因ですが、これはチャンク数を広くしておくと、移動するだけでその影響を受けます。

 

 ちなみに、BEの1.11.4でもエリトラ+激流つきトライデントを使って雨の日に飛ぶとチャンクの読み込みが追い付かなくなることがある(これは、花火+エリトラよりも早いのでマイクラなのかでは最速です。以前、速度修正が入る前の青氷がエリトラを超えるような速度だったのですが、現在はそこまでの速度は出ませんが、これでもチャンクの読み込みが追い付かなくなることはなかったので、それを超えてると言う事になります。)ので、BEでも読み込みが追い付かなくなることがあるのですが、JEの1.14.1の場合だと、負荷の関係でそうなることがあります。

 

 その為、ゲームの表示チャンク数というのは移動ごとにその幅のチャンク分だけ読み込むことになるので、

 

 ■ エンドゲート

 ■ ネザーゲート

 

などで移動した後だと、スポーン時と同様の広範囲の読み込みが発生します。これと全く同じ条件になるのが、エリトラでの移動になりますが、高速で移動する物を用いると移動分だけチャンクの読み込みが発生するので、進行方向ではなくその進んだ場所から左右にそのチャンク数分だけ読み込みが発生するので、負荷が高くなります。

 

 

■ チャンクローダー                  

 

 マイクラの場合自助版だとオーバーワールドでの移動なので、JEの場合スポーンチャンク以外の場所ではプレイヤーの周囲8チャンクがエンティティーの動作対象になりますが、前述のようにJEの場合だと、12x12チャンクがスポーンチャンクになっています。

 

 JEは1プレイヤーに付きプレイヤー周囲とスポーンチャンクの二重で演算が発生する仕様なので、負荷が高くなるのですが、基本的にこの範囲は伸びません。ただし、1.13ではチャンクローダーが使用できていたので、回路を作る場合に、スポーンチャンクの12チャンクの縛りがない状態で動かすことができていましたが、流石に今回はオーバーワールド上のチャンクローダーの仕様はできなくなっているようです。

 

 ちなみに、エンドとネザーは時間の概念がないので、ベッドを置くと爆発してしまうのですが、オーバーワールドのスポーンチャンクの処理ですが、エンドとネザーだと止まります。その為、エンドとネザーに居る時にはスポーンチャンクの回路は止まってしまうので、チャンクローダーを使って時間凍結の対象外にする必要が出てきます。

 

 実は、ネザーゲートを作ってソフトバンク子に永久的に雪玉を投げ続けるとオーバーワールドの回路がそのまま読み込まれるのでスポーンチャンク内のエンティティーの動作範囲での挙動はそのまま維持されます。つまり、ジ・アイアンタイタンとかも1.13だとネザー要塞を探す長旅をしている間でも動かす事が可能で、エンドシップを探す長旅をしているときでも、鉄の量産を行うと言う事が可能でした。

 

 なぜ過去形なのか?と言うとジ・アイアンタイタンは壊れてしまっているので、別の仕様の物に作り替える必要があるからです。

 

 ネザーゲートの枠を作り、ガラスの上にレールを引いて、トロッコに乗った状態のゾンビピッグマンとスノーゴーレムを用意して、ネザーゲートの位置から雪玉を投げ込むようにすると、オーバーワールドで動いているMOBが検知されて、なぜかネザーに移動してもでもオーバーワールドの時間凍結が発生しない状態にできます。

 

 興味深いのが、マイクラの世界は

 

オーバーワールドとそれ以外の世界

 

と言う区分けのようなので、このネザーゲート式のチャンクローダーを用いるとネザーだけでなく、エンドでもスポーンチャンクのチャンクの読み込みが行われます。

 

 ただし、前述のように重たくなるので、マシンスペックが高いシングルプレイを行うスタンドアローン動作時においてのみ試せる内容ですが、マシンスペックを結構高くしておかないとトラップを動かすような条件だと重くてゲームにならないかもしれません。その為、バニラで何も作っていない状態でのチャンクローダーの利用とジ・アイアンタイタンなどを稼働させたうえでのネザー要塞探しの長旅やエンドシップ探しの長旅だと少し意味合いが違うので、クリエイティブで何も作っていない状態だと負荷が高すぎる状態にはなりませんが、ワールド内の状態によって負荷が極端に変わります。

 

 なので、チャンクローダーはネザーとエンドに言った場合にスポーンチャンクの読み込みが可能な仕様の物は使えそうですが、負荷が上がるのでそれを踏まえたうえで使うことになります。

 

 当然、BEとコンソール版にはそう言った時間凍結対象外の場所がオーバーワールド内に存在しませんから、プレイヤーを中心とした任意の範囲のみが読み込み対象となります。

 

 

■ JE@シングルを始める場合           

 

 1.14ではFogeとOptifineの正式版が出ていませんから、実質的に、重たい状態になります。Optifineはベータ版なので正式版待ちになりますから、それまでは重たい状態になります。バージョンアップで状況は変わるかもしれませんが、現状だと、処理の分散ができていないので、JEの場合、JVMの引数でパフォーマンスのコントロールをしないとダメですから、結構敷居が高い状態になります。また、そのままプレイをしている場合、メモリーの割り当ても1GB位で動いているので、劇的に重たいのですが、少ないスレッド数での処理能力が高いプロセッサでないと現状では厳しい気がします。とはいっても、IntelもAMDも実装コア数よりも少ないスレッドで動く場合には、TurboBoostやTurboCoreが働くので、そうした物が存在しないクロックが低いPCUよりは良好な結果になりますが、そうした構成ですら重たくなります。

 

 スポーン直後から結構な重さに感じる環境もあるのですが、この場合は、最初に設定を変える必要があるので、JVMの引数を変更していない条件だと、表示チャンク数と解像度を調整し、表示関連の項目を変更するというのが最適な調整方法になります。

 

 今回は、その条件や、Optifineが来た後でもやっておいたほうがよさそうな軽量化について書こうかなと思います。

 

 

■ スポーンチャンクを基準に考える        

 

 マイクラを始めるという条件での話になりますが、この時に初期スポーン地点に出ますが、JEの場合だと、その場所にブロックを置きます。この場所をスポーンチャンクの基準として考えるので、ここにタワーのような目印を付けます。

 

 JEではこれが基本となりますが、この理由は、後に何かを作る場合、この場所は植物の成長以外だと凍結の対象外になる空間として利用できるスポーンチャンクの中心だからです。

 

 1.14ではここから東西南北に168ブロック伸ばした場所にタワーを立て、そのタワーの場所から、更に南北、もしくは東西のタワーから、プラスマイナスの方向に168ブロック移動した場所にタワーを立てると、その範囲がスポーンチャンクになります。つまり、この範囲よりも外に、植物関連の物を置いて、その場所でプレイヤーが盛業を促すような状態にすると、スポーンチャンクでの余計な負荷が増えなくなるという利点があります。

 

 あと、MOBの数での負荷の上昇が存在しますから、シングルプレイで新規に始める場合だと、

 

 ■ トラップタワー(不要な時には止めるので...。)

 ■ 自動農業施設(スポーンチャンクでは成長が見込めないので)

 

などを作る場合だと、スポーンチャンク外のほうがいいです。また、骨粉方式のツリーファームなども、プレイヤーが居ないと動きませんから、

 

 

【 プレイヤーが必要な施設はスポーンチャンクに置かない 】

 

 

ようにするほうが負荷は減ります。と言うのも、骨粉で成長させる方式のツリーファームも植える作業はプレイヤーが行いますから、その場所に滞在しないとダメな回路だと、時間凍結の対象外であっても自動生産してくれるわけではないので、そうした点で注意が必要になります。

 

 とりあえず、スポーン着外に出しても大丈夫な物としては、

 

 ■ プレイヤーが居ないと動作しない物

 ■ スイッチのオフにして平気な機構

 ■ 農作物などのようにスポーンチャンクである必要がない物

 

がそれに該当します。その為、村人の自動農場はMOBの動作なので、刈り取りと作付けとドロップまではしてくれますが、肝心な作物の成長に関してはプレイヤー側の8チャンクのシミュレーション範囲(エンティティーの動作範囲)の条件がないと成長しないので、プレイヤーが居ないとどうにもならない物になります。これは樹木の成長や葉が枯れる条件など同じです。

 

 その為、マイクラを始める場合、JEだと 【 製作する物の分類 】 を行うことになります。

 

 とりあえず、作る前にスポーンチャンク内でなくてはならない挙動の物か否かで分類をします。その後、スポーンチャンクでは機能しない物で時間凍結の対象となっても影響がない物だとスポーンチャンク外に出したほうがいいと言えます。その為、スポーンチャンクの理想形というのは、 【 フラットで整地の必要がないような場所で得ある事 】 になりますが、村があると、MOBの演算は常に行われることになります。

 

 その為、村人増殖などはスポーンチャンク内の17x17チャンクの範囲(1.13までだと12x12チャンクの範囲)になりますが、植物系は意味をなさないと言う事を理解してプランニングをする必要があります。この条件だと、スポーンチャンクだと

 

 ■ アイアンゴーレムトラップ

 ■ 村人増殖

 ■ アイテム仕分け機

 

辺りだと作っておいてもよさそうですが、天空TTのようなデスポーンなどの条件を含む処理を考えると、これは完全にスポーンチャンクの外に配置しても問題がなさそうな物になります。また、経験値トラップやアイテムトラップがプレイヤーを放置して使用する物なので、

 

【 バッグラウンドで動かす必要がない 】

 

ので、これは完全にスポーンチャンクの外に作っても問題がない機構になります。あと、植物の成長はプレイヤーがそこに居る必要がありますから、スポーンチャンク内に作るメリットである プレイヤーが別の場所に居ても稼働する と言う条件から外れるので、スポーンチャンクの外で大丈夫と言う事になります。そうなると、ツリーファームなども外に出して大丈夫と言う事になります。

 

 その為、単独でプレイをする場合の条件ですが、序盤の数日は、通常のサバイバルを行うことになりますが、スポーンチャンクの範囲の目印をなるべく早期に作り、その上で、その範囲内に何もないことを確認して、その外に拠点を設けるようにしたほうが都合がよくなります。と言うのも、

 

 ■ 農業

 ■ 林業

 ■ トラップタワー

 

などはスポーンチャンク外で問題がないので、アイアンゴーレムトラップや村人増殖のような物を作る場合に、その空間が意味を成すので、その場所を有効利用しようと思うとアイアンゴーレムトラップと何かしらの回路の配置と言う事になります。

 

 あとは、資材の移送用のインフラクチャーなどになりそうですが、そのバイオームがどういう場所なのかによって出来ることが変わるので、場合によっては地下を掘ると鉱石の山の場合もありますから、その場所の使い方は色々です。例えば、地下資源が乏しい場合だと、その場所の地価は使わないので、地上で何を用意しようか?と言う話になりますから、一つの村として認識されない範囲にアイアンゴーレムトラップを複数用意してそれを用いて機能させるなどの方法もありますが、必要な機構も地下採掘やその場所のエンティティーの条件で変わってきます。例えば、1.14からドロッパー(発射装置)にハサミを入れると自動毛刈りが可能になったので、羊毛を自動で収穫できるようになりましたから、これはスポーンチャンクで対応できます。MOBの成長などはスポーンチャンクでどうにかなるので、植物と言うよりも動物関連はスポーンチャンクのほうが意味があります。つまり、 【 自動OO装置 】 のようなものでMOBが関連する物だとスポーンチャンクに作ると放置ができます。そうなると、畜産と村とアイアンゴーレムトラップなどが存在する場所を作ればいいと言う事になりますから、ある程度のコンセプトは固まってきます。

 

 その王権で考えていくと、スポーンチャンクで運用する物とそうでない物を事前に分けて置き、それをプレイしながらスポーンチャンク内外で分けて使うようにすると、負荷の上昇をコントロールできます。

 

 あと、マシンスペックで出来ることが変わってくるので、実装する回路の規模や数をどうするのか?も同時時間が得ることになります。

 

 

 

■ とりあえず                      

 

 マイクラの場合、自由度が高いゲームなので、スポーンチャンクに作ってはならないという物ではありませんが、負荷が高すぎてゲームのプレイに無理が来るような状態を事前に回避しようと思うと、機構の特性やスポーンチャンクの特性を理解してどこに配置するか?を考えて行うことになります。

 

 負荷が大丈夫な場合だと、こうした事は全く考えなくてもいいのですが、負荷の調整をしたほうがゲームは解的になります。建築や回路の接敵や配置も魅力ですが、こうした物を配置する場合、マシンスペックによって出来ることが変わってきます。その為、ゲームプレイにおいて快適であればじゅいゆうな選択が可能ですが、建築をして負荷が増える状態になるのがサンドボックスなので、マシンスペックがあまり高くないマシンの場合だと、負荷の分散を考える必要が出てきます。

 

 そうなると、環境設定だけでは限界がありますから、こうした、ワールド内のレイアウトで軽くするという方法があります。

 

 

 自由度の高いJEとBEですが、MOBやエンティティーの数と負荷は比例します。その為、一つの考え方なんですが、

 

一か所に大量にまとめるのではなく、分散させる

 

と負荷は分散します。MOBの場合、スポーンチャンク内での総数の上限を決めて置き、その後、それ以外を移動させるとか、村人だと、定数を決めておいて、それ以上の村人はネザーに移動させるなども一つの方法になります。そして、村人の絶対数を一定にしておけば、負荷はその村人の数分だけに限定できます。また、MOBの総数については、自動で何かをする回路でない限りは絶対数を過剰に増やす意味もなさそうですから、やはりこの条件でも分散が可能になります。

 

 そうなると、ネザーの一時拠点から、ネザー内のトロッコでの二次拠点へ移動して、そのネザーゲートを出た二次拠点に動物や村人を移動させて村にすると、総数は維持できて、演算にはその村人やMOBは含まれなくなるので総数に対しての負荷は減ります。

 

 BEの場合、スポーンチャンクではなく、シミュレーション範囲なので、最大で12チャンクですが、BEはコンソール版と異なり、この範囲を小さくできます。その為、あまりにも負荷が酷い場合、シミュレーションチャンクをJEやコンソール版に合わせたりそれ以下にすることも可能なので、負荷のコントロールが可能です。

 

 たあだし、MOBや回路やブロックを移動するような挙動がある物は重たいので、事前に総数の上限を決めておいて、超過した場合にはネザーなどで対応すると負荷のコントロールができます。

 

A ppendix                        

 

先日、村人の交易について少し書きましたが、これには法則性があり、

 

■ 村人のチャート

  https://www.reddit.com/r/Minecraft/comments/bjhtl0/

  chart_of_all_trades_in_114/

 

 

に書かれています。各レベルでの発生する物が存在しており、その中でランダムで何かが出てきますが、本などのように種類がある物は個別に変わります。その為、何の本が得られるかは全く違ってくるので、司書の場合だと、ブロックの置き換えで得られる物が変わってきます。

 

 この辺りは、以前の村人との交易と同じですが、LV1段階で得られるアイテムの種類が変わるので司書ガチャは職業ブロックの入れ替えだけで行えるようになりました。交易していない村人だと転職が可能なので、司書村などを作る場合も以前よりも煩雑さがなくなっています。

 

 各職業で同様の状態時なりますが、基本的に、ベッドでその場所に定着させたほうがいいので、職業ブロックとベッドをセットで配置することになります。