项目简介
什么是 Wingman?
Wingman 是一个游戏自动化可编程控制引擎,基于 C++ 构建,支持 Lua 和 Python 两种脚本语言。
设计目标
核心目标
- 高性能 - C++ 核心引擎,Lua/Python 脚本执行,毫秒级响应
- 安全可靠 - 纯用户态运行,使用合法 Windows API
- 可编程 - Lua 和 Python 双语言支持,无限扩展可能
- 易调试 - VS Code 插件支持,断点调试、变量查看、性能分析
不做什么
Wingman 遵循单一职责原则,以下功能不在项目范围内:
| 功能 | 说明 |
|---|---|
| ❌ 内核驱动 | 不开发驱动,纯用户态 |
| ❌ 内存读写 | 不读取/修改游戏内存 |
| ❌ DLL 注入 | 不注入代码到游戏进程 |
| ❌ 游戏破解 | 不修改游戏文件/协议 |
| ❌ 分布式网络 | 不做分布式网络 |
| ❌ 账号管理 | 不管理游戏账号 |
| ❌ Runtime WebSocket/HTTP 控制面 | 本地 UI 使用 IPC,远程编排使用 Go server |
项目边界
┌─────────────────────────────────────────────────────────────────┐
│ ✅ Wingman 边界内 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 屏幕操作 截图、像素检测、颜色匹配、图像查找 │
│ 输入模拟 鼠标点击/移动、按键发送、文本输入 │
│ 窗口管理 查找窗口、激活窗口、获取位置 │
│ 进程管理 启动/等待/终止进程 │
│ UI Automation 直接操作 Windows 控件 │
│ 脚本引擎 Lua、Python 双语言支持 │
│ 机器学习 ONNX 模型推理(YOLO 检测等) │
│ 事件系统 跨模块事件订阅与发布 │
│ 工具函数 延迟、日志、配置 │
│ 人性化模拟 随机延迟、自然鼠标轨迹、操作节奏 │
│ 远程编排 Runtime 主动连接 Go server,由 Go server 中控 │
│ 调试器 VS Code 插件,断点、变量查看、性能分析 │
│ │
└─────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────┐
│ ❌ Wingman 边界外 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 内核驱动 不开发驱动,纯用户态 │
│ 内存读写 不读取/修改游戏内存 │
│ DLL 注入 不注入任何代码到游戏进程 │
│ 游戏破解 不修改游戏文件/协议 │
│ 分布式系统 不做分布式网络 │
│ 账号管理 不管理账号 │
│ Runtime 网络控制面 不暴露 WebSocket/HTTP server 供 UI 控制 │
│ │
└─────────────────────────────────────────────────────────────────┘核心设计原则
1. 安全第一
- 纯用户态运行,不进入内核
- 使用合法 Windows API(SendInput 等)
- 不读写游戏内存
- 不注入任何代码到游戏进程
- 模拟真实人类操作模式
2. 性能优先
- C++ 实现性能敏感操作
- Lua 和 Python 高效脚本执行
- 零拷贝数据传递
- 批量操作减少跨语言调用
3. 多语言支持
- Lua - 轻量级、高性能、适合游戏脚本
- Python - 第三方库多,适合复杂逻辑和 AI 集成
- 统一 API 设计,两种语言调用方式一致
4. 可编程
- 脚本控制,用户可扩展
- 不限制使用场景
- 丰富的 API 暴露
- 支持复杂业务逻辑
5. 人性化
- 模拟真实人类操作
- 降低检测风险
- 可配置的"人性化"参数
目标用户
| 用户类型 | 使用方式 |
|---|---|
| 游戏工作室 | 编写 Lua/Python 脚本自动化 |
| 高级玩家 | 编写个人辅助脚本 |
| AI 开发者 | 集成 YOLO 等模型实现智能识别 |
技术栈
核心引擎
├── C++17
├── Windows API
├── Lua (Lua 5.5)
├── Python (CPython)
├── OpenCV (可选,用于图像处理)
├── ONNX Runtime (可选,用于 ML 推理)
├── pybind11 (C++/Python 绑定)
└── sol2 (C++/Lua 绑定)
构建系统
├── CMake
└── Visual Studio 2022
包管理
└── vcpkg
调试器
├── Debug Adapter Protocol
└── VS Code 插件
文档
└── VitePress为什么支持两种脚本语言?
Lua 的优势
- 轻量级 - 极小的内存占用
- 高性能 - 毫秒级启动时间
- 简单 - 语法简洁,易于学习
- 嵌入式 - 天生为嵌入式设计
Python 的优势
- 第三方库 - 覆盖面广,pip 直接安装
- AI 库 - 可接入 PyTorch、TensorFlow 模型
- 开发效率 - IDE 支持完善,VS Code 可断点调试
- 广泛应用 - 大量开发者熟悉
使用建议
- 游戏脚本 - 推荐 Lua,性能优先
- AI 集成 - 推荐 Python,第三方库多
- 快速原型 - 推荐 Python,开发效率高
- 生产环境 - 根据团队技术栈选择
许可证
Apache License 2.0 - 详见 LICENSE