2015/08/03

ModOrganizerとSublimeText2のための協奏曲

今秋には新作Fallout4の公開を控え、もはや一昔前の名作と言ってもおかしくないくらいの年月が経ってしまったスカイリムですが、まだまだ遊んでみたいModが山のようにあって、いまだにニューゲームを繰り返している進歩のないおばちゃんです。
まあでも、ニューゲームすると、「今回のプレイにはこういうModが欲しいよな…」とか「ここをこんな風に変えてみたらどうかしら…」とか思い始めて、プレイ自体は一向に進まないんですけどね。
Steamで記録されているプレイ時間を見てみると、私はゲーム本体を遊んでいる時間の四倍くらいCKを起動しています。つまり20時間遊ぶために80時間も余計なことしてるわけで……こんなんだから、いつまでたっても遊び足りない気分が抜けないのかもしれません。

さてそんなわけで、今日は私がスカイリムを遊んでいる期間の八割もの時間を費やしている、CKやスクリプトを編集するためのエディタについて、設定や使用上の注意などをまとめておきたいと思います。
Modの導入方法や日本語化の作業などは、今までさんざん繰り返してるせいで少々ブランクが開いたとしても忘れることはないかな、と思うんですが、Modの制作環境の方については、再び構築できる自信がないんですよね。CKはともかく、エディタなんて今までろくに入れ直したことなんてないし。
それに私はMO経由のCKでスクリプトを編集するために、「Advance Papyrus」というものを使っているのですが、あまり使ってる方がいらっしゃらないのか、ググってもろくにヒットしないんですよね。
なのでご紹介がてら、導入手順や設定などを書いておきたいなと思います。
そんなわけで今回は個人の備忘録のような内容になってしまうかと思いますが、どうかご容赦ください。


「SkyrimEditor.ini」の設定について
まずはCKの設定ファイルであるSkyrimフォルダの「SkyrimEditor.ini」について。
「SkyrimEditor.ini」の設定についてはいろんな方がweb上にまとめて下さっていて、私が今更書くようなことでもないんですけど、何かあった時にすぐに復元できるように、今の自分の環境をざっと書いておきたいと思います。
ちなみに私は「SkyrimEditor.ini」をコピーして「SkyrimEditorCustom.ini」という名前のファイルにリネームしたものを編集しています。
(CKは「SkyrimEditor.ini」よりも優先的に「SkyrimEditorCustom.ini」を読み込んでくれます)
動揺すると脊髄反射で「キャッシュの整合性を確認」を押してしまう粗忽者の私は、そちらの方がSteamに設定を上書きされる心配がないので。

弄ってる箇所は、まず[General]の項目です。
[General]
sLanguage=JapaneseSjis
bAllowMultipleMasterLoads=1

sLanguage=JapaneseSjis」の箇所は、私はCK用に文字コードをShift-JISに変換した日本語stringsを使っているので、それを読み込むために追加しています。
このsLanguageで指定する言語名は実在しない言語名でも何でも良いのですが、「Data/Strings」フォルダにその言語名のついたSTRINGSファイルが入っていないとエラーになったり読み込み自体が終わらなかったりしますので注意が必要です。
ユーザーメイドのModで、Strings付きのesmというのはそんなに見かけませんが、もしそういったものをCKで読み込む時は気をつけること。
CKはコミュ障なんじゃないかと思うくらいエラーの原因についてはまったくヒントをくれないのがデフォルトですので、 sLanguageの設定を独自のものにする場合はこの点を覚えておかなければいけません。
(※ちなみにsLanguageの指定が何も無い場合は自動的に「English」となるようです)

bAllowMultipleMasterLoads=1」は複数のマスターファイルを同時に読み込んでModを制作するための設定です。これはまあ、とりあえず最初に設定しておきたい項目ですね。

