我们制作了一个AI游戏机器人!
目录
- 简介
- 卡牌选择
- 战斗逻辑
- 神秘药水和遗物
- 优化路径选择
- 事件决策
- 特殊遗物处理
- 完美使用药剂
- 利用计数性遗物
- 结尾和未来展望
💡简介
大家好!欢迎来到我们的视频。我是Robert,我是Logan,我们是Aspire爱好者,我们共计玩过2000小时的《Slay the Spire》。最近,我们制作了一个名为"Bottled AI"的游戏机器人,并想与大家分享它的一次运行。如果你还不熟悉《Slay the Spire》,它是一款卡牌构筑类游戏,是一款策略游戏,但你必须根据不同的情况进行调整和反应。我们的机器人是使用通信模组编写的,特别感谢Forgotten Arbiters的支持。它是用Python编写的,仅适用于铁甲兵角色。但这个机器人最有趣的地方是没有作弊行为,它只能访问玩家可见的信息。让我们一起来看看我们的机器人如何愉快地发牌,并开始探讨更多细节。
🎴卡牌选择
首先,让我们谈谈卡牌选择。我们有几张卡牌可供选择,我们的机器人会追求一种特定的策略,即尽可能造成大量伤害。例如,"Perfected Strike"是一个非常适合造成大量伤害的卡牌,它在我们的卡牌优先级列表中位于顶部。如果机器人看到这张卡牌,它会毫不犹豫地抓牌。
优点:针对特定策略,引导强力卡牌的选择。
缺点:可能错过其他潜在有用的卡牌。
⚔️战斗逻辑
机器人战斗的逻辑相对复杂。它使用图遍历算法来计算出手牌能够进行的每一个合法动作,然后得出每一种动作的结果,如造成的伤害、受到的伤害、击败的敌人、遗物状态等。接下来,机器人通过比较这些结果,找到最佳的路径,并执行。然而,对于一些特殊的敌人,机器人需要进行定制逻辑处理。例如,在面对"Lagavulin"这个特定的敌人时,机器人不仅仅希望对其进行伤害,还会先施加一些状态效果。因此,我们为特定的敌人(如Lagavulin、Transient、Gremlin Knob等)编写了一些自定义处理程序,让机器人能够采取相应的策略。
🧪神秘药水和遗物
现在,让我们看看机器人如何处理药水。目前,我们的药水处理逻辑很简单:如果我们遇到Boss,就使用药水。尽管这不是理想的做法,因为药水的使用是复杂的,对于各种情况找到合适的时机使用会有些困难,所以我们只是在Boss战时使用药水。
另外,我们在选择遗物时有一个基于优先级的列表。我们知道我们的构筑需要大量能量使用,所以如果一个遗物提供了额外的能量,那我们就会优先选择。例如,我们选择了"Snecko Eye"这个遗物,它不仅是一个很好的遗物,而且对于"Bottled AI"来说尤其适用。因为"bottle"能够动态地查看卡牌的能量消耗并作出调整,所以当你作为玩家需要适应卡牌消耗能量变化的情况时,这对AI来说根本不是问题。
🧭优化路径选择
在《Slay the Spire》中,优化路径选择是一个相当复杂的问题。对于"Bottled AI",我们选择了一个相对简单的方法。我们将考虑两个因素:生存能力和奖励。其中,生存能力指的是通过某条路径可能承受的伤害以及能否在该路径上恢复生命值;而奖励则是指在该路径上能够获得多少有用的东西,如强力卡牌或有用的遗物。基于这两个因素,机器人选择最优的路径。这个选择会动态调整,如果我们在战斗中遇到困难,前方又有分岔路口,机器人会智能地选择更轻松的路径,以便恢复生命值,而不是选择挑战强化怪物。
🎲事件决策
《Slay the Spire》中有几十个事件,这些事件需要你做出决策,并产生一定的后果。在许多情况下,我们已经将明显的好选择进行了硬编码,不管是出于追求的策略还是因为机器人能够充分利用结果。但也有一些比较谨慎的选择,我们会仔细考虑,在这种情况下,我们会重新检查是否有足够的生命值来应对事件的后果。有时,通过事件获取卡牌或通过"诅咒之钥"的宝箱获得卡牌时,如果你在时间上走得足够快,卡牌不会进入你的牌组。这对于速通玩家来说是一个优势,而"Bottled AI"也会这样处理。
🔮特殊遗物处理
在战斗中,机器人非常擅长利用具有计数性效果的特殊遗物,比如"Pen Nib"和"Nunchaku"。这些遗物通常很难优化其使用,作为玩家,我们很容易忘记是第几次触发计数效果,要么浪费了额外的伤害,要么浪费了即将获得的能量。然而,"Bottled AI"完全明白这一点,因此它能够制定复杂的策略,以达到最佳效果,并且还会知道何时堆叠计数性遗物。
优点:能够充分利用具有计数性效果的特殊遗物,优化输出。
缺点:不能处理其他类型的遗物。
🧪完美使用药剂
值得一提的是,经过我们的完全优化的药剂处理程序,我们得到了"恶魔形态"这个药剂。恶魔形态是我们从一开始制定的策略的一部分。
🎢结尾和未来展望
经过这次战斗,我们赢得了胜利!谢谢大家观看。但是,这并不是我们唯一的一次胜利。在我们玩了30局游戏中,我们赢得了其中的5局,对此我们感到非常兴奋。在之后,我们可以做很多有趣的事情:开发新的策略,尝试着提升难度,尝试使用其他角色,甚至可以尝试使用机器学习算法。当然,我们也希望将这个项目开源,让更多的人能够使用。如果你有任何想了解的内容,或者对我们有任何建议,请在下方评论区留言,不论是YouTube视频上还是Reddit上。再次感谢大家的观看!
FAQ
🤔 问题:这个机器人是如何决策卡牌选择的?
回答:机器人根据特定的策略和优先级列表进行卡牌选择。
🤔 问题:是否存在某些情况下机器人会做出错误的决策?
回答:虽然"Bottled AI"经过了大量优化,但在特定情况下,机器人可能无法做出最佳决策。
🤔 问题:这个项目是否会开源?
回答:是的,我们计划将这个项目开源,让更多人能够使用并做出贡献。
🤔 问题:你们有没有计划尝试其他角色或更高等级?
回答:是的,我们计划在后续的开发中尝试其他角色以及提升难度等挑战。
资源