【Metaverse系列二】3D引擎知多少
今天聊聊BIGANT中的G。这里的G是Game,也就是3D游戏引擎的意思,简称为3D引擎。3D引擎,很多人可能并不清楚这到底什么?听到"引擎"两个字,你可能首先会想到汽车引擎,是汽车提供动力的核心部件。如果没有引擎,汽车就只能是一个模型,趴窝里不能动。3D模型也一样,用3DMax软件制作了一个非常逼真、精美的3D模型,带有光影和动画效果。但它是“死”的,不能互动这就差些意思。http://developer.thingjs.com/data/attachment/portal/202207/20/160106sp11q6w1lpx2q7cw.png而引擎给3D模型赋予人机交互的能力,让模型“活”起来。你可以在满是废墟的街道上奔跑,寻找补给,街道两边的建筑和光影效果都是“实时渲染”出来的,你可以利用3D引擎“编排剧情”,通过和游戏人物(NPC)互动来触发不同的分支任务。有些任务会引发激烈的枪战,你可以增加一大堆跑酷动作,比如“下蹲”、“奔跑”、“跳跃”、“飞翔”、“拾取”、“射击”、“爆炸”、“躲避”等等,而且这些能力并不需要开发大量代码,3D引擎帮你实现。http://developer.thingjs.com/data/attachment/portal/202207/20/160231oe5ayslloz5y3h3s.gif这就是3D引擎的能力,它给3D模型赋予了“交互方法、物理定律、剧情脚本、AI智能”,不需要编写很多代码就能让3D模型在“体”、“相”、“用”三方面逼近现实世界真实的人和物,让人感觉模型“活”了。而且与汽车引擎不同,汽车没引擎不能跑,但游戏没引擎是可以运行的。游戏引擎其实更像汽车工厂,本质上是一种开发游戏的软件。其实在三十多年前,电子游戏出现的早期,没有游戏引擎也能开发出好游戏,我们熟悉的玛丽兄弟、魂斗罗,都是程序员用简陋的代码编辑器,从零开始一行一行代码写出来的。http://developer.thingjs.com/data/attachment/portal/202207/20/160242wpp58584a5j6f81y.gif那时,游戏的玩法很简单,所以允许使用这种作坊式的粗糙方法。但后来游戏市场规模越来越大,用户要求越来越高,游戏玩法也越来越复杂,这就导致游戏的代码量变得非常巨大。于是一些游戏公司中的一小部分程序员开始做直觉性的尝试,在开发某个功能时,把未来可能重用的部分单独剥离出来。这种尝试就像荒野中微微闪现的星火,但这些零散的可重复利用的代码块还远远称不上"引擎"。终于,1993年一个改变时代的大神出现了,他就是约翰·卡马克,ID Software的创始人。他设计了人类第一款3D引擎,带领团队在短短几年内就创造了《DOOM》、《德军总部》、《雷神之锤》、《狂怒》等如雷贯耳的游戏大作。今天,卡马克被誉为FPS之父、3D游戏之父。http://developer.thingjs.com/data/attachment/portal/202207/20/160322ndstvv7rtd51t32t.png卡马克在动手开发游戏之前就先设计了一整套基础代码的框架和开发规范,并将所有的基础代码写好,还留下了方便调用的接口,比如图像渲染接口、3D加速接口、轨迹控制接口等。这样其他程序员在开发游戏时就可以像拼乐高积木一样,快速搭建出各种游戏应用。使得游戏的规划更合理,功能更稳定,并且游戏开发者只需要将精力聚焦游戏规则本身,提升了游戏开发效率。而这个基础代码库就是最早的3D游戏引擎。卡马克开发的世界上第一款3D游戏《德军总部3D》让人们看到了一个全新的游戏世界、感受到极为震撼到游戏体验。我们看看下图感受一下~http://developer.thingjs.com/data/attachment/portal/202207/20/160333em4toooxopm01ig7.png你被震撼了嘛?想想这可是三十年前,这款游戏一出现,玩家惊呼原来游戏还能这么玩!一下子引爆了大量的3D游戏需求。后来有一家叫“乌鸦”的游戏开发公司突发奇想,找卡马克要来游戏引擎授权,用这款引擎快速开发了不少畅销游戏。这一出把其他游戏厂商的思路也打开了,大家发现原来还有3D引擎这么个东西,还可以直接拿来用啊!于是游戏行业就诞生了一个新的细分市场:3D游戏引擎。所以,这几乎是卡马克凭借一人之力开创的市场,如今这个市场已经达到万亿的规模。在卡马克和他的3D游戏如日中天之时,他的竞争对手也在慢慢浮现。此后的三十年是一场漫长的游戏引擎战争,数十款游戏引擎在市场中激烈搏杀,直到今天还未尘埃落定,但两大巨头已经缓缓隐现。今天的3D引擎已远远超出最初的形态,除了可复用的代码库(称为引擎内核),还逐步演进出一整套工具平台。后续我们聊聊UE引擎(Unreal)的史诗成长故事,欢迎大家点赞或留言。
页:
[1]