Skip to content

topbat/deltaops-ai-edition

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

三角洲行动 AI 版 · DeltaOps: AI Edition

三角洲行动 AI 版 · DeltaOps: AI Edition

一款运行在浏览器里的 2D 俯视战术撤离射击(top-down tactical extraction shooter) roguelite —— 由四维 AI 驱动。

CI License: MIT Vanilla JS Zero deps Tests


🧭 产品设计介绍

一句话定位:空降程序化生成的战场,完成目标、对抗具备战术行为的 AI 敌人,在被歼灭前抵达撤离点带走战利品。撤离成功才保留战利品 —— 高风险高回报的 roguelite 张力。

设计支柱(Design Pillars)

支柱 含义
🧠 AI 即玩法 AI 不是点缀,而是贯穿玩法四个维度:敌人战术、关卡生成、叙事、难度。
⏱️ 短局高张力 单局 3–6 分钟,撤离前的每一步都是抉择:贪战利品,还是保命撤离?
🔁 零安装、永远可玩 纯前端、零三方依赖;联网调 LLM,断网自动降级到模板,体验不中断。
🎯 手感优先 固定 60Hz 逻辑步、对象池、视锥裁剪 —— 中端笔记本稳 60 FPS。

目标用户:喜欢《三角洲行动 / 逃离塔科夫》撤离玩法、又想"开浏览器即玩"的玩家;以及想研究游戏 AI / 程序化生成 / LLM 叙事的开发者(MIT 开源,自由取用)。

核心循环

主菜单 → 装备/解锁 → [AI] 任务简报 → [AI] 程序化生成战场 → 部署
      → 作战(智能敌人 + 实时自适应难度)
      → 完成目标 → 撤离点激活 → 撤离成功结算   ┐
      → 或 干员阵亡 / 超时 → 失败(损失本局战利品)┘→ [AI] 战后复盘 → 哈夫币 → 解锁升级 → 回到主菜单

📸 截图一览

作战画面
作战画面:俯视战场、智能敌人与其视野锥、小地图、完整 HUD(生命/护甲/体力、武器弹药、投掷物、目标与计时)。


🕹️ 功能介绍

1)作战:俯视战术射击 + 6 兵种智能敌人

俯视视角下移动、瞄准、射击、换弹、冲刺、翻滚(无敌帧)。6 种敌人各有战术侧重:步兵找掩体、突击兵贴脸绕侧、射手远程点射保持距离、重装压制推进、无人机 360° 侦察报点、HVT 高价值目标。敌人拥有视觉(FOV 锥 + 视线遮挡)+ 听觉 + 记忆,会巡逻、警觉、搜索、交战、找掩体、包抄、压制、低血撤退,并通过小队共享"最后已知位置"。

作战与敌人 AI

2)程序化战场:每局不同、同种子可重现

BSP 房间切分 + 走廊连接 + 掩体散布 + 连通性校验,保证出生点→目标→撤离点必可达;接受种子,同种子同地图(便于测试与回放)。按 M 展开大地图查看全局布局、敌人位置与撤离点。

程序化生成地图(大地图)

3)AI 叙事:任务简报 / 战后复盘 / 电台

任务前生成战场简报,任务后生成复盘战报,战斗中触发电台喊话 —— 接入 Claude(claude-haiku-4-5),API Key 仅存于服务端;离线 / 无密钥 / 超时自动降级到内置模板库,叙事永不缺席。

AI 任务简报

4)自适应难度(DDA)

实时采集命中率、击杀节奏、受伤量,平滑计算表现分,动态调整敌人数量 / 血量 / 激进度 / 刷新节奏;设硬边界与新手保护,调整渐进、不突变 —— 高手越打越紧张,新手不至于劝退。

5)武器 / 投掷物 / 经济与解锁

6 把武器(手枪 / 突击步枪 / 冲锋枪 / 霰弹 / 狙击 / 机枪)数据驱动;💣 破片手雷与 🌫️ 烟雾弹,按住 Q/G 预瞄抛物落点与影响半径、松开投掷,烟雾会真实遮挡 AI 视线。撤离结算转化为哈夫币,用于解锁武器与 5 类强化升级。

装备库:武器解锁与强化

6)丰富关卡目标 + 人质护送

6 类目标:清除 HVT、拾取情报、占领标记点、入侵终端、摧毁设施(可被子弹/手雷打掉)、解救人质。解救后人质会跟随护送至撤离点;途中会被敌方流弹与你自己的手雷误伤 —— 护送幸存有奖励,阵亡则扣分。

7)两种模式 + 在线排行榜

行动模式(目标→撤离)与歼灭模式(波次生存冲分)。战绩提交服务端排行榜,结算界面展示榜单并高亮自己;可自定义呼号。

结算与在线排行榜
结算界面:战绩统计、AI 战后复盘、在线排行榜(图中已实时收录本局呼号)。

主菜单
主菜单:模式 / 难度选择、装备库、设置、生涯统计。


💡 创新点介绍

  1. "四维 AI"统一框架 —— 把 AI 落到玩法的四个正交维度(敌人战术 / 关卡生成 / 叙事 / 难度),而非单点堆砌,形成可独立验证、又彼此增强的系统。
  2. LLM 叙事的"安全降级"工程 —— LLM 只产叙事、绝不影响数值判定;输出经净化(去标签/控制符/限长)再渲染;代理侧限流/限长/超时/不外泄堆栈;断网无缝回退模板,在线增色、离线不残
  3. 烟雾真正改变 AI 感知 —— 烟雾弹不是视觉特效,而是接入敌人 canSee 的视线遮挡,催生"扔烟突进/拉视野"的真实战术,无人机也受影响。
  4. 可预测的投掷物 —— 抛物落点预瞄用与运行时一致的物理模型纯函数计算(含撞墙截断),可单测、所见即所得。
  5. 护送张力的涌现式设计 —— 人质可被"己方流弹/手雷"误伤,让护送从"走过去"变成"用走位与身体为友军挡枪"。
  6. 务实的反作弊 —— 单机客户端权威下,用"HMAC 一次性票据 + 绑定 IP + 分数合理性上限"挡住裸刷/重放/盗用,并在文档中诚实声明其边界
  7. 零依赖、可单测、可无头集成验证 —— 纯原生 JS;DOM 无关逻辑全单测,并用桩出的 DOM/Canvas 做"真跑上千帧"的无头集成冒烟,CI 全绿。

