Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings
Open more actions menu

Repository files navigation

网页版红色警戒2 · Web Red Alert 2

一句提示词,一个 AI(Claude / Fable 5),一个晚上,从零写出的网页版《红色警戒2》。 浏览器即点即玩,适配 PC 与手机,支持多人联网锁步对战。

🎮 在线试玩 → https://peaceful-wave-530.fly.dev

CI license TypeScript PWA

一个从零手写的网页 RTS 引擎:自带 C&C 文件格式解析器(MIX/SHP/VXL/TMP/PAL/CSF…)、 确定性锁步联机内核、PixiJS 等距渲染。

开源与版权(请先读)

  • 本仓库只含原创代码,不含任何 EA 游戏素材game-data/ 已 gitignore)。
  • 真实美术/音效由玩家在本机导入自己的游戏文件、或浏览器直连下载 EA 官方免费的 《泰伯利亚之日》素材渲染——全程不经本仓库/服务器分发;无素材时用原创占位美术, 无需任何文件即可游玩。
  • 本项目为非官方粉丝 / 教学性质,与 Electronic Arts 无任何关联; "Command & Conquer""Red Alert""Tiberian Sun" 等为 EA 商标,归其所有。

✨ 2.0 亮点

  • 🎨 真实美术:浏览器一键下载 EA 官方免费的泰伯利亚之日素材 → 真实坦克 / 建筑 / 地形 / 音效(仅本地解析,不分发;无文件则用原创占位,照样能玩)
  • 🔊 沉浸音效:对战配乐 + 空间化音效(按屏幕位置声像 + 距离衰减)+ EVA 战场播报(基地受袭 / 电力不足 / 单位损失…)+ 仪式化「点击进入」开场
  • 🧠 会打仗的对手:三种打法风格(钢铁防线 / 攻守均衡 / 全力进攻,每局随机),攒够约 15 个兵成波出击、留守守家、按你的兵种反制——不作弊,双方起始资源一致,AI 全靠策略
  • 📱 触控为先:编队(点召回 · 长按设组)、选中兵种构成、点建筑即选建筑、单位操作条
  • 🔧 工程师修复己方 / 占领敌方建筑 · 🚀 新单位:火箭兵 · 磁能兵 · 光棱坦克 · 天启坦克 · 军犬 · 作战实验室
  • 🔗 邀请链接联机:生成一个链接扔给朋友,点开就在同一房间开打

架构

pnpm monorepo,TypeScript 全栈:

职责
packages/data 红警2 文件格式解析器(MIX/INI/PAL/SHP/TMP/VXL/CSF/地图/音频),纯 TS,浏览器与 Node 通用
packages/game 确定性模拟内核(全整数运算 + 种子 PRNG + 状态哈希),客户端与服务器共享,锁步联机的根基
packages/client PixiJS v8 渲染、调色板着色器、UI、鼠标/触控输入(Vite)
packages/server Node + WebSocket:大厅/房间 + 锁步命令中继

快速开始

# 1. 安装依赖(需要 Node ≥ 20 与 pnpm)
pnpm install

# 2. 准备游戏文件(见 game-data/README.md),然后校验
pnpm check-assets

# 3. 启动开发(客户端 + 服务器)
pnpm dev

常用命令:pnpm test(单元测试)· pnpm lint · pnpm typecheck · pnpm build

已实现功能

玩法:基地建设(建造场/电厂/精炼厂/兵营/战车工厂/防御)、电力系统、矿石经济(采矿车自动往返,可手动指定矿点或一键恢复采矿)、生产队列(连点排队·一键取消·×N 计数)、毗邻建造半径、集结点(可视集结线)、修理/出售;战斗采武器→弹头→装甲百分比矩阵 + 弹道/溅射/防御塔;战争迷雾。

个体 AI 与操作手感:目标智能(自发集火补刀、先打威胁而非最近)、四种作战姿态(进攻/警戒/坚守/不还火)、攻击移动(沿途逐个停下歼敌再续行)、巡逻、编队散开不挤一坨;指令反馈光圈、双击选同类、一键找空闲兵、基地受击警笛 + 小地图红圈定位、小地图视野框、结算战报(用时/最大兵力/歼敌/损失)、操作帮助面板(?);键位 A 攻击移动 · P 巡逻 · G 切姿态 · E 找空闲 · S 停止 · Ctrl+数字编队。

兵种与科技:步兵 / 主战坦克 / 防空 / 攻城车 / 采矿车 + 反装甲步兵(克坦克)、军犬(秒步兵);科技建筑「作战实验室」解锁高级单位 光棱坦克 / 天启坦克老兵系统(击杀晋升老兵/精英、伤害递增、军衔标记)。

对手 AI:三种打法风格(钢铁防线 / 攻守均衡 / 全力进攻,每局随机抽取、开局「敌情简报」揭示,区别在防御投入与经济规模);统一节奏「攒够约 15 个兵才成波出击、不够就守家积蓄,绝不一个一个送」,出击时留守一支守家、不被反偷;会侦察反制(你坦克多 → 转出反坦克兵);不作弊——双方起始资源一致,难度只改行为(出击门槛 / 是否反应),不给经济优势。难度三档。

