我一直在精灵套装中制作游戏已有一段时间了。我添加了敌人,我想知道如何使用AI在地图上控制它们(就像在任何其他游戏中一样)。
我想要的是让敌人在TMX地图周围思考,根据随机数转向角落。我试图这样做,但遇到了很多问题。有谁知道任何可以帮助我的文章?我做了一些研究。 "寻路"和" A *"来了,但有关于如何做的知道解释或示例代码。任何帮助将不胜感激。
答案 0 :(得分:5)
欢迎来到SO。首先我要说的是,我目前正在寻找完全相同的东西。不幸的是,这些选择有点弱,至少到目前为止我发现了。
我确实找到了几个非常有趣的读物:
关于PacMan ghosts behavior的文章。简单但非常有效。
Amit’s Game Programming Information。关于制作游戏的更一般性的讨论。
Gamasutra。适用于所有游戏设计的优秀资源。
Designing AI Algorithms For Turn-Based Strategy Games。这篇Gamasutra文章非常有用,用简单的英语解释回合制AI。
所有这些都以他们自己的方式非常有用并让你思考。然而,我所遇到的任何事情都没有为一个坏人的逻辑提供一个简单的措辞(PacMan文章接近尾声)。在亚马逊上搜索游戏AI书籍会产生大量书籍,这些书籍非常昂贵并且更像是先进的量子理论。
我最终为我的游戏决定了一个简单的方法。我有我的坏人决定两种可能的状态。巡逻模式和攻击模式。
在巡逻模式中,他闲置几秒钟,向左或向右走,直到他撞到墙壁或其他物体,跑步(与行走相同的规则),上下爬梯,并偶尔跳跃。我使用arc4random()
来决定当前行动完成后他接下来要做什么。这提供了一种真正的随机行为,并使坏人完全无法预测。
攻击模式发生在玩家距离坏人的X距离内时。坏人现在有一套不同的行动可供选择。奔向玩家,挥动玩家的剑,跳起来等等。我再次使用随机函数使坏人无法预测。到目前为止的结果非常好。我的坏人表现得像是一个难以击败12岁孩子玩Halo的人。
坏人将继续战斗,直到他去世,玩家死亡或玩家逃跑并且不再处于攻击模式所需的X距离内。你当然可以通过限制跳跃,攻击间隔等来微调坏人的行为。
希望这会有所帮助,让你的创意充满活力。
答案 1 :(得分:2)
A *搜索算法here的维基百科页面包含一个伪代码示例。您真正需要的是了解算法的工作原理,然后您应该能够实现它。谷歌搜索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 *发挥作用的地方,确定通过世界找到通往目标的路径的方法。