[Archive]
SResourceArchiveList2=Skyrim - Shaders.bsa, Update.bsa, Dawnguard.bsa, HearthFires.bsa, Dragonborn.bsa
[Archive]の項目では「SResourceArchiveList2」のお尻にDLCのbsaファイルを追加しています。
bsaファイルはCKでは自動では読み込まれないので、DLCの素材を制作リソースとして使用する場合はこのように設定ファイルに書き加えておかなければなりません。
そういえば先日、私はSkyUIを5.0にアプデしたのですが、それをついうっかり配布時のbsaのまんま突っ込んでおりまして……そのおかげで見事に落とし穴にハマってしまいました。
実は先日ニューゲームした折に、私は「iNeed」も一年ぶりに更新しまして、それで自作のHUDメーターを付けようとしてたんですが、CK上でiNeedのクエストのスクリプトにプロパティを追加しようとしたら、「Errors encounterd while attempting to reload the script」というエラーが出て、プロパティの情報自体を全然読み込めないんですよね。
そのエラーは今までの例からすると、スクリプト(pexファイル)が所定の場所に入っていない(もしくはコンパイルに失敗している)時に出るものなんですが、iNeedのスクリプトはちゃんと「Data/Scripts」に入っているのに、そのエラーばかりが繰り返し出るのです。
まあ、冷静に考えたらHUDウィジェット関係の改造をしようとしてたんだから、SkyUIが怪しいということに真っ先に気づくべきだったんですが、CKは馬鹿の一つ覚えのように「スクリプトをリロードできません」と繰り返すばかりなので、いったい何が悪いのかさっぱりわかんなかったんですよね。

ちなみにMCMやHUDウィジェットといったSkyUIの機能を使っているModは、スクリプトをコンパイルする時には必ず、拡張元のSkyUIのスクリプトが必要になります。
そしてCK上でスクリプトのプロパティを設定する時にも、CKはそのスクリプト単体だけでなく、関連するスクリプト(しかもpexファイルの方)を全部読みにいくんですね。
だから関連Modのリソースがbsaファイルの中に入ったまんまの状態だと、CKはスクリプトを読み込むことができないというエラーになるのです。
特に私は今回、SkyUIのスクリプトのソースファイルの方は、旧バージョンのものがインポート元のフォルダに残っているという状態で、コンパイル時につまずくことがなかったので、アプデしたSkyUIのpexファイルがbsaの中に入ったまんまになっていることに気づかず、原因を究明するのに苦戦してしまいました。
皆様もどうかお気をつけ下さい。

[MESSAGES]
bBlockMessageBoxes=1
次はMESSAGESの項目の「bBlockMessageBoxes」の設定を1に変更。
これはModを最初に読み込む時に出てくるウザいポップアップ広告みたいなWarningメッセージ(キャンセルボタンを押してすっとばせる奴)を非表示にするための設定です。

[Localization]
iExtendedTopicLength=161
bAllowExtendedText=1
最後に、これはTopicの文字カウント数を増やすためのものです。
ダイアログでそんなに長いセリフを入力することがなければ要らないです。




「Advance Papyrus」の導入方法と設定について
私は日頃「Mod Organizer」を使ってスカイリムをプレイしてるんですが、Modを作成する場合も同じようにMOからCKを起動して弄っています。
MO経由でCKを使うと、Dataフォルダ内を汚すことなく、作成中のファイルをMOの「overwrite」フォルダに置いておけるので、自分のModデータを管理するのにすごく便利なんですよね。
特にスクリプトファイルは、自分の書いたものをバニラのソースとは別に置いておけるのは非常に有難いです。なにしろバニラのスクリプトファイルは一万三千個くらいありますから。
自分のスクリプトを「Data/Scripts/source」なんかに一緒に入れた日には、あっという間に収拾がつかなくなって、衝動的に「キャッシュの整合性を確認」を押すハメになってしまいます。
まあ、スクリプトに関しては、今年四月のアプデでスクリプトソースが「Script.rar」として配信されるようになったので、わざわざダウンロードし直さなくても簡単に元の状態に戻せるようになりましたが。


