Initial commit

This commit is contained in:
shiyue
2026-03-27 18:21:29 +08:00
commit 27fd364976
12 changed files with 2619 additions and 0 deletions

218
01-需求与初始设计.md Normal file
View File

@@ -0,0 +1,218 @@
# 🎮 产品需求文档 (PRD)《Project Vibe: Ship It!》
## 1. 产品愿景与核心体验
* **游戏类型:** 桌面堆叠生存 (Desktop Stacking Survival) + 模拟经营 + Roguelike。
* **目标受众:** 开发者、PM、QA、设计师以及喜欢《Stacklands》或《密教模拟器》的策略玩家。
* **核心体验:** 玩家在一个没有网格的“桌面”上,通过**拖拽合并卡牌**来推进项目进度写代码、提需求、修Bug。在有限的时间内Sprint一边应对由**真实大语言模型 (LLM) 动态生成的突发危机**,一边积攒资源完成交付物。
* **VibeCoding 特色:** 游戏内的终极神卡是【Vibe助手】它可以跨职业融合任何卡牌大幅缩短进度条但有概率引入“技术债”卡牌。
---
## 2. 核心游戏循环 (Core Loop & Roguelike)
游戏采用经典的“局内战斗+局外成长”的 Roguelike 循环。
### 2.1 局内Sprint 冲刺期(生存与合成)
* **周期时长:** 每个 Sprint 现实时间约为 3-5 分钟。
* **胜利条件:** 在倒计时结束前利用桌面卡牌合成出规定数量的【交付物】3 个可用模块),且【项目资金】> 0。
* **失败条件:** 【项目资金】归零(被 Bug 或超时危机扣光)。
* **核心操作:** 拖拽卡牌重叠 -> 触发对应配方 -> 显示进度条 -> 倒计时结束产出新卡/资源。
### 2.2 局外Retrospective 复盘大会(成长抉择)
* **结算与奖励:** Sprint 成功后,剩余的时间和资源按比例转化为【项目奖金】。
* **肉鸽抉择3选1** 玩家从随机刷出的 3 个选项中选择 1 个强化自身:
* *新增高级卡牌:* 如【自动化测试脚本】(永久复用)。
* *获取遗物 (Relics)* 如【敏捷教练】(全局 Buff所有合成时间缩短 10%,但每回合扣除 5% 资金)。
* *清理牌库:* 花费资金销毁桌面上难以处理的【技术债】或【屎山代码】卡。
---
## 3. 核心机制设计
### 3.1 桌面与状态机 (The Board & State)
* **无网格桌面:** 界面是一个类似操作系统的桌面。卡牌可以任意摆放和堆叠。
* **全局资源:** 顶部 UI 显示当前 Sprint 的【倒计时】和【项目资金】。
* **卡牌堆叠判定:** 当卡牌 A 被拖拽并释放 (Drop) 在卡牌 B 上时,系统检索 `Crafting_Recipes` (合成配方表)。若匹配,两张卡牌进入 `Processing` 状态锁定,头顶出现进度条。
### 3.2 基础卡牌与职业卡池 (Classes & Decks)
玩家开局需选择职业,决定初始手牌和专属配方路线。
#### 1. 基础公共卡池 (所有职业共用的环境底座)
* **【资源卡】**
* `专注力 (Focus)`:基础合成消耗品。随时间自然蒸发。
* `咖啡 (Coffee)`:万能提神药。
* `预算 (Budget)`:用于在商店购买服务器或外包。
* `脑洞 (Idea)`:随机飘落在桌面的灵感。
* **【建筑/设施卡】 (放在桌面上长期生效)**
* `咖啡机 (Coffee Machine)` + `预算` = 自动每 15 秒产出 1 杯 `咖啡`
* `云服务器 (Cloud Server)`:承载高级代码,产出项目进度,但每 10 秒消耗 1 点 `预算`
* **【负面/垃圾卡】 (需要想办法消除,否则占满桌面或引爆危机)**
* `Bug`:由脏代码变异,会吃掉附近的 `专注力`
* `技术债 (Tech Debt)`无法移动占据桌面空间。3个 `技术债` 聚在一起会召唤一次 【LLM 重大危机】。
* `无意义的会议 (Pointless Meeting)`:随机抓取桌面上的一张 `实体卡(人)`,使其被锁定 20 秒,产出 `疲惫 (Burnout)`
---
#### 2. 👨‍💻 资深开发 (Developer) 的深度合成树:架构师之路
开发流派的乐趣在于**“从写屎山到重构成微服务”**的基建狂魔体验。
* **T1造砖阶段 (脏与快)**
* `开发人员` + `专注力` = `脏代码 (Dirty Code)` (需 3 秒)
* `脏代码` + `脏代码` = `面条代码 (Spaghetti Code)` (只需 2 秒,但 30% 几率同时产出 `Bug`)
* **T2重构阶段 (质量提升)**
* `面条代码` + `开发人员` + `咖啡` = `干净的代码 (Clean Code)` (需 15 秒)
* `脏代码` + `Vibe AI 助手` = `干净的代码` (只需 2 秒,极速重构!但 10% 几率产出 `开源协议侵权警告(危机卡)`)
* **T3架构阶段 (质变)**
* `干净的代码` + `干净的代码` = `可用模块 (Working Module)`
* `可用模块` + `云服务器` = **【微服务节点 (Microservice)】**(建筑卡:每 5 秒自动产出 1 个 `项目进度` 和 100 `预算`)
* *隐藏配方:* `开发人员` + `无意义的会议` = `摸鱼打代码` -> 产出 `开源组件` (高价值卡牌) + `老板的怒火`
---
#### 3. 📊 产品经理 (PM) 的深度合成树:空手套白狼
产品流派没有直接产出代码的能力,乐趣在于**资源调度、画大饼和踢皮球**。
* **T1需求制造**
* `产品经理` + `脑洞` = `一句话需求 (Vague Requirement)` (极快)
* `一句话需求` + `无意义的会议` = `PRD文档 (PRD)` + `画大饼 (Empty Promise)`卡片。
* **T2白嫖与外包**
* `画大饼` + `开发人员(NPC/队友)` = 临时将该开发者的合成速度提升 200%,但 10 秒后必定产出 `离职倾向 (Burnout)`(极度危险的负面卡)。
* `PRD文档` + `预算(1000)` = `外包团队` -> 产出 `粗糙的模块` (可用但随时会坏)。
* **T3乾坤大挪移 (解决危机的独特方式)**
* `产品经理` + `Bug` = `特性 (Feature)`。*(神级配方:直接把 Bug 卡强行重命名为特性卡,变成可交付物,极其幽默)*
* `产品经理` + `技术债` = `排期延期卡`。*(把技术债塞进排期,消除占用,但会减少 Sprint 最终结算奖励)*
---
#### 4. 🕵️ 测试工程师 (QA) 的深度合成树:陷阱与净化
测试流派的乐趣在于**“找茬”、建立自动化流水线**,看着 Bug 灰飞烟灭。
* **T1挑刺阶段**
* `测试员` + `脏代码` / `面条代码` = `Bug 报告` + `干净的代码` (提纯过程,需 10 秒)。
* `Bug 报告` + `开发人员` = `争吵 (Argument)` + `重构好的代码`
* **T2自动化防御**
* `测试员` + `专注力` + `咖啡` = `断言脚本 (Assert Script)` (消耗品武器卡)。
*`断言脚本` 拖到 `Bug``技术债` 上 = 瞬间将其秒杀,并掉落 `项目质量分`
* **T3建立流水线 (质变)**
* `测试员` + `可用模块` + `云服务器` = **【CI/CD 流水线】**(自动化建筑)。
* *作用:* 只要你把任何 `脏代码` 扔进 【CI/CD 流水线】它会自动吃进去5 秒后吐出 `干净的代码` 或者 `报警邮件`。玩家无需再手动派人去测试。
---
#### 5. 🎨 UI/UX 设计师 (Designer) 的深度合成树:美学的代价
设计师流派主打**提升项目溢价(卖更多的钱)**,但要面对甲方的反复无常。
* **T1原型设计**
* `设计师` + `专注力` = `线框图 (Wireframe)`
* `线框图` + `咖啡` = `高保真原型 (Figma Prototype)`
* **T2前端融合**
* `高保真原型` + `可用模块(后端)` = `绚丽的 App (Gorgeous App)`(交付时获得 3 倍预算奖励)。
* **T3甲方的折磨 (特殊的卡牌连环演变)**
* 当你打出 `绚丽的 App` 时,有概率触发连环负面状态:
* `设计师` + `甲方反馈` = `设计稿_V2`
* `设计师` + `设计稿_V2` = `设计稿_最终版`
* `设计师` + `设计稿_最终版` = `设计稿_打死不改_绝对最终_V8.psd`。(只有这张卡才能真正交付)。
---
### 💡 VibeCoding 视角的 JSON 数据结构设计
有了这么庞大且幽默的配方树,如果你用传统的 IF-ELSE 来写代码绝对会疯掉。但对于 AI 辅助编程来说,你只需要让 AI 帮你搭建一个**基于 JSON 解析的合成引擎**。
你可以直接把这个 JSON 结构发给大模型(如 Cursor让它生成核心逻辑
```json
// recipes.json (合成配方配置表)
[
{
"id": "recipe_spaghetti_code",
"inputs": ["dirty_code", "dirty_code"],
"required_actor": null,
"time_ms": 2000,
"outputs": [
{ "card_id": "spaghetti_code", "chance": 1.0 },
{ "card_id": "bug", "chance": 0.3 }
],
"description": "复制粘贴就是快但也容易出Bug。"
},
{
"id": "recipe_qa_purify",
"inputs": ["spaghetti_code"],
"required_actor": "qa_engineer",
"time_ms": 10000,
"outputs": [
{ "card_id": "clean_code", "chance": 1.0 },
{ "card_id": "bug_report", "chance": 1.0 }
],
"description": "测试老哥强行帮你揪出Bug并提纯代码。"
},
{
"id": "recipe_pm_magic",
"inputs": ["bug"],
"required_actor": "product_manager",
"time_ms": 5000,
"outputs": [
{ "card_id": "feature", "chance": 1.0 }
],
"description": "这不是Bug这是特性"
}
]
```
---
## 4. LLM 动态危机系统 (AI Director)
这是游戏的核心亮点。LLM 将作为“甲方/系统”实时生成针对玩家当前桌面弱点的危机卡。
### 4.1 触发与生成机制
1. **心跳检测:** 每隔 30 秒,游戏抓取当前桌面关键卡牌数量(如:资金 1w脏代码 5测试 0
2. **异步请求:** 将状态发送给 LLM如 OpenAI API请求生成一个针对性的危机。
### 4.2 API 延迟处理策略(极简且优雅)
* **预警卡生成(立即执行):** API 请求发出的瞬间,桌面上立刻凭空掉落一张中立卡牌【⚠️ 甲方正在输入...】。
* **UI 表现:** 卡牌显示 Loading 动画。玩家此时会有未知的压迫感,但无法对其进行操作。
* **翻转与爆发Promise Resolve** LLM 返回 JSON 后,预警卡带有动画翻转为真正的【红色危机卡】,并开始倒计时。
* **本地兜底 (Fallback)** 若请求超过 5 秒未返回,触发兜底逻辑,预警卡翻转为本地配置表中的随机通用危机(如【服务器宕机】)。
### 4.3 LLM 通信数据结构 (JSON 契约)
**System Prompt 要求 LLM 返回以下结构:**
```json
{
"crisis_name": "内存泄漏灾难",
"description": "你的脏代码堆积如山,服务器马上就要炸了!",
"timer_seconds": 30, // 玩家解题的时间限制
"penalty_type": "lose_money", // 超时惩罚:扣除资金
"penalty_value": 20000,
"required_solution_tags": ["need_test_card", "need_focus_card"] // 解除危机需要的卡牌标签
}
```
**解题玩法:** 危机卡带有两个空槽(对应 `required_solution_tags`)。玩家必须在 30 秒内将具有相应 Tag 的卡牌(如 `测试员卡``专注力卡`)拖拽到危机卡上,读条 3 秒后危机解除,转化为奖励。超时则执行惩罚。
---
## 5. VibeCoding 开发任务拆解建议
为了充分利用 VibeCoding 的能力,建议您按照以下阶段向 AI (Cursor/Copilot) 提交 Prompt逐步构建 MVP
### Phase 1: 核心前端框架与拖拽 (MVP)
* **技术栈选型:** React + TypeScript + Vite + TailwindCSS (或者 Zustand 用于全局状态管理)。
* **核心任务 1定义数据结构**。让 AI 帮您生成 `Card`, `Recipe`, `BoardState` 的 TypeScript Interface。
* **核心任务 2实现拖拽与碰撞判定 (Drag & Drop)**。不要用复杂的物理引擎,让 AI 写一个基于 HTML5 DnD API 或 `framer-motion` 的拖拽组件。判定逻辑为:“松开鼠标时,检查当前卡牌的坐标是否与另一张卡牌的包围盒重叠”。
* **核心任务 3实现倒计时状态机**。用 `useEffect``requestAnimationFrame` 实现两个重叠卡牌进入 `Processing` 状态,读条结束后触发回调生成新卡。
### Phase 2: 完善 JSON 配方表与职业系统
* 将配方逻辑完全抽离为静态 JSON 配置。
* **VibeCoding 优势:** 您只需写出 2 个示例配方,可以直接让大模型批量生成几十个符合“软件工程梗”的配方配置表。
### Phase 3: 接入 LLM 危机生成器 (API 联调)
* 编写 `useCrisisDirector` 自定义 Hook。
* 实现“预警卡 -> API Fetch -> 解析 JSON -> 翻转为危机卡 -> 5秒超时本地 Fallback” 的完整异步逻辑链路。
### Phase 4: Roguelike 循环包装
* 增加 Sprint 的总时间计时器。
* 增加结算画面和 3 选 1 的 UI 组件。