SkyrimのMOD構成を勝手に予想する

先日、ついに私もSteamでSkyrimを購入して遊んでいる最中です (゚∀゚)
操作性に関してやや取っつきにくさがあるものの、
MODが開発されればオブリのように改善されるものと願いつつ
「SkyrimにおけるMOD構成はどうなるんだろう?」というのを勝手に予想してみました。
 
※2011/12/27追記
 コメントにて情報を頂きました、ありがとうございます。
 .esm/.esp自体の個別設定で「.Stringファイル参照型」か「テキスト格納型」かを
 決めることができるようです。
 下記の記事における「全てのMODが.Stringファイルを参照するんじゃね?」的な推測は
 内容が誤っていますのでご注意ください。

「Skyrim.esm」や「Update.esm」の内容を確認する限り
「名詞等」「字幕の文章」「本の文章」は.esm/.espファイルには含まれておらず、
それらはまとめて「Stringsフォルダ」の「.Stringsファイル」に格納されているようです。


※2011/12/23追記
 オブリのように「テキストデータを.esm/.espに埋め込む作り方」もできるようです。
 実際そういう作りになっているMODの存在を教えて頂きました。
 優先順位は「.esm/.esp埋め込みテキスト」 > 「.Stringsファイル」っぽい?
 「テキスト埋め込み型」と「テキスト外部型(.Strings依存型)」の2種類があるのかな…?
 それをModderが選択したり途中でタイプを変えたりできるのだろうか、謎は深まります。

 以上を踏まえて、これ以下の記事はあまり意味のない妄想かもしれません!注意!

.Stringsファイルはそのままでは内容を確認できませんが、
「Skyrimテキスト変換ツール」(skyrim_strings_tools)にてアンパック/パックが行えます。
どうやって解析&対応したんだろう、作者様すごすぎます ((( ;゚Д゚)))

※正確に言うと.Stringsファイル1種ではなく合計3種類のファイルがあります。
.Stringsファイル = 名詞等いろいろ
.dlStringsファイル = 本の文章
.ilStringsファイル = 字幕の文章

というわけで、以下は「こうなんじゃね?」と私が勝手に思っているだけの内容です。





まず「My Games\Skyrim\Skyrim.ini」に↓このような言語設定があります。
(正確には、単に文字列の設定が行われているだけ)

[General]
sLanguage=ENGLISH

これ↑は英語版の設定で、日本語版だと↓こうなっているはずです。

[General]
sLanguage=JAPANESE





次にSkyrimで使われているMODファイルを確認します。

Skyrim.esm
Update.esm

英語版でも日本語版でも上記2ファイルが適用されているはずです。

で、これらMODファイルには名詞等のテキストが含まれていないはずなので、
●「Stringsフォルダ」の「MODファイル名_言語設定.Strings」を参照している
と推測します。

面倒くさいので「Update.esm」は省いて「Skyrim.esm」だけに注目してみます。

英語版の場合:
 言語設定=ENGLISH
 MODファイル名=Skyrim
  Strings/Skyrim_English.Strings
  Strings/Skyrim_English.dlStrings
  Strings/Skyrim_English.ilStrings

日本語の場合:
 言語設定=JAPANESE
 MODファイル名=Skyrim
  Strings/Skyrim_Japanese.Strings
  Strings/Skyrim_Japanese.dlStrings
  Strings/Skyrim_Japanese.ilStrings

※補足
Windowsにおいてはファイル名の大文字/小文字は区別されず同一に扱われます。
例えば「_English」が「_ENGLISH」でも「_EnGlISh」でも構わない、ということです。





MODとは関係のない「Skyrimシステム自体のテキスト」も言語設定別に存在しています。
「Interfaceフォルダ」の「Translate_言語設定.txt」ファイルです。

英語版の場合:
 言語設定=ENGLISH
 Interface/Translate_ENGLISH.txt

日本語の場合:
 言語設定=JAPANESE
 Interface/Translate_JAPANESE.txt





実際にMODを配布する際には以下のような構成になるんじゃないかなぁ?という予測。

MyMod.esp (MODファイル本体)
Strings/MyMod_English.Strings (英語版:名詞等テキストがある場合のみ)
Strings/MyMod_English.dlStrings (英語版:本の文章テキストがある場合のみ)
Strings/MyMod_English.ilStrings (英語版:字幕の文章テキストがある場合のみ)

で、↑の配布の場合「言語設定が ENGLISH の環境でないと動作しない」と思われます。
例えば日本語版(言語設定が JAPANESE)の環境に対応させるには…

Strings/MyMod_Japanese.Strings
Strings/MyMod_Japanese.dlStrings
Strings/MyMod_Japanese.ilStrings

こういうファイル名の.Stringsファイルを配布しなければならない…はず。

逆に言えば(文字が正しく表示されるか否かは無視して)ユーザー側で
.Stringsファイルを自環境の言語設定にリネームしちゃえば動く気がします。
この手法は「英語exe+日本語ファイル」の実用においても確立されていますね。

