# vjoyxy **Repository Path**: shajiqw/vjoyxy ## Basic Information - **Project Name**: vjoyxy - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-07 - **Last Updated**: 2025-08-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # VJoyXY - 游戏自动化系统 基于Docker + Xvfb + Java Robot API的Windows游戏自动化解决方案。 ## 功能特性 - 🐳 **Docker容器化**: 完全隔离的运行环境 - 🖥️ **虚拟显示器**: 使用Xvfb提供无头显示支持 - 🍷 **Wine集成**: 运行Windows游戏和应用程序 - 🤖 **Java Robot API**: 精确的鼠标键盘控制 - 📸 **图像识别**: 基于模板匹配的自动化决策 - 🔍 **VNC支持**: 远程查看虚拟桌面 - ⚙️ **灵活配置**: JSON配置文件管理 ## 系统架构 ``` ┌─────────────────┐ ┌──────────────────┐ ┌────────────────┐ │ Host System │ │ Docker Container │ │ Virtual Games │ │ │ │ │ │ │ │ VNC Client ────────► │ Xvfb (Display:99)│ │ Windows Game │ │ Game Files │ │ Fluxbox WM │ │ via Wine │ │ Screenshots ◄───────► │ Java Robot API │ ◄──┤ │ │ Logs │ │ Image Matching │ │ │ └─────────────────┘ └──────────────────┘ └────────────────┘ ``` ## 快速开始 ### 1. 环境要求 - Docker 20.0+ - Docker Compose 1.27+ - 至少 4GB 可用内存 - macOS/Linux 操作系统 ### 2. 安装启动 ```bash # 克隆项目 git clone https://github.com/your-repo/vjoyxy.git cd vjoyxy # 设置权限 chmod +x start.sh # 启动系统 ./start.sh ``` ### 3. 放置游戏文件 将Windows游戏安装包或可执行文件放入 `games/` 目录: ```bash ./games/ ├── game1/ │ └── game1.exe ├── game2.zip └── installer.msi ``` ### 4. 配置自动化 编辑 `config/game-config.json` 文件: ```json { "gameName": "我的游戏", "gameExecutable": "games/mygame/game.exe", "windowWidth": 1920, "windowHeight": 1080, "automationInterval": 1000, "imageMatchThreshold": 0.8 } ``` ### 5. 添加图像模板 在 `templates/` 目录下放置截图模板: ```bash ./templates/ ├── start_button.png # 开始按钮 ├── menu_icon.png # 菜单图标 └── victory_screen.png # 胜利界面 ``` ## 使用指南 ### VNC连接 使用VNC客户端连接到 `localhost:5900` 查看虚拟桌面: ```bash # macOS open vnc://localhost:5900 # Linux vncviewer localhost:5900 # Windows # 使用TightVNC、RealVNC等客户端 ``` ### 容器管理 ```bash # 查看运行状态 docker-compose ps # 查看日志 docker-compose logs -f # 重启服务 docker-compose restart # 停止服务 docker-compose down # 进入容器 docker-compose exec game-automation bash ``` ### 手动运行游戏 进入容器后手动启动游戏: ```bash # 进入容器 docker exec -it vjoyxy-automation bash # 启动Wine export DISPLAY=:99 export WINEPREFIX=/app/.wine # 运行Windows程序 wine /app/games/your-game.exe ``` ## 开发指南 ### 项目结构 ``` vjoyxy/ ├── src/main/java/ # Java源代码 │ └── com/joyxy/ │ ├── GameAutomation.java # 主程序 │ ├── core/ # 核心功能 │ │ ├── RobotController.java # 机器人控制 │ │ ├── ScreenCapture.java # 截图功能 │ │ └── ImageMatcher.java # 图像匹配 │ └── config/ │ └── GameConfig.java # 配置管理 ├── docker/ # Docker相关文件 │ └── start.sh # 容器启动脚本 ├── config/ # 配置文件 ├── games/ # 游戏文件目录 ├── screenshots/ # 截图保存目录 ├── logs/ # 日志文件目录 ├── templates/ # 图像模板目录 ├── Dockerfile # Docker镜像配置 ├── docker-compose.yml # 容器编排配置 └── pom.xml # Maven项目配置 ``` ### 自定义自动化逻辑 编辑 `GameAutomation.java` 中的 `performAutomationTasks` 方法: ```java private void performAutomationTasks(BufferedImage screenshot) { // 查找开始按钮并点击 var startButton = imageMatcher.findImage(screenshot, "templates/start_button.png"); if (startButton != null) { robotController.click(startButton.x, startButton.y); robotController.delay(2000); } // 检查游戏状态 var gameMenu = imageMatcher.findImage(screenshot, "templates/game_menu.png"); if (gameMenu != null) { // 执行菜单操作 handleGameMenu(gameMenu); } } ``` ### 添加新的图像识别模板 1. 运行游戏并连接VNC 2. 截取需要识别的界面元素 3. 保存到 `templates/` 目录 4. 在代码中引用模板文件路径 ## 故障排除 ### 常见问题 **Q: 容器启动失败** ```bash # 检查Docker状态 docker --version docker-compose --version # 查看详细错误 docker-compose logs ``` **Q: VNC连接失败** ```bash # 检查端口是否开放 docker-compose ps netstat -tulpn | grep 5900 ``` **Q: 游戏无法启动** ```bash # 进入容器检查Wine环境 docker exec -it vjoyxy-automation bash winecfg ``` **Q: 图像识别不准确** - 调整 `imageMatchThreshold` 参数 - 重新截取更清晰的模板图像 - 检查屏幕分辨率设置 ### 性能优化 1. **内存调优**:增加Docker容器内存限制 2. **CPU调优**:调整自动化循环间隔 3. **网络优化**:使用本地文件避免网络传输 ## 贡献指南 1. Fork 项目 2. 创建功能分支 3. 提交改动 4. 发起 Pull Request ## 许可证 MIT License - 详见 [LICENSE](LICENSE) 文件 ## 支持 - 📧 Email: support@vjoyxy.com - 🐛 Issues: [GitHub Issues](https://github.com/your-repo/vjoyxy/issues) - 📚 Wiki: [项目文档](https://github.com/your-repo/vjoyxy/wiki) ## 🛠️ VNC连接问题解决方案 我已经在当前运行的容器中修复了VNC连接问题: ### ✅ 已完成的修复 1. **停止了有问题的x11vnc进程** 2. **重新启动了正确配置的x11vnc服务** 3. **移除了导致问题的`-create`参数** ### 🔌 现在可以连接VNC **连接信息:** - **地址**:`localhost:5902` - **密码**:**空**(直接按Enter或点击登录) ### 🎯 连接步骤: 1. 在VNC客户端输入:`localhost:5902` 2. 密码框**留空**(不输入任何内容) 3. 直接点击"登录"或按Enter键 ### 📱 推荐的VNC客户端: - **macOS**: Screen Sharing (内置), VNC Viewer - **Windows**: VNC Viewer, TightVNC - **跨平台**: RealVNC Viewer ### 🔍 如果仍然有问题: 可以验证VNC服务状态: ```bash docker exec vjoyxy-automation-test-instance netstat -tlnp | grep 5902 ``` 或者重新启动一个全新的实例: ```bash # 停止当前实例 docker compose -f docker-compose-test-instance.yml down # 启动新实例(会使用修复后的脚本) ./run-multiple.sh -p 5903 -n vnc-test ``` 现在应该可以**无密码**连接到VNC了!您可以尝试连接 `localhost:5902`,密码留空直接登录。