チュートリアル

スカイリムとmodの仕組み

modの仕組み

modを導入する前にスカイリムとmodの仕組みを解説します。ざっくりとでも理解しておくと、mod管理やトラブル対処に役に立つでしょう。ここでは作業はありません。

スカイリムのフォルダ構造

まずはスカイリム本体のフォルダ構造を解説します。

スカイリムのフォルダは「Steam\SteamApps\common\Skyrim(SE版はSkyrim Special Edition)」にあります。このフォルダ内にランチャーと本体が入ってます。

スカイリムフォルダの構造

スカイリムのフォルダ内にあるDataフォルダはスカイリムに使うデータが入ってます。一部を除いてほとんどのmodはこのDataフォルダに導入します。

プラグインとアーカイブ

これからDataフォルダ内のデータを見ていきます。

まずはDataフォルダを開いてみましょう。中身を見てみるとSkyrim.esmのようなプラグインファイル(esm,esp,esl)」と、Skyrim – ***.bsaのようなアーカイブファイル(bsa)」という2種類のファイルがあります。

プラグインファイル
プラグインファイル」はいわば設定のデータベースです。キャラクターのステータス、装備の性能、種族、クエスト、地形、天候、あらゆる設定が含まれます。
アーカイブファイル
アーカイブファイル」は音、メッシュ、テクスチャ、アニメーションなどの「素材データ(アセット)」を1つにまとめたものです。たとえば音の素材は「Skyrim – Sounds.bsa」に入ってます。
この「プラグイン」と「素材」がスカイリムのデータの基本構成になります

プラグインでの素材割り当て

素材はそのままでは使えません。プラグインに素材を登録し、そしてその素材を必要とする各々に割り当てる必要があります。

プラグインの素材割り当て
たとえば、燃える音と炎のエフェクトの素材があるとします。これらの素材をプラグインに登録し、焚き火や炎魔法などに割り当てます。

バニラのプラグイン

バニラ(modの入ってないまっさらな状態)では以下のプラグインしかありません。

Skyrim.esm – スカイリムの大元となるファイル
Update.esm – アップデートで修正された内容
Dawnguard.esm – DLC
HearthFires.esm – DLC
Dragonborn.esm – DLC

これらesmファイルはマスターファイルとも呼ばれます。他のプラグインより先に読み込まれ、原則的に中身は変更できません。

では、どうやって設定を変えるのでしょうか?それは別のプラグインで設定を「上書き」するのです。

Skyrim.esmを上書きする
Skyrim.esmはすべてのプラグインのベースです。これをベースに設定を「上書き」「追加」していく仕組みになっています。たとえばUpdate.esmは公式のアップデートで修正された項目を持っていて、Skyrim.esmの修正前の項目を上書きしています。

modのプラグインもSkyrim.esmの既存のデータを「上書き」して変更します。バニラにはない、新しいアイテムなどを「追加」することもできます。

プラグインはスカイリムを「上書き」「追加」していく

プラグイン形式「esp」

バニラのプラグインはマスターファイルしかありませんが、modの多くは「esp」というプラグイン形式を使います。基本はesmと変わらず、スカイリムのデータを「上書き」か「追加」していきます。

esmと違うのは

  • 中身の変更が可能
  • プラグインの読み込み順(ロードオーダー)を自由に決定可能

modでは自由にプラグインの読み込み順が変更可能なので、その順序が大事になってきます。

ロードオーダー

ロードオーダーとは「プラグインの読み込み順序」のことです。

プラグイン1つにつき、16進数2ケタのロードオーダーIDが割り当てられます。このIDはロードオーダーの位置によって変わります。

ロードオーダーIDの範囲は00~FEまでです。そのため最大のプラグイン数は255個です。(SE版では後述するeslが使えます。これは通常のプラグインとは別枠で最大4096個のeslプラグインが扱えます)

ロードオーダーはあとのほうが優先
00から順に01,02…と読み込んでいきます。つまり、読み込み順があとのほうが優先されます。

このロードオーダーの変更と管理がmodマネージャーの主要な機能のひとつです。

modの競合

mod間で「素材」や「項目」が被れば、どれかが優先されます。これが「競合」です。

実例で見ていきましょう。鉄の剣のダメージを2倍にするプラグイン「IronSwordDamagex2.esp」、鉄の剣の価格を2倍にする「IronSwordValuex2.esp」があったとします。以下の画像のように配置しました。

ロードオーダーの優先順序

Skyrim.esmにある元々の「鉄の剣」はダメージ7、価格25です。ふたつのmodは同じ「鉄の剣」を編集しているため、どちらかの設定が優先されます。画像では価格2倍のプラグインが、ダメージ2倍のプラグインより「後」にくるので優先されます。そのため、鉄の剣の価格は50になりますが、ダメージは上書きされて元の7に戻ってしまいます。

ではロードオーダーの順序を逆にしてみるとどうでしょうか?

あとに置かれたほうが優先されるのでダメージは2倍の14になりますが、価格は25に戻ってしまいます。

