news 2026/8/22 14:31:01

替你跑24小时暗黑2刷宝:Botty图像识别机器人从首次跑通到进阶调优

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
替你跑24小时暗黑2刷宝:Botty图像识别机器人从首次跑通到进阶调优

替你跑24小时暗黑2刷宝:Botty图像识别机器人从首次跑通到进阶调优

【免费下载链接】bottyD2R Pixel Bot项目地址: https://gitcode.com/gh_mirrors/bo/botty

Botty 是一个为《暗黑破坏神2:重制版》(D2R)做的图像识别自动化脚本:它用眼睛看屏幕,自己认路、打 Boss、按捡物规则收装备,然后循环往复。这篇文章按顺序讲清楚四件事:它能干什么、怎么第一次跑起来、哪几个参数值得调、哪些坑要避开。读完你应该能独立跑通一个刷宝循环,并且知道它出问题时该查哪里。

先知道它"会什么",再决定跑什么

Botty 不靠录制的固定坐标。走位、杀怪、捡物、回城,全部是实时对游戏画面做模板匹配和 OCR(光学字符识别)读出来的。机器人核心是一台状态机:角色在"选人界面 → 城镇 → 各副本 → 回城"之间循环,死亡或血量告急时,监控线程会立刻把流程拉回来重开。

你可以交给它的活大致包括:

  • 多条刷宝线路轮换:崔凡克、品度、奥金尼(可附带先杀 Shenk)、尼拉塞克、神秘避难所、混沌庇护所(迪亚波罗)。后三条要求角色会传送,迪亚波罗线只支持祝福之锤圣骑士。
  • 按规则捡物:内置一份 NIP 格式的捡物清单,符文、药水、三把 Uber 钥匙、精华都在里面,地面出现就捡。
  • 自动后勤:回城、整理背包、存仓库、收金币、把无瑕宝石转化为完美宝石。
  • 保命逻辑:血量低于设定比例自动出城,按阈值喝药,佣兵也照看。

匹配时它会用一张随仓库提供的 HUD 遮罩把底部界面区域挡掉,避免血条、技能栏干扰识别。

三个前置条件,一个都不能省

  • 游戏语言必须是英语。物品名靠 OCR 读出来,换成其他语言整条捡物链都会失效。
  • 720p 窗口模式。启动后按自动设置热键会替你写入这项。
  • 别让任何外部程序碰画面:HDR、GeForce 体验之类的覆盖层全部关掉。亮度偏移哪怕一两个像素,模板匹配分数就可能掉到阈值以下。

缺了其中任何一条,症状几乎都长得一样:机器人"看不见"路、捡不到东西、或者原地站着不动。

从克隆到按下 F11:第一次跑通

先装好 miniconda(安装时勾选把 conda 加入 PATH)和 git,然后在终端里执行:

git clone https://gitcode.com/gh_mirrors/bo/botty cd botty conda env create environment.yml conda activate botty python src/main.py

不想从源码跑,也可以下载预编译的 release 包,在 botty 目录里直接启动main.exe——注意选 .rar 那个文件。

按 F11 之前,把 D2R 放到正确状态:游戏开着,停在选人界面,选中你要用的角色。bot 接管后会自动把角色带入你在配置里设定的难度和第三、四、五幕。

四个热键记一下:

热键作用
F9自动调整 D2R 图形与游戏设置
F10打开图形调试器
F11启动 / 恢复 botty
F12强制停止 botty

第一次跑,先按 F9 把设置写入,再按 F11。另外留意:第一场游戏 botty 会自动输入/nopickup,这是为了防止赶路时误捡垃圾,等"显示物品"生效后才开始捡。

用 F10 验证设置:最值的30秒

启动后按 F10 打开图形调试器,一个近乎全黑的窗口。开一局游戏走到第五幕,看两样东西:

  • 画面上出现蓝色圆圈、控制台打印出模板匹配分数,说明图形设置合格;
  • 往地上丢几种不同的物品,调试窗口会给出黑色底的名字标签,命中捡物清单的物品会带红色圆圈

你希望捡的物品,分数应该明显高于 0.9。分数偏低就回头检查亮度、分辨率和覆盖层,别急着怀疑代码。

这30秒能省掉后面几小时的"它为什么不工作"。

params.ini 里真正要动的三处

配置都在 config 目录,核心是 params.ini,每个参数带注释,README 里有完整参数表。第一次跑只需要动三处。

