2026-01-07 16:36:54 +08:00
|
|
|
|
# 密室杀人侦破 - 详细开发计划
|
|
|
|
|
|
|
|
|
|
|
|
## 项目概述
|
|
|
|
|
|
|
|
|
|
|
|
**项目名称**: 密室杀人侦破
|
|
|
|
|
|
**项目类型**: 网页推理游戏
|
|
|
|
|
|
**核心功能**: 使用DeepSeek API自动生成剧情和选项文案
|
2026-01-08 18:25:46 +08:00
|
|
|
|
|
2026-01-07 16:36:54 +08:00
|
|
|
|
|
|
|
|
|
|
## 游戏核心机制
|
|
|
|
|
|
|
|
|
|
|
|
### 1. 基本游戏流程
|
|
|
|
|
|
- **场景数量**: 20个独立场景
|
|
|
|
|
|
- **选项数量**: 每个场景4个选项
|
|
|
|
|
|
- **进度系统**: 0-100%进度条,达到100%时结案
|
|
|
|
|
|
- **结局类型**: 好结局、坏结局、最坏结局
|
|
|
|
|
|
|
|
|
|
|
|
### 2. 选项类型与效果
|
|
|
|
|
|
|
|
|
|
|
|
#### 选项分类(玩家不可见)
|
|
|
|
|
|
1. **正确选项**
|
|
|
|
|
|
- 进度增加: 5-10%
|
|
|
|
|
|
- 效果: 正常推进剧情,无负面效果
|
|
|
|
|
|
|
|
|
|
|
|
2. **错误选项**
|
|
|
|
|
|
- 进度增加: 5-10%
|
|
|
|
|
|
- 效果: 可能触发坏结局条件
|
|
|
|
|
|
|
|
|
|
|
|
3. **未知选项**
|
|
|
|
|
|
- 进度变化: 保持不变
|
|
|
|
|
|
- 效果: 需要玩家谨慎判断
|
|
|
|
|
|
|
|
|
|
|
|
4. **危险选项**
|
|
|
|
|
|
- 进度增加: 8-10%
|
|
|
|
|
|
- 效果: 可能触发最坏结局条件
|
|
|
|
|
|
|
|
|
|
|
|
### 3. 危机系统
|
|
|
|
|
|
|
|
|
|
|
|
#### 触发条件
|
|
|
|
|
|
- 连续选择危险选项 ≥ 3次
|
|
|
|
|
|
|
|
|
|
|
|
#### 危机效果(随机触发一种)
|
|
|
|
|
|
1. **紧张状态**
|
|
|
|
|
|
- 增加2个无关选项
|
|
|
|
|
|
- 选项总数变为6个
|
|
|
|
|
|
|
|
|
|
|
|
2. **焦虑状态**
|
|
|
|
|
|
- 所有选项文本有概率变为黑框不可见状态
|
|
|
|
|
|
- 降低判断难度
|
|
|
|
|
|
|
|
|
|
|
|
3. **恐慌状态**
|
|
|
|
|
|
- 界面颜色变为黑、红、白
|
|
|
|
|
|
- 选项文字出现抖动效果
|
|
|
|
|
|
|
|
|
|
|
|
### 4. 结局判定系统
|
|
|
|
|
|
|
|
|
|
|
|
#### 结局条件
|
|
|
|
|
|
- **好结局**: 正确辨别真凶
|
|
|
|
|
|
- **坏结局**: 找到表面罪犯,真凶另有其人
|
|
|
|
|
|
- **最坏结局**: 被误认为罪犯
|
|
|
|
|
|
|
|
|
|
|
|
#### 结局触发规则
|
|
|
|
|
|
- 错误 + 危险选项选择次数 ≥ 7次: 好结局 → 坏结局
|
|
|
|
|
|
- 危险选项选择次数 ≥ 4次: 坏结局 → 最坏结局
|
|
|
|
|
|
|
|
|
|
|
|
## 技术架构设计
|
|
|
|
|
|
|
|
|
|
|
|
### 1. 前端技术栈
|
|
|
|
|
|
- **框架**: React/Vue.js
|
|
|
|
|
|
- **样式**: CSS3 + 动画效果
|
|
|
|
|
|
- **状态管理**: Redux/Vuex
|
|
|
|
|
|
- **路由**: React Router/Vue Router
|
|
|
|
|
|
|
|
|
|
|
|
### 2. 后端技术栈
|
|
|
|
|
|
- **语言**: Node.js/Python
|
|
|
|
|
|
- **API集成**: DeepSeek API调用
|
|
|
|
|
|
- **数据存储**: 本地存储/简单数据库
|
|
|
|
|
|
|
|
|
|
|
|
### 3. API集成设计
|
|
|
|
|
|
|
|
|
|
|
|
#### DeepSeek API调用策略
|
|
|
|
|
|
```javascript
|
|
|
|
|
|
// 场景生成API调用
|
|
|
|
|
|
const generateScene = async (currentProgress, previousChoices) => {
|
|
|
|
|
|
const prompt = `
|
|
|
|
|
|
生成第${currentScene}个密室杀人场景:
|
|
|
|
|
|
当前进度:${currentProgress}%
|
|
|
|
|
|
玩家选择历史:${previousChoices}
|
|
|
|
|
|
请生成:
|
|
|
|
|
|
1. 场景描述(200-300字)
|
|
|
|
|
|
2. 4个选项文案(每个选项20-30字)
|
|
|
|
|
|
3. 选项类型标注(正确/错误/未知/危险)
|
|
|
|
|
|
`;
|
|
|
|
|
|
|
|
|
|
|
|
return await callDeepSeekAPI(prompt);
|
|
|
|
|
|
};
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
#### 剧情连贯性保证
|
|
|
|
|
|
- 保存玩家选择历史
|
|
|
|
|
|
- 基于历史生成连贯剧情
|
|
|
|
|
|
- 维护角色关系和证据链
|
|
|
|
|
|
|
|
|
|
|
|
## 用户界面设计
|
|
|
|
|
|
|
|
|
|
|
|
### 1. 页面结构
|
|
|
|
|
|
1. **首页**
|
|
|
|
|
|
- 游戏标题和背景介绍
|
|
|
|
|
|
- 案件基本信息
|
|
|
|
|
|
- "开始推理"按钮
|
|
|
|
|
|
|
|
|
|
|
|
2. **游戏主界面**
|
|
|
|
|
|
- 顶部: 进度条显示
|
|
|
|
|
|
- 中部: 当前场景描述
|
|
|
|
|
|
- 底部: 4个选项按钮
|
|
|
|
|
|
- 侧边: 证据收集区域(可选)
|
|
|
|
|
|
|
|
|
|
|
|
3. **结局页面**
|
|
|
|
|
|
- 案件结论展示
|
|
|
|
|
|
- 结局评价
|
|
|
|
|
|
- 重新开始按钮
|
|
|
|
|
|
|
|
|
|
|
|
### 2. 视觉设计
|
|
|
|
|
|
- **主色调**: 暗色系(营造神秘氛围)
|
|
|
|
|
|
- **字体**: 易读的衬线字体
|
|
|
|
|
|
- **动画**: 平滑的过渡效果
|
|
|
|
|
|
- **响应式**: 适配移动端和桌面端
|
|
|
|
|
|
|
|
|
|
|
|
## 开发阶段规划
|
|
|
|
|
|
|
|
|
|
|
|
### 第一阶段:基础框架搭建(1-2周)
|
|
|
|
|
|
- [ ] 项目初始化
|
|
|
|
|
|
- [ ] 基础页面结构
|
|
|
|
|
|
- [ ] 简单的状态管理
|
|
|
|
|
|
- [ ] DeepSeek API集成测试
|
|
|
|
|
|
|
|
|
|
|
|
### 第二阶段:核心功能实现(2-3周)
|
|
|
|
|
|
- [ ] 场景生成系统
|
|
|
|
|
|
- [ ] 选项选择逻辑
|
|
|
|
|
|
- [ ] 进度管理系统
|
|
|
|
|
|
- [ ] 基础UI界面
|
|
|
|
|
|
|
|
|
|
|
|
### 第三阶段:高级功能开发(2周)
|
|
|
|
|
|
- [ ] 危机系统实现
|
|
|
|
|
|
- [ ] 结局判定系统
|
|
|
|
|
|
- [ ] 视觉特效(恐慌状态)
|
|
|
|
|
|
- [ ] 数据持久化
|
|
|
|
|
|
|
|
|
|
|
|
### 第四阶段:优化和测试(1周)
|
|
|
|
|
|
- [ ] 性能优化
|
|
|
|
|
|
- [ ] 用户体验测试
|
|
|
|
|
|
- [ ] Bug修复
|
|
|
|
|
|
- [ ] 部署上线
|
|
|
|
|
|
|
|
|
|
|
|
## 数据结构和状态管理
|
|
|
|
|
|
|
|
|
|
|
|
### 1. 游戏状态对象
|
|
|
|
|
|
```javascript
|
|
|
|
|
|
const gameState = {
|
|
|
|
|
|
currentScene: 1,
|
|
|
|
|
|
progress: 0,
|
|
|
|
|
|
choicesHistory: [],
|
|
|
|
|
|
dangerCount: 0,
|
|
|
|
|
|
errorCount: 0,
|
|
|
|
|
|
crisisActive: false,
|
|
|
|
|
|
crisisType: null,
|
|
|
|
|
|
endingType: 'good' // good/bad/worst
|
|
|
|
|
|
};
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 2. 场景数据结构
|
|
|
|
|
|
```javascript
|
|
|
|
|
|
const sceneData = {
|
|
|
|
|
|
id: 1,
|
|
|
|
|
|
description: "场景描述文本",
|
|
|
|
|
|
options: [
|
|
|
|
|
|
{ text: "选项1", type: "correct", effect: 8 },
|
|
|
|
|
|
{ text: "选项2", type: "danger", effect: 10 },
|
|
|
|
|
|
{ text: "选项3", type: "unknown", effect: 0 },
|
|
|
|
|
|
{ text: "选项4", type: "error", effect: 6 }
|
|
|
|
|
|
]
|
|
|
|
|
|
};
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 安全注意事项
|
|
|
|
|
|
|
|
|
|
|
|
### API密钥安全
|
|
|
|
|
|
- 不要在前端代码中硬编码API密钥
|
|
|
|
|
|
- 使用环境变量或后端代理
|
|
|
|
|
|
- 考虑使用服务器端API调用
|
|
|
|
|
|
|
|
|
|
|
|
### 用户数据保护
|
|
|
|
|
|
- 仅存储必要的游戏进度数据
|
|
|
|
|
|
- 不收集个人敏感信息
|
|
|
|
|
|
- 提供数据清除功能
|
|
|
|
|
|
|
|
|
|
|
|
## 扩展功能(可选)
|
|
|
|
|
|
|
|
|
|
|
|
### 1. 多案件系统
|
|
|
|
|
|
- 不同难度级别的案件
|
|
|
|
|
|
- 随机生成案件内容
|
|
|
|
|
|
- 案件收藏和重玩功能
|
|
|
|
|
|
|
|
|
|
|
|
### 2. 成就系统
|
|
|
|
|
|
- 完美推理成就
|
|
|
|
|
|
- 快速通关成就
|
|
|
|
|
|
- 特殊结局成就
|
|
|
|
|
|
|
|
|
|
|
|
### 3. 社交功能
|
|
|
|
|
|
- 成绩分享
|
|
|
|
|
|
- 排行榜系统
|
|
|
|
|
|
- 好友挑战
|
|
|
|
|
|
|
|
|
|
|
|
## 风险评估
|
|
|
|
|
|
|
|
|
|
|
|
### 技术风险
|
|
|
|
|
|
1. **API稳定性**: DeepSeek API服务中断
|
|
|
|
|
|
- 应对: 本地缓存备用剧情
|
|
|
|
|
|
|
|
|
|
|
|
2. **生成质量**: AI生成内容不符合预期
|
|
|
|
|
|
- 应对: 人工审核+内容过滤
|
|
|
|
|
|
|
|
|
|
|
|
### 用户体验风险
|
|
|
|
|
|
1. **难度平衡**: 游戏过于简单或困难
|
|
|
|
|
|
- 应对: 动态难度调整机制
|
|
|
|
|
|
|
|
|
|
|
|
2. **剧情连贯性**: 场景之间逻辑断裂
|
|
|
|
|
|
- 应对: 强化上下文关联生成
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
**项目负责人**: 朱鹏翰
|
|
|
|
|
|
**预计完成时间**: 6-8周
|
|
|
|
|
|
**技术难度**: 中等
|
|
|
|
|
|
**创新点**: AI生成剧情 + 动态结局系统
|