Botty深度技术解析:暗黑破坏神2重制版像素级自动化框架架构与实现

张开发
2026/4/21 8:00:21 15 分钟阅读

分享文章

Botty深度技术解析:暗黑破坏神2重制版像素级自动化框架架构与实现
Botty深度技术解析暗黑破坏神2重制版像素级自动化框架架构与实现【免费下载链接】bottyD2R Pixel Bot项目地址: https://gitcode.com/gh_mirrors/bo/bottyBotty是一个基于纯图像识别技术的《暗黑破坏神2重制版》自动化框架采用像素级操作模拟人类玩家行为。不同于传统的内存修改或注入式工具Botty通过计算机视觉技术分析游戏画面实现智能导航、物品识别、战斗决策等核心功能在安全性和稳定性方面具有显著优势。核心架构设计原理状态机驱动的自动化引擎Botty的核心是一个精心设计的状态机系统位于src/bot.py的Bot类中。该系统定义了从游戏初始化到完整游戏循环的各个状态# src/bot.py 中的状态定义 self._states[initialization,hero_selection, town, pindle, shenk, trav, nihlathak, arcane, diablo]状态机使用transitions库实现通过定义状态转移逻辑来控制整个自动化流程。每个状态对应特定的游戏阶段如城镇操作、BOSS击杀、路径导航等。状态机的设计使得Botty能够优雅地处理游戏中的各种异常情况如角色死亡、游戏崩溃或网络延迟。多线程监控体系Botty采用三线程架构确保系统稳定性主线程执行核心自动化逻辑死亡监控线程持续检测角色死亡状态生命值监控线程管理角色生命值和药水使用这种设计允许Botty在遇到突发情况时能够及时响应避免角色死亡造成的损失。监控线程独立于主自动化流程确保即使主流程出现异常保护机制仍能正常工作。Botty核心状态机流程图展示了完整的游戏循环逻辑图像识别与模板匹配系统模板匹配引擎Botty的图像识别系统基于OpenCV实现核心代码位于src/template_finder.py。系统通过预定义的模板图片与游戏画面进行匹配识别关键游戏元素# 模板数据结构定义 dataclass class TemplateMatch: name: str None score: float -1.0 center: tuple[int, int] None center_monitor: tuple[int, int] None系统支持多模板路径包括游戏界面、NPC、物品属性等不同类别的模板TEMPLATE_PATHS [ assets\\templates, assets\\npc, assets\\shop, assets\\item_properties, assets\\chests, assets\\gamble, ]坐标系统转换Botty定义了四种坐标系统以确保精确定位Monitor坐标以第一个显示器左上角为原点Screen坐标单显示器时与Monitor相同多显示器时以屏幕左上角为原点Absolute坐标以角色脚底为中心点Relative坐标相对于已识别模板的位置Botty使用的四种坐标系统及其转换关系BNIP智能物品拾取系统物品过滤语法解析Botty NIPBNIP系统是对Njaguar物品解析器的扩展支持复杂的物品过滤规则。系统通过src/bnip/目录下的模块实现语法解析和规则匹配; 示例BNIP规则 [type] rune [quality] rare # [level] 24 [type] amulet [quality] unique # [allres] 20 [type] ring [quality] unique [idname] thestoneofjordanBNIP系统的主要增强功能包括毒伤精确解析直接读取原始毒伤数值而非计算值全抗性属性支持新增[allres]属性匹配唯一/套装物品识别通过[idname]精确识别特定物品通知抑制功能使用前缀避免Discord通知物品识别流程物品拾取流程在src/item/pickit.py中实现主要步骤包括地面物品检测使用d2r_image.get_ground_loot()识别地面物品物品过滤应用BNIP规则判断是否拾取距离排序按与角色的距离排序物品拾取执行控制角色移动到物品位置并拾取库存管理检查库存空间并处理已满情况class PickIt: def __init__(self): self._cached_pickit_items {} # 缓存拾取决策结果 self._prev_item_pickup_attempt None self._fail_pickup_count 0 self._picked_up_items []路径规划与导航系统节点导航架构Botty的路径规划系统位于src/pather.py采用基于节点的导航方法。系统预定义了游戏中的关键位置节点class Location: # A5城镇节点 A5_TOWN_START a5_town_start A5_STASH a5_stash A5_WP a5_wp A5_PINDLE_START a5_pindle_start A5_PINDLE_SAFE_DIST a5_pindle_safe_dist A5_PINDLE_END a5_pindle_end模板驱动的路径识别系统使用图像模板匹配来识别当前位置并规划路径。每个游戏区域都有对应的模板图片存储在assets/templates/目录中。例如崔凡克区域的路径模板崔凡克区域的路径识别模板蓝色圆圈表示已识别的路径节点智能避障与寻路Botty的导航系统包含以下关键功能障碍物检测通过颜色过滤识别不可通行区域安全距离保持与敌人保持安全距离进行攻击动态路径调整根据实时游戏情况调整路径传送优化针对传送职业优化移动路径角色职业系统实现抽象角色接口所有角色职业都继承自src/char/i_char.py中定义的IChar接口确保统一的角色控制接口class IChar: def pre_buff(self): 角色预buff逻辑 pass def kill_pindle(self) - bool: 击杀Pindleskin pass def kill_shenk(self) - bool: 击杀Shenk the Overseer pass职业特定实现Botty目前支持多种职业构建每种都有专门的实现法师Sorceress支持闪电、暴风雪、新星、九头蛇等多种构建圣骑士Paladin专注祝福之锤和天堂之拳构建野蛮人Barbarian实现战吼和跳跃攻击陷阱刺客Trapsin闪电陷阱和死亡哨卫组合死灵法师Necromancer骨系和毒系两种构建技能释放优化每个职业都实现了优化的技能释放逻辑考虑施法帧数FCR和技能冷却时间[light_sorc] lightningskill_right chain_lightningskill_left casting_frames9配置系统与参数调优分层配置架构Botty采用分层的配置系统支持全局配置和自定义覆盖基础配置config/params.ini- 核心参数定义自定义配置config/custom.ini- 用户自定义覆盖物品规则config/default.bnip- 默认拾取规则商店配置config/shop.ini- 商店相关设置关键性能参数参数类别关键参数优化建议影响范围性能优化casting_frames根据FCR调整施法帧数技能释放速度安全设置chicken0.3-0.530-50%生命角色生存率库存管理num_loot_columns6-8列视角色而定物品拾取容量游戏节奏max_game_length_s180-300秒单局游戏时长路径规划open_chests1开启宝箱额外物品获取高级配置技巧多路线调度配置[routes] orderrun_trav, run_pindle, run_eldritch, run_arcane randomize_runs1 max_game_length_s240宝石合成自动化[transmute] transmutechipped,flawed,standard,flawless transmute_every_x_game20 stash_destination3,2,1,0图形调试与性能监控实时调试界面按F10键可启动图形调试模式提供实时游戏状态可视化Botty图形调试界面显示模板匹配结果和物品识别状态调试功能包括模板匹配可视化显示识别的游戏元素和匹配分数物品拾取状态标识应拾取的物品和忽略的物品路径节点显示展示当前识别的路径节点性能指标监控实时显示帧率和处理延迟性能优化策略图像识别优化模板缓存预加载并缓存所有模板图片区域限制仅在相关区域进行模板匹配多分辨率支持针对不同游戏区域优化识别精度路径规划优化节点预计算预先计算常用路径节点动态避障实时检测并避开障碍物最短路径算法优化角色移动路径高级功能实现细节混沌避难所Chaos Sanctuary自动化Diablo路线的实现展示了Botty的高级路径规划能力。系统需要处理复杂的迷宫结构和多个封印BOSS# src/run/diablo.py 中的核心逻辑 def run_diablo(self, do_pre_buff: bool): # 1. 识别混沌避难所入口 # 2. 按顺序激活三个封印 # 3. 清理封印守护者 # 4. 击杀Diablo # 5. 拾取战利品并返回混沌避难所详细路径规划图显示封印位置和战斗区域尼拉塞克Nihlathak安全击杀Nihlathak路线需要特殊的安全处理避免尸体爆炸伤害# src/run/nihlathak.py 中的安全策略 def _approach_nihlathak(self): # 保持安全距离 # 使用远程攻击 # 避免站在尸体附近 # 快速拾取钥匙后撤离尼拉塞克神殿区域识别模板标记安全攻击位置商店购物与赌博系统Botty集成了智能商店系统支持自动购买药水、卷轴和赌博特定物品# src/shop/ 目录下的商店逻辑 class Shopper: def buy_potions(self, potion_type: str, quantity: int): 自动购买指定类型和数量的药水 def gamble_item(self, item_type: str): 赌博指定类型的物品故障处理与恢复机制异常检测系统Botty实现了多层异常检测机制游戏状态监控持续检测游戏是否正常运行角色状态检查监控生命值、法力值和异常状态路径阻塞检测识别无法通行的路径物品识别失败处理处理OCR识别错误自动恢复策略当检测到异常时Botty会尝试以下恢复措施游戏重启通过restart_d2r_when_stuck参数控制状态重置返回安全的初始状态路径重试尝试替代路径到达目标错误日志记录记录详细错误信息供调试配置驱动的容错[general] max_consecutive_fails5 restart_d2r_when_stuck1 max_game_length_s380开发与扩展指南添加新角色职业要添加新角色职业需要实现IChar接口的所有方法创建角色类在src/char/目录下创建新文件实现核心方法包括pre_buff()、战斗方法和移动方法配置技能映射在params.ini中添加对应的技能配置段测试与优化使用图形调试模式验证实现创建新游戏路线添加新游戏路线需要以下步骤路径模板创建使用utils/node_recorder.py录制路径节点路线类实现在src/run/目录下创建新文件状态集成在bot.py的状态机中添加新状态配置支持在params.ini的[routes]部分添加新路线性能调优建议图像识别优化确保游戏亮度在70-80%之间使用720p窗口模式以获得最佳识别效果定期清理assets/templates/中过时或低质量的模板路径规划优化为复杂区域创建更密集的路径节点优化安全距离参数以减少死亡风险使用graphic_debugger验证路径识别准确性内存与性能监控定期清理log/screenshots/目录监控游戏进程内存使用情况调整casting_frames参数匹配角色的FCR档位安全最佳实践反检测策略Botty采用以下策略降低被检测风险随机化操作引入操作延迟和路径随机化人类行为模拟模拟真实玩家的鼠标移动和点击模式游戏内合规仅使用游戏允许的机制和快捷键适度使用避免24小时不间断运行定期休息配置安全建议[char] ; 引入随机延迟模拟人类反应时间 random_delay_min0.1 random_delay_max0.3 [general] ; 限制单次运行时长 max_runtime_before_break_m240 break_length_m30未来发展方向技术改进路线机器学习增强使用深度学习改进图像识别准确率多分辨率支持扩展支持1080p和4K分辨率云配置同步实现配置文件的云端备份和同步社区模板共享建立用户贡献的模板库功能扩展计划更多BOSS支持添加巴尔Baal、墨菲斯托Mephisto等BOSS路线交易功能实现自动交易和物品定价角色升级支持从低级到高级的自动升级路线团队协作多角色协同作战支持Botty作为开源自动化框架其模块化设计和清晰的架构为开发者提供了良好的扩展基础。通过深入理解其核心原理和实现细节用户可以更好地定制和优化自己的自动化方案同时为项目贡献新的功能和改进。【免费下载链接】bottyD2R Pixel Bot项目地址: https://gitcode.com/gh_mirrors/bo/botty创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

更多文章