Introduction
最近和朋友心血来潮打算联机玩红警2,这个 2000 年发行的游戏已经有了 20 年的历史,但是至今仍然值得一玩,里面的剧情也相当的有趣,那么接下来就介绍下如何让红警正确工作在 Windows 10 下。让其正确工作,主要需要解决两部分兼容问题,一个是最重要的图形库兼容问题,红警2 采用的是 DirectX 7.0 技术,而 Win 10 早已采用 DirectX 12.0 图形库。另一个问题则是网络问题,如果你想联机和你的网友玩,那么一方面需要将已经不再被支持的 IPX 协议转换成 IP 协议,另一方面则需要设立软件定义局域网。
DirectX 兼容解决方案
在红警中唯一和 DirectX 相关的 DLL 就是 ddraw.dll,因此我们只需要替换掉此 DLL 即可。
Github 上存在多个 DirectX 解决方案(见参考资料),笔者测试每个都存在一切问题(例如切换出桌面后无法正确切回)。最终测试比较稳定的是以下的
https://github.com/narzoul/DDrawCompat/releases
IPX/IP 兼容解决方案
由于红警2 使用的是上古的 IPX 协议进行通信,并且 WIN 10 已经将该协议废弃,因此我们也需要将相关 API Hook 并进行相应的替换,以下开源项目提供了 IP/UDP 协议的替换方案。笔者大致估计 IPX 协议类似于一种 IP 广播协议,因此 IP/UDP 也可实现相应功能。
https://github.com/solemnwarning/ipxwrapper/releases
软件定义局域网
要想和网友联机玩局域网游戏,需要组建一个虚拟的局域网,笔者推荐使用 Zerotier,安装过程十分简单,玩家都加入同一个定义好的网络即可,最后记得讲上一步 IPXWrapper 的相关设置选中相应的网卡。那么一切就准备就绪,可以开心的玩耍了。