私の環境で頻出するCTDについて調べてみました。
結論
以下の記事を読んでチューニングしましょう。
チューニングしてから2年以上経過していますが、以下で説明している2つのCTDはほぼなくなりました。
LooseFileStream
Unhandled exception "EXCEPTION_ACCESS_VIOLATION" at 0x7FF65EDC7543 Fallout4.exe+1D37543
STACK:
[RSP+60 ] 0x7FF66308F160 (BSTextureStreamer::Manager*)
[RSP+118] 0x26D4AE82060 (BSResource::`anonymous namespace'::LooseFileStream*)
ウェブを検索したところ、だいたいこんな情報がありました。
- BA2ファイルが多すぎる
- BA2ファイルを参照しているプラグインが多すぎる
- ルーズファイルがある
- ロード順を見直したらなおった
BA2ファイルが多すぎる
具体的にいくつといった情報は見つけられませんでした。
多すぎるなら減らせばいいということで、バニラのBA2に統合できるものは統合し、追加しているものはカテゴリごとにまとめてみました。
バニラのBA2に統合する手順についてはBA2ファイルを再構築するにて解説しています。
効果はあまり感じられませんでした。
BA2ファイルを参照しているプラグインが多すぎる
プラグインをマージして数を減らします。
マージにはMerge Pluginsを使いました。配布元はSkyrim LEのページですが、Fallout 4もサポートしています。
効果はあまり感じられませんでした。
ルーズファイルがある
バニラでもルーズファイルはあるので信憑性にかけるのですが、とにかくBA2にまとめられるものはまとめてみました。
効果はあまり感じられませんでした。
ロード順を見直したらなおった
情報が曖昧すぎて不明です。
ルーズファイルを増やしてみた
BA2ファイルを減らす手っ取り早い方法が、BA2を展開してルーズファイル化することです。
片っ端からルーズファイル化してみました。副作用としてゲームの起動時間が異常にかかるようになります。特に武器のModをルーズファイル化するとまずいようです。
効果はあまり感じられませんでした。
fallout4.ini
Performance optimization guide – mod list and tweaksを読んでいて気になったことがありました。
ini tweaksにあるTextures optimizationの項目です。
iTextureDegradeDistance0=1600
iTextureDegradeDistance1=3000
iTextureUpgradeDistance0=1200
iTextureUpgradeDistance1=2400
bForceUpdateDiffuseOnly=0
fFlickeringLightDistance=1024
これを記述する前は、Texture Load Workaroundに従って非常に大きな値に設定していました。おそらく遠くのオブジェクトを綺麗に見せるとか、オブジェクトに近づいてもテクスチャが遠景用のままでボケた状態になってしまう不具合を回避する手段として書いたように記憶しています。
この記述にしてからCTDがピタっと無くなりました。
何度かニューゲームを繰り返し、メインクエストのミニッツメンルートをクリアしたり、1か月ほどプレイしましたが、CTDがまったくなくなりました。
nvwgf2umx.dll
Unhandled exception "EXCEPTION_ACCESS_VIOLATION" at 0x7FFFA4530902 nvwgf2umx.dll+07D0902
ウェブを検索したところ、だいたいこんな情報がありました。
- Nvidia GeForceのドライバを昔のバージョンに下げたらなおった
- Fallout 4 Vulkan Rendererを使ったらなおった
ドライバを昔のバージョンに下げる
ドライバのバージョン報告は人によってマチマチで、環境によってかわるようです。私はGTX 1080のマルチモニタ環境なのですが、古いドライバはいずれも効果なしでした。
ドライバのバージョンが古いと画面が突然ブラックアウトして数秒後に復帰するという不具合が起こるので、これをなおすために常に最新版に更新し続けています。
Fallout 4 Vulkan Rendererを使う
Vulkan RendererについてはVulkan Rendererを使うで解説しています。
確かにこのCTDはなくなるのですが、それはnvwgf2umx.dllを使わなくしたからであって、Vulkan RendererでもCTDはあります。
何より突然FPSが低下して元に戻らなくなるという不具合があるせいで、解決にはなりませんでした。
LooseFileStreamとnvwgf2umx.dllの要因は同じかもしれない
この2つのCTDはだいたい同じ場所、同じタイミングで発生します。そのことから、同じ要因で発生しているのではないかと考えられます。
ほとんどは屋外の移動中に発生します。ロード画面を経由せずセルを読み込むと発生するように思います。屋内への移動でもエレベーター経由だとロード画面を経由しません。Vault 95が該当します。
ダイヤモンドシティ周辺を移動していると、何かのタイミングで高確率でCTDする状況になることがあります。この状態になってしまうと何度試してもダメなのですが、ロード画面を経由して移動すると成功します。
ロード画面を経由させる移動はファストトラベル、コンソールのmovetoやcocコマンドがあります。
ShadowSceneNode
Unhandled exception "EXCEPTION_ACCESS_VIOLATION" at 0x7FF64FB414E8 Fallout4.exe+04114E8
STACK:
[RSP+350] 0x27ABF51E780 (ShadowSceneNode*)
Name: "shadow scene node"
Skyrimでもよく発生するのですが、さまざまな原因で発生するらしく、これといった解決策はないようです。
America Rising 2 – Legacy of the Enclave
このModで場所移動をするシーンがあり、LooseFileStreamのCTDが確定で発生して進めなくなりました。
Buffout 4のBSTextureStreamerLocalHeapをtrueにしたところ解決できました。