← Lex Fridman

Tim Sweeney: 蒂姆·斯维尼:《堡垒之夜》、虚幻引擎与游戏的未来

#467 – Tim Sweeney: Fortnite, Unreal Engine, and the Future of Gaming

第467期2025-04-30简体中文

嘉宾:Tim Sweeney

收听本集00:00 / 4:30:13
阅读设置
按你的习惯阅读
正文字号
下载播客精读
把这一篇,带走慢慢读

中文 · 精读 · 当前版本

下载功能还未开放

全文文稿 · 按对话顺序保留完整内容,深入理解上下文。

本篇目录3 章节§01文字稿 1§02文字稿 2§03完整文稿 3

§01文字稿 1

00:00在计算机图形学中,人类形象是迄今最难处理的部分,因为数百万年的进化让我们的大脑形成了专门的系统,能够识别人脸中的模式,并推断情绪和意图。原始人在看到陌生人时,必须判断对方可能是友好的,还是想要杀死自己。因此,人们对一张脸的预期精细到了惊人的程度,我们能够察觉其中的瑕疵,尤其是计算机图形技术的局限造成的那些不自然之处。好,一方面是采集人的形象。为此会用到[听不清 00:00:33]非常先进的专用硬件,把一个人置于球形采集空间中,周围布置几十台摄像机,以高分辨率、高帧率拍摄他做出各种动作时的视频。不过,采集人脸很复杂,因为脸部有许多细微的特征,各种肌肉、肌腱和脂肪会共同作用,形成不同的表情。

00:53因此,问题不只是一个人的脸长什么样,还包括这张脸可能做出的整个动作范围。这就是数据方面的难题。计算机图形学还有很多其他问题。比如毛发渲染技术就非常难。因为你无法渲染每一根……同样,物理定律我们是知道的。把每一根毛发都渲染出来并不难,只是那样会慢上十亿倍。因此,你需要一些近似方法,呈现毛发对渲染结果和像素产生的总体影响,而不必计算每一道光与每一根毛发之间的每一次相互作用。这是一方面。脸部不同部位还有各自细致的特征。还有次表面散射:我们通常觉得人体是不透明的,但光其实会穿过我们的皮肤。皮肤并非完全不透明,而光在皮肤中传播的方式,对我们的外观有巨大影响。

01:38所以,你不可能只给一个人体模特涂上颜色,就让它看起来像真实的人。它只是一层实体表面,永远不会呈现出我们在人脸上看到的那种细节。

01:48仔细想想,这件事让我很震撼。我记得好像听说过,皮肤表面的油脂会形成非常特定、细腻而复杂的反射,而一部分光会被吸收并在皮肤中传播,形成我们人眼能够感知的质感,让它看起来具有我们所谓的“人的感觉”,不管这种感觉究竟是什么。同时,还得考虑做出细微表情时涉及的所有肌肉,比如眼睛微微眯起,或者笑容刚刚浮现。你必须捕捉人脸的这些微妙之处:真笑和假笑之间的区别,或者一个刚刚形成、却实际流露出深切悲伤的笑容该如何呈现。我看着一张人脸时,能读懂所有这些。我能想象,你必须拥有能够实时渲染这些细节的工具,而这极其困难。

02:50没错。要把人脸做好,确实需要计算机图形学中几十种不同的系统和技术细节相互配合。只要其中任何一项出了问题,你的目光就会完全被它吸引,人物也就落到了恐怖谷令人不适的那一边。

03:06接下来是我与蒂姆·斯维尼的对话。他是一位传奇电子游戏程序员,也是 Epic Games 的创始人兼首席执行官。这家公司创造了许多出色的游戏和技术,包括虚幻引擎和《堡垒之夜》;它们都改变了电子游戏行业,以及玩家游玩和创作电子游戏的体验。这里是 Lex Fridman 播客。如果你愿意支持节目,请查看简介中的赞助商信息。亲爱的朋友们,现在请听蒂姆·斯维尼。

03:06你第一次爱上计算机,或者说爱上编程,是什么时候?

03:42我有个哥哥,叫史蒂夫·斯维尼,比我大16岁。我还很小的时候,他去了加利福尼亚,在一家科技公司工作,还买到了最早的一批 IBM 个人电脑中的一台。有一年夏天,我想当时自己大概11岁,去了加州看他。那是我第一次离开家人,单独去和哥哥待一段时间。他有那台崭新的 IBM 电脑,我花了几天时间,学会了用 BASIC 编程。当时计算机所拥有的能力让我惊叹不已。它们能做的事情实在难以置信。从那一刻起,我就彻底迷上了计算机,非常想成为一名程序员。

04:19你还记得用 BASIC 写了什么吗?是电子游戏之类的东西?还是 for 循环、某种数值计算?你还记得吗?

04:27记得。说起来挺有意思,我对最初学编程时做过的那些事情,都有非常清晰的记忆。我不太记得住人的名字,但代码会牢牢留在脑海里。每一步、每一次挑战,都带来了经验。有些经验后来看来,只是我跨过了学习中的一些障碍;但另一些实际上反映了编程语言本身的缺陷,也让我意识到,初学者正在学的那些编程方式,并不一定是最好的方式。他们面对的许多问题,并不是学习一门新技艺本身有多难,而是编程语言设计的失误人为增加了阻力。因此,在我不断进步、尝试越来越多事情,包括设计编程语言的过程中,我总会回过头来思考最初学到的那些经验。

05:11是啊,编程中的阻力和痛苦,会指引你的学习。如果要描述编程这段历程,我会说它一路都有痛苦作为标记。而且你不应该逃避这种痛苦,它能帮助你理解编程语言。不过,你还记得当时写的是些什么东西吗?就是最初写的那些程序。

05:35记得。早期我什么都写过一点,也写过一些游戏。我在 Apple II 上写的第一个游戏,是因为当时只会在文本模式下编程,就让电脑把星号不断抛过屏幕,从左向右移动。屏幕右侧有一个圆括号,看起来像只棒球手套,你得用它接住星号。那是我的第一个游戏,大概花了两三个小时开发和调试,然后我就从那里继续往前走。但我做过很多东西,不同时期写过数据库,还为一种类似 Pascal 的语言设计过编程语言和完整的编译器,因为我不知道该去哪儿买这种东西,所以就自己做了。那个年代还有一种很有意思的东西,就是电子公告板。

06:17在普通消费者能够使用互联网之前,你会用调制解调器拨打一个本地电话号码,连到别人运行的那台电脑。每座城镇或城市里,都有几百个由不同的人运营的电子公告板,各有自己的风格和主题。所以,我花了很多时间编写电子公告板程序,学习如何处理数据库管理和用户界面,如何同时应对多个用户,诸如此类。我不太确定具体数字,但在10岁到20岁之间,真正把一个程序发布给外界之前,我大概已经作为爱好,独自花了一万到一万五千个小时写代码。

06:56一万到一万五千小时。你小时候投入编程的这些时间,对后来取得的成功有什么价值?也许这能给年轻人一些建议,帮助他们思考该怎样安排人生早期的时间。

07:12是的,不过关键不只是投入多少小时,而是努力学习,弄清自己掌握了哪些知识、还缺哪些知识,并不断做实验、开展项目,来扩充自己的知识储备。我并没有做什么严密的规划,只是从一个项目转向另一个项目,做些自己觉得有趣、很酷的事情。每个项目都会让我学到新东西:怎样存储和管理数据,怎样处理高级数据结构,怎样编写数据和控制流程具有深层嵌套关系的复杂程序。每一个项目都给我上了一课,而这些经验后来都很关键。1991年,我发布了自己的第一款游戏。在接下来的十年里,我从从未推出过商业作品,走到了开发第一代虚幻引擎。而这在很大程度上,只是把之前十年里做有趣的业余项目时积累的知识拿出来使用。如果没有之前的那些积累,我根本不可能做出后来的东西。

08:15那些实验和探索,后来不知不觉都发挥了作用,都有了意义。它们以某种方式融进了你做的东西里。人生的运行方式真有意思,各块拼图最终会慢慢拼到一起。

08:32是的,确实会出现《龙威小子》那样的时刻。在那段时间里,我高中一直在学数学,大学读的是机械工程,所以学了各种各样的数学:向量微积分、向量运算、矩阵,还有相关的物理、应力与应变,以及如何处理复杂的物理系统。当时我其实并不太清楚,工程师具体会怎样使用这些知识。开始工作之后,就把它们忘了吗?还是要在纸上写方程?对一个刚学工程的学生来说,这些都不太明白。但开始编写第一代虚幻引擎、处理“3DMS”(原文转写如此,疑指三维数学,待核对)时,我突然意识到:等等,这些我会,我学过。所以,就像《龙威小子》里刷篱笆、给汽车打蜡的训练一样,先前积累的编程语言和数学知识,突然都能组合到一起,用来构建一个三维引擎。其中很多知识,是我当初学习时完全没想到会这样派上用场的。

09:37另外,我觉得反复学习困难的东西,也很有用:你一次次向自己证明,你做得到,你能学会很难的东西。这样,当你要用前所未有的方式编写一个三维引擎时,就会觉得:这种感觉我经历过。我现在还不知道该怎么做,但我们会找到办法,会去学。我会把所有必需的部分都学会。所以,重点就是不要害怕新东西。

10:10没错,还要不断努力寻找这些领域之间的联系,寻找它们的应用。发布虚幻引擎很久以后,我再翻工程学教科书,会一边看一边想:这个我用过,那个我也用过。然后翻到了特征值那一节,我就想:这到底是什么东西,我完全不知道。但事实证明,特征向量和特征值,正是让谷歌搜索引擎技术取得关键突破、与其他搜索引擎拉开差距的东西。他们发现,如果把网络上所有链接、不同网站之间相互指向的链接,放进一个巨大的矩阵里,然后对它进行计算,就能找到占主导地位的特征值。

10:46这些特征向量便能描述不同问题的最佳搜索结果。所以,你应该不断积累知识,寻找把这些知识组合起来的方法。如果你希望成为程序员,就必须写大量代码,不断学习新东西、提升自己。如果你想成为艺术家,就得持续创作各种风格、各种类型的作品,不断推动自己学得更多。因为你永远无法准确知道,自己长远来看最终会做什么。但你拥有的知识和技能越多,就越有可能把它们结合起来,取得成功。

11:20而且,无论你是程序员还是艺术家,大概都应该学一学线性代数,即使当时你还不明白学它有什么用。

11:25我发现,拿一个工程学学位,后来却从未从事工程工作、只是当计算机程序员,这件事对我有极大的价值。我读的是马里兰大学。有些专业让它有点“派对学校”的名声,但学校对工程专业的学生要求极高,真的会让你拼命学习。无论学哪一种工程学,你都会接触大量数学,也会学到严谨地解决问题的方法:不是只从维基百科文章里看一点东西,而是把各种复杂问题的练习题做完,建立一连串的解答步骤,最终推导出答案。这很有价值,其中包含了程序员所需的知识。人们上大学时,往往觉得:好,我在这里的目标就是取得好成绩,拿到文凭,向雇主证明自己有价值。

12:11不是的,那只是大学在表面上的一套记分和记录方式。这一切真正的目的,是学习。无论你是接受正规教育,还是自学,真正对职业生涯有价值的都是学到的东西。尤其如果你想创业,重要的是真正掌握相关知识,而不是手里有几张文凭。社会面临越来越大的压力,凡事都围绕资历证明来组织:你有这个证书吗?有那个证明吗?但那些专注于打造好产品、做出好成果的公司,最终会被真正能把工作做好的人吸引。

12:48是啊,年轻时的一大好处,就是更自由,有更多时间可以学习。人们读高中时,有时会想:真希望赶快离开这里,成为成年人,获得自由。但成年后的生活并不完全是自由。有了工作、组建家庭,这些都是好事,可你也会越来越忙,能用来广泛学习、随心所欲学习的时间越来越少。十几岁、二十岁出头,以及二十多岁这段时间,实在是人生中很美好的一段,因为你可以随意学各种各样的东西。

13:25是啊,而且我觉得,美国在这方面的情况正在改变。现在人们太关注成绩、作业,以及把孩子的生活安排得有条有理了。我小时候,妈妈会给我吃早饭,邻居家的妈妈也会给他们的孩子吃早饭,然后大人们就说:好了,天黑前回来。

13:45是啊,我们会出去玩,做各种各样的事情。我们会探索树林,造卡丁车,回收旧电子零件,把它们做成我们想象中的飞船控制面板,装进玩耍时搭的假飞船里。我们有非常大的自由。从很小的时候一直到上大学,我都有大量空闲时间。有些人把这些时间用来浪费、看电视,有些人用来社交,还有些人真的投入到了认真的项目中。那个年代一直有很多人在做很酷的事情。我在编程,也在学习怎么把东西做出来。

14:27在把游戏发布给外界之前,我会请邻居过来玩我正在做的东西,看看效果。有时他们觉得很厉害,有时不觉得。他们自己也有项目,我们还经常利用空闲时间做兼职,人人都挺有创业劲头。每个人都有自己的副业。有时你会四处给别人割草,或者把落叶耙起来,赚点钱。我觉得,那种自由,以及由此自然发生的学习,是美国生活体验中非常重要的一部分。但我担心,随着社会越来越强调保护、把人照顾得越来越周全,人们获得这些经历变得更困难,这些东西正在逐渐消失。

15:07说到电子游戏,你第一次爱上电子游戏是什么时候?

15:13我和游戏之间的关系挺有意思,因为我真正的愿望,一直都是用编程做出很酷的东西。编程带给我的快乐,比世界上任何其他事情都多。最早真正塑造我的两段游戏体验,一段是在雅达利2600上玩一款叫《Adventure》的游戏。你操纵屏幕上的一个小点,捡起剑之类的物品,和龙战斗,进入城堡,解开谜题。它用的是非常简单的图标化表现,而不是逼真的图像。另一款让我真正沉迷的游戏是《Zork》,一款文字冒险游戏。它会告诉你身在何处、看到了什么,然后你输入“往北走”“捡起剑”“开门”这样的命令,以这种方式探索世界。这款游戏没有任何图形,但你的脑海里会浮现出一幅丰富的画面,想象自己正在看什么。它确实带来了[听不清 00:16:09],比其他东西更能激发想象力。

16:11玩这些游戏,让我想去学习怎样把其中看到的一切都编出来。这推动了我大量的编程实践。我学会了如何让玩家在屏幕上移动,学会了怎样编写设计工具,让自己能建造城堡、保存下来,然后在游戏里游玩。我意识到,用来制作游戏的工具,和游戏本身,是分开的两件事;工具越强大,你就越能释放自己或其他人的创造力。

16:36我还学习了支撑游戏运行的各种编程技术,比如如何解析文本:“捡起剑”“往北走”。怎样才能把这样一句话变成计算机实际执行的一串命令?这些东西都让我非常兴奋。我必须说,在《堡垒之夜》问世之前,我玩电子游戏的主要目的,就是弄清它们在做什么,好让我自己也能做出来。《德军总部》推出时,以及后来《毁灭战士》推出时,我会坐下来研究,逐像素地观察,轻轻移动鼠标,仔细看究竟发生了什么,想搞明白……

17:10这很有意思。太棒了。

17:10……那里用的到底是什么技术?这是一场大规模的解谜,实在太有趣了。

17:16带我回到20世纪90年代初吧。你在1991年创办了 Epic Games。那时开发你的第一款大型电子游戏《ZZT》,是怎样的一种经历?技术上的挑战是什么?做这件事时,心理上的挑战又是什么?

17:36这个项目挺有意思,因为我一开始并不是想做电子游戏。我当时刚从 Apple II 换过来。之前我去加州看过哥哥之后,他很快就给我们家买了一台 Apple II。我在那台机器上编程了好几年,学到了许多技术,但等到那个周期快结束时,身边已经没多少 Apple II 用户了。[听不清 00:17:56]。于是我刚给自己买了一台 IBM PC,开始学习在它上面编程,然后发现自己需要一个文本编辑器,就动手写了一个。文本编辑器就是编辑文本文件的程序,你需要写逻辑来移动光标,让人输入内容、退格、删除,完成这些很普通的操作。有一天晚上,我把它做完了,心想:好吧,现在我有一个文本编辑器了,可它真是挺无聊的。

18:20于是我把光标变成了一个笑脸字符,并让文档里能够放置的不同字符,执行不同的游戏行为。有些是墙壁,有些会让玩家死亡,有些则是能在屏幕上四处移动的物体。就这样,我写的文本编辑器逐渐变成了一个小型游戏编辑器。我开始给游戏制作关卡,在编辑器以及一组基础物体上投入了很多时间,大概做了二三十种不同的物体。这些东西足以做出一款很酷、很吸引人的游戏,又不至于多到让玩家搞不清自己看到的是什么。

18:51一开始,我只是不断制作不同的游戏关卡。基本想法是,游戏由一张张相互连接的地图组成。你往北走[听不清 00:18:59],到达当前地图的边缘时,如果那里开放,就能进入一张新地图;也可能被挡住,那你就过不去。我围绕这个机制,搭起了这个[听不清 00:19:05]游戏世界,最后它就成了《ZZT》。制作和游玩的过程都让我很开心,但我不知道它究竟能不能行。所以我做了个实验,开始请邻居过来:有成年人,也有各个年龄的孩子。我让他们坐到电脑前,告诉他们:“这是我做的游戏,自己摸索着玩吧。”

19:23我必须强迫自己不要告诉他们该怎么做,因为我真的想知道,他们能不能完全靠自己发现这些玩法。今天我们会把这叫作用户体验测试,用户体验研究也已经成为完整的研究领域。但在那个时候,只不过是叫几个孩子过来玩游戏。我会记下他们在哪里卡住,喜欢什么,什么时候感到无聊,然后反复迭代打磨,直到觉得游戏不错了,再把它发布出去。那时还没有互联网可用,我们用的是电子公告板。我把游戏上传到了许多本地公告板,然后它就开始传播。对公告板用户来说,建立声望的一种方式就是上传新文件,然后告诉大家:“嘿,这东西是我第一个带给你们的。”

20:06所以,软件天然就会不断传播。我决定采用共享软件模式,因此做的并不只是这一款游戏,而是一个三部曲。我把第一部免费发布,告诉大家:“如果你喜欢,就买后面两部续作。”我附上了父母家的邮寄地址,说寄来30美元,就能拿到这款游戏的续作。没过几天,支票就开始寄到了,每天能收到三四笔订单。我一天能赚100美元,当时就想:哇,我发财了!对一个20岁的人来说,这可是一件大事。

20:43那是什么感觉?收到钱,而且可能会因为自己创造出来的东西,感到一种巨大的成功?

20:51我一直只是把钱看作一种工具:它能资助你做成很酷的事情,而关键是拥有足够的钱,去做自己想做的事。我的态度一直很务实。但知道全国各地的人都在玩这款游戏,一个月后连世界各地的人也都在玩,实在令人震撼。我只是一个独自把游戏传到本地电子公告板上的孩子,却能做起国际生意,把磁盘寄给全世界的玩家,因为软件会自行传播。这简直像魔法一样。

21:27这对软件来说是一种全新的可能,而机械设备做不到。你制造一台设备,把它卖给某个人,对方拿到它,事情就结束了。但软件可以传播。亲眼见到这一点,真的很酷。它让我意识到,这样一家公司的[听不清 00:21:40]其实没有真正的增长上限。当时我们觉得微软是家无比强大的巨头公司,但也会想:只要 Epic 把游戏做得足够好,我们也能取得他们在操作系统领域取得的成就。发展的空间没有上限。我认为我们现在仍生活在这样的时代:你不必成为制造实体产品的工业家。任何创造数字产品的人,只要东西足够好,都有机会触达整个世界,打造出下一家微软、Meta、苹果、谷歌,或者 Epic Games。

22:12不过,这个起源故事实在很酷。你起初是在做一个文本编辑器,看着这个项目,摆弄它,把工具一点点做起来。那个转折点很鼓舞人心,因为我们很多人开始做一个项目时,如果能允许自己发现其中潜在的转向、可能的发展路径,就很棒。退一步,允许自己感到无聊,然后想:啊,我要往这个方向走。这就像到了一个岔路口。你来到一个岔路口:你做过编译器,设计过自己的编程语言,做过数据库,还有刚才提到的各种东西。然后你开始做一个文本编辑器,又在这里遇到一个岔路口,决定:我要让它变得好玩。由此,最传奇的游戏公司之一就诞生了。这真的很酷。对开发者来说,这是件很鼓舞人心的事:对那些原本不在计划中的创造成果保持开放,顺着它往前走。对吧?很酷。

23:20是的,很多经验都是在那时迅速浮现出来的。我做《ZZT》时,有一件很棒的事:我不只发布了游戏,还把编辑器一起发布了。我造这个工具,是为了制作让人游玩的《ZZT》地图,但我也把工具交给了所有玩家。30年后,我去参加游戏行业活动时,仍会遇到有人对我说:“我是玩《ZZT》长大的。”眼前这个成年人,就是玩着我的游戏长大的。这背后的原因,是它也让任何人都能成为创作者。它有那个老式地图编辑器,还有一个小型脚本语言,所以你也能借此学一点编程。它产生了影响,也真正塑造了 Epic 的一个基本原则:公司的使命,不只是制作出色的娱乐内容,还要制作出色的工具,把工具分享给所有人,让他们也能创造出自己的精彩作品。

24:11几年后,我们开始做虚幻引擎时,一边制作游戏,一边开发供许多人使用的工具,这两者之间的互动成了非常关键的一环。我认为,这也是 Epic 取得巨大成功的唯一原因。实际上,我们能一直生存到今天,就是因为我们同时服务创作者和玩家。我们因此能渡过游戏行业的起起伏伏。对企业来说,这个行业很残酷,但我们熬过了每一次经济低迷。有时,因为我们没有游戏产品,是引擎业务在支撑公司;另一些时候,则是游戏在支撑公司。这形成了我们文化中的一个原则,一直延续下来,并且不断被重新摆到最重要的位置。

24:53说到编辑器,这种理念真的很有意思:你始终让人们能够创造自己的世界。你有一个引擎,用来模拟游戏所处的世界;有真正的游戏本身;同时也给创作者自由,让他们在《堡垒之夜》里制作自己的岛屿。无论你发布什么,这种创作的自由总是存在。这很有意思。

