ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

原神小助手 genshin_impact_assistant 实战解析:图像识别驱动的自动战斗、刷秘境与日常全流程

原神小助手 genshin_impact_assistant 实战解析:图像识别驱动的自动战斗、刷秘境与日常全流程 原神小助手 genshin_impact_assistant 实战解析图像识别驱动的自动战斗、刷秘境与日常全流程【免费下载链接】genshin_impact_assistant原神小助手 Genshin Assistant (CN/EN) | 自动战斗,秘境,领日常,半自动委托项目地址: https://gitcode.com/GitHub_Trending/ge/genshin_impact_assistantgenshin_impact_assistant原神小助手用图像识别加模拟按键把原神里重复的自动战斗、刷秘境、领日常、大世界采集打包成一键任务让你只管选角色和培养。从一次手滑断掉的本说起你肯定经历过挂着自动秘境刷树脂结果切出去看了条消息回来发现角色卡在墙角战斗早就停了。或者你手动点单人挑战手指一抖点错了本一管树脂白丢。这类任务本身不复杂但重复、要盯着屏幕、容错全靠手速——人最容易在第三、第四个循环时走神。genshin_impact_assistant 的思路很简单把看屏幕—做判断—按按键这三件事全交给程序人只在开始前配置一次。它不读游戏内存只靠截下来的画面判断当前到了哪一步再用模拟键鼠去操作全程走的是玩家能用的普通输入通道。项目全貌一条截图→识别→按键的流水线用一句话概括它的数据流输入是游戏窗口截图加你在配置里填的目标刷哪个秘境、采哪个材料、跑几次处理是先用模板匹配和本地 OCR 认出当前 UI 状态再交给状态机决定下一步该做什么输出是一连串模拟的鼠标点击、键盘动作。上图示意一张游戏截图如何被切分识别并转化为操作序列。整个系统没有中央大脑去硬编码每一步而是拆成两层底层是 source/interaction/interaction_core.py 里的itt交互对象负责截图和按键上层是各种 TaskDomainTask、MissionTask、ClaimRewardTask等每个任务内部用状态机 子线程把流程串起来。下面拆三个最影响体验的机制。核心机制拆解机制一不联网靠模板匹配加本地 OCR看懂屏幕解决什么问题程序得知道现在这个按钮点没点亮这是哪个秘境名称但原神没有开放接口只能从像素里找答案。怎么做的它对按钮、图标用模板匹配把一张小图标在截屏里找最相似的位置对动态文字用本地 OCR。关键点是 OCR 模型按游戏语言懒加载——你开的是中文服就只加载中文模型省内存# source/ocr/models.py按语言懒加载 OCR 模型 OCR_MODEL OcrModel() LOCAL_OCR_MODEL OCR_MODEL.get_by_lang(GLOBAL_LANG) cached_property def zhs(self): return TextSystem(zhs) # 首次用到才加载截图也分通道处理因为原神 UI 有半透明效果直接拿 3 通道图匹配容易误判# source/interaction/interaction_core.py四通道截图转单通道 ret self.capture_obj.capture(recapture_limitrecapture_limit) if posi is not None: ret crop(ret, posi) # 只截目标小区域加速 if jpgmode 1: ret self.png2jpg(ret, channelbg) # 抠背景 elif jpgmode 2: ret self.png2jpg(ret, channelui) # 抠 UI对开发者的启示把找小图标限制在小裁剪区域内再用通道分离处理透明 UI是这类图像自动化项目提速和降误判的两个通用手段。机制二任务用状态机编排异常自带可能原因解决什么问题长流程一跑就是几百步中途任何一步没识别到就会卡死。你希望能快速知道卡在哪、为什么而不是面对一坨 traceback。怎么做的每个异常都继承GIABaseException带一个POSSIBLE_REASONS列表任务管理器捕获异常后逐条打印可能原因并在出错瞬间截一张图存盘方便复盘# source/task/task_manager.py任务异常统一出口 def task_excepthook(self, args): exception_instance args.exc_value logger.exception(exception_instance) if isinstance(exception_instance, GIABaseException): if args.exc_value.stop_task_flag: self.stop_tasklist() for pr in exception_instance.POSSIBLE_REASONS: logger.error(fPossible Reason: {pr}) if isinstance(exception_instance, SnapshotException): exception_instance.save_snapshot(itt.capture(jpgmodeFOUR_CHANNELS))同时按键前有一个焦点守卫发现当前活动窗口不是原神就先暂停避免把操作打到别的程序上# source/interaction/interaction_core.py操作前确认窗口焦点 winname get_active_window_process_name() if winname not in PROCESS_NAME: while get_active_window_process_name() not in PROCESS_NAME: logger.info(当前窗口焦点不是原神操作暂停) time.sleep(5 - (time.time() % 5)) return func(*args, **kwargs)对开发者的启示给每个可失败步骤配人话原因并在出错时自动留现场截图比裸抛异常省掉大量复现半天的时间。大地图寻路则是把采集点、传送点建成一张有向图用 A* 求路径见 source/map/tianli_navigator.py距离用经纬度差近似让自动跑到材料点不用你手动拖地图。上手步骤与常见报错处理先说环境它面向 Windows依赖pyautogui、pydirectinput、OpenCV、torch等推荐 Python 3.7.6直接pip install -r requirements.txt装全依赖。典型场景刷秘境在秘境页填本名、层数、次数选队伍启动DomainTask它会自己跑过去、进本、打、出本、继续下一轮。大世界采集在采集设置里框出材料点MissionTask沿路采集、打怪、捡掉落。领日常跑一遍委托再领奖励对应CommissionTaskClaimRewardTask。关键配置窗口保持 1920x1080有边框/无边框要在设置里勾对游戏语言必须和 OCR 模型对应中文服配中文否则识别不到按钮文字键位按你习惯在keymap里改。常见报错及思路日志刷操作暂停窗口焦点丢了把原神拉回前台即恢复。截图 shape 报错分辨率或窗口模式没对上回到 1080p 全屏。找不到秘境名称放弃选择多半是 OCR 语言不匹配或本名有全角冒号/罗马数字程序会先做文本归一化再匹配。任务中途停翻日志里的Possible Reason再对照Logs目录里的现场截图定位卡点。后续能做什么它把任务抽象成了可复用的 TaskTemplate社区还单独维护了一个任务仓库用mission_template就能描述一条新的采集/探索路线你录好路径就能生成可分享的任务文件。想深入的话从 source/funclib/ 里的combat_lib、collector_lib入手把新角色或新材料接进现有状态机就是最快的上手路径。从自己盯着屏幕到配置一次然后去干别的genshin_impact_assistant 证明了一件事只要把截图识别和状态编排做扎实重复到让人抓狂的游戏日常就能交给程序去跑。【免费下载链接】genshin_impact_assistant原神小助手 Genshin Assistant (CN/EN) | 自动战斗,秘境,领日常,半自动委托项目地址: https://gitcode.com/GitHub_Trending/ge/genshin_impact_assistant创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表