发新话题
打印

给开发组,关于 “策略卡” 和 “多重判断”的 一点建议。

你这个问题需要的是加个hp最低的同伴卡

TOP

我想了下,现在按照你说的这样设置策略:

如果距离我6米内,有同伴的HP小于50%成立 多重

并且对我周围6米内,HP最低的我方        恢复术

应该是会对hp最低的同伴用,顺序反过来设置到是会出现你说的情况。你确认这样设置真的会对非同伴治疗的话那就是有BUG。

TOP

我仔细查了下程序,原因比较复杂,我简单说明下。

soc的策略,在游戏里表现出来分为“条件”和“行为”2部分,而实际在逻辑上分为“条件”、“目标”、“行为”3部分。我举2个例子来帮助理解这一点:
例子1:当我方有人HP<50%时,使用治疗术。
例子2:当我方有人HP<50%时,使用火球术。

在例子1中,条件:“当我方有人HP<50%时”,目标:“我方HP<50%的人”,行为:“使用治疗术”。
在例子2中,条件:“当我方有人HP<50%时”,目标:“最近的敌人”,行为:“使用火球术”。

可以看出,“目标”这一项是没有直接体现在游戏策略设置中的,而且系统根据设置的策略判断应该选择什么样的目标,这是为了简化玩家设置策略的复杂度。

如何根据玩家设置的策略,选择出一个符合玩家期望的目标,这是我们在策略系统开发中遇到的最大问题。尤其是在多重判定卡的问题上有很多可能出现的问题,最开始我们考虑多重判定卡按照每条策略的交集来选择目标,这时出现了例3的问题:
例子3:
当自身HP<50%时,并且
对HP最高的敌人,使用火球术。

如果按照交集处理,例子3的第一条策略的目标是“自己”,第二条策略的目标是“HP最高的敌人”,交集出来是空集,那么在2个条件都满足的情况下,只会对最近敌方目标使用火球术(这也是系统为了防止满足条件而不做出任何行动这种情况的默认处理:满足条件而找不到合适目标时对最近目标使用),但是显然设置这条策略的目的只是把第一条策略当作条件,而不想要把满足第一条策略的目标作为技能目标,这时候玩家就无法达到设置这条策略的目的。也就是说,如果按照交集处理,只要2个条件卡目标类型不一样(一个是敌方满足xx,一个是我方满足xx),出来的一定是空集,只会满足条件时对最近目标使用技能。

为了解决这个问题,我们把多重判定卡反过来处理,首先把周围所有我方敌方目标都加进列表,然后只会把“明确排除的目标”从列表里去除,最后从列表里选出合适的目标使用技能。在这里我用顶楼的例子来分析下:
例子4:
如果距离我6米内,有同伴的HP小于50%成立 多重
并且对我周围6米内,HP最低的我方        恢复术

比如楼主组了个5人队,5×5=25个角色,敌方Boss1个。
策略开始:列表里有25个我方+Boss1。
执行第一条:判断楼主5个同伴的HP,其中有1个<50%,其他4个>=50%,这4个被排除掉。
执行完第一条:列表里还有21个我方+Boss1。
执行第二条:对列表里所有我方目标循环,找到一个HP最低的,对他使用回复术,这时候就有可能把同伴以外的角色作为目标。

之所以会产生这种情况,是因为这样设置策略可以有2种理解:
理解1:
  条件:“HP<50%的同伴”并且“HP最低的我方”
  目标:“HP<50%的同伴”并且“HP最低的我方”
  行为:使用回复术
理解2:
  条件:“HP<50%的同伴”并且“HP最低的我方”
  目标:“HP最低的我方”
  行为:使用回复术
楼主是按照理解1来的,系统是按照理解2执行的(当然还排除了某些明确排除的目标),这时候看起来理解1是比较合理的,但是如果条件1稍微修改下:
例子5:
如果距离我6米内,有敌方的HP小于50%成立 多重
并且对我周围6米内,HP最低的我方        恢复术
把策略1的同伴换成敌方,这时候2种理解就变成:
理解1:
  条件:“HP<50%的敌方”并且“HP最低的我方”
  目标:“HP<50%的敌方”并且“HP最低的我方”
  行为:使用回复术
理解2:
  条件:“HP<50%的敌方”并且“HP最低的我方”
  目标:“HP最低的我方”
  行为:使用回复术
在这种情况下理解1的目标是空集,最终只会对最近目标使用回复术,这时候就反过来了,是理解2比较合理。

可以看出,正因为“目标”这个因素没有直接体现在策略设置中,所以会对复杂策略会有不同的解释,而系统不论怎样最终只能选择1种理解,不管系统选择的是理解1还是理解2,都会在某些情况下看起来合理而在另一些情况下看起来不合理。所以我觉得解决这个问题的比较简单的方法还是加个hp最低的同伴卡比较好。
本帖最近评分记录
  • 南木 积分Lv1 +10 米老板派我来的 2013-11-22 16:04
  • 黎明前的黑暗 积分Lv1 +2 可怕的认真。。。 2013-11-22 15:54
  • 愤怒的栗子 积分Lv1 +10 回复认真! 2013-11-22 15:49

TOP

你说的这个做法基本就是我们发现交集方法的问题后,第一个想到的做法。

当时给目标分了很多类型:自己、不包括自己的同伴、不包括同伴的友方、我方召唤物、Boss、Boss以外的敌人、死亡的友方、死亡的敌人。每一种类型自己取交集筛选,最后让技能根据自己的需要去选择合适的目标。

这东西当时做了好久,结果快做完遇到致命问题整个给砍掉改成现在的做法了,问题是时间久远,当时具体遇到什么问题我现在想不起来了。

TOP

发新话题
最近访问的版块