25:23是的,随着时间推移,我们希望把这件事做得越来越完整。开发《堡垒之夜》的过程中,我们还造了许多其他工具。它们对我们自己同样有用,因为《堡垒之夜》不只是一个由虚幻引擎驱动的游戏,它还是一个社交生态,人们可以在里面交朋友、语音聊天、聚在一起玩耍。所以,我们把所有这些社交功能开放出来,做成 Epic Online Services,免费提供给所有开发者,因为这个用户群体的增长会让大家都受益。我们的最终目标,是用我们分享给所有人的同一套技术,来开发公司自己的产品,并希望随着时间推移,形成一个越来越大的生态系统,让所有人都能受益。

26:03我们能不能再在90年代停留一会儿?你提到了电子公告板,也许可以解释一下那是怎样的东西,以及互联网诞生时是什么样子。90年代的互联网是什么样的?

26:16互联网的历史挺有意思。它最初是美国国防部的一个研究项目,叫作 ARPANET,也就是高级研究计划局网络。起初,它有点像一种令人敬畏的神秘事物,后来随着大学陆续接入,变得越来越开放。大学是在20世纪80年代中期接入互联网的。因此,如果你在一所有计算机资源的知名学府,就能上网。但当时作为普通消费者,我们用的只是调制解调器:把它接到电话线上,拨打一个电话号码,然后它就会在电话线路上传送各种奇怪的声音,用这些声音来回传输数字信号。

26:55而且这些设备真的很慢。我的第一台调制解调器是300波特(原文把 baud 误写作 boards),也就是每秒传输30个字符的数据。你上网时,会坐在那里,看着一句话逐个字符地慢慢出现。但我们就是这样上网、彼此交谈的。你拨号连进一个本地电子公告板,它由某个人运营。通常就是在那个人的厨房之类的地方,摆着一两台运行公告板的电脑。几百名用户组成一个小社群,大家都争着连接同一条电话线。电话经常占线,你就进不去。越受欢迎的公告板,越难连进去。

27:29真不错。

27:29不过,各种各样的社群也因此发展起来。比如有程序员社群,大家在里面讨论编程;也有新闻和活动社群。我住在华盛顿特区郊外,所以这类讨论很热闹。另外还有盗版社群,大家分享盗版 Apple II 游戏。不同社群有完全不同的气质和口号,但都很友好,规模也很小。这些公告板不可能长到 Facebook 那么大,因为一条电话线接不了那么多来电。后来到了20世纪90年代,在大学里发展起来的互联网开始向公众开放,任何人都能连接上去。突然之间,这个世界开始自行发展起来,要更快触达全球受众,也容易得多了。

28:16而且,你们开始通过互联网发布游戏。在当时,这有点疯狂,因为大家通常认为游戏应该有一份实体拷贝。把游戏直接放到网上,是非常新颖的做法。甚至共享软件模式本身,也很有创新性。

28:31是的,对游戏行业来说,这是个挺有意思的转变。Epic 起初制作共享软件游戏,以数字形式发行。但随着 id Software 的《德军总部》《毁灭战士》等早期三维游戏,以及我们自己的《虚幻》,迅速吸引了数百万用户,我们不得不进入实体零售店。我们和一家零售发行商合作,由他们制作包装盒,把 CD-ROM 光盘装进去。后来,整个世界又开始转回数字发行。而这个转型一开始并不顺利,对吧?游戏最初转向数字化时,几乎就是 BT 下载和盗版的天下。你会听到各种可怕的故事:有的游戏只卖了10万份,却有200万玩家,因为大多数人都玩的是盗版。

29:15后来 Steam 出现了,引入了数字发行,并把购买、获取正版游戏的流程做得非常方便,以至于大多数玩家都从盗版转向了正版。其他公司随后也沿用了他们的做法,早期的数字游戏产业就这样逐渐形成了。

29:33是啊,很有意思。盗版者有时确实会推动创新,Spotify 的故事也是如此。我觉得,大多数人从电子游戏之类的产品里获得价值时,是愿意为它付费的,他们只是希望付费过程简单一点。音乐和 Spotify 也是同样的道理。不过,也许我们可以继续聊90年代。今天听我们对话的人里,会有许多独立游戏开发者。你能不能回到当时的心境,试着给他们一些经验和建议?那时你还是一个独立开发者,或者只是和少数几个人一起制作早期游戏,后来才发展成如此庞大的游戏公司。最初你经历了什么?有哪些起伏?是什么让你保持坚强、坚持下去?

30:31Epic 一直努力做的一件关键事情,就是做出别人没有在做的、与众不同的东西,尝试满足一小群人的需求,而不是一开始就在全球范围内与游戏巨头竞争。20世纪90年代,Epic 还是一家新公司,但艺电、动视和其他大型发行商都已经经营十年左右了,体量非常庞大,拥有巨大的零售发行网络。如果我做一款游戏,再试图说服他们发行,我怀疑自己根本没有机会。即使我做出了一款成功的游戏,我也不觉得自己能从中赚到多少钱,虽然他们也许能。因此,当时 Epic 真正独特的切入点,就是共享软件。这个想法很简单:如果用不同的方式发行游戏,就能靠第一章免费,触达比那些大竞争对手更庞大的受众。

31:24这算是后来免费游玩模式的一个开端。其背后的逻辑,无论当时还是现在,都同样成立:如果一个东西免费、任何人都能加入,它就会随着玩家把现实中的朋友带进游戏,在朋友之间传播。你也就有机会围绕它建立社群。所以,另一个经验就是,尽量减少人们进入你游戏时遇到的阻力,让游戏容易上手,而且有趣。至于另一个方面,嗯,我其实很幸运。《ZZT》是一款挺奇特的游戏,和其他游戏都不太一样。它的画面差得多,因为整个游戏模拟里,参与其中的都是文本字符、笑脸符号、希腊字母之类的东西。

32:09它们更像是对人物的符号化表示,而不是真实的人物。当时,真正使用图像、拥有有趣画面的游戏都已经发展几十年了。所以,《ZZT》根本没打算在画面上竞争,但它能在另一个方面竞争:带来成功、推动产品成功的,不只是我制作并作为三部曲推出的那三款游戏,而是我同时发布了一个编辑器,并且围绕它形成了完整的社群。你会看到,这个趋势不断重现。《ZZT》是其中一个例子,在它之前还有比尔·巴奇的《Pinball Construction Set》。那是一款20世纪80年代的苹果电脑游戏,让用户可以制作自己的弹球台。后来,一些全球最成功的游戏也走上了这条路,比如《我的世界》,你可以在里面建造自己的东西。

32:52还有 Roblox,如今的《堡垒之夜》创意模式,以及《堡垒之夜》虚幻编辑器。当游戏成为让其他人创作的平台时,就会出现真正的机会。我觉得,现在独立开发者最应该认识到的一点是,所有主要游戏类型里,都存在极其激烈的竞争。除非你恰好在某个具体方向上是世界最顶尖的,否则,你在一个已经高度竞争的类型里推出游戏,并赢得竞争的可能性很小。更有希望的做法,是推出别人从没做过的东西,真正独特,找到自己的受众,无论群体是大、中还是小,先在他们之中变得非常受欢迎,从中赚一些钱,再把钱投入进去,逐步朝自己的终极梦想扩张。我认为,从一个点子一步跳到巨大的商业成功,远不如经过多个步骤、持续把东西越做越好,最后抵达卓越的位置那么可能。

33:54而且要不断尝试,去做别人没有在做的东西。

33:58是的,没错。你看看各个市场,会发现只有少数市场,当前的领先者是较晚才进入的……

34:03看看各个市场。只有少数市场,当前的领先者是后来才入场的,而那往往是因为之前的领先者失败得非常惨。大多数情况下,在一个市场中取得成功、赢得竞争的公司,都是最早进入的第一家或第二家。他们只是不断巩固、扩大了自己的成功。

34:20这是很好的建议,也很有意思。不过,从人的层面来说,你作为一个开发者,独自坐在那里时,会不会孤独,会不会害怕?

34:29我会说,情况恰好与孤独相反。真正推动我把游戏发布出去的,是看到邻居家的孩子玩这款游戏,玩得很开心,说:“这东西真棒。”我看到他们乐在其中,笑着、指着屏幕,聚到一起,就想继续玩下去。

34:47太棒了。

34:49而且,人与人之间的联系,一直贯穿其中。我收到的不只是订单,大家还真的会写信来。20世纪90年代,我们还是会写信的。人们会说自己有多喜欢这款游戏,自己的孩子在怎样玩这款游戏,诸如此类。所以,我感觉与人们之间有着很紧密的联系。

35:06我觉得,很多企业之所以必须作出可怕的决定,是因为你可能要把自己所有的钱都押进去,去尝试一件不确定能否成功的事。而以这种方式创业,我非常幸运,因为它几乎不需要资本。所谓资本,也就是我靠给人割草赚的钱,买来的几千美元的电脑。风险并不大。如果这件事没成功,我想自己大概可以去弄清楚人们怎样找机械工程师的工作,然后走那条路。但游戏起步以后,订单开始寄来,人们写信告诉我他们喜欢这款游戏,我就知道自己会全力以赴,努力把公司做起来、取得成功。这会成为我的主要目标。

35:48我想大家应该都知道,Epic Games 创办于1991年,后来数次改变了游戏行业,虚幻引擎就是其中之一。所以,我们来聊聊它的起源吧。你说过,《德军总部》和《毁灭战士》推出时,改变了一切。带我回到那个时刻。

36:11是的,那是个很有意思的时期。在我最初几款游戏之后,Epic 开始招募开发者。他们通常是大学生、高中生,自己独立做东西,确实有能力,却没有发表作品的渠道。Epic 一直在做的,就是把世界各地最优秀的美术师和程序员配对起来。比如《爵士兔》(Jazz Jackrabbit;原文此处写作Chaz,后文明确为Jazz),由加州的高中生克里夫·布莱辛斯基,和荷兰的图形演示程序员阿扬·布鲁西合作。克里夫做过一款很酷的冒险游戏,阿扬则能做出惊人的图形效果,还开发过一个二维游戏引擎。Epic 把他们联系到一起,又找来了加州的音乐人罗伯特·艾伦。我们通过电话、调制解调器等方式合作,制作这些小型二维游戏,取得了相当不错的成绩。有不少人还在读书,每个月就能靠 Epic 协调合作、以共享软件方式发行的游戏,拿到几千美元的版税收入。

37:07当时一切都很顺利。公司有一间小办公室,我们在里面复制软盘,再把它们邮寄出去。但《德军总部》推出后,我们意识到,游戏的未来将属于三维。此前也有过很多三维实验,但效果都不太好。有的把迷宫预先渲染成三维画面,不能实时生成,你也始终只能朝北、南、东、西这几个方向看;还有一些使用向量图形,让细小的线框物体在画面中移动之类的东西。但《德军总部》是第一款速度足够快的游戏,以每秒30帧运行,真正让人感到身临其境。你会觉得自己就在那里,在德军城堡里与纳粹战斗。那种体验真的非常震撼,也非常有沉浸感。

37:51那时的三维图形还很原始,而 id Software 紧接着以惊人的速度推出了《毁灭战士》,使用了强大得多的三维引擎,里面还有楼梯。虽然那仍是我们所谓的“2.5D”,但环境和纹理都非常逼真,光照虽然只是近似模拟,看起来却极其真实。再加上出色的美术和音效,整个体验既真切又强烈。今天,如果你以现代玩家的眼光来看,手头的设备拥有每秒20万亿次浮点运算的能力,你可能会说:“哦,这也没什么了不起。”但在当时,它真的很惊人。

38:33对我来说——抱歉,先打断一下——我觉得《德军总部》是我人生中最令人惊叹的时刻之一。就像你说的,能够在一个三维世界里实时移动。我至今记得那种来回走动的感觉。那到底是一种什么感觉?你会觉得自己被带到了另一个世界。

39:01你会觉得自己就在那里。

39:02是的。

39:03尤其是把房间的灯调暗,把音箱的音量开大之后,它真的会吓到你。你会觉得,那个向你飞来的火球就要把你杀死了。那是个惊人的时代,因为我们此前从未经历过这样的东西,没有任何东西与它相似。你以前看电影,比如恐怖片,看的只是发生在那里的事情。而这次是你自己,是你自己身处那个三维世界。

39:30那么,当你意识到游戏的未来将属于三维时,这件事怎样改变了 Epic?

39:35嗯,一开始我非常沮丧。

39:37是啊。

39:37因为《毁灭战士》展现出的技术魔法,尤其令人难以置信,以至于我放弃编程长达半年。我当时想:“我永远都不可能与它竞争。完全不知道接下来该做什么。我们就继续做二维游戏,希望生意还能维持下去吧。”但卡马克的魔法就是如此。他做的并不只是一次领先一步的创新,而是同时实现了十几项突破,它们相互配合,以至于你无法把它们拆开,逐一弄明白各个组成部分。

40:05但后来发生了一件有意思的事。长期钻研计算机图形学的迈克尔·阿布拉什,写了一本介绍三维图形和纹理映射技术的书。他还在当时一本编程杂志上发表文章,解释其中的原理,展示了用汇编代码实现纹理映射、把三维图形绘制到屏幕上的方法。原来,它们其实是一些非常简单的东西。我当时就想:“哦,这个我能做。”于是,Epic 有好几个人各自开始编写三维图形代码,想把它弄明白。有一段时间,我们发现已经有几个人都在摸索,各自做着不同的部分。那时我们就决定:“好,三维图形和三维游戏将彻底改变世界,我们必须全力投入。”于是,我们从最好的二维游戏开发团队中,把最优秀的人聚到一起,来做一款三维游戏。其实当时我们并不太清楚自己在做什么。没有人发布过三维游戏,大多数人还在学习。但每个人都在尝试不同的领域,看看自己最擅长什么。就是这样一群人聚到一起,做出了《虚幻》。

41:09我最初自告奋勇,要为这个项目开发三维编辑器。詹姆斯·施马尔茨之前做过《Epic Pinball》。这不是什么离奇的游戏,而是当时一款二维共享软件游戏。他在大学期间做出了它,靠这款游戏的版税,每个月能赚大约3万美元。

41:25哇。

41:26因为大家都想要一款出色的弹球游戏,它获得了巨大的成功。但他是个多才多艺的人,游戏的代码是他写的,美术也是他做的,基本上什么都由他自己完成。那些代码,是三万行汇编语言。他最初打算编写三维引擎,而我来写编辑器。他把代码发给我,让我把它整合进编辑器里。我看到一大堆汇编代码,就想:“嗯,要不还是我自己来写吧?”于是詹姆斯转而开始用当时的工具制作三维模型和三维动画。

42:00克里夫之前为《Jazz Jackrabbit/爵士兔》做过很多设计工作,也搭建过关卡,后来开始学习三维关卡设计的基础。我在写这个编辑器,而克里夫·布莱辛斯基就是它的第一位用户,开始用它制作关卡。詹姆斯·施马尔茨则在绘制很酷的生物,把它们发给我,由我把它们实现到游戏里。后来,我们又找来一位动画师,让这些生物动起来。加入的人越来越多,到开发初代《虚幻》的高峰期,大约有20个人在做这个项目。这在当时已经是一个庞大的团队,也几乎把 Epic 的财务状况拉到了崩溃边缘。我们勉强维持,几次差点把钱花光,但不知怎么,总能撑过去。

42:38这个项目很疯狂。我们开发了三年半,却始终觉得游戏再过六个月就能发售。参与项目的大多数人,在这三年半里,每周都要工作70到80个小时。我们甚至不知道接下来会遇到哪些问题,因为当下的问题已经占据了我们所有的注意力。

43:00有没有一些时候,你开始失去信心,担心项目会拖得太久,公司会把钱花光?

43:08我们一直面临很大的财务压力,所以我总在为这件事担忧。但我完全相信,我们能解决所有技术和美术上的难题,因为我们知道各个组成部分是什么,剩下的很大程度上就是把代码敲进去、解决具体问题。我们也知道,总能把某个版本做出来、发布出去。一直让人感到特别有意思的,是在开发过程中不断发现新技术。当时《雷神之锤》已经发售,里面有一点动态光照,而《虚幻》把动态光照推进到了前所未有的水平:使用彩色动态光源,在某些情况下呈现静态阴影,也能使用不带阴影的移动光源。我们还弄清了怎样制作体积雾,让充满灯光的区域笼罩在雾中,光线会在雾里形成突出而柔和的辉光,改变整个关卡的观感。

44:04大量出色的技术汇集到一起,让这款游戏相对于当时最先进的水平,向前跨出了好几步。是的,真的很疯狂。我觉得,大多数公司都熬不过这种处境,但参与者出众的才能让这一切成为可能。Epic 经常做一些大多数公司可能会失败的事情。我们之所以能成功,并不是因为管理多优秀、规划多周密、融资多出色,而是因为参与其中的人拥有惊人的才能和意志力,一定要把事情做成。

44:38那么,跨领域合作这方面呢?就像你说的,美术师、工程师或程序员、设计师,所有人一起工作。在这20个人当中,大家在如此疯狂的工时下,是怎样相处、协作的?怎样才能让这样的团队像管弦乐队一样配合,真正把游戏做出来?

45:04是啊,这是游戏行业很独特的一个地方。普通的大型科技公司通常由工程和商业驱动,而游戏真正需要的是,各个创作领域最优秀的人一起合作。Epic 就是靠不断招募才华出众的人,自然成长起来的。我们的预算一直有限,从来无法靠提高薪水去竞价挖人,只能找到那些职业生涯刚起步、又极其出色的人,再把他们聚到一起。

45:37所以,大家对这些事情都很陌生,对于公司应该怎样运作,并没有什么先入为主的想法。把这些人放到一起,他们一边学习怎样作为团队合作,一边让各自的才能不断相互激发。没人有管理经验,大多数人在加入 Epic 之前都没有发布过游戏。我们就是一边往前走,一边摸索。

46:02但这始终是一个不断迭代的循环。每天我们都会做出好几个新版本:重新编译,加入一项新功能,或者修复一些错误,再把它交给美术师。他们改进自己的关卡,继续制作内容。然后我们看到他们在关卡里做的东西,就会想:“哦,现在我知道你需要什么了。”我们不断改进工具。这个迭代的过程,以及它推动产品进步的速度,就是游戏成功的关键。如果你的迭代周期很慢,比如每周才做一个构建版本、每周才完成一次迭代,那么到项目结束时,你的成果会远远不如那些每天都做出新东西的游戏公司。这就是我们一起创造的魔法。让它真正运转起来的,没有别的,就是热情,以及每个人对项目的全心投入。

46:49我听说你现在仍然在编程。不过,当年你究竟写了多少代码?你提到的工时大概非常夸张。所以,聊聊你的工作环境应该会很有意思:20世纪90年代开发《虚幻》时,蒂姆·斯维尼的一天是什么样子的?

47:07我们慢慢形成了一套能让效率最高的作息安排,而这通常意味着起床比较晚。一般中午左右开始工作,一直做到凌晨两点,有时到三点。

47:24不错。

47:24我当时的生活里没有别的事情,所以基本就是工作、睡觉,偶尔吃点东西。我发现,自己每晚始终需要睡八到九个小时。如果没睡好,就会变得像行尸走肉,远远达不到最佳状态。所以,睡眠总是必需的。但我不需要生活里再有其他事情,编程本身就让人精力充沛、深深着迷。项目那三年半里,我大多过的都是这样的生活,时间主要花在编程上。我估计每周大概有60小时在写代码,五小时用来和其他人协调、迭代,坐到他们身边,看屏幕上在发生什么,弄清他们需要什么。可能还有五小时处理业务。当时分工很好,没有庞大的高管团队,基本上就是我负责公司的技术和开发部分,马克·雷恩负责商业部分:谈合作,把信用卡刷到额度上限,去世界各地寻找收入来源,给公司提供继续经营的资金。

48:27当时用的是什么编程语言?C 吗?你提到了那一大堆汇编代码。决定虚幻引擎用什么语言编写时,你是怎么选择的?

48:39我从小学习编程时,最喜欢的语言是 Pascal。

48:42不错。

48:43为了获得最高的性能、用上最新的操作系统功能,我在做第二款游戏《Jill of the Jungle》时,不得不转向 C。那是一款有点任天堂风格的小型平台游戏。所以,最初开发虚幻引擎时,用的是16位 Windows 和 C 语言。在第一年里,项目转向32位,先用了 DOS 扩展器,后来又用了 Windows NT,我也把语言换成了 C++。这个转变大大简化了代码,让原本非常复杂的一堆代码变得简单得多。因此,虚幻引擎几乎整个开发过程,其中大约两年半,都是在32位环境下用 C++ 完成的。这在当时完全属于最先进的技术。对于经历过电脑远不如后来可靠、经常崩溃的年代的人来说,32位保护模式简直像魔法一样。

49:38是啊,事实证明,这个选择非常正确。在那些语言中,C++ 最后成了以高性能为导向的主流语言,并且一直延续至今。

49:50是啊。因为它能在大规模应用中解决所有问题。解决问题的过程往往需要人手工处理、非常痛苦,但最终总能解决。

49:59是的。

49:59其他许多语言,在不少理论层面上做得更好,也更适合某些使用场景。但你不能用它们完成所有事情,这就形成了很大的限制。

50:10好,接下来问几个有点傻的问题:你当时用一个显示器,还是两个?你对键盘挑剔吗?

50:21好。

50:21你对椅子挑剔吗?具体是怎样的?我们来把这个画面描绘出来。

50:26好的,我在这方面经历过一次很大的转变。

50:27好,太棒了。

50:27一开始,我还挺随意的。我有一堆……我买的都是二手电脑,因为通常能用新电脑一半的价钱买到,性能也够用。所以,我一直在一台旧486电脑上开发,显示器好像是15英寸。那个工作站的配置不怎么样,但非常省钱。开始做《虚幻》以后,我意识到自己必须编写大量代码,必须以最高效率工作,因此得围绕尽可能多地产出,重新安排整个生活。那时,我才意识到,花钱购买好的设备,其实是一笔很好的投资。这里说的不是几百万美元,更不是建设 GPU 计算集群可能要花的几十亿美元,只是买一些基本硬件。于是,我买了当时能买到的最大的 CRT 显示器:24英寸,大概重100磅。安装完之后,我的背疼了一个星期。不过,它给了我1920×1200的分辨率。

