视频游戏机器人?

我一直想知道,尤其是在它激励我从小开始编程之后,视频游戏机器人是如何工作的? 我确信有很多不同的方法,但是MMORPG的自动化呢? 甚至FPS类型的机器人呢?

我说的是玩家自制的自动化机器人。


回答:

要“挂机”一个游戏,你需要能够通过编程来做两件事:检测游戏中发生了什么,并向游戏提供输入。

检测游戏中发生的事情通常是两者中比较困难的。 以下是一些执行此操作的方法:

  • 屏幕抓取:此技术捕获屏幕上的图像并对其进行解析,以查找诸如敌人,玩家状态,道具,游戏消息,时钟等内容。 这往往是一种特别困难的方法。 OCR技术可用于处理文本,但是如果文本写在游戏世界之上(而不是在具有纯色背景的UI元素上),不断变化的背景会使得难以获得准确和一致的结果。 在屏幕上查找非文本对象可能更加困难,尤其是在3D世界中,因为单个对象可能存在于许多不同的位置和方向中。
  • 音频提示:在某些游戏中,动作和事件伴随着独特的声音效果。 可以通过监视游戏的音频输出并将其与关联的声音效果的录音进行匹配来检测这些事件。 一些游戏允许玩家为事件提供自己的声音效果,从而可以使用易于收听和过滤掉的声音效果。
  • 内存监控:如果对游戏的内部工作原理有很好的了解,则可以通过检查游戏的内存空间来监视游戏的状态。 某些用于控制台系统的作弊工具(例如Game Genie)使用此方法。 通过检测游戏更新的内存,可以检测游戏正在执行的操作。 有些游戏每次启动时都会随机化它们使用的内存位置,以试图破坏此漏洞。
  • 数据包分析:使用适当的驱动程序,您可以拦截游戏的数据包,因为它们被发送到您的网卡或从您的网卡检索(用于在线游戏)。 对这些数据包的分析可以揭示您的游戏客户端正在与服务器通信的内容,这通常围绕着玩家/敌人的行动。
  • 游戏脚本:某些游戏具有内置的脚本界面。 如果可用,这通常是最简单的方法,因为它是游戏软件旨在执行的操作(以前的方法通常都算作“黑客”)。 某些脚本必须在游戏中运行(通过控制台或通过插件系统),而某些脚本可以由通过已发布的API与游戏通信的外部程序运行。

将输入事件生成回游戏通常是比较容易的任务。 一些方法包括:

  • 内存“刺探”:类似于上面的内存监视部分,内存刺探是将数据直接写入游戏内存空间的行为。 这是Game Genie用于应用其作弊代码的方法。 鉴于现代游戏的复杂性,这是一项非常困难的任务,并且可能会导致整个游戏崩溃。
  • 输入模拟:可以生成“伪造的”键盘或鼠标信号,以代替直接的人工交互。 可以使用诸如AutoIt之类的软件工具来完成此操作。 也可以使用硬件黑客,例如连接到计算机的USB或PS/2端口并显示为键盘的设备,但是根据从计算机接收的信号(例如,通过串行端口)生成伪造的按键事件。 这些方法可能更难被游戏检测到。
  • 游戏脚本:如上所述,某些游戏提供了以编程方式控制它的内置方法,而利用这些工具通常是最简单(但可能不是最强大)的技术。

请注意,在游戏中运行“机器人”通常违反了游戏的使用条款,并可能导致您被暂停,禁止或更糟。 在某些司法管辖区,这可能会受到刑事处罚。 这是使用游戏内置脚本功能的另一个优点。 如果它被设计为游戏软件的一部分,那么游戏发行商很可能不会禁止您使用它。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注