⚔ 游戏背景 ⚔

浏览器端单机 2D 俯视实时战略 · 以解放战争经典战役为题材的红色战争 RTS

项目定位

《沙盘战争》(英文代号 War of Dots)是一款基于浏览器的单机、俯视 2D 实时战略(RTS)游戏,为课程项目。 玩法框架参考 Steam 平台上的《War of Dots》,但全部代码、地图、关卡、文案、UI 与美术资源均为原创。

游戏以解放战争经典战役(塔山阻击战、宿北战役、双堆集战役等)为题材,玩家指挥部队完成战役级作战任务。 项目采用纯静态 Web 应用部署,无需后端,可作为静态站点直接发布。

玩法核心循环

核心循环为「观察 → 决策 → 下令(选择 / 移动 / 攻击)→ 模拟推进(战斗、补给、占领、控制线)→ 迷雾与状态反馈 → 胜负判定」。 单局为小型遭遇战规模(约 5–15 分钟),教学关卡引导玩家走完「选择 → 指挥 → 交战 → 占领 → 胜负」的完整闭环。

多重要素战争模拟

指挥

战役级实时指挥

俯视 2D RTS,圆点单位 + 沙盘地图;支持单选、框选、Shift 增减、从单位拖出轨迹下令、右键移动 / 攻击,空格暂停,0.5 / 1 / 2 倍速。

城市

城市与占领

城市是枢纽:占领半径 60px,每己方单位每秒贡献 5% 进度、上限 15%;提供 5 单位补给容量与 100px 内回血。占领全部城市(普通关卡的默认目标)即获胜,但歼灭 / 防守 / 夺取据点等关卡必须达成各自目标才算胜利;城市生产已关闭,兵力完全由关卡设计决定。

地形

地形博弈

道路加速 25% 且行军补给消耗减半;森林减速但防御提升、并遮蔽视野;山地防御最强;高山不可通行;水域可蹚但代价高、水中攻击减半且持续掉血。隘口、桥头、山口天然成为必争之地。

补给

补给与士气(溃逃)

单位携带补给存量,断补或被多面夹击会失序、溃逃甚至投降;崩溃后不受指挥、速度大减。战斗因此有了「击溃」而不只是「打死」。

迷雾

战争迷雾

格级三态(当前可见 / 已探索 / 从未探索);森林中敌军仅在 60px 内可见;离开视野后保留灰色「最后已知位置」虚影标记。

据点

占领点

轻量战术目标,被占领后仅提供视野,不提供补给与士气,也不参与胜负——可用于前哨与观察哨,不会意外改变经济与平衡。

编辑

地图编辑器

支持绘制地形、放置城市 / 出生点 / 占领点、可玩性校验、localStorage 保存载入、文件导入导出,并可一键试玩后安全返回。

数据

数据驱动关卡

一局游戏完整写在一个关卡 JSON 里,引擎不含任何关卡特例;同一引擎换一份 JSON 即得到新关卡,新增战役的成本主要是地图编辑。

技术特色

参考与验收目标

参考 Steam《War of Dots》的核心玩法框架,并在关卡数据化、自动化测试与确定性模拟上做出自己的工程化取舍。

当前状态为可玩、可扩展、可交付:断裂峡谷(教学进攻关)、宿北战役(歼灭关)、塔山阻击战(防守关)三关已数据化并可通关, 另含双堆集战役(淮海战役)等关卡脚本;地图编辑器独立成页;一次性构建产出 15 个静态页面可直接部署; 48 项 MVP 验收标准中 44 项已完成,剩余集中在真实 GPU、Edge 浏览器与多分辨率的人工验证。

战役规划

已数据化可通关的战役包括:

开发中另含双堆集战役(淮海战役)等关卡脚本(蓝方玩家拥有华野援军剧本,红军按五阶段脚本依次行动)。 所有关卡共用同一套模拟核心与命令接口,差异完全由地图 JSON 与关卡参数表达。