2016/9/21 更新
Windows 8.1やWindows 10では、BF3を起動しようとすると「DirectX Error」が発生するようです。この記事では、その「DirectX Error」の解決方法をいくつか紹介します。なお、私のWindows 10環境では解決策3または4を実行することでBF3をプレイできるようになりました。
※ファイルの拡張子は表示する設定にしておいてください。エクスプローラー上部の「表示」→「ファイル名拡張子」にチェックを入れると、拡張子が表示されるようになります。
① 「bf3.exe」を探す
BF3のインストール先フォルダ内にあります。ほとんどの人は「C:\Program Files (x86)\Origin Games\Battlefield 3」内にあるはずです。
② 「bf3.exe」を右クリック→「プロパティ」
③ 「互換性」タブで「互換モードでこのプログラムを実行する」にチェック→「Windows Vista (Service Pack 2)」を選ぶ
④ 「OK」
起動できなければ互換性設定は元に戻して大丈夫です。
バイナリを書き換える方法は2つあり、有志制作のツールを使う方法(A)とバイナリエディタを使って自分で書き換える方法(B)があります。方法Aのほうが簡単でおすすめです。ただし、そのツールに悪意がないことは保証できませんので、一応自己責任でご利用ください。
→ Patch program for Battlefield3/4 DirectX Error (CreateSwapChain)
② ダウンロードした「BFExeFix.exe」をダブルクリックして実行
③ 「Find bf3.exe (Battlefiled 3)」をクリックすると「File Path:」が自動で書き込まれます。書き込まれなかった場合は「bf3.exe」のファイルパスを自力で探してください。
④ 「Perform Patch」をクリックするとバイナリが書き換えられます。同時に、バイナリ書き換え前のファイルが「bf3.exe.backup」という名前でバックアップされます。
① 初めにバックアップを作成しておきます。「bf3.exe」をコピーして「bf3.exe.backup」という名前にしてください。
② 次のサイトからStirlingをダウンロード
→ Stirlingの詳細情報 : Vector ソフトを探す!
③ ダウンロードされたファイル(.lzh)を右クリック→「すべて展開(T)...」→「展開(E)」
④ 展開されたフォルダ(stir131)内の「Stirling.exe」を実行
⑤ 「bf3.exe」を画面内にドラッグ&ドロップするなどして開く
⑥ メニューバーの「検索・移動(S)」→「指定アドレスへ移動(J)...」
⑦ 「01C6AE71」と入力(コピペ)して「OK」
⑧ 「00」と入力
⑨ メニューバーの「ファイル(F)」→「上書き保存(S)」して、Stirlingを終了する
まずは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」という名前に変えてください。
① デスクトップ画面左下で右クリック→「コントロールパネル」を開く
② 「時計、言語、および地域」→「地域」をクリック
③ 「管理」タブで「システム ロケールの変更(C)...」をクリック
④ システムロケールを「英語 (米国)」に変更して「OK」
変更を適用するには再起動してください。
2015/2/4 コメントを頂いたので解決策5を追加しました。
→BF3 Windows8.1 DirectXエラーをAppLocaleで回避する方法:曹瑜のブロマガ - ブロマガ
MicrosoftからのAppLocaleの提供は終了しました。WebArchiveからであればダウンロード可能ですが、私のWindows 10ではAppLocaleを使ってもBF3を起動できませんでした。
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」をダブルクリックして実行
③ 「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を起動する
→BF3 Windows8.1 DirectXエラーをAppLocaleで回避する方法:曹瑜のブロマガ - ブロマガ
MicrosoftからのAppLocaleの提供は終了しました。WebArchiveからであればダウンロード可能ですが、私のWindows 10ではAppLocaleを使ってもBF3を起動できませんでした。
参考
- Windows8.1・Windows10にしてBF3が起動できない場合の直し方(自己責任):塩分のブロマガ - ブロマガ
- BF4のDirect X エラー: 論外なおちゃん
- Windows 8.1にしたらBF3がDirectX エラーを起こして起動しなくなった - Signal Flag
- 気の赴くままに: BF4のWin8.1におけるDirectXエラー回避方法
- これで解決!バトルフィールド4/BATTLEFIELD4 Directx エラー 修正方法 まとめ