NOTE

現在キューブクリエイターのセーブデータを解析中です。そのためこの記事は不完全な可能性があります。

目的

3DSを対象にリリースされた「Cube Creator 3D」のワールドセーブデータファイルを解析し、MInecraftにエクスポート・インポートするのが目的。

空のデータ

検証のためにまずからのセーブデータを用意した

ファイル構成

  • cworld00.dat~cworld07.dat:計8ファイルで構成される。クリエイティブモードのセーブデータが格納
  • sworld00.dat~sworld04.dat:計8ファイルで構成される。サバイバルモードのデータが格納
  • profile0.dat:ゲームの設定が格納…?

データ内容

ワールド

  • サバイバルモード・クリエイティブモードに関わらず同一のデータ

プロフィール

  • 4096バイトのデータ
  • 画像は抜粋したもの
  • address:00000000あたりはこのようなデータになっており、それ以降は空のデータ
  • 最初の一バイトは設定だと思われる。

平地のワールド

目的

各プロパティをいじって、データがどのように変化するのかを観察しデータ構造を明らかにすることを目的とする。 また、一番検証しやすい平原を検証の対象とする。

メタデータの解析

ワールドにはプレイヤーの位置、インベントリ、キューブの模様設定などのメタデータが存在する。

0x00000008(キューブ模様)

ワールドのセーブデータ上のアドレス0x00000008の値を変更することでキューブの模様設定を変更することができた。

Value結果
0x00オリジナル
0x01マス目
0x02中世ヨーロッパ
0x03イルミネーション
0x04のどかな景色
0x05ジグゾーパズル
0x06コミック
0x07キャンディ
0x08インク
0x02以降は推測で未検証

0x00000018(ワールド更新日時)

更新日時(時のみ)は0x00000018に16進数で保存されている。 0x0Dは13なので、13時に更新されたことがわかる 範囲外の値を入れると別の値が表示される。0x0Fを書き込んだ例

0x0000001C(ワールド更新分)

更新日時(分のみ)は0x00000001Cに16進数で格納されている。 0x11は17なので、17分に更新されたという意味。

ワールド(ボディ)

クリエイティブモードで平地のワールドを生成してみる。キューブの模様設定はオリジナル。

  • (仮定)ボディの初めはアドレス0x00000040の値0x90が開始

仮説:チャンク

バイナリを見ていると\x36\x00\x00\x00(0x36000000)のパターンが頻繁に見られる。

  • そして、\x36\x00\x00\x00のデータに続いて1バイト先はチャンクのX方向の配列番号、3バイト先はチャンクのY方向の配列番号だと推測される。
  • F8FBFBFBFBFBFBFBFBFBFBFBFBFB7FF0DFも一つの塊に存在する。(終盤?)
  • また、データ数は144件発見されたので、12x12だと推測

金ブロックを8段積んだ

ワールド真ん中あたりに立って、金ブロックを8段積んだ。

  • 先ほど解説したチャンクのXとYをみると、それぞれ(0x06,0x05)となっており、先ほどのちゃんは12x12と推測したところから、この数値(0x06,0x05)はワールド全体で中心だとわかる。
  • 変更したチャンクには怪しげなパターンが現れた3F000000。(変更フラグ??)
  • また、変更したチャンクにも同一のパターンが現れた。
  • この怪しげなパターンの後に続く数字がチャンクの時と同じでチャンクないのXY座標の可能性があるので、書き換える
  • ( X座標?を書き換えた)

書き換え前

書き換え後

  • 3Fになっているチャンクは変更があるチャンク

金ブロックを破壊してみる

(After) (BEFORE) addr:0x15000xA1 0x0Dの部分

とにかくブロックを変えてみる

  • 検証方法
    • フラットワールドを生成する
    • スポーンしたらましたを向いて対象のブロックを上に8段積む
    • セーブしてデータを観察
    • 初期化してフラットワールド生成の手順に戻る
  • キンブロック
  • ダイヤモンドブロック
  • どうブロック
  • 木材
  • 石(ミスって一ブロックおいて消した)綺麗な方
  • ガラスブロック(ミスって2個おいた)
  • いし

共通部分

  • 以下のスクリーンショットは石の糖を立てた時のチャンク