网页版红警 2是一个令人兴奋的项目,它允许用户在现代浏览器中直接运行《红色警戒 2》(RA2)和《尤里的复仇》(YR)的原版 x86 程序。与传统的重制版或引擎重写项目不同,该项目通过 v86(一个用 JavaScript 编写的 x86 虚拟机)、自定义固件以及 Win32/DirectX 兼容层,实现了在不启动完整 Windows 操作系统的情况下运行游戏。

技术亮点:ABI 兼容而非引擎重写
- 核心架构:基于 v86 虚拟机,提供 ABI(应用二进制接口)兼容层。这意味着游戏代码认为自己在原生的 x86 环境中运行,直接调用 DirectX 和 Win32 API。
- 对比 Chrono Divide:Chrono Divide 通常涉及对游戏引擎的深度修改或重写以适配 Web 环境,而本项目保留了原版二进制文件,仅通过虚拟化层进行适配。
- 性能表现:实测显示冷启动速度更快,战场运行流畅。在 30ms 延迟的中继连接下,多人联机对战依然顺滑。
当前状态与功能 (Alpha)
目前项目处于 Alpha 阶段,主要支持以下功能:
- 本地资源导入:支持导入你合法持有的 RA2 或 YR 游戏资源(压缩包或文件夹)。
- 版本选择:自动检测并允许选择 RA2 或 YR。
- 游戏模式:支持遭遇战(Skirmish)、存档读取、地图包加载。
- 联机对战:支持自建 WebSocket Relay 进行多人联机。
- 语言支持:网页界面根据浏览器语言自动切换英/简中;游戏内文字取决于导入的资源包语言。
注意:目前主要稳定支持双人短局。大规模多人交战、复杂 MOD、长篇战役或公网长局的兼容性仍在测试中。
如何开始游戏
- 访问网站:打开 ra2.games。
- 准备资源:确保你拥有合法购买的《红色警戒 2》或《尤里的复仇》游戏文件。
- 导入游戏:
- 点击「选择文件…」上传游戏压缩包,或「选择文件夹…」选择本地目录。
- 系统会自动校验资源完整性,列出缺失文件。
- 启动游戏:
- 若只检测到一个版本,自动启动。
- 若同时存在 RA2 和 YR,手动选择要玩的版本。
- 开始对战:进入原版菜单,选择「单人游戏」->「遭遇战」,配置地图、阵营和电脑对手即可开始。
多人联机指南
联机依赖于一个 Relay 服务器,负责在玩家浏览器之间转发数据。
1. 部署 Relay 服务器
你可以使用 Docker 或 Node.js 自行部署中继服务器。
方式一:Docker Compose (推荐)
git clone <repository-url>
cd <repository-directory>
docker compose -f packages/relay/compose.yaml up -d --build
docker compose -f packages/relay/compose.yaml logs -f relay
- 服务监听 TCP 15176 端口。
- 需确保防火墙放行该端口。
- 公网部署需配置支持 WebSocket Upgrade 的 TLS 反向代理(如 Nginx),将
/ra2 等路径转发到 relay。
方式二:Node.js 本地开发
pnpm install --frozen-lockfile
pnpm run server:relay --host 0.0.0.0 --port 15176
2. 连接对局
- 所有玩家打开 ra2.games,在导入资源前勾选 「联机」。
- 填写 Relay 地址:
- 输入部署好的服务器 IP/域名和端口(如
127.0.0.1:15176 或 your-domain.com)。 - 房间路径默认为
/ra2,可自定义(如 /friends)。所有玩家必须使用完全相同的地址和路径。
- 启动游戏:各自导入相同的资源(版本、MOD、地图必须一致),启动游戏。
- 加入大厅:
- 在游戏主菜单进入「网络」。
- 确认联机状态已连接,并在原生大厅中看到其他玩家。
- 房主创建游戏,其他人加入并准备,房主开始游戏。
⚠️ 常见问题与限制
- 断线重连:当前不支持断线续局。一旦连接中断,需重新开始对局。
- 版本一致性:RA2 和 YR 不能混联;所有玩家的 MOD 和地图文件必须完全一致。
- 延迟显示:页面显示的 RTT 是到 Relay 服务器的往返延迟,并非玩家之间的直接 P2P 延迟。
- 浏览器权限:私网访问需遵守浏览器的安全策略,公网访问必须使用 WSS (WebSocket Secure)。