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:
0x1500
の0xA1 0x0D
の部分
とにかくブロックを変えてみる
- 検証方法
- フラットワールドを生成する
- スポーンしたらましたを向いて対象のブロックを上に8段積む
- セーブしてデータを観察
- 初期化してフラットワールド生成の手順に戻る
- キンブロック
- ダイヤモンドブロック
- どうブロック
- 木材
- 石(ミスって一ブロックおいて消した)綺麗な方
- ガラスブロック(ミスって2個おいた)
- いし
共通部分
- 以下のスクリーンショットは石の糖を立てた時のチャンク