2013/05/13

Sublime Text2でのPapyrusスクリプト編集

スカイリムのMod制作に欠かせないPapyrusスクリプトを見たり弄ったりするのに、ここ最近はずっと「Sublime Text2」というエディタを使っています。
このエディタの何が素晴らしいって、Papyrus用の設定があらかじめ用意されていて、デフォルトの状態でコードがこんなに見やすく色分けされてるのがすんばらしい!です。
見ただけで吐き気がしそうな大長編のスクリプトでも、このカラーリングのおかげで、いっちょ解読してみようか…という気になります。
デフォルトのカラースキーム「Monokai」……目に優しい黒背景なのが嬉しいです。
この「Sublime Text2」というエディタは、ゲームにModを導入するみたいに、使いたい機能のパッケージをダウンロードして追加で導入することで、自分の好きなようにカスタマイズできるというしくみのエディタです。
つまり、Modのようなプラグインの一つとして「Papyrus」のパッケージが用意されているので、それを導入すればPapyrusに最適化されたエディタになるというわけなんですね。
Papyrus用のパッケージを追加すれば、Papyrusのスクリプトファイルを開いた時に、Papyrusの関数や予約語、プロパティに使われるオブジェクトの型名などが見やすくカラーリングされたり、また完全ではないですがコード補完めいた機能なども追加されます。
もちろんコンパイルもエディタ上でショートカットを使ってビルドできるから便利です。

ちなみにこのエディタのPapyrus用のパッケージには「Papyrus Assembly」という、コンパイル済のスクリプトを逆アセンブリして、見やすく整形してくれるものもありまして……ちょっと前まで、おばちゃんはその機能にはだいぶお世話になっておりました。
しかし最近はもっと凄いツールがありまして……なんとコンパイル済のpexファイルを直接pscのソースファイルに変換してくれてしまう、「Champollion a PEX to Papyrus decompiler」なんてのがあるんですよね。
この神ツールのおかげでもう、pasファイルをこちらのエディタで解読することは無くなってしまったのですが……それでもこのエディタはスクリプトを編集するのに便利な機能が満載なので、もうすっかり手放せなくなってしまいました。
CKは弄るけどスクリプトはさっぱりわからん…なんていう方でも、いや、そういう方であればこそ、こういった素晴らしいツールの助けをぜひ借りるべきかと思います。


そんなわけで、忘れないうちに「Sublime Text2」のPapyrusパッケージの設定方法について書いておこうと思います。
こういうツール類のインストールって、一度導入してしまうとなかなか設定し直すことがないので、次の導入の機会が来る頃には完全に忘れてしまってるんですよね。
旧PCに入れてたBlenderの導入手順なども、案の定、ものの見事に忘れてしまったので、未だに今のPCにはインストールできていません。
あれも面倒がらずに書き残しておけば良かったです。
■Sublime Text2の導入とPapyrus編集環境の設定方法
(1)まず、こちらのページから「Sublime Text2」をダウンロードしてインストールします。
(Windows 64bit版以外の方は「Download for Windows」のボタン上にマウスを乗せると「Other Platforms」というリンクがありますので、そこから合うものをダウンロードします)

(2)インストールが済んだら、「Sublime Text2」を起動して、Papyrus用のパッケージを導入する準備にとりかかります。
パッケージを導入するためには、まずはパッケージを導入するためのパッケージを先に導入しなくてはなりません。
何を言ってるのか謎な日本語になってしまいましたが(笑)……まあ、ようするに、ModをインストールするためのNMMみたいなツールを先に導入するみたいなもんですね。
そのインストールツールを導入するには、ツールバーの「View」から「Show Console」というのを選んで、エディタ上にコンソール入力欄を出します。
「Show Console」を選ぶと、エディタの下部に下画像のようなコンソール欄が現れます。
赤枠の中にはコマンドが入力できますので、その欄にこちらのSublime Package Controlのページにある、グレーの背景内の、import以下のコンソールコマンドをコピー&ペーストして入力します。
コマンドをコピペしたら、リターンキーを押します。
すると下画像のように「Sublime Textを再起動してインストールを終了させて下さい」という表示が出ますので、いったんエディタを閉じて再起動します。

(3)これでパッケージをインストールするための準備が整いましたので、続いてPapyrus用のパッケージを導入していきます。

