本期为GAMES104《现代游戏引擎:从入门到实践》视频公开课文字实录第1期。
本课程由GAMES(图形学与混合现实研讨会)发起,游戏引擎技术专家王希携手游戏引擎一线开发者共同研发。
课程共计22个课时,将介绍现代游戏引擎所涉及的系统架构,技术点,引擎系统相关的知识。为配合学习实践,课程组在 GitHub 上开源了小引擎Piccolo,上线1个月即获得了2900+star, 累计下载量已超过20000+。
以下内容为公开课视频转文字版本,为阅读通顺,有删减
大家好!欢迎来到《GAMES104-现代游戏引擎:从入门到实践》。
很开心今天我们可以开始这门课程,这门课程我们筹备了非常久。这一直以来是我们的一个夙愿:我们特别希望能写一个系统性的课程,能够教大家如何去构建游戏引擎,一步一步地去创造出这样一个神奇的世界。
因为游戏引擎是集结了现代计算机科学所有的最前沿的技术,它很像是皇冠上的钻石。而这个技术最终支撑的是什么呢?我认为是构建未来的黑客帝国。
这门课是一个非常系统性的课程,我们将用20几个课时,带着大家一步一步地去领略这个用人类计算机科学构建出来的这样的一个奇迹。
首先,介绍一下我自己。我本科就读于浙江大学,在CAD&CG实验室——老牌的中国图形学的圣地。研究生的时候去了清华,在清华的同时,我去了微软亚洲研究院。在那个非常热血的时代,我们这群中国的科研小伙子们在老师的带领下,去挑战SIGGRAPH,去挑战全球最前沿的图形技术研究。
到现在我还记得,那时候我们被关在小黑屋,老师跟我们讲:你们是中国科研的国家队,你们并不比Stanford、MIT的学生笨,你们一起去冲击这个顶级会议的论文。
那个时代给我们铸就了一种信念,就是说如果我们努力,如果我们真得用功的话,我们也可以做出世界顶级的东西。
在那之后,我本来认为自己的职业路径一直是走学术,但那时候发生了一件事情,就是2004年虚幻引擎3面世。当时整个行业都被震撼到了,大家见识到了什么叫真正的次时代,以及那样精彩的光影细节。
我身边的朋友问我,王希你能不能也做一个一样的东西出来?那里面有什么技术?你们会不会做?当我看完之后,觉得这些技术好像我们都会做。因为做完research后,你会认为所有的系统无非就是算法,每个算法我们都知道怎么去做。但是我在想,为什么我们做不出这样一个大型的系统和平台?怀着这个问题,那时候我就决定,不再去做research,那去干嘛呢?到真正的工业里去。
所以那时候我决定离开研究院,跑到美国去参加那个Bungie Studios。
*在Bungie参与制作的游戏
在Bungie Studios对我来讲是一个非常interesting的journey,在Bungie Studios,实际上我用了大概五年时间参与了四款游戏的研发:Halo 3、Halo ODST、Halo REACH以及Destiny(命运)。特别是在Bungie Studios的最后三年,那时候我们在做下一代的游戏引擎,大家知道最早Halo用的是自己的In-house引擎,但是等我们决定启动做命运的时候,发现这个行业发生了巨大的变化。
游戏引擎要跑在一个完全不一样的计算机软硬件架构上,因为那时候我们面临多核的时代。还有一点就是过去我们做的是单机游戏,那未来我们要做的是什么呢?是一个无数线上玩家可以互联的游戏,它的体系结构需要发生这样的一次革命。
我在美国整整待了五年,“毕业”的时候,我觉得可能是又学了一个PhD。其实刚去的时候转变是非常大的,这也是今天开这门课的一个很大的原因。
就是说我们可以在学校里学到很多的算法、计算机科学的基础知识,但是,我们有了这样一些算法,发顶级paper和做一个高水平的系统,这之间的差距到底是什么呢?我刚去美国的时候,我就想回答这个问题。
跟大家分享一个小故事,我在微软研究院的时候,以为自己编程还可以,但是呢,等我到了Bungie Studios的时候,我的前半年几乎是没有办法往引擎里面check in任何一行代码。为什么?因为你必须要理解那个几百万行代码的系统,它是按什么逻辑,什么架构做出来的。
Holo 3的纪录片中,还有一个我的镜头,就是摄制组早上六点钟跑去拍摄的大家上班的样子,等他们到了我们工作室的时候,发现有一个人还没有走——我趴在桌上睡着了。他们问我为什么没有走,我说我的feature还没有check in。
在Holo 3的时候,我做的是可交互的水体,那是非常有意思的一个系统。用了整整两年的时间,我亲身经历了如何从一个算法、feature到一个真正的系统。
十年前也就是2011年,我决定从美国回来,创立了不鸣团队,为什么呢?
我觉得中国有很多很聪明的人,但是呢,没有人愿意聚集起来去做一个比较复杂的系统,真得把这些聪明、这些系统、这些东西集合成一个system,因为算法和系统是有本质区别的。
算法是这样的:我有个很酷的idea,花几个月把它实现了,然后呢,我就能发表一篇paper,这个周期很短,大概六个月左右。但是呢,如果你做一个系统的话,首先你要接受非常良好的系统工程的训练,知道一个大型软件系统是怎么架构的,另外就是你需要知道特定系统怎么架构。当我们真的开始去架构的时候,很多时候可能是,一年时间你什么都看不见。
我们希望通过GAMES104这个平台把我们的毕生所学系统性地整理出来,也希望有更多的同学会对这样的东西感兴趣。
今天的课程讲的是什么呢?是现代游戏引擎的理论与实践。游戏引擎是为什么服务的?首先是为游戏服务的。说起游戏,每个同学应该都非常熟悉。我相信未来的时代一定是一个game的时代,我相信游戏会改变世界,这是一个让我热血了整整20年的行业。
*我每每看到这个视频都会很激动,但是老头环没有做进去,我的激动会稍微少那么一点点。
游戏最奇妙的一个地方是什么呢?就像身边的手机一样,每个人都会用手机,但是有多少人能意识到:在一个小小的手机里面,集成了全世界最前沿的半导体技术、最前沿的材料技术和最前沿的计算机技术。
游戏,你看到的每一个画面、每一个细节,都是在计算机里面用0、1模拟出来的。
大家想象一下,如果我给你一个体育场,几万人,每个人手上举个牌子,可以打出不同的颜色,然后我说OK,我给你们每个人写一套算法,然后听我的指令,这个时候你在体育场上看到的就是一个能跟你互动的画面,而且越来越真实。这件事情大家如果仔细想想,其实是非常amazing的。
这就是为什么今天我们说,一个游戏做的好,做的不好,有这样的细节,有那样的细节,我们讲起来非常轻松,但是真正能做出一款游戏,非常难。它几乎集成了计算机科学里面所有的知识门类,它本身的复杂度就是一个操作系统。所以我们说游戏实际上作为虚拟现实,是现代计算机科学的一个非常核心的应用,而且这个应用,它的技术含量也是最高的。
那么游戏引擎呢?就是我们皇冠上的钻石,因为它是躲在下面看不见的东西。
中国有将近几亿的游戏用户,会做游戏开发的人,我觉得应该有几百万。很多人会用Unity,会用一个游戏引擎,但是,会用游戏引擎是你学会了开车。我们再问一个问题,中国有多少人会造车?造车的话,你就需要知道怎么去造发动机?发动机的底层工作原理是什么?它需要什么样的一些技术?有什么样的问题?什么样的材料?你会发现越到核心的东西,不只在中国,在全球真正做这件事情的人就会越来越少。
Game engine实际上是我们这个行业的皇冠上的钻石,而且,它的技术壁垒也是最高的,它是一个技术和设计的结合体。所以,这也是我们设立Games GAMES104课程的一个核心目的。
刚才我看到弹幕里很多同学在问,是不是要学很多其他的课程,才能去上这门游戏引擎课?还有同学说,如果不会C++,这门课是不是上不了?在设计课程的时候,这是我们重点在想的问题。简单来讲,我们立个flag,就是我们尽可能在整个课程中讲人话。也就是说并不一定需要你有非常多的计算机编程开发的技术,但是,你学完这门课程的时候,你会对这样一个现代大型软件系统的架构有一个基本理解。
为什么这件事情很重要?这就是我特别想跟大家分享的,为什么我们很愿意去做这门课跟大家分享游戏引擎的底层架构知识?因为我们相信下一个时代将会是用游戏引擎技术构造的一个虚拟现实的时代。
大家今天看到的很多东西,其实背后底层用的技术都是游戏引擎技术。
虚幻引擎的MetaHuman
在过去的10-20年,在游戏中我们对人的皮肤的3S材质、对毛发的simulation、对人物的procedure agent做的越来越好。
虚拟人鹿鸣
像鹿鸣大家是不是觉得很好看?大家想象一下,未来我们打开支付宝、打开银行终端,跟你交互的都是虚拟人。它可以去观察你、去和你交互,让你觉得它是你的一个小助手。这样的一个技术,它背后就是游戏引擎。
而且未来的虚拟人会越来越多地进入我们的生活,当我们做越来越多的虚拟人的时候,我们有没有想过背后用的是什么引擎?那么引擎这件事情到底重不重要?
*素材来源于网络,侵删
Hollywood用游戏引擎在一个巨大的LED屏上形成了一个虚景,演员对着LED进行拍摄。
*素材来源于网络,侵删
今天我们在很多广告或者电影里看到的场景,其实是用游戏引擎技术渲染出来的。这和大家传统理解的离线渲染农场的方法已经不一样了,我们的导播、我们的导演可以在现场调整光照、调整布景。
*素材来源于网络,侵删
大家知不知道,世界各国都在用游戏引擎技术训练他们自己的军队,因为只有游戏引擎能够提供这么真实的一个场景。
大家想象一下,我们玩的很多战略游戏,它就是一个战争模拟器。无论你是一个步兵,还是开着坦克车,还是开着飞机,其实都需要最前沿的引擎技术帮助大家身临其境地演练你的战术、检测你的战法。这件事情的重要度已经越来越高了,因为现代化的战争是越来越复杂,是系统与系统的对抗。
我相信同学们可能最近听说过一些非常Hot的概念,比如工业4.0、工业数字化,这些背后有一个很热门的概念,叫做数字孪生,包括最近大家一直都讲的元宇宙。
数字孪生的话,我们可以认为它会把现实世界的很多东西虚拟化地表达在计算机世界里面,这样能帮助我们更好地去理解、更好地去管理、更好地去构建未来的世界。举个简单的例子,比如现在最热的无人驾驶。其实所有的无人驾驶车99.9%的驾驶旅程是跑在游戏引擎里面的,因为我们不可能把车子在路上开实际公里,所以这时候我们就要用游戏引擎模拟各种各样的下雨、各种各样的路面情况,包括行人各种异常的情况。
*素材来源于网络,侵删
另外一个,就是下一代的,比如说车载系统,其实它的人机交互界面背后用的全是游戏引擎,这样我们才能看到那么漂亮的立体的一个界面。
这就是游戏引擎一个巨大的价值,这一切,也是为什么我们开这门课的一个很大的原因。我们认为在未来的10-20年,每个人都多多少少需要知道一些这个虚拟世界是如何构建的,这个虚拟世界最重要的一个foundation就是游戏引擎。
其实这门课程从没有存在过,我们没有现成的课件。去年底接到这个任务,我们去现场编排、设计这个课程该怎么讲,这是个非常有意思的挑战,也是个经历,希望大家喜欢这个挑战,喜欢这个经历。这就是我今天第一讲的课程。
我觉得构建虚拟世界是一个充满乐趣的东西,很多人在问我为什么你这么热爱做游戏引擎这件事情?我说这个感觉真的像上帝一样,就是你去定义这个世界最基础的规则,然后按下一个按钮,当计算机在运行的时候,这个世界真的出现在你的面前。这种创造的快乐,是没有办法用语言形容的。
我希望所有上GAMES104课程的同学,都能够跟我一样去享受这个过程。因为未来的世界一定是一个充满想象、充满直觉的世界。我们相信下一代的人机交互界面,一定是3D的身临其境的体验,而游戏引擎将会是这个时代最重要的一个基础软件。这也是我们整个团队最大的一个愿景,希望同学们跟我们一起开始这段伟大的journey。
GAMES104课程官网
GAMES104课程视频
GAMES104公众号