阴阳师自动化脚本架构解析:基于Pydantic与模块化设计的高性能游戏自动化框架

阴阳师自动化脚本架构解析:基于Pydantic与模块化设计的高性能游戏自动化框架

【免费下载链接】OnmyojiAutoScriptOnmyoji Auto Script | 阴阳师脚本项目地址: https://gitcode.com/gh_mirrors/on/OnmyojiAutoScript

阴阳师自动化脚本(Onmyoji Auto Script,简称OAS)是一个开源的游戏自动化解决方案,专为阴阳师手游设计。该项目基于Python构建,采用了现代化的软件架构设计理念,通过模块化、可扩展的框架实现了对游戏复杂场景的智能识别与自动化操作。本文将从技术架构、核心模块、实现原理和配置优化四个方面深入解析这一自动化框架的设计哲学与实现细节。

技术挑战与解决方案设计

阴阳师作为一款复杂的手游,其自动化面临三大核心挑战:游戏界面动态变化带来的识别困难、多任务调度与状态管理复杂性、跨平台设备适配的技术难题。OAS通过分层架构设计解决了这些挑战,实现了从底层设备控制到高层业务逻辑的完整自动化流程。

核心架构设计采用前后端分离模式,前端基于FluentUI构建现代化GUI界面,后端采用Python实现核心自动化逻辑。这种分离架构使得界面交互与业务逻辑解耦,提高了系统的可维护性和扩展性。项目基于碧蓝航线脚本Alas框架进行二次开发,继承了其成熟的自动化架构,同时针对阴阳师游戏特性进行了深度优化。

分层架构设计与核心模块实现

设备抽象层:跨平台控制与屏幕捕捉

module/device/目录下,OAS实现了完整的设备抽象层。device.py中的Device类继承自PlatformScreenshotControlAppControl四个基类,提供了统一的设备操作接口。这一设计支持多种屏幕捕捉方法,包括WINDOW_BACKGROUNDNEMU_IPC等,以及多种控制方法如MINITOUCHWINDOW_MESSAGE

# 设备控制核心类定义 class Device(Platform, Screenshot, Control, AppControl): def __init__(self, *args, **kwargs): # 自动选择最优截图方法 if self.config.script.device.screenshot_method == 'auto': self.run_simple_screenshot_benchmark()

设备层通过适配器模式支持多种安卓模拟器,包括雷电、夜神、蓝叠等主流平台。screenshot.py模块实现了高效的屏幕捕捉机制,支持实时帧率调整和图像预处理,为上层识别算法提供稳定的图像输入。

图像识别与OCR引擎

module/ocr/目录包含了完整的OCR识别系统。base_ocr.py定义了统一的OCR接口,支持FULLSINGLEDIGITDIGITCOUNTERDURATIONQUANTITY等多种识别模式。系统采用PaddleOCR-onnx作为底层识别引擎,在ppocr.py中封装为TextSystem类,提供高性能的文本检测与识别能力。

OCR系统支持ROI区域识别、置信度阈值调整、多语言识别等高级功能。enlarge_canvas函数优化了非正方形图像的识别性能,通过填充黑色背景将图像调整为32的整数倍,显著提升了PaddleOCR的识别效率。

配置管理系统

配置管理是OAS的核心优势之一。module/config/目录下的配置系统基于Pydantic实现强类型验证和序列化。config_base.py中定义了TimeDateTimeTimeDelta等自定义类型,支持复杂的时间配置:

# 基于Pydantic的配置模型 class HyakkiyakouConfig(ConfigBase): hya_limit_time: Time = Field(default=Time(minute=20)) hya_limit_count: int = Field(default=10) hya_invite_friend: bool = Field(default=False) hya_onmyoji: Onmyoji = Field(default=Onmyoji.KAGURA) hya_auto_bean: bool = Field(default=False) hya_sp: float = Field(default=1.0) hya_ssr: float = Field(default=1.0) hya_sr: float = Field(default=0.7) hya_r: float = Field(default=0.3)

配置系统支持动态字段隐藏、条件验证和类型转换,通过config_watcher.py实现配置文件的实时监控与热重载。config_server.py提供了RESTful API接口,支持远程配置管理。

百鬼夜行AI识别系统深度解析

智能式神识别架构

tasks/Hyakkiyakou/目录实现了百鬼夜行的完整自动化流程。系统采用基于深度学习的式神识别模型,支持ONNXRuntime和TensorRT两种推理引擎。在config.py中,用户可以灵活配置识别参数:

class HyakkiyakouModels(ConfigBase): conf_threshold: float = Field(default=0.6) # 置信度阈值 iou_threshold: float = Field(default=0.7) # NMS阈值 model_precision: ModelPrecision = Field(default=ModelPrecision.FP32) inference_engine: InferenceEngine = Field(default=InferenceEngine.ONNXRUNTIME)

多策略决策引擎

agent/agent.py实现了智能决策算法,根据式神稀有度分配不同的砸豆权重。系统支持SP、SSR、SR、R、N卡和呱太六种类别,每个类别可单独配置权重值。决策引擎考虑当前豆子数量、式神移动速度、出现位置等多个因素,实现最优的资源分配策略。