まずはツールバーの「Tools」から「Command Palette」というのを選びます。
すると下画像のような表示になるかと思いますが、そこで赤枠の空欄部分に「Install」と入力してみて下さい。
「Install」と入力すると、自動で「Package Control:Install Package」というのが候補に挙がってきます。これが先ほど『パッケージを導入するために導入したパッケージ』……いわゆるNMMみたいな奴です。これをクリックして選択します。
「Package Control:Install Package」をクリックすると、下画像のような表示になります。
これは、NexusみたいなMod置き場?に自動で繋がって、インストールできるパッケージを表示してくれている…みたいなものです(たぶん)。
なので、赤枠の部分に自分の入れたいパッケージの名前を入れて検索します。
「Papyrus」と入力して検索すると、2個ヒットすると思います。
そのうちの「Papyrus」というのをクリックして、パッケージをインストールします。
エディタの一番下のステータスバー?に「successfully Installed」の表示が出たらインストール完了です。
続けて、Papyrusのスクリプト編集に必要ないくつかのパッケージを追加で導入します。
まずは「ConvertToUTF8」という、Sublime Text2上で「Shift-JIS」の文字コードを使うためのパッケージを入れます。
なぜこんなものが必要なのかというと、このエディタはデフォルトのままだと「UTF-8」しか使えないので、「Shift-JIS」のファイルを開くと日本語部分が文字化けしちゃうのです。
かといってスクリプトを全部「UTF-8」に変換してしまうと、ダイアログやシーンに付属するスクリプトなどではCKのスクリプト欄内にコードを読み込めなかったりするんですよね。
ま、スクリプト中に日本語が無かったら、問題ないのかもしれませんけども……「Shift-JIS」が使えて困る、ということはないのでとりあえず入れましょう。

「ConvertToUTF8」のパッケージをインストールするには、先程と同じように「Tools」から「Command Palette」を選び、入力欄に「Install」と打って、パッケージ導入ツールの「Package Control」をまず起動します。
Package Controlの検索欄に「UTF」といった単語を入力すると……「ConvertToUTF8」が候補に挙がってきますので、それをクリックしてインストールします。
続いてもう一つ、今度は日本語をインライン入力するためのパッケージを導入しましょう。
このエディタはデフォルトのままだと、日本語を入力しようとすると別窓のちっちゃな入力欄が画面の隅の方に現れて、そこで文字を確定するとエディタ上にも反映される…という、まどろっこしい状態なのです。(説明難しいな……)
まあこれも、スクリプト中に日本語なんかダサくて使わないぜ、という方には必要ないのかもしれませんが、エディタとして不便きわまりないので、とりあえず入れておきましょう。

日本語をインライン入力するためのパッケージは「IMESupport」というパッケージです。
これも同じように「Command Palette」からPackage Controlを呼び出し、「IMESupport」の名前で検索してヒットしたパッケージをインストールします。
以上、3つのパッケージのインストールが済んだら、「Sublime Text2」を一度終了して再起動します。再起動しないと、インストールしたパッケージの設定がうまくいかないことがあるので、必ず忘れずに。
ちなみに導入したパッケージのデータはデフォルトだと、
C:\Users\ユーザー名\AppData\Roaming\Sublime Text 2\Package
というフォルダの中に格納されています。
「Package Control」で導入しなくても、パッケージのデータを手動でダウンロードしてきて直接このフォルダに入れればインストールできたりしますが……「Package Control」に対応しているパッケージは、そちらでインストールした方がアップデートなどにも対応しているみたいなので、「Package Control」で導入するのがいいんじゃないかなと思います。


(4)パッケージの導入が済んで、エディタを再起動したら、最後にPapyrusのスクリプトをコンパイルするためのINIの設定をします。

「Tools」から「Command Palette」を選んで、今度は「Install」ではなく「Papyrus」と入力します。「Papyrus」パッケージがきちんとインストールされていれば、下画像のような選択肢が出てくる筈です。
赤枠の「Papyrus INI:Create default INI file」というのをクリックして、INIファイルを設定します。このコマンドでINIファイルが問題なくきちんと作成されれば、下画像のような設定が記述してあるファイルがエディタ上で開きます。
上の赤線の部分を、ご自分のスカイリムのインストール環境に合わせて書き換えます。
おばちゃんはSteam自体をDドライブにインストールしていますので、上記の「C」の部分をそっくり「D」に変更しました。
ちなみに「Papyrus INI:Create default INI file」というのをクリックしても、INIファイルの作成がうまくいかない場合があります。(何も記載されないファイルが出来たりします)
そういう場合は一度エディタを終了して、「C:\Users\ユーザー名\Documents」というフォルダ内にある「SublimePapyrus.ini」というファイルを削除してから、もう一度エディタを起動して「Papyrus INI:Create default INI file」をやり直してみてください。

INIの設定を修正して保存したら、またエディタを一旦終了して再起動します。
しつこいようですが、パッケージなどの設定を変更する際は、念のため再起動した方が問題が起こりにくいので、おまじない代わりに再起動します。
以上の設定が済んだら、適当なスクリプトファイル(psc)をエディタで開いてみましょう。
スクリプトをコンパイルするためには、あらかじめ「Tool」の「Build System」から「Papyrus」を選択しておきます。(Automaticの設定でも大丈夫だとは思いますが…)
これで「Build」すれば、Papyrusのスクリプトがエディタ上でコンパイルできます。
(ショートカットは「Ctrl」+「B」です)
コンパイルはこんな感じで、エディタの下部にログが出てきます。
別窓で開いたりしないので見やすいですね。

ちなみに、CK上で作業してる時に、自分の使いたいエディタでスクリプトを編集するには、あらかじめスクリプトの「psc」ファイルを常にそのエディタで開くような設定をしておきます。
(「プログラムから開く」>「既定のプログラムの選択」でエディタを選択し、「この種類のファイルを開くときは、選択したプログラムをいつも使う」という設定にチェックを入れておく)

