一款跑在浏览器里的三国题材即时战略游戏。采金伐木、筑城练兵、招募名将,在官渡、赤壁、街亭这些战场上一决胜负; 也可以守虎牢关、走千里单骑、打完一整部战役,或者用自带的编辑器做一张自己的地图。
所有画面和声音都由代码生成,没有一张图片、一个模型文件、一段录音。游戏本体是一个 350 KB 的网页文件,双击就能玩。

| 类型 | 即时战略(采集、建造、练兵、英雄) |
| 玩法 | 对战、塔防、RPG、战役、联机、自制地图 |
| 阵营 | 魏、蜀、吴,各有一个特色兵种和三位英雄 |
| 英雄 | 11 位,各 3 个技能;装备栏、背包、天赋 |
| 地图 | 14 张内置地图,外加一部 8 关的战役 |
| 画面 | 2D 与 3D 两种,对局中按 F6 随时切换 |
| 电脑对手 | 三档难度;会开分矿、按克制出兵、买装备、抢高地 |
| 运行环境 | 现代浏览器。电脑上用鼠标键盘,手机平板上用触屏 |
npm install
npm run build # 产出 dist/index.html 和 dist/r3d.js
dist/index.html。只拷这一个文件也能玩,只是没有 3D 画面。r3d.js 和 index.html 待在同一个目录里。npm run server,把终端里显示的地址发给朋友。npm run dev,改完代码刷新页面即可。开局只有一座县城和五个民夫。接下来的事和你熟悉的即时战略一样:

攻防克制决定了兵种怎么搭配:
| 攻击类型 | 克制 | 被克 |
|---|---|---|
| 普通(刀盾兵、长枪兵、骑兵) | 中甲 | — |
| 穿刺(弓箭手、箭楼) | 轻甲 | 城防 |
| 攻城(投石车) | 城防(建筑) | — |
| 法术(方士) | 重甲 | — |
地图上还有中立市集:让英雄走到旁边就能买装备和丹药。
| 市集 | 一场混战(2D) |
|---|---|
![]() |
![]() |
三家共用民夫、刀盾兵、弓箭手、长枪兵、轻骑兵、投石车、军医、方士这八种兵,各自多一个特色兵种:
| 阵营 | 特点 | 特色兵种 |
|---|---|---|
| 魏 | 兵精粮足,铁骑纵横 | 虎豹骑:重甲铁骑,攻击带溅射 |
| 蜀 | 仁德之师,猛将如云 | 连弩兵:诸葛连弩,射速极快 |
| 吴 | 江东子弟,火攻无双 | 锦帆军:行动迅捷,火箭灼烧敌人 |
每位英雄有三个技能,分别在 1、3、6 级解锁,最高 10 级。第一位英雄免费,一方最多三位;阵亡后可以在点将台复活,装备和等级都保留。
| 英雄 | 称号 | 技能 |
|---|---|---|
| 曹操(魏) | 魏武帝 | 号令群雄 · 奸雄之威 · 虎豹突击 |
| 夏侯惇(魏) | 独眼将军 | 刚烈一击 · 拔矢啖睛 · 横扫千军 |
| 司马懿(魏) | 冢虎 | 落雷 · 鬼谋 · 天雷阵 |
| 刘备(蜀) | 昭烈帝 | 仁德 · 激昂 · 桃园结义 |
| 关羽(蜀) | 武圣 | 青龙偃月 · 武圣 · 水淹七军 |
| 诸葛亮(蜀) | 卧龙 | 火计 · 八阵图 · 借东风 |
| 孙权(吴) | 吴大帝 | 制衡 · 坐断东南 · 江东虎臣 |
| 周瑜(吴) | 美周郎 | 火攻 · 反间 · 火烧赤壁 |
| 甘宁(吴) | 锦帆贼 | 锦帆夜袭 · 百骑劫营 · 铃铛乱舞 |
| 张飞 | 万人敌 | 当阳怒喝 · 丈八蛇矛 · 燕人咆哮 |
| 赵云 | 常山赵子龙 | 龙胆突刺 · 七进七出 · 百鸟朝凤 |
张飞和赵云不在对战的点将台里,他们出现在战役和「汉中英烈」里。

