AI为最终的幻想战术
我正在实施基于最小幻想战术的基于小型网格的回合制策略。
你对我如何能够接近目标选择,运动和技能选择过程有什么想法吗?
我正在考虑让决定断开,但所有这三项决定在很大程度上是耦合的。 (例如,除非我知道我要攻击谁,以及我将使用的技能有多大范围,否则我无法决定在哪里移动,反之亦然,我不能决定攻击谁,除非我知道它有多少转数将带我达到每个目标)
我想走向一个统一的系统,但是尝试使用像杀戮地带1 AI一样的潜在实地研究的事情让我陷入了局部最大化。
===更新1
我目前正在尝试使用潜在字段/影响图来生成我作出决定的数据。
我不知道如何处理拥有许多技能和技能的人,这些技能不会造成伤害,而是缓冲/减益或改变世界。
有人在其他地方建议使用蒙特卡罗树搜索,目前在Go游戏中使用。
我相信我的演员将使用的空间并不适合它,因为许多动作在游戏中并不会导致一个可以攻击和影响世界的位置(我的世界比最终的幻想战术更大)
在最终的幻想战术中,它可能会被成功应用,尽管分支因素比9x9 Go要大得多(据我所知)
===
在此先感谢,Xtapodi。
ps.1 - 一个问题是,要准确地知道我需要多远才能找到敌人,因为尽管敌人已经靠近了,但不可逾越的悬崖可能会将我们分开,需要四圈才能到达。 或者更糟糕的是,一个单位阻止了让我们说一座桥的方式,所以实际上没有办法联系到他。
我使用的一种方法是做一个双通系统。
首先,找出你的单位可以去的地方。 使用A *或任何标记地形来查看单位可以移动多远。
一旦你了解了这一点,你就可以通过你的可用战术(近战攻击,治疗友好单位,无论如何),并为战术的所有可用用途分配一个健身功能。 如果你通过标记的地形,你可以很快确定你的可能战术空间。
这给你一个可用的战术和他们的健身功能列表每一步。 选择最好的一个或从顶部随机化。 如果没有任何可用的策略,则重复标记地形进行两个动作的过程,依此类推。
我的意思是健身功能是决定在某个单位或地点执行战术的“价值”。 例如,你的“治疗一个友军单位”的战术决策阶段可能贯穿所有友军单位。 如果一个友方单位在范围之内(即,可以从你的单位可以到达的位置到达),将其添加到可能的战术列表中并给予其等于例如100 *(1.0 - 单位健康)的适合等级,其中单位生命值范围从0到1.因此,治疗一个角色只剩下10%的生命值将会是90点,而一个单位只下降5%只会值5,而单位甚至不会考虑修复一个完好无损单元。 特殊单位(即“保护老板”场景单位需要保留胜利条件)可以给予更高的基数,以便他们受到友军单位的更多关注。
类似的,你的“近战攻击”决定阶段将穿过所有可到达的敌方单位,计算可能的伤害,并将其与单位的健康状况进行比较。 给每个单位一个“可取性”来进行攻击,并将其乘以剩余生命百分比,并且你有一个非常详细的适应度函数,在你可以的时候有利于消除单位,但仍然追求高价值目标。
使用这样的过程,你会得到一个选项列表,例如“移动到位置A和治疗友方单位B:50点”,“移动到位置C并攻击敌方单位D:15点”等。突然,它是真的很容易选择一种策略。
进一步的细节可以通过将策略的适应度乘以为实现它而必须采取的路径的适应度来添加。 例如,如果你为了治疗一个友方单位而需要移动到的地方会使你处于严重危险中(例如,站在熔岩空间或某物上),那么可以通过将该策略的适用性乘以.2左右,以便该单位可能仍然会考虑它,但前提是它非常重要。 所有这一切都需要编写一个算法来评估给定位置的适应性,并且可以像预先计算的“地形可取性”数字一样简单,或像维护敌方单位的“威胁图”一样复杂。
当然,困难的部分是找到正确的措施来使发动机更加智能。 但这是您的系统调整的有趣部分。
如果发生战斗的地形是预先确定的或者不是太宽,那么在FPS中有一篇关于地形推理的文章,它可以用作回合制游戏的基础。
总之,您可以为地图的每个单元格预先计算一组值,例如适合在给定方向拍摄,保护,可视性等等。 AI可以使用这些值来选择正确的操作。 例如,战斗机会尽可能快地走向对方,如果可以的话,使用防护,同时小偷会采取尽可能低的从对方方向的可视性,从侧面或后方进攻的目标。
如果地形是随机的和/或太宽的话,但预计算可能会很长时间才有用。
关于纪尧姆
一个很好的问题是答案可以遍布整个地方。 就我个人而言,我对此没有太多经验,但我会围绕概念设定一个策略而不是距离。
您将为每个NPC创建一个状态机。 它会预测一个角色通过某些设置进行攻击。
例如,NPC会被标记为攻击力最弱或攻击力最强或受伤最严重。 然后,我会尝试将它们定位,以便它们可以在那里损坏目标。
如果你也有治疗者,你可以为治疗者目标做相同的事情。
目标的变化也是这个系统的重要组成部分。 所以你会想考虑一下。 一个简单的版本是重新评估变化的目标给定的百分比的回合。
最后,我会随机添加到系统中。 例如,一个角色可以设置如下
攻击力最弱.25攻击力最强.50攻击力最强.25
更改目标.1
何时该受到攻击。 您从0-1生成一个随机数。 如果它位于你的下方,则更改目标,通过生成另一个随机数来指定要攻击的目标。
通过增加攻击模式百分比,您可以开始将距离计入系统。 例如,如果它需要3回合攻击受伤最严重的人。 通过将该值除以3并将差异分配给其他两种可能性来降低目标的百分比。
链接地址: http://www.djcxy.com/p/66563.html