51:24哇。真不错。

51:24那是在1996年。

51:24当时最先进的水平。

51:281996年,这确实很酷。所以,我升级到了一台90兆赫的奔腾电脑,并在上面做了大量编程工作,就是那台90兆赫的机器。它们是当时主流的消费级电脑,我也在上面优化虚幻引擎的软件渲染器。奔腾是消费级计算机中最早采用超标量架构的处理器,可以一次执行最多两条指令。如果非常仔细地编写汇编代码,就能获得最高的吞吐量。我把纹理映射代码压缩到了六个 CPU 周期,共11条指令。屏幕上的每个像素都要执行这些操作,而这点性能刚好够用。后来戴尔推出了一批新工作站,英特尔也刚刚发布了奔腾 Pro,也就是首款乱序执行处理器。于是,我基本上买了当时用钱能买到的顶配,花了7000美元。1996年,我的电脑就有1GB内存。

52:25哇。

52:25还有一颗200兆赫的 CPU。它把编译速度提高到了原来的三倍,让我的工作效率大幅提升。《虚幻》开发期间,我一直用的就是这台机器,最后也是用它完成发布的。

52:37顺便说一句,90年代的人要是看到这台工作站,一定会惊呆。我太喜欢了。是啊,是啊。你写代码时,会在多大程度上考虑硬件?对不了解虚幻引擎的人,我想先说明一下:它的渲染好像都是用软件完成的,不使用专门的图形硬件。不过,你当时有没有尝试针对硬件进行优化?这是我的理解,也许你可以纠正我:你有没有考虑过硬件层面的优化?

53:02当时是这样的:虚幻引擎的大部分开发工作,发生在真正的第一代 GPU 问世之前。3dfx Voodoo 1 是第一款相对于软件渲染,真正带来显著性能提升的 GPU,也是第一款真正有明显收益的 GPU。它是在开发接近尾声时出现的,我们很快就加入了支持,但它并不是我们从一开始就瞄准的目标。因此,开发工作的重点,就是把引擎本身做出来。引擎有两个部分:一部分是负责模拟、物理等内容的各种游戏运行系统。这些都是用抽象层次很高的 C++ 代码编写的。对于这些代码,可维护性和性能同样重要,因为我们需要随着时间推移,开发出大量系统。

53:46但真正的一个瓶颈,是图形渲染。渲染单个像素的成本很高,所以你必须想尽一切办法,优化屏幕上像素的渲染。我们当时讨论的,就是要花多少个 CPU 周期。比如,你说 CPU 运行在1GHz,或者类似的频率,就是每秒十亿条指令。那么,要把一个像素显示到屏幕上,需要运行多少条指令?不断把这个成本降下来,一直是一项挑战。图形程序员之间也有一种竞争,大家经常发邮件,互相炫耀自己发现了什么新技术,能进一步降低成本。阿布拉什最初文章中的方法,渲染一个像素需要12个 CPU 周期,而后来大家想办法把它降到了六个,有时甚至是四个周期。这里面涉及缓存、内存层级等许多不同的权衡。

54:39那个时代简直像魔法一样:一个人真的能够准确理解 CPU 底层在做什么,并编写完全针对它的代码。而现在,这种可能性在很大程度上已经失去了。如今我们讨论软件优化,主要谈的是启发式方法,以及从统计上说,这次内存访问有多大概率命中缓存,这种算法为什么比另一种快。因为现在的 CPU 拥有非常先进的乱序执行能力,你已经无法逐条指令地精细控制实际发生的事情,只能管理代码整体的性能。所以,那是一种多少已经失传的技艺:程序员曾经能够完全掌控机器,如果肯下功夫,就能在特定情况下创造奇迹。有些人会怀念它,有些人则不会。

55:27不过,在 GPU 和 ASIC,也就是专用集成电路上,这门技艺似乎仍然有价值。也就是努力理解硬件的细微差别,以及怎样真正把它优化到极致,无论是用于机器学习,还是用于超逼真的实时图形。是这样吗?

55:48是的,完全如此。只是优化问题转移到了别的地方。

55:55是的。

55:55比如 Nanite。这是 Epic 一位非常出色的工程师布赖恩·卡里斯开发的虚拟化微多边形几何系统。它就是那种历时多年的优化工程,需要他从硬件最高层一直理解到底层,才能弄清楚,怎样让这种突破性的技术真正以尽可能高的性能在 GPU 上运行。

56:23那么,Nanite 这个系统——我们把时间稍微往前跳一跳——就来到了今天的虚幻引擎5。它就是负责处理几何的系统。

56:32是的。

56:32也就是说,从几何的角度渲染这个世界。这里面有很多层,我们大概会逐步谈到。不过其中一层是,你必须真正创建周围世界的几何结构,而且要实时、高效地完成。优化它的方法有很多种。你能简单讲讲吗?

56:49可以。借助如今先进的美术工具,要创建一个拥有数十亿个多边形的场景,其实很容易。难的是怎样高效地渲染它,因为你不可能在一帧里渲染数十亿个多边形。基本目标是,生成一幅与完整精细几何渲染结果无法区分的图像,而真正把全部细节都渲染出来,成本会高得离谱。因此,挑战就是把渲染的每个组成部分,包括几何、光照等,都简化为能够实时运行的技术。它们要足够高效,又能逼真地呈现你周围的世界。所以,物体离你近时,应该用比远处多得多的多边形来渲染。但数学里有一个很有意思的原理,叫作奈奎斯特采样定理。它说,如果你要重建一个信号,需要采集的数据量其实有一个上限。如果要以某个分辨率渲染纹理,所需的数据就永远不必超过这张纹理在屏幕上所占像素数的两倍。这就是所谓的奈奎斯特极限。

57:49因此,计算机图形学的一项挑战是,物体既可能离你极近,也可能离你极远,你要始终能够生成数量恰当的几何细节:足够逼真,让人无法与现实区分,但又不超出必要的数量。对于几何,基本想法是,如果每个像素渲染两个三角形,得到的图像就应该与每个像素渲染几千个三角形无法区分。如果每个像素少于两个三角形,你就会开始看到细节损失带来的可见瑕疵。

58:22GPU 在许多不同的处理管线里,都有很出色的硬件,但它们的功能都相当固定。有像素着色器硬件,有几何处理硬件,还有三角形光栅化硬件。GPU 的一个局限是,三角形光栅器是为比较大的三角形设计的。如果你构建或渲染一个覆盖10个像素的三角形,效率就很高;但如果一个三角形只覆盖一个像素,效率就很低。因此,布赖恩的一项突破,就是设计了一条完整的管线,绕开 GPU 里的光栅化硬件,直接处理像素:通过在像素着色器中进行一些光线追踪和几何求交计算,算出应该怎样处理那个像素。所以,我们不再使用三角形管线,而是使用像素管线。

59:09哇。

59:09而且,得到的结果更好。

59:12这是因为 GPU 中三角形光栅器的局限。很有意思。就像你说的,为了表现近处物体的细节,你需要很小的三角形。对有些人来说,这也许很显然,但问题不只是物体离得近不近,还取决于你在看哪里。人眼、人类的注视和注意力机制,决定了你想呈现多少细节。人很可能集中注意的东西,你希望它有极高的分辨率;而其他东西,包括由于距离较远的那些东西,可以使用更少的几何细节、更少的纹理,也就是包含更少的信息。

59:56对,没错。但这类挑战还有很多。事实证明,把单独一帧渲染得完美,比让一连串运动中的画面都看起来完美,要容易得多。早期尝试做到这些的算法,一个常见问题就是细节跳变。你会在一段时间里使用某个数量的三角形,然后切换到另一个数量,就能看到明显的过渡,画面仿佛被抖了一下。这种瑕疵很让人难受,会把你从游戏里拉出来。因此,Nanite 的一个巧妙权衡,就是怎样避免这些可见的跳变,把它们降到这样一种程度:虽然从统计上说它们仍然存在,但观看画面的人实际上察觉不到。

60:38看着 Nanite 这样的东西,我是说,有很好的博客文章,也有很好的技术细节说明。但你能感觉到,即使在那些细节的背后,仍然有难以置信的工程工作。这太酷了。你实际体验到的,是美丽而细致的场景;而它背后,是惊人的工程能力,为你带来实时的模拟,对现实极其逼真的模拟,比如光线会改变一切。这会让我回到当年玩《德军总部》时的那种感觉,只不过更强。你能彻底沉浸在那个世界里,甚至忘掉现实世界的存在。究竟什么才算现实世界呢?从感受上来说,这种优秀工程与精彩叙事的结合,真的太酷了。知道这些东西背后有这样的团队,很令人开心。你们还公开了许多技术细节,这也很好。至少对我这样的人来说,看到这些非常鼓舞人心。

61:45虚幻引擎是一项很有意思的创造,也是你下的一次巨大、大胆而疯狂的赌注。也许我们应该向不熟悉这个领域的人解释一下,虚幻引擎究竟是什么。我会说,它改变了游戏行业。不过,在1995年,把大部分精力投入游戏引擎,而不是游戏本身,这的确是个大胆的选择。

62:12是的。一个引擎,就是一大套代码和工具,是一个庞大的软件包,提供了构建各种三维图形应用所需的功能。游戏开发者用它制作游戏,这也是最主要的用途。但好莱坞的电影和电视制作也会使用它,在拍摄布景中实时生成三维场景,或者做预演。汽车制造商会在汽车被建造或制造出来之前,用它进行可视化;建筑师会在建筑落成之前,用它预览设计,各类工业设计师也会用。它提供了所需的各种三维模拟功能:不只是制作高度逼真的三维图形,还包括物理效果、物体之间的交互,让事情以接近现实世界的方式发生。它也支持非常广泛的风格,从皮克斯那样的风格化动画,到卡通渲染,再到照片级真实感。凡是需要实时三维图形的地方,都可以使用它。

63:17其中也包括生活在那些三维世界里的人类。我们大概会花不少时间,讨论制作超逼真人物时涉及的各种细节,因为我们人类非常关心其他人的外貌,他们怎样传达情绪、作出表情、说话,诸如此类。所以,是的,这里面既有静态三维物体,也有动态三维物体;而在动态物体里,又包括变化极其丰富的人类。

63:53所以,这一切都包括在内。你必须创造出一个引擎,去模拟这个我们熟悉、热爱的美丽世界。但在早期,你看到了《毁灭战士》,想要创造这样的世界,还想开发一个引擎,不仅支撑《虚幻》这款游戏,也能支撑未来的游戏。那么,你是怎样着手的?当时在想什么?我想在这件事上多停留一会儿,因为决定以一家公司的力量开发游戏引擎,真的是个疯狂的赌注。

64:27是啊。这种理念从《ZZT》就开始了,后来一直延续。我们不只是在制作一款供玩家游玩的游戏,还在开发既能用来做这款游戏、也能用来做其他游戏的工具,服务于使用这些工具的所有美术师和设计师。因此,这种理念在《虚幻》开发非常早期就已经形成了。我在为克里夫·布莱辛斯基这样的关卡设计师,以及詹姆斯·施马尔茨这样的美术师制作工具。后来我们开始宣传游戏,当时还以为再过六个月就能发售,就不断公布截图之类的内容。其他公司开始打电话来,说他们也想制作三维游戏,但没有相应的专业能力,希望获得我们三维引擎的使用授权。

65:16这成了 Epic 历史上最精彩的转向之一。MicroProse 打电话给我们的副总裁、长期负责业务的马克·雷恩,说想获得引擎授权。马克·雷恩的反应是:“什么?你想获得什么授权?引擎?什么引擎?”对方于是向他解释,究竟想获得什么的授权。他说:“哦,那个引擎。对,对,那个可很贵。”

65:38但这正是让 Epic 在那三年半里撑下去的关键因素之一。我们开始把引擎授权给其他开发者。MicroProse 买了两份授权,我们由此拿到了50万美元。另一家公司 GT Interactive,也获得了引擎授权,去制作另一款游戏,我们也收到了他们的钱。所以,我们有了一条收入来源:其他开发者制作的其他游戏,反过来资助虚幻引擎的开发。因为这些客户是公司的生命线,我们从一开始就非常认真地对待引擎业务。我们建立了邮件列表,让合作伙伴能够向我们提问。参与游戏制作的所有开发者和美术师,也都会协助客户。大家都很重视这件事,因为这是我们的资金来源。由此形成了 Epic 的双重精神:一边开发技术、支持游戏开发者,一边制作游戏、服务玩家。它一直延续下来,而且随着时间推移不断壮大。

66:36能不能再回到你写程序的那部分?有哪些有意思的技术挑战,是你必须克服的?你提到了动态光照,构建这样一个三维世界,再去解开其中的谜题:在那个时代,究竟应该怎样把它做出来?当时,像卡马克和你这样的人,正在做这些事情。这是一片完全开放、还没有明确规则的西部荒野。那么,你遇到过哪些有意思的技术难题?

67:06有很多。其中一些能直接在屏幕上看见,另一些则藏在幕后,但同样需要大量创新。所有图形技术,都是非常有意思的挑战。早期的虚幻引擎在使用构造实体几何、配合实时编辑器来搭建环境这方面,比《雷神之锤》引擎走得远得多。这是个很有意思的技术难题。基本想法是,如果搭建世界只能不断往里面添加物体,就会非常繁琐。假如想做一扇门,你需要添加十几块门框部件,再把许多墙体组合成正确的形状。要是能直接从一面墙开始,把门洞减出去,不就容易多了吗?因此,我们做出了一套既能向世界中添加几何体、又能减去几何体的方法,引擎会完成其中的所有计算。而我早就觉得,这种事情应该是可以做到的——

68:03我很早就觉得它应该能实现,但真正动手时,还是花了整整30个小时连续写代码,才弄清楚为了让它运转起来,代码中需要处理的各种特殊情况。在这30个小时里,我把构造实体几何的功能真正做出来、运行起来了。

68:18我开始做这件事,下一次和詹姆斯·施马尔茨见面,就把工具交给了他。他的反应是:“好吧,我觉得你这肯定是在作弊。”你创建一个巨大的圆环体,再添加一个与它相互套住的巨大圆环体,然后减去一个圆柱体,只用三次操作,就能做出一个非常复杂的组合物体。他说:“哇,我简直不敢相信。”我说:“对,我们把它搞定了。”第一次看到它运转起来,真的很酷。这大概是第一次有人实时实现构造实体几何,但它同时也是一个极其实用的美术工具,所有美术师都很喜欢,立刻开始使用它。

68:52你能具体讲讲那次连续30小时的工作吗?以我对计算几何的了解,做这样的东西,从你的角度看,也绝不是件容易的事。这里面有各种不确定性、尚未解决的问题。光是算法层面,怎样高效实现,就已经很难了;再加上编程里总会有的调试问题,要熬过那些微妙、棘手的地方。当时又没有什么工具,能把正在发生的一切都直观地展示清楚。你大概还在用某个很糟糕的编辑器。这里面有太多阻力了,所以,那30个小时大概会很难熬。真的很难熬。

69:44大脑的工作方式,会随着状态而变化,对吧?有些问题需要你头脑清醒、精神饱满地去思考:你已经把一堆逻辑部件组合好了,接下来只需要写大量代码,让它们配合起来,在许多不同算法之间接通大量数据。我觉得,大脑拥有的处理能力,远远超过我们只靠思考“下一行该写什么代码”就能直接调用的那部分。当你连续工作很久,进入缺乏睡眠的状态时,反而可能更直接地接触到那些底层知识。

70:25这很有意思。

70:26是的,因为睡眠不足有一些经过研究的症状,其中之一就是短期记忆减退。你工作时,不再那么容易记起自己刚刚输入的代码,但大脑却由此腾出空间,去思考其他问题。我是经过很长时间,才建立起这种直觉的。这项技术的基础,是二叉空间分割树,也就是 BSP 树。这种数据结构由计算机图形学研究者布鲁斯·内勒提出。卡马克注意到了它,并在《毁灭战士》里用得非常出色。我也开始研究它,并在几何和渲染中使用这种技术。但当时基本都是不断向场景中添加几何体,到处都有重叠的多边形,效率很低。

71:13我想到,如果有一棵 BSP 树,就能用一种非常高效的方式来做构造实体几何。为此,你必须把不同几何体相互组合的方式拆解清楚。我把它分成了14种情况,其中大多数很简单,很快就写出来了。但越接近最后,情况就越复杂,比如:怎样处理共面的多边形?它们处在同一个平面里,有时朝向相同,有时朝向相反。什么情况下应该保留,什么情况下应该消除?诸如此类。为了输出真正高效的几何结果,我就一直往下攻克,主要靠推导,但也有一些反复试验。有时你只能把各种可能性都试一遍,看看哪种能行。是的,我就这样把它写出来了,而且真的能运行。第二天,我带着疲惫走进办公室,心里想:“哇,它真的做成了,不是我在做梦。”

72:04你还得考虑各种边界情况。几何问题麻烦的地方就在于,大概总会出现各种奇怪的多边形,需要你去处理。所以,你会在脑子里想象这些边界情况,思考怎样既能把它们考虑进去、正确支持它们,又不让算法因此变得低效?

72:24是的,写出99%正确的软件并不难。真正困难的是剩下那1%,问题往往就藏在这些细节里。

72:35光照方面呢?还有没有其他有趣的——

72:37有意思的答案是,物理定律我们都知道,所以,计算机图形学中的任何事情,实际上都很容易实现。但直接求解物理定律,速度会慢得惊人。我们寻找的是近似方法,而不是完整解法,因为我们需要比蛮力计算快一百万倍的方法。

72:58应该解释一下,场景里的光照物理,无非就是拿来大量光子,让它们到处反弹。这就是光的工作方式。但这会非常低效,因为光子很多,反弹的次数也很多。

73:11是的,光子追踪研究的,就是根据场景里的全部光线,以蛮力方式计算屏幕上的像素。它能运行,结果也正确,就是把物理定律实现出来而已。但它比我们采用的方法慢数百万倍,甚至数十亿倍。卡马克当时已经想出了很酷的光照算法,包括物体移动时的实时光照,而我在这方面还没有做得那么深入。开发虚幻引擎时,我意识到,CPU 的运算能力远远不足以让我们根据所有会影响某个像素的光源,计算屏幕上每个像素的光照。我们当时的纹理映射已经压缩到六个周期了,根本负担不起再花30个周期去算光照,因此,答案只能是某种近似方法。卡马克在《雷神之锤》引擎里采用的,就是光照贴图。我们不去为每个像素计算全部光照,而是制作一张巨大的纹理,像墙纸一样覆盖在场景的所有墙面上。假设每隔一英尺,只计算物体表面那个网格点的光照值,而不是处处都算,然后在它们之间进行线性插值,就能得到一个效果相当好、速度也够快的光照方案。虚幻引擎的许多光照技术,都是建立在光照贴图之上的。我们加入了彩色光照,让场景里可以有彩色光源。后来又意识到:“既然我们在光照贴图上处理,每隔一英尺的世界空间才算一次,而不是每个像素都算,那实际上可以进行一些相当昂贵、需要几百个周期的计算。”

74:49我们加入了大量复杂的光照效果,比如火把闪烁、水面反射形成的焦散、明暗起伏的灯光、闪动的灯光,以及其他各种效果。我还创建了一套把它们组合起来的系统,任意数量的光源都可以使用这些功能。接着,我实现了一种阴影算法:从光源向物体表面上的某个点发射一条光线,看它是否与其他几何体相交。如果没有相交,光就能照到这个物体;如果发生相交,说明光先碰到了别的东西,那么这个物体上的那个像素就应该处于阴影中。我做了一个实时版本,运行速度大概是每秒半帧。我以这个速度在场景里走来走去,发射带光效的投射物,观察动态光照,心想:总有一天,电脑会快到足以运行它,但不是今天。于是,我做了一个非实时版本,预先计算所有光照,后来又意识到:“等等,如果预先算好了物体上的阴影,那么只要光源的位置不变,光照本身仍然可以动态变化。”这样,火把的闪烁就能带着阴影一起变化。我弄清了哪些动态和静态光照的组合,在当时的电脑上真正可行,再把它们提供给美术师。这件事真的很棒。我不断把这些功能写进引擎,开放给美术师。每天,他们都会发现某个下拉菜单里又多了几种光照选项,便开始使用,做出一些我从未想过可能实现的东西。

76:18作为一个开发引擎的程序员,这始终是最酷的事情。你可能以为,自己知道正在制作的这个功能意味着什么,但美术师非常聪明。当他们开始把各种功能组合起来,同时使用时,总会让你发现:你所提供的能力,能做到的事情远比自己原先预想的多得多。

76:36这就是艺术家的天才之处。给他们一些限制,他们却能在这些限制之内,创造出你原先完全无法想象的东西。工程技术和艺术创作之间,这样的结合真是太美了。

76:51没错,而且这是永恒的。文艺复兴时期的画家会用颜料做些什么?早期的游戏美术师又会用早期引擎做些什么?每个人都在探索自己所使用媒介的能力,而你也就看到了革命的发生。

77:05这真的让我大开眼界,太有意思了。那雾呢?你提到了雾,到底该怎样实现?你说过《虚幻》的初代版本就有雾效。

77:16是的,事情挺有意思。芬兰当时刚成立了一家图形硬件公司,他们公布了一张截图,展示自己的 GPU 能做什么。画面里有一个充满体积雾的场景,是个有雾的房间,里面布置了一些光源。现实世界里,如果出现这种情况,你会看到灯光周围有一圈辉光,因为光把周围的雾照亮了。不过,随着光线在雾中传播,雾被照亮的程度会逐渐减弱,因为雾会吸收一部分光。离光源越远,衰减就越明显。如果一堆彩色光源在这样的空间里彼此重叠,效果简直像魔法一样,就像在有雾的夜晚,头顶上方亮着路灯。它有一种超现实的美感。我当时想:“天哪,他们已经实现了实时体积雾,我也一定要自己搞明白。”于是,又有了一次连续30小时写代码的经历。

78:07真不错。

