如何为 CS:GO 等游戏创建人工智能瞄准机器人?

人工智能 机器学习 游戏-ai 应用 参考请求
2021-11-17 04:48:16

如何为反恐精英全球攻势 (CS:GO)等游戏创建人工智能瞄准机器人?

我有一个初步的解决方案(或方法)。我们可以训练一个图像识别模型来识别敌人的头部(在玩家的可见区域,所以排除了玩家身后的不可见区域,避免被VAC轻易检测到)并将光标移动到敌人的位置敌人的头和火。

与使用演示相比,实时训练识别模型要好得多。您可能拥有的大多数可用演示可能是 32 刻,但在玩游戏时,它可以在 64 刻运行。

这是一个非常新鲜的想法,所以我实际上并没有考虑太多。暂时忽略 VAC 检测等事实。

有没有关于该主题的研究工作?解决此类问题的常见机器学习方法有哪些?

后来,这个想法可以扩展到一个完全自主的机器人,可以自己玩游戏,但一开始有点过分。

2个回答

游戏自动化

Aimbots 确实旨在为人类游戏玩家提供帮助,当游戏的复杂性在当前技术状态下逃脱完全控制论自治时。任何游戏玩家都有五个基本组件,无论是基于 DNA 的还是数字的。

  • 获取游戏的当前状态
  • 控制移动选项的执行
  • 与其他玩家互动
  • 游戏相关模型
  • 应用这些的执行引擎

CS:GO 瞄准机器人的模型如下。

  • 游戏玩家模型
  • 对方球队模型
  • 被协助的玩家模型
  • 该球员所在球队的型号
  • 对方球队模型
  • 游戏状态模型
  • 转移状态的法律博弈模型
  • 目标模型(赢得或保持最高分)
  • 涉及前三项的博弈策略模型

如果采取以下问题分析和系统方法,学习所有这些都不在当前深度学习策略的范围内,但也不超出 AI 的范围。

  • 假设与摩根斯坦和冯诺依曼在他们的博弈论后面章节中的假设相似,以数学方式以简约的方式处理博弈者的决策。
  • DSP、GPU、网络实现硬件、集群计算或其他一些人工网络硬件加速可用
  • 在 Prolog、DRools 或其他一些生产系统中编程的模型,然后由执行引擎与其他组件结合使用,例如深度学习网络、卷积处理、马尔可夫树、模糊逻辑,以及根据需要应用监督函数或启发式算法

这两项服务,(a) 提供建议和 (b) 次要任务的自动化,从软件工程的角度来看,可能确实代表了唾手可得的成果,但上面的问题分析和系统方法可能提供更多。

CS:GO 中的目标

CS:GO(反恐精英全球攻势)游戏似乎是从威斯特伐利亚地缘政治的角度编写的。这是典型的西方观点,多少忽略了不对称战争的真实本质的思维模式1这个答案将侧重于为现有的游戏模式创建一个瞄准机器人,而不是在这十年中对地缘政治平衡的现实模拟。

我们在在线资源中列出了目标类型,这些目标类型提供了游戏概述,再次被西方流行的不对称战争1观点缩小了真实性。

  • 终止对方球队的球员
  • 为此目的放置炸弹(仅限恐怖分子)
  • 保卫人质(仅限恐怖分子)
  • 防止炸弹伤亡(仅限反恐人员)
  • 解救人质(仅限反恐人员)

弹道控制

瞄准对手的身体或头部在图像识别与运动模型相结合的范围内。在军事应用中,航空设备必须通过空气摩擦来推动,并且推进需要像燃烧这样的大量放热反应。因此,所有目标都有一个热信号,可以在红外视频流中识别,从而为弹道武器绘制拦截路线。

CS:GO 的瞄准公式没有那么复杂,瞄准和射击可以完全自动化,只需要更少的软件机械。可以训练具有足够速度的 LSTM 在后续帧中识别头部并在移动时终止对手。对 LSTM 进行简单的网络搜索将为打算学习图像识别的新手提供大量资源。

一种歧义

能否满足第二个目标取决于图像识别上下文中术语“视角”的含义。玩家可以从眼睛位置以外的角度看东西吗?如果是这样,如果清楚地了解其含义,则可以调整此答案。

