本文最后更新于88 天前,其中的信息可能已经过时,如有错误请发送邮件到2778680280@qq.com
一个基于 Node.js 和 Socket.io 开发的多人在线绘画游戏,支持实时绘画、猜测、聊天和得分排名。
🎯 功能特性
核心游戏功能
- 10轮游戏模式:每轮随机选择画家,轮流绘画
- 实时绘画:HTML5 Canvas 实现流畅绘画体验
- 智能猜测:实时判断猜测是否正确
- 倒计时系统:每轮60秒倒计时
- 词汇提示:游戏过程中提供词汇提示
- 防止重复词汇:10轮游戏中词汇不重复
- 结束游戏功能:支持中途结束游戏并结算得分
界面与用户体验
- 响应式设计:适配不同设备屏幕
- 渐变风格:现代化的渐变色彩设计
- 实时聊天:游戏前后支持玩家聊天
- 游戏结束结算:显示详细得分排名和获胜者
- 一键复制游戏ID:方便分享游戏房间
- 在线状态检测:实时显示玩家在线状态
技术特性
- Socket.io实时通信:低延迟的实时数据传输
- 多房间支持:同时支持多个游戏房间
- 完善的错误处理:友好的错误提示
- 详细的日志系统:便于问题排查
- 保活机制:支持后台运行和自动重启
🛠️ 技术栈
| 技术 | 版本 | 用途 |
|---|---|---|
| Node.js | 14.0+ | 运行环境 |
| Express | ^4.18.2 | Web服务器 |
| Socket.io | ^4.7.2 | 实时通信 |
| HTML5 Canvas | – | 绘画功能 |
| Tailwind CSS | – | 响应式样式 |
📦 安装与部署
方法一:直接部署
1. 克隆项目
git clone https://github.com/LIUQiu111/pictionary-game.git
cd pictionary-game
2. 安装依赖
npm install
3. 启动服务器
# 开发模式
npm run dev
# 生产模式
npm start
方法二:使用启动脚本(Linux)
1. 克隆项目
git clone https://github.com/LIUQiu111/pictionary-game.git
cd pictionary-game
2. 运行启动脚本
# 添加执行权限
chmod +x start.sh
# 运行脚本
./start.sh
方法三:宝塔面板部署
1. 上传项目
- 在宝塔面板中创建网站目录
- 上传项目文件到目录
2. 安装依赖
# 使用宝塔的Node.js
/www/server/nodejs/v14/bin/npm install
3. 启动服务器
# 进入项目目录
cd /www/wwwroot/你画我猜/你画我猜
# 运行启动脚本
./start.sh
🚀 使用方法
1. 创建游戏
- 打开
http://your-server-ip:3000 - 输入用户名
- 点击”创建游戏”
- 复制生成的游戏ID
2. 加入游戏
- 打开
http://your-server-ip:3000 - 输入用户名和游戏ID
- 点击”加入游戏”
3. 开始游戏
- 等待其他玩家加入
- 点击”开始游戏”按钮
- 轮流担任画家,其他玩家猜测
4. 游戏操作
- 画家:选择词汇并在画板上绘画
- 猜词者:在猜测框中输入猜测的词汇
- 聊天:游戏前后可以在聊天框交流
- 结束游戏:点击”结束游戏”按钮可中途结束
🔒 保活脚本使用(推荐)
为了确保游戏服务器稳定运行,我提供了一个简易的保活脚本,可以自动检测并重启服务器进程。
步骤1:启动保活脚本
# 进入项目目录
cd /www/wwwroot/你画我猜/你画我猜
# 添加执行权限
chmod +x keep_alive.sh
chmod +x start.sh
# 后台启动保活脚本
nohup ./keep_alive.sh > /dev/null 2>&1 &
步骤2:验证保活效果
# 查看运行状态
ps -ef | grep keep_alive.sh
ps -ef | grep server.js
# 测试自动重启
kill -9 $(ps -ef | grep "node server.js" | grep -v grep | awk '{print $2}')
sleep 10
ps -ef | grep server.js # 应该能看到新的进程
步骤3:查看保活日志
# 查看保活日志
cat keep_alive.log
# 实时查看日志
tail -f keep_alive.log
步骤4:设置开机自启
# 编辑自启文件
nano /etc/rc.local
# 添加以下内容(在exit 0之前)
cd /www/wwwroot/你画我猜/你画我猜 && nohup ./keep_alive.sh > /dev/null 2>&1 &
# 添加执行权限
chmod +x /etc/rc.local









