游戏中有哪些看上去很简单,但实际上需要极高技术力或是极高成本的细节?

移动。

角色移动是大部分游戏的玩法基础,它看起来简单而且很容易被玩家忽略。

不过实际上,角色的移动涉及到动画、渲染、物理、同步等多项技术以及大量的美术工作,而且还经常会遇到一些设计上让人陷入两难的问题,想做好真的不容易。


首先简单说一下移动的基本原理,游戏世界与真实世界相同,也是一个三维的空间(2D游戏是二维空间),我们可以用x y z来表示一个角色的位置,那么角色移动就是按照一定方式在一定时间内修改角色的位置。

Jerish:游戏中的角色是如何“动”起来的?

假如我们控制的是一个人形的角色,那面对的第一个问题就是如何让角色走的真实?换句话说就是解决“滑步”,滑步产生的根本原因是——动画上的移动与其实际位置的移动不匹配。

因为我们一个角色的移动需要有两个系统共同维护,一个是角色的动画系统,另一个是隐藏在代码背后的位置计算系统(可以称为移动组件系统)。角色动画系统负责按照时间戳播放其动画,一般由美术通过三维建模软件制作(2D的比较简单,就是按帧替换图片)。将动画导入到游戏引擎中,就可以看到该角色会不停播放移动的动画,但是不会向前产生任何位移。

这时候如果把移动组件系统应用起来,每当玩家播放移动动画的时候计算其应该走的位移长度就可以实现我们看到的角色移动了。但是角色如果不是匀速移动也不是匀加速移动呢,我们的移动组件系统根本没法算(就算你代码写的再好也很难达到美术想要的效果),所以会尝试Rootmotion的解决方案,就是每一帧的位置交给美术处理,他们在做动画的时候把位移信息也写到动画里面,我们移动的时候读取美术的数据就好了。

Jerish:《Exploring in UE4》RootMotion详解【原理分析】

当然,考虑到工作量等问题,我们不能都用rootmotion解决。角色还有一些通用的但是需要特殊处理的状态,比如转弯、转身、突然停住等,显然转弯的时候玩家的身体会倾斜、转身时候我们的脚步应该逐渐踩过去,突然停住要有一个刹住脚步并恢复的效果(而不是直接滑过去),这些一般我们使用动画状态机配合blendspace可以解决大部分问题,同时也需要美术制作很多动画资源。仔细观察,你会发现很多游戏都没有处理,就是因为太麻烦。

所以,解决了上面的问题就结束了么?

还早着呢,我再给大家把其他需要解决的问题列一下。

1.碰撞

一个玩家动起来了,那如果遇到了障碍怎么办呢?如果撞到了另一个玩家,可以把人顶走么?玩家上楼梯是一级一级上还是平滑着上?玩家在多少度的斜坡上可以走呢?类似的问题数不胜数,很多都是游戏设计上的问题。这些问题大部分可以在物理引擎的支持下,通过射线检测等方式处理,但是也有一些不好处理的情况。

2.特殊模式

前面说到的只是角色行走,在游戏中设计者的思路是天马行空的,策划可能想让角色飞起来、游泳、吊单杆、爬梯子、开飞机、以及各种逼牛顿从棺材板出来的多段跳、轻功等,如何处理这些移动模式呢?这些东西随便拎出来一个就够程序和美术做一阵的。

3.特殊对象

我们控制的角色不一定是人形的角色,还可能是汽车、动物。

对于汽车,好处是我们基本不用考虑动画的适配问题,但是我们需要程序模拟出其移动的轨迹,这就必须要涉及到物理引擎的使用。

对于动物,我们需要解决一些骨骼的处理问题,由于人形角色在游戏中使用的比较广泛,相关的系统支持的都还算不错,但是由于动物的结构与人不同,所以我们需要特殊处理,这也就意味着人形的骨骼资源不能适配到动物上。如果你做了各种结构迥异的生物,那美术就要被累死了。

4.多个移动状态的衔接

前面提到了角色可能走、跑、唱、跳、飞、游等,当你从一个状态切换到另一个状态时应该如何衔接?走着走着突然被车撞飞(有点惨),是应该头着地还是屁股着地?是被撞的一瞬间就切换成飞出去的动画么?假如你往前翻越一个栅栏的时候被打了一枪,应该往前还是往后倒?翻墙的时候能翻越多高多厚的墙体?

有些时候我们可以开启角色的ragdoll,完全交给物理引擎去处理一些移动模拟。但是大部分情况,不可能完全交给物理引擎

5.移动同步

前面说了那么多,还只是针对单机游戏。如果你是网游,那么你的角色动起来的时候应该如何告诉其他客户端怎么动?如果延迟过大造成两个客户端的位置或者动画不一样怎么办?在很多游戏中,想解决移动同步是最难的,因为玩家的位置每一帧都可能在变化。

Jerish:《Exploring in UE4》移动组件详解[原理分析](2019.7.14更新)

6.其他细节

比如关卡这个地方能不能走?可以采用常见的空气墙处理

能不能两个人一起走?如果一个玩家站在那里,其他玩家过不去可能体验会很差,所以可能考虑调整碰撞体大小来让两个人可以并排通过。当然,这也涉及到关卡的设计优劣

走了一半穿模怎么办?调整动画或者碰撞体

其实角色移动不是简单的与某几个系统有关,可以说他涉及到了整个Gameplay的大部分设计逻辑,甚至在一些游戏中,我们认为他是游戏的玩法核心也不为过。

然而,很多时候,他显得那么自然以至于很多玩家都将其忽略了。

来源:知乎 www.zhihu.com

作者:Jerish

【知乎日报】千万用户的选择,做朋友圈里的新鲜事分享大牛。
点击下载

此问题还有 83 个回答,查看全部。
延伸阅读:
在游戏看过最美或最恢弘的镜头,过场等?

游戏和CG影视中有什么好玩儿又炫酷的后处理特效?