简单来说,bf3.exe的文件描述“Battlefield 3™”中的字符“™”在操作系统语言不采用UTF-8时导致DirectX运行错误。解决方法有二:修改操作系统字符集;干掉这个“™”。显然后者涉及的改动更小,采用这种方法。
当然,之前也不是没有尝试过Frostbite_Fix_BF3.exe这个程序,但在运行多人游戏的时候需要在后台挂着一个并不开源的、可能介入游戏运行的程序,总有些不太放心,还是决定采取更可控的、原理公开的方式来解决。以下是详细步骤。
首先当然是备份bf3.exe这个文件。
然后采用UltraEdit等二进制编辑器编辑该可执行文件。搜索
42 61 74 74 6C 65 66 69 65 6C 64 20 33 99 00
即字符串“Battlefield 3™”,将其中的“99”(即字符“™”)修改为“00”——一个无意义的字符。修改后如下。
42 61 74 74 6C 65 66 69 65 6C 64 20 33 00 00
保存该文件,此时bf3.exe的文件描述应该已经变为“Battlefield 3”加一个空字符。运行战地3时不再出现DX错误。
改天有机会把修改好的文件传上来,方便直接用于替换。