しかしそんな神ツールのMOにも弱点というか困ったところがあって……MO経由で起動したCKではなんとスクリプトをコンパイルすることができないのです。
スクリプトを多用するからこそMOを使い始めたのに、肝心のスクリプトがコンパイルできないなんて本末転倒というか……皮肉なものです。
そういえばこちらの記事を拝見して初めて知ったのですが、どうやらMO経由のCKでスクリプトがコンパイルできないのは、スクリプトのコンパイラが64bitのプログラムだから……だそうです。
確かにMOからは32bitのアプリケーションじゃないと起動できませんが、まさかコンパイラが64bitだったとは……そんな理由でコンパイルできなかったとは思いも寄りませんでした。
ちなみに上記の記事では「PapyrusCompiler.exe」を32bitに変換してコンパイルするという方法を取っていらっしゃいましたが、私は「Advance Papyrus」というPapyrusスクリプトのコンパイラを拡張するツールを導入してMO経由のCKでもコンパイルできるようにしています。
「Advance Papyrus」のしくみ  
「Advanced Papyrus」というのは、オリジナルのPapyrusコンパイラの代わりに自分が「PapyrusCompiler.exe」として一旦データを受け取って、コンパイルの作業そのものはオリジナルの「PapyrusCompiler.exe」にやらせる…という、仲介業者のような役目を果たすプログラムです。
MO経由では起動できないコンパイラでも、「Advanced Papyrus」を挟むことでコンパイルできるようになるというわけです。ですからこのツールを導入する時は、「Advanced Papyrus.exe」を「PapyrusCompiler.exe」という名前にリネームして、オリジナルのPapyrusコンパイラとして偽装します。
また、このプログラムは元のオリジナルのコンパイラを「PapyrusCompiler - Original.exe」という名前で探しに行きますので、オリジナルのコンパイラは必ずその名前に変更しておく必要があります。
[インストールの手順]
1. 「Advance Papyrus」をダウンロードし、「Advanced Papyrus.exe」を「Skyrim/Papyrus Compiler」フォルダにコピーする。
2. 「Skyrim/Papyrus Compiler」フォルダにある、オリジナルの「PapyrusCompiler.exe」を「PapyrusCompiler - Original.exe」にリネームする。
3. 1でコピーした「Advanced Papyrus.exe」を「PapyrusCompiler.exe」にリネームする。
4. 「Advanced Papyrus.ini」を用意し、「Skyrim/Papyrus Compiler」フォルダに入れる。
この「Advance Papyrus」の便利なところは、ただMO経由のCKからのコンパイルを可能にするだけでなく、コンパイルする際に「Advanced Papyrus.ini」という独自の設定ファイルを読み込んで、パラメーター付きでコンパイラを実行してくれるところです。
スクリプトがコンパイルされる時、コンパイラはそのスクリプトファイル単体だけでなく、関連するすべてのスクリプトファイルをチェックしに行きますが、CKのデフォルトの状態ではその関連ファイルはすべて「Data/Scripts/souce」に入れておかなくてはならない設定になっています。
しかし「Advance Papyrus.ini」でimportのフォルダのパスを指定してからコンパイラを実行すると、スクリプトのインポート元のフォルダを変更できたり、複数のフォルダを指定したりできるのです。
MOを使っている場合はModのデータはDataフォルダに直に入れたりはしないのが基本ですので、この複数フォルダをインポート元にしてコンパイラを実行できるという機能はとても重要です。

