Board logo

标题: 给开发组,关于 “策略卡” 和 “多重判断”的 一点建议。 [打印本页]

作者: 川禾    时间: 2013-11-22 10:40     标题: 给开发组,关于 “策略卡” 和 “多重判断”的 一点建议。

现在游戏的 多重策略卡 是多个条件的并且关系,但没有起到缩小判定范围的作用。

开发组 是否可以再调整下 多重卡片的作用,让多重卡片可以起到 缩小条件判定 范围,并确实可以让策略卡使用的技能有更加明确的指向性。

比如说我设置这样的策略:  希望本小队的治疗职业,优先治疗本队生命值最低的目标。
--------------------------------------
如果距离我6米内,有同伴的HP小于50%成立 多重

并且对我周围6米内,HP最低的我方        恢复术
--------------------------------------
以上策略,在组队副本的实际运行效果是,在我祭祀周围的本小队成员生命已经在50%以下了

但是,我的祭祀却治疗其他小队HP最低的成员。。。

显然,第一个策略卡没有把整个策略的施放目标的范围,指定为本小队成员。


希望开发组可以调整下策路卡,让多重卡 可以 缩小/锁定 范围,而后面的策略 只针对之前锁定的范围来选取目标。
作者: 川禾    时间: 2013-11-22 10:40

再比如说,我希望 可以通过多重策略实现

对10米内的 多个生命小于60%的坦克之中,生命最低的坦克 施放 治疗/群疗

-------------------------------------------------------------------
如果距离我10米内,以及守护者职业等级 大于2 的我方存在                多重

并且距离我10米内,已经HP小于60%的,包括自己在内的己方在内的角色存在  多重

对我周围10米内,HP最低的我方                                         恢复术
--------------------------------------------------------------------

以目前单个策略卡 的描述来看,这多重策略像是有很严重的语病。。。。

但是,如果策略卡 修改成 可以逐步的缩小条件判定的话,希望可以实现对坦克使用恢复术的效果。
作者: deviljz    时间: 2013-11-22 10:41

你这个问题需要的是加个hp最低的同伴卡
作者: 川禾    时间: 2013-11-22 10:41

不单单是 治疗技能,其他Buff技能,攻击性技能等等

希望 多重策略卡 可以发挥出更大的作用
作者: 川禾    时间: 2013-11-22 10:43

引用:
原帖由 deviljz 于 2013-11-22 10:41 发表
你这个问题需要的是加个hp最低的同伴卡
似乎没有这个策略卡吧?

我想与其 增加更多的 单个策略卡,为什么不调整下 多重卡的 作用呢?
作者: deviljz    时间: 2013-11-22 10:57

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

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

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

应该是会对hp最低的同伴用,顺序反过来设置到是会出现你说的情况。你确认这样设置真的会对非同伴治疗的话那就是有BUG。
作者: kooh    时间: 2013-11-22 12:41

如果距离我6米内,有同伴的HP小于50%成立 多重
并且对我周围6米内,HP最低的我方        恢复术

做个证明,是对我方的最低hp使用,不是对同伴的最低hp使用
现在的多重判定没有进一步的筛选作用,没有起交集,只起触发条件,没有选择目标

[ 本帖最后由 kooh 于 2013-11-22 12:50 编辑 ]
作者: kooh    时间: 2013-11-22 12:45

然后最高最低卡,不应该是单选一个的
比如最低防御, 同一个本里,很多怪都是相同的防御, 希望都能选上,然后可以使用攻击最高最低这类的多重,进一步筛选到特定的怪物, 如果没有这个多重,就默认的最近
作者: deviljz    时间: 2013-11-22 15:33

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

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最低的同伴卡比较好。
作者: kooh    时间: 2013-11-22 16:51

我方和敌方的问题确实没想到

多重的时候,玩家肯定是以最后一条为真正目标,也就是使用的技能目标
应该已技能使用的目标作为初始父集,策略卡中与初始父集没交集的都不应该做目标选择,只做条件判断
技能目标是我方的时候,关于敌方的策略卡都只做条件不做目标选择
技能目标是敌方的时候,关于我方的策略卡都只做条件不做目标选择
技能目标是自己的时候,目标已经肯定是自己,所有的策略卡都只做条件,不做目标选择
目前只发现这3种类型的技能目标