78:08核心在于,我意识到,这里有一个光照函数:空间中某个点受到的光照,会随着它与光源之间距离的平方倒数而衰减,对吧?这个平方反比关系来自牛顿,也适用于光照。我必须弄清楚,雾和光之间的相互作用,是要沿着从眼睛位置到世界中某个表面点的视线来计算。这条视线穿过雾,你沿着它,把雾在各个位置受到照射而贡献的光,不断累积起来。

78:41其实,我在机械工程专业里已经学过这种东西,只是当时并不知道它能用在这里。这就是线积分:沿着一条线,对某个函数积分。它正是用来在连续的空间和时间里,累积函数值的。我做了很多数学计算,意识到:哦,原来是这个积分。然后我去翻各种积分的参考书,幸好前人早已经把这些问题解出来了。我发现,这个经过变换的1/r²函数的积分,可以用 r 的反正切来求解。根据眼睛的位置,以及最终看到的那个表面点的位置,算出一些参数,就能计算沿途究竟会累积多少雾效。当然,你不可能对每个像素都这样算,因为那需要几百个 CPU 周期。我们只好在类似光照贴图的结构上计算体积雾,在世界中按每平方米来采样,而不是逐像素计算。这个计算量我们能承担得起。我们做出了体积光照,把它交给美术师,他们就开始制作拥有丰富体积雾细节、仿佛有魔法般的实时关卡。几十年后,我和当年开发那款硬件的一位工程师交谈,问起他们的体积雾,还告诉他,那张图怎样启发我自己实现实时体积雾。他说:“哦,不,我们其实作了假,那只是用3D Studio Max预先渲染出来的。”

80:06太棒了。真的太棒了。这件事在很多层面上都让人受到启发:你看见某件事也许能实现,哪怕它当时其实有点像障眼法,最后你却真的把它做了出来。听到这样的故事,真的很鼓舞人心。明明有那么多不确定性、那么多限制,你们还是找到办法,让这些效果实时运行,创造出了《虚幻》里的那个世界。也许我们可以先停一下。你已经几次提到约翰·卡马克了。作为当年同样开拓游戏行业的人,你最欣赏他的什么?

80:43约翰有一种非常独特、极其强烈的投入精神,一心要让自己的代码实现最好的结果,而且对以前写过的代码毫不留恋。他做过一些传奇般的工作,最终让实时计算机图形学取得了绝对意义上的突破,但那些成果并不是第一次尝试就做出来的,往往是第七次、第八次。他会一次次重做:试一种方法,找到更好的思路,就把旧的扔掉,再重新构建,不断重写代码,直到找到某个问题的最佳解决方案。我觉得,这是每个程序员都应该学到的经验。如果某件事非常重要,它的性能、质量或能力,对产品至关重要,那就不断迭代,直到做到尽善尽美,不要觉得第一个或第二个方案已经够好了,就停下来。

81:40最终,你和他都在某种程度上定义了游戏的未来,定义了游戏世界的未来。看到这一点,真的很美,很有意思,也很鼓舞人心。在那么多不确定性、那么多限制之下,你们还是找到了办法。其实,这种情况一直延续到了今天。硬件的进步确实惊人,但要对周围世界进行超逼真、高度动态的实时渲染,依然非常困难,仍然需要你提到的各种优化。也许你可以讲讲,虚幻引擎从第一代一路发展到今天的5.5,或者5.6,是怎样的一段旅程。这30年里,你一直在创造虚拟世界。当底层硬件的性能呈指数增长时,让一个游戏引擎持续演化30年,是怎样的体验?哪些东西变了,哪些普遍适用的规律却始终没变?

82:50这是一段令人惊叹的经历。30年前,没有人预料到,硬件性能会在这段时间里取得我们实际看到的进步。综合多核心、更高的时钟频率,以及更强的并行能力,CPU 性能大概提高了十万倍。如果航空技术也能实现这样的进步,我们现在就能去附近的恒星旅行了。

83:12去半人马座阿尔法星,是吧。

83:13没错。图形性能的进步还要更大。从当年在90兆赫奔腾 CPU 上运行图形程序算起,30年里,我们实际可用的 GPU 总体性能,真的提高了大约一千万倍。这也让我格外体会到,在一代代引擎的开发中,有些部分始终跟上了技术进步,而虚幻引擎的渲染团队,就是真正创造奇迹的人。几乎每一代引擎,我们都会替换大部分渲染代码。在不同时期,由不同负责人、不同技术高手,针对最新一代硬件,重新思考、构建并优化整个系统。

84:03第一代虚幻引擎,是为软件渲染开发的。后来到开发周期末期,Voodoo 1 出现了,我们虽然加入了支持,但并没有充分利用它的能力。第二代引擎的重点,则是把当时最新的 GPU 硬件加速功能引入引擎,并继续向前发展,加入载具等新功能。这些都发生在 GPU 发展的早期,当时它还没有真正突破所有人的想象。真正的突破,出现在 DirectX 9 和可编程着色器带来的能力上:你可以自己编写在 GPU 上运行的代码,决定屏幕上每一个像素的颜色,而这些 GPU 代码的速度,比我几年前在90兆赫奔腾上编写的同等功能代码,真的快了100倍。

84:55DirectX 9 那一代技术,简直是天赐的礼物。Epic 长期以来的一位技术高手安德鲁·谢德克,围绕实时像素着色、实时光照,以及采用多种技术的动态阴影,编写了虚幻引擎3渲染器的核心。他还让渲染器支持多线程,以利用当时开始出现的早期双核 CPU 的部分能力。这带来了极其巨大的画面升级。虚幻引擎4又作出了许多改进,持续增加功能,在光照和几何方面,给美术师越来越多的选择,帮助他们创造真实感。

85:40然后,我觉得,我们最大的一次跨越,可能发生在虚幻引擎5:Nanite 提供了微多边形几何方案,Lumen 提供了全局光照方案。对于希望追求那种效果的美术师来说,它们真正跨越了从“有游戏感的计算机图形”到肉眼所见的照片级真实感之间的鸿沟。这就是它的发展过程。图形方面的进步绝对令人惊叹,音频和其他许多方面也一样。但引擎也有一些部分,自从我在1998年编写、发布的那个版本以来,并没有太大变化。文件管理系统优化过好几次,却没有被彻底重新设计。网络系统,也就是客户端与服务器之间怎样通信、怎样协调游戏状态,仍然是从我当年写的东西演变而来的,现在多少显得有点过时了。你在《堡垒之夜》里仍会看到一些网络问题,比如观战时,不知道为什么,有些参数没有更新。这就是因为那种网络模型本身存在信息丢失的特性。

86:51随着时间推移,积累起来的最大限制,就是虚幻引擎的游戏模拟采用单线程。我们运行的是单线程模拟。如果你有一颗16核 CPU,我们也只使用其中一个核心,来运行游戏模拟和复杂的游戏逻辑。原因在于,单线程编程比多线程编程容易好几个数量级。我们不希望让自己、合作伙伴或者整个社区,都承担多线程带来的复杂性。但随着时间推移,这越来越成为一个限制。我们正在认真思考、开发下一代技术,也就是虚幻引擎6。在那一代里,我们会真正解决一些贯穿虚幻引擎历史的核心限制。考虑到这段时间里计算机领域积累的所有知识,我们应该为这些系统建立一个更好的基础,配得上现代技术的水平。

87:46这真是一个难度大得惊人的工程问题。虚幻引擎的每一代版本,背后那些出色的团队似乎都愿意扔掉大部分代码。也许我说得有点夸张,但基本上就是把旧方法放下,像你刚才谈卡马克时那样,重新开始。比如 Nanite 和 Lumen,不断针对当前硬件优化,甚至重新思考整个系统该怎样运行,从单线程转向多线程。天哪,这太有挑战了。

88:25在某种程度上,这也是为什么,也许连所使用的编程语言都得重新思考,好让许多事情能从头考虑。我们之后会聊到。很有意思。不过,能不能先继续说虚幻引擎5?我看了许多资料,尤其是 GDC 2024 上的“State of Unreal”演示。有些部分让我兴奋得忍不住笑出来。我们可以聊聊其中的各种东西,稍微过一把技术迷的瘾。大家真应该去看看那段视频。演示里甚至谈到了泥土,而且逼真到了惊人的程度。那是《Marvel 1943》的演示,把漫威宇宙放进了冬季、被纳粹占领的法国。那里有雪,又是历史上一个非常紧张的时期。画面真的营造出了那种感受,把你带到了那里。构成这种体验的东西太多了,雪也是其中之一。

89:31光是观察泥土,就是展示如何实时给场景增加大量细节的一种很好方式。那种细节仿佛没有尽头,让人觉得:这是真的,真实到了极点。我记得,他们在演讲中解释了几何是怎样生成的、光照是怎样处理的,诸如此类。也许你可以就泥土来讲讲?对不熟悉的人来说,要做出这种超逼真的效果,需要哪些组成部分?纹理、光照、几何,以及 Nanite、Lumen 等技术,是怎样像一支美妙的管弦乐队一样配合,实时呈现出1943年纳粹占领下的法国的泥土的?

90:30是啊,屏幕上同时发生着很多事情。这幅画面真正的功臣,不是 Epic,而是合作搭建这个环境的美术师和技术美术师。我们之所以在 GDC 上展示它,正是因为他们的才华让结果远远超出了我们原本以为系统能做到的程度。这就是计算机图形学的魔力。让它如此精彩的,不是某一个功能,而是十几种技术相互配合。它们的配合方式,又让你很难真正把各个组成部分单独辨认出来。

91:05这里有一件非常关键的事——哦,对,现在能看到它被关闭时的区别,是光照在起作用。支撑这个场景的 Lumen 光照系统,会在不同尺度上进行不同类型的光照计算。这是丹尼尔·赖特的工作,他用了十年时间,不断推进光照技术的前沿。他当时提出的想法颇有争议:如果能设置足够多层次的光照计算,就能让全局光照在各个尺度上协同工作,从场景最高层级、建筑物投下正确阴影,一直细化到这里泥土上的微小细节,而且不同层级之间没有可见的边界。为了让光照做到这一点,背后积累了大约十年的基础工作。尤其是你看到冰和泥土之间那些精细的阴影时,这里用到了屏幕空间技术。阴影的计算,并不是直接基于整个世界,而是基于屏幕上的像素,因为只有这样,我们才可能在像素着色器中,以足够快的速度完成这些计算。

92:21对,看看这个。看,添加物体、添加纹理、加入不同层次之后,有那么多阴影都必须计算出来。天哪。

92:32那种阴影效果真的很惊人。它能够成立的原因,其实有点违反直觉。第一次有人给我解释时,我的想法是:“这很巧妙,但我觉得它应该行不通。”结果它确实能运行,因为只要观察入射光的位置,以及屏幕上不同像素的 Z 坐标,就能推算出这里的几何结构,可能怎样遮挡其他几何结构。虽然它只是近似,并不完美,但在人眼看来,效果完全足够好。它提供的那些细微阴影,让这样的场景显得高度逼真。而阴影又会影响其他东西。

93:11这里的颜色也发生着一些很有意思的变化,我甚至不确定是什么造成的。看起来,有些雪上的颜色渗到了别处的雪上,似乎存在一些次表面散射。但我也不确定,这个场景里究竟有没有用到它。然后,还有一套材质分层系统,把泥土、雪以及其他东西,一层层铺到一起,让它们配合起来。再有,就是光从几何体表面反弹。这又是全局光照系统之上的另一套光照系统。

93:47那反射呢?它也算光的反弹吗?光从物体上反弹,以各种有意思的方式照亮场景。但这里还有真正的镜面反射,比如我们现在看到泥土里的这个水洼。

94:01对,没错。不过,引擎支持好几种不同的反射技术。一种方法,基本上是计算用于捕捉场景中各种光照的纹理,再借助纹理贴图来呈现反射。你能看到,不同的光线以不同方式,从不同像素上反射出来。还有单独的光源在物体上形成反射。这里面有很多东西都由设计师控制。未来仍有一个问题需要解决:你现在还做不到只按几个按钮,这样的场景就神奇地自动出现。

94:33这里凝结了许多高水平创作者的大量工作。他们不仅要搭建这个具体场景,还要设置材质层,让泥土上面覆盖着冰,各种反射也都正常运行。为了实现这些效果,他们作出了许多技术美术方面的决定。如果换成一个没有投入大量学习和实践的新手,来搭建类似场景,效果绝不会这么好。我们的一项挑战,就是让这种品质的场景更容易构建,让流程更无缝、更自动化。理想状态是,你只需要搭出场景,说一句:“这里使用这种材质”,它就能呈现出这样的外观。

95:06对。而且,一旦创建好了场景,你还可以继续操作。我记得他们好像说过:“能不能把车灯关掉?”我有点记不清了。总之,你可以控制光照。应该强调,这一切都是动态的。你可以改变光源的位置,可以把灯打开、关掉。这太不可思议了。几何、光照、纹理,所有这一切,都是实时的。

95:35这就是出色的技术美术,以及30年功能开发所带来的力量。当然,还得感谢英伟达提供的20TFLOPS,也就是每秒20万亿次浮点运算的图形处理性能。

95:48谢谢英伟达。

95:51从90兆赫走到这里。当年的90兆赫,是90MFLOPS,也就是每秒9000万次浮点运算,而现在是20TFLOPS。这是一个巨大的变化。

95:58差距太大了。演示中还谈到的另一件事,是雪。如果你要呈现1943年纳粹德国的冬天(原文此处说 Germany;前文提到的是纳粹占领下的法国),就必须让人感受到那个季节,感受到冬天和寒冷。你得让一切都覆盖上积雪。这里展示的,就是控制物体被多少雪覆盖的能力。对美术师来说,这种能力太惊人了,可以像这样动态地控制场景里的积雪量。很酷。

96:40是的。

96:41真的很酷。

96:41这是一套很酷的材质分层系统,十几种不同的东西在这里配合起来。你还会注意到,场景里有一些雾,有些温热的物体还在冒出雾气。那是美术师制作出来的,并不是系统自动就会出现的效果。

96:54这就叫材质分层。美术师制作不同的材质,再用它们一层层地搭出场景。

97:02对,把材质相互叠加,还能观察每种材质在不同位置应该露出多少,材质之间的过渡等工作,则由引擎来处理。

97:10而在这下面,还有构成场景结构的几何体,以及所有必须计算出来的遮挡关系。好,我得去看另一个同样让我震撼的东西了,就是烟。让我找找。就是那个。看这个。垃圾桶里有火,烟雾升起来,光照和阴影在烟雾上交织变化,而且是实时的。

97:48对,这些全部都是实时的。

§02文字稿 2

97:49天哪,这到底是怎么做到的?烟雾要怎样实现?

97:55底层有一套非常强大的粒子系统,为这些效果提供技术基础。在它之上,还有出色的美术创作,以及强大的物理引擎。很难准确区分究竟是哪一部分在做哪件事,但这里实际上有好几套不同的粒子系统:一套负责火焰,另一套负责从火焰中升起的烟。烟雾这里真正有意思的地方,是它会遮挡光线。系统会计算光穿过烟雾时应该怎样减弱,你看到的烟雾光照效果,就是最有意思的部分。以前已经有过很多尝试,但这是第一段让我觉得,这种烟雾看起来不再像电子游戏的演示。它看起来就是一个正在燃烧的垃圾桶,往外冒着滚滚黑烟。是的,美术师的精湛技艺,在其中占了非常、非常重要的一部分。

98:54对,又是工具与美术师之间的相互作用。就是这个,我可以盯着它看很久。在现实生活里,围着一堆火坐下,静静看火焰和烟雾,本身就有某种魔力。我也不知道,人类这样做,也许已经有几十万年了吧。看那段演示时,我也有同样的感受,一直盯着火,甚至希望大家都别说话了,让我一直看下去。这就是沉浸感。我想进去,坐到那个燃烧着、冒着烟的垃圾桶旁边,静静观看,也许还想烤烤火,因为画面里的雪甚至让我觉得有点冷。你会真正沉浸到里面。这太美了,是真正的艺术。真正的艺术,做得实在太精彩了。

99:45好,那我必须问问人物了。我们聊了如何创造场景,但要创造真实的人类形象,确实特别难。你能讲讲怎样制作超逼真的人物吗?人物背后有演员,负责传达情绪、表现脸部的细微差别和细节。也许这也是个好机会,可以介绍虚幻引擎中的 MetaHuman Creator。

100:14是的,没错。人类形象是计算机图形学中最困难的部分,远比其他东西都难。因为数百万年的进化,让大脑形成了专门的系统,能够识别人脸中的模式,推断情绪和意图。原始人看到一个陌生人时,必须判断,对方大概是友好的,还是可能想要杀死自己。

100:35我们对人脸的预期,精细到了惊人的程度,因此能察觉其中的瑕疵,尤其是计算机图形技术的局限带来的不自然之处。这就使它成了迄今最难的问题。MetaHuman 是一项已经持续几十年的计划的一部分。弗拉基米尔·莫斯蒂洛维奇(Vladimir Mostilovic,原文拼写)是世界上最有才华的数字人领域远见者,他在一代又一代游戏里,一直致力于这件事,曾经长期为游戏行业中的不同客户提供服务。后来,他作为3Lateral团队的一员加入了 Epic,如今领导着一项全球性的工作,开发让数字人达到真实感所需的各种技术。

101:18其中一部分,是采集真实的人。我们有非常先进的专用硬件,把一个人置于一个球形采集空间中,周围有几十台摄像机,拍摄他做各种动作时的高分辨率、高帧率视频。人脸采集很复杂,因为脸部有大量微妙的细节,各种肌肉、肌腱和脂肪会共同作用,形成不同的表情。因此,问题不只是某个人脸部的形状,还包括这张脸可能做出的整个动作范围。采集一个人,需要在这样的专用环境中进行几小时的拍摄;之后还要花上数千小时的处理工作,才能在数字环境中,得到这个人的一个精确、可以实时重现的版本。因此,其中的一件事是……

102:03……在数字环境中重现这个人。我们做的一件事,是在现实中采集一位男演员或女演员,然后把他们放进电子游戏里。但更有意思的工作,是采集数以千计的人,建立一个数据集,目标是覆盖全人类脸部形象的整个变化范围。因此,要走遍不同文化、不同大陆,覆盖所有年龄,以及不同的脸型,采集有代表性的人,让各种各样的脸都能在其中得到体现。

102:29随后,就可以把这些数据组合、融合,重新创造出系统以前从未见过的任意一张脸。一个思路是,先采集海量高精度数据,再利用它们,在消费级设备上重建一张脸。比如,用 iPhone 拍摄某个人的脸,就能得到非常准确的数字形象。它不是临时在那台设备上凭空合成出来,而是组合已知的人脸细节,尽可能准确地重建这个人的样貌。这就是数据层面的难题。

103:03计算机图形学中,还有许多其他问题。比如毛发渲染就非常难,因为你没法把每一根……同样,物理定律我们是知道的。把每根毛发都渲染出来并不难,只是这样会慢上十亿倍。所以,你需要近似方法,表现毛发对渲染结果和像素的总体影响,而不必计算每道光与每根毛发之间的每一次相互作用。这是其中一方面。

103:27人脸不同部位还各自有许多精细特征。还有次表面散射:我们以为人体是不透明的,但实际上,光会穿过皮肤。皮肤并不是完全不透明,而光在皮肤中传播的方式,对我们的外观有巨大影响。这就是为什么,你不可能只给一个人体模特涂上颜色,就让它看起来像真实的人。它只是一层实体表面,永远不会具备真实人脸上那种细节。

103:52我们真应该在这件事上多停留一会儿。仔细想想,我觉得太震撼了。我记得好像听说,皮肤表面的油脂会形成非常特定、细腻而复杂的反射,而一些光会被吸收,再穿过皮肤。这样会形成一些——可以叫微小的阴影吗?——形成我们人眼能够感知的质感,构成我们所谓的“人的感觉”,不管它究竟是什么。你既要计算反射,也就是光怎样与皮肤表面的油脂相互作用,又要计算光怎样被吸收进去。同时,还得考虑做出细微表情时涉及的所有肌肉,比如眼睛微微眯起,或者一个笑容开始浮现。

104:44你必须捕捉人脸上那些细到让人头疼的东西,比如真笑和假笑的区别。天哪,我太喜欢人脸了。我本来就很喜欢人。但比如说,怎样表现一个刚刚形成、却实际流露出深切悲伤的笑容?所有这些,我看着一张人脸时,都能读懂,能感知到。这又回到了工程和艺术的结合。你必须有能够实时呈现这些细节的工具,而这极其困难。不过,总之,抱歉,我又说远了。哪怕只是人脸的光照,其中也有这么多复杂之处。

105:23没错。要把人脸做好,确实需要计算机图形学中几十种不同的系统和技术细节相互配合。任何一项出错,你的目光就会立刻被吸引过去,人物也就落入了恐怖谷令人不适的那一边。这个领域对完美程度的要求,远远高于世界场景、草地,或者其他这些东西的渲染。如果一处建筑物上的阴影稍有偏差,你其实大概也[听不清 01:45:53]。大脑并不太在意。但人类形象只要有任何一点不对劲,就会让人非常不适。

106:01你能不能再多讲讲,怎样用 MetaHuman 创造数字人?既包括编辑器方面,也包括让人物活起来这方面。因为我看过很多视频,看到许多个体开发者使用它,所以感觉借助虚幻引擎编辑器提供的工具,让一个人物动起来,好像并没有那么难。

106:24主要有两种工具。过去,每一张脸都得由美术师从零开始手工制作。相比之下,如今有 MetaHuman Creator 这款人脸创建工具。里面有大量可以调整的参数,通过调整各个方面的特征,就能创造出一个独特的人物。然后,可以把 MetaHuman Creator 创建的人物导入虚幻引擎,在引擎里添加各种计算机图形功能。比如,用布料模拟系统给人物加上衣服,也能调整头发和其他各种参数。

106:59另一款是 MetaHuman Animator,根据面部采集结果来驱动人物动画。面部采集可以在 iPhone 这么普通的设备上完成,再把采到的动作转移到你想要的人物身上。但这并不是件简单的事。如果演员有一种脸型,屏幕上的角色却是另一种脸型,那么,从演员的表演映射到角色面部,实际上需要非常复杂、并不直观的转换。如果只是原样照搬,在你看来,结果就会完全不对。

