三国争霸 · 游戏介绍

一款跑在浏览器里的三国题材即时战略游戏。采金伐木、筑城练兵、招募名将,在官渡、赤壁、街亭这些战场上一决胜负; 也可以守虎牢关、走千里单骑、打完一整部战役,或者用自带的编辑器做一张自己的地图。

所有画面和声音都由代码生成,没有一张图片、一个模型文件、一段录音。游戏本体是一个 350 KB 的网页文件,双击就能玩。

主菜单

目录

一分钟了解

类型 即时战略(采集、建造、练兵、英雄)
玩法 对战、塔防、RPG、战役、联机、自制地图
阵营 魏、蜀、吴,各有一个特色兵种和三位英雄
英雄 11 位,各 3 个技能;装备栏、背包、天赋
地图 14 张内置地图,外加一部 8 关的战役
画面 2D 与 3D 两种,对局中按 F6 随时切换
电脑对手 三档难度;会开分矿、按克制出兵、买装备、抢高地
运行环境 现代浏览器。电脑上用鼠标键盘,手机平板上用触屏

怎么开始

npm install
npm run build        # 产出 dist/index.html 和 dist/r3d.js

对战

开局只有一座县城和五个民夫。接下来的事和你熟悉的即时战略一样:

  1. 采集。民夫采黄金(每座金矿同时最多 5 人)和木材。
  2. 建造。修民居提高人口上限;兵营出步兵和弓手;铁匠铺研究兵器铠甲;点将台招募英雄。
  3. 升级主城。县城升郡城,解锁马厩、工坊、太学;再升都城,解锁最强的兵种。
  4. 扩张。主矿会采空,要去开分矿——野外的金矿多半有山贼或猛虎守着。
  5. 决战。摧毁敌人的全部建筑即获胜。

对战:放置建筑

攻防克制决定了兵种怎么搭配:

攻击类型 克制 被克
普通(刀盾兵、长枪兵、骑兵) 中甲 —
穿刺(弓箭手、箭楼) 轻甲 城防
攻城(投石车) 城防(建筑) —
法术(方士) 重甲 —

地图上还有中立市集:让英雄走到旁边就能买装备和丹药。

市集 一场混战(2D)

三个阵营与十一位英雄

三家共用民夫、刀盾兵、弓箭手、长枪兵、轻骑兵、投石车、军医、方士这八种兵,各自多一个特色兵种:

阵营 特点 特色兵种
魏 兵精粮足,铁骑纵横 虎豹骑:重甲铁骑,攻击带溅射
蜀 仁德之师,猛将如云 连弩兵:诸葛连弩,射速极快
吴 江东子弟,火攻无双 锦帆军:行动迅捷,火箭灼烧敌人

每位英雄有三个技能,分别在 1、3、6 级解锁,最高 10 级。第一位英雄免费,一方最多三位;阵亡后可以在点将台复活,装备和等级都保留。

英雄 称号 技能
曹操(魏) 魏武帝 号令群雄 · 奸雄之威 · 虎豹突击
夏侯惇(魏) 独眼将军 刚烈一击 · 拔矢啖睛 · 横扫千军
司马懿(魏) 冢虎 落雷 · 鬼谋 · 天雷阵
刘备(蜀) 昭烈帝 仁德 · 激昂 · 桃园结义
关羽(蜀) 武圣 青龙偃月 · 武圣 · 水淹七军
诸葛亮(蜀) 卧龙 火计 · 八阵图 · 借东风
孙权(吴) 吴大帝 制衡 · 坐断东南 · 江东虎臣
周瑜(吴) 美周郎 火攻 · 反间 · 火烧赤壁
甘宁(吴) 锦帆贼 锦帆夜袭 · 百骑劫营 · 铃铛乱舞
张飞 万人敌 当阳怒喝 · 丈八蛇矛 · 燕人咆哮
赵云 常山赵子龙 龙胆突刺 · 七进七出 · 百鸟朝凤

