PathForge TD 是一个网页 Canvas 迷宫式塔防游戏。玩家在网格地图上建造防御塔,塑造地面敌人的路线,同时用对空、减速、范围、毒伤、狙杀、增益和控制等塔组合应对不同波次。
当前版本包含 24 个战役关卡、8 种渐进解锁的防御塔、13 种敌人、100 个条件化成就、动态 A* 寻路、多入口出怪策略、塔作用说明 UI、下一波预览、关卡胜利后继续下一关、设置页、存档和自动化回归测试。
环境要求:
- Node.js 20 或兼容版本
- npm
安装依赖:
npm install启动开发服务器:
npm run dev构建生产版本:
npm run build运行测试:
npm run test -- --run本地预览构建产物:
npm run preview本项目通过 GitHub Actions 部署到 GitHub Pages。推送到 main 后会自动运行测试、构建并发布 dist/。
线上地址:
https://itsvicoc.github.io/pathforge-td/
由于这是 GitHub Pages 项目页,Vite 的生产资源前缀固定为 /pathforge-td/。如果未来改成自定义域名或用户站点根路径,需要同步调整 vite.config.ts 的 base。
目标是在敌人抵达核心前消灭所有波次。地面敌人会根据当前地图和已建塔实时寻路,飞行敌人会直线接近核心。放塔不能完全堵死任一入口到核心的路径。
基础操作:
| 操作 | 说明 |
|---|---|
| 鼠标点击塔卡 | 选择要建造的塔 |
| 鼠标移动到地图 | 显示当前塔的作用范围和放置预览 |
| 鼠标点击地图格 | 尝试放置塔 |
| 鼠标点击已有塔 | 打开选中塔面板,可升级、出售、调整目标优先级 |
| 空格 | 建造阶段开始下一波;战斗阶段暂停/继续 |
| Esc | 打开暂停菜单 |
| 数字 1-8 | 选择 8 种防御塔 |
| Q/W/E | 设置 1x/2x/3x 速度 |
| 内容 | 当前数量 |
|---|---|
| 战役关卡 | 24 个,1-1 到 8-3 |
| 防御塔 | 8 种 |
| 敌人 | 13 种 |
| 成就 | 100 个 |
| 测试文件 | 11 个 |
防御塔定位:
| 塔 | 定位 | 主要用途 |
|---|---|---|
| 箭塔 | 单体 | 前期稳定地面输出 |
| 炮塔 | 范围 | 处理密集地面敌人 |
| 冰塔 | 减速 | 延长敌人受击时间 |
| 雷塔 | 对空 | 拦截飞行敌人和漏怪 |
| 毒塔 | 毒伤 | 克制高血量、盾兵和 Boss |
| 狙击塔 | 狙杀 | 超远距离点杀强敌 |
| 增益塔 | 辅助 | 强化周围塔群 |
| 兵营 | 控制 | 转角、核心前和汇合点控制 |
.
├── docs/ # 产品、技术、计划、平衡和发布文档
├── src/
│ ├── audio/ # 音频系统
│ ├── config/ # 塔、敌人、关卡、波次、成就配置
│ ├── core/ # Game、输入、事件、状态、资源加载
│ ├── entities/ # Tower、Enemy、Projectile、Effect
│ ├── renderer/ # Canvas 2D 渲染
│ ├── systems/ # 寻路、网格、波次、经济、存档等系统
│ ├── types/ # 共享类型
│ └── ui/ # 战斗 UI 和菜单 UI
├── index.html # 应用 HTML 和页面样式
├── package.json # npm 脚本和依赖
└── vite.config.ts # Vite 配置
- UI 说明优先从
TowerConfig.role / description / special / usage读取,不在 UI 中重复硬编码。 - 放塔成功或失败后,HUD、底部塔栏、塔说明和选中状态必须保持稳定。
- 地图格子坐标运行中不能移动;路径预览只能改变路线显示,不能改变关卡布局。
- 新增关卡、敌人、塔或波次后,需要同步更新测试和相关文档。
- 调整塔、敌人、波次、关卡或经济后,需要追加
docs/Balance-Notes.md。 - 修改架构、配置格式、测试流程、UI/美术规范或常见问题时,需要同步对应专项文档。
提交前建议至少运行:
npm run test -- --run
npm run build当前测试覆盖配置完整性、24 关流程仿真、波次延迟、多入口轮转、寻路、放塔合法性、投射物、敌人移动、塔行为和 UI 状态保持。
本项目使用 MIT License。