不是吧,就连游戏的“3D画面”也可以是假的?

当我们玩一款游戏时,首先第一眼可以看到的就是游戏的画质。而除了独立游戏之外,现在大部分的游戏都是以3D为主,如今的3D游戏画面也越来越逼真,更高的画质也就成了大部分玩家与游戏厂商们的追求。但是在很久之前,绝大部分的游戏都还只有2D,连3D的基本概念都没有,只有少数稀有的游戏属于3D作品。不过因为当时技术限制的关系,那些3D游戏并没什么好成果,除了画面糟糕之外,效能也是一等一的差。

另外也由于硬件不够强力,家用机基本不支持3D,所以3D游戏一直是一块未被开发的领域。毕竟当时人们都在玩家用机,在PC上开发3D游戏实在是没什么赚头,所以没什么厂商想参一脚。直到1992年,ID software运用前所未见的图学技术带来了《德军总部3D》以及之后的《毁灭战士3D》,游戏业才算正式进入了所谓的3D领域。也从这时开始,PC拥有了与家用机的一战之力。

在3D游戏真正普及之前,还有一个名为“伪3D”的技术,而这次所讲的内容也就是这个“伪3D”。但是现在真正的3D引擎满街跑,这技术早就没人用了,就当看个冷知识或兴趣吧。

01光线投射演算

要讲伪3D,就要先讲ID software那款经典的《德军总部3D》。

《德军总部3D》的游戏画面看起来是这样子的:

你会认为他是3D的对吧? 他有墙壁、移动有前后,这看起来就是3D啊?但这其实是游戏在骗你,他并不是一款3D游戏,而是一款2D的上视角射击游戏。

怎么说呢? 要知道,那时3D技术简直弱爆了,要像《德军总部3D》这么流畅的移动根本是不可能的任务,所以这绝对不会是真正的3D技术。那若要做到3D,当然只能用2D的逻辑走邪魔歪道来骗你。

其实就像2D RPG,虽然视觉跟系统上看起来好像有高低差,但真的空间概念终究只有X轴与Y轴,那所谓的高低差只是系统上不让你过去的障碍物而已。

(这类2D RPG虽然有陡坡之类的让你看起来好像有高低差。但实际上那只是在画面上的X、Y轴位置不同而已,并不是真正多一Z轴有所谓的高度)

而这个“骗人”的技术就是RayCasting(光线投射演算法),其实RayCasting很早年就有了,但一直到了卡马克手中开发优化,才正式被运用进了游戏中。

RayCasting概念很简单。就是从玩家的前方射出一条射线顺时针扫描一遍,然后把扫描到的墙壁跟敌人运用演算法画在屏幕上。远一点就画小一点,近一点就画大一点,这就形成了一个完全不用3D模型,只靠图片的大小跟位置的伪3D空间。

(游戏系统运算完全是2D「右侧」,而画面呈现则是用演算法让你看起来像3D「左侧」)

这让游戏分成了两个部分,一个是游戏系统、另一个则是画面。任何子弹、敌人、碰撞都只是用2D运算(右侧)。而画面则透过另一个演算法呈现,两者其实不相干。故在玩《德军总部3D》时,其实就是在玩2D上视角的射击游戏。

但这种算法有硬伤,因为RayCasting只有换算在画面上的大小和位置,故墙壁都是等高的,且地面也只能是平坦的,并无法有高低变化,更不可能有楼层之分。另外最重要的一点就是,由于无时无刻都在射线扫描,故这个技术非常非常耗效能,《德军总部3D》就已经很极限了。

而卡马克在仅仅一年之后,就研发出新的技术超越了极限……

02二元空间分割

要讲这技术,则必须说到《毁灭战士3D》。

《毁灭战士3D》的画面是这样子的:

《毁灭战士3D》的画面比德军总部3D还要丰富,有光影变化、有高低差、有斜面,甚至还有楼梯。这肯定是3D吧? 这怎么看都是3D的啊!你又被卡马克骗了,他依然还是一款2D的作品,他还是没有用到任何3D该有的玩意儿,只是这次他骗你骗得更凶、更夸张。

而这个骗的更凶的技术就叫做:二元空间分割。他比前作德军总部3D的RayCasting更加地有效率、弹性及变化性。并且这个技术改变了从此之后的游戏跟电脑技术界。

