診断マトリクス:Unreal Engine D3D Device Lostエラーの原因と対策
『黒神話:悟空』や『The First Descendant』などUnreal Engine 4/5採用タイトルにおいて、ゲームが突如クラッシュし「LowLevelFatalError ... Unreal Engine is exiting due to D3D device being lost. (Error: 0x887A0006 - 'HUNG')」と表示されるトラブルが多発しています。これはグラフィックボードが高負荷のシェーダー処理を実行中に、Windowsの応答監視機能によってドライバが強制リセットされたために発生します。
| エラーコード・症状 | 主な発生要因 | 影響を受けるシステム層 | レジストリTdrDelay有効性 | 推奨される具体的解決手順 |
|---|---|---|---|---|
DXGI_ERROR_DEVICE_HUNG (0x887A0006) | シェーダー負荷がWindowsのデフォルト応答監視時間(2秒)を超過 | GPUコマンドキュー / TDR | 極めて有効 | レジストリの TdrDelay を8〜10秒に延長設定 |
DXGI_ERROR_DEVICE_REMOVED (0x887A0005) | GPUファクトリーOCの不安定性、電源の瞬間的な電圧降下 | PCIe給電 / ハードウェア | 部分的(根本原因は隠蔽) | AfterburnerでGPUコアを50MHzダウンクロック、電力制限95% |
DXGI_ERROR_OUT_OF_MEMORY (0x887A000E) | レイトレーシングやLumenによるVRAM容量の物理的枯渇 | DirectX 12メモリ管理 | 無効(ハードウェア上限) | テクスチャ品質を一段階下げる、DLSS/FSRのQuality設定適用 |
| シェーダーコンパイル時クラッシュ | Intel第13/14代CPUのVmin Shift劣化による演算ミス | CPUマイクロコード / BIOS | 無効(CPU物理不具合) | マザーボードのBIOSを最新マイクロコード(0x129+)に更新 |
Windows TDR(タイムアウト検出と回復)の仕組み
WindowsにはGPUのハングアップを防ぐ監視機能が搭載されています:
- ゲームがLumenやNanite等の膨大な計算をGPUに指示すると、コア使用率が100%に達します。
- その処理が 2秒間 完了しない場合、WindowsはGPUが完全にフリーズしたと判断します。
- OSはディスプレイアダプタを強制的に再起動(画面が一瞬暗転)させます。
- この際DirectX 12の描画コンテキストが消滅するため、Unreal Engineは「D3Dデバイス喪失」と検知して強制終了します。
実践的な解決手順
ステップ1:レジストリによるTDR制限時間の延長
Win + Rを押し、regeditと入力してレジストリエディタを開きます。- 次のキーに移動します:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers - 右側スペースで右クリック -> 新規 -> DWORD (32ビット) 値 を選択。
- 名前に
TdrDelayと入力。 - ダブルクリックして表記を 10進数 に切り替え、値のデータを 8 に設定します(猶予時間を2秒から8秒に延長)。
- 同様に
TdrDdiDelayというDWORD値を作成し、10進数で 8 に設定します。 - PCを再起動して設定を反映させます。
ステップ2:起動オプションでDirectX 11に切り替え
ゲーム側のDirectX 12実装が不安定な場合:
- Steamのライブラリでゲームを右クリック -> プロパティ -> 一般 -> 起動オプション。
-dx11または-d3d11と入力して起動します。