AG初步整合完毕

花了几天时间,算是把AG框架整合进来了,坑不算太多,应该整合的问题都不太大。


一直以来遇到的最大问题在于:Cry的Animation Set似乎是个只读的概念,这样直观上看,很难做到让一个AG打遍全职业、全技能无敌手。

举个例子,无论你游戏里有多少个职业,都一定有站立和跑这两个动作,这个其实在CE里也很好办,如果是不同骨架不同职业的话,一般来说你会直接切换一个CDF,所以没有问题,每个CDF下,都有站立和跑就可以了。

但是,如果游戏的设计是那种一个骨架就有很多职业呢?每个职业就再弄出去一个CDF?太浪费了。

此外,如果牵扯到技能就更麻烦了,一个职业的技能就有可能有很多很多,但是在AG里,难道要把所有这些技能都表述出来?那显然是不可能的。


AG里有个叫Variation Input的概念,活用这个,就可以让你做到所有职业、所有技能的动作只用少数节点就可以描述。例如把职业和技能各做成一个Variation Input,外界根据职业切换,切换不同的Variation名称,AG里就会自动根据这个名称去找到对应的动画。

但是要注意有个小的限制:Variation Input的切换不会直接引发节点切换,这个很好理解,它毕竟跟控制State切换的Input不是一个层面的东西。

在下对AG的机制研究还不能算精通,目前的解决方案是手动此时切出此节点,再切回来,手动触发State切换的这个过程,虽然比较土,但是试过很好用。



其它的一些小贴士:


1、CE AG的主要调用过程都是写在引擎上层的,或者说游戏组织层次的(CryAction),所以里面有很多跟位移、物理相关的东西混进去了。整合CE之前最好好好评估一下,CE自己这套上层改一改能不能用,真要动,就大胆地研究和修改AG的代码吧……


2、基本上,如果对位移没有太多特殊要求,可以考虑直接调用Animated Character的Add Movement。如果有要求,可以直接屏蔽掉AC中控制节点移动的代码,否则可能会跟您上层的移动控制代码产生冲突。不过要注意AC里那一大堆位移和动画控制的参数,一不小心的话,Entity本身跑了,动画还留在原地。


3、AG本身的调试功能还是比较强大的,ag_debug + t_scale基本上足够解决大多数问题了,如果有自己新添加的功能和输入,可以选择扩展一些调试指令来辅助调试。


4、AG可以通过注册Proxy或者提供手动Set的方式来专门控制当前节点切换时的Loop、混合时间等各种参数。


5、如果自己在AG里扩展了不少Input什么的,最好也扩展一下编辑器的调试功能或者LUA,让AG在编辑器所见即所得,总比在游戏里调试AG要好很多。




应该差不多就是这样了,本身已经很成熟的概念,不会有太多问题,再怎么说,这肯定比大表要好很多了。




你可能感兴趣的:(游戏,animation,cryengine,CE3,CryEngine3)