⌨️ 操作

输入 行为 输入 行为
W A S D 移动 1 / 2 / 3 切换武器槽
鼠标 瞄准 E / F 交互 / 拾取
左键 射击 Q 破片手雷(按住预瞄,松开投掷)
R 换弹 G 烟雾弹(按住预瞄,松开投掷)
Shift 冲刺 M 放大地图
Space 翻滚(无敌帧) Esc 暂停
Tab 目标面板 F3 性能面板

🚀 运行

ES Modules 不能用 file:// 直接打开,需经 HTTP 提供。任选其一:

# A. 纯静态(离线模板叙事)
python -m http.server 5173      # 或:npx serve .
#    浏览器打开 http://localhost:5173

# B. 带 Node 代理(启用在线 LLM + 排行榜,零三方依赖,Node ≥ 18)
cd server
cp .env.example .env            # 填 ANTHROPIC_API_KEY(留空也能跑,自动用模板)
node server.js                  # http://localhost:8787

🧪 测试

npm test            # 逻辑单测 (66) + 无头集成冒烟 (20)
  • tests/run.js:地图连通/可达/可重现、A*、DDA 边界、配置一致性、存档/LLM 净化、投掷物落点预测、烟雾遮挡、目标类型、人质护送结算、排行榜净化 —— 66 项
  • tests/smoke.js:桩出 DOM/Canvas,真实构造 App 并跑完整流程 + 上千帧作战循环 + 投掷/烟雾/解救/排行榜降级 —— 20 项

🧩 模块介绍

src/
├─ main.js              # App / 顶层状态机(菜单→简报→作战→结算)
├─ match.js             # 一局会话:装配 ctx、目标/撤离/经济/胜负/人质
├─ config/              # game / weapons / enemies / balance —— 数值基线(单一事实源)
├─ core/                # loop(固定步) / input / math / rng(可重现) / events / pool(对象池) / storage / state
├─ world/               # mapgen(BSP) / tilemap+LOS / cover / spawn / camera
├─ entities/            # player / enemy / bullet / pickup / particle / throwable
├─ ai/                  # fsm(行为) / states / perception(FOV+听觉+烟雾) / pathfinding(A*) / squad / dda
├─ systems/             # combat / collision / render(离屏缓存+裁剪) / particles / audio(合成) / spawnDirector
├─ ui/                  # hud / minimap / menu / loadout / briefing / result / widgets
├─ llm/                 # client(代理+降级) / fallback(模板) / prompts(模板化防注入)
└─ services/            # leaderboard(取票→提交)
server/                 # 零依赖 Node:静态托管 + /api/llm 代理 + /api/leaderboard(票据/限流/校验)
docs/                   # 8 份设计与测试文档
模块 职责亮点
core/loop 固定时间步 60Hz + 渲染插值 + 防螺旋死亡
core/pool 定长对象池(敌 64 / 弹 512 / 粒 1024),零 GC 抖动目标
world/mapgen BSP+走廊+掩体+flood-fill 连通校验,种子可重现
ai/fsm + perception + pathfinding 10 态 FSM、FOV/视线/听觉/烟雾感知、A*(octile+缓存+分帧预算)、小队 LKP
ai/dda 表现分(EMA)→四旋钮(硬边界+限幅+新手保护)
systems/render 6 层分层、离屏地面缓存、视锥裁剪、相机震屏/前瞻
llm/* + server 代理化 LLM(密钥仅服务端)+ 净化 + 全链路降级

📚 文档

文档 说明
docs/00-game-concept.md 设计纲要(单一事实源)
docs/01-PRD.md 产品需求文档
docs/02-tech-design.md 技术方案实现
docs/03-ui-design.md UI 设计
docs/04-security-test.md 安全测试
docs/05-performance-test.md 性能测试
docs/06-functional-test.md 功能测试
docs/07-deployment.md 部署指南

🗓️ 更新日志

  • v1.3.1 —— 开源协议由 The Unlicense 改为 MIT
  • v1.3 —— 人质护送张力(误伤/护送奖励);排行榜启发式反作弊(票据绑定 IP + 分数合理性上限)。
  • v1.2 —— 手雷落点预瞄;解救人质目标;排行榜 HMAC 一次性签名票据防重放/裸刷。
  • v1.1 —— 投掷物(破片/烟雾);扩展关卡目标(hack/destroy);在线排行榜后端。
  • v1.0 —— 首个可玩版本:四维 AI、两种模式、完整循环、7 份文档。

📄 许可

本项目采用 MIT License —— 可自由复制、修改、商用、再发布,仅需保留版权与许可声明

本项目为原创玩法实现,与艺电(EA)《三角洲行动 / Delta Force》商标无关联,仅为同类玩法的 AI 技术演示。

About

浏览器 2D 俯视战术撤离射击 roguelite —— 四维 AI:智能敌人/程序化地图/LLM 叙事/自适应难度。原生 JS + Canvas2D,零前端依赖。

Topics

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors

Languages