张飞和赵云不在对战的点将台里,他们出现在战役和「汉中英烈」里。

英雄的脸与神态

英雄养成:装备、背包、天赋

装备栏与背包 天赋

在 3D 画面里,身上的装备看得见:换了铠甲肩上多一副肩甲,装备了坐骑就真的骑在马上。

穿上装备之后

十四张地图

选图界面

对战(10 张)

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

五丈原的雪原

塔防:虎牢关

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

虎牢关

RPG(3 张)

这三张图没有基地运营,整张图的玩法完全由触发器搭出来——可以在编辑器里打开看它们是怎么做的。

千里走单骑 操控关羽一个人过五关、斩六将,直抵黄河渡口。沿途的驿站可以休整和复活,杀敌的赏金用来买装备。

千里走单骑:对阵守关武将

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

沙场点兵

汉中英烈 英雄防守。招募最多三位英雄,死守高台上的阳平关。曹军分 15 波从四座城门杀来,第 5、10、15 波各有一员大将压阵。 两波之间可以去买装备、招乡勇,或者带着英雄去城外三个角落闯试炼——击败守护者能得到一件宝物。

2D 3D

战役「汉末风云」

八关,一条主线,从桃园结义打到赤壁。按顺序解锁,英雄的等级、装备、天赋跨关继承;可以中途存档。

# 关卡 玩法 出战英雄
1 桃园结义 教学,带着三兄弟讨伐黄巾 刘备、关羽、张飞
2 虎牢关 塔防,英雄亲自上阵 刘备、关羽、张飞
3 徐州立足 基地建设,科技受限 刘备、关羽、张飞
4 官渡 · 奇袭乌巢 对战,可以分兵去烧粮 关羽
5 千里走单骑 RPG 关羽
6 博望坡 先坚守,再反击 刘备、关羽、张飞、诸葛亮
7 长坂坡 · 七进七出 护送车仗突围 赵云
8 赤壁 与周瑜联手的 2v2 刘备、诸葛亮、赵云

每一关都有开场演出:收起界面、上下黑边、镜头推近环绕、人物走位、一句一句的对话。每关除了主线目标还有一个支线目标。

选关与英雄档案 过场演出

通关结算

两种画面:2D 与 3D

同一局游戏有两种看法。对局中按 F6,或者在暂停菜单里切换;镜头、选中的单位、战局都不受影响。操作方式完全一样。

2D 3D

3D 画面里的一切同样是代码生成的:

衣甲的花纹 技能动作
各种兵种 建筑
技能特效 野外的一场遭遇战

画质有高、中、低三档,默认按设备自动选。地图作者可以给地图指定默认的画面,玩家自己的设置优先。

地形高度

地图可以有高低。高处与低处之间只能走坡道,而且:

「街亭」正中是一座两级的孤山,山顶有一座富金矿:是上山据守,还是当道扎营?电脑对手懂这个道理——它会抢山顶的矿,把队伍拉到高处集结,让弓手先爬上去再放箭。

3D 2D

上万单位同屏

正常对局受人口上限约束,一方不过百来个单位。但引擎本身撑得住大得多的场面,自制地图用触发器刷兵时用得上。

下面两张图里各有一万个单位在混战,全部在镜头之内:

3D 2D

在一台装了 RTX 4090 的电脑上,这两个场面都是 55 帧(测量工具的上限),游戏逻辑保持每秒 20 帧不掉。 集成显卡和手机上的表现没有测过。

地图编辑器与触发器

内置的每一张地图都是用同一套工具做出来的,你也可以用。

触发器有 6 种事件、6 种条件、30 多种动作:刷兵、下命令、变量与倒计时、任务目标、对话、镜头、给物品、复活英雄、点兵与收兵…… 塔防、RPG、战役的过场演出全是用它们搭的。想学怎么做,在选图界面点“在编辑器中打开”,看看虎牢关的 20 个触发器是怎么写的。

触发器面板 在编辑器里打开虎牢关

编辑器的 3D 视图

联机对战

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(战役)。