大家好。我是一名程序员,但这是我第一次制作游戏。在战斗方面,这款游戏介于卡牌构建类Roguelike和日式角色扮演游戏之间。
我已经进入了实现敌方AI的阶段,需要一种分析技能以做出选择的方法。AI可以拥有"个性"——攻击型、防御型或状态型(由0到2之间的浮点数值控制)。我将技能分析分为两部分:静态和动态。在静态阶段,AI仅根据技能施加的效果(伤害、护盾、治疗、状态效果)对其进行分类——如果效果存在则在该类别中加1(如果是概率触发则加0.5)——然后将效果总和归一化为1。
例如:一个技能造成10点伤害,有20%概率额外造成5点伤害并施加"灼烧",还有10%概率对施法者造成5点伤害并对其施加"灼烧"。
在这种情况下,技能得分为:
攻击型:0.5
防御型:0
状态型:0.17
负面型:0.33
接下来,分析器需要计算绝对值,以便AI在分析阶段能选择最有效的可用技能。
以伤害为例:Mathf.Lerp(0.8f, 1.2f, Mathf.Sqrt(damage/maxDamage))——这里,我们将当前技能伤害与可用技能中最大伤害的比值映射到0.8到1.2的范围内,这样原始数值不会过度扭曲结果。
伤害和防御的逻辑很清晰:我们只需对技能数值求和(考虑随机性),然后在动态计算中进行归一化。
但如何处理状态效果,才能使攻击和防御不主导决策过程?状态效果没有严格的数值公式(整个系统相当灵活,基本上基于事件运作——回合开始、回合结束、造成伤害、治疗等)。我是否应该手动调整状态型技能的修正值?计算平均原始伤害或防御值,取其约30%再乘以层数?为每个状态层手动分配权重(原则上这在选择过程中会被归一化,因此权重可以相对于其他状态设置,而无需担心伤害技能数值——不过状态也可能为正面效果并计入防御计算,这意味着它们需要直接与护盾和治疗竞争)?
评论 (0)