我想制作一款基于游戏卡的战斗游戏。在这张牌中有特定属性可以增加玩家的hp /攻击/防御或攻击敌人以减少他的hp /攻击/防御
我正在尝试为这个游戏制作AI。 AI必须根据当前的情况预测选择哪张牌,如AI的hp /攻击/防御和Enemy的hp /攻击/防御。由于AI无法看到敌人的牌,因此无法预测未来的动作。
我搜索了像minmax这样的AI技术,但我认为minmax不合适,因为AI无法预测未来的任何动作。
我正在寻找一种非常灵活的技术,以便我以后可以添加各种各样的卡片。
你能为这种游戏推荐一种技巧吗? 谢谢
答案 0 :(得分:1)
这本身不是ActionScript 3主题,但我认为它很有趣。
首先,我建议为任天堂DS或同类游戏挑选2009年度七国集团星尘加速器世界锦标赛。
该游戏拥有相当先进的计算机人工智能系统,不仅可以达到预期的优势或劣势,还可以获得卡片优势和组合。如果您正在接受这样的挑战,我肯定会建议您进行必要的研究(另外,在玩视频游戏时,研究哪些人可以投诉?)
我建立AI的建议如下: 当计算机决定其移动时,创建一个Move对象数组。然后让它为每个可以看到的可能的Move创建一个新的Move对象。
对于每个移动物体,计算对手将拥有多少HP,他们将拥有多少张牌,有多少生物等等。
让计算机决定什么是最重要的(更多的伤害,更多的牌优势)并让它发挥作用。
更复杂的人工智能也会提前考虑几次转弯,也许会“看到”别人没有做过的动作。
答案 1 :(得分:1)
我建议你看看this game of Reversi我在几个星期前建立了Flash的乐趣。这有一个非常基本的AI实现,但基础知识可以适用于您的情况。
基本上,游戏的工作方式是在每次移动之后(玩家或CPU,所以我可以确定玩家是否与CPU所做的相比做出了正确的移动),我创建了每个可能的合法移动的向量。然后我决定哪个移动提供最高分数变化,并将其设置为最佳移动。但是,我还要检查一下这个移动是否会导致其他玩家进入角落(如果你从未玩过,那么抓住角落的玩家通常会获胜)。如果是这样,我告诉CPU避免移动并检查第二个最佳移动,依此类推。最终结果是一个实际上可以打架的CPU。
请记住,这只是一个下午的工作(从整个游戏,从糟糕的GUI到功能到AI),所以这是非常基本的,我可以做一些事情,比如通过支票运行未来可能的行动顺序也是如此。但有趣的是,我的动作(我明显基于AI)是CPU将近80%的时间。唯一一次不成立的时候就是当我像国际象棋一样玩游戏时,你的行动仅仅是为了让行动向前移动四个回合
对于您的游戏,您需要考虑大量变量,而不是像我一样的单点量表。我建议列出每个东西并对每个东西应用一个点值,这样你就可以对每个东西应用重要性值。我为缓存系统做了类似的事情,根据年龄,使用情况,大小等自动确定要保留的最重要文件。然后,您可以查看CPU手中的每张卡,计算每张卡的价值并播放该卡(当然,假设这样做是合法的)。
一旦你搞清楚了,你就可以看看每一个动作在下一回合可以做什么(比如每次动作的“伤害”值)。一旦完成,您可以添加功能,让CPU进行战略性移动,使其能够使用功能更强大的卡或执行“完成”移动,或者最终有效。
然而,再次,将它保持在一个简单的基于点的系统并继续从那里开始。你需要一些你可以进行物理比较的东西,所以坚持使用基于点的系统就可以做到这一点。
我为这个答案的长度道歉,但我希望它在某种程度上有所帮助。