診断マトリクス:オーバーレイフック競合の症状と解決策
PCゲームの起動直後にクラッシュする、Alt + Tab での画面切り替え時に真っ暗なままフリーズする、あるいはゲームのフレームレートが突如20%以上低下する場合、その70%以上は Discordのゲーム内オーバーレイ と他のキャプチャ・監視ツール(OBS、MSI Afterburner/RTSS、GeForce Experience等)によるグラフィックAPIフックの競合が原因です。
| 併用している常駐ソフトウェア | 発生する不具合・クラッシュの症状 | 技術的な原因メカニズム | 深刻度 | 推奨される具体的対策 |
|---|---|---|---|---|
| Discordオーバーレイ + OBSゲームキャプチャ | 起動時のロード画面またはメインメニューで即座に強制終了 | 双方のDLLがDirectXの Present() 関数を同時に横取り(Hook)する | 致命的 | RTSSで注入遅延(5秒)を設定、またはOBSをウィンドウキャプチャに変更 |
| Discordハードウェアアクセラレーション | 画面の一瞬の暗転、周波数の異なるマルチモニター環境での画面固着 | ChromiumのGPUレンダリングプロセスがOS側でデッドロック | 中 | Discordの「詳細設定」から「ハードウェアアクセラレーション」を無効化 |
| Discordオーバーレイ + RTSS(Afterburner) | 微小なカクつき(スタッター)、ボイスチャットアイコンの描画崩れ | DirectX 12のコマンドキュー内でフックの優先順位が衝突 | 中 | RTSS側で「Custom Direct3D support」を有効化する |
| Discordオーバーレイ + 厳格なアンチチート | ゲームが起動拒否され「Untrusted system file: DiscordHook64.dll」と表示 | アンチチートがDLLインジェクションを不正ツールと誤認 | 起動不可 | Discord設定で該当ゲームのオーバーレイのみをピンポイントでOFF |
グラフィックスフック競合でクラッシュする仕組み
Discordがゲーム画面上に通話相手のアイコンやテキストを表示する際:
- Discordはゲームプロセスのメモリ空間へ
DiscordHook64.dllを注入します。 - DirectX等のスワップチェーン描画関数(
IDXGISwapChain::Presentなど)をフックして割り込みます。 - ゲームが画面を出力する直前の数マイクロ秒の隙間に、透明なオーバーレイ画像を合成します。
- この時、OBSやRTSS、Steamオーバーレイが全く同じメモリポインタを同時にフックしようとすると、アクセス違反(Null Pointer / Access Violation)が発生し、ゲームが例外を吐いて即死します。
安定化のための実践手順
ステップ1:Discordのハードウェアアクセラレーション無効化
- Discord左下の歯車アイコン(ユーザー設定)を開きます。
- 左メニューの「詳細設定」を選択。
- 「ハードウェアアクセラレーション」のトグルを OFF に切り替えてアプリを再起動します。
ステップ2:RTSS(Afterburner)のフック遅延設定
- RTSSの画面右下にある Setup をクリック。
- 「General」タブにある Injection delay (milliseconds) を探します。
- 数値を
5000(5秒)に設定し、ゲーム本体がグラフィックコンテキストを安定生成した後にフックをかけるようにします。
ステップ3:個別ゲームのオーバーレイ無効化
- Discordの「登録済みのゲーム」設定を開きます。
- 動作が不安定なゲームの横にある「オーバーレイの切り替え」アイコンをOFFにします。