Unity: 机器学习 – 关卡解法

最近我一直在尝试机器学习,我想看看能否为我正在制作的游戏创建一个AI。这个AI应该能够帮你解开谜题。

目前游戏的运行机制如下。你有一个网格,里面有一些瓷砖,其中一些可以移动,有些则不能。你点击想要移动的瓷砖,然后将其拖动到某个方向。瓷砖会开始移动,有时还会移动玩家角色本身。最终目标是到达终点瓷砖。关卡示例解开关卡

自己玩游戏时:
当你选择一个瓷砖(通过点击完成),然后按住鼠标按钮,拖动到你希望瓷砖移动的方向。一旦瓷砖移动完毕,玩家对象将在同一方向移动一步。如果玩家位于你移动的瓷砖上,它会随瓷砖一起移动。然后再朝同一方向移动一步。

我想知道是否有可能(如果可以,如何)让机器学习在屏幕上定义一个位置,(可选地)点击然后定义一个移动方向?

请注意,我对机器学习还比较陌生!

为了进一步澄清:

  • 目前网格是静态的,为了让AI更简单。但之后的目标是随机生成关卡,看它能否解决。
  • 理论上,AI所需做的就是选择一个要移动的瓷砖(一个介于0和网格宽度之间的数字,以及高度的相同数字)。并定义一个移动方向。可以是(0, 1)、(0, -1)、(1, 0)或(-1, 0)。
  • 从网格上掉落会导致重置。
  • 到达网格的末端会导致胜利。
  • 向无效方向移动会导致重置。

回答:

根据你的要点,我建议你直接实现A*路径查找算法,并进行一些修改来模拟机器学习。A*路径查找算法确定从点a到点b的网格上最佳路径,通过巧妙的编程,你可以以合理的开销实现你想要的结果。

比如,拥有一个“不要触碰”的网格点列表(死亡陷阱等),当AI遇到这些点时列表会填充,这样在下一次迭代中它就知道不应该走那条路径。这是一个对你想法的非常基本的抽象,但非常可行。

显然我们不能为你编写代码,幸运的是,有很多关于A*路径查找的资源可以帮助你开始!

Related Posts

L1-L2正则化的不同系数

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

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

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

f1_score metric in lightgbm

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

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

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

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

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

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

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

发表回复

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