权重配置示例

  • SP式神:权重1.0(最高优先级)
  • SSR式神:权重1.0
  • SR式神:权重0.7
  • R式神:权重0.3
  • N卡和呱太:权重0.0(忽略)

实时跟踪与自适应调整

script_task.py中的ScriptTask类整合了Tracker跟踪算法,实现式神的实时轨迹预测。系统以毫秒级间隔截取游戏画面,通过YOLO类目标检测模型识别式神位置,结合卡尔曼滤波算法预测移动轨迹,提高砸豆命中率。

# 式神跟踪与识别核心代码 from oashya.tracker import Tracker from oashya.labels import label2id, CLASSINDEX as CI, id2name class ScriptTask(GameUi, HyaSlave, SwitchOnmyoji): def run(self): tracker = Tracker() while self.running: screenshot = self.device.screenshot() detections = self.model.predict(screenshot) tracks = tracker.update(detections) for track in tracks: if self.should_throw_beans(track): self.throw_beans(track.position)

任务调度与状态管理系统

基于时间窗口的调度算法

module/config/scheduler.py实现了智能任务调度系统。系统支持多种调度策略,包括FIFO(先进先出)、优先级调度和时间窗口调度。每个任务可以配置独立的运行时间、次数限制和依赖关系。

调度规则定义

class Scheduler(ConfigBase): enabled: bool = Field(default=True) next_run: DateTime = Field(default_factory=datetime.now) priority: int = Field(default=0) server: bool = Field(default=True)

状态持久化与错误恢复

系统通过config_state.py实现状态持久化,支持断点续传和错误恢复。当任务执行过程中发生异常时,系统会自动记录当前状态,并在下次运行时从断点处继续执行。exception.py定义了完整的异常处理体系,包括GameNotRunningErrorGameStuckErrorGameTooManyClickError等专门针对游戏场景的异常类型。

多进程架构设计

module/server/目录实现了基于ZeroRPC的多进程通信架构。script_process.py中的ScriptProcess类管理独立的脚本进程,支持并行执行多个任务实例。main_manager.py作为主管理器,负责进程的生命周期管理和状态监控。

配置优化与性能调优指南

性能优化策略

  1. 截图方法选择:系统自动测试并选择最优截图方法,支持WINDOW_BACKGROUNDNEMU_IPCADB等多种方式
  2. OCR加速:通过enlarge_canvas优化图像输入,减少PaddleOCR的处理时间
  3. 模型推理优化:支持FP32和INT8精度模型,平衡识别精度与推理速度

内存管理优化

  • 使用cached_property装饰器缓存频繁访问的属性
  • 实现图像数据的流式处理和及时释放
  • 采用连接池管理设备连接,减少重复初始化开销

调试与监控配置

DebugConfig类提供了完整的调试支持:

class DebugConfig(ConfigBase): hya_show: bool = Field(default=False) # 显示跟踪结果 hya_info: bool = Field(default=False) # 输出调试信息 continuous_learning: bool = Field(default=False) # 持续学习模式 hya_save_result: bool = Field(default=False) # 保存结果 hya_interval: float = Field(default=300) # 截屏间隔(ms)

扩展开发与二次开发指南

新任务模块开发

开发新任务模块需要遵循以下结构:

  1. tasks/目录下创建任务文件夹
  2. 实现config.py定义配置模型
  3. 实现assets.py管理资源文件
  4. 实现script_task.py继承GameUi基类
  5. assets/子目录中放置图像资源

自定义识别算法

系统支持自定义识别算法扩展:

class CustomOcr(BaseOcr): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.custom_model = load_custom_model() def detect_and_ocr(self, image): # 实现自定义识别逻辑 return processed_results

插件系统架构

通过module/的模块化设计,开发者可以轻松添加新功能:

  • 设备控制插件:继承PlatformControl基类
  • 图像处理插件:集成到ocr/目录
  • 任务调度插件:扩展scheduler.py功能

技术架构总结与未来展望

阴阳师自动化脚本OAS代表了现代游戏自动化框架的技术发展方向。其基于Pydantic的配置管理系统、模块化的架构设计、高性能的OCR识别引擎和智能的任务调度算法,为游戏自动化领域提供了成熟的技术解决方案。

技术亮点总结

  1. 现代化配置管理:基于Pydantic的强类型配置系统
  2. 高性能OCR引擎:集成PaddleOCR-onnx,支持多精度推理
  3. 智能决策算法:百鬼夜行AI识别与多策略决策
  4. 跨平台设备支持:统一设备抽象层,支持主流安卓模拟器
  5. 可扩展架构:模块化设计,便于功能扩展和二次开发

未来技术方向

  • 强化学习算法的集成,实现自适应策略优化
  • 云原生架构支持,实现分布式任务调度
  • 边缘计算优化,降低本地资源消耗
  • 多模态识别技术,结合图像、文本和声音分析

通过深入理解OAS的技术架构和实现原理,开发者可以基于此框架构建更复杂的游戏自动化系统,或将其技术思想应用于其他领域的自动化解决方案中。

【免费下载链接】OnmyojiAutoScriptOnmyoji Auto Script | 阴阳师脚本项目地址: https://gitcode.com/gh_mirrors/on/OnmyojiAutoScript

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