|
应用层有太多可以深入的地方了。结合我自己的开发经历,也结合其他网友的回帖,简单谈一下。
1. 人物动画。国产游戏的一大问题是人物动画生硬,缺少变化,动作单一。
这个问题除了美术的实力和投入不足之外,一大原因便是程序这边对动画的支持不够。
以刺客信条为例,这个游戏在人物动画上可以说是做到了极致,比如主角和NPC都可以做出不同速度的走,跑,跳跃,攀爬,格斗。。。等等各种充满了变化的动作。而动作和动作的衔接也十分流畅。除了预定的动作外,人物还可以对外界的任何刺激做出相应的反应。比如,在不同斜度的斜坡上奔跑是,人物的身体倾斜程度会不同。再比如,根据目标的远近和角度,主角会做出不同的动作来适应目标。
要做到这一点,除了传统的blend tree,还需要在程序端支持animation graph, layered animation, procedural animation, IK等高级的功能。甚至你还要自行开发一套动画编辑工具,从而让美术可以充分发挥他们的想象力。为了提高这个工具的迭代效率,它还必须能够和游戏引擎实时通讯,从而做到所见即所得。
开发和维护这一套系统,是需要一个专门的程序员+美术团队,以数年的时间来完成的。但这个团队里的程序员,其实严格来讲并不是引擎程序员,而是animation programmer和tool programmer。这里面的美术,其实是technical artist而不是一般意义上的美术师。
2. 人物AI。
AI这个话题可以很宽泛。比如path finding, path follow, behavior, state machine,这些其实都可以算是AI的内容。
以寻路为例,你做的寻路是基于路点的,还是基于navmesh的?如果是navmesh,你的系统支持动态navmesh吗?支持3d的navmesh吗?不同种类的单位,在寻路时用到的规则都不同。即使你完成了地面的寻路,还有水中的,空中的,甚至是太空中的寻路。光是寻路这一块,都够你研究几年的了。
你觉得AI没什么可做,那是因为你做的游戏类型不要求特别复杂的AI。
如果你是做开放世界的游戏,比如GTA,或者上古卷轴。你就知道AI的重要性以及复杂度了。因为在这些游戏里,NPC可以做出几乎和主角一模一样的行为。比如攻击,防御,攀爬,跳跃等。基本上,你的任务是把NPC的行为做的和真人一样真实可信。你知道这个任务的难度在哪里吗?
如果你是做RTS,那就更复杂了。首先,整个游戏世界里会有上千个单位,而这些并不是网游里的站桩机器人,因为他们的AI和行为比网游复杂的多。这些单位除了接受玩家的指令,还必须有自己的AI来自动完成任务。AI和AI之间还必须互相协作。比如你控制一队AI,让他们从一个地方,经过一个狭小的通道,到达另一个地方。这个群体寻路和群体path follow的技术含量是很高的。放眼全球的游戏开发界,能做出这个效果的公司不超过5家。
3. 物理
坦白讲,物理引擎本身不算是应用层。但如何使用市面上通行的物理引擎,在这之上做适合的封装,以达到游戏上层想要的效果,确实是一门学问。
比如在Uncharted 3中,主角可以在几辆高速行驶的卡车之上跳来跳去,同时做出各种复杂的动作以适应不同的车辆。在某一辆卡车上,主角还可以完成近身格斗,远程设计,攀爬等各种复杂的动作。这里面除了动画和游戏逻辑,物理碰撞的判定也是很重要的。
Uncharted 4的演示关卡,还出现了车辆拖行主角,在泥地上滑行的效果。这些都离不开物理的支持。也对游戏程序员有很高的要求。 |
|