当前位置: 首页 > news >正文

BetterGI深度解析:基于计算机视觉的原神自动化系统架构设计与实现

BetterGI深度解析:基于计算机视觉的原神自动化系统架构设计与实现

【免费下载链接】better-genshin-impact📦BetterGI · 更好的原神 - 自动拾取 | 自动剧情 | 全自动钓鱼(AI) | 全自动七圣召唤 | 自动伐木 | 自动刷本 | 自动采集/挖矿/锄地 | 一条龙 | 全连音游 | 自动烹饪 - UI Automation Testing Tools For Genshin Impact项目地址: https://gitcode.com/gh_mirrors/be/better-genshin-impact

BetterGI(Better Genshin Impact)是一个基于计算机视觉技术的开源自动化系统,专为《原神》游戏设计,实现了小地图识别与坐标转换、路径规划与障碍物避让、元素采集与角色切换自动化以及传送点识别与快速传送等核心功能。该系统通过精密算法将像素坐标转换为游戏世界坐标,实现厘米级导航精度,支持多种地图类型和复杂地形环境下的自动采集、资源收集和耕作等高级功能,为技术开发者和进阶玩家提供了强大的自动化解决方案。

技术概览与架构设计

BetterGI采用模块化架构设计,将复杂的自动化任务分解为多个独立的子系统,每个子系统专注于特定的功能领域。系统核心基于.NET平台开发,利用WPF框架构建用户界面,采用MVVM模式实现数据绑定和业务逻辑分离。

核心架构层次

系统架构分为四个主要层次:图像识别层、任务调度层、行为执行层和用户界面层。图像识别层负责实时分析游戏画面,提取关键信息;任务调度层管理自动化任务的执行流程;行为执行层模拟用户输入操作;用户界面层提供直观的配置和监控界面。

// 系统核心架构示例 public class TaskTriggerDispatcher { private readonly List<ITaskTrigger> _triggers = new(); private readonly GameCaptureFactory _captureFactory; private readonly ILogger<TaskTriggerDispatcher> _logger; // 任务调度器核心逻辑 public async Task StartAsync(CancellationToken cancellationToken) { while (!cancellationToken.IsCancellationRequested) { using var capture = _captureFactory.Create(); var image = capture.Capture(); foreach (var trigger in _triggers) { if (trigger.IsEnabled) { await trigger.OnCapture(image); } } await Task.Delay(_config.TriggerInterval, cancellationToken); } } }

多引擎识别系统

BetterGI支持多种计算机视觉引擎,包括PaddleOCR、YOLO模型和OpenCV特征匹配,形成多层次的识别体系:

识别引擎应用场景精度性能特点
PaddleOCR文字识别、界面元素95%+支持多语言,准确率高
YOLO V8物体检测、角色识别90%+实时检测,速度快
OpenCV特征匹配地图定位、图标识别98%+稳定性好,抗干扰强

配置管理系统

系统采用统一的配置管理机制,通过AllConfig类集中管理所有设置:

public partial class AllConfig : ObservableObject { [ObservableProperty] private string _captureMode = CaptureModes.BitBlt.ToString(); [ObservableProperty] private int _triggerInterval = 50; public MaskWindowConfig MaskWindowConfig { get; set; } = new(); public CommonConfig CommonConfig { get; set; } = new(); public HotKeyConfig HotKeyConfig { get; set; } = new(); // ... 更多配置项 }

核心算法实现原理

小地图识别与坐标转换算法

BetterGI的地图导航系统依赖于精确的小地图识别和坐标转换算法。系统通过计算机视觉技术实时分析游戏画面中的小地图信息,将像素坐标转换为游戏世界坐标,从而实现精准的导航和路径规划。

特征提取与匹配算法

系统采用多级特征匹配策略,结合SIFT、ORB和深度学习模型:

public Point2f GetMiniMapPosition(Mat miniMapMat) { // 使用多尺度特征检测 using var detector = SIFT.Create(); var keyPoints = detector.Detect(miniMapMat); // 与预定义模板进行特征匹配 var matches = FeatureMatcher.Match(keyPoints, _templateKeyPoints); // 计算仿射变换矩阵 var homography = ComputeHomography(matches); // 应用坐标转换 return TransformPosition(homography, _templatePlayerPosition); }
坐标转换数学模型

BetterGI建立了完整的坐标转换体系,实现了从屏幕像素坐标到游戏世界坐标的双向转换。该系统基于仿射变换和透视变换原理,构建了精确的数学转换模型:

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 ); }

路径规划与障碍物避让策略

BetterGI采用基于航点的路径规划系统,将复杂的导航任务分解为一系列有序的路径点(Waypoint),每个路径点包含精确的坐标信息、移动模式和动作指令。

智能避障算法

系统通过实时状态监测和图像识别技术,构建了完整的障碍物检测体系:

