视频游戏机器人?

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

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


回答:

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

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

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

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

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

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

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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