我对FPS(第一人称射击游戏)游戏如何让机器人工作感兴趣。这是我目前所知道的:
为了使目标机器人工作,它需要能够找到敌方玩家的位置,然后发送适当的击键。无论如何编辑游戏文件,或读取其系统内存。会导致游戏反作弊系统被触发。
理论上,您可以在进入/离开本地网络时尝试捕获数据包。然后使用TCP将它们重建为原始数据。直接与网卡通信,捕获数据包,重建原始数据,然后找到有用的信息(玩家坐标等)并不容易。
另一种方法是采用多个屏幕截图,或直接从图形卡中收集帧并进行分析。
周围有各种各样的算法,我看过的主要主要产品之一是OpenCV https://opencv.org。我还看了一下这个stackoverflow问题Finding a picture in a picture with java?。
但我不知道如何将其应用于FPS游戏,以检测敌人的位置。因为: 1.敌方玩家颜色变化。根据您玩的地图/团队,它们看起来会有很大差异。许多玩家可以自定义角色外观,例如添加帽子或更换衣服。这意味着没有共同的图案/颜色或所有敌人的外观。 敌人的规模不断变化。接近的敌人看起来与地图另一侧的敌人不同。 3.即使形状发生变化,敌人也会在那里移动手臂和腿部。然后你也遇到了地图隐藏部分敌人的问题。例如,如果站在汽车后面,你只能看到身体的一部分。
所有这些都说明了,任何可能有用的想法或理论都值得赞赏。
答案 0 :(得分:0)
在阅读了关于SO的其他一些问题之后好了how do aim bots in fps games work?我现在有了更好的理解。以为我会分享我找到的东西。
因此有3种主要类型的目标机器人。 Pixel basted aimbot - 从显卡获取屏幕截图或获取帧,然后使用图像识别来检测敌方玩家的位置。很难被游戏检测到,但处理所有这些图像使用了大量的系统资源。
内存劫持 - 存储在内存中的是每个玩家的XYZ位置,扫描游戏内存位置。可以使用DLL注入或通过创建内存泄漏来访问内存。游戏易于检测,使用的系统资源很少。
中间人攻击 - 数据包嗅探器用于在数据包通过网络时捕获数据包。扫描每个数据包以查找玩家位置。几乎不可能通过游戏检测到,使用更多的系统资源然后记忆劫持。