我正在尝试为使用Unreal引擎4的游戏编写自定义AI API。虽然我可以使用Python很好地读取进程内存,但我遇到了一个更大的问题-仅在相关时读取进程内存并发送仅在可能的情况下才在输入中-因此仅渲染一次帧。如果我要发送输入,则需要专门在帧上发送输入(游戏是格斗游戏)。
因此,我需要以与游戏本身相同的帧率更新自己的AI API。我的第一个想法是调查进程内存,找出每帧是否有更新的值-尽管始终有更新的值,但似乎在发生8帧后在内存中进行了更新。不幸的是,由于更新循环的更新速度不够快,因此8帧帧无法使AI正确执行输入。
我将更多地查看内存,但我想知道是否可以将程序附加到正在运行的进程中以查看窗口本身-如果它已被更新(呈现了新的内容),请更新AI本身的游戏状态。有没有办法可以实现?
答案 0 :(得分:0)
我们正在谈论的是基于虚幻引擎构建的游戏,您找不到每个帧都在更改的地址。
这使我担心您要在哪里/如何查找每帧更改的地址。也许以防万一,尝试使用内存扫描工具,例如CheatEngine。
UGameplayStatics::GetRealTimeSeconds(GetWorld());
如果您真的找不到改变每一帧的变量,那么我为您提供了一种解决方案,可通过执行以下操作来挂钩到在每帧过程中调用的函数:
这绝不是一个完整的解决方案,因为它涵盖了一个主观复杂的主题,您可能需要从其他来源那里学习。
[注意]
如果该游戏使用反作弊功能,则您可能会因为这种行为而被禁止使用,我建议您在尝试之前进行研究。对于使用以下建议可能引起的任何问题或损失,我不承担任何责任。
这里是困难的部分,需要进一步解释,这是您需要进行的学习练习。