ちなみに私が現在使用している「Advanced Papyrus.ini」のデフォルト設定はこんな感じになっています。
[Skyrim]
scripts=D:\Program Files (x86)\Steam\steamapps\common\Skyrim\Data\Scripts\Source
output=D:\MO\overwrite\Scripts
flags=TESV_Papyrus_Flags.flg
[Import]
path0=D:\MO\overwrite\scripts\source
path1=D:\MO\mods\SexLab Framework v1.59c\scripts\source
path2=D:\MO\mods\FNIS v5.5\scripts\source
path3=D:\MO\mods\SkyUI v5.0\scripts\source
path4=D:\MO\mods\SKSE v1.7.3\scripts\Source
path5=D:\Program Files (x86)\Steam\steamapps\common\Skyrim\Data\Scripts\Source\Dragonborn
path6=D:\Program Files (x86)\Steam\steamapps\common\Skyrim\Data\Scripts\Source\Hearthfire
path7=D:\Program Files (x86)\Steam\steamapps\common\Skyrim\Data\Scripts\Source\Dawnguard
[Import]のカテゴリ以下で、コンパイラが関連するスクリプトを検索しにいくフォルダ……いわゆる「クラスパス」みたいな場所の指定ができます。私は上記の設定を基本にして、関連するModのスクリプトが他にある場合には、そのModをインストールしたフォルダをその都度追加しています。
特にエロ系のModは、SexLab様を始めzazだのDeathAlternativeだのFNISだの、関連するスクリプトがはんぱなく多いものですが、それをModをインストールした場所においたまま、パスを追加するだけで参照できるのはすごく便利です。
ひとつふたつだったら、自分の作業フォルダに入れてもいいのですが、どのスクリプトに手を加えたのか時間が経つとわからなくなってしまいますので、できれば「overwrite/Scripts/source」フォルダは自分の作成(あるいは改造)したスクリプトだけにしておきたいものです。

上記の記述を見てわかるように、インポート元に複数のフォルダを指定する場合は、path0、path1、path2……と順番に数字を振って指定するのですが、コンパイラは数字の小さい順からスクリプトファイルを探しにいき、一番最初に見つけたものを採用してコンパイル時に参照します。
つまり同じファイル名のスクリプトが、path0の指定のフォルダと、path1に指定されてるフォルダの両方に存在していたら、数字の小さいpath0のフォルダにあるスクリプトの方が使用されるということです。
ですので、この指定は優先度の高いフォルダから順に記述する必要があります。
もちろん作業フォルダ、自分のスクリプトの置き場所となるMOのフォルダ以下の「overwrite/Scripts/source」は、最優先の「path0」に指定します。
あとは順に使用する関連Modのソースを指定していって……SKSEやDLCのスクリプトなどは基本のものですので最後の方に書くのが良いかと思われます。
「Adbance Papyrus」経由でコンパイルすると、下線のようなメッセージが出ます。
この表示が出ていれば、「Adbance Papyrus.ini」の設定が効いています。
(その証拠にCK上でもSexLab様の関数がエラーにならずにコンパイルできている)
ちなみにこのiniの設定は、CKに付属のエディタからコンパイルする時だけでなく、他のエディタなどからコンパイラを呼んで起動する場合でも有効になります。
importの複数フォルダ指定はオリジナルの「PapyrusCompiler.exe」でも可能っちゃ可能なんですが、「Advanced Papyrus」ではその指定をbatファイルなどに書いたりする必要なく、iniファイルで一元管理できるのが個人的にポイント高いなあと思っています。
iniファイル自体の書式も見やすくて、編集もしやすいですしね。


説明の順番が前後してしまいましたが、「Advanced Papyrus.ini」の[Skyrim] のカテゴリでは、自分の環境に合わせた基本設定を行います。
「scripts」はコンパイラが最後に関連コードを探しにいくスクリプトのベースコードがある場所です。
通常はバニラのスクリプトソースが揃ってる場所……スカイリムをインストールした「Data/Scripts/Source」を指定します。「Script.rar」をどこか別の場所に解凍しているのなら、そちらへ。

「output」は、コンパイル後のスクリプト(pexファイル)が書き出される場所です。
MOを使っている場合はMOのフォルダ内の「overwrite/Scripts」を設定します。
また「flags」で指定している「TESV_Papyrus_Flags.flg」は、「scripts」で指定した場所に必ず入っていなくてはなりません。この「TESV_Papyrus_Flags.flg」というファイルはスクリプトに「hidden」や「Conditional」といったフラグをつける際に使用されるものらしいのですが、私には詳細はようわかりません。
このファイルは、デフォルトでは「Data/Scripts/Source」の中に他のバニラのスクリプトと一緒に入っているものですので、自分で移動したり削除したりしてなければそこにある筈です。
もちろん「Script.rar」をどこか別の場所に解凍しているのなら、そちらに入ってます。


