[控场AI]
· 4 分钟阅读· 2,121 字

用Rust写模拟器训练PPO智能体刷暗黑2重制版深渊

用Rust写模拟器训练PPO智能体刷暗黑2重制版深渊

Reddit网友用Rust无头模拟器训练PPO智能体自动刷D2R深渊,单CPU约20分钟。

一位Reddit网友分享了他的强化学习项目:用PPO算法训练智能体在《暗黑破坏神2:重制版》中自动刷“深渊”场景。训练不在游戏本体中进行,而是在作者用Rust手写的无头模拟器中完成,单CPU约20分钟,网络仅约47.5万参数。奖励函数按刷图效率设计:每秒扣1分、击杀和物品按价值加分、死亡扣1000分,并去掉了早期的清关奖励以对齐最终目标。作者还采用热启动,从旧版本网络继续训练以降低收敛成本。项目仅用于离线模拟,作者明确无在线使用计划,展示了自建模拟器、效率型奖励和热启动在游戏AI中的可复用经验。

一位Reddit网友最近分享了他的硬核RL项目:训练一个PPO(近端策略优化)智能体,在《暗黑破坏神2:重制版》(D2R)中自动刷“深渊”(The Pit)。训练不是直接在游戏里跑,而是在作者用Rust手写的无头模拟器中完成。单CPU训练约20分钟,智能体参数约47.5万。这个项目把强化学习落地到一个经典ARPG的具体场景,思路和工程取舍都挺有意思。

reddit source: I trained a PPO agent to farm the Pit in D2R

为什么选“深渊”作为训练场

深渊是D2R里经典的85级场景,怪物密集、掉落池好,是很多玩家刷装备的首选。对RL来说,这个场景的吸引力在于:目标明确(清怪、拿掉落、别死),回合长度适中,状态和动作空间比整张地图小得多。作者也提到,最初加过“清空关卡”的额外奖励,后来去掉了——这说明他更希望智能体直接对齐“刷图效率”这个最终目标,而不是被中间目标带偏。

从任务设计看,这个场景天然适合用“刷图速率”当奖励:单位时间内击杀和掉落越多、死亡越少,策略就越好。这种奖励对齐方式比人为设计的分层奖励更直接,也更容易迁移到其他刷图场景。

PPO(Proximal Policy Optimization,近端策略优化)是目前强化学习中最常用的策略梯度算法之一,由OpenAI在2017年提出。它的核心思想是在每次更新时限制新策略与旧策略的偏离程度(通过裁剪重要性采样比率),从而在样本效率和训练稳定性之间取得平衡。相比DQN等值函数方法,PPO直接优化策略,更适合连续或高维动作空间;相比TRPO,它实现更简单、计算更轻量。正因如此,PPO成为游戏AI、机器人控制等场景的默认基线算法,也是本例中47.5万参数小网络能在单CPU上20分钟收敛的关键前提。

在强化学习语境中,“无头模拟器”指不渲染图形界面、只保留游戏逻辑与状态转移的轻量运行环境。由于省去了图形渲染和用户交互开销,无头模拟器可以高速批量地产生训练样本,并支持并行化与时间加速。对于D2R这类闭源商业游戏,自建无头模拟器还能规避直接注入游戏进程带来的合规风险。

奖励设计:用经济账驱动策略

作者给出的奖励函数很干脆:每秒扣1分,击杀和物品按价值加分,死亡扣1000分。换句话说,智能体唯一要学的就是“在活着的前提下,尽快刷出更多价值”。

这种设计的巧妙之处在于把时间成本显式化。很多游戏AI会用“通关奖励”或“击杀数”当主信号,但刷图类玩法的核心其实是效率。每秒-1的惩罚会自然淘汰磨蹭、绕路、无效走位的策略;-1000的死亡惩罚则给出足够强的风险信号,避免智能体为了贪掉落而送命。作者提到早期有过关卡清理奖励但后来删掉,也侧面说明:中间奖励容易让策略“刷分”而不是“刷图”。

工程实现:Rust无头模拟器+热启动

训练环境不是游戏本体,而是作者用Rust写的无头模拟器。这一步很关键:D2R是闭源商业游戏,直接在游戏里跑RL既慢又涉及合规问题,而在自建模拟器里可以任意加速、批量采样。Rust带来的性能优势让单CPU 20分钟的训练成为可能。

另一个细节是“热启动”:作者没有从零训练,而是从一个为旧版本构建的网络继续训练。这在RL工程里很常见——复用已有策略能显著缩短收敛时间,也说明作者之前已经在这个方向上迭代过。网络规模约47.5万参数,对PPO来说属于轻量级,和“单CPU可训”的定位一致。

作者明确表示没有把方案用于在线的计划,只是觉得RL好玩。这个边界感值得肯定:离线模拟器训练不触碰游戏服务条款,也不会破坏其他玩家的体验。

“热启动”在强化学习工程中通常指用已有策略网络的权重初始化新任务的训练,而不是随机初始化。与之相对的是从零训练(cold start)。热启动的价值在于:已有网络往往已经学到了部分可复用的特征表示或行为模式(例如移动、攻击时机),新任务只需在此基础上微调,从而大幅减少所需样本和训练时间。本例中作者从为旧版本构建的网络继续训练,正是利用了D2R版本间场景和机制的相似性。需要注意的是,热启动也可能带来负迁移——若新旧任务差异过大,旧策略可能成为局部最优的起点,因此实践中常配合学习率调整或部分层冻结。

这个项目说明了什么

从单点看,这是一个玩家用RL复现“刷图”行为的趣味项目;从方法看,它展示了几个可复用的经验:用自建模拟器替代真实环境、用效率型奖励对齐最终目标、用热启动降低训练成本、用轻量网络匹配算力约束。这些经验对做游戏AI、自动化测试甚至机器人流程优化的开发者都有参考价值。

当然,模拟器和真实游戏之间必然存在差距(怪物AI、掉落随机性、网络延迟等),作者没有展开说明模拟精度,这也是这类项目常见的局限。但作为一次“RL好玩”的实践,它把从环境搭建到奖励设计的完整链路走通了,信息量足够。

常见问题

Q:这个智能体能在线上战网使用吗? A:作者明确表示没有在线使用的计划,训练完全在离线模拟器中进行。

Q:训练用了多少算力? A:单CPU约20分钟,从一个旧版本网络热启动,网络约47.5万参数。

Q:为什么去掉清关奖励? A:作者最初加过关卡清理奖励,后来删掉,让奖励更直接地反映刷图效率。

#PPO#强化学习#暗黑破坏神2重制版#D2R#Rust#游戏AI#无头模拟器
分享:

相关推荐