模式:单机遭遇战(难度/起始资金/地图大小可选),多人联机锁步对战(大厅/房间/聊天/准备)。

平台:PC(鼠标键盘+边缘滚屏+小地图跳转)与手机(触控手势:点选/拖框选/单指下令/双指平移缩放,PWA 全屏)。

美术与音效:自备红警2/泰伯利亚之日文件、或浏览器一键下载 EA 免费素材时,渲染真实 SHP 建筑步兵 + VXL 体素载具 + TMP 地形 + 真实 C&C 音效与单位语音(仅本地解析,不分发);无文件时回退原创占位美术 + 程序合成音效。对战全程配乐 + 空间化音效(声像/距离衰减)+ EVA 战场播报;工程师可修复己方 / 占领敌方建筑。

里程碑(全部完成)

  • M0 工程脚手架 · M1 资源解析(MIX/INI/PAL/SHP/CSF)· M2 地图与等距地形
  • M3 确定性模拟内核 · M4 基地经济 · M5 战斗 · M6 体素载具(VXL/HVA)
  • M7 多人联机锁步 · M8 手机触控+PWA · M9 音频 · M11 部署上线
  • 产品级打磨:真实地形、集结点/修理/出售、攻城车、战争迷雾、压力/模糊/AI对战测试等
  • 2.0 玩法深化:个体 AI(集火/姿态/编队/攻击移动·巡逻)、反装甲步兵 / 军犬 / 科技层(光棱·天启)、老兵系统、爆炸震屏、指令反馈/找空闲兵/受击告警/结算战报/操作帮助
  • 2.0 沉浸 & 手感续作:浏览器一键下载真实美术与音效;对战全程配乐 + 空间化音效 + EVA 战场播报 + 仪式「点击进入」开场;工程师修复/占领;触控编队/选中构成/「点建筑选建筑· 点空地移动」操作模型;对手 AI 重做为三风格「攒够成波出击 + 留守守家」(不作弊);邀请链接联机

测试 174 个全绿(含确定性压力测试 + 锁步/回放确定性、AI 各打法对阵收敛与「攒够才成波」、工程师修复/占领、解析器健壮性、端到端联机同步)。

确定性约定(重要)

packages/game 是锁步联机的根基,必须做到所有客户端逐 tick 算出完全相同的世界状态:

  • 坐标用整数 lepton(1 格 = 256 lepton),沿用红警2 原版坐标系
  • 角度用 256 级二进制角 + 查表三角,禁用 Math.sin/cos/sqrt/atan2
  • 随机数只用 sim 内的种子 PRNG,禁用 Math.random
  • 禁止读取真实时间(Date/performance.now
  • 以上由 ESLint 规则强制 + 跨环境状态哈希测试兜底

联机对战(M7)

# 终端 1:启动对战服务器(默认 7301)
pnpm dev:server
# 终端 2:启动客户端
pnpm dev:client

浏览器开两个标签 → 首页「🌐 联机对战」→ 填同一房间名 → 双方点准备 → 自动开局。 本机/局域网即可对战;架构为确定性锁步(命令经服务器中继,各端同序执行)。

部署上线(一个容器 + 一个 URL)

生产模式下,服务器在同一端口托管构建好的客户端与 WebSocket(同源、无跨域), 玩家只需访问一个网址即可联机:

# 本地按生产模式跑
pnpm --filter @ra2web/client build
PORT=8080 pnpm --filter @ra2web/server start   # 打开 http://localhost:8080

# 或用 Docker(云平台一键部署)
docker build -t ra2web .
docker run -p 8080:8080 ra2web

部署到任意支持 Docker + WebSocket 的平台(Fly.io、Render、Railway、自有 VPS 等)即可 公网对战。客户端在生产环境自动以同源 ws/wss 连接服务器,无需额外配置。

游戏文件:联机仅同步指令、不传素材;每位玩家在自己设备本地导入红警2文件 (见 game-data/README.md)。当前占位美术版无需文件即可游玩。

缘起

这个项目由 Claude(Fable 5) 在一个晚上、从一句提示词开始、自主规划并实现—— 当年红色警戒是一家公司数十人耗时两年的经典,如今一个 AI 一晚从零写就。 它也是「用 AI 从零造开源项目」这件事的一个起点。

许可

代码以 MIT 许可开源,见 LICENSE

注意:MIT 仅覆盖本仓库的代码。游戏美术/音效/字体等版权素材不在本仓库内、不随本项目分发; 玩家需自备原版游戏文件,或使用 EA 官方免费开放的素材。本项目与 EA 无关。

About

浏览器即玩的即时战略引擎(兼容 C&C 文件格式)· 多人锁步联机 · 由 AI 一晚从零写成 · 自备游戏文件,与 EA 无关

Topics

Resources

Contributing

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.