该项目所有代码/文档均由AI生成,给AI的要求如下:
这是一个多游戏的桌游助手,前后端均分为两部分:通用逻辑(房间/心跳/T人/房主等)与游戏逻辑。具体游戏逻辑不要与通用逻辑或框架代码耦合,后端具体游戏的逻辑都应实现在具体游戏的线程中
桌游助手支持以下游戏:
- 德州扑克(支持系统发牌与非系统发牌两种模式)
- 狼人杀 (系统分发角色并控制游戏进程与夜间行动,狼人玩家有私有聊天频道)
- 阿瓦隆(系统分发角色并控制游戏进程与夜间行动,邪恶玩家有私有聊天频道)
- 一夜终极狼人(系统分发角色并控制游戏进程与夜间行动)
- 血染钟楼 (支持官方三个剧本以及一对一私聊。支持有说书人模式与系统自动当说书人模式,系统说书人有三种偏好可以设置:维持平衡,偏向好人,偏向坏人。维持平衡时,涉及到说书人可以选择的随机事件,系统说书人会尽量有利于当前游戏弱势方。
- 杀人游戏 (支持杀人游戏及其扩展)
目前该代码前后端都能成功npm run dev, 但是几乎每个游戏(以及框架)都有问题。 如果想参与项目可以在对应的issue中回复。
支持多种桌游的在线助手平台
- 产品需求文档 (PRD) - 完整的产品需求规格说明,包含功能详情和开发计划
本项目是一个多桌游虚拟房间助手,支持以下桌游:
- 德州扑克(分为助手发牌/非助手发牌两种模式)
- 狼人杀
- 杀人游戏
- 一夜终极狼人
- 阿瓦隆
- 血染钟楼
本项目包含前端和后端两部分:
frontend:Vue3 + TypeScript 前端,使用 Vite、Pinia、Element Plus。backend:Node.js + Express + socket.io 后端,采用多线程架构,数据保存在内存。
系统分为两个核心部分:
- A部分(通用):房间/线程控制,所有桌游共享的逻辑
- B部分(游戏特异):每个桌游独有的游戏逻辑
- 动态创建房间,无预设房间
- 房间名为随机6位字符(数字+大写字母)
- 支持房间上锁/解锁
- 在线/离线状态检测
- 自动房间清理机制
- 每种游戏可配置最大人数
- 游戏特异性配置支持
- 统一的前端大厅界面
- 独立的游戏房间页面
cd frontend
npm install
npm run dev生产构建:
VITE_SOCKET_URL=your_server_url npm run build打开浏览器访问 http://localhost:5173。
cd backend
# 启动开发服务器
npm run dev快速开发模式:
# 监听文件变化并自动编译
npm run build:watch &
# 启动开发服务器
npm run dev生产环境构建:
cd backend
# 多阶段构建,自动处理编译和依赖优化
docker build -t boardgame-assistant-backend .
# 运行容器
docker run -d --name boardgame-backend -p 3000:3000 boardgame-assistant-backend构建说明:
- 构建阶段:安装所有依赖 → 编译TypeScript → 生成
dist目录 - 运行阶段:仅安装生产依赖 → 复制编译后的代码 → 启动服务
- Worker线程路径:自动适配开发/生产环境的不同目录结构
手动生产部署:
# 1. 编译代码
npm run build
# 2. 安装生产依赖
npm ci --production
# 3. 启动服务
node dist/server.js后端服务监听 3000 端口。
- 主线程:处理Socket.IO连接、任务分发、线程生命周期管理、房间创建与管理
- 房间线程:每个房间独立的Worker线程,处理游戏逻辑、状态管理
- 线程管理:房间结束或空闲时自动销毁线程,节省资源
backend/
├── src/
│ ├── controllers/ # 主线程控制器(通用房间控制)
│ ├── workers/ # Worker线程实现(游戏特异逻辑)
│ ├── services/ # 线程管理服务
│ ├── models/ # 数据模型
│ └── utils/ # 工具函数
├── dist/ # 编译输出目录
└── ...
frontend/
├── src/
│ ├── components/ # 组件
│ │ ├── common/ # 通用组件(大厅等)
│ │ └── games/ # 游戏特异组件
│ ├── router/ # 路由配置
│ ├── store/ # 状态管理
│ └── ...
└── ...
- 配置文件支持多游戏类型设置
- 每种游戏可单独配置最大人数
- 游戏特异配置(如德州扑克的盲注设置)
- 服务器最大房间数限制
- 开发环境:Worker路径为
src/services/ → ../../dist/workers/ - 生产环境:Worker路径为
dist/services/ → ../workers/ - 自动检测:通过
__filename判断环境并使用正确路径
已配置 .gitignore,请使用 Git 管理本项目。