ラテーラのマイクラブログ

冒険・建築・自動化・検証といろいろやってます

ネザーゲートの計算

f:id:laterraing:20200118103838p:plain
前回はネザーゲートの移設を地図に頼って行いましたが、座標から算出する方法もまとめてみました

 

 

用語解説

今回はとてもややこしいので、あらかじめ説明に使用する用語を紹介しておきます(今回の説明のために作った用語もあるので注意です)

・座標

 3本の軸が交差する原点を基準に位置を表す数値
 基本的な座標は小数点以下まで表し、表記はX,Y,Zの大文字とする
 整数で表される"ブロック座標"は、表記をx,y,zの小文字とする(参考:ブロック座標 - Minecraft Wiki
 ・X軸:東西方向(東に増加、西に減少)
 ・Z軸:南北方向(南に増加、北に減少)
 ・Y軸:高さ方向

・ネザーの座標

 ネザーは通常世界と座標がリンクしており、水平方向の比率がネザー:通常世界=1:8となる(高さ方向は1:1)
 PS4 Editionでは比率が世界サイズによって異なる(クラシック&小は1:3、中は1:6、大は1:8

・ゲートO

 通常世界(Overworld)側に設置したネザーゲート

・ゲートN

 ネザー世界側に設置したネザーゲート

・入力座標

 プレイヤーがネザーゲートに入った時の座標

・出力座標

 ネザーゲートを検出もしくは生成するためのブロック座標

 

ネザーゲートの転送手順

Wikiによるとネザーゲートの転送には以下の手順が行われるようです

  1. 入力座標から出力座標を算出
    ・入力座標が通常世界にある場合は入力座標を8で割り、小数点以下を切り捨て。ただし負の値の場合は切り上げ
    ・入力座標がネザーにある場合は入力座標に8を掛ける
    ・Y座標はそのまま
    ・乗算・除算する値は通常世界とネザーの比率に基づく
  2. 算出された出力座標から最も近いネザーゲートを検出し転送
    ・検出は出力座標から水平方向に128ブロックとなる正方形の範囲(出力座標を中心に257×257ブロック)の全ての高度で行われる
  3. 近くにネザーゲートがない場合は、出力座標から最も近い生成可能な空間にネザーゲートを生成し転送
  4. 出力座標付近に生成可能な空間がない場合は、出力座標に強制的にネザーゲートを生成し転送

今回は1と2の部分が計算に必要になります

 

常世界側のゲートと繋がる座標を算出

f:id:laterraing:20200117232231p:plain

今回はゲートNの移設場所をゲートOの座標から算出したいので、先述の手順を逆算します

1.ゲートOを検出できる出力座標を算出

ネザーゲートは幅が2ブロック以上あるので、ゲートOをブロック座標x,z〜z'(もしくはx〜x',z)とします

ゲートOを検出できる出力座標を図に表すと以下のようになります(高さ方向は省略)

f:id:laterraing:20200118094840p:plain

この範囲にラテーラワールドのゲートOのブロック座標(x-262,z294〜296)を代入します

 

 (x-262,z294)-128〜(x-262,z296)+128
 =x-390,z166〜x-134,z424

 

2.出力座標から入力座標を算出

今回は通常世界の出力座標からネザー世界の入力座標を算出するので、座標を8で割ります

※小数点以下を正の値の場合は切り捨て、負の値の場合は切り上げ

 

 (x-390,z166〜x-134,z424)÷8

 =x-49,z20〜x-17,z53

 

この範囲にゲートNを設置するとゲートOに繋がる計算となります

 

試しに別ワールドの同じ座標で確認すると計算の通りにゲートOに繋がりました(ただし範囲の端っこの方はゲートに入る位置によっては別のゲートに繋がってしまうこともあります)

f:id:laterraing:20200117234501p:plain

逆にゲートOを移設する場合は、従来の手順通りにネザー側の入力座標に8を掛けて出力座標を算出し、128を加算減算するとゲートNに繋がる座標を求めることができます

 

新たな問題発覚

先ほどの計算はバッチリなはずなのですが、何故かラテーラワールドでは上手くいきませんでした(新しいワールドでは問題ない)

地図で照らし合わせてみても、本来なら入力座標と出力座標の位置は同じになるはずなのですがズレてしまっています

f:id:laterraing:20200117235647p:plain

いろいろ検証した結果、あることがわかりました

それは、ラテーラワールドのネザーと通常世界の比率が1:8ではなく1:6であること

1:6に計算し直して確認すると、この通りカーソルが重なったので間違いないです

f:id:laterraing:20200118001143p:plain

 

実は統合版に変換する前にPS4版で世界サイズを小から中にしておりました

英語版Wikiのネザーゲートの記事によると、比率は世界サイズによって異なります(小&クラシック1:3、中1:6、大1:8)

日本語版には記載されていないので、ずっと1:8だと思い込んでいました

このサイズ変更(小→中)がネザーゲートの不具合の原因となったわけですが、統合版に変換後も比率が変わっていないということになります

これが仕様なのかバグなのかはわかりませんが、ネザーゲートで遠方への移動距離を短縮する場合は従来より距離が長くなるということになるので直して欲しいですね^^;

 

比率を直して再計算

というわけで、比率を1:6に直して再計算します

※小数点以下を正の値の場合は切り捨て、負の値の場合は切り上げ

 

 (X-390,Z166〜X-134,Z424)÷6

 =X-65,Z27〜X-23,Z70

 

これでラテーラワールドでもゲートOに繋げることができる範囲を算出できました

前回の記事で移設したゲートNの場所もx-40,z30なので今回算出した範囲に収まっています

f:id:laterraing:20200114190050p:plain

今回のケースは稀かもしれませんが、PS4版で世界サイズを大以外でプレイする場合は比率に注意ですね