ヴァンのログ

好き好んで書くブログ

【Skyrim】 オート、クイック、コンソール、すべてのセーブで画面がフリーズする問題

セーブするとSkyrimがフリーズ(画面固まる)する!CTDする!

f:id:lemog:20180506114248j:plain

こんにちは。私もみなさんと同じようにSkyrimで遊んでおりましたところ、Cellロード(室内への移動)で画面フリーズ→強制終了の流れが多発するようになりました。最初は無限ロードが起きているのだと思い無意味にSKSEプラグインを入れてみたり外してみたりしたのですが、実際は暗転後のオートセーブが原因でフリーズしていた様子。その後ほかのセーブ(クイック、コンソール)など試してみても、ランダムながら同様にフリーズする現象が頻発しました。

この問題が起きる原因が、当初はAlpha版のAutoHarvest2かなと思っておりました。基本的にセーブ時のフリーズやCTDは、スクリプトエラーや肥大化によるものが殆どみたいなので。AutoHarvest2を停止してセーブ…フリーズする。残るは未だ更新されぬSKEEプラグインだろうか…と外してみる…フリーズする。

もうお手上げだ。こうなりゃ海外サイトを片っ端から探すしかねぇ!

というわけで泣きながら海外フォーラムを漁り、(主にNexus)原因特定までなんとか漕ぎつけました!

f:id:lemog:20180506114948j:plain

出典:SSE CTD on Save After Hours of Gameplay - Skyrim Special Edition Mod Troubleshooting - The Nexus Forums

いた!いたぞー!同じような事例がありました。どうやらこの問題が起こっている人のセーブデータフォルダには、0kbの中身が無いTMPファイルが生産されるらしい…。自分のところも確認してみると、あ、あるぞ!確かにある!そしてこのスレッドでは原因特定やfixに14ページもの議論と報告を積み重ねており、まさに私(達)にとって救いの神スレとなったのは言うまでもありません。海外ユーザーの協力意識には頭が下がります。

原因特定

原因は多くのスクリプト処理が実行されている状態でセーブすること、らしいです。問題の多くは多数のNPCが処理される街の中で起きており、また戦闘中に画面を開く事でCTDする(メニューからのオートセーブ)という報告もありました。とにかく大量のスクリプト処理がアクティブで動いているときにセーブをすると、うまく処理できずにCTDしてしまう、というのがスレッド内での一つの定説となっていました。

また合わせてスクリプト処理が多いMODや、この問題を引き起こしやすいブラックリストも作成されていましたので載せておきます。ただし報告者の殆どはSKSE64を使用しており、SKSE64が未だ不安定なものであることに留意する必要があります。つまり根本的な解決に至ってはいないということです。

ブラックリスト指定されていたMOD

  • Birds of Skyrim 
  • Skybirds
  • Diverse Dragons
  • Convenient Horses
  • PC Head Tracking and Voice Type SE (外したら解決したという報告が多数ありました)

街中に大量の鳥や動物、NPCを追加するものは特にスクリプト処理が重く、CTDしやすい事が断定されています。特にBirds of SkyrimやSkybirdsのようなMODは同時に2300以上ものスクリプト処理が行われるため、この問題が顕著になると報告されています。

この問題の重点は、特定のMODではなく多くのスクリプトが一度に何度も呼び出されていることに起因しています。なので上記のMODを外したからといって、そういった処理が多いMODが未だ導入されっぱなしであれば問題は再び起こる可能性があります。

なので、設定次第では上記MODを入れっぱなしでもセーブCTD問題が起こらない可能性も十分にあります。

本体バージョンの問題の可能性

このCTDの原因がパピルススクリプト自体であることがわかった後、スレッドではMODの構成やセーブを一切変えずにプレイしてきたのに、ある特定のバージョンアップデート後からこのCTDが頻発するようになった、という報告がありました。それは少なくとも1.5.23アップデート前までは普通に遊べていたとされています。またSKSE64を外し、SKSEを使用するMODをすべて外した状態でプレイしていても、たった2~3時間のプレイでセーブがCTDし出すぞ!という報告がされました。投稿者はSKSE64も原因から外すべきだろうという指摘をしています。

またSkyrimのセーブデータには文字列数上限が65,535文字という制限が設けられています。この文字数とはバニラやMODで追加されたスクリプトに関する情報が記録されるときの文字列テーブルの事であり、これが上限を超えるとセーブデータが破損してしまうという問題を抱えていました。ちなみにSE版でもこの制限は変わっていません。

というのも、SkyrimSE版はLE版と同じ基本エンジンに2倍のコンテンツを追加した、いわば公式MOD追加版みたいなものなのです。LE版に比べてはるかに頑丈ですが、ゆっくりと壊れていくのは避けられないようです。

解決策と回避策

現段階では、なるだけスクリプト処理が少ないMODに絞って入れ、また頻繁にセーブをすることで突然のセーブCTDへ対処するよう呼びかけられています。また一度この問題が起こると、それ以降スクリプト処理が軽くなろうがCTDし続けるっぽいという話も上がっており、CTDし出したらだいぶ前のセーブから始めた方が安全かも…という議論もありました。