logo
0
0
WeChat Login

🎮 Battle of AI Relatives - AI 亲戚红包挑战赛

基于 SecondMe API 的多人对话博弈游戏,1名BOSS vs 1-2名玩家,通过三轮对话抢夺红包。

🎯 项目概览

游戏玩法: 1名BOSS vs 1-2名玩家,3轮对话博弈 胜负判定: 好感度系统(0-100分),达到80分获胜 核心特色:

  • 9张角色性格卡片(3角色×3性格)
  • 3个难度等级(简单/中等/困难)
  • AI驱动的对话生成和评分
  • 实时WebSocket通信
  • 积分排行榜系统

技术栈:

  • 前端: Next.js 14 + TypeScript + Tailwind CSS
  • 后端: Next.js API Routes + Socket.IO
  • 数据库: SQLite(轻量级持久化)
  • AI引擎: SecondMe Act API

🚀 快速开始

方法1: Docker 快速部署(推荐)

# 1. 克隆项目
git clone <repository-url>
cd secondme-app

# 2. 配置环境变量
cp .env.local.example .env.local
# 编辑 .env.local,配置 SECONDME_API_BASE_URL

# 3. 使用快速启动脚本
./quick-start.sh up          # 启动服务
./quick-start.sh full-test   # 运行完整测试

# 4. 访问应用
open http://localhost:3000

方法2: Docker Compose 手动部署

# 启动服务
docker compose up -d

# 查看日志
docker compose logs -f

# 停止服务
docker compose down

方法3: 本地开发(需要 Node.js)

# 1. 安装依赖
npm install

# 2. 配置环境变量
cp .env.local.example .env.local

# 3. 启动开发服务器
npm run dev

# 4. 访问 http://localhost:3000

📋 完整测试流程

使用快速测试脚本

# 运行完整测试
./quick-start.sh full-test

# 或分步测试
./quick-start.sh up      # 启动服务
./quick-start.sh test    # 测试 API
./quick-start.sh status  # 查看状态

手动测试 API

# 1. 开发登录
curl -X POST http://localhost:3000/api/auth/dev-login \
  -H "Content-Type: application/json" \
  -d '{"username": "test_user"}'

# 2. 创建游戏
curl -X POST http://localhost:3000/api/games/create \
  -H "Content-Type: application/json" \
  -d '{
    "playerId": "user_id",
    "selectedCards": ["uncle_generous", "aunt_warm", "cousin_smart"],
    "difficulty": "medium"
  }'

# 3. 发送消息
curl -X POST http://localhost:3000/api/games/chat \
  -H "Content-Type: application/json" \
  -d '{
    "gameId": "game_id",
    "playerId": "user_id",
    "message": "阿姨过年好!",
    "round": 1
  }'

# 4. 查询排行榜
curl http://localhost:3000/api/leaderboard

# 5. 查询历史记录
curl "http://localhost:3000/api/history?playerId=user_id"

WebSocket 测试

# 安装 wscat
npm install -g wscat

# 连接 WebSocket
wscat -c ws://localhost:3000/api/socket

# 发送消息
{
  "event": "game:join",
  "data": {
    "gameId": "game_id",
    "playerId": "user_id"
  }
}

📖 详细文档

🛠️ 可用命令

快速启动脚本

./quick-start.sh up         # 启动服务
./quick-start.sh down       # 停止服务
./quick-start.sh status     # 查看状态
./quick-start.sh logs       # 查看日志
./quick-start.sh test       # 测试 API
./quick-start.sh full-test  # 完整测试
./quick-start.sh rebuild    # 重建服务
./quick-start.sh cleanup    # 清理数据
./quick-start.sh help       # 显示帮助

Docker Compose

docker compose up -d              # 启动
docker compose down               # 停止
docker compose logs -f            # 日志
docker compose ps                 # 状态
docker compose up -d --build      # 重建
docker compose down -v            # 清理

开发命令

npm run dev     # 开发服务器
npm run build   # 构建应用
npm run start   # 启动生产服务器
npm run lint    # 运行 ESLint

🔧 配置说明

环境变量

变量名说明默认值
SECONDME_API_BASE_URLSecondMe API 地址https://app-api.mindos.com
NEXT_PUBLIC_APP_URL应用访问地址http://localhost:3000

文件结构

secondme-app/
├── src/
│   ├── app/                    # Next.js 页面和 API
│   │   ├── api/               # API 路由
│   │   │   ├── auth/          # 认证接口
│   │   │   ├── games/         # 游戏接口
│   │   │   ├── leaderboard/   # 排行榜
│   │   │   ├── history/       # 历史记录
│   │   │   └── socket/        # WebSocket
│   │   ├── game/              # 游戏页面
│   │   ├── leaderboard/       # 排行榜页面
│   │   └── layout.tsx         # 布局组件
│   ├── components/            # React 组件
│   └── lib/                   # 工具库
│       ├── db.ts              # 数据库配置
│       ├── secondme.ts        # SecondMe API 客户端
│       └── types.ts           # TypeScript 类型
├── data/                      # SQLite 数据库
├── Dockerfile                 # 生产镜像
├── Dockerfile.dev            # 开发镜像
├── docker-compose.yml        # Docker Compose 配置
├── quick-start.sh            # 快速启动脚本
└── *.md                      # 文档

🎮 游戏流程

1. 创建游戏

  • 选择角色卡片(3张)
  • 选择难度等级
  • 生成游戏房间

2. 加入游戏

  • 其他玩家输入房间ID加入
  • 支持1-2名玩家

3. 开始游戏

  • 房主点击开始
  • 系统初始化轮次

4. 对话博弈(3轮)

  • 玩家发送消息讨好BOSS
  • AI生成BOSS回复
  • 实时更新好感度

5. 结算胜负

  • 好感度≥80分获胜
  • 分配积分奖励
  • 保存游戏历史

✅ 项目状态

MVP 版本: 100% 完成 🎉

  • ✅ 所有前端页面(4个)
  • ✅ 所有 API 接口(10个)
  • ✅ 数据库表结构(6个表)
  • ✅ SecondMe API 集成
  • ✅ WebSocket 实时通信
  • ✅ 排行榜系统
  • ✅ 游戏历史记录
  • ✅ Docker 容器化部署

验收标准: ✅ 全部达成

🐛 问题反馈

如遇到问题,请查看:

  1. DOCKER_DEPLOYMENT.md - Docker 部署常见问题
  2. TESTING_GUIDE.md - API 测试和调试
  3. WEBSOCKET_VERIFICATION.md - WebSocket 问题排查

🤝 贡献指南

欢迎提交 Issue 和 Pull Request!

📄 许可证

MIT License

🙏 致谢

  • SecondMe - AI API 提供商
  • Next.js - React 框架
  • Socket.IO - WebSocket 库
  • SQLite - 轻量级数据库

🎉 开始游戏!

./quick-start.sh up

访问 http://localhost:3000 开始你的 AI 亲戚红包挑战赛!

About

an A2A project for fun

Language
TypeScript91.7%
Shell6.8%
Dockerfile1.1%
CSS0.3%
Others0.1%