その設定をした上で、CK上でスクリプトを開く時に「Open in External Editor」という項目を選べば、自分の好きなエディタで開くことができます。
また、余談になりますが、CKの「Papyrus Script Manager」では、Objectウィンドウのオブジェクト類と同じように、スクリプトも右クリックの「Use Info」からリンクしている関連オブジェクトを調べることができます。(知ってた?)
これで、どのスクリプトがどのクエストに使われているか…なんてことが一目瞭然なので、エラーを吐きまくってるスクリプトがどこで使われているのか調べたり、また他人様のハイレベルなModのしくみを勉強させていただいたり……なんてことができます。
難しそうなスクリプトも、綺麗な画面のエディタで眺めるとなかなか楽しいものですので(そんなことない?)食わず嫌いの方もぜひお試しくださいませ。


9 件のコメント:

  1. いつも興味深く拝見させていただいております。
    一から全部自分でやろうと思ってもなかなか面倒だったり難しかったりで放り出しそうなものでも記事にして丁寧に解説してくださるのでとても助かっています。スクリプト覗くの楽しいですよね~。これでまた色々と捗ります。

    ところで、私もSkyrimのブログを細々と書いているのですが、このブログをリンクに追加させて頂いてもよろしいでしょうか?わざわざ私のブログからこちらに飛ぶ方はあまりいらっしゃらないと思いますがどうぞよろしくお願いします。

    返信削除
    返信
    1. うわあ……どなたかと思ったら、Female Facial Animationの作者様ではないですか……
      Modの素敵な表情もさることながら、モデルの女性の造形の美しさに「私の持ってるスカイリムと違う…!」と衝撃を受けておりました。
      ブログのFacegenを編集する記事を拝見しまして、私もやりたい…!とひそかにプルプルしていたところです。
      ま、私の場合、blenderのインスコでつまずいている時点で、お話にならないレベルなんですが。

      リンクしていただけるなんて光栄です。どうも有難うございます。
      便乗してお願いしてしまう形で気がひけるのですが、私の方からもリンクさせていただけますでしょうか?

      削除
    2. ありがとうございます。さっそくリンクさせていただきました。
      こちらのリンク、もちろんOKです~。どうぞよろしくお願いします。
      男性の表情&発音モーフも作成中ですので完成したらウルフリックさんとその仲間たちにも使ってあげてくださいね(*´ω`*)

      削除
    3. リンク許可有難うございます!こちらこそどうぞ宜しくお願いいたします。

      > 男性の表情&発音モーフ

      なんと!!!メンズ用も…作っていただけるのですか!?
      男性陣まであの素敵な表情Modの恩恵にあずかれるなんて……ううう、楽しみです。
      相手をニッコリ笑わせるシャウトでも作って、正座してお待ちしております!

      削除
  2. いつの間にかおばちゃんアバターがか、かわい…変わってますねw

    Sublime便利ですよねー。円安が進んでるので購入を迷ってる人は今すぐポチ!

    返信削除
    返信
    1. 暖炉の火の前でスクリーンショットを撮ったら、思いの他、美人(ん?何か?)に撮れてしまって、こっぱずかしいです。
      皺だらけでも暖炉補正って効果あるんですねえ。

      SublimeTextは、さすが今をときめくナウでヤングなエディタwだけあって、これはと思う機能が大抵揃ってますね。
      それにしても、Papyrusのスクリプトだけでなく、Papyrusのログまで整形してくれる機能があったら……完璧なんだけどなあ。

      削除
  3. いつも楽しく拝見させていただいています。ぼくはスクリプトとかあんまり難しいことは分からないんですが、いろんなMODを入れたりはずしたりして楽しんでいます。ぼくもすこし、未知の世界に踏み入れてみようかなと、おばちゃんさんのブログを見ながら妄想をふくらませているところです。
    しばらく更新されていないので、ちょっと心配しています。体調を崩されたりしていませんか? もしそうなら、更新はいいですから、お大事になさってください。もし体調が万全なら、次回の更新を首を長くして待っております。ではでは。(^-^)ニコ

    返信削除
  4. お気使いどうも有難うございます。最近ろくに更新してないのに見てくださって……大変恐縮です。
    さすがにこのところ、このブログを始めた頃のように一日の大半をスカイリムのことばかり考えて過ごしている……というような廃人状態ではなくなってきてしまったのですが、コメントいただいてちょっとやる気が出て参りましたw

    何よりこのままフェードアウトしてしまったら、CKの使い方やスクリプトのことなども、綺麗さっぱり忘れてしまいそうなのでねえ……
    老後の楽しみ(笑)としてまたいつでも再開できるように、CK弄りの手順やこのゲームの奇怪な仕様なんかをきちんと書き残しておきたいなと思っております。

    更新はマイペースになるかとは思いますが、また覗きに来てくださると嬉しいです。

    返信削除
  5. Papyrus Managerから関連クエストを探せるなんて知らなかったです!!
    本当にありがとうございます。 これでModの解析が捗りそうです!

    返信削除