スカイリムで SkyUI を導入すると、Mod Configuration Menu (MCM) という機能が追加されます。他のMODの設定をゲーム内で変更したり、情報を表示したりするためのものです。
今回から、そのMCMを実装する方法を複数回に分けて書いていきたいと思います。自作MODにMCMを付けたいという方や、既存の Papyrus スクリプトを改変して使いたいという方が対象です。説明はすべて Anniversary Edition (AE) で行いますが、Special Edition (SE) 1.5.97 でもやることはほぼ同じです。
第1回目は、Papyrus スクリプトを扱うための基本的な環境作りを行います。MCMに限らず、これから Papyrus を始めようという方にも参考になるかもしれません。
1. Creation Kit (CK) のインストール
1-1. Steam からCKをインストールする
Steam で「Skyrim Special Edition: Creation Kit」を検索してインストールします。
1-2. CKを起動する
インストールしたCKは、Steam の画面左上にあるドロップダウンの中の「ソフトウェア」にあります。ここから一度起動すると、必要なソフトウェアのチェックが行われます。CKの本体ファイルは “common/Skyrim Special Edition/CreationKit.exe” です。
1-3. CreationKit.ini を編集する
“common/Skyrim Special Edition/CreationKit.ini” を開き、[General] 内に以下の2行を追加します。マスターファイルを複数指定できるようにする設定です。
bAllowMultipleMasterFiles=1
bAllowMultipleMasterLoads=1
2. バニラのスクリプトソースの展開
2-1. Scripts.zip を展開する
Papyrus スクリプトは、実際に実行される pex というファイルと、そのソースファイルである psc とで構成されています。psc は人が読んで編集するためのもので、それをコンパイルという作業で pex に変換してコンピュータが実行できる形式にするわけです。
SE以降は、拡張子が pex のファイルは “common/Skyrim Special Edition/Data/Scripts” フォルダ、psc のファイルは “common/Skyrim Special Edition/Data/Source/Scripts” フォルダに入れられます。
バニラのソースファイルはすべて “Data/Scripts.zip” に圧縮されています。これを 7-Zip で開き、中にあるすべてのファイルを ”Data/Source/Scripts” 内に解凍してください。これらのスクリプトソースがないと、CKでスクリプトを扱うことができません。
2-2. AEコンテンツのソースを展開する
AEの追加コンテンツは、pex が各個別のBSAに同梱されています。ソースファイルである psc は提供されていないようですので、BSAから pex を抽出して psc に変換する作業が必要になります。もしAEのコンテンツに手をつけないのであれば、この作業は不要ですので飛ばしてください。
作業には以下の2つのツールが必要です。ダウンロードしたら任意の場所に解凍しておいてください。
まず BSA Browser を使って “Data” フォルダ内にあるAEのBSAを開きます。AEのコンテンツはファイル名が「cc」から始まり、BSAは74個あります。それらをすべて選択して一気に読み込みます。
開いたら、左側のリストを展開して「scripts」の項目を選択し、「Extract forders」を押します。ゲームフォルダとは無関係な場所に任意のフォルダを作って指定すると、その中に “Scripts” フォルダが作成され、中に pex が抽出されます。この作業を他のBSAに対しても行い、同じフォルダの中にすべてのBSAの pex を抽出していきます。
pex が入った “Scripts” フォルダを “Champollion.exe” のあるフォルダ内に移動します。そして、同じ階層に下記のコードを書いたバッチファイルを作成します。
@echo off
cd /d %~dp0
for %%i in (Scripts\*.pex) do (Champollion.exe %%i -p Source\Scripts)
あとはこのバッチファイルを実行すれば、同じ階層に “Source/Scripts” フォルダが作成され、中に逆コンパイルされた psc が生成されます。これをゲームフォルダの “Data/Source/Scripts” にコピーすればOKです。
3. Vortex とSKSEのインストール
3-1. MOD管理ツールに Vortex を使う
MOD管理ツールとしては一般にMO2と Vortex が主流かと思います。スクリプトのことだけを考えたとき、私がお勧めするのは Vortex です。
Vortex ではファイルの実体がゲームフォルダに置かれます。そのおかげで、CKを起動せずにスクリプトを編集・コンパイルすることができますし、BSA作成時にスクリプトソースを同梱する作業が簡単です。MO2でもスクリプトを扱うことはできますが、ツール起動時にメモリにファイルを展開するという仕様上、それらの作業が大変になります。ただし、MOD制作を行わないユーザーにはMO2をお勧めしておきます。Loose files の上書きを画面左側のリストでさっと入れ替えることができるのは、MO2の大きな利点です。
3-2. SKSEをダウンロードおよびインストールする
すでにSKSEは導入済みかもしれませんが、スクリプトソースを使いますので下記のサイトからダウンロードします。AE、SE、VR、LE用でそれぞれバージョンが異なりますので、ご自身の環境に合うものを使ってください。
インストールは “common/Skyrim Special Edition” フォルダに中身を解凍するだけです。Vortex で導入すれば自動的にやってくれますので任せてしまえばよいでしょう。普通にインストールするとスクリプトソースが無効なフォルダに展開されるのですが、これは無視します。
3-3. SKSEのスクリプトソースを手動で入れる
SKSEのスクリプトソースを正しい場所にコピーしていきます。7-Zip を使い、ダウンロードしたSKSEの 7z から “Data/scripts/Source” をどこかに解凍しておきます。中身は数十個の psc ファイル群です。そして、ゲームフォルダの “Data/Source/Scripts” にそれらの psc ファイル群を上書きコピーします。バニラのスクリプトを上書きしますが、SKSEのスクリプトでもバニラの関数はそのまま使えますので問題ありません。
SKSEはSE以降もLE時代のフォルダ構造を踏襲しています。SE以降は psc ファイルを “Data/Source/Scripts” フォルダに入れないとCKで認識しないため、上記の作業が必要となります。SKSEがアップデートされても、原則としてこれらの psc ファイル群を入れ替える必要はありません。書かれているのは関数定義だけで内容はほぼ変わらないからです。もし不安ならアップデートのたびに上書きしてください。
また、MODのように “Data/Source/Scripts” に psc ファイル群を入れた 7z を作って Vortex やMO2で出し入れしようとしても、これはうまくいきません。このフォルダのみで構成されている 7z は問答無用で “Data/Scripts” フォルダに展開されてしまいますので、このコピー作業は手動で行ってください。
4. SkyUI および SkyUI SDK のインストール
4-1. SkyUI をインストールする
SkyUI もすでに導入済みかもしれませんが一応ご紹介しておきます。Vortex から通常通り導入すればOKです。
4-2. SkyUI SDK をインストールする
SDKとは、Software Development Kit の略でソフトウェア開発キットのことです。SkyUI には入っていないスクリプトソース等が含まれていて、これがないとMCMのスクリプトを扱うことができません。下記のページから「SkyUI SDK 5.1 (August 18, 2015)」をダウンロードします。
ダウンロードしたファイルはそのままではAEで使えませんので、まず 7-Zip を使って解凍してください。そして中身を下図のように入れ替えてから再圧縮します。
Examples フォルダは不要なので消去し、親フォルダとして “Data” を新規作成します。元からあった “Scripts” フォルダを “Data” の中に入れ、さらに “Data/Source/Scripts” フォルダを新規に作成して “Data/Scripts/Source” フォルダにあった2つの psc を移動させています。要はLE仕様の配置からSE仕様への変更です。
これを 7z 形式に再圧縮したら、Vortex で他のMODと同じように導入します。SDKはMCMを作成するとき以外は外した方が良いので、通常プレイに戻るときに Vortex から無効にします。
5. スクリプトを編集するためのエディタ
5-1. サクラエディタをインストールする
スクリプトの編集とコンパイルはCKでもできます。しかし、色分けや自動補完といった便利な機能を使うために、エディタを使うことをお勧めします。もし使い慣れたエディタが Papyrus に対応していればそれで構いません。Visual Studio Code や Sublime Text は対応しているようです。私は昔からサクラエディタを使っていますのでご紹介しておきます。
「インストーラ、パッケージダウンロード」をクリックし、ダウンロードページに行きます。
2021年12月時点の最新版は v2.4.1 です。「sakura-tag-v2.4.1-build2849-ee8234f-Win32-Release-Installer.zip」をダウンロードし、7-Zip で解凍してから中に入っている exe を実行します。
5-2. Papyrus に対応させる
サクラエディタを Papyrus に対応させる辞書ファイルをダウンロードして導入します。導入方法についてはリンク先をお読みください。
5-3. サクラエディタからスクリプトをコンパイルできるようにする
スクリプトのコンパイルについては実際に行う段階でまた書いていきます。ここでは、編集した psc をサクラエディタから直接コンパイルできるように準備します。この方法を用いると、CKを起動せずにコンパイルできるのでちょっとした変更を行うのが楽になります。
まず “common/Skyrim Special Edition/Papyrus Compiler” フォルダ内に、下記のコードを書いたバッチファイルを “ScriptCompile_AE.bat” という名前で作成します。
cd /d %~dp0
"PapyrusCompiler.exe" %1 -f="TESV_Papyrus_Flags.flg" -i="..\Data\Source\Scripts" -o="..\Data\Scripts"
コンパイルするときは、psc を開いた状態にして「Ctrl + F5」を押し、ファイル名を指定して実行 というダイアログで下記のコードを実行します。すると “Data/Scripts” 内にコンパイルされた pex が作成されます。
"$e..\..\..\Papyrus Compiler\ScriptCompile_AE.bat" "$F"
バッチファイルがやっていることは、”PapyrusCompiler.exe” にオプション引数をつけて psc を渡すという作業です。そのバッチファイルをサクラエディタから実行しています。上記のコードの内容は理解しなくても大丈夫ですが、一応ヘルプ情報の一部を翻訳したものを載せておきます。
PapyrusCompiler.exe <object or folder> [<arguments>]
object コンパイルするファイルを指定
folder コンパイルするフォルダを指定
arguments
-output|o=<string> 出力フォルダを指定
-import|i=<string> インポートフォルダを指定
-flags|f=<string> ユーザー定義フラグに使用するファイルを指定
もう一度言いますが、スクリプトの編集とコンパイルはCKでもできます。エディタの使い方がよくわからなければ、とりあえずCKだけで始めても構いません。
【MCM実装 シリーズ】
1. Creation Kit で Papyrus を扱えるようにする
2. MCMに登録するための基本構造を作る
3. 初期画面とページの枠組みを作る
4. ページ内の項目を作る
5. スクリプトMODを配布形式にまとめる
6. MCM設定を自動で保存する