基于计算机视觉与状态机架构的FGO自动化系统设计
【免费下载链接】FGO-py自动爬塔! 自动每周任务! 全自动免配置跨平台的Fate/Grand Order助手.启动脚本,上床睡觉,养肝护发,满加成圣诞了解一下?项目地址: https://gitcode.com/GitHub_Trending/fg/FGO-py
FGO-py是一个基于Python开发的全自动Fate/Grand Order游戏助手,采用计算机视觉识别技术实现游戏界面感知,通过状态机架构控制游戏操作流程。该项目通过图像识别、设备控制、游戏逻辑决策等模块的协同工作,为玩家提供免配置、跨平台的自动化游戏体验。
计算机视觉驱动的游戏界面感知系统
FGO-py的核心技术在于其图像识别引擎,该系统不依赖游戏内存读取或API注入,而是通过纯视觉方式识别游戏状态。这种设计理念确保了系统的安全性和兼容性,避免了游戏客户端检测风险。
多尺度模板匹配算法
系统采用多尺度模板匹配算法来识别游戏中的各种界面元素。在fgoDetect.py中,_find方法实现了基于OpenCV的模板匹配功能,支持自适应阈值和多种匹配策略:
def _find(self, img, rect=(0,0,1280,720), threshold=.05): # 在指定区域内进行模板匹配 # 支持多尺度匹配以适应不同分辨率 # 返回匹配结果的坐标和置信度该系统维护了超过400个游戏界面元素的模板图像,涵盖从者头像、技能图标、指令卡、宝具特效到各种界面按钮。每个模板都经过精心裁剪和标准化处理,确保在不同游戏版本和设备分辨率下的识别准确性。
实时状态检测机制
FGO-py的状态检测系统基于事件驱动的架构,通过fgoSchedule.py中的调度器管理各种检测任务。系统持续监控游戏界面的变化,实时判断当前游戏状态:
- 界面状态检测:识别主界面、战斗界面、编队界面等
- 战斗状态检测:判断回合开始、技能可用状态、宝具充能状态
- 资源状态检测:检测体力消耗、友情点数量、苹果库存
Alas平台中的FGO-py任务管理界面,展示了实时任务调度、状态监控和详细日志输出系统
状态机架构与游戏逻辑控制
FGO-py采用有限状态机(FSM)架构管理游戏流程,在fgoKernel.py中实现了完整的游戏逻辑控制。这种架构将复杂的游戏操作分解为离散的状态和转换,确保了系统的可靠性和可维护性。
战斗决策引擎
战斗决策是FGO-py的核心功能,系统需要实时分析战场形势并做出最优决策。战斗引擎基于以下关键组件:
- 从者状态分析:通过
getFieldServant方法识别场上从者的ID、HP、NP值 - 敌人状态评估:使用
getEnemyHp和getEnemyNp方法获取敌人状态 - 技能优先级调度:基于从者技能效果和当前战况计算技能施放优先级
- 指令卡选择算法:综合考虑克制关系、连携效果、伤害期望等因素
def selectCard(self): # 评估每张指令卡的战斗价值 # 考虑克制关系、连携效果、伤害期望 # 返回最优的指令卡组合资源管理与异常处理
系统内置完善的资源管理机制,通过fgoSchedule.py中的stopOnDefeated和checkDefeated方法实现异常状态检测和恢复:
- 战斗失败检测:识别战败界面并采取相应措施
- 网络异常处理:检测网络错误并自动重连
- 游戏崩溃恢复:识别游戏崩溃状态并重启游戏
- 资源耗尽处理:在体力耗尽时自动使用恢复道具
跨平台设备控制与通信层
FGO-py的设备控制层采用抽象设计,支持多种连接方式,包括ADB、Windows API和混合连接模式。在fgoDevice.py中,Device类提供了统一的设备操作接口:
混合连接架构
系统采用创新的混合连接架构,允许输入和输出使用不同的通信方式:
def createDevice(name, *args, **kwargs): # 根据设备名称创建相应的设备实例 # 支持Android、Windows、混合模式等多种连接方式这种设计解决了传统自动化工具在特定模拟器上的兼容性问题。例如,某些模拟器可能支持ADB截图但不支持ADB点击,或者反之。混合连接允许系统选择最优的输入输出组合,确保在各种环境下的稳定运行。
分辨率自适应机制
FGO-py支持从720p到2K等多种屏幕分辨率,通过fgoDetect.py中的坐标转换系统实现自适应:
def _crop(self, rect): # 根据当前设备分辨率裁剪图像区域 # 自动调整坐标映射关系系统维护了一套基于1280×720基准分辨率的坐标系统,在实际运行时根据设备实际分辨率进行动态缩放。这种设计确保了模板匹配的准确性,无论设备分辨率如何变化。
多前端架构与用户交互系统
FGO-py采用模块化设计,支持图形界面、命令行界面和Web界面三种交互方式,满足不同用户群体的需求。
图形用户界面(GUI)
基于Qt框架的图形界面提供了直观的操作体验,在fgoGui.py中实现了完整的用户交互逻辑:
- 任务调度管理:可视化配置自动化任务
- 实时状态监控:显示当前执行进度和识别结果
- 编队配置界面:直观的从者和技能配置
- 日志输出系统:详细的执行过程记录
命令行界面(CLI)
对于高级用户和自动化部署场景,FGO-py提供了功能完整的命令行界面。在fgoCli.py中实现的CLI系统支持:
- 交互式命令补全:Tab键自动补全命令和参数
- 批处理脚本支持:可通过脚本批量执行任务
- 远程控制能力:支持SSH等远程连接方式
- 详细日志输出:可配置的日志级别和输出格式
FGO-py命令行界面展示,支持Docker容器化部署和原生命令行操作,提供低层级设备控制和批处理任务执行能力
Web界面与REST API
fgoWebServer.py实现了基于Flask的Web服务器,提供了浏览器访问的界面和RESTful API:
@app.route('/api/connect', methods=['POST']) def connect(): # 设备连接API端点 # 支持JSON格式的参数传递这种设计使得FGO-py可以轻松集成到其他自动化系统中,如Alas(AzurLaneAutoScript)平台。
性能优化与稳定性保障
FGO-py在性能优化方面进行了大量工作,确保在资源受限的设备上也能稳定运行。
图像识别性能优化
系统采用了多种优化策略提升图像识别效率:
- 模板预加载:启动时将所有模板图像加载到内存
- 区域裁剪优化:只对关键区域进行识别,减少计算量
- 缓存机制:对频繁识别的界面元素使用缓存结果
- 并行处理:利用多线程技术并行处理多个识别任务
错误恢复与容错机制
FGO-py内置了完善的错误处理系统,能够从各种异常状态中恢复:
- 超时重试机制:操作失败时自动重试指定次数
- 状态验证循环:在执行关键操作前验证当前状态
- 异常检测与恢复:检测游戏异常并采取恢复措施
- 日志记录与分析:详细记录执行过程便于问题排查
多语言支持与国际适配
FGO-py支持简体中文、日语、英语和繁体中文四种语言版本,通过fgoI18n系统实现国际化:
游戏服务器适配
系统针对不同地区的游戏服务器进行了专门适配:
- 国服(Bilibili):完整的界面识别和功能支持
- 日服:日语界面识别和操作适配
- 美服:英语界面识别和操作适配
- 台服:繁体中文界面识别和操作适配
每个服务器版本都有专门的图像模板和识别逻辑,确保在不同地区的游戏客户端上都能正常工作。
界面本地化系统
基于Qt的国际化框架,FGO-py的界面支持多语言切换:
# 加载对应语言的翻译文件 translator = QTranslator() translator.load(f'fgoI18n.{language}.qm') app.installTranslator(translator)自动化任务调度系统
FGO-py的自动化任务系统支持多种任务类型和调度策略,通过fgoSchedule.py实现:
计划作战与每周任务
系统支持自动化的计划作战和每周任务完成:
def weeklyMission(self): # 自动识别并完成每周任务 # 支持任务类型识别和进度跟踪无限池刷取与资源管理
针对游戏中的无限池活动,FGO-py提供了专门的优化策略:
- 自动助战选择:根据当前队伍配置智能选择助战
- 苹果使用策略:在体力耗尽时自动使用恢复道具
- 掉落物品统计:记录战斗掉落并生成统计报告
- 连续作战管理:支持设置连续作战次数限制
技术架构演进与未来展望
FGO-py的技术架构经历了多次重要演进,从最初的简单脚本发展到现在的完整自动化系统。
架构演进历程
- 初期版本:基于固定坐标的简单点击脚本
- 图像识别引入:加入模板匹配技术,提升适应性
- 状态机重构:引入有限状态机管理游戏流程
- 多前端支持:增加CLI和Web界面支持
- 性能优化:引入缓存、并行处理等优化技术
技术挑战与解决方案
在开发过程中,团队面临并解决了多个技术挑战:
- 游戏界面变化:通过版本适配和动态模板更新机制解决
- 设备兼容性问题:采用混合连接架构和分辨率自适应
- 识别准确性:引入机器学习辅助的OCR技术和多策略验证
- 性能瓶颈:通过算法优化和硬件加速提升执行效率
未来发展方向
FGO-py团队计划在以下方向继续发展:
- AI决策优化:引入强化学习技术优化战斗决策
- 云端管理:支持远程任务调度和状态监控
- 多游戏扩展:将技术框架扩展到其他手游自动化
- 社区生态建设:建立插件系统和第三方扩展支持
FGO-py在GitHub Trending页面的热度展示,体现了开源社区对该项目的关注和认可
部署与使用指南
FGO-py支持多种部署方式,满足不同用户群体的需求:
本地部署
对于大多数用户,推荐使用本地部署方式:
git clone https://gitcode.com/GitHub_Trending/fg/FGO-py cd FGO-py pip install -r requirements.txt python fgo.pyDocker容器化部署
对于需要隔离环境或批量部署的场景,提供了Docker支持:
FROM python:3.11-slim WORKDIR /app COPY . . RUN pip install -r requirements.txt CMD ["python", "fgo.py"]移动设备部署
通过AidLux等Android开发环境,可以在移动设备上直接运行FGO-py:
# 在AidLux中执行安装脚本 ./deploy/AidLux/AidLux.sh总结
FGO-py作为一个成熟的开源游戏自动化项目,展示了计算机视觉技术在游戏自动化领域的强大应用潜力。通过精心的架构设计和持续的优化迭代,项目在保持高识别准确率的同时,提供了出色的性能和稳定性。
项目的成功不仅在于其技术实现,更在于其开源社区的建设。活跃的开发者社区为项目提供了持续的改进动力,而详细的技术文档和版本记录则为新用户提供了良好的入门指引。
随着游戏自动化技术的不断发展,FGO-py将继续探索新的技术方向,为玩家提供更加智能、高效的游戏体验,同时也为相关领域的技术研究提供有价值的参考案例。
【免费下载链接】FGO-py自动爬塔! 自动每周任务! 全自动免配置跨平台的Fate/Grand Order助手.启动脚本,上床睡觉,养肝护发,满加成圣诞了解一下?项目地址: https://gitcode.com/GitHub_Trending/fg/FGO-py
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考