地図検証
1.91から地図の仕様が変わり、少しややこしくなったので調べてみました
世界のサイズ
これは以前から変わりませんが、今回の説明のために一応記載しておきます
最初に持っている地図は世界サイズ小と同じ大きさになります
各サイズは以下の通り
- 大:5120×5120ブロック、最初の地図25枚分の大きさ
- 中:3072×3072ブロック、最初の地図9枚分の大きさ
- 小:1024×1024ブロック、最初の地図1枚分の大きさ
- クラシック:864×864ブロック(以下クラシックは検証から省略)
図に表すとこのようになります
地図の縮小
新たに地図を作成すると最も拡大された地図(縮小レベル0)が出来ます
領域は128×128ブロック分になります
そして地図は最大4段階縮小することができます
縮小レベル1(1:2、256×256ブロック)
縮小レベル2(1:4、512×512ブロック)
縮小レベル3(1:8、1024×1024ブロック)
最初にもらえる地図はこのサイズになります
縮小レベル4(1:16、2048×2048ブロック)
各地図の配置図
地図はプレイヤーの現在地を中心として作成されるわけではなく、あらかじめ配置が決められています
縮小レベルごとに地図の配置を図に表してみました
縮小レベル0
赤色枠:縮小レベル3の地図の配置
灰色枠:縮小レベル0の地図の配置
X,Z:0,0を中心に地図が配置されるので世界の端の地図は半分だけ表示されます
縮小レベル0の地図で世界地図を作るには以下の枚数必要になります
- 世界サイズ大:1681枚
- 世界サイズ中:625枚
- 世界サイズ小:81枚
縮小レベル1
赤色枠:縮小レベル3の地図の配置
緑色枠:縮小レベル1の地図の配置
縮小レベル1の地図で世界地図を作るには以下の枚数必要になります
- 世界サイズ大:441枚
- 世界サイズ中:169枚
- 世界サイズ小:25枚
縮小レベル2
赤色枠:縮小レベル3の地図の配置
青色枠:縮小レベル2の地図の配置
縮小レベル2の地図で世界地図を作るには以下の枚数必要になります
- 世界サイズ大:121枚
- 世界サイズ中:49枚
- 世界サイズ小:9枚
縮小レベル3
赤色枠:縮小レベル3の地図の配置
縮小レベル3の地図で世界地図を作るには以下の枚数必要になります
- 世界サイズ大:25枚
- 世界サイズ中:9枚
- 世界サイズ小:1枚
縮小レベル4
赤色枠:縮小レベル3の地図の配置
黄色枠:縮小レベル4の地図の配置
縮小レベル4の地図で世界地図を作るには以下の枚数必要になります
- 世界サイズ大:9枚
- 世界サイズ中:9枚
- 世界サイズ小:1
縮小の検証
馴染みのある縮小レベル3の地図(以下、[3]地図というように表記)を作成するには[0]地図を3段階縮小すれば出来ますが、決まった場所の地図でないと狙い通りに作れません
そこで、順を追って図解していきたいと思います
例えば、太枠の位置が作りたい[3]地図の位置だとします
[3]地図を作るには[2]地図が必要です
[2]地図の配置は青色の枠になり、水色で塗りつぶされた範囲のいずれかの[2]地図を縮小すれば赤枠の位置の[3]地図が作成出来ます
同様に先ほどの[2]地図を作るには薄緑色で塗りつぶされた範囲の[1]地図を、
[1]地図を作るには灰色で塗りつぶされた範囲の[0]地図を縮小すると出来ます
よって、[3]地図(赤枠)を作るには灰色で塗りつぶされた範囲のいずれかの[0]地図が最初に必要ということになります
まぁ★の位置で地図を作成・縮小するのが一番わかりやすいですかね
逆に言えば赤枠内でも灰色の範囲外の地図を縮小すると、狙いとは違った場所の地図が作られてしまうというわけですね
地図の中央値
作成したい地図の中央値がわかれば間違いなく狙い通りの地図を作ることが出来ます
ということで、わかりやすいように縮小レベル3の地図の中央値を図に表してみました
きっちり座標を合わせなくても誤差は128までであれば問題ないです
ただ、中央に行くより別の位置で作成した方が短距離で済む場合もあるので、あくまで確実な方法として紹介しておきます
また、現在いる座標から現在地を含む地図(縮小レベル0)の中央値を算出することができます
計算方法は以下の通り(公式Wikiより)
座標+64が0または正の値の場合:
int((n+64)÷128)×128
座標+64が負の値の場合:
int((n-63)÷128)×128
nは現在いるX座標もしくはZ座標、int()は小数点以下を切り捨て
応用して他の縮小レベルの地図でも中央値を算出できるよう計算式を作ってみました
縮小レベル1
座標+128が0または正の値の場合:
int((n+128)÷256)×256
座標+128が負の値の場合:
int((n-127)÷256)×256
縮小レベル2
座標+256が0または正の値の場合:
int((n+256)÷512)×512
座標+256が負の値の場合:
int((n-255)÷512)×512
縮小レベル3
座標+512が0または正の値の場合:
int((n+512)÷1024)×1024
座標+512が負の値の場合:
int((n-511)÷1024)×1024
縮小レベル4
座標+1024が0または正の値の場合:
int((n+1024)÷2048)×2048
座標+1024が負の値の場合:
int((n-1023)÷2048)×2048
長々と書きましたが、空白の地図のまま縮小レベルを変えられたら、こんな苦労はしなくて済むんですけどね^^;
今後のアプデでその仕様が追加されることを望みます