107:27这就是现在大家主要使用的工具。接下来,在虚幻引擎里,你有了这张脸,就可以对它做任何想做的事情。如果你决定不采用 MetaHuman 的几何处理流程,也可以自己制作面部,甚至制作任何类型的生物,再用动画工具让它动起来。但我们在这个项目上已经做了30年,而要让所有东西都达到绝对的照片级真实感,并且能够完全控制,整个过程可能需要50年。我们还有海量工作要做,根本不觉得自己已经解决了这个问题。我们只是给美术师提供了一个巨大的效率放大器和质量放大器,还远没有到可以说“做完了”的程度。

108:07尽管如此,我已经看到一些人把它用得非常有效。还有一些像插件一样的东西,也许是外部服务,可以让人物的嘴部动作,接近说出某句话所需的口型。这是个非常实用的功能。

108:25没错。如果一位美术师或者演员就在工作室里,你录制的是一段具体表演,那么,直接采集他们的面部动作,再应用上去就行。但如果你只有一段录音,或者你正在生成录音,它是参数化的、程序生成的,或者由 AI 生成的,就需要系统把语音不仅转换成嘴巴和嘴唇的动作,还要转换成面部表情,以及整个表达意图。我们说话时,整张脸都在以不同方式活动、传达情绪,而不只是各个部件机械地移动。

108:55我们刚才聊了一点 Nanite,也就是虚拟化几何系统背后的技术。你能不能再讲讲 Lumen,以及一般来说,要让我们刚才讨论过的人脸和场景,以各种复杂的方式获得动态光照,需要做些什么?在你看来,哪些有意思的东西,让这些魔法成为了现实?

109:15Lumen 是一套全局光照系统,也就是说,它应该以模拟现实的方式,计算光与整个场景之间的相互作用。第一代具备光照的引擎,基本上只是说:“光源发出光,被直接照到的表面就亮,没有被直接照到的表面就暗。我们就只有这些技术。”于是,没有受到任何光直接照射的区域,就会完全漆黑。

109:41但在现实中,光会在整个场景里动态地反弹。光照到一面红墙时,大部分蓝光和绿光被吸收,红光则被反射出来,继续照到其他东西上。如果红墙旁边有白色地板,光就会从红墙反弹到地板上,让地板也泛起红色。光在整个场景里进行多次反弹,就是这里需要解决的关键难题。

110:09同样,物理定律我们是知道的。因此,这个问题的完整解法,我想在20世纪50年代就已经写下来了。Lumen 真正神奇的地方,是丹尼尔·赖特经过多年开发、建立在更长时间积累的思路之上的这套系统。它能够计算光在不同尺度上怎样反弹,从几英里、几公里的尺度,一直细化到像素、毫米的尺度。它不只是分别计算每一层,还能把各层无缝整合起来,让光照看起来完全连贯、准确。以前的技术都高度专门化,美术师必须针对每一盏灯,明确决定它应该怎样工作。我们的目标,也是现在已经能实现的很大一部分体验,就是你把场景搭好,把灯放进去,然后一切就自然运转起来,让整个过程容易得多。

111:02我们正在看这个画面。我建议大家去看看这篇博客文章,看看这里。应该强调,这些是动态的,既有室内,也有室外,而且能动态计算室外光线的影响。看,这有多美。现在屏幕上是一张洞穴的画面,外面的光照亮了洞穴内部错综复杂的结构。看看这个。

111:31现实世界中的光,会经历许多次反弹,而这些效果都很细微。但一旦缺少了它们,你又能感觉到。一个人往往说不清某个场景为什么不对,但就是知道它看起来不对。缺失的,正是我们在这里看到的那些微妙的光照线索。

111:46我们刚才说的是优秀的电子游戏,但优秀的电影也是如此,光照甚至能够成就一部电影。我们现在看到的,是一个光线极富戏剧性的场景。我能想象自己走进那个场景,既兴奋,又有点害怕,而这些感受都与光有关,与光和暗的相互作用有关。这真的太不可思议了。真的、真的很不可思议。光是一切。再把这些工具的力量交到艺术家手中,这件事就格外特别。

112:16整个行业已经经历了巨大的演变。有那么多配套系统,让这些效果变得如此出色,而其中始终少不了艺术家。

112:25我们正在看光滑表面上的反射。天哪,天哪,看看它有多美。

112:35没错。

112:36哇。

112:36你得意识到,算法在这里完成了大量工作。一个场景里,不仅可能有数量庞大的灯光,还会有许多自身明亮、能够反射光线的物体。要让反射显得真实,就必须把这些东西全都考虑进去。但你不可能计算场景里的每一个光子,因此需要非常精细的近似方法。这就是计算机图形学研究的事情:不断寻找更有效的物理定律近似解,因为直接求解实在难以承担。

113:04但这些图形最终带来的,是观众的一种感受、一段体验。我作为一个喜欢世间美好事物的人,觉得很兴奋:我们竟然能借助图形技术,以合成的、人工的方式,创造出这样的体验。这真的让叙事的可能性大大拓展了。

113:25除了电子游戏,很多人还在用虚幻引擎制作电影。另外,特别恭喜你们,我看到一部用虚幻引擎制作的短片《War Is Over》,获得了奥斯卡奖。这也可以写进你们的履历里了。太了不起了,用虚幻引擎做出了一部奥斯卡获奖影片。你怎么看虚幻引擎未来在电影行业讲故事方面的用途?

113:57它会不断提升创作能力和生产效率。所有这些行业,都受到成本的限制。引擎越能让人们的工作变得容易,就越能给他们更强的能力。我们在好莱坞已经看到的一大变革,是从使用绿幕、后期把计算机图形合成到真人画面中,转向使用巨大的 LED 墙。这些墙面上会显示由虚幻引擎驱动的实时计算机图形。这让画面质量有了巨大的提升。

114:29你很容易辨认出以前那些用绿幕拍摄的电影,因为人物身上的光线就是不对劲。不管后来怎样努力修正,效果总是不太自然。但如果在 LED 屏幕前拍摄,并且前面也布置了 LED 发光设备,演员不仅能获得自己在电影中本应身处的真实场景的全部光照,还可以环顾四周,真正看见那个环境,清楚自己究竟在什么布景里表演。最终的整体效果,就会好得多。这既是因为演员能看见自己身处的场景,因此能更好地完成表演,也是因为技术能够实现更好的光照计算,让虚拟光线和现实中的光线更好地相互配合,从而得到出色的成片。

115:09现在大家对生成式 AI 非常兴奋。你怎么看,在虚幻引擎中,人类艺术家的创作和 AI 系统能够创造的东西,未来会怎样相互作用?

115:23我觉得,行业里有很多人对 AI 视频等技术的进步速度,过于乐观。真正的问题是一致性。直接生成一张图像,可以达到很高的质量,但换成视频,随着镜头和画面的变化,我看到的所有 AI 方法都存在一致性问题。我不认为这些问题会很容易解决。从根本上说,AI 并不真正理解自己所处的整个场景、整部电影或整个情节的发展脉络,也不理解周围完整的世界,以及这个世界会怎样影响场景。但这些,恰恰是游戏引擎能够精确掌握的。我认为,在世界级、高质量作品的制作领域,未来不会是大家都转向 AI,然后大量人类创作者就变得没有用了。我们更可能看到的是,AI 成为人类创造力的倍增器,让人能够更快地制作更好的东西,并得到质量更高的最终成果。

116:28我觉得,和二维图像生成、文本生成这些领域相比,AI 在这里的未来,会复杂、微妙得多。你和马克·扎克伯格在 VR 里进行的那次访谈,就是一个很好的早期例子。你们在 VR 中对话,系统采集你们的面部,再渲染出完全三维的脸部计算机图形模型。最终,AI 图像增强工具又对画面作了修补,补上许多普通计算机图形渲染会丢失的微妙细节。这是第一步。

117:05比如,你可以想象,用一套基于 AI 的像素着色后处理系统,来增强虚幻引擎的输出;也可以想象,物体的创建过程得到增强,尤其是把已经制作好的高质量物体,重新组合起来。比如,Epic 的 Quixel 团队走遍世界,以极高的质量扫描了数以万计的真实物体。从岩石、树木,到考古发现等,几乎什么都有,都被采集下来了。我们在 Fab 内容平台上,有一个很出色的资源库。现在缺少的,是随心所欲地创造大量新内容的能力。我认为,借助这样的数据和 AI,利用高质量树木扫描中积累的知识,按照你的要求创造出全新的树,这会是一件非常有价值的事。

117:55但我不觉得,这会减少对人的需要,或者削弱人的作用。相反,它很可能会放大人的能力。每当我到亚马逊或 Netflix 上看电影时,都会忍不住想,那里有那么多只能按固定顺序观看的内容,而受媒介形式、预算等因素限制,其中大多数并不太好。如果能用 AI 来增强这些作品,那么,每个人都会比现在拥有更多机会。每一次技术革命,都改变了人们的工作方式,但最终也为人们创造了更多机会。有人预测,这一次可能就是最后一次,但我的看法恰好相反。我对此很乐观,也相信它会为所有人带来机会。

118:40你觉得,将来能不能在虚幻引擎的世界里,用生成式 AI 创建动态物体,比如你提到的树,生成网格和纹理,帮助创作者更快地创作?让人使用类似超参数的高层控制,而不必一点点调整所有细节,就能更快地控制一张脸、一棵树的外观,以及其他各种东西?

119:10我觉得,这将是未来十年游戏引擎和各种 AI 内容创作面临的核心挑战,因为现在正在形成两种截然不同的世界模型。一种是场景图,这是我们的技术术语,指虚幻引擎或其他引擎维护的三维世界里,所有物体构成的集合。在你看到的视频里,它包括岩石、树木、雪、桥梁、人,以及所有这些东西。每个物体都附带着海量数据,有些是纹理贴图,有些是声音文件,有些是动画文件。所有这些丰富的细节,都保存在这种程序化而精确的计算机图形表示中,让你可以从任何视角、以任何设置去渲染它。这是一套完全通用的系统,能够掌握世界在任何时刻的完整状态,你总能精确地重现它。同一个场景连续播放十次,结果始终一样,不会随机改变,不会让你突然惊呼:“糟了,这个人的脸怎么在中途变样了?”

120:14但它的限制也很明显,因为所有东西都得手工搭建。这很昂贵、很费时间,也需要专业能力。另一种世界模型,则是 AI 所看到的、或者说它所想象的世界。如果我们能窥见它的参数内部究竟发生着什么,就会看到某种类似大脑里神经元之间模糊联系的东西。它掌握了大量关于世界、图形、图像、人物,以及其他一切的知识。这些知识以人类无法直接理解的形式存储,但又可以通过查询提取出来,比如要求它根据提示词生成一张图,或者生成一段视频,诸如此类。

120:50但这里的巨大问题在于,这些数据非常模糊。我们不知道该怎样下达一个命令,才能让它给出精确的结果。它某次生成一张图,你只稍微改动提示词,它就可能生成完全不同的东西。我们没法按照自己的美术意图精确控制它,它还是一种完全没有被驯服的工具。我认为,随着我们找到越来越多的方法,把这两套系统融合、连接起来,就可以想象,用 AI 来增强传统场景表示中的内容创作过程。也可以把场景表示分享给 AI,让它看到的不只是一句提示词,还有世界里所有物体的清单、各自的特征等。这样,它就能进一步学习,这些物体应该怎样移动、怎样相互作用。

121:35如果能让引擎和 AI 之间形成持续的双向反馈循环,我想,就能兼得两者的优点:既有稳定的场景,又能更高效地产出内容;还能选定其中的具体部分,按照创作意图调整它们,而且这些美术上的调整能够被保留下来,成为持久场景表示的一部分。

121:57我真等不及看到 AI 不再只是在像素空间里工作,而是在场景图的空间里工作,在其中创造物体。无论是你提到的音频,还是其他那些能赋予创作者更大能力的内容,这都是一个令人兴奋的未来。不过,这个话题也让很多人担心:艺术家、工程师会不会失去工作,被 AI 取代?你能不能给他们一些希望?

122:32这当然是迄今最极端的一个例子,因为 AI 比以前的技术走得远得多,但其他每个行业,都出现过类似的恐惧。人们曾担心,数字音乐合成会让音乐人变得多余。有过很短的一段时期,使用数字乐器,比如早期 Minimoog 或雅马哈合成器制作的歌曲,甚至不允许参加某些音乐行业奖项的评选,因为它们不被认为是真正的音乐。后来,人们慢慢了解了这些技术,意识到它们只不过是供人演奏的乐器,控制它们的方式,和以前并没有本质区别。类似的问题也出现在计算机美术上:用 Photoshop 制作的作品,究竟算不算真正的艺术,还是只是些古怪的电脑玩意儿?我觉得,今天的数字艺术家已经获得了尊重。看看 Photoshop 中已有的工具,有些非常复杂,如今还加入了 AI 功能。但我认为,AI 最终仍会是艺术家工具箱里的另一种工具。

123:33我想,未来它会成为一种更强大、更容易按意图控制、也更好地为人类服务的工具。如今让人感到疏离的,很大一部分原因是,提示词一方面强大到可以直接给你一整件作品,另一方面却完全不愿让你控制其中的微妙细节。这会让人觉得疏离。你给它一张图,然后说:“把这里换成这个东西”,或者“把那个物体变成绿色”,它却做不到。很多时候,不管你在提示词里写多少话,都无法说服它。于是,人就会觉得,计算机正在从我们这些人类、这些艺术家手中夺走控制权,拒绝按我们的要求做,反而坚持自己的意见。它给人的感觉,像是一个竞争者。

124:14我想,当我们能够对它进行精细得多的控制,艺术家可以参与进去,说:“把这个物体增强一下,这样做、那样做”,它就会像 Photoshop 里现有的一些工具一样。与画笔相比,那些工具在某种程度上,早已相当于超能力了。AI 也会逐渐给人这样的感觉,越来越多地服务于创作者,让他们创作、完善作品,就像自然地延伸自己的身体和头脑一样。

124:40当然,裁员确实会给人带来真实的痛苦。AI 周围有许多炒作,公司可能会尝试部署 AI 系统,并在这个过程中裁掉一批人。那些人感受到的痛苦,是真实的。我觉得,这种转型总会伴随着痛苦,而且是非常可怕的痛苦。人类生活中的痛苦,本身就是很难承受的东西。

125:08不过,我个人对你所描述的、贯穿整个创作过程的人类与 AI 协作,感到很兴奋。我觉得,只要你始终对使用这些工具保持开放,不断尝试最前沿的工具,探索它们怎样提高效率,怎样让你作为创作者、艺术家或工程师拥有更强的能力,你就能持续占据优势。

125:32现在有许多复杂趋势同时发生,有时很难把它们拆开、分清。我觉得,社交媒体上最容易获得传播的那些理论,往往没有抓住底层真正起作用的驱动力。但在我看来,AI 参与代码生产,总体上可能会增加对人类参与编程的需要。它也许会改变工作中的某些部分,但我不认为,它会淘汰任何愿意学习新方法的人。过去一直都是这样。

126:05我觉得,AI 周围也有很多过度炒作。对于那些已经有上百万个 GitHub 仓库实现过的功能,AI 特别擅长成批生成代码,因为它已经学会了底层模式。但要让它做以前从未有人做过的新东西,尤其是复杂任务,就非常困难。你让 AI 写的代码越多,它留下来的就越像一堆勉强能运行的乱代码。代码的问题就在这里:可能99%都能运行,但剩下那1%,用 AI 补到100%,反而可能比手工编写更困难。所有关注这个话题的人,都应该真正拿困难的问题去试试代码助手,看看它们在那里表现如何。

126:43对我个人来说,它能更快地生成样板代码,也让这件事更有趣。这样,我就能专注于更困难的决定,专注于全局性的判断,以及有创新性的选择等事情。而且,编程本身也更好玩了,因为我没那么孤独。即使它给出的代码是错的,我也会觉得:“哦,原来还可以这样做,很有意思。”然后你还能和它讨论。也许,这也说明了编程体验的一点特征:有时候,它确实有些孤独。

127:20样板代码是个很有意思的话题,因为样板代码之所以存在,本身就意味着编程语言,以及软件模块化的理念,还没有做好。你让 AI 生成一个排序函数,很好,于是除了其他人写过的上百万个排序函数,你又多了一个可能存在错误的新函数。更好的方式,应该是有一个已经编写、测试、优化好的排序函数,所有人都依赖它。我觉得,更好的软件模块化,实际上会减少 AI 在这方面的机会,因为程序员的工作将主要是解决独特的问题,解决那些本身真正困难的问题,而不只是把各种小部件连接起来。

127:59我想,和许多其他情况一样,AI 会像一面镜子,让我们看清自己,从而帮助改进人类现有的系统。接下来这个问题可能有点像嗑嗨之后的天马行空,我先道个歉。你多年来一直在支持元宇宙这个概念,我们来从更大的角度聊聊它。之后也会具体谈,现在它究竟意味着什么。不过,我们刚才一直在说,怎样把现实模拟得越来越好。那么,那个有点天马行空的问题就是:要把现实模拟到我们今天周围看到的这个程度,需要什么?要模拟出地球上这样超逼真、沉浸、又有趣的现实,我们还差多远?需要做到什么?

128:45未来几年,我们会接近到令人震惊的程度,肯定用不了20年。如果看看哪些领域已经实现了完全的照片级真实感,哪些还做不到,你会发现,走过丛林或城市时看到的那些不涉及人类的场景和交互,包括各种光照,我们都已经非常接近了,可能再过几年就能做到。但凡是涉及人类、人类对话和意图的问题,都必须跨过高得多的门槛,才能满足我们的大脑,让它相信那是逼真的,甚至是真的。我觉得,这将是未来十年图形和模拟技术发展的主要挑战。

129:27也就是说,逼真的人类会成为决定性的难题。不只是外观,也包括行为,所有方面都是吗?

129:35是的。大概十年前,有人问过我这个问题。当时我说,即使给我们无限的计算能力,我们也模拟不出逼真的人类,因为根本没有相应的算法。我们完全不知道该怎样模拟人的智能。那时的确是这样,但今天已经不完全如此了。现在的生成式文本 AI,已经到了可以说,它在模拟人类方面表现得相当不错的程度,至少在文字层面如此。情绪层面还不行,但至少在说出的话语层面,已经能做到。随着我们找到越来越多的训练方法,覆盖越来越多的情境,也许甚至在未来五年内,就会出现非常有说服力的人类模拟。我不是说这一定是好事,但我觉得,技术的发展轨迹正不可避免地朝这个方向前进,而且速度快得惊人。

130:27我们对这一点强调得还不够。以现在的大语言模型来说,如果让艾伦·图灵和 ChatGPT 对话,它真的能通过图灵测试,几乎可以明确地说,已经能通过。当然,我们会不断提高标准,说:“图灵测试不算真正的测试,没什么用”,或者别的什么。我们不断抬高 AI 的门槛,让它总显得还差一点。但现在,越来越逼真的脸和身体,正与越来越动人、越来越有表现力、充满情绪的语音和文字结合起来。

131:09我和一家叫 Level Labs 的出色公司合作,他们很擅长文本转语音(原文写法如此,疑指 ElevenLabs,待核对)。已经有一些公司,专门研究怎样让文字活起来。未来会有更多公司,把这些事情做得非常好。然后,突然之间,你就会看到一个合成的场景,里面有个人在说话,而整个场景能让你感动到流泪:完全黑暗的环境中,一张脸被光线照得很美,有情绪,有戏剧张力。所以,你的估计是五年、十年,或者二十年?

131:42是的,完全有可能。我们这辈子肯定能看见。

131:46那我再把这个天马行空的问题升级一下。你觉得,我们有可能生活在一个模拟世界里吗?不管答案是或不是,要造出一个让我们完全信以为真的模拟世界,究竟有多难?

132:03我不觉得,这些问题就一定无法回答。我倒是希望,能看到更多真正的研究,去弄清楚宇宙底层究竟是怎样运作的。我不认为,我们毫无缘由地出现在这里。这个世界很酷,我们能够存在,能够认识物理定律,尤其是物理学的标准模型,以及那些让原子和生命得以在热力学梯度中演化出来的参数,这真的很酷。我觉得,从整体上进一步研究这些问题,是一个值得探索的领域。

132:37我也不知道。我们自己是否生活在模拟世界里,这个问题总会回到一点:如果我们是在模拟里,那运行这个模拟的那些存在,又生活在哪里?因为总得有某种最基础的现实。有一种曾被认真提出过的哲学理论,认为并不存在物理现实。如果你有一套方程,比如物理定律,那么,遵循这些方程的动力系统,其所有可能的演化,都在某种意义上具有物理实在性。我们只是数学定律的一种体现,并不一定需要周围真的存在一个宇宙。我不知道,我挺喜欢探索这些哲学问题的。随着 AI 越来越聪明,随着我们越来越接近完整地掌握物理定律,这些问题也变得越来越引人入胜。

133:23你会开始想,如果我们并不生活在模拟里,那么,这个现实里究竟有哪些东西,是不能被模拟的?我们周围最大的谜团是什么?物理似乎是可以模拟的。我们刚才讨论的那些不可思议的东西,虽然非常美妙,看起来也都是可以模拟的。但还有意识的火焰,还有那种感受,不管究竟是什么东西,让我们人类的眼睛里亮起了光。也许那个东西不能被模拟,也许它才是关键。也许它是一条线索,通向你所说的宇宙运行机制的解释。那个机制非常值得理解,而我们对此几乎一无所知。很多宗教典籍都在试着接近它,但我们依然大多毫无头绪,只能凭借信仰,去相信它可能是什么。

134:16所谓嵌套模拟,也许在技术足够先进之后,就会变得没有那么重要:如果你想模拟另一个现实,你实际上可能就是在创造那个现实。你执行量子力学运算,它们本来就会产生同样的结果,而且你以完整的性能运行它们。那就不太算是嵌套模拟了,只是宇宙里又发生了一件事。这会很有意思。