| 装备栏与背包 | 天赋 |
|---|---|
![]() |
![]() |
在 3D 画面里,身上的装备看得见:换了铠甲肩上多一副肩甲,装备了坐骑就真的骑在马上。


| 地图 | 人数 | 特点 |
|---|---|---|
| 官渡之战 | 1v1 | 两军隔河相持,渡口狭窄 |
| 长坂坡 | 1v1 | 小图快攻,一马平川,无险可守 |
| 五丈原 | 1v1 | 雪原,河上只有三处浅滩,持久的消耗战 |
| 潼关之战 | 1v1 | 戈壁,林木稀少,木材最紧缺 |
| 街亭 | 1v1 | 有高地:正中一座孤山,山顶有富金矿 |
| 三足鼎立 | 三方混战 | 中原腹地的金矿由黄巾力士把守 |
| 赤壁 | 2v2 | 大江横亘,仅有三处浅滩可渡 |
| 定军山 | 2v2 | 山地,可走的路不多,山口易守难攻 |
| 合肥之战 | 3v3 | 六家混战的大地图 |
| 逐鹿中原 | 四方混战 | 没有盟友,谁先出手、谁坐收渔利 |

董卓军分 15 波沿着蛇形的道路冲关,最后一波是吕布。指挥工匠在路边修塔:箭塔、弩炮台、投石台、火油楼、战鼓台、法坛,每种都能升到三级。

这三张图没有基地运营,整张图的玩法完全由触发器搭出来——可以在编辑器里打开看它们是怎么做的。
千里走单骑 操控关羽一个人过五关、斩六将,直抵黄河渡口。沿途的驿站可以休整和复活,杀敌的赏金用来买装备。

沙场点兵 对线防守。在大道两侧修兵舍,每一波开战时每座兵舍点出一名士兵,打完收兵。 攒下的钱可以拿去升级兵舍,也可以在军令台派兵冲击隔山的对手——每派一次,自己此后每一波的军饷都增加。 是把钱花在自己的防线上,还是花在让对手难受上,是这张图的全部乐趣。守满 12 波,或者攻破对手的大帐,都算赢。

汉中英烈 英雄防守。招募最多三位英雄,死守高台上的阳平关。曹军分 15 波从四座城门杀来,第 5、10、15 波各有一员大将压阵。 两波之间可以去买装备、招乡勇,或者带着英雄去城外三个角落闯试炼——击败守护者能得到一件宝物。
| 2D | 3D |
|---|---|
![]() |
![]() |
八关,一条主线,从桃园结义打到赤壁。按顺序解锁,英雄的等级、装备、天赋跨关继承;可以中途存档。
| # | 关卡 | 玩法 | 出战英雄 |
|---|---|---|---|
| 1 | 桃园结义 | 教学,带着三兄弟讨伐黄巾 | 刘备、关羽、张飞 |
| 2 | 虎牢关 | 塔防,英雄亲自上阵 | 刘备、关羽、张飞 |
| 3 | 徐州立足 | 基地建设,科技受限 | 刘备、关羽、张飞 |
| 4 | 官渡 · 奇袭乌巢 | 对战,可以分兵去烧粮 | 关羽 |
| 5 | 千里走单骑 | RPG | 关羽 |
| 6 | 博望坡 | 先坚守,再反击 | 刘备、关羽、张飞、诸葛亮 |
| 7 | 长坂坡 · 七进七出 | 护送车仗突围 | 赵云 |
| 8 | 赤壁 | 与周瑜联手的 2v2 | 刘备、诸葛亮、赵云 |
每一关都有开场演出:收起界面、上下黑边、镜头推近环绕、人物走位、一句一句的对话。每关除了主线目标还有一个支线目标。
| 选关与英雄档案 | 过场演出 |
|---|---|
![]() |
![]() |

