☆ Vanilla Script (micro)Optimizations [バグフィックス] ID:54061 Author:Subhuman0100 2023-10-10 06:46 Version:1.17
- RATE: ★=603 G=5 [DOWNLOAD SITE]
-
TAG: [バグフィックス] [問題解決] [パフォーマンス] [スクリプト] [ESL]
Vanilla Script (micro)Optimizations
バニラのスクリプトの改善をします
主にバグフィックスではなく処理のパフォーマンス改善が目的です。
eslファイル
※注意
いくつかの処理に相性問題や不具合を抱えているためPOST/BUGSや関連MODを一読推奨
■概要
効率を上げることを目的に、バニラゲームのスクリプトの多くを書き換えました。
遅い「convenience functions」をより速いネイティブな関数に置き換え、「fail fast fail early」アプローチを実装するための条件チェックの順序変更、頻繁に使用される値のキャッシュ化。
■これは何?
新機能の追加やバグの修正を目的としたものではありません(例外あり)*。
前者はMODが、後者はUSSEPとその関連が担当しています。
これは、バニラスクリプトの全体的な効率を上げることを目的としています、つまり実行速度の向上とメモリ使用量の削減です。
Papyrusがバニラスクリプトに割かなければならないリソースの量を減らすことで、パフォーマンス上の問題が発生する前により多くのMODを使用できるようになることを期待しています。
名前が示すように、これらのほとんどはマイクロオプティマイゼーションです。
個々には目立った効果はほとんどありません、 例えば、トラップのスクリプトは、ゲーム内のすべてのトラップがロードされるたびに、トラップのレベリングされたダメージを決定します。、
またプレイヤーが未払いの賞金を持っているかどうかをチェックするスクリプトは、ガードがPCにLOSを獲得するたびに実行されます。
これらのスクリプトの多くは頻繁に実行されたり、多くのコピーが同時に実行されたりします。
小さなパフォーマンスの改善でも大きな効果が期待できます。
■インストール。
早めにロードしましょう、早い方がいいです、他のMODがこれらのスクリプトを上書きしようとしている場合、
それはそのMODの作者が、そのMODが適切に動作するために必要な機能を追加しているからだと考えてください。
例外はUSSEPです、これらのスクリプトは、USSEPによる修正を維持するために書かれています、USSEPは必須ではありませんが、多くのバグが修正されているので強く推奨します。
*特筆すべき例外です。
以前、Honorhall Orphanageはベッドがすべて埋まると "close its doors "となり、孤児の受け入れを永久に停止していました。
今では、(ゲーム)日ごとにベッドの状態をチェックし、(プレイヤーが子供を養子にするなどして)ベッドに空きがあれば、そのベッドが埋まるまでドアを開け直すようになりました。
同封してるeslファイルはHearthfireのクエストレコードの修正2つだけです。
■関連MOD
Vanilla Scripting Enhancements
■以下はこのMODによって起こる問題とバグフィックス ※v1.17で修正済みとのこと
Vanilla Script (micro)Optimization 1.16a - Adoption Bug Fix V1.16aの二人目の養子のバグ修正
USSEP Caravan Bug Workaround USSEP(v4.2.9a)使用者向け
■別の人による内包版
Ultimate Optimized Scripts CompilationSkyrim Special Edition Nexus, Subhuman0100. 10 Oct 2023. Vanilla Script (micro)Optimizations. 18 Aug 2021 <https://www.nexusmods.com/skyrimspecialedition/mods/54061>.スポンサーリンク
スポンサーリンク
上記説明は古い又は異なる場合があります。導入の際はDescriptionを確認の上、自己責任でお願いします。
説明はどなたでも編集する事が可能です、古い又は異なる場合は編集にご協力をお願いします。
To users except in Japan - コメントコメントだけでも投稿できます。気に入ったMODはNEXUSでもENDORSEしましょう。
[Spoiler]テキスト[/Spoiler]とする事で隠しテキスト、#や>>後、半角数字でアンカーを使用可。 -
-▼ Version : 1.17#40名無しキャラバンやけに見つけやすいと思ったら全然動いてなかったのか・・・ ID:MyNTc2ZG Day:0 Good:0 Bad:0
- Good
- Bad
- 54061
#39名無しGood!カジートキャラバンが移動しなくなる不具合に関して。上のバグフィックスの説明にあるとおりUSSEPv4.2.9aはv1.17で修正されてるけど、今まで問題なかったUSSEPv4.25a環境だとv1.17で逆に問題発生。
当modの旧バージョンからcaravanleaderscript.pexを抜き出して当modを上書き。新規セーブして日数経っても治らない場合はUSSEP Caravan Bug Workaroundのnexusのページに書いてあるとおりコンソールコマンドを入力してください。 ID:Y4MDkzZG Day:959 Good:4 Bad:0- Good
- Bad
- 54061
▼ Version : 1.16a#38名無しここじゃなくてそのいまだにうんたら報告されてる所で言った方が良い
MOD自体は全体的に体感できない程度にスクリプトの可読性が上がる縁の下の力持ち
けどバグや逆に遅延が産まれてる部分もあるから第三者が現在進行形でバグFIXしてくれてるのでそっちもチェックしよう ID:ExOTEyYj Day:0 Good:0 Bad:0- Good
- Bad
- 54061
#37名無しいまだにこのmodが原因でうんたら、外したらうんたらって報告あるけどよくあるmodセット(wabajack等)には必ず入れてあるんですよね、不具合報告もそもそもが他のmodが原因でダウンロード数みても分かる通り多くの人が入れて必須化してます。もちろん私も使ってますが問題はありません。むしろ問題があった時になぜこれを疑うのか。とあるバグ修正と同じで受け付けない人が多数いるのがもったいない。 ID:ZmNGVmYm Day:722 Good:0 Bad:0- Good
- Bad
- 54061
#36名無し特にFPSが上がるわけでもなく、効果が実感できない。 ID:g3ZDk0MD Day:0 Good:0 Bad:0- Good
- Bad
- 54061
▼ Version : 1.15a#35名無しどうもMODもりもり環境では挙動が変になる様子。このMODではなく他のMODが関数を拾えなくなるらしい ID:gwMmRiZG Day:353 Good:0 Bad:0- Good
- Bad
- 54061
▼ Version : 1.14#34名無し基本的にメッシュとテクスチャ関連以外の全MOD、同一セーブ内での更新やアンインストールは非推奨ですね。
比較的安全なのはSKSEプラグインのもの、スクリプトがあるものは変更や削除を行なってもずっとデータに残り続けるので、今のセーブデータは捨ててニューゲームで遊ぶ予定でない限りは変更を行わない方が無難です。 ID:MzYzA1Nj Day:226 Good:0 Bad:0- Good
- Bad
- 54061
#33名無しこれに限らず、スクリプトの変更がなされたMODは同一セーブでの更新は避けた方が良いよ ID:JjOWFhMW Day:671 Good:0 Bad:0- Good
- Bad
- 54061
▼ Version : 1.13#32名無し1.12b→1.13にしたら
defaultPrisonerDoorSCRIPT.OnOpen() - "<savegame>"
ってスタックログがとんでもないペースで吐きだしたので既存セーブで更新は気を付けた方が良いです
自分は結局1.12bに戻して更新はニューゲームのタイミングで行うことにしました。 ID:RlZGFlZj Day:491 Good:0 Bad:0- Good
- Bad
- 54061
▼ Version : 1.12b#31名無し更新履歴には記載ないけどファイル追加/更新されてる模様
magicimodbeginloopend : out
fxskeletonnecroscript : in
byohhousebardscript : diff
byohhousebuildingscript : diff
defaultonhitsetavrefalias : diff ID:JlNmRjMj Day:0 Good:0 Bad:0- Good
- Bad
- 54061
#30名無しあ"あ"ぁー。条件/ステート部分を弄りながら検証作業してたのに……
そのファイルはアルドゥインイントロ以外にも関わってそうなのでスクリプト確認してた
該当ファイルが取り除かれましたね
私の環境ではこのversionで白画面現象が発生しないことを確認済みです ID:g4Yzk5Ym Day:2 Good:0 Bad:0- Good
- Bad
- 54061
#29名無し▼ Version : 1.12#28名無しどのファイルが悪戯してるのか確認したためbug reportにぶん投げた
スクリプトの中身まではまだ見てない ID:EzMjgwYj Day:0 Good:1 Bad:0- Good
- Bad
- 54061
#27名無しおま環とは違うかも
POSTにも同じ報告がありました
今回のversionで変更されたスクリプトが影響しているみたいですね
少なくとも前versionでは発生しなかった現象です ID:EzMjgwYj Day:0 Good:0 Bad:0- Good
- Bad
- 54061
#26名無しおま環だと思うけど、ニューゲーム時のヘルゲンでドラゴンがブレスを吐いたら、画面が真っ白で何も見れなくなった。
その後塔の中に入ったら元に戻ったけど、使うのは遠慮かなぁ。 ID:NjOWQ4Zm Day:222 Good:0 Bad:0- Good
- Bad
- 54061
#25名無しまだアップデートがあってなんとなく嬉しい
今回はスクリプト追加と修正か ID:EzMjgwYj Day:0 Good:1 Bad:0- Good
- Bad
- 54061
▼ Version : 1.1a#24名無しハイエンドGPUを使用しているとマイクロスタッターが発生する、という書き込みがいくつかありましたが、誰か体感した人いないかな。 ID:EzM2RjNz Day:0 Good:0 Bad:0- Good
- Bad
- 54061
▼ Version : 1.1#23名無し#22名無し#21名無し単純に製作者さんがその階層に配置しているというだけの話
そもそもsourceはゲームプレイするだけならなくても構わないものだし、どこに置かれていようと関係ありません
自分でスクリプトをいじってコンパイルする時に困るなら階層を変更すればいいのです ID:diZmQ5Ym Day:941 Good:1 Bad:0- Good
- Bad
- 54061
#20名無し#19
このmodの、Vanilla Script MicroOptimizations.bsaをアンパックしたら中身がそうなっていました。
LE版と違ってSE版ではフォルダの階層がdata→scripts→sourceからdata→source→scriptsに変更になったと記憶していたのですが、違ったでしょうか? ID:E1YTdlNz Day:43 Good:0 Bad:0- Good
- Bad
- 54061
#19名無し#18
Data\scripts\SourceになってるMOD
USSEP - Japanese Voice Edit
Easy Wheelmenu - SSE Conversion
A Matter of Time - A HUD clock widget
Custom Skills - VIGILANT
Better Melee Ai
AreYouThere SE - Actor NPC Follower
後調べるのめんどくさいので略
>Source→scriptsに配置するのが正しいんじゃなかったでしょうか?
ってどの話なんでしょうか? ID:RlZGFlZj Day:386 Good:0 Bad:0- Good
- Bad
- 54061
#18名無しBSAをアンパックしたらsourceフォルダがscriptsフォルダ配下にあるんですがSE版はdata→source→scriptsに配置するのが正しいんじゃなかったでしょうか?このままでも正常に動作してますか? ID:E1YTdlNz Day:43 Good:0 Bad:0- Good
- Bad
- 54061
▼ Version : 1.0#17名無しサブクエスト:コンスタンス・ミシェルに養子縁組について聞く
が英語のままでした。
"speak with constance about adoption"
上手く日本語パッチ作れなかったので、気になった人は手動でどうぞ。
CKやSSEEDITでQuestID xx004291
Objectives -> NNAM Display Text
の部分を日本語にすればOKです。 ID:hlYWRkMz Day:0 Good:2 Bad:0- Good
- Bad
- 54061
#16名無し#15
Mod700以上入れてるとかesp1,000超えてるとかのMod廃人からは喜びの声が続々聞こえております。
FPS下がったとかスクリプトが起動しなかったModが動いたとか。
まあ200ぐらいしか入れてない普通のMod民ならよっぽど低スペじゃない限り体感できんかも知れんというのはそうだね… ID:Y4NTBmNz Day:4 Good:0 Bad:0- Good
- Bad
- 54061
#15名無しこれ系っておまじないみたいなもんだよなw ID:gyZGY5Zm Day:146 Good:0 Bad:0- Good
- Bad
- 54061
#14名無し私の環境だけかもしれませんが、マネキンに装備させてたアイテムが装備されてない状態になり、またマネキンに付け直そうとしてもそもそも渡せない状態になりました。
似たような環境の方いらっしゃいますでしょうか? ID:UxYzJiZm Day:405 Good:0 Bad:0- Good
- Bad
- 54061
#13名無しおま環かもしれませんが、これを入れるとTの時間経過が通常速度に戻ります。 ID:k0OTA0OG Day:163 Good:0 Bad:0- Good
- Bad
- 54061
#12名無しGood!よくわからんが、軽くなりそうなのでヨシ! ID:ZjODYyM2 Day:509 Good:0 Bad:0- Good
- Bad
- 54061
#11名無し#10 プロパティ云々のところは理解できなくて端折ってしまったのですが、スクリプト含むModがUpdate時に、NewGame必須のときとそうではないときがあるように、共通のセオリーはありそうですね。今度調べてみます。 ID:M2NjE1ZT Day:105 Good:0 Bad:0- Good
- Bad
- 54061
#10名無しPOSTでの会話だとスクリプトのプロパティ自体はいじってないとの事で、プロパティ変更によってセーブデータに互換性がなくなる疑いはない的な話をしてましたね。
これを使用してから外したセーブでもクラッシュとかはない…と一応は考えていいのか。
xEditに影響がある可能性についても話されてたけどそれはこれからの検証ですね。 ID:Y4NTBmNz Day:1 Good:0 Bad:0- Good
- Bad
- 54061
#9名無しバニラのスクリプトの改変なので、導入にはNewGameが必要そうな気がしますが、作者様は「必ずしも正解ではない」と答えていますね。
ちなみにUSSEPもよく読んだらNewGame必須とはどこにも書いてなかったです。(途中で入れることはないから知らなかった。)
稼働中のスクリプトは途中で変更したらマズイと思っていたのですが、どうなんでしょうね… ID:M2NjE1ZT Day:105 Good:0 Bad:0- Good
- Bad
- 54061
#8名無しつまりスカイリム名物無駄に重い無駄な処理の無駄スクリプトを変更して最適化するよ、という事か
当然ニューゲームでないとダメらしいがパフォーマンスに有意な影響が出るかは神のみぞ知るだな…
低スペPCにMod山盛り常時30FPSとかの地獄状態なら効き目はありそうだが ID:Y4NTBmNz Day:1 Good:0 Bad:0- Good
- Bad
- 54061
#7名無しポストにて「具体的にはどのような変更を行ったのか?」という質問に作者さんが回答しています。
それによると
たとえばトラップの罠判定で
lv1の罠?→yes/noの場合は次へ lv2の罠?→yes/noの場合は次へ lv3の罠?→yes/noの場合は次へ lv4の罠?→yes/noの場合は次へ
というのを少ない判定で終わるようにしたりとか
ウェアウルフ変身スクリプトでプレイヤーのデータを20回取得しているのを
一回取得してあとはその数字を使いまわすようにしたりとか
これと似たような動きをしているものを同様に効率化したり等をしたということでした ID:JkMDQ2MG Day:62 Good:2 Bad:0- Good
- Bad
- 54061
#6名無しGood!入れて数時間遊んでみたけど、ImmersiveInteractionsがスタックしなくなった…気がする! ID:c5MjZkND Day:104 Good:0 Bad:0- Good
- Bad
- 54061
#5名無し一応プログラマではないのですが、入れ得系MODという認識でいいのかな? ID:MzOGM4ZD Day:0 Good:1 Bad:0- Good
- Bad
- 54061
#4名無しプログラマではないのでサッパリ分かりませんがスクリプトの負荷が軽減されたら結構恩恵がありそう ID:M4NWVhMG Day:184 Good:0 Bad:0- Good
- Bad
- 54061
#3名無しGood!とにかくすごそう ID:k0Y2IyNG Day:221 Good:0 Bad:0- Good
- Bad
- 54061
#2名無し一応プログラマなので、作者の言わんとしていることは分かる。試しに入れてみようか。 ID:IwNWI1Nz Day:88 Good:0 Bad:0- Good
- Bad
- 54061
#1名無しGood!全然わからんけど良さそうなんでMODジャンキーとしては
入れざるを得ない ID:MyMzRiOD Day:265 Good:1 Bad:0- Good
- Bad
- 54061
- 機械翻訳 説明引用 [原文]
「効率を高める目的で、多くのバニラゲームスクリプトを書き換えます。 遅い「便利な機能」を、より高速なネイティブ関数に置き換えます。 「フェイルファスト早期失敗」アプローチを実装す...」
スポンサーリンク
スポンサーリンク