134:44不过,我觉得,这最终是个神学问题。因为把神学纳入科学已经不再时兴,这方面的研究就不多。你很难在有声望的物理学期刊上,发表这些主题的研究成果,因此它多少被搁置了。但有意思的是,量子力学定律本身,确实为上帝、灵魂,或者任何你想赋予它的外部输入,留出了一个位置。比如,有所谓的量子波函数坍缩:一个量子系统原本处于许多可能性完美叠加的状态,当你去观测时,看到的却只是一个具体的可能性。在多缝实验中,你最后会观测到,光通过了其中这一条缝,或者另一条缝。这里就像有随机数被注入我们周围的一切,每秒发生着万亿的万亿的万亿次,出现在我们所观测的事物之中。如果你想引入某种外部输入,那么,这里确实有这样一个位置。

135:46它也许可以真正接受严谨的科学研究,只不过我们现在知道得还太少。

135:52有意思的是,在这个领域,我们知道的东西其实并不比原始人更多。我们知道量子力学的定律,也拥有也许很快就会比我们更先进的计算机。

136:03拥有也许很快就会比我们更先进的计算机,却仍然无法回答关于生命、宇宙以及一切的那些根本问题。

136:13再实际一点,你觉得,我们会不会创造出元宇宙式的电子游戏世界,让人类想一直留在那里?对我来说,讨论模拟现实,沉浸感真正的测试,就是你不想再回到现实世界。一个完全健康、积极、正常的人,主动选择留在那个世界里。你觉得,要做到这种程度,有多难?

136:48我想,技术正在逐渐到来。然后就有一个属于人类自身的问题:我们究竟该不该走到那一步?

136:54该不该?是啊。

136:56是的,至少对我们这些游戏开发者来说,Epic 并不把那当作目标。我们制作的是好玩的游戏。

137:01对。

137:01我们所找到的理想形态,是大家一起玩得开心的游戏,是人们在工作和现实生活中其他事情之间,用来享受乐趣的东西。但随着模拟越来越逼真,技术能力越来越接近现实,我觉得,我们必须认真问自己一些艰难的问题:人类应该怎样在这个空间里行动?我们应该走到哪里,又应该设下哪些界限?

137:23是啊,会有一些很难回答的问题。也许我的看法太以人类为中心了,但我觉得,在两件事上,大概需要一些法律上的界限。一是不要创造出让人类想停留过久的现实,应该更多地专注于游戏本身。更重要的一点,是不要创造出能够受苦的人类模拟。当我们讨论制作超逼真的人类时,走到最后,就意味着创造出能够痛苦的人:他们能坠入爱河,经历心碎和失去,也会害怕死亡。你越是把人类处境模拟到完整、逼真的程度,就越接近那个地方:模拟出来的人类,也能感受到痛苦。

138:23而且,从法律上说,我觉得最终必须明确,这种事是不允许的。有一条线是不能跨越的,而这对人类来说,又是个很难处理的问题。相关案件送到最高法院时,一定会很有意思。一旦你创造出一个逼真到能够受苦的人,就意味着,这个人可能被折磨,别人可以对这个所谓“人造”的人做出非常可怕的事情。但天哪,那依然让人觉得不对。我说不清那究竟是什么,但折磨一个模拟出来的人,就是让我觉得不对。当你玩一款射击游戏,大家都在享受乐趣时,并不会有这种感觉。不过,这中间存在一条界限,而最高法院将来对这条界限的探索,会非常有意思。天哪,我们生活在一个多么令人兴奋的未来,是吧?

139:28是的。我觉得,需要认识到的一点是,游戏开发者总体上,一直是怀着善意在做事情的。如果看今天热门游戏里,玩家做过的最坏的事情,会是什么?在《侠盗猎车手》里抢劫银行?但那显然是虚构的,只是夸张的娱乐,不是认真的。我想,随着一切变得越来越逼真,尤其是对人类的模拟越来越真实,确实有一些艰难的问题需要回答。但所有游戏开发者都应该记住,我们存在的目的,是通过娱乐,让人们的生活更好,给他们提供乐趣,让他们暂时从其他事情中抽离,成为生活的一部分,而不是试图占据得过多、介入得过深,更不是去提供一个取代现实的世界。我们应该提供的,只是一种有趣的娱乐,就像人们为快乐而做的许多其他事情一样。

140:22你多年来一直在谈元宇宙,正如我刚才提到的。我们先退一步,元宇宙究竟是什么?说到乐趣,《堡垒之夜》里,有数以亿计的人在这个超大规模的社交游戏中享受快乐,你也可以把它叫作一个元宇宙。你能不能讲讲,在你看来,元宇宙有哪些不同的形态、不同的层次?

140:52元宇宙这个概念,就像一只股票,价格会随着某天、某个人说了什么而起起落落。有些人甚至只要一开口,就能让它跌得很惨。但说到底,它指的是多人社交游戏体验:你和朋友进入一个三维世界,用自己喜欢的任何方式,一起享受乐趣。在我看来,玩《堡垒之夜》大逃杀,本身就抓住了元宇宙的核心。尤其是当我们说服索尼加入,让《堡垒之夜》所有平台上的玩家,都能一起玩、一起语音聊天、参与同一个游戏体验时,它真正呈现出了一种新的性质。它不再只是一个从《毁灭战士》延续而来的多人游戏,也是一种你和朋友之间真实的社交体验。《堡垒之夜》大逃杀,只是这种体验的一种表现形式。另一个例子是 VR 游戏《Rec Room》:你和朋友在虚拟现实里聚在一起,打台球、投篮,或者做些其他轻松的娱乐活动。

141:54我觉得,凡是有大量玩家一起游玩、社交,并把它作为日常娱乐一部分的游戏,都在接近元宇宙所追求的核心体验。而我们仍然处于非常早期的阶段。我大概在1992年就开始使用互联网了,那时它还非常简陋。我想,当我们以后回头看今天的游戏,也会意识到,距离理想形态还有很长的路。但我觉得,方向是对的。大概是在我们推出《堡垒之夜》大逃杀之后,Epic 的员工们开始组队一起玩、体验那个世界,我们意识到,这种趋势已经在形成。我们需要尽可能引入其他创作者,让任何人都能通过《堡垒之夜》创意模式和 UEFN,在我们已有工作的基础上,创造自己的世界,开发更多游戏、更多类型,让玩家能玩的有趣内容不断扩展。

142:57是啊,我很想再多聊聊其中的不同方面。Epic 创造过许多出色的游戏,比如《虚幻竞技场》《战争机器》。但我想,可以说真正改变了游戏行业的,是《堡垒之夜》,尤其是大逃杀模式。你能讲讲《堡垒之夜》是怎样诞生的吗?

143:16《堡垒之夜》的起点很朴素。2011年,我们当时正处在某款《战争机器》游戏开发的最后阶段,想探索一些新游戏的点子。大体想法是,我们想做一些规模较小的游戏、网络游戏,进一步了解这个领域,而不是始终只有一个庞大的项目在开发,所有精力都押在那一款游戏上。于是,公司里的每个人,都获得了一周时间,可以自由组队,与自己想合作的同事一起,用虚幻引擎做一个游戏。借助引擎,一周里确实能做出相当有意思的东西。其中一个团队,做出了后来演变成《堡垒之夜》的最早版本。那个版本的美术风格与后来不同,但已经有了核心想法:白天利用建造系统搭建堡垒,夜晚则抵御僵尸,保卫堡垒。你坚持得越久,能建造的堡垒就越复杂,能抵御的敌人波次也越多,游戏就会越来越有意思。

144:20不错。

144:21这款游戏开发了很久。我们一直看得到它的潜力,光是建造这部分,就已经特别好玩。但在不同时期,我们也作出了不同的转向。有一次,我们放弃了原本较写实的风格,转向今天《堡垒之夜》的美术方向,让它更接近皮克斯,使用酷而鲜明的风格化人物。

144:43当时是怎样作出这个决定的?你刚才提到了《战争机器》,它的画面非常惊人,几乎把图形技术的能力展现到了极致,而《堡垒之夜》的美术风格却完全不同。同一家公司会做出这种有趣、搞怪的画面风格,真让人惊叹。

145:01人们来到 Epic,是因为想与世界上最优秀的人一起工作。美术师带来了各自不同的艺术追求和风格能力,其中许多人都非常多才多艺,既能制作照片级真实的内容,也能制作高度风格化的内容。《堡垒之夜》最出色的一些美术师,也曾是《战争机器》最出色的美术师。他们换了风格,却仍然在做优秀的工作。我们意识到,《堡垒之夜》可以走向真正的大众,也可以是一款让人们长期游玩的游戏。因此,我们希望它的美术风格在视觉上更讨人喜欢,不像《使命召唤》那样让人紧张:你总得在昏暗场景里,一点点寻找敌人步枪瞄准镜的细小痕迹。这就是我们的目标。于是,几位美术师一起寻找新的美术风格,后来我们采用了它。游戏也曾在不同时期,向不同方向发展,比如接近《命运》那样的轻度大型多人在线游戏,带有相当复杂的角色扮演和属性系统。

145:50后来,它又演变成一种类似大型多人在线游戏的塔防游戏。所谓 MMO 要素,最终主要体现在物品和属性数据的持续保存上。这就成了《堡垒之夜》的“守护家园”模式,我们在2017年初把它推出,取得了还不错的成功。它收回了预算,我们也赚到了一些钱。与此同时,大逃杀这个类型正在迅速流行,《绝地求生》刚刚推出,Epic 有很多人都在玩。他们会想:“要是这里面有《堡垒之夜》的建造系统,那就太酷了。”

146:18于是,我们把一个大约30人的团队集中到一间大的作战室里。他们拼命工作了四周,做出了大逃杀模式。这里的好处是,《堡垒之夜》的各种内容,在之前七年里已经制作出来了。他们手里有一个庞大的内容资源库,但还没有自己想要的那种玩法。因此,他们必须在那四周里,把玩法全部做出来,再发布出去。此后,Epic 进入了指数级增长:员工从300人增加到几千人,收入从大约1亿美元增加到数十亿美元,也成为当时游戏世界的中心。

146:54你能不能讲讲其中的技术挑战?从一个原本并不是大规模在线游戏平台的系统,转变到大逃杀这样,能让海量玩家在同一时刻一起游玩的系统,需要做些什么?只有四周,你们必须克服哪些技术上的困难?

147:17从2012年开始,我们就在搭建在线后台系统,支持玩家账号、登录,以及多人游戏需要的各种服务。从一开始,我们就考虑了可扩展性。而且,不知怎么,我们把基础做得足够稳定,后来真的能扩展起来。负责维护、修补这些代码的在线服务团队,用了一整年高强度的工作,把系统从支持4万名同时在线的用户,扩展到了1500万名同时在线的用户。

147:45是啊,这种扩展,这种扩展,规模太大了。

147:49大得惊人。但他们把基础打得非常好,所以后来发现,这件事虽然困难,却是可以解决、可以做到的。如果之前没有做好这些,公司就会完蛋。《堡垒之夜》根本没法玩,整个事情都会失败。

148:03这其中的细节太多了,而它们又会决定一切。我记得 Spotify 也谈过类似的问题,比如延迟。你能多快把一首歌播放出来,会改变整个产品的体验:从“这东西太糟糕了,我还不如去下载盗版”,变成“这已经好到让我很享受,我愿意一直用下去”。所以,这非常重要:要给1500万名同时在线的用户创造一种不那么卡顿、真正能正常运转的体验。你能不能讲讲,做到这一点到底有多难?

148:50现在构建在线服务的趋势,是使用微服务。并不是有一台巨大的服务器,处理《堡垒之夜》里所有的交互。每一场大逃杀,都有运行100人游戏实例的游戏服务器;另外还有账号服务器,它的多个实例都与共享数据库通信。系统中有几百种不同的微服务,彼此进行通信。因此,扩展系统,就是找出瓶颈在哪里,确保每一部分都能够扩容,并且拥有足够的冗余,来承受负载。真的要感谢亚马逊云科技和云托管服务,因为 Epic 扩展到1500万同时在线用户的整个过程中,自己一台服务器硬件都没有买。

149:33我们只需要打电话给亚马逊,说:“我们还需要更多。”有一段时间,《堡垒之夜》正在经历指数增长。某个周末,巴西的玩家很多,我们发现那里的服务器不够用了;到了下一个周末,玩家更多,却已经有服务器来承接了。亚马逊有人把价值数百万美元的服务器硬件直接运到巴西,及时部署上线,正好赶上《堡垒之夜》需要它们。这个故事背后,有很多无名英雄,其中许多人,我们甚至从未听说过。

150:05是啊,AWS 背后有许多无名英雄。那些人支撑着现代互联网,支撑着各种令人惊叹的服务、游戏,以及我们已经习以为常的一切。很多东西现在运行在 AWS 上,或者最初运行在那里,当然也有谷歌云等平台。你能不能谈谈,《堡垒之夜》带来了多少收入?毕竟,这也是电子游戏史上最成功的作品之一。

150:36《堡垒之夜》每年带来数十亿美元收入,占 Epic 收入的大部分。我们围绕虚幻引擎授权、《火箭联盟》《糖豆人》,以及 Fab 内容市场等工具,也建立了稳健的业务,但大头仍然是《堡垒之夜》。因为我们选择大力再投资,去建设自己认为代表技术未来的东西,所以,每年花的钱都比赚的钱多。有一段时间,我们每年的支出比收入高出10亿美元以上,后来发现,这样下去不可持续。那时,我们经历了一轮痛苦的裁员,随后才稳定下来。现在,每年支出仍比收入多几亿美元,但我们完全承担得起,因为银行里还有几十亿美元的储备。

151:20这些资金,一部分来自我们还是一家小公司、却拥有一款大游戏时积累的利润,另一部分来自后来获得的投资。我们不是发现了一口油井,然后就一直把石油从地下抽出来的那种公司。我们正在成长,想成为未来的技术重镇。我们认为,三维领域,以及实时三维模拟的未来,会成为人类技术的重要组成部分。因此,我们正在全力投资这个方向。

151:45是啊,看到你们这样投资长远的未来,承担研发的风险,定义 Epic 的下一篇章,很令人兴奋。也就是用今天的成功,去投资明天的成功,而明天的样子,可能会非常不同,甚至完全不同。其中一部分,就是继续投资虚幻引擎的开发、研究与创新。

152:08没错。我们可以开始一个项目,即使明知道接下来三年、四年、五年,它都不会产生实际成果,也赚不到任何钱,我们也完全能够接受。这就是长期以来推动我们成长的循环:不断投资未来,认真地开展研发,同时发布、维护产品,从产品中获得收入。

152:34这里有好几个可以展开的方向。其中之一,是元宇宙这个想法未来会怎样演化,以及它可能创造出怎样的社群。《堡垒之夜》已经是一个规模巨大、让人们相互交往的社群,但你的愿景,不只是一个游戏。那么,你们在考虑构建哪些标准,让人们可以拥有自己的身份,甚至能够在不同游戏之间穿梭?

153:11让我先说说,今天的游戏行业是什么状况,以及为什么它很糟糕。

153:15这个开场不错。好。

153:17《堡垒之夜》很棒。你进入游戏,那里有1亿月活跃用户,你的许多朋友也在那里。你可以和他们一起玩,在不同体验之间无缝切换,不用离开应用。里面有十万座不同的岛屿地图,有些非常精彩,而且不断有新地图、新内容出现。但如果你想玩 Roblox,就得先退出《堡垒之夜》,再启动 Roblox。那是另一个程序,有不同的好友系统、不同的账号名称。《堡垒之夜》和 Roblox 里的用户名彼此独立,完全不相连。所以,你又得重新添加所有朋友,再找不同的东西玩。而且,操作方式也不同,你要重新学习,在这个体验里怎样使用摇杆、鼠标、键盘和手柄。你得从一个地方转到另一个地方。在《堡垒之夜》里,你买了一些很酷的东西,可以在《堡垒之夜》任何地方使用。

154:06但到了 Roblox,那些东西就没有了,你得重新购买别的东西,而新买的东西也只能在 Roblox 里使用。《使命召唤》同样如此,又是一个独立的地方。《魔兽世界》《英雄联盟》也是如此。你去到的每个地方,都是独立的世界,有不同的朋友、不同的账号名称、不同的人,彼此之间完全没有社交上的连贯性。很久以前,游戏主机平台曾试图解决这个问题,建立覆盖整个平台的好友系统和账号。因此,你在 PlayStation 某款游戏里的好友,在另一款 PlayStation 游戏里仍然是好友,但这只限于 PlayStation。如果你在 Xbox 上,就看不到 PlayStation 的好友。所以,这个世界基本上被两套相互独立、又彼此交叉的划分方式,分成了一块块领地。这些并不一定出于恶意,却逐渐形成了一座座相互隔绝的孤岛。

154:54一种划分,是平台及其社交服务,比如 Xbox、PlayStation、任天堂、Steam,也可以把 Epic 加进来。另一种划分,则是人们玩的各种游戏。由于这种奇怪的历史遗留状况,我们身处的世界里,人们没法带着朋友和物品,在游戏之间无缝切换。解决办法,就是让这些系统联邦式地连接起来。在不同平台上的所有玩家,都可以通过自己的名称识别,比如在名称里加上 @,让 Xbox、Fortnite 或 Epic、Steam 的账号名称,能在同一个空间里共存、互通。所以,统一社交生态是一件需要做的事。下一个、也更大的挑战,是让经济体系互通。我说的并不是,你在《魔兽世界》里的一把剑,到了《堡垒之夜》里也应该能用。

155:47对。

155:49每款游戏都有自己的玩法规则,很多游戏里的东西,也只能在本游戏中使用。但有很大一类游戏,都有一个共同点:外观系统不影响游戏胜负,只提供好看的造型和形象。大多数主要的多人游戏都有这种系统。如果看看这些游戏,你大概能把其中70%归为一组,认为它们足够相似,确实可以互通。你在《堡垒之夜》拥有一套服装,在 Roblox 里也拥有它,也许在《使命召唤》和另外一两百款游戏中,都能拥有同一套服装,而且可以合理期待它们能通用。你会发现,其他一些物品可能也能互通。比如《堡垒之夜》有汽车外观,你可以买不同的汽车造型。在游戏世界里找到一辆车后,如果你是这局里第一个坐进去的人,砰,它就会变成你选定的外观。这样,你就有了一辆酷车,一眼就能认出是你的。

156:54我们很早就认识到,要让《堡垒之夜》成为有效的创作者经济,关键是把道具商店的收入,向所有带来玩家参与度的内容开放。让《堡垒之夜》作为产品和生意运转起来的,主要有两件事。一是游戏模式:《堡垒之夜》大逃杀、所有用户创作的模式,以及其他内容,它们带来参与度。人们在那里玩,因为特别好玩;也正因为在那里玩,才愿意买些酷东西,让自己的角色更好看。于是,有这么多带来参与度的内容,但它们并不直接赚钱。在《堡垒之夜》大逃杀里,你不能花钱购买影响对局的游戏道具。玩法不是花钱就能赢,玩的就是游戏。我们靠道具商店赚钱,而商店之所以有生意,完全是因为这些内容带来了参与度。相信我,如果你不玩大逃杀,就不会有人想买《堡垒之夜》的服装。如果你压根不玩《堡垒之夜》里的任何游戏,为什么要买它的服装呢?

157:50所以,所有收入都在道具商店这套经济里,而所有玩家参与,都在另一套围绕内容参与的经济里。让《堡垒之夜》创作者经济神奇地运转起来的,就是收入分成:按照带来参与度的内容,分配道具商店的消费收入。假设你买了一件物品,游玩时间的40%花在大逃杀,60%花在用户制作的模式,那么你花的钱里属于利润的部分,就可以分出来,付给参与这套经济的不同创作者。这也是《堡垒之夜》的创作者经济,迄今已经发展到4亿美元规模,而且还在增长的原因。

158:23太棒了。

158:25设计它时,我们特别重视的一点,是确保这套创作者经济能够扩展到其他公司、其他生态。比如,现在已经有许多行业标准组织:有的统一游戏评级、年龄分级,有的统一网页文件格式,还有的统一三维文件格式,比如 Khronos Group 和元宇宙标准论坛。如果有一个标准组织,来定义游戏里可跨平台使用的服装,也就是在一款游戏买了、另一款游戏也能用的服装,规定它们的尺寸、能力,能做什么、不能做什么等等,那么,我们就可以建立一种物品经济:每款游戏都同意承认玩家在其他游戏购买的这类物品,同时在生态之间分享收入。

159:15那太不可思议了,实在太棒了。首先,对不玩电子游戏的人来说,这可能显得有点傻,但服装很重要。如果一套服装能在不同游戏里一直保留——我是说,我也不知道,人生的目的是什么?我们为什么穿衣服?衣服是身份的一部分,是我们向世界呈现自己的方式。我穿着这套傻乎乎的西装,打着领带,感觉很好,穿上它就很舒服。还有另一套衣服;我就两套:这一套,以及黑色 T 恤配牛仔裤。穿那套也很舒服。照镜子时,我觉得那就是我。好,我认得这个人。

159:59如果能让这套衣服在一个又一个游戏里延续,甚至延续好多年,那会很美好。我还想问,对更复杂的物品,能不能有另一种关于价值的标准?比如,把《暗黑破坏神》里的一把剑,转成《堡垒之夜》里的一把枪,但依据的是价值,也就是某种通用的货币概念。一款游戏里某件东西的价值,对应另一款游戏里某件东西的价值,运作层面更接近价值,而不是具体物品。还是说,这已经泛化得太远了?

160:46我觉得可以做到。我们对《堡垒之夜》的经济做过大量分析,发现有些游戏体验,比其他体验更能带来较高消费,或者与较高消费相关。大逃杀在这方面比较强,因为你从后面看到自己的角色,又能从正面看到其他角色,有很多机会看到自己的形象、做表情动作,与其他玩家互动。许多游戏都有这种特点。

161:22有一个挺有意思的例外。《堡垒之夜》里曾有一款取得巨大突破的游戏,叫 Only Up。你沿着各种物体堆叠成的路径,不断往上爬。它就是那种简单得有点傻、却特别好玩的游戏,人人都喜欢。但我们发现,玩 Only Up 的人,并没有在服装上花很多钱。其实这很好理解:你很少看到其他玩家。真看到什么,也多半是别人的屁股,因为你在一件件物体之间跳跃,试着追上他们,而他们就在你上面。所以,这个模式没有太多展示服装的机会。不过,你可以测定一种游戏模式与消费之间,在经济上的相关性。

