読者です 読者をやめる 読者になる 読者になる

RのSkyrim Mod開発日記

SkyrimのMod開発を中心に、備忘録などを載せていきます。

Skyrim Mod ファイルフォーマット解説 - 2

はじめに

この記事ではSkyrimのModのファイルフォーマットについて解説しています。
SkyrimのModのファイルフォーマットについてはTes5Mod:Mod File Format - The Unofficial Elder Scrolls Pages (UESP)が詳しいですが、ここでは、これまで自分なりに解析してきた内容や、必要な部分について解説していきます。
また、同時にプログラミングで利用する情報なども合わせて解説したいと思いますが、プログラミングについての主な情報は別サイトで記事にいていきます。

前回はModの基本構成や、ファイルの先頭部分のファイルヘッダーについて記載しました。
今回は主にグループについてです。

グループ

Modファイルの中身をみると、最初には必ずTES4からはじまるファイルヘッダーがあり、その後はグループの固まりの繰り返しが基本となります。
Skyrim.esmを見てみます。
f:id:rrryutaro:20170408174648p:plain
選択した範囲がファイルヘッダーです。その後に続くGRUPからが、グループのはじまりです。

グループの先頭24byteはグループヘッダーです。
f:id:rrryutaro:20170408181214p:plain

ここではとりあえず次の点を把握できればOKです。

名称 データ型(サイズ) 説明
Group string(4) GRUP固定グループの始まりを示す
DataSize uint(4) グループヘッダーを含むグループ全体のサイズ
Signature string(4) そのグループで扱う情報を識別する記号

実際のデータを見てみます。

名称 内容 バイナリ上での表示
Group GRUP f:id:rrryutaro:20170408181747p:plain
DataSize 96,862 f:id:rrryutaro:20170408181849p:plain
Signature GMST f:id:rrryutaro:20170408181923p:plain

前回特に言及しませんでしたが、DataSizeは内容の所には10進数で書いていますが、バイト上での表示は16進数で、バイトオーダーはリトルエンディアンです。
バイトオーダーなどについての詳細はGoogleなどで"バイトオーダー"で検索してみてください。
10進数と16進数の確認は例えば、Windows標準の計算機などで確認する方法があります。
qiita.com

SignatureGMSTとあります。UESPによるとGame Settingとのこと。
Game Settingということでしょうか。
とりあえず、ここでは詳細は気にしません。

ここまでわかれば、知りたい情報のSignatureのある位置まで、DataSize分読み飛ばしていけばよいことになります。

プログラミングでグループのデータを扱う方法は次の記事にまとめました。
qiita.com