【发布时间】:2014-08-04 21:06:14
【问题描述】:
所以,一些背景知识:我正在使用一个名为 cheat engine 的内存扫描仪来获取我正在尝试的非开源视频游戏中的游戏统计数据(例如 hp、mana、exp)的实时值制作一个机器人。
为了让我的机器人有效地使用这些信息,我需要及时将其从作弊引擎(或任何具有类似功能的内存扫描器)中获取到我的机器人代码中。
现在,一种明显的方法是将所有信息保存到一个文件中,然后在我的机器人代码中加载该文件,但由于这些数据需要大约每半秒左右更新一次,所以这不是真正的解决方案。
我真正需要的是一个非常方便的内存扫描器,它允许您将发现的信息用作某种编程语言(最好是 java、c 或 matlab)中的一组变量,或者是一种访问内存地址的方法以上述语言之一找到。
后一种选择应该是可行的,因为作弊引擎会给出内存地址、控制进程 ID 和数据类型。
【问题讨论】:
-
我认为 MATLAB 将是一个非常糟糕的选择。我不认为 MATLAB(或者 Java,但我不是 Java 专家)可以让您直接与内存交互。即使可以,在游戏和作弊引擎上运行 MATLAB 所产生的开销也会使其变得昂贵。我会在 C 中执行此操作。
-
如果数据不断移动,您几乎肯定会遇到竞争条件,即在扫描数据和使用结果之间移动。根据您想要对数据执行的具体操作,这可能会导致您的机器人出现暂时的不当行为,或者机器人和/或游戏完全崩溃......
-
@strictlyrude27 我想这么多;我只提到了 MATLAB,因为我已经在其中编写了大量的 AI 行为,而且我怀疑 java 可以触摸内存,因为它运行在 VM 上。我可能最终会在 c 中做一些事情。
-
@R.. 是的,幸运的是我知道数据应该在的范围内,所以我可以丢弃虚假查询。为了清楚起见,我只看几个整数的值,没有复杂的数据结构。此外,我不会尝试修改我获得的任何值。
-
为什么不使用内置在作弊引擎中的 lua 来做你想做的事? Lua 是一种非常酷的语言。您还没有表明您的 AI 与 MATLAB 的紧密程度。你需要matlab有什么原因吗?如果有,在 matlab 和 cheatengine 之间编写一个小的 ASCII 套接字程序,你就可以开始了。更奇特的方法是围绕 CheatEngine 编写一个 JNI/Java 接口,在 java 中运行它,然后在 Matlab 之外运行它。取决于你的需要。