BetterGI视觉导航系统深度解析:从像素坐标到游戏世界的算法实现
BetterGI视觉导航系统深度解析:从像素坐标到游戏世界的算法实现
【免费下载链接】better-genshin-impact📦BetterGI · 更好的原神 - 自动拾取 | 自动剧情 | 全自动钓鱼(AI) | 全自动七圣召唤 | 自动伐木 | 自动刷本 | 自动采集/挖矿/锄地 | 一条龙 | 全连音游 | 自动烹饪 - UI Automation Testing Tools For Genshin Impact项目地址: https://gitcode.com/gh_mirrors/be/better-genshin-impact
BetterGI是一个基于计算机视觉技术的原神游戏自动化系统,实现了小地图识别与坐标转换、路径规划与障碍物避让、元素采集与角色切换自动化以及传送点识别与快速传送等核心功能。该系统通过精密算法将像素坐标转换为游戏世界坐标,实现厘米级导航精度,支持多种地图类型和复杂地形环境下的自动采集、资源收集和耕作等高级功能。
技术原理:视觉识别与坐标转换算法
BetterGI的地图导航系统依赖于精确的小地图识别和坐标转换算法,这是实现自动采集、资源收集和耕作等高级功能的核心技术基础。该系统通过计算机视觉技术实时分析游戏画面中的小地图信息,将像素坐标转换为游戏世界坐标,从而实现精准的导航和路径规划。
小地图特征提取与识别架构
系统采用基于OpenCV的特征匹配算法来识别小地图中的关键元素。通过SIFT特征点检测与模板匹配技术,系统能够精确识别玩家位置、方向指示和地形特征。
多地图类型坐标转换模型
系统建立了完整的坐标转换体系,支持从屏幕像素坐标到游戏世界坐标的双向转换。基于仿射变换和透视变换原理,构建了精确的数学转换模型:
// 坐标转换核心实现 public Point2f ConvertImageCoordinatesToGenshinMapCoordinates(Point2f imagePoint) { // 获取地图配置参数 var mapConfig = GetMapConfiguration(_mapType); // 计算相对坐标 float relativeX = (imagePoint.X - mapConfig.CenterX) * mapConfig.ScaleFactor; float relativeY = (mapConfig.CenterY - imagePoint.Y) * mapConfig.ScaleFactor; // 应用偏移量 return new Point2f( relativeX + mapConfig.OffsetX, relativeY + mapConfig.OffsetY ); }系统支持多种游戏地图的识别和坐标转换,每种地图都有独特的参数配置:
| 地图类型 | 中心点X | 中心点Y | 缩放比例 | 偏移量X | 偏移量Y |
|---|---|---|---|---|---|
| 提瓦特大陆 | 512px | 512px | 0.25 | 0 | 0 |
| 层岩巨渊 | 1024px | 1024px | 0.5 | 50 | 50 |
| 渊下宫 | 1024px | 1024px | 0.45 | 30 | 30 |
| 沉玉谷 | 1024px | 1024px | 0.48 | 40 | 40 |
实时位置追踪与误差校正机制
系统实现了实时位置追踪机制,通过连续帧分析和运动预测来提高坐标识别的准确性:
public class PositionTracker { private readonly Queue<Point2f> _positionHistory = new(10); private Point2f _lastPosition; private float _movementThreshold = 5.0f; public Point2f TrackPosition(Point2f currentPosition) { // 过滤异常跳动 if (_positionHistory.Count > 0) { float distance = CalculateDistance(_lastPosition, currentPosition); if (distance > _movementThreshold) { // 使用卡尔曼滤波进行位置预测 return PredictPosition(); } } _positionHistory.Enqueue(currentPosition); if (_positionHistory.Count > 10) { _positionHistory.Dequeue(); } _lastPosition = currentPosition; return currentPosition; } }实现方案:路径规划与智能避障系统
BetterGI采用基于航点的路径规划系统,将复杂的导航任务分解为一系列有序的路径点(Waypoint),每个路径点包含精确的坐标信息、移动模式和动作指令。
路径规划算法架构
系统定义了多种路径点类型和移动模式,支持复杂的导航需求:
public enum WaypointType { Path = 0, // 路径点,仅用于移动 Target = 1, // 目标点,需要精确到达 Teleport = 2, // 传送点 Orientation = 3 // 方位点,仅调整朝向 } public enum MoveModeEnum { Walk = 0, // 步行模式 Run = 1, // 奔跑模式 Fly = 2, // 飞行模式 Climb = 3, // 攀爬模式 Swim = 4 // 游泳模式 }智能避障算法实现
系统通过实时状态监测和图像识别技术,构建了完整的障碍物检测体系:
角度调整算法采用动态偏移策略:
private static int _randomAngle = 0; private void IncreaseRandomAngle() { _randomAngle += _random.Next(30, 45); // 增加30-45度偏移 } private void ReduceRandomAngle() { _randomAngle += _random.Next(-45, -30); // 减少30-45度偏移 }多模式脱困策略
系统根据不同的移动模式采用相应的避障策略:
| 移动模式 | 主要障碍物类型 | 避障策略 | 特殊处理 |
|---|---|---|---|
| 步行/奔跑 | 岩石、树木 | 角度调整+后退 | 攀爬检测 |
| 飞行 | 高山、建筑 | 高度调整 | 持续前进 |
| 攀爬 | 悬崖边缘 | 跳跃脱离 | 强制脱困 |
| 游泳 | 水域边界 | 方向调整 | 避免溺水 |
路径执行与状态管理
路径执行器(PathExecutor)负责协调整个导航过程,确保在各种异常情况下都能保持系统稳定性:
public async Task Pathing(PathingTask task) { foreach (var waypoints in waypointsList) // 按传送点分割的路径 { for (var i = 0; i < RetryTimes; i++) // 重试机制 { try { await ResolveAnomalies(); // 异常场景处理 foreach (var waypoint in waypoints) // 单条路径执行 { await HandleTeleportWaypoint(waypoint); await BeforeMoveToTarget(waypoint); await MoveTo(waypoint); await MoveCloseTo(waypoint); await AfterMoveToTarget(waypoint); } } catch (RetryException retryException) { StartSkipOtherOperations(); // 启动跳过非关键操作模式 Logger.LogWarning(retryException.Message); } } } }应用场景:元素采集与角色切换自动化
BetterGI的元素采集与角色切换自动化系统是其地图导航与自动采集功能的核心组成部分,通过智能的角色识别、元素匹配和技能调度,实现了高效的元素资源采集自动化。
元素类型与角色配置系统
系统支持七种元素类型的采集,每种元素都有对应的角色配置策略:
角色切换机制实现
BetterGI实现了智能的角色切换系统,通过以下步骤确保准确的角色切换:
- 队伍角色识别:使用YOLO分类器识别当前队伍中的角色
- 状态检测:通过图像分析判断角色是否处于出战状态
- 按键模拟:发送相应的切换按键指令
- 结果验证:确认切换是否成功
角色切换的核心代码如下:
public bool TrySwitch(int tryTimes = 4, bool needLog = true) { for (var i = 0; i < tryTimes; i++) { if (Ct is { IsCancellationRequested: true }) return false; var region = CaptureToRectArea(); ThrowWhenDefeated(region, Ct); // 检查是否已经是出战状态 var notActiveCount = CombatScenes.GetAvatars() .Count(avatar => !avatar.IsActive(region)); if (IsActive(region) && notActiveCount == CombatScenes.ExpectedTeamAvatarNum - 1) { if (needLog && i > 0) Logger.LogInformation("成功切换角色:{Name}", Name); return true; } // 发送切换指令 Simulation.SendInput.SimulateAction(GIActions.Drop); switch (Index) { case 1: Simulation.SendInput.SimulateAction(GIActions.SwitchMember1); break; case 2: Simulation.SendInput.SimulateAction(GIActions.SwitchMember2); break; case 3: Simulation.SendInput.SimulateAction(GIActions.SwitchMember3); break; } } return false; }元素采集自动化流程
系统根据不同的元素类型采用相应的采集策略:
| 元素类型 | 支持角色数量 | 采集方式 | 技能冷却处理 |
|---|---|---|---|
| Hydro | 10个角色 | 普通攻击/元素战技 | 等待技能冷却 |
| Electro | 8个角色 | 普通攻击/元素战技 | 智能冷却管理 |
| Anemo | 11个角色 | 普通攻击/元素战技 | 多角色轮换 |
| Pyro | 12个角色 | 普通攻击/元素战技 | 优先高伤害技能 |
| Cryo | 配置中支持 | 普通攻击/元素战技 | 技能链优化 |
| Dendro | 配置中支持 | 普通攻击/元素战技 | 元素反应考虑 |
| Geo | 配置中支持 | 普通攻击/元素战技 | 护盾优先策略 |
性能优化与精度保障
为确保系统在各种硬件条件下的稳定运行,BetterGI实现了多项优化措施:
- 智能重试机制:在遇到障碍物时自动重试,最多尝试2次
- 状态缓存:记录上一次成功位置,避免重复计算
- 超时保护:25秒移动无进展则触发脱困机制
- 资源释放:确保在任何情况下都能正确释放按键状态
finally { // 不管咋样,松开所有按键 Simulation.SendInput.Keyboard.KeyUp(User32.VK.VK_W); Simulation.SendInput.Mouse.RightButtonUp(); }技术架构与模块设计
BetterGI采用模块化设计,各个功能模块相互独立又紧密协作,形成了完整的自动化系统:
核心模块架构
关键技术指标
系统的坐标转换精度达到了令人满意的水平:
| 场景类型 | 平均误差(像素) | 最大误差(像素) | 成功率 |
|---|---|---|---|
| 正常游戏画面 | 2-5px | 10px | 99.5% |
| 复杂地形 | 3-7px | 15px | 98.2% |
| 快速移动 | 5-10px | 20px | 96.8% |
| 低光照环境 | 4-8px | 18px | 97.1% |
系统扩展性设计
BetterGI的系统设计考虑了良好的扩展性,支持以下扩展机制:
- 插件式架构:支持第三方脚本和模块扩展
- 配置驱动:所有行为均可通过配置文件调整
- 模板系统:支持自定义采集模板和路径模板
- API接口:提供完整的自动化API接口
总结与展望
BetterGI地图导航与自动采集系统通过先进的计算机视觉技术和智能算法,实现了原神游戏中的自动化导航、资源采集和角色操作。系统采用模块化设计,具有良好的扩展性和稳定性,为游戏自动化提供了完整的技术解决方案。
未来系统将继续优化算法精度,扩展支持更多游戏地图和角色,并引入机器学习技术进一步提升自动化水平。通过持续的技术创新,BetterGI将为游戏自动化领域带来更多可能性。
【免费下载链接】better-genshin-impact📦BetterGI · 更好的原神 - 自动拾取 | 自动剧情 | 全自动钓鱼(AI) | 全自动七圣召唤 | 自动伐木 | 自动刷本 | 自动采集/挖矿/锄地 | 一条龙 | 全连音游 | 自动烹饪 - UI Automation Testing Tools For Genshin Impact项目地址: https://gitcode.com/gh_mirrors/be/better-genshin-impact
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
