基于 boardgame.io 构建的简洁多人在线游戏平台。
- 多人在线游戏: 支持井字棋等经典游戏
- 实时对战: 基于 boardgame.io 的实时通信
- 游戏大厅: 使用 boardgame.io 内置的 Lobby 系统
- 用户管理: 管理员控制台,统一管理用户账户
- AI玩家: 独立的AI客户端,支持LLM集成
- Docker 部署: 一键部署所有服务
本项目不提供用户注册功能,所有用户账户由管理员通过管理控制台创建。
- 系统启动时会自动创建默认管理员账户(用户名:admin,密码:请查看docker-compose.yml中的ADMIN_PASSWORD环境变量)
- 管理员可以通过管理控制台创建新用户
- 用户无法自行注册账户
- 前端: React + boardgame.io/react
- 后端: boardgame.io/server
- AI客户端: Node.js + Socket.IO + LLM集成
- 部署: Docker Compose
- Docker
- Docker Compose
- 克隆项目
git clone <repository-url>
cd boardgame
- 配置环境变量(可选)
# 创建.env文件(用于AI Client)
cp .env.example .env
# 编辑.env文件,配置LLM API密钥等
- 启动所有服务
docker-compose up --build
- 访问应用
- 前端: http://localhost:3000
- 游戏服务器: http://localhost:8000
- API服务器: http://localhost:8001
- 经典3x3网格游戏
- 两名玩家轮流放置X和O
- 支持实时对战
- 支持AI玩家(LLM或传统算法)
项目采用独立AI客户端架构,AI玩家与人类玩家完全对等:
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ 人类玩家 │ │ AI Client │ │ 游戏服务器 │
│ (Frontend) │ │ (AI Client) │ │ (boardgame.io) │
│ │ │ │ │ │
│ - 渲染UI │ │ - 无UI渲染 │ │ - 游戏逻辑 │
│ - 用户交互 │ │ - LLM决策 │ │ - 状态管理 │
│ - Socket.IO │ │ - Socket.IO │ │ - 实时通信 │
└─────────────────┘ └─────────────────┘ └─────────────────┘
- 独立运行: 与前端完全分离,不需要UI渲染
- LLM集成: 支持OpenAI、Claude等主流LLM API
- 实时通信: 通过Socket.IO与游戏服务器实时交互
- 错误处理: 完善的错误处理和fallback机制
- 状态监控: 实时状态监控和日志记录
-
配置LLM API
# 在.env文件中配置 LLM_API_ENDPOINT=https://api.openai.com/v1/chat/completions LLM_API_KEY=your_openai_api_key_here LLM_MODEL=gpt-3.5-turbo
-
启动AI客户端
# 使用Docker Compose(推荐) docker-compose up ai-manager # 或直接运行 cd ai-manager npm install npm start
-
AI行为配置
- 思考时间:1-3秒随机
- 决策策略:LLM + 传统算法fallback
- 移动验证:自动验证移动有效性
boardgame/
├── docker-compose.yml # Docker Compose 配置
├── frontend/ # 前端应用
│ ├── src/
│ │ ├── games/ # 游戏逻辑和界面
│ │ └── App.js # 主应用组件
│ └── package.json
├── server/ # boardgame.io 服务器
│ ├── games/ # 游戏逻辑
│ ├── server.js # 服务器文件
│ └── package.json
├── ai-manager/ # AI管理服务
│ ├── src/
│ │ ├── AIClientManager.js # AI客户端管理器
│ │ ├── LLMService.js # LLM服务接口
│ │ ├── GameStateAnalyzer.js # 游戏状态分析
│ │ ├── SimpleAIClient.js # 简单AI客户端
│ │ └── server.js # 主服务器
│ ├── config/
│ │ └── database.js # 数据库配置
│ ├── models/ # 数据模型
│ ├── public/ # 静态文件
│ └── Dockerfile # AI管理器Dockerfile
├── api-server/ # API服务器
│ ├── routes/ # API路由
│ ├── models/ # 数据模型
│ └── package.json
└── README.md
- 在
server/games/
创建游戏逻辑 - 在
frontend/src/games/
创建游戏界面 - 在
server/server.js
中注册游戏 - 在
frontend/src/App.js
中添加游戏组件 - 在
ai-manager/src/GameStateAnalyzer.js
中添加游戏分析逻辑
-
添加新的AI策略
# 在ai-manager/src/下创建新的AI策略类 # 实现getMove(gameAnalysis)方法 # 在AIClientManager.js中集成新策略
-
支持新的LLM服务
# 继承LLMService类 # 实现自定义的API调用逻辑 # 配置新的LLM服务
# 启动前端开发服务器
cd frontend
npm install
npm start
# 启动后端开发服务器
cd server
npm install
npm run dev
# 启动AI管理器
cd ai-manager
npm install
npm run dev
-
端口冲突
- 检查端口是否被占用
- 修改docker-compose.yml中的端口映射
-
AI客户端连接失败
- 检查
GAME_SERVER_URL
配置 - 确认游戏服务器正在运行
- 查看AI客户端日志
- 检查
-
LLM API错误
- 验证API密钥和端点
- 检查API配额和限制
- 查看API响应日志
# 启用AI管理器调试模式
NODE_ENV=development docker-compose up ai-manager
# 查看详细日志
docker-compose logs -f ai-manager
MIT License