162:02太有意思了。《堡垒之夜》是一个庞大的经济体,能让你做这类研究,了解人们之间逐渐形成的市场、数字市场,以及人们看重什么。而从这些价值中,也许就能形成一种很稳定的货币。

162:18对,我觉得是这样。你不需要另一套货币体系。可惜,人们为了炒作不同的东西,把一堆概念混在了一起。但大规模多人社交游戏,也就是这种意义上的元宇宙,每个月已经有6亿到8亿人在玩。所以,你知道它是真实存在的,正在发生,而且已经在大步推进。VR 的受众要小得多。我不认为,实现这些东西必须依靠 VR。VR 是一种硬件,对某些使用场景,可能提升体验,也可能没有帮助。有的场景可能更好,有的可能更差。但显然,并没有一大群大逃杀玩家蜂拥转向 VR。

163:02还有一件事,是人们试图用 NFT,把数字货币或加密货币与元宇宙等同起来。可它不过是一种表示货币或价值交换的方式。你可以用普通货币,也可以用 NFT 或其他东西。但未来的数字经济,从根本上并不要求加密货币之类的技术。你需要的是互操作性。互操作可以通过区块链实现,也可以通过数据库,或通过标准组织制定的标准和协议实现。从铁路标准化以来,这类事情我们已经做了几百年,并不是非得有一种全新的技术方案才行。

163:44对,甚至说到加密货币,也很让人沮丧。我认为,区块链和加密技术非常强大,可以实现我们讨论的许多事情。但太多人用它赚钱,制造泡沫、炒作、迷因币,诸如此类,结果它们很快就离真正有价值的东西越来越远。那些有价值的东西,就是玩《堡垒之夜》的体验,以及玩大逃杀时你的形象。说出来似乎有点可笑,但确实如此,而且确实有价值。就像现实世界里的黄金,我们知道它能保值。正如你说的,《堡垒之夜》里的服装外观,也有可被证明的价值。所以,你希望把某种标准的货币价值定义,与它连接起来,不让它变成纯粹的炒作。而你提到的 NFT,就已经变成那样了:很快滑向人们买进卖出、设法赚钱的世界,远离了人们真正重视的东西。

165:07先不谈钱,重点是交换有价值的体验,或有价值的东西。你可以先玩《堡垒之夜》,再去另一款电子游戏,延续那份有价值的体验,之后再回到《堡垒之夜》。所以,你的意思是,也许可以像网页展示、网络通信那样,建立相应的标准。让互联网运转的各类标准,在这里也需要有对应的版本。要实现元宇宙,这些标准会是什么样?

165:52我们需要很多不同的东西。标准组织有一个领域做得很成功:它们为底层数据交换格式制定了能实际使用的标准,而且今天所有主要引擎都已实现。互联网上有用于二维图像的 PNG 文件、用于音频的 MP3 文件;三维领域有皮克斯的 USD 文件格式,也就是通用场景描述。它描述场景图,即场景中的所有对象及其全部参数。这样,任何支持这些功能的引擎,都可以把它导入,并渲染出与原引擎相同的场景。其中很大一部分功能,已经可以在虚幻引擎、Unity、Blender,以及各种不同的三维软件之间通用。

166:35还有 glTF 格式,用来存储纹理、几何形状,以及三维对象的其他底层数据。你看到《堡垒之夜》的一个角色时,这种格式配合图像文件格式,可以保存其静态外观、身体形状,甚至动画、不同姿态和外貌。不同的标准文件格式,也能保存角色做表情动作时发出的各种声音。但我们仍然缺少许多部分。最大的缺口,是一种处于元宇宙标准化核心位置的编程语言。

167:09如果看看互联网,它是许多不同技术的组合,其中最主要的两项,一是 HTML,用来描述二维场景图,或者说网页控件和对象的二维布局。但那只是静态数据,是一个不会移动、没有动画的网页。然后,还有 JavaScript 编程语言,用它来操作这些东西,向用户展示内容,并实现任何能用代码实现的功能。所以,它是在浏览器里运行的一种小型编程语言;元宇宙也需要某种扮演相似角色的东西。

167:44但元宇宙,以及一般意义上的三维游戏,需要比 JavaScript 更强大、更安全、更能扩展、功能更丰富的东西,因为元宇宙在技术上,实际上比网页更难。网页就像一个应用,是某个人或某家公司准备好的一整套代码和内容。它发布后就保持原样,直到发布新版本,再一版版升级。但元宇宙需要把数百万人构建的代码与内容组合起来,而且这些东西有可能共同形成一个无缝衔接的世界。

168:25对,它是完全分布式、协作式的。还有数据量这个问题。网页当然不一定如此,但通常展示的信息很少。而元宇宙,即使看起来只是《堡垒之夜》这样的东西,随着玩家相互协作,场景图中传递的信息量,也已经极其巨大。

168:54对,《堡垒之夜》最高精度版本的更新,数据量大约六十 GB,而这只是创意生态现有内容的一小部分。十年后,随着标准出现,外面可能有 EB 级数据。我不认为《堡垒之夜》大逃杀就是人类最终能发明的玩法。我们一次次看到,技术能力提高、图形更强、CPU 性能提升、网络服务规模扩大,就会产生此前不可能的游戏类型。《毁灭战士》开启死亡竞赛时代,当时三维多人游戏才首次成为可能。大逃杀游戏大约十年或十五年前开始出现,也只有那时才能实现。二十年前做不了,因为无法以那样的互动程度和性能,渲染大逃杀那么大的环境、容纳那么多玩家,根本运行不了。因此,当技术达到一定程度……[源文此处 Better Royale、VR game 疑为 Battle Royale 的转录变体。]

170:03……原先运行不了,达到一定技术能力后,这个类型出现,并证明是迄今最出色的射击游戏类型。但我认为,随着能力继续增加,还会发明许多新类型,其中一些会胜过现有所有类型。我们目前缺少的能力之一,是构建超出任何一家企业所能完成工作量的环境和游戏模拟。《堡垒之夜》和 Roblox 已有这种想法的萌芽:数万创作者各自制作内容,用户也确实花了相当时间玩各种作品。生态规模超出单家公司,但仍然是进入某一座岛,玩那个创作者的作品。

170:42另一种扩展方向,是在适合的游戏中,把越来越多人的工作结合成无缝、连续的游玩空间。可以想象大陆乃至地球大小的环境,你四处移动,不同地区由不同的人维护。进入不同空间,规则随之定制,从一种体验走向另一种。不再无论何处都只体现一家公司的创作,而是驾驶某人造的车、携带另外二十人做的武器,置身数千人共同构建的模拟和环境。他们可能属于不同公司,也可能是企业家、独立开发者、爱好者,同时协作。

171:37我们完全缺少支撑这种世界的编程基础。现在要实现它所需的代码,根本不实用。所以,我们正大力投资围绕 Verse 的新编程语言技术,以及我们提出的未来元宇宙编程标准,希望解决这些问题,让这样的世界成为可能。

172:00首先,这个未来太令人兴奋:不是几百几千,而是几百万创作者,为地球大小的世界制作大小元素。闭眼想象,不是一家中心化公司控制某座岛的发布,而是人们不断、动态修改数字世界中现实的所有岛屿,真的很精彩。

172:37能谈谈支持它的技术吗?你提到 Verse。首先,Epic Games 的 CEO 竟是编程语言论文的共同作者,这有多厉害?语言理论家们都兴奋了。论文讨论语言很细微的性质,你是合著者。那么,谈谈 Verse 这门函数逻辑语言,有什么很酷的特性?

173:13Verse 是我们为大规模模拟编程构建的语言。设计目标是让代码容易扩展:不只是做《堡垒之夜》岛屿,也能制作供其他几百万程序员使用、在巨大环境中共存的模块和组件,还能扩展到庞大的模拟。有些游戏会很小,大逃杀可能发现一百人就是最优,一千人版本反而更差。但我相信,还有适合一千人、一百万人、数千万人、甚至更好的体验,等待发现。

173:57等等,数千万人一起?

174:03当然。《堡垒之夜》的活动有过一千五百万同时在线用户,但把他们分进每台一百人的服务器,并不是什么优点,只是技术限制。

174:18这可以追溯到虚幻引擎一代选择单线程的决定。如果能办演唱会,让可能数千万参加者同时参与,看见如此庞大的人群,并做有趣的事、彼此互动,那会酷得多。

174:36抱歉,我正努力在脑中加载:同一个场景图里,一千万人互动。多么酷的世界。

174:49当然。一千万人,但屏幕像素还不到一千万。奈奎斯特采样定理告诉我们什么?不需要给每个玩家完整开销,只渲染身边的人,其余用某种近似。

175:01但还有网络部分。你讲渲染,网络可真是……

175:10还有很多工作,但这就是我们的职业:解决难题。

175:12明白。

175:13因为容易的话,别人早解决了。

175:16但这种可能、愿景,真的很酷。

175:21即使十万人、一万人聚在一起,也很特别。现实去演唱会、足球赛,周围人群带来的能量无可比拟。若能带进数字世界,多棒。

175:43总之,抱歉粗鲁打断,继续谈语言技术如何实现这些,谈谈 Verse。

175:55Verse 是函数逻辑语言,因为我们认为,这能同时实现最简单和最强大的语言。20 世纪 70 年代,早期语言 Pascal 的设计者尼克劳斯·维尔特,美国人可能念作 Nicholas Wirth,提出一个原则:语言不该靠大量特性获得力量,而应只有少量特性,却能任意结合、组合。你只需学相对少的东西,真正的知识在于学会怎样把它们组合,构建越来越大的程序。

176:41编程语言领域历史很长。20 世纪 50 年代,最早那批设计者聚在一起,构建了第一个标准化语言 ALGOL。1956 年有一次很少人知道的会议,却决定了现代语言的许多主要基础,后来 C 家族继承了它们。所以,我们很大程度生活在他们定义的世界。幸好很多东西做对了:函数、变量、递归如何工作。感谢他们做对,但也有些不对,Verse 想修正,这就是函数逻辑部分。

177:22有趣的是,传统语言的表达式产生一个值;函数逻辑语言的表达式,可以产生零个、一个或多个值。零个可以叫失败,一个叫成功,多个则提供一组可迭代的值。

177:45如今语言有许多特性,当初是临时拼出来的,没有从零个、一个、多个值的角度想透。函数逻辑语言要解决的就是这个。最基本例子是 if:条件成立做这个,否则做那个。今天通常靠布尔变量或产生布尔值的表达式,变量真或假,表达式求值为布尔。可以组合这些表达条件,但计算布尔表达式时得到的其他计算结果,就丢掉了。

178:28函数逻辑语言的条件不这样:要么成功并产生值,要么失败。成功进入 then,执行这段代码;失败进入 else。精彩之处是,这个成败表达式还能产生值、绑定变量,让 then 分支直接使用。你能写出只有一组变量都成功获得绑定,才能进入 then 的条件。既测试条件,也使用测试结果,可靠性因此高得多。

179:11传统 for 循环,是把一批命令式代码编织起来,迭代产生值。复杂事情写起来别扭,于是不断加更复杂结构绕开,比如迭代器。函数逻辑语言的想法是,循环表达式可以直接产生多个值;零个就迭代零次,多个就依次遍历这些值。

179:41不必一层层嵌套循环,可以在条件或 for 中写类似 SQL 查询的任意组合:绑定变量、做测试、按某顺序产生结果,迭代并处理,得到最终结果。这样,在更简单的语言中,通过简单迭代,也能获得大型复杂 SQL 数据查询的力量,更统一地结合数据库与普通编程的优点。用户函数不只返回值,还可以失败,可以回答一个问题:是,值为这个;或者否。再把它们组合成任意查询。

180:35有趣的是,这并非 C++ 的工作方式。Epic 程序员转来初写 Verse,会用 Verse 风格写 C++ 思路,结果比好的 C++、好的 Verse 都更绕。几个月后才熟练,代码精彩、更紧凑。另一方面,从未编程、在《堡垒之夜》里首次学习的用户,会直接把这当直觉,以为编程本就如此。他们写出的循环和条件,常比内部人员还高级有趣,因为抓住核心概念。

181:21你讲了很多有趣东西。首先,大量人第一次编程就用 Verse,这是一种非常不同、深层上又很直观的学习方式。

181:41逻辑语言还有很多性质,比如一会儿可能谈合流性,还有正确性,能证明代码正确,基本上更容易写无 bug 的代码。

182:06能谈谈这点,以及构建元宇宙时为什么重要吗?

182:12对。元宇宙首先是一个由许多作者编写、不断演变的巨大代码库,可能每秒都有模块更新。这个永不关闭、持续运行的模拟,理应支持所有东西原地热升级。关键之一,是更新已发布内容时,能确保与旧版向后兼容。这本质上是类型检查问题:确认新接口兼容旧接口,归根结底取决于语言的类型系统。多年有很多有趣研究,可惜大部分从未进入 C++。

183:01这个领域有几个分支。Java、C# 早期做过一件有趣的事,后来放下、不再更新:严格规定,今天发布一组类型的模块,未来哪些改动不破坏向后兼容?这能用类型检查解决。比如函数承诺返回整数,以后可改为自然数,因为自然数都是整数,兼容;却不能改为有理数,因为有些有理数不是整数,系统应拒绝。

183:43更有趣得多的是,早在 20 世纪 30 年代就有人认识到,以特定方式设计类型系统,类型不仅能表达传统的“变量 X 是整数”,还能表达数学定理。勾股定理是好例,但程序里也可表达:函数接收整数数组,返回相同整数、只是已排序的数组。用类型理论表达后,就能要求写排序函数的人证明,结果确实排好了。因此,类型可以是定理,按特定方式构建的值可以是证明。

184:46今天数学文献里,越来越多定理由机器验证证明。数学家写证明,由计算机核实正确。过去数学主要用自然语言,欧几里得定理就是古希腊文写步骤,说服读者结论为真。

185:08从 20 世纪 30 年代开始,数学家走向严谨形式证明,一系列步骤可机械验证。所谓计算机证明,实际是用 Lean、Coq 等证明语言编写程序,让电脑检查。这意味着你没法说谎:声称证明了,电脑也验证,就确实为真。

185:44这原是数学证明语言的特性,也正逐步进入编程语言。Verse 的目标,是成为首个全面采用这种方法的主流语言,而且足够友好,不要求人人都手工证明。想法是逐渐让类型包含更多信息。理想是编译器接受、没提示错误,程序就应该工作。当然人会各种犯错,永达不到理想,但可加入更多特性,让编译器抓更多人的错误、告诉哪里不对,不断靠近。

186:37这在元宇宙尤其重要。漏洞进入运行时、用户手中后,修复成本比自己运行时刚发现高数百倍。本机改一行就修;上线后要发布补丁、说明、测试、检查是否引入其他错,代价高很多。Verse 真正目标是尽量编译期抓这些错误,让元宇宙可靠。

187:18你能想象,编译时证明程序在某种正确性定义下正确吗?

187:25东西越大,证明难度组合式增长,对吧?

187:29对。

187:29关键是可逐步采用,在真正需要之处用。密码算法很值得证明;全生态要用的数据解压器,证明不越内存非常重要。今天许多安全漏洞,是别种语言编译器本可抓到、C 却因没特性而漏的。

188:04但别觉得可怕。C、C#、Java 等有类型语言,人人一直在证明定理。整数变量赋值,编译器若没拒绝,就证明该值是整数。加入高级证明后,系统会产生易用、大家愿用的可组合性质。

188:32未来 AI 帮写代码时,问题是它可能给完全合法、能编译、却做错事的代码。若语言能要求“写排序函数,并证明排好了”,AI 可连证明一起写。编译器不报错,就能信确实排序;否则回去告诉 AI 没成功。知道程序真做所说、所想之事,非常重要。

189:12顺便,你发来 Curry–Howard 对应,我深入读,程序与证明的数学关系,整个领域迷人。

189:25对,这是 30 年代的结果,计算机科学最重要、却几乎没人知道之一。严谨分析类型系统和当时编程形式,确立:若类型系统有某些特性,数学逻辑可证明的一切,也能在其中证明。

189:51证明拆开是什么?证明整数存在,给一个整数,如五。写 var X int,再 X = 5,就是向编译器证明五是整数。这已自然,但还能更高级。证明 A、B 都真,就给一对值,各证明其一,这是证明的合取法则,也有析取法则。

190:23还有蕴含法则,函数恰好满足。写函数,就是给我这东西、我给你那东西。给某类型参数,返回另一类型。函数的编写,证明给一种可产生另一种,即蕴含。大概只需七条法则,就能在类型系统构建整个数学逻辑。

190:54有一点没获足够关注:语言有些方面主观,只是设计者安排。Guido van Rossum 决定 Python 用某种缩进。涉及人的记号、命名,总会有主观层。

191:18但有些不主观,应是基础。类型系统有一种做法能给数学证明,其他不能给的都更差,最终应摒弃。

191:38计算领域任务之一,是辨过去什么对、什么错,对所有错回头修。否则不断积残留复杂,系统最终被自身复杂度压垮。

191:54过去一年公布许多严重软件、服务漏洞。某国家行为者给电信监听系统植后门,问题巨大。但拆到底,很可能是某 C 程序缓冲区越界。语言决策影响长远。

192:21给几亿人造系统,却重新从第一性原理想怎么造,很迷人。

192:29提一下 Verse 主要设计目标:简单到新手可学,通用到写各种代码数据,团队构建、迭代、交付高效;静态验证,编译期尽量抓各种运行时问题;实时开放世界多人游戏性能好,一会儿可问;完整,让每特性可抽象;经久,满足今天及可预见未来。

193:08还有强类型,多范式结合函数式、面向对象、命令式优点,尽量确定,多次运行完全一样;可失败表达式;推测执行、并发。太多有趣特性。

193:33谈并发?Verse 什么让它达到所需规模?

193:41这是这一代正解决的最大技术问题:驯服并发,让普通程序员只写普通代码就实现。

193:57很难。

193:59单线程已够难,但可完全预测。语言确定,同代码反复运行,总做相同事。按某顺序读写变量,行为总相同。

194:19引入多线程,或数据中心多节点合作时,各自想读写不同数据、改世界状态。今天实际程序几乎所有并发,仍手工实现。程序员极仔细写多线程代码,协调数据访问,求可预测结果。

194:53难到虚幻引擎五代,每代都决定不手动把所有玩法代码扩展多线程。太容易错,不只我们,也包括每家授权引擎造游戏的合作方,这是巨大的自伤陷阱。

195:17并发有多种不太理想的解法。一个办法是干脆不解决,拆成微服务。亚马逊等超大网站,几乎都靠数百微服务,服务器发消息协商,程序员仔细写,最终才能可靠接订单、不弄乱。

195:48但元宇宙有几百万程序员,多数不是计算机科学家,而是爱好者、新手、为乐趣做东西,这种方法扩展不了。他们不可能预想所有并行计算的依赖。

196:07不过,80 年代有出色基础工作,一篇 Haskell 并发论文《Composable Memory Transactions》让它非常具体,描述事务式程序更新。事务是对内存做一系列操作的代码块,可读写、处理接受拒绝订单、银行转账,条件判断:“你要转一百,先看够不够;不够拒,够就扣你一百、给对方加一百。”

196:56没有事务,人人随意加减余额,有人读、减一百、写回,期间别人也写,就可能余额不一致。必须确保操作按某个顺序进行。

197:16事务把整程序分成自包含的更新块,可任意计算,但每块必须像单线程那样运行。在引擎里,就是玩法对象更新。其他玩家、敌人、火箭、投射物、车,所有移动互动、非固定静态世界部分,都是独立游戏对象,以每秒六十帧、每帧一次更新。

197:52因此,百人《堡垒之夜》大逃杀每帧有数万对象更新。若几十亿玩家,数量会多得多。

198:04现在单线程?

198:05对,每局单线程,这就是百人限制。现在把服务器压极限,也许一百四十,但到不了几千、几百万、几十亿。

198:18需要自动、像魔法般扩展代码,事务就是思路。事务是完整运行的一粒代码。让程序员普通读写变量,不必担忧并发。今天电脑只是运行程序,语言层面不做推测。

198:50事务思路是,同时应用很多操作,但不直接读写共享全局内存,否则争相访问同一数据、产生矛盾;而是局部记录写操作,保存在该事务专用缓冲区。代码看起来像影响全局状态,实际隔离,暂存待后。并行跑几十、几百、几千更新,查读写冲突。如果两个事务不读写相同数据,任意顺序、同时跑,都不改最终结果。

§03完整文稿 3

199:51对,顺序无关。想象数百万玩法对象更新并行,这正能实现数千万人同场,迷人。

200:13准确。关键是推测运行,确保无冲突前不提交内存。更新一万对象,发现九千无冲突,就提交九千,任意顺序都同结果。

200:33太酷。

200:34剩一千得重跑、再试,也许不同交错,最终提交。期间丢掉这些计算,以后重做。

200:47这样把程序员要解决的编程问题,转成语言设计者的问题。原本施加给百万人的巨大痛苦,改由少数人承受,让它真能运作。

201:07太惊人。

201:09Verse 现状?若成功,希望成功,会成虚幻六重要部分。时间表、现在在哪?

201:23多事并行。一边规范带所有期望特性的终极版,一边陆续交付较简版本,过去一年半发了几十次更新。

201:44已交付版逐渐加功能,每次保持向后兼容,持续接近终极版。暂时全在《堡垒之夜》虚幻编辑器 UEFN 里试,先与创作者在元宇宙用例测试、迭代,再给所有引擎合作伙伴的各种项目。现在 UEFN 编程特性少,还需多,每增加都会改善创作者世界。

202:23今年每几个月加重大 API。但独立游戏授权开发者已可通过 C++ 访问全引擎,对 API 期望极高。所以,要补齐未来玩法编程所有必需功能,才能向他们发布。

202:45有两条发展支线:面向游戏开发者的 UE5,面向 Fortnite 社区的 UE5。某些开发只在一边,未应用到[听不清,03:23:00]。非全部 UE5 功能都进 Fortnite,因为尚未搞明白,或未做到七平台独立于平台部署。

