Metaverse系列2:3D引擎是什么鬼?
2021-11-08 by uino 9.5K 行业知识 技术分享

今天聊聊BIGANT中的G。 这里的G是Game,也就是3D游戏引擎的意思,我们简称为3D引擎。

优锘的同学都听过3D引擎,但很多人可能并不清楚这到底什么?如果你问李鉴、井刚,他们会跟你叨叨一些听不太懂的话,比如:

3D引擎封装了3D实时交互和渲染能力,包括图像渲染、光影追踪、法线烘培、骨骼模拟、射线碰撞、点面控制…通过渲染接口和底层显卡交互…

就像念经一样,不知你什么感觉,反正我听完后有点尴尬,我特么连渲染都不知道是啥,你跟我说这些?

3D引擎到底是啥?有啥用?是怎么发展起来的?我们的T3D和ThingJS又是个啥?和业界3D引擎有啥关系?为了搞清楚这些问题,我肝了一个礼拜,尝试用白话给大家解释一下。

听到"引擎"两个字,你可能首先会想到汽车引擎,这是汽车的核心部件,提供动力的,如果没有引擎,那么汽车就只能是一个模型,趴窝里不能动。3D模型也一样。你用3DMax软件制作了一个非常逼真、精美的3D模型,还有光影和动画效果,甚至每一根发丝都是那么真实。但它是“死”的,你们不能互动,这就很差些意思。
image.png
而引擎就是给3D模型赋予了人机交互的能力,让模型“活”起来。你可以在满是废墟的街道上奔跑,寻找补给,街道两边的建筑和光影效果都是“实时渲染”出来的,你可以利用3D引擎“编排剧情”,通过和游戏人物(NPC)互动来触发不同的分支任务。有些任务会引发激烈的枪战,你可以增加一大堆跑酷动作,比如“下蹲”、“奔跑”、“跳跃”、“飞翔”、“拾取”、“射击”、“爆炸”、“躲避”等等,而且这些能力并不需要开发大量代码,3D引擎都帮你实现了。
src=http___04imgmini.eastday.com_mobile_20200227_20200227045258_f38c76b7a1835286f9b3f33df1c0c743_1.gif&refer=http___04imgmini.eastday.gif

这就是3D引擎的能力,它给3D模型赋予了“交互方法、物理定律、剧情脚本、AI智能”,让你不需要编写很多代码,就能让3D模型在“体”、“相”、“用”三方面逼近现实世界真实的人和物,让人感觉模型“活”了。而且与汽车引擎不同,汽车没引擎不能跑,但游戏没引擎是可以运行的。游戏引擎其实更像汽车工厂,本质上是一种开发游戏的软件。

其实在三十多年前,电子游戏出现的早期,没有游戏引擎也能开发出好游戏,我们熟悉的玛丽兄弟、魂斗罗,都是程序员用简陋的代码编辑器,从零开始一行一行代码写出来的。
src=http___5b0988e595225.cdn.sohucs.com_images_20171220_da3ee6a8be9f466d9aa043118368d573.gif&refer=http___5b0988e595225.cdn.sohucs.gif
那时,用户的期望很低,游戏的玩法也是很简单,所以允许使用这种作坊式的粗糙方法。但后来游戏市场规模越来越大,用户要求越来越高,游戏玩法也越来越复杂,这就导致游戏的代码量变得非常巨大,程序员们发现每次做游戏都一行行敲代码也TM太累了,能不能设计一套代码库,把最基础、最常用的功能都封装好,这样下次做新游戏就不用重头再来了。一开始,这种想法只是在一些游戏公司中的一小撮程序员中做直觉性的尝试,程序员在开发某个功能时多留一个心眼,把未来可能重用的部分单独剥离出来。这种尝试就像荒野中微微闪现的星火,但这些零散的可重复利用的代码块还远远称不上"引擎"。

终于,1993年一个改变时代的大神出现了,他就是约翰·卡马克,ID Software的创始人。他设计了人类第一款3D引擎,带领团队在短短几年内就创造了《DOOM》、《德军总部》、《雷神之锤》、《狂怒》等如雷贯耳的游戏大作。今天,卡马克被誉为FPS之父、3D游戏之父。
image.png

卡马克和其他程序员不同(其他程序员都是先做再说,边做边想),咱卡哥不一样,他在动手开发游戏之前就先设计了一整套基础代码的框架和开发规范,并将所有的基础代码写好,还留下了方便调用的接口,比如图像渲染接口、3D加速接口、轨迹控制接口等,这样其他程序员在开发游戏时就可以像拼乐高积木一样,快速搭建出各种游戏应用。这样就使得游戏的规划更合理,功能更稳定,并且游戏开发者只需要将精力聚焦游戏规则本身,提升了游戏开发效率。而这个基础代码库就是最早的3D游戏引擎。

卡马克开发的世界上第一款3D游戏《德军总部3D》让人们看到了一个全新的游戏世界、感受到极为震撼到游戏体验。我们看看下图感受一下~
image.png

你被震撼了嘛?如果没有,想想这可是三十年前,那时我还在玩土,都没见过电脑啥样。这款游戏一出现,玩家惊呼原来游戏还能这么玩!一下子引爆了大量的3D游戏需求。

后来有一家叫“乌鸦”的游戏开发公司突发奇想,跑来找卡马克,说你能不能把这个游戏引擎授权给我?我给你钱。卡马克说,行。于是乌鸦公司就用这款引擎快速开发了不少畅销游戏。这一出就把其他游戏厂商的思路也打开了,大家发现原来还有3D引擎这么个东西,还可以直接拿来用啊!于是游戏行业就诞生了一个新的细分市场:3D游戏引擎。所以,这几乎是卡马克凭借一人之力开创的市场,如今这个市场已经达到万亿的规模。

不过有钱的地方就有江湖。在卡马克和他的3D游戏如日中天之时,他的竞争对手也在慢慢浮现。此后的三十年是一场漫长的游戏引擎战争,数十款游戏引擎在市场中激烈搏杀,直到今天还未尘埃落定,但两大巨头已经缓缓隐现。大家可以看一段下面的小视频,隔着屏幕都能感受引擎江湖的血雨腥风。

今天的3D引擎已远远超出最初的形态,除了可复用的代码库(称为引擎内核),还逐步演进出一整套工具平台。后续我们聊聊UE引擎(Unreal)的史诗成长故事,欢迎大家点赞或留言。