SKSE&Script Dragon

SKSE & Script Dragon

外部拡張スクリプトであるSkyrim Script Extender(SKSE)とScript Dragon(SD)の情報です。
同じ外部拡張スクリプトですが、 併用しても特に問題ありません。

SKSEの特徴

SKSEは2つの機能があって、ひとつはPapyrus言語そのものを拡張すること、ふたつめはプラグインで拡張することです。

Papyrus関数拡張

ひとつめはPapyrus言語で使える関数を増やします。
例えば、Get(Set)WeaponSpeed()は武器の振る速度を取得したりセットしたりできます。
スキルレベルに応じて武器速度を変えたりといったような応用できます。
Papyrusでは武器そのものの速度を扱うことはできません。


単に関数を書くだけで使えるので使用は容易ですが、Papyrusの実行速度でしか動かないため遅いです。

プラグイン拡張

C/C++のコードをコンパイルしてdllファイルにし、Data->SKSE->Pluginsに入れて動くものです。
C/C++の速度で動くのでPapyrusに比べて駆動自体は圧倒的に速いですが、Papyrusの関数を呼び出すときはその関数の速度でしか動きません。
また資料が少なく難解で膨大なSKSEのAPIを理解していないとプラグインの作成が難しいのがデメリットです。

SKSE開発情報&サンプル


Script Dragonの特徴

※Script Dragonは早期に開発が終了して、代わりにSKSEが拡充したため2017年現在ではほぼ使われてません。

C/C++のコードをコンパイルしてasiファイルにし、Skyrimルートフォルダ->asiに入れて動くものです。
SKSEのプラグイン拡張と似ているんですが、C/C++でコードを書く直感的な感覚で作成できC/C++の強力なライブラリや文法もそのまま使用可能です。
Papyrus関数の呼び出しも簡単(Papyrus関数はPapyrusの速度で動くので遅い)で、一部特殊な仕様さえ理解すればC/C++に関してほとんど知識がなくても書けます。
高速な常時稼動が可能で、キー入力判定が速いので戦闘やホットキーの拡張に向いてます。
あまりにも速すぎてゲームと同期させるためにWaitを使って意図的に遅らせないといけないぐらいです。
iniによるセッティング変更や単体で使用した場合は独立して動くためにセーブを汚したりしないのも特徴です。

コンソール呼び出しなど独自に拡張された関数が使えますが、イベント処理を行うPapyrusの関数(On~)などは軒並み使えませんし、GetAnimationVariable~などいくつか使えない関数があります。
Skyrim本体のアップデートで膨大な変更があった場合にはSD本体のアップデート遅れる場合がありますので、アップデートする前にTESV.exeやLancher.exe、bsaファイルなどはバックアップしましょう。

Script Dragonについての導入から実際の使い方やコード例など豊富というか日本語で唯一のブログです。