一个基于AI的角色养成互动游戏,玩家可以与AI扮演的角色进行对话和互动,建立情感关系,体验不同的场景故事。
- 🤖 智能对话: 使用DeepSeek AI实现自然流畅的角色对话
- 👥 多角色选择: 提供3个精心设计的预设角色,支持创建自定义角色
- ❤️ 亲密度系统: 通过对话和行动影响与角色的亲密度
- 🎭 动态场景: AI自动生成和切换不同的互动场景
- 🧠 记忆系统: 角色拥有智能记忆,会记住重要互动
- 🎮 丰富互动: 支持对话和多种行动(赞美、拥抱、礼物等)
- 🎨 精美界面: 现代简洁的Web可视化界面
- Python 3.8+
- Flask (Web框架)
- DeepSeek API (AI服务)
- JSON文件存储
- HTML5 + CSS3 + JavaScript
- Tailwind CSS风格
- FontAwesome图标
git clone <repository-url>
cd friends方式一:使用配置文件
# 复制配置模板
cp config/config.example.yaml config/config.yaml
# 编辑配置文件,填入您的DeepSeek API密钥
# 将 YOUR_DEEPSEEK_API_KEY_HERE 替换为您的实际密钥方式二:使用环境变量
# 复制环境变量模板
cp .env.example .env
# 编辑.env文件,设置DEEPSEEK_API_KEY获取DeepSeek API密钥: https://platform.deepseek.com/
Windows:
start.batLinux/Mac:
chmod +x start.sh
./start.sh启动脚本会自动:
- 创建Python虚拟环境
- 安装所有依赖包
- 启动Flask服务器
打开浏览器访问: http://localhost:5000
如果您想手动安装:
# 创建虚拟环境
python -m venv venv
# 激活虚拟环境
# Windows:
venv\Scripts\activate
# Linux/Mac:
source venv/bin/activate
# 安装依赖
pip install -r requirements.txt
# 启动服务
python backend/app.pyfriends/
├── backend/ # 后端代码
│ ├── app.py # Flask主应用
│ ├── config.py # 配置管理
│ ├── models/ # 数据模型
│ │ ├── character.py # 角色模型
│ │ ├── message.py # 消息模型
│ │ └── game_session.py # 游戏会话模型
│ ├── services/ # 业务逻辑
│ │ ├── ai_service.py # AI服务
│ │ ├── character_service.py # 角色管理
│ │ └── game_service.py # 游戏逻辑
│ ├── utils/ # 工具函数
│ │ ├── helpers.py # 辅助函数
│ │ └── prompt_templates.py # AI提示词模板
│ └── data/ # 数据存储
│ ├── characters.json # 角色数据
│ └── sessions/ # 游戏会话
├── frontend/ # 前端代码
│ ├── index.html # 角色选择页面
│ ├── game.html # 游戏页面
│ ├── css/
│ │ └── styles.css # 样式文件
│ └── js/
│ ├── app.js # 主应用逻辑
│ └── game.js # 游戏逻辑
├── config/ # 配置文件
│ └── config.example.yaml # 配置模板
├── requirements.txt # Python依赖
├── start.bat # Windows启动脚本
├── start.sh # Linux/Mac启动脚本
├── 需求说明书.md # 需求文档
├── 设计文档.md # 设计文档
└── README.md # 本文件
游戏提供3个预设角色:
- 林小雨: 温柔内向的女大学生,文学系学生
- 陈阳: 阳光开朗的健身教练,热爱运动
- 苏菲: 高冷理性的产品经理,外表高冷
您也可以创建自己的自定义角色。
- 在输入框中输入消息与角色对话
- 角色会根据其性格、当前场景、亲密度和历史记忆进行回复
- 对话会影响亲密度
提供多种行动选项:
- 👍 赞美 (增加3-8亲密度)
- 💬 夸奖 (增加5-10亲密度)
- 🎁 礼物 (增加8-15亲密度,需要20+亲密度)
- 👋 摸头 (增加2-6亲密度,需要30+亲密度)
- 🤗 拥抱 (增加5-12亲密度,需要40+亲密度)
- 🤝 牵手 (增加3-8亲密度,需要60+亲密度)
- ✋ 击掌 (增加2-5亲密度)
- 💋 亲吻 (增加10-20亲密度,需要80+亲密度)
- 0-19: 陌生人
- 20-39: 泛泛之交
- 40-59: 朋友
- 60-79: 好友
- 80-100: 挚友
- 每10-15轮对话后会自动切换场景
- AI根据亲密度和角色性格生成合适的场景
- 场景切换会有动画提示
- 角色会记住重要的对话和事件
- 记忆会影响后续对话
- 定期总结和优化记忆,保留最重要的内容
# 服务器配置
server:
host: "0.0.0.0"
port: 5000
debug: true
# DeepSeek API配置
deepseek:
api_key: "YOUR_API_KEY" # 必填
model: "deepseek-chat"
temperature: 0.8
max_tokens: 500
# 游戏配置
game:
intimacy:
initial: 20 # 初始亲密度
max: 100 # 最大亲密度
scene:
min_interactions: 10 # 最少交互次数后切换场景
max_interactions: 15
memory:
max_memories: 20 # 最大记忆条数GET /api/characters- 获取所有角色GET /api/characters/{id}- 获取单个角色POST /api/characters- 创建自定义角色
POST /api/game/start- 开始游戏POST /api/game/message- 发送消息POST /api/game/action- 执行行动GET /api/game/state- 获取游戏状态GET /api/game/history- 获取对话历史
GET /api/health- 健康检查
A:
- 检查网络连接
- API请求可能需要几秒钟,请耐心等待
- 可以在config.yaml中调整timeout参数
A: 编辑backend/data/characters.json文件,按照现有格式添加新角色。
A:
- 角色数据:
backend/data/characters.json - 游戏会话:
backend/data/sessions/目录下的JSON文件
A: 编辑backend/services/game_service.py中的相关方法,如_get_action_config。
# 安装测试依赖
pip install pytest
# 运行测试
pytest tests/项目遵循PEP 8代码规范。
欢迎提交Issue和Pull Request!
MIT License
- DeepSeek AI - 提供强大的AI对话能力
- Flask - 简洁高效的Web框架
- DiceBear - 可爱的头像生成服务
如有问题或建议,欢迎提交Issue。
享受游戏!🎮