【问题标题】:How to imitate a player in an online game如何在网络游戏中模仿玩家
【发布时间】:2010-08-31 17:56:05
【问题描述】:

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

关于游戏:这是一种策略,您可以:

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

这是一个简化的列表,只是一个示例。主要的是,如果你想前进,你必须做很多点击......

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

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

现在我想进行下一步 - 编写一种 AI,它可以模拟我的游戏风格。为此,我有两个想法(我不喜欢其中任何一个):

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

还有其他想法吗?

PS:有些人可能会认为这是作弊,但我认为这是一个学习项目,它永远不会出版或转售。

【问题讨论】:

  • 当你完成那个项目后,你能写一个模仿 StackOverflow 上 Jon Skeet 的应用程序吗?
  • 为什么要设计自己的语言和编译器?只需实现 LUA 或类似的东西。
  • 根据您所谈论的游戏,可能存在允许这样做的现有工具。
  • @Adam Crossland 无耻投票钓鱼

标签: artificial-intelligence simulation


【解决方案1】:

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

制作一种脚本语言(或者,现在人们称之为领域特定的语言)不会给你带来太多好处。您不会让其他人创建 AI 代理,是吗?为此,您可以更好地使用您的编程语言。

如果策略涉及更多,您可能需要查看贝叶斯信念网络或决策图。它们擅长以结构化和明确的方式在不确定的环境中寻找最佳行动。如果您按照这些术语进行谷歌搜索,您会发现大量信息和库可供使用。

【讨论】:

    【解决方案2】:

    听起来你想要一个有限状态机。我已经使用它们在编码机器人方面取得了不同程度的成功。根据您正在玩的游戏,您最好编写一个可以学习的 AI,但听起来您的 AI 很简单,不需要那么复杂。
    不要制作新语言,只需制作一个可以从状态机调用的函数库。

    【讨论】:

      【解决方案3】:

      大多数策略游戏 AI 使用“分层”方法,与您已经描述的方式大致相同:定义相对独立的行动领域(即决定研究什么主要独立于寻路),然后创建一个 AI 层只处理那个域。然后有一个“顶级”人工智能层,指导中间层执行任务。

      每个中间层的工作方式(以及您的“一般”层的工作方式)都可以单独确定。您可能会为“研究什么”层(根据您的偏好)提出一些相当严格和直接的方法,但您可能需要为“常规”层(它可能指导和响应输入)提供更复杂的方法其他层)。

      【讨论】:

        【解决方案4】:

        你有游戏背后的源代码吗?如果不是这样,那将很难跟踪您(在您的情况下是您的计算机)正在与之对抗的每个 CPU 的位置。您必须开发某种可以做到这一点的插件,因为从它的声音来看,您正在处理某种类型的 RTS;这需要评估许多不同 CPU 之间的许多不同位置场景。

        如果你想模拟你的动作,你可以很容易地使用一些 WinAPI 来追踪你的鼠标。您还可以在播放时录制屏幕(这可能不会有太大帮助,但如果您有足够的决心,可能会有所帮助。)。

        说实话,对于你正在玩的游戏类型来说,你想要做的事情几乎是不可能的。你似乎还没有考虑到这一点。编程是一项有用的技能,但它不是魔法。

        在 MIT Battlecode 上查看一些内容(如果你能找到的话)。就这类事情的编程而言,这可能是你的小菜一碟。

        【讨论】:

          【解决方案5】:

          首先我必须指出,这个项目(仅用于教育目的)太大,一个人无法在合理的时间内完成。但是如果你想让 AI 模仿你的个人游戏风格,另一个可以想到的选择是神经网络:你经常玩游戏(真的很多)并记录你所做的所有动作并将这些数据提供给这样的网络,并且如果一切顺利,人工智能应该和你玩的差不多。但恐怕这只是您不喜欢的第三种想法,因为要使其完美,需要大量的时间。

          【讨论】:

          • Sheesh...神经网络当然不是实现这一目标的唯一方法。构建或训练 NN 并不像您想象的那么容易。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-01-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多