プログラミング・動画編集 備忘録

プログラミングや動画編集についての備忘録です

Skyrim Mod 製作日記 - 6 - PS4版でスキルの本であることをわかりやすくしたい

やりたいこと:読むとスキルが上がる本を目立たせたい(できれば、味読の有無もわかりたい)
やれたこと:EffectShaderとそれを実行させる"DA10MolagBalMaceEffectsSCRIPT"で実現させた

はじめに

PC版で『Unread Books Glow』というModを愛用していました。
skyrimspecialedition.2game.info

Skyrimをはじめて間もない頃は、本もせっせと集めてしまうものですが、さすがにあの大量のテキストを読んでいられないので、コレクション目的になってきます。
そうなると、まだ持っていない本を集めたくなりますが、中身を読まないこともあり、それが持っているか持っていないか容易に判断できません。
そこで、このModが非常に役立つわけです。読んでいない本が光っているので、大量に本があっても一目で分かります。

また、本の種類を、一般の本、スキルの本、魔法を覚える本、クエストの本といった感じで絞り込めます。
最近のプレイでは、スキルの本は見逃したくないので、スキルの本のみ光らせていました。

折角なら、この素敵なModを紹介したいと思い、それならば各エディションでと思い調べたら、NexusにSE版まではありましたが、Bethesdaには登録がありません。
PS4版ではこれを利用できないのです。最近はPS4版でも動くものを がモットーですので、何か変わりのものが無いか探しましたが、その時は見つけられませんでした。

そこで、自分で作ろうとなったわけです。

最初にやったこと

『Unread Books Glow』をダウンロードして中身を見てみると、結構独自にスクリプトを組んでいました。
これはさすがに無理だと思い、単純にエフェクトをかけられないか、本の設定項目を見てみます。
f:id:rrryutaro:20170111200457p:plain

それらしい項目はありませんでした。
あれこれ試したりしましたが、よい方法が見つけられず、ならば、本の名前でわかるようにしようと思い、本の先頭に"[スキル]"を付ける事にしました。
まず、英語版で"[Skill]"と手作業でせっせと名前を変更します。
これはこれで、英語版としてBethesdaに登録します。その後、sseTranslatorで日本語化します。
名前に"[Skill]"と付いているため、このままでは自動翻訳されませんが、ヒューリスティック候補で出てくるので、ひとつひとつ選択して翻訳します。
これを日本語版としてBethesdaに登録しました。

その後にすぐに、やりたかったことを実現しているModを発見

mods.bethesda.net

あるぇ~ できてんじゃ~ん。なるほどなるほど。自分が無知でした。
そもそも、表面を発光させているあのエフェクトがPS4関係なくどのように実現しているか分かっておりませんでした。
ちょっと調べてみたら、すばらしい解説記事がありました。
kasulog.blog-rpg.com

これまで、EffectShaderというのをわかっておりませんでした。
(正確には、新しい錬金素材を作ったりしてMagic Effectなどはいじっていましたが、視覚効果的な部分は見た瞬間そっ閉じしていたのです。

さて、これで、EffectShaderという重要なキーワードを得たので、早速スクリプトが無いか探してみると、それなりに検索結果が出てきました。
しかたないので、ひとつひとつ見ていくと、わりとすぐによさげなのがみつかります。
f:id:rrryutaro:20170111201948p:plain

中身をさらに開くとずばりでした。

scriptName DA10MolagBalMaceEffectsSCRIPT extends objectReference
;
;
;===============================================================

effectShader property glowEffect auto

event OnLoad()
	glowEffect.play(self as objectReference)
endEvent

event OnUnload()
	glowEffect.stop(self as objectReference)
endEvent

OnLoad時に、プロパティで設定したEffectShaderを自身に表現してくれます。
とてつもなく汎用性の高いスクリプトです。基本的にエフェクトを付けたいもの全てに利用できるかと思います。

というわけで、こんどはせっせとこのスクリプトを各本へと適用します。
なお、EffectShader自体は自作しようとしましたが、綺麗なのが作れませんでしたので『Unread Books Glow』から拝借させてもらいました。

これで、PS4版で出来る範囲でやりたいことが実現できました。
さて、ここから先ですが、『Scholar's Eye』のコメント欄で次のような発言があります。

> It would be really cool if the books would glow either red, blue, or green depending on the type of skill it boosts. For example: if it's a spellbook, it would be blue, along with all other books that boost skills within the "Mage" portion of the skill menu. Sneak skills would be green; warrior skills would be red.

> レッスンの種類に応じて、赤、青、緑のいずれかの本が輝くなら、本当に涼しいでしょう。たとえば、魔法書であれば、それは青で、スキルメニューの「Mage」部分でスキルを上げる他のすべての本となります。スニークスキルは緑色です。戦士のスキルは赤くなります。

そうですよね、どうせなら種別に応じて見栄えが変わっていればより便利ですよね。
機能拡張するとしたら、この辺を対応することになるでしょうか。

PS4版でのMod開発の難しさ

何度か書いているかもしれませんが、PS4は外部アセットが利用できないため、既存のスクリプトでまかなわなくてはなりません。
例えば、PS4で本を読んだかどうかを判断して、何らかの処理をしたい場合、少なくとも IsRead() を使っているスクリプトが必要です。
はい。自分が調べた限りでは1つも存在していませんでした。実現不可能です。

今回はたまたま、やりたいことがもっともシンプルかつ汎用的にできるスクリプトが存在しました。

その他のものでは、なんらか余分な処理があるため、利用しづらいですが、逆にそれを活用するように合わせたりなどで、やりたいことが実現できる可能性もあります。
これはこれで、パズル的面白さもあるかもしれませんが、やっぱり、さくっとスクリプトを書いて済ませられればいいのですが。

今回作ったもの

mods.bethesda.net


以上