Alphaレベルフォーマット

提供: Minecraft Wiki
移動先: 案内検索
Rose (2D).png
このページには古い情報、またはゲームから削除された機能についての内容が含まれています。
これらの機能は、以前の古いバージョンのMinecraftに存在するものです。
Information icon.svg
この項目はJava Edition限定の要素です。

Infdevで開発中に新しいデータストレージチャレンジが導入された:マップの大きさ(表面積は地球の数倍)により、Infdevで生成された地形がメモリに格納された際の大きさがほぼ235ペタバイト(240640テラバイト)になる可能性がある。したがって、ファイルサイズとメモリ使用量を軽減するため、Notchは地形を16×128×16のチャンクに分割し、表示されない場合はディスクに保存することを決めた。さらに、地形はプレーヤーの視点の描画範囲内にあるときにのみ生成されるようにし、保存サイズが大幅に削減された。これは、ほとんどのプレーヤーが妥当な時間枠内でマップのごく一部しか探索できなかったからである。Alphaはこの手法を使用するが、BetaMinecraft 1.0は両方ともその成功のためまだ一般的な概念を使用している

Minecraft Beta 1.3では、この形式はRegionファイルフォーマットに置き換えられた。これでは、チャンクが32×32のグループでRegionファイルに保存される。

ワールドフォルダ構造[編集 | ソースを編集]

Alphaレベルは実際にはlevel.datという名前のファイルを1つ以上もつ単一のフォルダーである。また、1つのMinecraftのみが一度にレベルを開けるようにするsession.lockファイルもある。

レベルフォルダには最大64個の追加サブフォルダーがある最大64個のサブフォルダが存在する。これらのフォルダには、レベルの地形とエンティティを保存するチャンクファイルが含まれている。各チャンクファイルは、そのチャンク位置xPosとzPosによって識別される。PosおよびzPosのbase36を取得するとチャンクファイルの名前の様々な部分を取得できる。xPosとzPosをモジュロ64(または63とのビット単位のAND)を取り、base36に変換することでチャンクファイルが置かれているフォルダの名前を見つけられる。負の座標は、2の補数を介しビット単位で製の数として解釈する必要がある。したがって、-13は243として処理される(サイズがバイトの場合)

例、位置(-13, 44)でチャンクを見つけるには:

  • 最初のフォルダ名はbase36(-13 % 64)。これはbase36(243 % 64 = 51)で"1f"。
  • 2つ目のフォルダ名はbase36(44 % 64)。これはbase36(44)で"18"。
  • チャンクファイルの名前は"c."+"base36(-13) + "。" + base36(44) + ".dat"。これは"c.-d.18.dat"と評価される
  • したがって、(-13, 44)のチャンクは"1f/18/c.-d.18.dat"に格納される

各チャンクは、ファイルやフォルダー名とは無関係にその位置を記憶する。ファイルデータからチャンクの位置を読み取る方法については、以下を参照。

ディメンション[編集 | ソースを編集]

ディメンションは通常のワールドと同じ方法で保存されるが、保存フォルダ内のワールドファイルを混合する代わりに、ファイルは独自のRegionとチャンクデータを持つ追加サブフォルダーに保存される。名前はDIMで始まり、その後にIDが続く。

これらのディメンションIDはAlphaで使用されたものである:

ID フォルダ ディメンション
0 saves/[World]/ ノーマルワールド(オーバーワールド)常にDIMなしでワールドフォルダに保存される
-1 saves/[World]/DIM-1/ ハロウィン・アップデートで追加されたネザー

session.lockフォーマット[編集 | ソースを編集]

session.lockには、ワールドに最後に触れた際のタイムスタンプが含まれる。ファイルの長さは8バイトで、ビッグエンディアン形式の単一の64ビット符号付き整数が含まれている。この整数の値はタイムスタンプであり、1970年から経過したミリ秒数としてUTCで保存される。

典型的なロックファイルとは異なり、session.lockは、ワールドを開く最後のプログラムが所有する物である。手順は次のようである:

  1. プログラムがsession.lockを開く
  2. プログラムがsession.lockにタイムスタンプを書き込む
  3. プログラムがsession.lockの変更を監視する
  4. session.lockの内容が変更されるとプログラムは異常終了し、ワールドのロックを放棄する

level.datフォーマット[編集 | ソースを編集]

level.datファイルは、グローバルレベルのデータ(時刻、プレーヤーの体力、インベントリ、速度、マップ内の位置など)を格納するGZipされたNBTファイルである。地形ジェネレーターがより多くの地形をその場で滑らかに生成するのに使用するランダムシードを格納することが最も重要である。