SublimeText2の導入方法と設定について
私はスクリプトを組む際に「SublimeText2」というエディタを愛用しています。
以前、このエディタの導入方法については記事にまとめたことがあるのですが、MOから起動したCK経由でSublimeText2を使うためには、64bit版ではなく、32bit版の「SublimeText」をインストールする必要があります。
32bit版のSublimeText2でも、インストール方法やパッケージの導入方法などは64bit版と同じです。
まず「Package Control」をインストールし、「Papyrus」「ConvertToUTF8」「IMESupport」といった主要なパッケージを導入して基本環境を準備します。(詳しくはこちらの記事を参照ください)

私はSKSEやPapyrusUtilなどの関数をよく使うので、それらの関数がわかりやすくシンタックスハイライトされるように、GitHubの「SublimePapyrus」のリポジトリから最新版のデータを入手して 自分でSublimeTextのPackagesフォルダにデータを追加しています。
こちらはSKSE、SkyUI、FISS、Jcontainers、UIExtensions、NetImmers Ovveride、PapyrusUtilなどなど、有名どころのライブラリをことごとく網羅している追加のシンタックス集のようなものです。
「SublimePapyrus」はリリース版のデータもありますが、そちらはライブラリごとにまとまったパッケージになっていて使いづらいので、私は直接ソースの方から使うものだけ選択して入れてます。
ブラウザから最新ソースをダウンロードする場合は、右下の「Download ZIP」ボタンを押します。
「Core」フォルダの中には言語の定義ファイルなどが入ってますんで、このフォルダの中身をSublimeTextの「Packages/Papyrus」フォルダに上書きしてやると、SKSEの最新版の関数やSexLab様のPapyrusUtil系の関数までちゃんと認識されて文字色が変わるようになります。
(※SublimeTextにインストールされたパッケージのデータは、Win7のデフォルトでは「C:\Users\ユーザー名\AppData\Roaming\Sublime Text 2\Packages」に入ります。Papyrus用のパッケージを導入したら、そこに「Papyrus」フォルダが出来ている筈ですので、そこに追加のファイルを入れます。
また、たまにですが、ファイルを追加しただけではシンタックスの定義が更新されないことがあります。
その場合は「Papyrus.tmLanguage」を一度エディタで開いて保存しなおすと認識してくれるようです)

また「Libraries」フォルダには各ライブラリの関数のスニペットが大量に揃っています。
これも「Packages/Papyrus」フォルダ内に入れれば、Papyrusスクリプトを編集してる最中に使えるようになりますので、よく使うものを導入すると作業がとてもはかどります。
ちなみにスニペットというのはよく使うコードなどを短縮入力するための機能です。
たとえば「dpc」(DisablePlayerControlsの略)と入力して変換のタブキーを押すと、
……というような長ったらしい関数の引数が一気に自動入力されたりします。
関数の詳細をわざわざCK Wikiで調べたりしなくてもよいので楽チン…なのですが、個人的にスニペットは自分がよく使う関数だけを選択して追加するのがよいと思います。
使わない関数が変換の候補に出てくるとジャマなだけなので。

スニペットのトリガーとなる単語(変換前の単語)は、大文字小文字が厳密に合っていないと変換されませんので、よく使うスニペットは自分でsublime-snippetファイルを開いて、入力しやすい単語に編集しなおしておくのがおすすめです。
たとえば先程の「DisablePlayerControls」のスニペットは、「Game.DisablePlayerControls.sublime-snippet」というファイルで設定されてるのですが、中身を開くとこんな感じになっています。
デフォルトではトリガーは「DisablePlayerControls」になってたかと思います。
「<tagTrigger>」というタグで囲まれた単語が変換前のワードになりますので、自分で覚えやすいと思うものに変更します。
私は関数名だけでなく、よく使うスクリプト回しや構文もスニペットに全部登録していて、自分の頭ではちっとも覚えていないので、自力では一行もスクリプトを書くことができません。
スニペットのバックアップデータをしっかり取っておかないと……です。