同一局游戏有两种看法。对局中按 F6,或者在暂停菜单里切换;镜头、选中的单位、战局都不受影响。操作方式完全一样。
| 2D | 3D |
|---|---|
![]() |
![]() |
3D 画面里的一切同样是代码生成的:
| 衣甲的花纹 | 技能动作 |
|---|---|
![]() |
![]() |
| 各种兵种 | 建筑 |
|---|---|
![]() |
![]() |
| 技能特效 | 野外的一场遭遇战 |
|---|---|
![]() |
![]() |
画质有高、中、低三档,默认按设备自动选。地图作者可以给地图指定默认的画面,玩家自己的设置优先。
地图可以有高低。高处与低处之间只能走坡道,而且:
「街亭」正中是一座两级的孤山,山顶有一座富金矿:是上山据守,还是当道扎营?电脑对手懂这个道理——它会抢山顶的矿,把队伍拉到高处集结,让弓手先爬上去再放箭。
| 3D | 2D |
|---|---|
![]() |
![]() |
正常对局受人口上限约束,一方不过百来个单位。但引擎本身撑得住大得多的场面,自制地图用触发器刷兵时用得上。
下面两张图里各有一万个单位在混战,全部在镜头之内:
| 3D | 2D |
|---|---|
![]() |
![]() |
在一台装了 RTX 4090 的电脑上,这两个场面都是 55 帧(测量工具的上限),游戏逻辑保持每秒 20 帧不掉。 集成显卡和手机上的表现没有测过。
内置的每一张地图都是用同一套工具做出来的,你也可以用。
触发器有 6 种事件、6 种条件、30 多种动作:刷兵、下命令、变量与倒计时、任务目标、对话、镜头、给物品、复活英雄、点兵与收兵…… 塔防、RPG、战役的过场演出全是用它们搭的。想学怎么做,在选图界面点“在编辑器中打开”,看看虎牢关的 20 个触发器是怎么写的。
| 触发器面板 | 在编辑器里打开虎牢关 |
|---|---|
![]() |
![]() |

npm run server 启动一个小服务器,它既提供游戏页面,也负责在玩家之间转发指令。朋友用浏览器打开你的地址,进“联机对战”:
每个人可以用不同的画面(你用 3D,他用 2D),互不影响。
| 房间 | 联机对局 |
|---|---|
![]() |
![]() |
在手机和平板上不需要鼠标键盘:
| 手势 | 作用 |
|---|---|
| 点一下 | 点自己的单位是选中;已选中时,点地面是移动,点敌人是攻击,点金矿或树是采集 |
| 连点两下 | 选中屏幕里所有同类单位 |
| 单指拖动 / 双指捏合 | 移动镜头 / 缩放 |
| 按住不放 | 相当于右键 |
| 右侧的三个按钮 | 框选、全军、取消 |
小屏幕上界面会自动缩小;竖着拿手机时会提示横过来。
| 2D | 3D |
|---|---|
![]() |
![]() |
| 操作 | 作用 |
|---|---|
| 左键单击 / 拖框 | 选择;Shift 加选;双击选中屏幕内同类 |
| 右键 | 智能指令:移动、攻击、采集、继续施工、设置集结点 |
| A / M / S / H / P | 攻击移动 / 移动 / 停止 / 驻守 / 巡逻 |
| B | 打开建造菜单 |
| Q W R | 英雄技能;训练与研究也用命令卡上标的热键 |
| Ctrl + 1–9,1–9 | 编队,选中编队(连按两次镜头跳过去) |
| F1–F3 | 选中英雄 |
| F8 或 ` | 选中闲置的民夫 |
| N | 天赋面板 |
| 空格 | 镜头回到选中的单位 |
| 方向键、鼠标移到屏幕边缘、按住中键拖动 | 移动镜头;滚轮缩放 |
| F6 | 切换 2D / 3D |
| F10 | 菜单与暂停(存档、音效、速度、画面设置) |
| + / − | 调整游戏速度 |
这个游戏是由 AI(Claude)在一个会话里分阶段写出来的,下面这些情况应当如实说明:
更细的技术说明见 SUMMARY.md(开发过程与数据)、3D.md(3D 与性能)、CAMPAIGN.md(战役)。