在精灵套件中为敌人提供 AI



我一直在制作精灵套件中的游戏。我添加了敌人,想知道如何使用AI在地图上控制他们(就像在任何其他游戏中一样)。

我想要的是让敌人在TMX地图周围徘徊,根据随机数转弯。我尝试这样做,但遇到了很多问题。有谁知道任何文章可以帮助我解决这个问题?我做了一些研究。"寻路"和"A*"出现,但知道如何做到这一点的解释或示例代码。任何帮助将不胜感激。

欢迎来到 SO。首先让我说,我目前也在寻找完全相同的东西。不幸的是,选择有点弱,至少到目前为止我发现的。

我确实发现了一些非常有趣的读物:

  1. 一篇关于吃豆人的鬼魂行为的文章。简单但非常有效。

  2. Amit 的游戏编程信息。关于制作游戏的更一般性的讨论。

  3. 伽玛经。游戏设计的所有优秀资源。

  4. 为回合制策略游戏设计 AI 算法。Gamasutra的一篇文章,在用简单的英语解释回合制AI时非常有用。

所有这些都以自己的方式非常有用,并让您思考。然而,我所遇到的任何东西都没有对坏人的逻辑进行简单的解释(吃豆人的文章很接近)。在亚马逊上搜索游戏AI书籍会产生一堆非常昂贵的书籍,读起来更像高级量子理论。

我最终决定为我的游戏选择一个简单的方法。我让我的坏人在 2 种可能的状态之间做出决定。巡逻模式和攻击模式。

在巡逻模式下,他闲置几秒钟,向左或向右走,直到撞到墙壁或其他物体,跑步(与行走相同的规则),爬上爬下梯子,偶尔跳跃。我用arc4random()来决定他当前操作完成后的下一步操作。这提供了一种真正的随机行为,并使坏人完全不可预测。

攻击模式发生在玩家距离坏人 X 距离内时。坏人现在有一组不同的操作可供选择。跑向玩家,向玩家挥剑,跳起来,等等。我再次使用随机函数使坏人变得不可预测。到目前为止,结果非常出色。我的坏人表现得像那些玩《光环》的12岁孩子之一。

坏人将继续战斗,直到他死亡,玩家死亡或玩家逃跑并且不再在攻击模式所需的X距离内。当然,您可以通过限制跳跃、攻击间隔时间等来微调坏人的行为。

希望这有所帮助,并让您的创意源源不断。

此处的 A* 搜索算法的维基百科页面包含一个伪代码示例。您真正需要的只是了解算法的工作原理,然后您应该能够实现它。谷歌搜索iOS和A*会弹出几个教程。

你有一个磁贴地图,所以在没有像这个伪代码这样的 A* 的情况下做你想做的事情应该相对容易。

// An Update function for your Enemy
function Update
    paths = GetAllPathways()
    if paths.length == 0
        TurnAround()
    else
        randomPath = paths.Random()
        TurnTowards(randomPath)
    endif
    MoveForward()
end function
function GetAllPathways()
    paths = new Array()
    if CanGoForward()
        paths.push(forward)
    end if
    if CanGoLeft()
        paths.push(left)
    end
    if CanGoRight()
        paths.push(right)
    end
    return paths
end function

像 A* 这样的算法实际上适用于更复杂的事情(而不是随机决策),其中您可以有一个复杂或动态的地图,并希望你的敌人动态地瞄准某物或玩家,这就是 A* 发挥作用的地方,确定一条穿越世界的方式,找到通往目标的路径。

最新更新