このファイルの構造:

  • Nbtsheet.png ルートタグ
    • Nbtsheet.png Data: グローバルレベルデータ
      • Nbtsheet.png LastPlayed: プレーヤーがゲームを保存した際のUnixタイムスタンプ(ミリ秒)を保存する
      • Nbtsheet.png SizeOnDisk: 全ワールドの推定サイズ(バイト単位)
      • Nbtsheet.png RandomSeed: 地形にランダムシードを備え付ける乱数
      • Nbtsheet.png SpawnX: レベルのスポーン地点のX座標
      • Nbtsheet.png SpawnY: レベルのスポーン地点のY座標
      • Nbtsheet.png SpawnZ: レベルのスポーン地点のZ座標
      • Nbtsheet.png Time: 現在の"time of day"をティック単位で保存。1秒当たり20ティック、Minecraftの昼夜サイクルごとに24000ティック。サイクル全体の長さは20分。0は昼間の開始、12000は日没の開始、13800は夜間の開始、22200は日の出の開始、24000は翌日の昼間の開始。level.datに格納されている値は常に増加しており、24000を超える事があるが、"time of day"は常に”Time"フィールド値の24000を基にしている
      • Nbtsheet.png Player: レベルのシングルプレーヤーのプレーヤー
        • Nbtsheet.png Dimension: プレーヤーのいるディメンション。0はオーバーワールド-1はネザー
        • Nbtsheet.png Pos: プレーヤーのX,Y,Z座標の3つのTAG_Doubleのリスト。
        • Nbtsheet.png Rotation: プレーヤーの視点の偏揺れ角と傾きの2つのTAG_Doubleのリスト。
        • Nbtsheet.png Motion: ティックごとのX,Y,Zモーションの3つのTAG_Doubleのリスト(メートル単位)。
        • Nbtsheet.png OnGround: 1/0 (true/false) - プレーヤーが地面に接している場合はtrue。
        • Nbtsheet.png FallDistance: プレーヤーの落ちた高さ
        • Nbtsheet.png Health: プレーヤーが持っているヒットポイントの数。20は♥10個分。
        • Nbtsheet.png AttackTime: プレーヤーが攻撃を受けないティック数
        • Nbtsheet.png HurtTime: プレーヤーが攻撃されてから赤くなっているティック数
        • Nbtsheet.png DeathTime: プレーヤーが死んだティック数 - 死亡アニメーションの制御に使用。
        • Nbtsheet.png Air: プレーヤーが溺れ始めるまでのティック数。300から始まる。
        • Nbtsheet.png Fire: 負の場合、プレーヤーが燃えるまでのティック数。正の場合、火が消えるまでのティック数。
        • Nbtsheet.png Score: プレーヤーのスコア。スコアはAlphaやBetaでも使用されなかったため、この値は無関係。
        • Nbtsheet.png Inventory: プレーヤーのインベントリ内のアイテムを表すTAG_Compoundsのリスト。
          • Nbtsheet.png インベントリのアイテム
            • Nbtsheet.png Slot: アイテムの入っているスロット
            • Nbtsheet.png id: アイテムID.
            • Nbtsheet.png Damage: アイテムのデータ値または道具の耐久値
            • Nbtsheet.png Count: スタック内のアイテム数。範囲:-128~127。2未満の値はゲーム内に表示されない。

Chunkフォーマット[編集 | ソースを編集]

Chunk files, as described above, are GZip'd NBT files. They have this structure:

  • Nbtsheet.png ルートタグ
    • Nbtsheet.png Level: チャンクのデータ。
      • Nbtsheet.png xPos: そのチャンクの X座標。
      • Nbtsheet.png zPos: そのチャンクの Z座標。
      • Nbtsheet.png TerrainPopulated: 1/0 (true/false) - Minecraftが木、花、鉱石、ダンジョンなど個のチャンクに特別な機能を生成した場合はtrue。
      • Nbtsheet.png LastUpdate: そのチャンクが最後にセーブされたときのティック。
      • Nbtsheet.png Blocks: 32768バイトのブロックID、ブロックごとに8ビット。
      • Nbtsheet.png Data: 16384バイトのブロックデータ、ブロックごとに4ビット。
      • Nbtsheet.png BlockLight: 16384バイトのブロックの光、ブロックごとに4ビット。
      • Nbtsheet.png SkyLight: 16384バイトの日光、ブロックごとに4ビット。
      • Nbtsheet.png HeightMap: 256バイトの高さマップ情報、XZ列ごとに8ビット。日光の計算の高速化に使用。
      • Nbtsheet.png Entities: TAG_Compoundsのリスト、チャンク内のエンティティごとに1つ。
      • Nbtsheet.png TileEntities: TAG_Compoundsのリスト、チャンク内のタイルエンティティごとに1つ。

こちらも参照[編集 | ソースを編集]