前述したとおり、Sublime Textからコンパイルする場合でも「Advanced Papyrus.ini」の設定は有効です。
「Papyrus」のパッケージを導入すると、SublimeText上からスクリプトをコンパイルできるビルド設定がもれなくついてきますが、「SublimePapyrus.ini」でちゃんと自分のSkyrimの「PapyrusCompiler.exe」を正しく指定さえしていれば、他は特に何も弄る必要はありません。
前述した通り、下線の表示が出ていれば「Advance Papyrus.ini」が効いています。
CKからこのSubLimeText2でスクリプトを直接開いて編集する場合は、まずスクリプトの「pscファイル」をSubLimeText2で開くというOS上の「ファイルの関連付け」を行っておきます。
(Win7の場合は、何かpscファイルを選択して右クリックし「プログラムから開く」>「既存のプログラムの選択」でSublime Text2を選択します。
※SublimeText2を一度アンインストールして入れ直したりしていると、ファイルを開くプログラムの候補にならないことがあります。その場合はレジストリエディタでSublime Text2の項目を削除しなければなりません。やり方は「ファイルの関連付け レジストリ」などでググってお調べください)
「ファイルの関連付け」を行っていればCKから直接スクリプトをSublimeTextで開くことができます。
MOから起動したCKでスクリプトを編集するためにSublime Text2を開く時は、既にSublime Text2が起動した状態になっていないか、ご注意ください。
CKの「Open in External Editor」で「Sublime Text2」が初めて起動する状態でないと、MOの仮想Dataフォルダの設定は有効になりません。既に起動してあるSublimeText2では仮想Dataフォルダ上にあるスクリプトを認識できず、白紙状態になってしまいます。
またSublime Textで他人様のModの既存のスクリプトを変更する場合は、別名保存でMOの「overwrite/Scripts/source」にソースを保存してから、コンパイルするのが良いです。
そのまま保存すると、元のオリジナルのソースを普通に上書きしてしまいますので。
(コンパイル後のpexファイルは「overwrite/Scripts」に出力されるので、元のデータを上書きされることはないのですが)

以上、長くなりましたが、こんなところです。
また何か思い出したら追加したいと思います。

2015/03/05

CKとはずがたり

先程Steamを立ち上げたらCKのアプデが始まりまして……そういえばワークショップの更新がどうとか言ってたなー、なんで今頃……などと思いつつ、さっそくCKを起動しようとしたら、起動しない!
どうにも起動しないので、ついにやってしまいました、「ゲームキャッシュの整合性の確認」。
アホです。もう二年近くアプデなんてなかったから、すっかり忘れ去ってました。
整合性の確認をする前は、ちゃんと元のオリジナルのデータを、特に重たいボイスのbsaだけはちゃんとDataフォルダに戻しておかなければならんかったことを……
おかげで7Gダウンロード中です。うちの回線めっちゃ遅いのに……くっそ……


…というわけで、ダウンロード完了を待ってる間、ヒマなんで昔話でも書きたいと思います。
スカイリムの公式MOD作成ツール、CK(クリエイションキット)をダウンロードして、自分も使ってみようと思ったきっかけはいったい何だったか……実は私はその最初の動機をまったく覚えていません。
私はスカイリム本体のアップデートが行われるたびにゲームフォルダをバックアップしてきたんですが、その歴代のデータを見てみるとバージョン1.4番台までは「CreationKit.exe」がフォルダ内に見当たらず、バージョン1.5.24のデータからCKが一緒に保存されています。
それを見るところ、私がCKを最初に使ったのは2012年の3月末頃と思われるのですが、その当時どんなものを作ったのか、あるいはダウンロードしただけでしばらく放置していたのか、データも残っていないし記憶も非常に曖昧です。(ブログを始めてからは覚えてるんですが)
皆さんは自分で初めて作ったModが何だったか覚えていますか?
私の手元にある一番古いスカイリムは日本語版の1.1.21.0です。