培训和重入学习

除非游戏对象和玩家的 3D 渲染被广角虚拟镜头扭曲并且轨迹和运动是弯曲的,否则无需训练人工神经网络来瞄准头部。如前所述,LSTM 可用于在多个帧中定位头部并推断对方球员的轨迹。

深度学习最有效的地方在于训练如何与玩家互动以提供最佳协助。此外,如果还有其他更离散的非定位技术,那些玩 CS:GO 的人可以记录他们的交互,并且可以处理这些记录以准备用作训练数据。

当然,诸如强化之类的重入学习策略对于游戏玩法很有用,特别是如果团队的组成发生变化并且玩家表现出不同的行为,在具有不同延迟和吞吐量的不同网络上执行不同的策略,以及与游戏客户端进行通信时通过不同的外围设备。

【DeepMind Lab 强化技术试验台】( https://github.com/deepmind/lab }

不仅仅是建议

通过适当的架构,可以为玩家提供的不仅仅是提示性策略。统计仪表板、炸弹植入前后的识别以及人质的识别应该是提供的目标机器人服务之一,这可能会建议一个新名称,例如目标机器人的obot或辅助机器人的asbot。

不确定目标机器人界面是否需要与仪表板或炸弹或人质标识符集成。有时独立的机器人为用户提供更灵活的安排。单个机器人始终可以使用相同的底层图像识别组件和模型。

开发此类系统的切入点

阅读有关上述概念的一些工作,并下载您能找到的用 Python 或 Java 演示它的代码,安装必要的东西,并熟练掌握上面讨论的组件以及相关理论。不要回避数学,因为成功需要熟练掌握反馈信号和梯度下降和反向传播等概念。

游戏中的强化

LSTM 头部定位

使用深度强化学习玩 Atari,Mnih 等人,2013

分阶段方法

建议采用以下阶段性研究和开发方法。

  • 学习理论
  • 在代码中实践理论
  • 开发图像识别前端
  • 开发库以控制虚拟玩家
  • 开发至少一种以上模型
  • 创建最简单的机器人来使用它
  • 从那里扩展自动化

脚注

[1] 在不对称的权力斗争中,每一方总是至少有两个派别,因为说教的合法性寻求分裂。统一实际上是不可能的。每个真正的团队通常都有一个更宗教和更世俗的派系,每个派系都有其立场和议程的经济、哲学和历史理由。此外,恐怖分子并不将公开引爆炸弹或扣留人质作为目标,而是将其作为手段,完全消除所有不完全符合他们将合法性视为唯一最终目标的观点。大多数人认为自杀或高风险轰炸是穷人的核武器,因此如果反恐人员及其盟友没有核打击能力,恐怖主义就缺乏最后手段的重要方面。反恐方面也缺少核打击的最后手段。通过掩盖不对称战争的这些特殊特征,CS:GO 可能会卖得更好,而这些特征被故意忽略了。从教育和反宣传的角度来看,添加这些功能可能会有一些好处。

有很多方法可以解决这个问题。一种开始的方法是尝试使用更接近强化学习的形式来描述问题。

  • 输出:

我记得,瞄准任何射击类游戏都需要移动鼠标。所以你的目标机器人的输出有两个维度。根据所需的精度,您可以将这两个维度视为连续的、范围有限的,或者如果您将每个像素视为一个整数,您也许可以离散化您的动作空间。(我假设应该将鼠标 XY 坐标输入到游戏中,而不是增量)

  • 输入:

你肯定需要屏幕信息。您可以将整个屏幕作为 CNN 的输入,类似于 Atari 的 DeepQLearning。

  • 奖励功能

这可能很棘手,因为您的奖励需要尽可能密集,但是,您从游戏中获得的唯一反馈是有人被枪杀。这可能是ebough,但这肯定会增加你的训练时间。

  • 训练数据/环境:

您的训练环境就是游戏本身。使用课程学习方法可能会使培训过程更有效率。

您也可以尝试模仿学习方法,因为我假设您很乐意提供专家训练示例(在这种情况下可能是游戏环境中的爆头)。

您可以在此处阅读有关如何将强化学习应用于游戏的更多信息Unity ML-Agents 库还包括样本跟踪问题及其解决方案。