在线游戏中如何模仿玩家

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

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

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

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

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

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

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

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

还有其他的想法吗?

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


回答:

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

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

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

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中创建了一个多类分类项目。该项目可以对…

发表回复

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