目录

AI重生记 前端原型

基于 React + TypeScript + Tailwind CSS 的六页面交互原型,已接入本地设计图资源。

运行

npm install
npm run dev

默认开发地址: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

DeepSeek AI 配置

项目通过 Vite 本地代理 /api/deepseek/chat 调用 DeepSeek,避免把 API Key 打进浏览器包。

  1. 复制 .env.example.env.local
  2. .env.local 中填入 DEEPSEEK_API_KEY
  3. 运行 npm run dev 后,死亡页的 AI深度分析 与标题页的 与AI对话 会优先调用 DeepSeek。

.env.local 已加入 .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

交互覆盖

  • 标题页进入重生流程、继续主城、查看档案。
  • 关键词页支持核心关键词单选、辅助关键词多选,并动态刷新 AI 推荐面板。
  • 主城页支持进入战斗、返回关键词、进入重生强化,并加入 AI-Native 任务插针:训练、卡池、工坊、命运塔或手动扫描后,AI 会根据当前资源、路线、历史记录插入即时任务。
  • 主城页新增报告落地的“安全屋修复循环”:玩家用晶核/蓝晶修复电源、生命树、断桥、档案中枢,永久改变世界修复度、稳定度、污染值、安全屋等级和可探索区域。
  • 探索入口新增 AI 随机副本生成:每轮根据世界状态、关键词、重生次数和设施修复程度生成副本主题、目标、变体规则、难度倍率与奖励提示。
  • 战斗页支持点击或按 Q / E / R 释放技能,技能会进入冷却,玩家会持续受到模拟伤害。
  • 战斗胜利或死亡后会把副本收益、世界污染/稳定变化和死亡样本回写到安全屋,形成“随机副本 → 战斗/死亡 → 安全屋修复 → 下一轮生成”的闭环。
  • 死亡页展示本轮数据、安全屋回写状态和 AI 分析,点击 AI深度分析 会调用 DeepSeek 生成策略,失败时回退到本地模拟。
  • 重生页支持消耗重生点强化节点、选择剧情分支,并回到主城形成循环。

AI-Native 任务插针

核心创意:AI 不只是生成旁白,而是作为“任务导演”嵌入任务链。玩家执行主城行动后,系统先用本地规则生成可玩的插针任务与奖励,再让 DeepSeek 在已配置时重写任务叙事;若 DeepSeek 不可用,任务仍可通过本地导演完整运行。

  • 插入时机:卡池、训练、工坊、命运塔、战斗胜利、手动扫描当前链路。
  • 可玩闭环:生成任务 → 玩家执行或忽略 → 奖励写回资源、认知、记忆、特质或重生点 → 操作记录回流给后续 AI 判断。
  • 安全边界:奖励数值由本地规则控制,DeepSeek 只负责 UI 文案和叙事表达,避免模型输出直接破坏数值经济。

游戏逻辑引擎(src/engine)

与框架解耦的纯 TypeScript 引擎,封装重生循环、技能系统、战斗模拟、AI 分析与数据记录。所有数值通过 EngineConfig 注入,可复用到不同关卡与敌人组合。引擎内置的 aiSuggestAction 为本地确定性决策(生存率/动作/连携/分支推荐),与用于剧情文本生成的 DeepSeek 服务互补。

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()

在 React 中绑定

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>
  );
}

端到端模拟(无需 UI)

npm run simulate

输出完整重生循环:战斗 → 死亡分析 → 生成下一轮 → 再战,并打印生存率随重生上升的序列。 AI重生记项目提交说明 AI重生记项目提交说明

关于

基于 React + TypeScript + Vite 的 AI 原生 Roguelite Web 游戏原型,包含重生循环、战斗模拟、死亡分析、AI 任务插针与 Unity 战斗 VFX 示例。

63.6 MB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9 京公网安备 11010802047560号