在线游戏中如何模仿玩家

我想编写一个应用程序,用于模仿在线游戏中的玩家。

关于游戏:它是一款策略游戏,你可以在其中:

  • 训练你的军队(你必须有足够的资源,然后点击一个单位,点击训练)
  • 建造建筑物(矿山、军械库、房屋等)
  • 攻击敌人(选择一个单位,选择一个敌人,点击攻击)
  • 在建筑物之间运输资源
  • 进行研究(经济、军事、科技等)

这是一个简化的列表,只是一个例子。最重要的是,如果你想进步,你必须做大量的点击操作…

我已经完成了应用程序的“导航”部分(我使用了 Watin 库 – http://watin.sourceforge.net/)。这意味着,我可以使用高级对象并操作它们,例如:

Soldiers soldiers = Navigator.GetAllSoldiers();soldiers.Move(someLocation);

现在我想迈出下一步 – 编写一种 AI,它可以模拟我的游戏风格。为此,我有两个想法(而且我都不喜欢它们):

  • 登录游戏,然后在循环中按照一堆 if 语句执行(检查是否有人在攻击我,检查是否可以建造东西,检查是否可以攻击某人,循环)
  • 设计一种脚本语言,并为其编写编译器。 这样我就可以编写简单的脚本并运行它们(Login(); CheckForAnAttack(); BuildSomething(); …)

还有其他的想法吗?

PS:有些人可能会认为这是作弊,而且它可能确实是,但我把它看作是一个学习项目,并且永远不会发布或转售。


回答:

如果策略不太复杂,那么一堆 if 语句是最好的选择。 但是,此解决方案的可扩展性不太好。

创建一个脚本语言(或者,现在人们所说的领域特定语言)并不能给你带来太多好处。 您不会让其他人创建 AI 代理吧? 您最好使用您的编程语言来完成此任务。

如果策略变得更加复杂,你可能需要查看贝叶斯信念网络或决策图。 这些方法擅长以结构化和显式的方式在不确定的环境中寻找最佳行动。 如果你用这些术语在谷歌上搜索,你会找到大量的信息和库可以使用。

Related Posts

L1-L2正则化的不同系数

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

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

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

f1_score metric in lightgbm

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

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

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

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

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

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

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

发表回复

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