鉄の剣の価格を50、ダメージを14にする場合は、どちらかにマージ(統合)するか、パッチを作る必要があります。競合の仕組みの解説なので、マージの仕方は別の機会に解説します。

同じオブジェクトを編集した場合、どれを優先するかはロードオーダーで決まる

ルースファイルとアーカイブファイル

アーカイブファイル(bsa)にパックされていない素材はルースファイル(loose=梱包されてない)と呼ばれています。bsaを展開するとルースファイルと同じフォルダ構成になります。つまり、パックしているか、パックしていないかの違いなのです。

ルースファイルはbsaより優先的に読み込まれます。

ルースファイルの優先

もうひとつアーカイブファイルの特徴として、必ずプラグインとセットで使います。たとえばDLCのHearthFires.esmにはHearthFires.bsaとセットになっています。これはアーカイブファイル同士の優先順がロードオーダーに影響されるためです。

フォルダ構造

ルースファイルにせよ、アーカイブファイルにせよ、素材は必ずその種類ごとのフォルダに配置します。

素材ごとの配置フォルダ例
フォルダ名素材のカテゴリ
interfaceインターフェイスに関するファイル
meshesメッシュ、エフェクト、モーション
texturesテクスチャ
scriptsスクリプト
soundサウンド

素材だけのmodもある

ルースファイルの素材だけで提供されるmodがあります。たとえば、顔を美化するテクスチャmodがそれに当たります。これはバニラの顔テクスチャを置き換える(上書き)だけなので、プラグインは必要ありません。

顔テクスチャのパス例
Skyrim – Texture.bsaに同様のファイルが存在します。

FormID

ゲームを構成しているプレイヤー、NPC、炎の魔法、鉄の剣、山賊の所属グループ設定、各々のクエスト、セル(フィールドの一区画単位)、雨の天候、雷の音、すべてがオブジェクトであり、スカイリムではこれらオブジェクトをFormと呼びます。

FormにはForm IDが割り当てられます。Form IDは8ケタの16進数で00000000~FFFFFFFF(最大約1兆995億個)まで割り当てることができます。このIDの先頭2ケタはロードオーダーIDに割り当てられます。

ロードオーダーIDとFormID
ロードオーダーIDはロードオーダーの位置によって決まります。Skyrim.esmの場合はロードオーダーは常に00番なので00 000000、Update.esmなら01 000000になる。

残りの6ケタは各プラグインのFormそれぞれに自動で割り当てられます。

たとえば、鉄の剣のFormIDは「00012EB7」です。Skyrim.esmのデータなので鉄の剣のIDは変わりません。

既存の鉄の剣とは別の種類の「鉄の剣」を追加したらどうなるでしょうか?

ロードオーダー05に「IronSword+.esp」というプラグインがあるとします。そのプラグインで「鉄の剣+」という新しい武器を作った場合、FormIDが新しく割り当てられます。05000D62のようなIDになります。別のFormIDなので「鉄の剣」と「鉄の剣+」は別の武器として扱われます。

新しい鉄の剣を追加

「IronSword+.esp」のロードオーダーを変更した場合、そのロードオーダーに合わせたIDに変わります。ロードオーダーが変わったとしても「鉄の剣+」は参照できなくなったり、失ったりはしません。そのまま保持されます。

まとめ

  • スカイリムのデータやmodは基本的にDataフォルダに入れる
  • スカイリムのデータは「プラグイン」と「素材」でできている
  • 優先順序を決定できる「ロードオーダー」が大事

その他

eslファイルについて

esm,espとも違う第三のプラグイン形式です。このプラグイン形式はSE版のみです。

ひとつのプラグインに割り当てられるFormIDは6ケタで000000~FFFFFF(1677万個)あります。しかし、実際にはそこまでたくさん使いません。それと比較してプラグインの枠、ロードオーダーIDは2ケタで00~FE(255個)しかありません。FormIDはたくさん余るのにプラグインの枠がいっぱいになりやすいのです。

そこで「esl」の登場です。eslはFormID 8ケタのうち最初の2ケタをFEに固定し、次の3ケタを000~FFF(4096個)もローダーIDとして使います。最後の3ケタを800~FFF(2048個)をFormIDに割り当てます。

ESLのFormID

そのためロードオーダーIDとは別に、最大4096個のeslファイルが使えます。

ただし、その仕様上espと違って制限があります。espとの違いは

  • マスターの参照不可=パッチに不向き
  • espよりあとに置けない=NPCや種族などの競合しやすい変更は不向き
  • FormIDの上限が2048個と少ない=大規模modに向かない
  • Creation Kitで編集できない(xEditでは可能)

このような特徴から簡易なmodに向いてます。馬の移動速度上げたり、単純な装備やアイテムの追加だったり。

ロードオーダーIDのFEは空けておく必要があるので、eslを導入するときのプラグイン枠最大数は254個になります。

次の工程

次はmod管理ツールを選びましょう。

mod管理ツールを選ぶ 8/26 記事改定。両ツールの画面追加、仮想化の説明追加。 modの導入にはmod管理ツール(modマネージャー)が必要です。 ...

スカイリムの導入方法に戻る