public class PathExecutor { private const int RetryTimes = 2; private int _inTrap = 0; 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); } } } } }
多模式脱困策略

对于完全卡死的情况,系统采用三级脱困策略:

脱困级别触发条件执行动作适用场景
轻微避障进入攀爬状态后退+角度调整小型障碍物
中度脱困5秒无进展随机方向移动复杂地形
重度脱困25秒超时大范围移动完全卡死

元素采集与角色切换自动化

BetterGI的元素采集与角色切换自动化系统基于处理器设计模式,通过ElementalCollectHandler类处理不同元素的采集任务。

角色识别与切换机制

系统通过YOLO分类器识别当前队伍中的角色,实现智能角色切换:

public bool TrySwitch(int tryTimes = 4, bool needLog = true) { for (var i = 0; i < tryTimes; i++) { var region = CaptureToRectArea(); // 检查是否已经是出战状态 var notActiveCount = CombatScenes.GetAvatars() .Count(avatar => !avatar.IsActive(region)); if (IsActive(region) && notActiveCount == CombatScenes.ExpectedTeamAvatarNum - 1) { 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实现了高效的多级缓存机制,显著提升了系统性能:

public class Navigation { private static bool _isWarmUp = false; private static readonly NavigationInstance _instance = new(); public static void WarmUp(string mapMatchMethod) { if (!_isWarmUp) { MapManager.GetMap(MapTypes.Teyvat, mapMatchMethod).WarmUp(); } _isWarmUp = true; Reset(); } public static Point2f GetPosition(ImageRegion imageRegion, string mapName, string mapMatchMethod) { return _instance.GetPosition(imageRegion, mapName, mapMatchMethod); } }

插件化架构设计

系统采用插件化设计,支持功能模块的动态加载和卸载:

public class GameTaskManager { private readonly Dictionary<string, ITaskTrigger> _triggers = new(); public void AddTrigger(ITaskTrigger trigger) { _triggers[trigger.Name] = trigger; trigger.Initialize(); } public void RemoveTrigger(string name) { if (_triggers.TryGetValue(name, out var trigger)) { trigger.Dispose(); _triggers.Remove(name); } } }

错误恢复与容错机制

系统实现了完善的错误恢复机制,确保在异常情况下能够自动恢复:

public class NewRetry { public static async Task<T> Do<T>(Func<Task<T>> action, TimeSpan retryInterval, int maxAttemptCount) { var exceptions = new List<Exception>(); for (int attempt = 1; attempt <= maxAttemptCount; attempt++) { try { return await action(); } catch (RetryException ex) { exceptions.Add(ex); if (attempt < maxAttemptCount) { await Task.Delay(retryInterval); } } } throw new AggregateException("所有重试尝试均失败", exceptions); } }

实际应用场景与案例

自动采集系统

BetterGI的自动采集系统支持多种资源类型的自动采集,包括矿物、植物、食材等。系统通过图像识别技术检测资源点,并自动规划最优采集路径:

public class ElementalCollectHandler : IActionHandler { private readonly ElementalType _elementalType; public async Task RunAsync(CancellationToken ct, WaypointForTrack? waypoint, object? config) { var avatars = CombatScenes.GetAvatars(); var elementalAvatar = avatars.FirstOrDefault(a => a.ElementalType == _elementalType); if (elementalAvatar != null) { await elementalAvatar.TrySwitch(); await elementalAvatar.UseSkill(); await Task.Delay(1000, ct); } } }

自动钓鱼系统

基于深度学习的自动钓鱼系统采用RodNet神经网络模型,实现精准的钓鱼时机判断:

public class RodNet : Module<Tensor, Tensor, Tensor, Tensor, Tensor> { const double alpha = 1734.34 / 2.5; // 神经网络参数 static readonly double[] dz = {1.0307939, 1.5887239, 1.4377865, 0.8548809, 1.8640924, -0.1687729, 1.8621461, 0.7167622, 1.7071064, 1.8727832, 0.5531539}; public Tensor Forward(Tensor fishRect, Tensor rodRect, Tensor fishLabel, Tensor rodLabel) { // 使用牛顿-拉夫森迭代法求解钓鱼数学模型 var result = ComputeFishingAction(fishRect, rodRect, fishLabel, rodLabel); return result; } }

自动战斗系统

战斗系统支持多种战斗策略配置,可根据不同敌人类型自动切换角色和技能:

public class CombatScriptBag { private readonly List<CombatScript> _scripts = new(); public CombatScript FindBestMatch(List<string> avatarNames) { var bestMatch = _scripts .Select(script => new { Script = script, MatchCount = script.AvatarNames.Intersect(avatarNames).Count() }) .OrderByDescending(x => x.MatchCount) .FirstOrDefault(); return bestMatch?.Script ?? _scripts.First(); } }

未来规划与社区贡献

技术路线图

  1. 深度学习模型优化:计划集成更先进的YOLOv9和Transformer模型,提升识别精度
  2. 多语言支持扩展:增加对更多游戏语言的支持,包括日语、韩语等
  3. 云服务集成:开发云端配置同步和远程控制功能
  4. 跨平台支持:探索Linux和macOS平台的兼容性方案

社区贡献指南

BetterGI采用开放的开源模式,欢迎开发者参与贡献:

  1. 代码贡献:遵循项目编码规范,提交清晰的PR
  2. 文档完善:帮助完善技术文档和使用指南
  3. 问题反馈:在GitHub Issues中报告bug和功能建议
  4. 测试验证:参与新功能的测试和验证工作

性能基准测试

系统经过严格测试,在不同硬件配置下的性能表现:

硬件配置识别精度响应时间内存占用
i5-8300H + GTX 105095%+<100ms200-300MB
i7-10700K + RTX 306098%+<50ms300-400MB
Ryzen 5 5600X + RTX 406099%+<30ms250-350MB

部署与集成指导

  1. 环境要求:.NET 6.0+运行时,Windows 10/11操作系统
  2. 依赖安装:通过NuGet包管理器安装所有依赖项
  3. 配置调整:根据游戏分辨率和硬件性能调整识别参数
  4. 性能调优:参考项目文档中的性能优化指南

BetterGI通过精密的计算机视觉算法和智能的自动化策略,为《原神》玩家提供了强大的辅助工具。系统的模块化设计和可扩展架构为未来的功能扩展奠定了坚实基础,同时也为游戏自动化领域的技术研究提供了有价值的参考案例。

【免费下载链接】better-genshin-impact📦BetterGI · 更好的原神 - 自动拾取 | 自动剧情 | 全自动钓鱼(AI) | 全自动七圣召唤 | 自动伐木 | 自动刷本 | 自动采集/挖矿/锄地 | 一条龙 | 全连音游 | 自动烹饪 - UI Automation Testing Tools For Genshin Impact项目地址: https://gitcode.com/gh_mirrors/be/better-genshin-impact

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.jsqmd.com/news/649170/

相关文章:

  • 【GitHub项目推荐--Rowboat:你的本地优先 AI 同事,将工作流转化为可行动的知识图谱】⭐⭐⭐
  • OneMore插件表格全选功能:一键操作大幅提升OneNote表格处理效率
  • Nano-Banana多任务协同:拆解图生成+部件材质识别+3D重建线索输出
  • 2026最新zRenamer 批量重命名工具 v1.9 中文绿色版,免安装的批量改名神器
  • 3分钟掌握QQ空间数字记忆宝库:GetQzonehistory全攻略
  • AI Agent Harness Engineering 的幻觉问题与缓解策略
  • 罗技鼠标宏终极指南:PUBG绝地求生压枪脚本完整配置教程
  • 【技术干货】AI 编码代理的四大痛点与 Karpathy Skills 实战解决方案
  • AudioSeal Pixel Studio入门指南:理解AudioSeal_wm_16bits模型工作原理
  • Z-Image Turbo开箱即用体验:新手友好型AI绘图工具
  • 软件趋势预测中的技术成熟度评估
  • NVIDIA Profile Inspector完整指南:解锁显卡隐藏性能的3个关键步骤
  • 如何在Navicat中完成跨系统平滑迁移配置_多设备无缝切换教程
  • HunyuanVideo-Foley多模态创作:结合文本与图像提示生成音效
  • 百度网盘提取码智能获取工具:3秒解锁加密资源的终极指南
  • 虎博科技CEO卢鑫 Echo: GEO 方法论提出者,GEO资深实战专家!
  • 2026年毕业季如何精准降低论文AI率?保姆级教程告别AIGC过高焦虑 - 降AI实验室
  • 用户体验测试可用性与可访问性
  • JetBrains IDE试用期重置:技术实现深度解析与高效实用指南
  • StarRocks查询数据湖优点
  • 探讨北京华睿富德,产品好用不,市场竞争力强不强 - 工业设备
  • 2026-04-16 全国各地响应最快的 BT Tracker 服务器(移动版)
  • (67页PPT)机房信息化升级整体设计方案(附下载方式)
  • 如何用铜钟音乐打造极致纯净的听歌体验?终极免费音乐平台指南
  • 猫抓浏览器插件:智能资源嗅探工具,轻松获取网页媒体资源
  • FlowState Lab 在医疗健康领域的应用:生理信号异常波动早期筛查
  • 2025届必备的五大降AI率方案实际效果
  • 5分钟解锁微信网页版:wechat-need-web插件完整使用指南
  • SBTI 人格测试源码分析:一个完整的纯前端心理测试项目(附源码)
  • Camera Shakify:为你的Blender动画添加真实相机抖动的终极指南