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