世間では BF6 がセール価格になっていますが、そういえば BF3 のキャンペーン(シングルプレイ)も当時は評判良かったなとふと思い出してやりたくなりました。
空母の発艦シーンとか未だに YouTube で 4K 120fps の動画が上がったりしていますしね。
で、EA App(当時は Origin という名前でしたね)でサクッと BF3 をインストールして起動。
ブラウザで BATTLELOG が立ち上がり、そういえばブラウザで起動するんだったな懐かしーと当時を思い出しながら PLAY CAMPAIGN をクリック。起動を待っていたところ、
ピロリン!

はい、エラーが発生して起動しません。
DirectX Error
DirectX function "m_dxgiFactory->CreateSwapChain( m_device, &sd, &m_swapChain.assignGet())" failed with DXGI_ERROR_INVALID_CALL: The application has made an erroneous API call that it had enough information to avoid. This error is intended to denote that the application should be altered to avoid the error. Use of the debug version of the DXGI.DLL will provide run-time debug output with further information..
まあ何だかんだ 15年前(2011年11月)発売のゲームだから仕方ないんですかね。でも BF BC2 はスムーズに起動したんだけれどなと思いながら解決方法を調べたところ、
「言語設定を英語にしたら起動するよ!」
という解決方法が多くヒットします。
ただなんて言うんでしょう。言語設定を変えてまでやりたいかと言われるとそうでもないんですよね。再起動必要だし諸々の表示が英語になっちゃうし。
というわけでもう少し調べてみたところ、別の解決方法を見つけました。
「BF3.exe をバイナリエディタで編集すると起動するよ!」
これなら大掛かりなことはしなくて良さそうです。早速バイナリエディタを用意しましょう。
バイナリエディタは HEX(16進数)を扱えれば何でもよいので、とりあえず現在開発が続いている中で良さそうな ImHex を使います。
まず BF3.exe のあるインストール先フォルダを開きます。EA App の「プロパティ > インストール先 > フォルダを開きます」で開けます。
万が一失敗したときに備えて BF3.exe をコピーしておきます。

次に BF3.exe をバイナリエディタで開きます。ImHex はプロ向けの様々な機能が入っているのでウインドウがごちゃごちゃしていますが、左の Hex Editor だけしか使わないです。

Hex Editor 上で Ctrl + F を押して検索ダイアログを表示し、以下の文字をコピペします。
42 61 74 74 6C 65 66 69 65 6C 64 20 33 99 00
検索すると 01C6AE60 の行がヒットします。

ヒットした数字の中の「99」を「00」に編集します。

Ctrl + S で保存します。変更を示す文字の赤色が消えたら対応完了です。
もう一度 BATTLELOG で PLAY CAMPAIGN をクリックしてみましょう。今度は起動するはずです。
以上です。それでは良い BF3 ライフを! ちなみに最後までプレイはできましたが、途中敵が消えたり進行フラグがおかしくなったりと動きが少し怪しかったです。
なお、変更した「99」はタイトルの「Battlefield 3 ™」の「™」に当たる部分で、これが日本語や中国語環境だと文字化け的な何かを起こしてエラーになるようです。それぐらい修正してくれ EA よ。