Merge pull request ‘提交 AI重生记 项目主目录代码’ (#1) from feature/ai-rebirth-init into master
基于 React + TypeScript + Tailwind CSS 的六页面交互原型,已接入本地设计图资源。
npm install npm run dev
默认开发地址:http://localhost:7000
http://localhost:7000
npm run typecheck # TypeScript 类型检查 npm run lint # ESLint 代码规范检查 npm run test # Vitest 核心引擎单元测试 npm run build # 生产构建 npm run check # 基础交付门禁 npm run test:e2e # Playwright 商业 Demo 冒烟测试 npm run demo:verify # 基础门禁 + 商业 Demo 冒烟
首次在新机器运行 Playwright 时,如提示缺少浏览器,请执行:
npx playwright install chromium
商业 Demo 的工程成熟度标准见 docs/commercial-demo-readiness.md。
docs/commercial-demo-readiness.md
项目通过 Vite 本地代理 /api/deepseek/chat 调用 DeepSeek,避免把 API Key 打进浏览器包。
/api/deepseek/chat
.env.example
.env.local
DEEPSEEK_API_KEY
npm run dev
AI深度分析
与AI对话
.env.local 已加入 .gitignore,不要提交真实密钥。
.gitignore
src/ App.tsx main.tsx index.css components/ GameFrame.tsx GlassPanel.tsx NeonButton.tsx PageStepper.tsx Portrait.tsx ProgressBar.tsx ResourceChip.tsx SkillButton.tsx StatLine.tsx data/ gameData.ts pages/ TitlePage.tsx KeywordSelectPage.tsx CityExplorePage.tsx BattleSkillPage.tsx DeathAnalysisPage.tsx RebirthBranchPage.tsx services/ deepseekAi.ts types/ game.ts
Q
E
R
核心创意:AI 不只是生成旁白,而是作为“任务导演”嵌入任务链。玩家执行主城行动后,系统先用本地规则生成可玩的插针任务与奖励,再让 DeepSeek 在已配置时重写任务叙事;若 DeepSeek 不可用,任务仍可通过本地导演完整运行。
与框架解耦的纯 TypeScript 引擎,封装重生循环、技能系统、战斗模拟、AI 分析与数据记录。所有数值通过 EngineConfig 注入,可复用到不同关卡与敌人组合。引擎内置的 aiSuggestAction 为本地确定性决策(生存率/动作/连携/分支推荐),与用于剧情文本生成的 DeepSeek 服务互补。
EngineConfig
aiSuggestAction
src/engine/ types.ts 领域类型(敌人/战斗/AI/记录/配置) config.ts 默认配置:玩家、技能、连携、敌人花名册、分支 skillSystem.ts 冷却、伤害计算、连携检测、减伤(纯函数) aiAdvisor.ts 生存率(TTK/TTD)、动作/连携/分支推荐 deathAnalysis.ts 死亡归因与奖励(纯函数) battleEngine.ts 单场战斗状态机(敌人行为/阶段/破防/动态事件) rebirthLoop.ts 历史记录、recordDeath、generateNextRound、生涯分析 gameEngine.ts 顶层编排:统一 API + 观察者模式 src/hooks/ useGameEngine.ts React 绑定(自动 tick + 状态订阅)
核心 API:startBattle() / useSkill(skillId) / recordDeath() / generateNextRound() / aiSuggestAction()。
startBattle()
useSkill(skillId)
recordDeath()
generateNextRound()
aiSuggestAction()
import { useGameEngine } from './hooks/useGameEngine'; function Battle() { const { state, engine } = useGameEngine(); return ( <div> <p>生存率:{state.suggestion?.survivalRate}%</p> <button onClick={() => engine.startBattle()}>开始战斗</button> <button onClick={() => engine.useSkill('void-strike')}>虚空斩击</button> </div> ); }
npm run simulate
输出完整重生循环:战斗 → 死亡分析 → 生成下一轮 → 再战,并打印生存率随重生上升的序列。 AI重生记项目提交说明 AI重生记项目提交说明
基于 React + TypeScript + Vite 的 AI 原生 Roguelite Web 游戏原型,包含重生循环、战斗模拟、死亡分析、AI 任务插针与 Unity 战斗 VFX 示例。
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
AI重生记 前端原型
基于 React + TypeScript + Tailwind CSS 的六页面交互原型,已接入本地设计图资源。
运行
默认开发地址:
http://localhost:7000工程验证
首次在新机器运行 Playwright 时,如提示缺少浏览器,请执行:
商业 Demo 的工程成熟度标准见
docs/commercial-demo-readiness.md。DeepSeek AI 配置
项目通过 Vite 本地代理
/api/deepseek/chat调用 DeepSeek,避免把 API Key 打进浏览器包。.env.example为.env.local。.env.local中填入DEEPSEEK_API_KEY。npm run dev后,死亡页的AI深度分析与标题页的与AI对话会优先调用 DeepSeek。.env.local已加入.gitignore,不要提交真实密钥。项目结构
交互覆盖
Q/E/R释放技能,技能会进入冷却,玩家会持续受到模拟伤害。AI深度分析会调用 DeepSeek 生成策略,失败时回退到本地模拟。AI-Native 任务插针
核心创意:AI 不只是生成旁白,而是作为“任务导演”嵌入任务链。玩家执行主城行动后,系统先用本地规则生成可玩的插针任务与奖励,再让 DeepSeek 在已配置时重写任务叙事;若 DeepSeek 不可用,任务仍可通过本地导演完整运行。
游戏逻辑引擎(src/engine)
与框架解耦的纯 TypeScript 引擎,封装重生循环、技能系统、战斗模拟、AI 分析与数据记录。所有数值通过
EngineConfig注入,可复用到不同关卡与敌人组合。引擎内置的aiSuggestAction为本地确定性决策(生存率/动作/连携/分支推荐),与用于剧情文本生成的 DeepSeek 服务互补。核心 API:
startBattle()/useSkill(skillId)/recordDeath()/generateNextRound()/aiSuggestAction()。在 React 中绑定
端到端模拟(无需 UI)
输出完整重生循环:战斗 → 死亡分析 → 生成下一轮 → 再战,并打印生存率随重生上升的序列。 AI重生记项目提交说明 AI重生记项目提交说明