さらに上記を踏まえて考えると、MODの翻訳ファイル管理がすごく楽になると思われます。
オブリの場合は.esm/.espファイル自体を改変する必要があったので
差分パッチやインポートファイルなどの状態で配布する必要がありましたが、
Skyrimの場合は.esm/.espファイルにテキスト情報が含まれていないので
「.Stringsファイルだけ」を配布することでテキスト翻訳に対応できると思われます。

この辺りの考え方は、Windowsアプリケーションでexeファイル内にはテキスト情報を含めず
各国語版DLLファイルにテキスト情報を格納するという手法に似通っているかもしれません。





★検証実験★

推測が正しいのかを以下の実験によって検証してみました。

1)「My Games\Skyrim\Skyrim.ini」の言語設定を以下のように変更。

[General]
sLanguage=BASILICO

※この状態に書き換えてからファイルを「読み取り専用」にしました
 そうしないとランチャーから起動する際に「ENGLISH」に書き戻されてしまう為

2).Stringsファイルを独自に用意

Strings/Skyrim_Basilico.Strings
Strings/Skyrim_Basilico.dlStrings
Strings/Skyrim_Basilico.ilStrings

3)Translateファイルを独自に用意

Interface/Translate_BASILICO.txt

★検証結果★

Translate_BASILICO.txt … 成功(Skyrimシステム自体のテキスト)
20111222_00.jpg

Skyrim_Basilico.strings … 成功(名詞等のテキスト)
20111222_01.jpg

Skyrim_Basilico.dlStrings … 成功(本の文章テキスト)
20111222_02.jpg

Skyrim_Basilico.ilStrings … 成功(字幕の文章テキスト)
20111222_03a.jpg





最後に疑問がひとつ。
例えば「MyMod.esm」と「MyMod.esp」という「同じファイル名の.esmと.esp」があった場合
扱う.Stringsファイルが同じになってしまいますが、その場合どうなるのだろうか…?

※「なんか違くね?」や「こうだと思うよ」などのご助言がありましたらコメントください m(_ _)m
スポンサーサイト

コメント

非公開コメント

検証?してみました

ObMODありがたく使用させてもらってます。
何度再構成してもMCS+MCS extensionは外せませんw

CKがまだなので、まだまだ謎の多いSkyrimですが、
興味深い考察だったので、少し検証してみました。
----------------------------------------------
【検証に使用したMOD】
Follower Tweaks - Several Flavors
http://www.skyrimnexus.com/downloads/file.php?id=3111
※コンパニオンの不死化、装備の自由化等
※効果確認済み
【環境】
英語exe+日本語ファイル
----------------------------------------------
【実験①】
Follower Tweaks
・Follower Tweaks - WFC - E - LCR.esp
※コンパニオンの名前が英語になる。
○そのため、日本語STRINGSから該当名詞差分のみのSTRINGSを用意し、
・Follower Tweaks - WFC - E - LCR_English.STRINGS
 を作成。
【結果】
変化なし。
----------------------------------------------
【実験②】
各ファイル名の空白を削除してみた。
・FollowerTweaks-WFC-E-LCR.esp
・FollowerTweaks-WFC-E-LCR_English.STRINGS
【結果】
変化なし。
----------------------------------------------
【実験③】
各ファイル名を短くしてみた。
・test.esp
・test_English.STRINGS
【結果】
変化なし。
----------------------------------------------
なんとなく思いつきで実験したので、
パッケージの作成失敗や、的外れなことをやっている可能性もありますが…

また、今回使用したMODに関しては、[Strings]フォルダ(及びファイル)がないにも関わらず、
該当コンパニオンの名前が英語名詞になったことから、
旧作同様esp自体にもテキストが含まれている可能性が強いかと思われます。
あまり時間がとれず、CKなしの今このMODがどのように作られているのかわかりませんが、
何かの参考になればと思いコメントさせていただきました。長文失礼しました。

コメントありがとうございます

1ファンさん、拙作オブリ用MODを使ってくださってありがとうございます。
CKのリリースが待ち遠しいですね~ (´ω`*)

検証ありがとうございます、私の方でも該当MODをダウンロードしてみました。
確かにMODの中にコンパニオンの名前が埋め込まれている…!
MODの作りとして「テキスト埋め込み型」と「テキスト外部型(.Strings使用型)」が
あるんですかね…。
とりあえず記事の方に追記しておこうと思います、情報ありがとうございました!

No title

Stringリソースに関してですがSkyrimでTES4ヘッダー部分の拡張が行われていて、esp/esmファイルの8byte目の5bit目が1だとStringリソースを使用するようになっています。(skyrim.esmだと0x81)。ここが0 (0x01とか)だと従来通りesp/esmに文字列埋め込みになるもようです。
UESPでFile Formatで検索をかけた先のリンクをたどるとこの辺りの情報が出てきます。

コメントありがとうございます

TES5Exportの人さん(!?)コメントありがとうございます。
なるほど、任意に設定出来るようになっていたんですね。
これで謎が解けました、本記事の方に加筆しておきたいと思います。
UESPにはもう詳細があるんですね、ちゃんと見てみます!
プロフィール

r_basilico

バジリコ風味 (r_basilico)
Twitter: r_basilico
Steam: r_basilico
艦これ: 嫁艦は祥鳳

リンク
最新記事
最新コメント
月別アーカイブ
カテゴリ
検索フォーム