203:10所有支线汇合是 UE6,仍几年后,无精确时间,或许两三年后见预览,持续进步。

203:27很好,一边持续思考终极语言,一边大量人用已发布版,但限 UEFN 游戏环境。以后把这里学的整合到通用编辑器、各种模拟世界——

204:03……包括 Fortnite 的各类游戏。既在这里试,又看终极方向、满足提到功能,很好。

204:19UE6 要结合两边最好:社区与授权者都更易玩法编程,各种大模拟更可扩展,更易用,也更易招熟悉人才;每个开发者都有完整部署能力,做一次、到处发。

204:47最终可造任意游戏,发布为 Fortnite 岛,让玩家带物品外观、正确互通,或独立游戏,或两者。独立也不该错过开放经济,因为那时会向各类第三方开放 Fortnite 物品经济。

205:17希望有标准机构,也许分阶段。独立游戏也可选支持 Fortnite 物品,自己物品进 Fortnite,经济融入元宇宙,解决 Matthew Ball 近年记录的行业核心问题。

205:40Matthew 很有帮助,书很棒有新版,推荐。很多独立开发者听,我见很多一人用引擎造游戏。

205:59强推《Choo-Choo Charles》,Gavin Eisenbeisz 独作,很受欢迎。我记得他说不用 C++,只可视脚本、蓝图——

206:21对。

206:21……做出来。支持 Gavin 和类似独立开发者,太多天赋艺术,想支持疯狂梦想家。

206:37Epic 怎样赋能,让他们造游戏、至少赚够继续艺术?

206:56主要生产力。成功必须好游戏。若类型前所未有,可比竞争成熟、大众期望高的类型做得更小简单。要让人在合理时间内完成、发布、维护,工具很重要。

207:22工具尽量高效,另有素材市场。现成免费付费内容让小队做大游戏,专注独有内容,写玩法、布环境,不必每棵树石亲做,别人做的也许完全适用。

207:56还会更多。独立开发者也靠在 Fab、Unity 资源店卖内容谋生。劳动分工极有价值。早期、80 年代多数一人一个游戏。

208:16后来分工出现,美术、程序员,再玩法与引擎程序员,如今还有技术美术,几十种专业共同做 3A 三维游戏。内容越模块化,越能现成拿,而非全亲做或让引擎生成,就越能让创作者快速成功。

208:46该谈你在理念、精神上反垄断,包括向开发者抽 30% 的苹果市场。你认为苹果、Valve 等不应抽这么多,谈谈?

209:23从计算基本原则起。首台电脑是沃兹尼亚克设计、苹果销售的 Apple II Plus,再 IBM PC。人人可写,开机就语言提示,反而要费事才不编、运行别人程序。极赋能,人人写、放软盘。

209:51可分享、复制、进店卖、建生意,不需大科技公司许可,连 IBM 也不需。它当时主导全球,却发开放 PC。我深记那是神奇、美好、全球技术经济空前进步时代。

210:29后来大公司发现可封闭,阻软件作者自主发布、直接与客户交易。我始终视为滥用。买电脑手机花自己的钱、拥有了,没理由苹果阻直接从开发者网页装应用,或自己写、运行,还需许可、开发者账号、官僚流程。

211:16用户应能直接与开发者交易。已买手机,为什么所有交易再加 30% 垃圾费,还选择性收?我认为深度滥用,关闭曾推动软件经济的竞争引擎。Windows、互联网仍活跃,移动因商店则不,它们对用户没提供有用价值。

211:55是能搜索软件,但别人可做更好。若 Valve 做 iPhone Steam,我赌比 App Store 好、多人用,逼苹果改,人人提升。苹果谷歌封竞争引擎,影响巨大,包括移动游戏变得冒犯玩家品味。

212:32看[听不清,03:32:33]主机,商店、评论中最好游戏有创意,卖最好物有所值、投入巨大。iPhone 却不是,榜首几乎总是贪婪、高变现、收割大户的游戏,充满付费赢、战利品箱,某种合法赌博,不由乐趣驱动,而操纵玩家求利。

213:17对。

213:18靠乐趣的游戏很难成。在线运营成本又极高,无重抽箱的好玩游戏,也先付苹果 30% 才进平台,这远高于多数公司利润。费超正常利润,只能涨价维生。

213:48所以 30% 推高所有数字商品价,经济通胀力量。第一层抽税之后,还有获客。《堡垒之夜》被封前,iOS 搜它,首个总是极不利用户的竞争游戏。Steam 搜在售游戏,自己总第一,因为没被广告劣化。苹果有,为赚超 30%。

214:22想自己游戏搜索第一,可能付到 45%;社交媒体触达,再 20%。类似总收入 70% 都是获客、让人进游戏的垃圾费。剩钱只能养那些常规玩家看来几乎不像游戏的滥用性游戏。

214:47有例外,iOS 有好游戏、好做法,但机制被腐化,竞争可修。多竞争商店,就有很多好选择、更好交易和价格。

215:04Matthew 让我问,为何其他公司不如 Epic 公开彻底抗苹果,独特点?我完全同意,苹果这样错。

215:26苹果很多面伟大、带来好,但这里就是错,没提供 30% 价值。即使提供,无竞争的垄断中心控制也错。为何你敢、别人不站出?

215:58人人怕,苹果可毁生意。Epic 独特:开战时有全球最大游戏,多数用户 PC、主机,即使失 iOS 还能活。Spotify、Facebook、前十移动应用,我想没谁离苹果可活,封就毁。

216:40苹果很明确,若冲突,可剥全部用户访问。对 Epic 不只为胜诉,也向全球开发者传话:“反抗,毁你,至少尽力。”少数敢发声,未违政策时,苹果倒克制没摧毁。

217:18这有纪律、也有算计,不能被看作批评就杀公司。但还有软权力,30% 加广告贵,审批快一点、延几周,都重影响竞争。

217:51长期与开发者猫鼠,不讨好就慢更新。几家大科技更新被拖几周几月,却低调,人人怕公开挑战。软权力足改经济、吓退几乎所有上市公司。

218:19Epic 战,因为我信十亿级实时三维社会生态,可能涵盖多数主要游戏、所有开发者平等、开放经济,竞争给最好交易、直接做生意,只在苹果谷歌守门垄断解除后才能生。

218:55不只 30%,虽经济毁灭,还有控制。苹果不让 iOS 浏览器把网页标准实现得比自家好,网页 API 存储、三维受限,刻意削弱,免竞争原生。

219:27不给网页这些功能,阻竞争。若元宇宙照网页对待,就可说只能苹果引擎、禁虚幻,再加限制,强迫交易走苹果,或让它差到无法竞争。

219:51一整套反竞争,让别人弱,只有苹果能做某类应用、整某些功能。欧洲 DMA 要求竞争商店,也规定商店只能商店,不能嵌 Facebook,不能商店带社交——

220:13“商店只能商店,因为更多功能可能更有竞争力。”像苏联术语纵深防御,层层致命障碍,越一层,其他还在,把全方案封死。

220:34欧洲正这样,虽准 Epic 商店,却让我们与客户极难、无竞争,直到欧盟真执 DMA、严惩迫合规前,没成功机会。

220:56再说我觉得错,盼公众政府施压开放。爱苹果,也信对苹果好。公司自然想关、控、压竞争,但优秀工程师那么多,开放然后赢,正确激励磨剑,让商店界面更好、一切更好。感谢发声,让人敢说错。

221:58谢谢,竞争让人人更好。垄断被迫竞,产品交易迅速改善。苹果很多可最好却很差,老领导抓旧政策,成每开发者、监管者敌,最终大害自己。

222:24期待新代画亮路。Epic 曾十多年苹果好伙伴,演示合作技术,做惊人东西。最想要那苹果、沃兹最初观念,Apple II 真棒、全开放。

222:51嗯。

222:52Apple II 手册列全部 ROM 源码,能确切理解、学习。还有整机电路图,教造外设、接入开放生态,这才伟大苹果。那样的公司会再成世界最好。如今站历史错边,该改。

223:17希望 Epic、苹果找到共荣,苹果更拥抱竞争。欣赏你多次夸 Steam,却几乎不提自己商店,体现多样、自由选最佳、人与人自由互动的大网。

223:55你几年前建 Epic 商店,以 12% 而非 Steam 的 30% 创压力,说明不该那么高,想法很棒。准备时看网上很多批评,当然网络戏多,赞伟大东西不够。

224:46真想请网络整体多赞,也批评,但庆祝不够。批评分两类:启动器笨、缺 Steam 功能;某些游戏独占合同。先赞 12%,谈愿景,再回应?

225:31人说笨,因为确实笨,要改。工作很多,希望早把生活便利功能放其他之上。Steam 有行业最好程序员十五年积累,团队更大、时间更多。

226:09我们得决定支持什么、何时。常是商业功能,商品展示、多版本、普通升级豪华等合作方需要,另有便利、加载时间。便利重视不够,已多次明确认识、多轮重构,但对我们和用户都失望。也过一阵才知体验不一致,距 CDN、游戏库大小决定顺还是笨,糟体验者占抱怨很大部分[听不清,03:47:04]。

227:05他们会说。也说记忆、网上看,Steam 初期很长也笨。

227:15对,从头批评没全部 Steam 功能,但确实不想全有。它有游戏论坛,我们不建,合作方通常也不要,已有偏好渠道。

227:36社媒、Reddit 等地方讨论,他们愿去。目标非模仿全部,但要所有让使用方便愉快的功能[听不清,03:47:54]。路长,继续投,想建几十亿美元业务,相信能成。

228:04已支撑大量 Epic 交易,PC Fortnite,现在 Android、欧盟 iOS 也有。会是行业永久部分,不灰心。某时特别跨平台后,Epic 方法优势会超 Steam。玩家现实朋友很多——

228:37……平台各异,Steam 好友与 Xbox、PlayStation、任天堂不通,把 PC 困纯硬核群,其他都难。很多游戏跑 Discord,又混乱,Steam、Discord、PS 名不同。

229:01两个人四身份,糟。Epic Online Services 把 Fortnite 社交向所有开发者开放,跨平台简单、免费,不守门、不寻租、不锁,只让社交游戏更容易。

229:29更多尤其多人游戏跨平台,梅特卡夫定律真在行业作用,有游戏跌、有游戏长,是当前最主要趋势。能联系的现实朋友比例越多,价值按平方增。

229:55连所有玩家、不分平台群,受益巨大,未来如此。希望 Valve 开 Steamworks 全平台,轻易可做,我们做了,却似用来锁 Steam PC 店。

230:20会长期斗争,总有极有毒 Steam 用户,整个 subreddit 专批 Epic 商店,有时骚扰用我们在线服务的开发者。他们只是为跨平台连接、好友、语音,却被转负面。

230:52显然 Epic 要开发者、玩家赢,也想 Steam 好,竞争一起造好。不看网络很清楚,网上却多非建设负面。

231:24感谢长期推动多平台,打破 Xbox、PS、PC 障碍。我跟你们玩,界面、语聊好,PC、PS、Xbox 一起——

232:02……除小图标,分不清平台。障碍噗消失,商店与 Fortnite 压力很好。没理由孤岛,玩家第一,与现实朋友、新朋友全网互动,感谢。

232:38谢谢。Sony 长期禁跨平台,聊很久,最后很严厉,但转变、开放,私谈做对。2018 争论后合作反更深,越来越多——

233:11《战神》等角色进 Fortnite、联动,索尼游戏、影业用引擎,音乐合作。关系美好,是历史政策不适未来、后来改变的好例。

233:38认真谈后改,对 Sony、Epic、开发者、全主机行业更好,比孤岛继续好[听不清,03:53:54]。原怕开放 Xbox 丢优势,实际此后相对 Xbox 份额还增长。

234:07可说全好。更好苹果本会收高层邮件后说有问题、讨论、重想、听。他们没,所以五年战,而 Sony 十五多年合作希望仍早。

234:38苹果,加油,爱你,做好一点。第二,独占合同呢?你一路常反独占。

234:54回原则。强迫他家用支付是胁迫,但用好处、更好交易、资助等正面激励说服,就完全可。一种阻竞争,一种真竞争。

235:26Epic 从没强迫独占,而用钱、营销等价值交换。游戏是他们的,如何发、怎样经营,当然由他们决定。

235:53想 Steam 就 Steam,想 Epic 独占可,两者都上也可。若付钱换独占,是其权利。这里不是 Epic 这个份额远小 Steam 的弱者,通过更好游戏供给主动竞争的例子。[英文源文此句使用 isn’t,与前后论点可能存在转录不一致,保留其否定。]

236:21偏 Steam 消费者希望那边有,但开发者判断独占收益更好。Epic 对 Google 案开场证据,就向陪审团示独占益。想新店招牌“和旧店全部一样、同价”。

236:58会去新店?不会。同游戏同价,没人换。起初想两法强竞争:与开发者谈好付款额后,以更低价卖。五十美元抽 12%,实际可降价,甚至亏钱给更好交易。

237:29试了,但开发者很快都说不肯降价,因为 Steam 会不给推广位、好处,主机厂也怒,所有关系受损。强平台生态暗中鼓励不比价。因此无法价格竞争,就选独占——

238:03改为供给竞争,签很多、付很多。据我记得,游戏收入外向开发者净支出超过十亿美元,换许多独占。有成有败。《无主之地》在 Epic 很好,我们、Gearbox 认为不逊 Steam,因为专门粉会来。但其他尤其小、无固定必玩受众的,Steam 曝光有用,能触及原本没有的人。最后双方判断,有些独占确实客户更少、表现更差。

238:52限时到后上 Steam,收很多数据。有的行、有的不。弱者竞争要独有价值。懂用户喜欢 Steam、库一处,不爱独占。但不支持使竞争者出现的机制,就不会有更好交易。若 Epic 成功逼 Valve 竞争,开发者消费者都更好,30% 会向实际成本大降。

239:46我看过 Spotify 播客弱者进入,签罗根等独占。长期希望 Epic 像如今 Spotify、罗根全面开放,不独占,改竞流畅界面,因为 12% 哲学基础很强,也在伦理精神上竞争。

240:49也能赢。如今用户够多,能否远离独占?懂弱者进入需要,但与你跨平台、给双方自由选择的精神有点相反。

241:30困境是,竞争商店软权力让开发者几乎无法 Epic 比 Steam 便宜。若 12% 抽成使 Epic 游戏便宜 22%——抱歉,18%,会改变购买。可我觉得 Steam 的不友善电话等,阻止把节省传消费者。

242:15那么用什么让用户离开既有店、去更好店?若开发者怕比价,怎么让多发行商商店收入份额约 90% 的主导者被小店竞争?需答案。好 UI 很好,Steam 精致,Epic 希望追上,但怎样越过十五年游戏库?卖 Epic 多得 18% 收入,本符开发者利益,却怕行动。既有者权力真大,只一样好、在那不够。

243:25希望最终少独占、竞 UI、体验,Steam 30% 向 12% 靠近、支持开发者。我支持、不爱非建设批评,也不爱独占,但懂要机制使人至少分部分游戏库给弱者,盼 UI 继续好。

244:30谢谢,补一点。告诉 Google 要在 Play 外发 Fortnite、竞争,他们觉得独占力量大,给前三十发行商几亿美元——

244:52天哪。

244:52……换不与对手独占,叫 Project Hug,H-U-G,抱紧开发者,是陪审团判违法反竞争主要证据。另个数据,很多人为 Steam 辩成本高因功能多。我们有详数据,Google Play 全运营、维护、软件生态约收入 6%。竞争市场,成本 6% 能收 30%?绝不。苹果更精简高效,大概也约 6%,加到 30%,只有垄断。竞争企业利润几百分点,数字强力支持反竞争扭曲。

246:16游戏行业未来呢?你讲了很多独立开发者的精彩前景,那些所谓 3A 大游戏公司,还有未来吗,角色是什么?你怎么看未来五年、十年、二十年,大小开发者的演变?

246:42恒量是行业竟有时忘的乐趣,人为好玩而玩。

246:51是。

246:51全工作就是提供乐趣。近失败很多没好玩,或不敌生活其他乐趣。解释行业不振不需复杂理论,一些发行商能力退化,部分人才竞争,Epic、Riot 等活跃公司、大科技吸最好开发者。

247:32有些公司竞争不力、变差、游戏不好玩,其他像政治戏都次要。核心没乐趣,而乐趣在变。语聊与朋友社交玩,通常比独自有趣,有例外,但时长明显转向与现实认识朋友,不只随机陌生人。我和几乎所有玩 Fortnite 类的人如此。

248:21影响生意:二十人各喜单机,可各买不同。多人也有各自偏好,但想一起,所以越来越选大家喜欢接受的,即使非各人最爱。我的 Fortnite 群有人本想 COD、有人《英雄联盟》、别的,但一起太开心。

249:17强梅特卡夫效应,吸较多朋友就能吸你、留你。Matthew Ball 记录元宇宙或大型社交多人趋势,近一年加速,更多来 Fortnite。一年前月活一亿一千万创纪录。

249:57疯狂。

249:59这次又近峰,Roblox 更大,玩家集中共同多人体验。另叠一层,好单机、小多人像假期,玩一阵回来。《悟空》好例,中国优秀团队,西方少见,成功。但多数玩后继续走,也可赚钱,只是此类企业每几年得造新,而大游戏持续积用户。

250:45大量玩家进少数游戏,收入、再投增。内部几千人、外数万创作者,能做小游戏做不到的投入。有越强赢家通吃,最大再投更多、更快增加乐趣,行业围绕改变。

251:25所以两大机会:超大或潜力大、可长期无限留人的多人,和让人从大游戏休假的好小规模游戏。后者需高效,三亿美元不行,四千万可赚很多。这是主要重塑,对没巨大受众的某类单机前景悲观,也是围绕当代技术变化重构的趋势之一。

252:17问个荒唐问题,除你造的,心中最伟大游戏是什么?哪些影响人生、或看见觉得美的艺术品?可完全不同领域。我常回单机角色扮演,《上古卷轴:天际》的世界,最近《博德之门3》也惊人、创新、艺术。你有类似吗?

253:07最佩服造出仿佛完整、有生命呼吸世界的游戏。感觉自己只一部分,别处还有事,永远更多,似能去任何地方、做任何事。虽实际有限、有去不了的地方,但营造惊奇神奇。《塞尔达传说:旷野之息》就是。

253:39对。

253:40《天际》《荒野大镖客》。

253:42后者很棒。

253:43像完整生态模拟。高中同学研究河生态,说少数水文学合理游戏,河形遵侵蚀动力,细节努力大。行业旅程有趣,我上次设计游戏是 1992,不是设计师。保持开放,认为最好类型还没发明。技术、创意、高效工具,会有未梦想的新东西。世界模拟试过很多,常慢且贵,但可能越来越擅长,成为一种。

254:49好多有趣点,新城市建造游戏。

254:52对,《文明》,深度随行动演变,震撼。

254:59那规模还可走进去。大镖客好例,若大规模与朋友共游。你多年造工具,使艺术家有能力关注那细节,爱和心就透出来,能感到。

255:52对,最好游戏有灵魂。COD 与 Fortnite 灵魂很不同,不只画面,也在玩家与游戏、彼此线上互动,值得更多研究。

256:09几个面都谈灵魂,希望多研究。

256:14小设计决定深影响看法。Fortnite 大逃杀总有谜:岛、弃屋,为什么?我非设计、无秘密,以玩家体验,感到神秘也善意。淘汰非血、碎肢,而传送出模拟,常输得好笑、真笑,或佩服对手聪明。塑出玩家彼此正面的不同动态。

257:09为感游戏状态,我常补满小队,随机配三人玩,有时语聊、有时无。以前匹配区大,学点战场西语,能与远到——

257:27战场西语。

257:29……墨西哥城的人聊。各种陌生人的正面互动很出色,不像 COD 人人要当挑衅者。

257:49爱网游文化。传奇《GTA》有自己世界、角色、风格、锋芒。但六代做太久,像你说的“再六个月”,有些多年才完。你最终完成 Unreal,有何过程洞见?外看 GTA 或他公司为何那么久?

258:52造游戏极难,尤其推边界。GTA 真实感、大城什么都可能、活着、你只部分,Rockstar 品质惊人。前所未有质量细节,无法预测多久。解决今天到下一轮问题,不知会解锁哪些新问题。常一个逼真,反衬其他假,又得修。

259:37不求高质,发很容易,但不会成功。Rockstar 久,却惊人、最终值得。坏游戏永远坏,迟来的好游戏最终发、就是好。

260:01有交付品质压力,不容失手?我所知 Epic 最近没失。

260:19当然,常最后一刻仍拼优秀。快周期难,新赛季得很多系统跑起,才能整体判断。末一月才真知造什么、理解,平衡等晚问题常末出现,急修。有些只能线上经验学,接受这是实时体验、实验、不断改善。总有人不爱某处,学、改、前进。

261:12哲学大问题:造巨大快乐世界,也学人类,什么使你对人类未来有希望?

261:34数字时代两个对照。社媒文字,负面、政治、推销、互动量创作常促有毒,是多方面倒退,社会动态甚至让世界基础摇晃。对比真正与人连接、随机 Fortnite 队,未见未聊的人产生的联系,极好、可亲。

262:28教训是人对人说话、现实或虚拟同处,自然有共情、结关系。虽冲突,总更促规范、好互动、正面。怒打字则自强化负面。社媒与越来越社交的游戏,两个媒介实际动态分野巨大,一很正、一时很毒。

263:18对,文字即使游戏 Discord 也毒;同房现实,却少见不合。足够沉浸、感到对方的数字空间,使共情、喜悦出来,提醒人善、愿看别人好、分享,聚成群就有爱。

264:12可能骂别群,是人黑面,但内部快乐。我也有希望,越易在网上共情连接越好。感谢推边界造世界,感谢今天聊,荣幸。

264:46非常感谢,很开心。

264:49感谢收听与 Tim Sweeney 对谈。支持请看简介赞助商。最后留本杰明·富兰克林的话:“不是因为变老才停止玩耍,而是停止玩耍才变老。”谢谢,希望下次见。

— 读到这里,多懂一点。 —