例子4:
1.如果距离我6米内,有同伴的HP小于50%成立 多重
2.周围6米内,HP最低的我方        恢复术


这样先判定恢复是对我方使用, 于是以我方的所有目标作为父集选择,标记目标为我方
然后判断第一条多重,同伴的HP小于50%成立
满足条件后,继续判断是否需要进行目标筛选,不满足就继续使用上一次的集合
因为是恢复和策略卡都是判定我方,满足条件,进行目标筛选,执行后,就剩下小于50%hp的同伴了
再继续最低hp判断,结果就是

  条件:“HP<50%的同伴”并且“HP最低的我方”
  目标:“HP<50%的同伴”并且“HP最低的我方”
  行为:使用恢复术


例子5:
如果距离我6米内,有敌方的HP小于50%成立 多重
并且对我周围6米内,HP最低的我方        恢复术

这样先判定恢复是对我方使用, 于是以我方的所有目标作为父集选择,标记目标为我方
然后判断第一条多重,敌方的HP小于50%成立
满足条件,继续判断是否目标筛选
因为是恢复是我方判定,策略卡是低防判定,不满足条件,不继续筛选
还是使用父集的我方全员进行下一条判断
再继续最低hp判断,结果就是在我方人堆里选择hp最低了



新例子1:
如果距离我6米内,有同伴的HP小于50%成立 多重
并且对我周围6米内,有敌方HP小于50%成立  恢复术

恢复是目标我方技能
第一条,        是我方条件,进行筛选,选择了符合条件的几个同伴
第二条,        是敌方条件,不继续筛选,使用上面筛选下来的结果作为技能目标

结果就是
条件 “同伴的HP小于50%成立”并且“有敌方HP小于50%成立”
目标 “同伴的HP小于50%成立”


新例子2:
如果距离我6米内,有同伴的HP小于50%成立 多重
并且对我周围6米内,有敌方HP小于50%成立  火球

第一条策略是选择我方,火球是敌方目标,不一致,不筛选目标
第二条是敌方判断,筛选目标
结果就是
条件 “同伴的HP小于50%成立”并且“有敌方HP小于50%成立”
目标 “有敌方HP小于50%成立”



新栗子3:
如果距离我6米内,有同伴的HP小于50%成立 多重
并且对我周围6米内,有敌方HP小于50%成立  自愈

自愈的目标固定为自己,其他的策略卡只为条件判断,不做目标筛选

结果就是
条件 “同伴的HP小于50%成立”并且“有敌方HP小于50%成立”
目标 自己
作者: deviljz    时间: 2013-11-22 17:53

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

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

这东西当时做了好久,结果快做完遇到致命问题整个给砍掉改成现在的做法了,问题是时间久远,当时具体遇到什么问题我现在想不起来了。
作者: 愤怒的栗子    时间: 2013-11-22 18:16

求一张敌方最高/最低战斗力判定卡
作者: kooh    时间: 2013-11-22 18:20

没那么复杂的,技能目标就3类情况
我方,敌方和固定自己,其中自己是特殊情况
其他的交给策略卡目标是敌方还是我方筛选就行了,这里也只有2类
其他的不包括自己,boss,boss以外,我方召唤物什么的,都是我方或者敌方的子集.直接递归求交集就行
作者: 川禾    时间: 2013-11-22 19:14

嗯 程序上的问题确实比较复杂。。。。。。

“目标”这个因素没有直接体现在策略设置中

这个解释很好,也是我想希望可以加强的地方

让策略卡使用的技能有更加明确的指向性。

而对于 多重 卡取交集的想法,完美实现确实有难度。

[ 本帖最后由 川禾 于 2013-11-22 19:16 编辑 ]
作者: BIP魂    时间: 2013-11-23 19:10

难得看见这么长的回复……




欢迎光临 XYZ-SOFT (http://bbs.xyz-soft.com/) Powered by Discuz! 6.0.0