2016/9/21 更新

win10 directx error unfocused

Windows 8.1やWindows 10では、BF3を起動しようとすると「DirectX Error」が発生するようです。この記事では、その「DirectX Error」の解決方法をいくつか紹介します。なお、私のWindows 10環境では解決策3または4を実行することでBF3をプレイできるようになりました。

※ファイルの拡張子は表示する設定にしておいてください。エクスプローラー上部の「表示」→「ファイル名拡張子」にチェックを入れると、拡張子が表示されるようになります。

解決策1 BF3の互換性設定を変更する

Windows 7ならこの設定で直るかもしれません。

① 「bf3.exe」を探す
BF3のインストール先フォルダ内にあります。ほとんどの人は「C:\Program Files (x86)\Origin Games\Battlefield 3」内にあるはずです。

② 「bf3.exe」を右クリック→「プロパティ」

③ 「互換性」タブで「互換モードでこのプログラムを実行する」にチェック→「Windows Vista (Service Pack 2)」を選ぶ

④ 「OK」

起動できなければ互換性設定は元に戻して大丈夫です。

解決策2 DirectXとVisual Cを再インストールする

あまり効果が無さそうです。飛ばしていただいて構いません。

① DirectXの再インストール
「Battlefield 3\__Installer\directx\redist」内の「DXSETUP.exe」を実行します。

② Visual Cの再インストール
「Battlefield 3\__Installer\vc\vc***\redist」内の「vcredist_x64.exe」を実行します。

解決策3 BF3のバイナリファイルを書き換える

BF3のバイナリファイルを1箇所書き換えます。この方法は成功例が多く報告されており、私もこの方法で解決しました。ただし、マルチプレイではバイナリ書き換えがチートと判断されてキックされる可能性があるのでご注意ください。シングルプレイのキャンペーンだけなら問題なく遊べると思います。

バイナリを書き換える方法は2つあり、有志制作のツールを使う方法(A)とバイナリエディタを使って自分で書き換える方法(B)があります。方法Aのほうが簡単でおすすめです。ただし、そのツールに悪意がないことは保証できませんので、一応自己責任でご利用ください。

方法A ツールを使って自動で書き換える
① 次のページの下の方の「BFExeFix.exe (16 kB - downloaded ***** times.)」をクリックしてダウンロード
Patch program for Battlefield3/4 DirectX Error (CreateSwapChain)

② ダウンロードした「BFExeFix.exe」をダブルクリックして実行

win10 directx error bfexefix

③ 「Find bf3.exe (Battlefiled 3)」をクリックすると「File Path:」が自動で書き込まれます。書き込まれなかった場合は「bf3.exe」のファイルパスを自力で探してください。

④ 「Perform Patch」をクリックするとバイナリが書き換えられます。同時に、バイナリ書き換え前のファイルが「bf3.exe.backup」という名前でバックアップされます。

方法B バイナリエディタを使って手動で書き換える
バイナリエディタで「bf3.exe」のアドレス「01C6AE71」を「99」→「00」に書き換えます。バイナリを下手に弄るとBF3が起動しなくなる可能性があるので注意してください。詳しい手順は以下の通りです。

① 初めにバックアップを作成しておきます。「bf3.exe」をコピーして「bf3.exe.backup」という名前にしてください。

② 次のサイトからStirlingをダウンロード
→ Stirlingの詳細情報 : Vector ソフトを探す!

③ ダウンロードされたファイル(.lzh)を右クリック→「すべて展開(T)...」→「展開(E)」

④ 展開されたフォルダ(stir131)内の「Stirling.exe」を実行

⑤ 「bf3.exe」を画面内にドラッグ&ドロップするなどして開く

⑥ メニューバーの「検索・移動(S)」→「指定アドレスへ移動(J)...」

⑦ 「01C6AE71」と入力(コピペ)して「OK」

⑧ 「00」と入力

⑨ メニューバーの「ファイル(F)」→「上書き保存(S)」して、Stirlingを終了する

解決策3.1 サーバーからキックされたら
マルチプレイでサーバーからキックされ、以下のようなエラーが表示された場合は、PunkBusterを再インストールしてみてください。それでもダメだった場合、書き換えたバイナリファイルを元に戻す必要があります。PunkBusterとは、プレイヤー全員が必ず導入しなければならないチート対策プログラムのことです。
エラーゲームが切断されました:PunkBusterからキックされました。提示された理由:PunkBuster kicked player '******' (for 0 minutes) ... RESTRICTION: Corrupted File/Memory [98080837]

まずはPunkBusterの再インストールを試してみます。

① フォルダ「Battlefield 3」内にある「pbsvc.exe」を実行
② 「Install/Re-Install PunkBuster Service」にチェックされていることを確認して「Next」
③ 同意する場合は「I Agree」をクリック
④ 「Next」が押せるようになったらクリック
⑤ しばらく待って「Tests completed successfully without error.」と表示されたら「OK」
⑥ 「Finish」

これでもサーバーからキックされるようなら、バイナリファイルを元に戻す必要があります。「bf3.exe」を削除してから、「bf3.exe.backup」を「bf3.exe」という名前に変えてください。

解決策4 Windowsのシステムロケールを変更する

Windowsのシステムロケールを変更します。この方法でほとんどの人はBF3を遊べるようになりますが、他のアプリケーションの動作に支障を来す可能性があります(日本限定のゲームが起動しなくなる、文字化けする、等)。

① デスクトップ画面左下で右クリック→「コントロールパネル」を開く

② 「時計、言語、および地域」→「地域」をクリック

③ 「管理」タブで「システム ロケールの変更(C)...」をクリック

④ システムロケールを「英語 (米国)」に変更して「OK」

変更を適用するには再起動してください。

解決策5 AppLocaleを使ってOriginを起動する

2015/2/4 コメントを頂いたので解決策5を追加しました。
BF3 Windows8.1 DirectXエラーをAppLocaleで回避する方法:曹瑜のブロマガ - ブロマガ


MicrosoftからのAppLocaleの提供は終了しました。WebArchiveからであればダウンロード可能ですが、私のWindows 10ではAppLocaleを使ってもBF3を起動できませんでした。

参考