一、跑哪些线路[routes]下的顺序就是路线列表:

[routes] order=run_pindle, run_eldritch_shenk [general] difficulty=hell

randomize_runs=1可以打乱顺序。

二、build 和保命线[char]段:

[char] type=light_sorc casting_frames=10 chicken=0.35 take_health_potion=0.8

casting_frames按你的 FCR(施法帧率)查表填写,填错会导致技能释放节奏漂移,虚拟机上通常还要再加一两帧。chicken是回城线,血量低于该比例就出城;take_health_potion是喝药阈值。

三、攻击节奏atk_len_xxx系列控制每个 Boss 处攻击多久,默认值先照用,野蛮人打崔凡克和 Shenk 往往要拉到 8–12。

怕升级版本后要重填一遍:在 config 里建custom.ini,只写你要覆盖的值,新版本直接拷这一个文件就行。

; custom.ini - 只覆盖两个参数 [general] name=MyBot [routes] order=run_pindle, run_eldritch_shenk

捡物规则:收益由它决定

仓库里的 BNIP 是 Njaguar Item Parser(NIP)的扩展版,语法基本兼容 NIP。config 目录下的默认捡物文件里已经有符文、药水、Uber 钥匙、精华等成百上千条现成规则,照用即可。有四个点值得知道:

  • 把自己的.nip文件放进config/nip放进去之后默认清单即被停用,所以你要的规则都要写全。
  • BNIP 新增[allres]检查全抗性,比如[type] == amulet && [quality] == unique # [allres] == 30可以捡到马衣;[idname]直接匹配暗金/套装名,如[idname] == thestoneofjordan捡 SoJ,但这条要求物品已鉴定。
  • 毒伤不再换算,直接读原始值:[poisonmindam] == 5就是"附加5点毒伤"。
  • 规则前加@,捡到该物品时不发 Discord 通知,比如@[type] == ring

跑起来之后,最常踩的四个坑

线路要传送,角色却没有。run_nihlathakrun_arcanerun_diablo都依赖传送。走路角色记得把跳跃热键配好。

cs_town_visits目前是坏的。项目文档明确说先保持 0,别好奇去开。

出事了不知道原因。三个开关:info_screenshots=1(默认开)会在卡住、回城、超时、背包满时各存一张带时间戳的截图;pickit_screenshots=1记录每次地面捡物识别;max_consecutive_fails决定连续失败几次后停止开新游戏。截图目录涨得快,隔段时间清一次。

卡死不自动恢复。restart_d2r_when_stuck设为 1,botty 会在崩溃或状态无法恢复时尝试重启 D2R,默认是 0。

另外记住:每条线路的路径都是 assets/templates 里预录的模板节点,地图里那些编号的蓝点就是路径点。节点识别失败时,第一件事永远是开 F10 看分数,而不是改代码。

第一次24小时挂机前的检查单

先调三处配置:break_length_mmax_runtime_before_break_m设置"每跑 Y 分钟休息 X 分钟",适合长时间无人值守; hardcore 或高价值号把safer_routines=1,用速度换一层防御动作;配好 Discord webhook 到custom_message_hook,botty 会每discord_status_count局发一次状态,回城时也会提醒。日志太多就把logg_lvl从 debug 调低。

出门挂机前,按这个清单过一遍:

  1. 语言英语、720p 窗口、无 HDR 和覆盖层
  2. F9 已写入设置,F10 能看到蓝圈且关键模板分数高于 0.9
  3. type和各技能热键与角色实际绑定一致
  4. order里的线路都满足传送条件(或角色本来就能传送)
  5. 前两三局有人看着:能走完路线、能捡到东西、能回城存仓库

五条都过,就可以交给它自己跑了。之后你只需要盯 Discord 的状态消息和截图目录——哪里出了问题,截图已经替你存好了。

【免费下载链接】bottyD2R Pixel Bot项目地址: https://gitcode.com/gh_mirrors/bo/botty

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/22 14:21:58

Windows 11下编译支持CUDA的Ceres Solver 2.2.0完整指南

1. 项目概述与背景最近在做一个三维重建相关的项目,后端优化部分绕不开非线性最小二乘求解。Ceres Solver作为谷歌开源的利器,自然是首选。但项目里有些模块用了CUDA加速,想着要是Ceres也能用上GPU,那整体流程的瓶颈说不定就能打通…

作者头像 李华