そういえば昔はWorkshopって無かったんですよね。まあ、私は今も全然使ってないのですが。
そういえば先日、CK Wikiのチュートリアルのクエストの章を久しぶりに読み返したのですが、「うわ、入門の最初からこんなことやるのか…」と改めてビックリしてしまいました。
公式チュートリアルのクエストデザインの基礎の章……Bendu Oloさんのアミュレットのクエストを作成するくだりは、私にとってはかなり印象深いチュートリアルでして、これを初めて読んでCKを触った当時は「CKってこんなことできるのか!凄い!」と、めちゃくちゃ感激した覚えがあります。
でも今読み返して見ると、別の意味で凄い…です。
泥棒に盗まれたアミュレットを取り返すという、ストーリー性のあるクエストの構想から始まって、いきなりアクターの作成に飛んで、それからダイアログの作り方に入って、さらにその作ったばかりのセリフやアクターにスクリプトつけて、それからクエストオブジェクティブズやらエイリアスやら……
ベセスダ様、スパルタすぎるw
もっとも実際にModをいくつか作って、何度も転んだり穴にはまったり、さんざん苦労してからこのチュートリアルを読み返してみると、「ああ、これって最初のここに書いてあったんだ…」としんみりしたり、「ああ、今ならこの意味不明だった文章の意味がよく分かる……」とじわじわくる部分が多々ありますんで、やっぱりこれは入門用としてはベストな形なのかもしれませんが。


CKといえば……以前モロウウィンドウのCSを触った時に、スカイリムのCKの原型はここにあるんだな、というか、十年以上前に作られたものが今でも継承されて生き続けていることに、凄く感動しました。
MorrowindのCS(コンストラクションセット)のObjectウィンドウ。
Objectの種類のカテゴリが上部のタブ表示になっているのがとても新鮮です。
スカイリムからMod弄りを始めた新米の私は、最初はどのカテゴリにどんなオブジェクトがあるのか全然把握できなかったのですが(今でも把握しているとは言いがたいですが)、Morrowindのシンプルな構成を見ると、なるほど、これらのオブジェクトがベースになって、シリーズを重ねるごとに新たなオブジェクトがぽこぽこ派生していったのが、今あるスカイリムの姿なんだな、と思えて納得しました。
たとえばMorrowindには「Furniture(家具)」というオブジェクトは存在しなくて、ベッドは単なる「Activator(アクティベーター)」なんですよね。
スカイリムでは、使用した際にモーションが付いたり、呼び出されるイベントなどが追加されたりなどして別のオブジェクトとして存在しているわけですが、「Furniture(家具)」の先祖はただのアクティベーターだったんだ……と思うと非常に感慨深いです。

ちなみに最も感慨深いのは、モロウウィンドではこのMod作成ツールであるCSが、ゲーム本体と共にディスクに入っていて、ゲームを購入した人の手元にもれなく届けられていた、ということです。
スカイリムでもCKはPC版を購入した人なら誰でもダウンロードできますが、十年以上前からその環境があったということ、ゲーム本体にもれなくゲーム改造ツールがついてくる……というスタイルを十年以上前に確立していたということに、私はとてもビックリしました。
この伝統は今後もずっと、受け継がれていって欲しいものですね。
歴代「Player」キャラたち。左からネレヴァリンさん、Bendu Oloさん、ドヴァキンさん。

※Modを直入れしてしまったので、ネレヴァリンさんはバニラの外見とは違うかもしれません。
キャラメイク前のプレイヤーの姿の変遷も、こうして見るとなかなか面白いです。
モロウウィンドはダンマー、オブリビオンはインペリアル、スカイリムはノルド、とそれぞれのシリーズの舞台となった国のメイン種族が設定されているんですね。
次作ではどの種族が主役になるんでしょうか……
個人的にはハイエルフがいいなあと思ってるんですが、どうなることやら。