二元空间分割技术比射线要复杂一些。当你设计毁灭战士地图的时候,你可以给每个部份设定“高度”参数,然后引擎会自动把地图不断分割直到引擎能接受的大小,再用二叉树的方式记录。

毁灭战士引擎把一张2D的地图运用切割的方式切成小块小块的区域。

然后把这些切碎的区块资料用二叉树的方式连接起来,形成一个巨大的二叉树。

之后,要呈现在画面上时,二叉树先找到玩家所在的区块和面向,然后将玩家面向的区域从二叉树中有相连的区域左到右开始画。一块一块的将玩家视野中会看到的部份画出来。

趟若这块地图被分割成以上细块,玩家站在1的位置,系统就用二叉树找到玩家的区域节点,然后照顺序将相邻的节点从左至右一一画出。

至于为什么这样行得通,这里面的技术层面就比较复杂,我就不解释了。

这技术就直接海放《德军总部》了,德军总部受限于他的RayCasting。墙壁只是2D地图上的Pixel,二手游戏账号卖号平台地图这处理方式无法接受不同的数值,所以他的墙只能是等高的。而且因为RayCasting很耗效能,在运算上无法承受除了正方形以外的形状,故《德军总部》的墙面都只能是正方形。

但这个二元分割技术不再运用RayCasting,所以他有更多空间可以发挥,墙面不再是方形、游戏也有高地差。因为他是一块一块处理的,地图就能有不同的天花板和地板等等……直接让画面放飞自我。

但还是一样,尽管画面再怎么像3D,他依然不是3D。你在视觉上看到的高低差,只是平面地图上每块纪录的“高度”参数。他用二元运算方式先将看到的区块画出来,然后透过区块上记录的“高度”参数来决定在屏幕上要画多高,而这就模拟出了高低差。《毁灭战士3D》的地图运算还是使用2D的逻辑,所以他的地图设计依然是平面的。因此在《毁灭战士》的地图中,你看不到任何的楼中楼,因为他的地图就只是一张平面图而已,平面图是无法画出楼中楼的。

每块区域都有自己的“高度”参数,透过这个参数来决定他要在画面上画多高。

但对于电脑来说,他实际上处理的则是这张2D平面图。

而这也是为什么原始的《毁灭战士3D》无法往上或往下看的原因,并不是办不到,而是因2D平面无法正常模拟向上看与向下看,所以若你往上或往下看,会因为他的2D运算导致画面拉扯而看起来非常诡异,故Id software不让玩家这么做。

不过他厉害的一点是,因为他在地图和敌人上加入了“高度”参数,也就模拟出了第3个轴向,因此地板和敌人会真的上升和下降。游戏的攻击判断也会受到高度影响。在PVP时子弹是会飞越一个人头上的,所以毁灭战士3D的战斗系统有明确地模拟出3D逻辑。

由于毁灭战士3D的地图运用的是2D逻辑运算,但战斗系统是明确模拟出了3D概念,所以毁灭战士3D有个非官方的称呼,也就是所谓的2.5D。

尽管这个伪3D技术还是运用“障眼法”让你认为他是3D,但不得不说这真的非常惊艳。他视觉上看起来就像是真正的3D游戏,但在背后实际上的运算却跟2D上视角射击游戏几乎一模一样。

而这也是这游戏为何会让全球如同宗教狂热一般热爱的原因,因为当时硬件很弱,而这个模拟3D的演算法对当时的处理器来说非常简单,所以你不必为了这个而买台梦幻的电脑,只要你有游戏,就可以在任何电脑上跑,而且画面非常惊人。

理解这点,大概就能理解为何ID software研发的这个技术被称为革命性了。

尽管这种伪3D技术已老早被真正的3D取代,但画面与效能之间的战争从未停止过。像这种欺骗玩家视觉的概念,如今在各种游戏中都存在着,只是透过不同的技术罢了。

像最近的FF7 RE远景的造景也只是用一张贴图伪装3D场景,不过这个伪装地比较失败。

不得不说,这些游戏开发者可真的是“鬼才”,他们总是有办法在有限的硬件规格中找到无限的解决办法,就为了能够运用仅有的设备来模拟出最好的画面。所以下次有幸玩这些游戏时,给那些努力的开发者们一些肯定吧。

(0)

相关推荐