纯单机、无联机的网页第一人称射击游戏(灰盒版),依据《网页FPS产品规格书》v1.0 开发。
按《网页FPS开发计划》v1.0 分阶段交付,当前状态:已达到预期,收尾定稿。
- 波次生存:10 波进攻(备战 5s → 战斗 → 清空循环),第 5/10 波 Boss 战
- 敌人类型(规格书 6.2 全部落地):
| 类型 |
HP |
行为 |
金币 |
| 近战怪(方块丧尸) |
80 |
成群冲锋、主动追击、A* 绕障、卡住自动救援 |
50 |
| 远程怪(枪手) |
60 |
保持距离、喷射毒液弹道(可躲避)、撞墙即炸 |
50 |
| 自爆怪 |
40 |
红色预警(越近越急)+ 近身自爆 AOE 60 |
40 |
| 精英怪(重装) |
400 |
霰弹 90、正面受击减伤 50%(建议绕后) |
300 |
| Boss(终结者) |
3000 |
远程炮击 + 召唤小怪 → 血量 <50% 狂暴(提速/近身范围攻击);顶部血条 + 登场/击杀播报 |
1000 |
- 武器(波次自动解锁,无需购买):
| 武器 |
解锁 |
伤害 |
特点 |
| M9 手枪 |
初始 |
25(爆头 ×2) |
480 RPM 半自动、备用弹无限 |
| AK-47 |
第 3 波 |
34 |
600 RPM 全自动、弹匣 30/备用 120 |
| 870 霰弹枪 |
第 4 波 |
18×8 弹丸(爆头 ×1.5) |
近距爆发、弹匣 8/备用 32 |
| AWP 狙击枪 |
第 5 波 |
120(爆头 ×3) |
右键点按开镜(22° 视场 + 散布骤减)、一击必杀小怪 |
- 经济:击杀得金币(爆头 +25%)、波次奖励(100 + 剩余血量加成);B 键商店随时可用(打开暂停游戏):弹药 100 / 护甲 500(吸收 50% 伤害)/ 医疗包 300(+50 HP)
- 战斗 HUD:左下 HP/护甲/体力条、右上金币/波次、右下武器弹药 + 击杀提示滚动、顶部 Boss 血条、波次横幅、命中 ❌(仅靶子/敌人)
- 反馈系统:敌人受击红闪 + 肉感受击声、玩家受击红闪 + 方向指示、死亡倒地视角 + 3s 复活、弹孔贴花、自爆预警红光
| 按键 |
功能 |
| WASD / 鼠标 |
移动 / 视角(点击画面锁定鼠标,Esc 释放) |
| Shift / Space |
冲刺(体力条)/ 跳跃 |
| 左键 / 右键 |
射击 / 开镜(狙击枪右键点按切换) |
| R / 1~4 |
换弹 / 切换武器(切枪打断换弹) |
| B |
购买菜单(随时可用,打开即暂停) |
| N / M |
调试:跳波 / +500 金币 |
= - ] [ |
音效音量 ± / 音乐音量 ± |
| F1 |
状态机切换(调试) |
页面调试参数:?yaw= ?pitch= 初始朝向;?markers=1 显示点位标记;?fastwave=1 跳过备战;?pixel=1 天空像素采样。
| 命令 |
覆盖 |
npx tsx scripts/test-movement.ts |
移动 9 场景:碰撞/滑动/台阶/跳跃/冲刺 |
npx tsx scripts/test-shooting.ts |
射击 10 场景:命中/后坐/散布/换弹/全自动/霰弹弹丸/ADS |
npx tsx scripts/test-enemy.ts |
敌人 14 场景:寻路/索敌/四类型/Boss/分离/卡住救援/高台包围/垂直判定 |
npx tsx scripts/test-wave.ts |
波次 4 场景:流程/同屏上限/倍率/10 波通关 |
npx tsx scripts/test-economy.ts |
经济 2 场景:护甲吸收/爆头奖励 |
| 命令 |
说明 |
npm install |
安装依赖 |
npm run dev |
启动开发服务器(默认 http://localhost:5173) |
npm run build |
类型检查 + 生产构建(输出 dist/) |
npm run preview |
本地预览构建产物 |
src/
├── core/ # GameLoop、状态机、输入管理、配置加载
├── player/ # 玩家控制器(胶囊碰撞、冲刺、护甲、死亡)
├── weapons/ # 武器系统(4 把武器、多弹丸、ADS、后坐散布)
├── enemies/ # 敌人 AI(5 类型、A*、弹道弹丸、Boss、分离/救援)
├── map/ # 地图与碰撞(灰盒仓库、程序化贴图、天空)
├── ui/ # HUD(状态条/弹药/波次/Boss 血条/商店/击杀提示/受击反馈)
├── audio/ # WebAudio 合成音效 + 三轨动感 BGM
└── vfx/ # 特效(粒子池等)
public/ # 配置 JSON(游戏数值 / 地图点位)
docs/ # 地图说明、预览截图
scripts/ # 自动测试(tsx 直跑)
- 敌人为 2D 寻路,不上楼梯/平台——玩家上二楼后丧尸会绕到高台底部包围等待(垂直攻击已判定拦截)
- 小地图 / 结算星级界面 / 暂停菜单 / 新手引导未实现(计划 4.2/4.5,按需求收尾跳过)
- 三种玩法模式(波次/限时/防守)与难度曲线未实现(计划 3.4/3.5,按需求收尾跳过)
- 无存档(规格书要求单机即点即玩)
- M1:靶场 Demo(移动/射击/打靶/换弹)✅
- M2:灰盒完整一局(10 波 + 商店 + 5 类敌人 + Boss)✅
- 收尾:游戏已达预期,进入维护状态