原帖链接:http://www.ali213.net/news/html/2017-6/299187.html
【游侠导读】下面是小编在近期浏览外网时看到了一篇国外媒体Gameradar的原创文章。其中介绍了那些我们熟悉的游戏,在运行时使用的精妙技术,算是从技术方面为我们打开了一扇认识游戏世界的大门。我们在这里做了翻译整理并分享给大家,希望可以与大家一起从一个全新的视角认识我们熟悉的游戏。

显然,游戏并不是魔术,但是如果你不知道游戏在表象背后的运行原理,可能它们看起来就像是变魔术。最近有一张非常火的动图,展示了《地平线:黎明时分》的游戏引擎是如何渲染场景的,(小编注:游戏使用的Decima引擎也将是小岛秀夫的《死亡搁浅》将要使用的引擎),从这张动图中,我们看出游戏在运行中其实只渲染玩家视野所见的场景。

对于很多人而言,这样的动态场景在初次看到时可能感到非常震撼。奇怪的是,相对于普通玩家对这种技术的兴趣,很多开发者似乎已对这种技术见怪不怪了。所以我们在这里为大家补充一些这方面非常有意思的“黑科技”知识,看这些技术是如何让游戏中的世界看起来非常绝妙的。
就让我们从开始的那张《地平线:黎明时时分》魔术般的渲染图开始吧。
Culling(剔除)
Culling(剔除)也就是削减,在游戏中其作用就是通过只渲染玩家看到的场景来减少游戏引擎的工作量。目前还没有一台PC或是主机可以一次性渲染《地平线:黎明时分》中的所有场景,所以这项技术就通过不再渲染游戏中玩家视角之外的大部分场景,来减少游戏机的工作量。Culling主要有两种类型:Frustum Culling(椎体剔除),即渲染视角中的所有场景;Occlusion Culling(遮挡剔除),则只渲染镜头内视角中可以直接看到的场景(被视角内物体遮挡的物体不渲染,更多的减少了机器的工作量)
下面的动图就展示了两种渲染的不同原理:

Level of Detail(细节层次)
另外一项游戏可以节省宝贵运行资源的原理是,只展示近处场景物体的细节。这种技术会在玩家接近物体过程中,逐步提升相应物体的细节表现层次。看看下面这些细节层次不同的3D渲染的兔子吧:

显然第一个是细节层次最为丰富的,最后一个则完全就像一个折纸。然而看看在一定距离下,以上这些物体呈现的样子吧:

其实这样看的话,最后一只兔子的效果可能给人在视觉上的感觉并没有那么差。这项技术和上面的Culling(剔除)类似,也是为了节省玩家游戏机的机能,以便更加有效的利用。

但是细节层次的处理也是非常讲究的,开发者需要尽量让玩家感觉不到这种细节层次的加强,但即使是大作,也会有一些时候在这方面没做好优化。
《巫师3》在细节层次渲染上的失误(远处的帆船突然出现,有些违和):
《巫师3》细节层次技术性BUG
Rays(射线)
Rays(射线)或是“Ray Casting(光线投射)”是游戏计算其场景中物体所在位置的重要方式。如果你之前听说过《美国末日》中的”Punch lasers“,其实那就是Rays(射线)。这项技术的名字也就解释了其原理:一个物体发射出射线(在一定的方向发射出很多射线)如果这些射线碰到任何物体,它们则会给出反馈。
