新闻是有分量的

开发者谈游戏中的“障眼法”

2020-02-11 13:58 浏览量:

开发者谈游戏中的“障眼法”


电子游戏从上世纪诞生以来,已经从简陋粗糙的2D画面成长到如今以假乱真的3D效果,交互上也从原来几个简单按钮进化到各种VR体感类型的可穿戴设备,游戏玩法和复杂度上更是上升到一门足够深入探讨的科学与艺术。
 
 
虽然电子设备的性能每年都在不断攀升,但是CPU与内存等资源还是供不应求。为了提高效率或者节省资源,几乎所有游戏都会采取各种非常取巧的方式来达到某种表现效果,导致游戏实现的方式可能与玩家的认知大相径庭。这篇文章,就从开发者的角度给大家扒一扒这些“游戏障眼法”。
 
“障眼法”数不胜数,种类繁多,这里面大体上分为下面几类。
 
1.巧妙利用玩家视角
 
例子1:
 
cs中的角色,我们每次拿着一把冲锋枪奋勇杀敌的时候,屏幕中心都是这样的第一人称视角。
 
 
随着我们利用精湛的枪法不断地击杀敌人,心中的自己一定是这样的,
 
 
或者这样
 
 
再不济也就是这样了。
 
 
但其实真相却是......
 
这样
 
 
没错,其实你只有一双手和一把枪,早期的CS甚至连脚都看不到。
 
 
那你不禁要问,这是为什么???
 
答案当然是——为了省事。没错,就是为了省事,做一个完整的模型加动画可是要耗费不少时间和投入呢。反正玩家第一视角又看不到,做那么多不是浪费么?(老板:3D模型师一个月要不少工资呢,能省则省啊)
 
当然,还有第二个原因,就是第一人称视角下做一个完整的模型并应用进去效果其实是很差的,游戏中第一人称视角下最合适的比例与实际生活中是有差异的。假如我们做了一个完整的第三人称角色与换枪的动画,在第一视角下总会出现模型被遮挡甚至是穿模的问题,因此所有的第一人称动画与第三人称的动画就完全分开来做。
 
对于一些喜欢深究的同学,可能还有抱有一丝疑问,为什么我看到别的玩家就是正常的角色模型呢?
 
这涉及到网游的一些常识,你看到的确实是一个普通的第三人称的模型,但是这是在你的电脑上面,你的电脑上只有自己是一双手,其他的角色都是完整的,这是游戏开发者对网络游戏视觉同步的一种手段。
 
 
例子2:
 
关卡与场景范围。当我沉浸在《神秘海域》《巫师》《战神》等3A大作的时候,当我们眺望远处看着波澜壮阔的场景而感慨人生无常的时候,你一定不由得赞叹开发者竟能做出如此广袤又充满细节的场景。
 
 
但你一定没有想到,当你再次把摄像机从玩家的视角向远方移动的时候,所见之处的外面会是这个样子,到处是空荡荡的场景,远处白茫茫一片什么都没有。
 
 
虽然有点失望,但事实就是这样,为了性能我们不得不删点哪些玩家看不太到的东西。简单科普一点游戏开发常识,场景中的所有物体都是需要占用电脑内存空间的,同时场景里面的物物体越多,对渲染的压力也就越大。对于玩家看不到的场景,确实没有必要去做任何处理。
 
 
神秘海域里面,在火车战斗的那个关卡中,经常会把玩家的视角锁定在一个很小的密闭空间里,而这个时候很可能是场景在进行切换而并不想让你发现。
 
例子3:
 
2D游戏中的视觉误差。其实我们都知道2D游戏角色都是一张“纸片”,但是有的时候这个纸看起来好像还有点立体。比如下面这个版本的热血足球,里面的角色还真是一张张“立体的纸”。这种手法在游戏里面也是数不胜数。
 
 
 
其实宽泛一点说,电影、电视剧等也都是如此,而且相比游戏有过之而无不及,因为很多游戏中玩家都可以随意的调整视角,所见所听也就更为自由,而电影里面你只能看到“导演想让你看到的”场景。
 
2.隐藏与替换
 
游戏中常用的手段之二,当然大部分情况也是为了性能。
 
例子1:
 
超级玛丽中的草和云,玩了这么多年估计还没有多少玩家发现他们其实是一个图片,只不过是换了个颜色。早期的红白机里面,机器的性能与可利用的资源少得可怜,都是尽可能的利用好每一个像素的。
 
 
 
例子2:
 
巫师的分尸,我们看到像巫师这类的游戏有碎尸的效果。但是给模型按照刀砍的方向去分离又保证尸体的效果其实是比较困难的,同时如果各种尸体都是不同的模型对游戏性能造成一定影响,所以在玩家砍中的一瞬间会被替换成一个通用的血人模型。
 
例子3:
 
还有很多游戏里面的AOE的范围攻击(包括魔兽、dota等),很多游戏里面伤害监测并不是视觉上上的那个特效,而是隐藏在场景里面的一个物理碰撞盒。这里以英雄联盟女枪为例,当开启大招的时候,其实生成一个不可视的碰撞球,然后把这个球体不断的推向前方,这个过程中可能会扩大,达到锥形的效果。
 
 
例子4:
 
最后一个例子是FPS中的子弹,很多射击游戏的枪都是没有子弹的。你开枪的瞬间,立刻就用“射线检测”到是否打到对方,打到就立刻计算伤害,这个过程中不存在任何实体子弹。
 
在FPS游戏中,枪有两种,一种是hitcan射线枪,一种叫projectile实弹枪。如果你能看到子弹的飞行过程,同时有一定延迟和受到重力产生的向下偏移,那么这种情况下才是实弹枪,战地里面的枪就是projectile的。
 
3.其他技巧
 
例子1:
 
地震效果,基本上都是摄像机在震动,而不会去真正的改变场景中物体的位置。
 
例子2:
 
某些动态关卡,是整个场景在动,而玩家其实根本没有产生位移,我当年和同学做的第一款跑酷手游就是如此(下图)。我还记得腾讯的面试官问我为什么这样设计,我当时竟然没有回答出来???简单来说,可以节省关卡设计的复杂性,节省关卡占用的内存资源,对于与玩家相关的物理等处理也比较方便。
 
 
例子3:
 
游戏的水面真的只是个“水面”。游戏里面真正的水只是上面波动的那一层,下面其实什么都没有,你觉得潜入水中有水的效果其实只是加了个后处理(可以理解为滤镜)。
 
而水面看起来水表面看起来波光粼粼,其实可能只是给他贴了个特殊的2D图片(法线贴图),只不过这个图片自带阴影效果,造成视觉错觉。当然,想实现逼真的水面效果还需要非常多的技术与技巧,由于渲染这块涉及到的内容比较复杂,就不详细描述了。
 
 
总的来说,类似的“障眼法”还有很多很多,知乎上有一个问题就是专门讨论这个的,有兴趣的朋友可以进一步查看。