Skip to content

zeruniverse/boardgame_helper

Repository files navigation

桌游助手


该项目所有代码/文档均由AI生成,给AI的要求如下:

这是一个多游戏的桌游助手,前后端均分为两部分:通用逻辑(房间/心跳/T人/房主等)与游戏逻辑。具体游戏逻辑不要与通用逻辑或框架代码耦合,后端具体游戏的逻辑都应实现在具体游戏的线程中

桌游助手支持以下游戏:

  • 德州扑克(支持系统发牌与非系统发牌两种模式)
  • 狼人杀 (系统分发角色并控制游戏进程与夜间行动,狼人玩家有私有聊天频道)
  • 阿瓦隆(系统分发角色并控制游戏进程与夜间行动,邪恶玩家有私有聊天频道)
  • 一夜终极狼人(系统分发角色并控制游戏进程与夜间行动)
  • 血染钟楼 (支持官方三个剧本以及一对一私聊。支持有说书人模式与系统自动当说书人模式,系统说书人有三种偏好可以设置:维持平衡,偏向好人,偏向坏人。维持平衡时,涉及到说书人可以选择的随机事件,系统说书人会尽量有利于当前游戏弱势方。
  • 杀人游戏 (支持杀人游戏及其扩展)

目前该代码前后端都能成功npm run dev, 但是几乎每个游戏(以及框架)都有问题。 如果想参与项目可以在对应的issue中回复。


支持多种桌游的在线助手平台

📋 产品文档

本项目是一个多桌游虚拟房间助手,支持以下桌游:

  • 德州扑克(分为助手发牌/非助手发牌两种模式)
  • 狼人杀
  • 杀人游戏
  • 一夜终极狼人
  • 阿瓦隆
  • 血染钟楼

项目架构

本项目包含前端和后端两部分:

  • 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

Docker 部署

生产环境构建:

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 管理本项目。

About

Forked from https://github.com/zeruniverse/texas_game

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published