「Lex Fridman 访谈 Tim Sweeney」关于Fortnite, 虚幻引擎以及游戏的未来
- 视频链接:Tim Sweeney: Fortnite, Unreal Engine, and the Future of Gaming | Lex Fridman Podcast 467
- 官方频道:Lex Fridman
内容介绍
本文档详尽记录了 Lex Fridman 对 Epic Games 创始人兼首席执行官 Tim Sweeney 的深度访谈。这次对话跨越了数十年的技术发展与个人历程,为我们理解现代视频游戏行业的演变、核心技术的挑战以及未来可能的图景提供了独特的视角。
访谈从 Tim Sweeney 对计算机和编程的早期兴趣谈起,追溯了他创办 Epic Games 的初心,以及早期作品如 ZZT 的诞生过程。随后,对话的核心转向了革命性的虚幻引擎 (Unreal Engine),深入探讨了其从第一代到最新的第五代引擎在渲染、光照、几何体处理(如 Nanite 和 Lumen 系统)等方面的关键技术突破与迭代思路,尤其是在模拟“真实人类”这一图形学终极挑战上的进展与 Metahuman 项目的努力。
访谈用相当的篇幅讨论了现象级游戏《堡垒之夜》(Fortnite) 的崛起、其背后的技术规模化挑战、独特的商业模式与创作者经济,以及它作为“元宇宙”早期形态的实践意义。基于此,Sweeney 阐述了他对于未来开放、互联的元宇宙生态的构想,重点介绍了为实现这一愿景而开发的新编程语言 Verse 的设计哲学与核心特性,特别是其在处理大规模并发和代码可靠性方面的创新。
此外,对话还触及了行业层面的深刻议题,包括 Epic Games 对抗平台垄断(尤其是与苹果公司的法律斗争)的立场与动机,以及 Epic Games Store 的竞争策略与争议。Sweeney 也分享了他对游戏行业未来趋势、独立开发者的机遇与挑战,以及 AI 在游戏创作中角色的看法。
内容纲要
Lex Fridman 访谈 Tim Sweeney
├── I. 渲染“真实人类”的挑战
│ ├── 挑战与重要性 (进化心理、高期望值)
│ ├── 技术难点
│ │ ├── 数据采集 (专用硬件、高帧率/分辨率)
│ │ ├── 面部复杂性 (形状、肌肉、脂肪、运动范围)
│ │ ├── 毛发渲染 (近似计算)
│ │ ├── 次表面散射 (光线穿透皮肤)
│ │ ├── 皮肤细节 (油脂、反射、吸收、纹理)
│ │ └── 微表情捕捉 (细微变化、情感表达)
│ └── 恐怖谷效应
├── II. Tim Sweeney 的编程启蒙与早期经历
│ ├── 初识编程 (11岁, IBM PC, BASIC)
│ ├── 早期编程记忆 (代码记忆、语言缺陷与摩擦)
│ ├── 早期项目 (文本游戏、数据库、编译器、BBS程序)
│ └── 投入时间 (10-20岁, 1-1.5万小时)
├── III. 对年轻程序员的建议与学习观
│ ├── 小时数的价值 (学习、理解缺口、实验)
│ ├── 项目驱动学习
│ ├── 知识的融会贯通 ("空手道小子"时刻, 工程知识应用)
│ ├── 工程训练的价值 (严谨性、解决问题能力)
│ ├── 学习的本质 vs. 证书
│ ├── 珍惜年轻时的学习自由
│ └── 反思现代教育 (结构化 vs. 自由探索)
├── IV. Epic Games 与 ZZT 的起源
│ ├── 从文本编辑器到游戏 (ZZT的诞生)
│ ├── 用户体验测试
│ ├── Shareware 模式与早期成功
│ ├── 成功的意义 (金钱观、软件传播力、潜力认知)
│ ├── 发布编辑器与核心理念形成
│ └── Epic 的双重使命 (娱乐+工具, 服务创作者+玩家)
├── V. 早期互联网与数字发行
│ ├── BBS 时代 (调制解调器、本地社区)
│ ├── 互联网的兴起 (90年代开放)
│ └── 游戏发行的变迁 (Shareware -> 零售 -> 数字发行与盗版 -> Steam)
├── VI. 对独立游戏开发者的建议
│ ├── 差异化竞争
│ ├── 利用新模式 (如Shareware)
│ ├── 降低门槛
│ ├── 提供创作工具/平台
│ ├── 认识竞争激烈性
│ ├── 迭代发展的重要性
│ ├── 早期创业优势 (低资本)
│ └── 社区连接与反馈
├── VII. Unreal Engine (虚幻引擎) 的诞生
│ ├── 时代背景 (Wolfenstein, Doom的冲击)
│ ├── 技术解密与启发 (Michael Abrash)
│ ├── 团队组建与转型 (全力投入3D)
│ ├── 早期开发 (人员分工、高强度工作、财务困境)
│ ├── 引擎授权业务的意外开启
│ └── 成功的关键 (人才、意志力、快速迭代)
├── VIII. Unreal Engine 技术深入探讨
│ ├── 早期技术挑战与创新
│ │ ├── 构造实体几何 (CSG, BSP Tree)
│ │ ├── 动态光照与光照贴图 (Light Mapping, 近似计算)
│ │ ├── 体积雾 (Volumetric Fog, 线积分, 数学技巧)
│ │ ├── 编程语言选择 (C -> C++)
│ │ └── 硬件优化 (针对早期CPU的极致优化)
│ ├── Unreal Engine 5 核心技术
│ │ ├── Nanite (虚拟化微多边形几何体, 优化管线)
│ │ ├── Lumen (全局光照, 多尺度计算, 颜色溢出)
│ │ ├── 材质系统 (分层叠加)
│ │ └── 粒子系统 (Niagara, 与光照交互)
├── IX. Unreal Engine 的演进 (UE1 - UE6)
│ ├── 硬件性能的飞跃
│ ├── 渲染技术的迭代 (各版本核心突破)
│ ├── 保持不变/演进较慢的部分 (文件管理, 网络, 单线程模拟)
│ └── Unreal Engine 6 的目标 (解决核心限制, 多线程, Verse)
├── X. Metahuman 与数字人创作
│ ├── 挑战 (图形学最难点)
│ ├── Metahuman 项目与领导者
│ ├── 数据采集 (大规模、多样化)
│ ├── 面部重建 (Creator工具)
│ ├── 动画捕捉与迁移 (Animator工具)
│ ├── 渲染技术难点 (毛发, SSS, 皮肤, 微表情)
│ └── 现状与未来 (长期项目, 持续进行中)
├── XI. Unreal Engine 在影视行业的应用与 AI 整合
│ ├── 影视应用 (提高生产力, LED虚拟制片)
│ └── 与生成式 AI 的结合
│ ├── 当前挑战 (一致性、可控性)
│ ├── 未来方向 (AI作为增强工具, 后处理, 内容辅助生成)
│ ├── 场景图与 AI 结合
│ ├── 克服 AI 的“不可控”
│ └── 对从业者的影响 (机遇大于淘汰, AI辅助编程局限性)
├── XII. 模拟现实与元宇宙 (Metaverse) 概念
│ ├── 模拟现实的逼近 (非人类 vs 人类模拟)
│ ├── 模拟假设与哲学思考 (宇宙机制, 量子力学)
│ ├── 创造沉浸式虚拟世界的伦理考量 (替代现实? 模拟痛苦?)
│ └── 元宇宙的定义与现状 (核心是多人社交游戏体验, 非必需VR/NFT)
├── XIII. Fortnite 的起源、成功与规模化
│ ├── 起源 (Game Jam, 早期概念)
│ ├── 演变 (艺术风格转变, 模式迭代)
│ ├── Battle Royale 模式的诞生 (受PUBG启发, 快速开发)
│ ├── 爆炸性成功与规模化 (用户/收入增长, 技术挑战与AWS)
│ └── 商业模式与再投资 (道具商店, 创作者经济, 持续投入研发)
├── XIV. 未来元宇宙:互操作性与标准
│ ├── 当前痛点 (平台/游戏孤岛)
│ ├── 目标 (社交互通, 经济互通)
│ └── 标准化需求 (道具规格, 关键缺失: 标准化编程语言)
├── XV. Verse 编程语言:愿景与技术
│ ├── 定位与设计哲学 (为大规模模拟, 简洁强大)
│ ├── 核心特性:函数式逻辑编程 (失败/成功/多值, 条件/循环改进)
│ ├── 面向元宇宙的特性
│ │ ├── 可靠性与验证 (类型系统, Curry-Howard同构)
│ │ ├── 向后兼容性
│ │ └── 并发处理 (STM, 推测执行, 冲突检测)
│ └── 发展路线 (迭代发布, UEFN测试 -> UE6整合)
├── XVI. 反垄断斗争:以苹果为例
│ ├── 核心理念 (开放平台重要性)
│ ├── 对苹果模式的批评 (封闭生态, 30%税, 扼杀竞争)
│ ├── Epic 发起挑战的原因 (为开放元宇宙, 自身承受力)
│ └── 对苹果的期望 (回归开放精神)
├── XVII. Epic Games Store (EGS):策略与竞争
│ ├── 核心策略 (12%抽成)
│ ├── 面临的批评与回应
│ │ ├── 启动器体验 (承认差距, 持续改进)
│ │ └── 独占协议 (后来者竞争手段, 开发者自愿选择)
│ └── 长远目标 (推动行业变革, 促进跨平台)
├── XVIII. 游戏行业的未来与游戏设计
│ ├── 核心驱动力:乐趣 (Fun)
│ ├── 社交化趋势 (与朋友玩的重要性, 梅特卡夫定律)
│ ├── 市场格局变化 (大型社交游戏集中化, 单人游戏需控制成本)
│ ├── 优秀游戏的特质 (活生生的世界感, 细节与灵魂, 正向互动)
│ └── GTA 6 与长开发周期 (追求极致质量的难度与价值)
└── XIX. 对人类未来的希望
├── 数字世界的两面性 (社交媒体负面 vs 在线游戏正面)
└── 希望的来源 (共享空间中的直接互动促进共情与积极性)
Lex Fridman 访谈 Tim Sweeney
Lex Fridman: 蒂姆·斯威尼(Tim Sweeney),传奇视频游戏程序员,Epic Games 的创始人兼首席执行官,创造了包括虚幻引擎(Unreal Engine)和《堡垒之夜》(Fortnite)在内的众多令人难以置信的游戏和技术,两者都彻底改变了视频游戏行业以及玩和创作视频游戏的体验。
I. 渲染“真实人类”的挑战
Tim Sweeney: 人类是计算机图形学中最难的部分,因为数百万年的进化赋予了我们专门的大脑系统来检测面部模式、推断情感和意图。因为穴居人在看到陌生人时,必须判断对方是友善还是可能想杀死他们。因此,世界上的人们对面部有着极其精细的期望,我们能注意到不完美之处,尤其是由计算机图形学局限性引起的不完美。
其中一部分是捕捉人类。为此,我们构建了非常先进的专用硬件,将人置于一个捕捉球体中,里面有数十个摄像头,以高分辨率、高帧率拍摄他们经历一系列动作的视频。捕捉人脸很复杂,因为我们面部的细微细节,以及所有肌肉、肌腱和脂肪如何协同工作,赋予我们不同的表情。所以这不仅关乎人脸的形状,也关乎他们可能经历的整个运动范围。
这就是数据问题。计算机图形学还有很多其他问题。比如有渲染毛发的技术,这真的很难,因为你无法渲染每一根毛发——同样,我们知道物理定律,直接渲染每一根头发很容易,但这会慢上 $10^9$ 倍。所以你需要近似方法,在不计算每一束光线与每一根头发的每一次交互的情况下,捕捉毛发对渲染和像素的净效果。
这只是其中一部分。还有针对面部不同部位的细节特征。还有次表面散射(Subsurface Scattering),因为我们认为人类是不透明的,但实际上光线会穿透我们的皮肤,它并非完全不透明。光线穿透皮肤的方式对我们的外观有着巨大的影响。这就是为什么你无法通过给人体模型上色使其看起来像真人一样,它只是一个坚实的表面,永远不会有那种细节。
Lex Fridman: 这真是让我大开眼界。我听说过皮肤的油性会产生非常具体、细致入微且复杂的反射,然后一些光线被吸收并穿透皮肤,这创造了我们人眼能够感知的纹理,并创造了我们认为是“人类”的特质,无论那是什么。所有这一切,还要考虑到涉及做出细微表情的所有肌肉,仅仅是眼睛的轻微眯起,或是微笑的微妙形成。你必须捕捉人脸的这种微妙之处,比如真实微笑和假笑之间的区别,或者那种刚刚开始形成、却实际上揭示了深深悲伤的微笑。所有这些,当我看一张人脸时,我能读懂,能看到。你必须拥有能够实时渲染出类似效果的工具,而这极其困难。
Tim Sweeney: 没错。要正确地呈现面部,需要计算机图形学中数十种不同系统和方面的相互作用。如果其中任何一个出错了,你的眼睛会完全被吸引过去,你会发现它落入了“恐怖谷”(Uncanny Valley) 的错误一侧。
II. Tim Sweeney 的编程启蒙与早期经历
Lex Fridman: 你最早是什么时候爱上计算机,或许是编程的?
Tim Sweeney: 我有一个比我大 16 岁的哥哥 Steve Sweeney。在我还是个小孩的时候,他去了加州一家科技公司工作。他买了最早的 IBM PC 之一。所以有一年夏天,我想我大概 11 岁,去加州看他。那是我第一次离开家,就为了和他待在一起。他有一台全新的 IBM 电脑。我在几天内学会了用 BASIC 编程。当时计算机的能力让我大为震惊,它们能完成的事情令人难以置信。从那时起我就迷上了,非常想成为一名程序员。
Lex Fridman: 你还记得你在 BASIC 里写了什么吗?是视频游戏之类的东西?还是像 for 循环、一些数值计算?你记得什么?
Tim Sweeney: 有趣的是,我对所有我最早学会编程的东西都有着极其清晰的记忆。我记人名有点困难,但代码真的能留在我脑海里,每一步、每一个挑战都有学到的教训。其中一些我后来意识到只是我克服了学习障碍,但另一些实际上是编程语言的缺陷,以及认识到其实有更好的方法。当一个程序员第一次学习编程时,他们面临的很多挑战并非学习新艺术的挑战,而是由编程语言设计失败引入的“摩擦”(friction)。随着我不断进步,做了越来越多的事情,包括构建编程语言,我一直在回顾那些早期的教训。
Lex Fridman: 编程过程中的摩擦和痛苦是指引学习的向导。如果我要描述编程之旅,那将是以痛苦为标记的,你不应该逃避痛苦,痛苦有助于你理解编程语言。但你还记得那时你在写什么类型的程序吗?就是早期的那些。
Tim Sweeney: 早期我什么都写了一点。我写了一些游戏。我在 Apple II 上写的第一个游戏,因为我只知道如何在文本模式下编程,电脑会在屏幕上扔出星号,它们从左向右流动,你在屏幕右侧有一个括号,看起来像个棒球手套,你要接住那些星号。那是我第一个游戏,花了几个小时来制作和调整。
我从那里继续,但我构建了很多东西。我在不同时期构建了数据库。我为一个类似 Pascal 的语言构建了一个编程语言和一个完整的编译器,因为我不知道去哪里买这种东西,所以我就自己做了一个。那个时代有趣的一件事是公告板系统(BBS)。在我们消费者手中拥有互联网之前,你用你的调制解调器拨打一个本地电话号码,连接到运行那台计算机的人那里。每个城镇或城市都有数百个这样的公告板,由不同的人运营,各有各的个性和主题。所以我花了很多时间构建一个公告板程序,学习如何处理数据库管理、用户界面以及同时处理多个用户等问题。
所以,在我真正向外界发布程序之前,大概从 10 岁到 20 岁,我可能花了大约 10,000 到 15,000 个小时,仅仅是自己作为孩子编写代码。
III. 对年轻程序员的建议与学习观
Lex Fridman: 你童年投入编程的时间,对你日后取得的成功有何价值?这或许可以作为给年轻人的建议,关于如何分配他们早年时光。
Tim Sweeney: 这不仅仅是时间。关键在于努力学习,了解你拥有什么知识,缺乏什么知识,并持续进行实验、参与项目来改善你的知识库。我做这些并没有严谨的结构或计划,我只是从一个项目到另一个项目,做我认为有趣和酷的事情。通过每个项目,我都学到了新东西:学习如何存储和管理数据,学习如何处理高级数据结构,如何编写具有深度嵌套数据和控制流的复杂程序。
每一个项目都提供了后来至关重要的经验教训。当我在 1991 年发布我的第一款游戏,并在接下来的十年里,我们从零商业发布发展到第一代虚幻引擎时,这很大程度上只是运用了我在过去十年里通过做有趣的业余爱好项目积累的知识。如果我没有做所有那些工作,我绝不可能构建出后来的东西。
Lex Fridman: 所有的实验和探索,不知何故都在后来贡献了价值,变得有意义。生活就是这样运作的,各种碎片最终会拼凑在一起。
Tim Sweeney: 是的,确实有“空手道小子”(Karate Kid) 的时刻。因为这些年我一直在高中和大学学习数学,我学的是机械工程。所以你学了各种数学:矢量微积分 ($\nabla \cdot \mathbf{F}$, $\nabla \times \mathbf{F}$) 和矢量数学,还有矩阵 ($A = \begin{bmatrix} a & b \\ c & d \end{bmatrix}$),以及所有相关领域,物理学、应力与应变,以及如何处理复杂的物理系统。
当时我并不确定工程师实际上会如何运用这些知识。你是工作后就忘了,还是会在纸上写下方程式?作为一名早期工程专业的学生,这并不清楚。但当我开始编写第一代虚幻引擎,处理 3D 数学时,我心想:“等等,这些我懂,我学过。”于是,就像“空手道小子”一样,你粉刷了篱笆,给汽车打了蜡,突然间就能把所有碎片整合起来,基于大量积累的编程语言和数学知识,构建出一个 3D 引擎。这些知识往往是在从未预料到会以这种方式使用的情况下获得的。
Lex Fridman: 我认为有用的还有,一次又一次地学习困难的东西,然后向自己证明你能做到,你能学会困难的东西。所以当你需要以前所未有的方式编写 3D 引擎时,你会想:“我经历过这种情况。我不知道该怎么做,但我们会弄清楚,我会学习所有必要的组成部分。”所以就是不害怕新事物。
Tim Sweeney: 没错。并且不断努力在这些领域之间建立联系,寻找它们的应用。在我发布虚幻引擎很久之后,回过头翻看工程教科书,发现:“哦是的,我用过这个,用过这个,用过这个。”然后我看到关于特征值 (eigenvalues) 的部分,心想:“这到底是什么鬼东西?”但事实证明,特征向量 (eigenvectors) 和特征值 ($Ax = \lambda x$) 正是使 Google 搜索引擎技术奏效并脱颖而出的关键突破。因为他们发现,如果你把网络中存在的所有链接(来自不同网站和指向不同网站的链接)放入一个巨大的矩阵中,并进行计算,找到主导值,那么这些向量就描述了不同事物的最佳搜索结果。
所以,不断获取知识并寻找将其整合的方法是应该做的事情。如果你立志成为一名程序员,你必须编写大量代码,必须不断学习新事物并改进。如果你想成为一名艺术家,你必须不断创作各种风格、各种类型的艺术作品,并不断鞭策自己学习更多。因为你永远不知道长远来看你会最终做什么,但你拥有的知识和技能越多,将它们整合起来并取得成功的机会就越大。
无论你是程序员还是艺术家,你都应该学习线性代数,即使当时它看起来毫无意义。我发现获得工程学位,然后从未在工程领域工作,仅仅作为一名计算机程序员,是非常有价值的。我在马里兰大学就读,对某些学科来说,它有点像派对学校,但他们把工程师们累得够呛。我们学得很辛苦。如果你学习任何工程学科,你会学到大量的数学,你会学到解决问题的严谨性,不仅仅是从维基百科文章中找到的东西,而是经历解决复杂问题的所有练习,建立一系列解决方案来推导出答案。这是有价值的,它体现了你作为程序员所需的知识。
人们上大学时常常想:“我的目标是取得好成绩,拿到文凭,向雇主证明我有价值。”不,那只是大学表面的记账工作。这一切的真正目的是学习。无论你是通过正规教育学习,还是自学,学习本身在职业生涯中才真正有价值。尤其如果你打算创业,真正重要的是掌握知识,而不是拥有文凭。社会越来越倾向于围绕证书重建,你有没有这个证书?你有没有那个证明?但是,专注于构建伟大产品、做伟大事情的公司,会倾向于那些能做出伟大工作的人。
Lex Fridman: 年轻的一大好处是,有更多的自由,有更多的时间去学习。人们上高中时,有时会想:“我等不及要离开这里,成为一个成年人,获得自由。”但当你找到工作,组建家庭——这些都是美好的事物——你会变得越来越忙,总体上学习任何你想学的东西的时间越来越少。那是人生中一段美好的时光,十几岁,二十出头,二十多岁,你可以随心所欲地学习各种东西。
Tim Sweeney: 我认为这在美国正在发生某种变化。人们过分关注成绩、家庭作业以及孩子们生活的结构化。我小时候,我妈妈会给我和邻居们做饭,邻居妈妈们也会给他们做早餐,然后他们会说:“天黑前回来就行。”然后我们就出去玩,做各种各样的事情。我们探索树林,制造卡丁车,回收旧电子零件,搭建我们以为是宇宙飞船控制面板的东西,用于我们假装建造的宇宙飞船。我们有极大的自由。从我还是个小孩一直到上大学,我都有大量的空闲时间。有些人只是用这些时间看电视浪费掉了,有些人社交,还有些人则真正投入到严肃的项目中。
很多人在任何时候都在做很酷的事情。我当时在编程,在学习制造东西。在我向世界发布游戏之前,我会邀请邻居们过来玩我正在做的东西,看看效果,有时他们印象深刻,有时则不然。他们也有自己的项目。我们常常有业余工作,每个人都很有创业精神。每个人都有副业,有时你会去给别人修剪草坪,或者耙树叶挣钱。那里的自由,以及在那里发生的有机学习,我认为对美国的经历至关重要。我担心随着社会变得越来越保护和庇护,使得获得这些经历变得更加困难,这种情况正在逐渐消失。
IV. Epic Games 与 ZZT 的起源
Lex Fridman: 在视频游戏方面,你最早是什么时候爱上视频游戏的?
Tim Sweeney: 我和游戏的关系有点奇怪,因为我真正的志向一直是编写酷的东西。我从编程中获得的乐趣比世界上任何其他事情都多。我最早两个形成性的游戏体验是玩雅达利 2600 上的《冒险》(Adventure),你移动屏幕上的一个点,捡起像剑一样的物体,与龙战斗,入侵城堡,解决谜题,非常简单的标志性东西,而不是写实的图形。另一款让我沉浸其中的游戏是《Zork》,一款文本冒险游戏。它会告诉你你在哪里,你看到了什么,然后你输入命令,比如“向北走”或“拿起剑”或“开门”,以此探索世界。所以游戏没有任何图形,但在你的脑海里,你对所见之物有着精细的想象。它比其他东西更能激发想象力。
玩那些游戏引导我去学习编程,把我看到的一切都编出来。这驱动了我大量的编程工作。我学会了如何在屏幕上移动玩家,学会了如何构建一个设计工具,这样我就可以建造城堡并保存下来,然后在游戏中玩。我意识到用来构建游戏的工具和游戏本身是分离的,你拥有的工具越强大,你或他人就能释放越多的创造力。我学到了所有支持游戏的技术:如何解析文本,“拿起剑”、“向北走”——如何将这句话变成计算机上实际的命令系列。这真的非常令人兴奋。
我必须说,直到《堡垒之夜》问世之前,我玩视频游戏主要是为了学习它们在做什么,以便我自己也能做到。《德军总部》(Wolfenstein) 问世,然后是《毁灭战士》(Doom) 问世时,我会逐像素地审视它。我会非常轻微地移动鼠标,观察到底发生了什么,弄清楚那里运用了什么技术。那是在宏大尺度上的解谜,非常有趣。
Lex Fridman: 带我们回到 90 年代初。你在 1991 年创办了 Epic Games。你编写的第一款大型视频游戏 ZZT 是怎样的?当时的技术挑战和心理挑战是什么?
Tim Sweeney: 那是个有趣的项目,因为我一开始并没有打算制作视频游戏。我刚从 Apple II 迁移过来——我哥哥在我去加州看他之后给我家买了一台 Apple II,我在上面编程了几年,学了很多技术,但到那个周期结束时,Apple II 用户已经不多了。所以我刚有了自己的 IBM PC。
我正在学习编程,意识到我需要一个文本编辑器。所以我开始编写一个文本编辑器。文本编辑器是用来编辑文本文件的程序,有逻辑来移动光标,让人输入文字、退格、删除等等这些平凡的操作。有一天晚上,我完成了它,心想:“好吧,我有一个文本编辑器,但这太无聊了。”所以我把光标变成了一个笑脸字符 🙂,并且让文档中可以放置的不同字符执行不同的游戏动作:一些是墙壁,一些会杀死你,一些是可以在屏幕上飞来飞去的移动物体。
这个我做的文本编辑器演变成了一个小小的游戏编辑器。我正在为一款游戏构建这些关卡。我花了很多时间构建编辑器和一套原始的对象集,大约 20 到 30 种不同的对象,足以构建一个非常酷且引人入胜的游戏,但又不会多到让玩家搞不清他们在看什么。我开始只是构建不同的游戏关卡。想法是,你在一系列版面上,它们通过连接点相连,比如走到当前版面的北端会带你到一个新的版面,如果它是开放的;或者可能它被堵住了,你无法过去。我围绕这个构建了整个游戏世界。
这就是后来成为 ZZT 的游戏。我制作和玩它都很有趣,但我不知道它是否真的可行。所以我做了一个实验,我开始邀请邻居过来,有成年人,有不同年龄的孩子。我让他们坐在电脑前,说:“这是我做的游戏,你自己摸索一下。”我必须强迫自己不告诉他们需要做什么,因为我真的想了解他们是否能够自己发现一切。如今我们称之为用户体验测试,围绕用户体验研究有一个完整的领域,但那时只是邀请一些孩子过来玩游戏。我记录了他们卡在什么地方,喜欢什么,在哪里感到无聊,然后不断地迭代打磨游戏,直到我觉得它足够好。
我把它发布了出去。当时还没有互联网,所以我把它上传到了一些本地的公告板系统(BBS)。从那里开始,它开始传播开来。因为当时 BBS 用户的积分方式就是上传新文件,并声称“嘿,我是第一个把这个带给你们的人”。所以软件有自然传播的趋势。
我决定使用共享软件 (Shareware) 模式。我不仅仅做了这一个游戏,我制作了一个三部曲。我免费发布了第一部,并说:“嘿,如果你喜欢这个,就购买后续两部。”我附上了我父母的邮寄地址,说:“寄给我们 $30 美元,你就能得到这个游戏的续作。”几天之内,支票就开始寄来了。我每天能收到三四个订单,一天能赚大概 $100 美元。我当时想:“哇,我发财了!”因为对于一个 20 岁的年轻人来说,这可是一笔不小的数目。
Lex Fridman: 收到钱,并且可能感受到自己创作的东西获得了巨大成功,那是什么感觉?
Tim Sweeney: 我一直把钱看作是帮助你完成酷事的工具。拥有足够的钱去做你想做的事是关键。它一直是非常功利性的。但是,知道全国各地,然后一个月后世界各地的人都在玩这个游戏,这真是令人难以置信。我,这个在本地 BBS 上发布游戏的小孩,竟然能做国际生意,把磁盘运往世界各地给玩家——因为软件在自行传播——这简直太神奇了。那是软件的新事物,机械设备是不会这样的。你制造一个,卖给某人,他们拥有它,仅此而已。但软件可以传播。
看到这一点真的非常酷。它让我意识到,这样的业务潜力真的没有上限。我们当时看到微软是一个巨大的行业巨头,但我想:“嘿,如果 Epic 把游戏做得足够好,我们也能完成他们在操作系统领域完成的成就。”天空才是极限。我认为这就是我们现在生活的时代。你不必是一个制造实体产品的实业家。任何构建数字产品的人,如果它足够好,你就能触达整个世界,并建立起下一个微软、Meta、苹果、谷歌或 Epic Games。
Lex Fridman: 这真是一个很酷的起源故事。你开始是构建一个文本编辑器,你看着这个项目,摆弄它,构建工具。这是一个非常鼓舞人心的时刻。因为我们很多人开始构建项目时,允许自己看到潜在的转向、潜在的发展轨迹,这真的很好。坐下来,允许自己感到无聊,然后想:“啊,我要走这条路。”这就像一个十字路口,你来到了一个十字路口。你构建了编译器,设计了自己的编程语言,构建了数据库,所有你提到的这些东西。然后你开始构建一个文本编辑器,然后在这里,来到了这个十字路口:“我要让它变得有趣。”然后从那里,诞生了最传奇的游戏公司之一。这很酷。这对开发者来说是一种鼓舞:对创造你未曾计划创造的东西的可能性持开放态度,顺其自然。
Tim Sweeney: 是的。而且很多经验教训很快就从中涌现出来。我对 ZZT 做的一件很棒的事情是,我不仅发布了游戏,我还随之发布了编辑器。我构建了这个工具,这样我就可以制作这些供人玩的 ZZT 版面,但我也把它给了所有玩家。三十年后,我仍然会遇到一些人,当我去参加游戏行业活动时,他们会说:“我是玩 ZZT 长大的。”这是一个成年人,玩着我做的游戏长大。这是因为它让任何人都能成为创造者。它有一个小小的版面编辑器,还有一个小小的脚本语言,所以你也可以在里面学到一点编程。
这给人留下了深刻印象,并真正确立了 Epic 的一个形成性原则:公司的使命是制作卓越的娱乐产品,同时也要制作卓越的工具,并将这些工具分享给每一个人,这样他们也能创造出自己惊人的东西。几年后,当我们涉足虚幻引擎时,我们构建游戏和我们构建被他人广泛使用的工具之间的相互作用是其中的关键部分。我认为这是 Epic 取得巨大成功并且能够一直存活至今的唯一原因。通过同时服务于创作者和玩家,我们得以经受住游戏行业的起起伏伏。这是一个对公司来说残酷的地方。我们得以在每一次金融衰退中生存下来。有时是引擎在资助业务,因为我们没有游戏;有时是游戏在资助业务。这真正在我们的文化中确立了一个原则,这个原则一直存在,并不断被推到前台。
Lex Fridman: 在编辑器方面,你始终允许人们创造自己的世界,这是一种非常引人入胜的哲学。你有一个引擎,用来模拟游戏所在的世界。你有实际的游戏,同时你还让创作者可以自由地创造各种各样的——在《堡垒之夜》里是岛屿——属于他们自己的东西。就像你发布的每一件东西,都伴随着创造的自由。这真的很有趣。
Tim Sweeney: 是的,这是我们随着时间的推移力求做得越来越充分的事情。在构建《堡垒之夜》的过程中,我们也构建了很多对我们自己有用的其他工具。它不仅仅是一个由虚幻引擎驱动的游戏,它还是一个社交生态系统,人们可以在这里交朋友、语音聊天、组队聚会。我们已经将所有这些社交功能开放到 Epic Online Services 中,并免费提供给所有开发者,因为我们都从用户群的增长中受益。我们的目标最终是让公司的产品建立在我们与所有人共享的相同技术之上,并帮助其随着时间的推移培育一个更大、更繁荣、人人受益的生态系统。
V. 早期互联网与数字发行
Lex Fridman: 如果我们可以在 90 年代多停留一会儿。你说到了公告板系统 (BBS),也许你可以解释一下那是什么样子,并解释一下互联网的诞生是什么样子?90 年代的互联网是什么样的?
Tim Sweeney: 互联网是个有趣的东西。它最初是国防部的一个研究项目,叫做 ARPANET(高级研究计划局网络)。它有点像一个备受尊崇的秘密事物。随着它连接大学,变得越来越开放。大学在 1980 年代中期接入了互联网。所以如果你在一所有权限使用计算机的著名机构,你就能上网。但那时的消费者,我们只有调制解调器,就是那种你插到电话线上,拨打一个电话号码的东西。然后它会通过电话线向你发送疯狂的音效来回传输数字信号。这些速度非常慢。
我拥有的第一个调制解调器是 300 波特 (baud),这意味着每秒 30 个字符的数据。所以你就像坐在那里,看着一句话一个字符一个字符地慢慢出现。但那就是我们上网和互相交流的方式。你拨号到一个本地的公告板系统 (BBS),它通常由一个人运营,他们通常在厨房或其他地方放一两台电脑来运行 BBS。他们有一个小型的、几百个用户的社区,都在争着用那一条电话线连接。线路经常占线,你进不去。越受欢迎的 BBS 越难接入。
我们发展出了各种各样的社区。你可以看到,有编程社区,人们讨论编程;有新闻和事件社区——我住在华盛顿特区郊区,所以那是个大话题;但也有盗版社区,他们在分享盗版的 Apple II 游戏,有着截然不同的社区精神和信条。但所有这些社区都很好,而且规模非常小。这些 BBS 不可能发展到 Facebook 的规模,因为你的电话线无法承受那么多呼叫。
然后,到了 1990 年代后期,这些在大学里培育起来的互联网开始向公众开放。任何人都可以连接到它。突然之间,世界有了自己的生命力。触达全球受众变得容易得多、快得多。你会开始通过互联网发布游戏,这有点疯狂,因为你本应有一个实体拷贝,但在互联网上发布是非常创新的,即使是共享软件 (Shareware) 也是非常创新的。
Lex Fridman: 是的,对于游戏行业来说,这是一次有趣的转变。Epic 最初是制作通过数字方式分发的共享软件游戏。但随着第一批 3D 游戏,如 id Software 的《德军总部》(Wolfenstein) 和《毁灭战士》(Doom),以及我们自己的《虚幻》(Unreal) 大获成功,为了触达数百万用户的庞大受众,我们不得不进入零售商店。所以我们与一家零售发行商合作,他们制作了盒子,在盒子里放入 CD-ROM。
然后世界开始转回数字化。这种转变一开始并不顺利。游戏向数字化的初步转变全是 BitTorrent,全是盗版。有恐怖的故事说,有的游戏卖了比如 10 万份,但却有 200 万用户,因为大多数人都盗版了。然后 Steam 出现了,引入了数字分发,并使正版游戏的数字分发变得如此便捷,以至于大多数玩家从盗版转向了它。他们的做法随后被其他人效仿,早期的数字产业就形成了。
Lex Fridman: 这很吸引人。盗版者确实为创新开辟了道路,就像 Spotify 的故事一样。我认为大多数人当他们从视频游戏等事物中获得价值时,是愿意为这些视频游戏付费的,他们只是希望过程简单。音乐与 Spotify 也是如此。
VI. 对独立游戏开发者的建议
Lex Fridman: 但也许还是停留在 90 年代。今天会有很多独立游戏开发者听我们谈话。你能回到当时的心态,尝试为那些人提炼一些智慧和建议吗?当你只是一个单人开发者,或者可能只是一个小团队,创作你早期的游戏,这些游戏最终变成了这家巨大的游戏公司。但在早期,你经历了什么?起起伏伏是什么?是什么让你保持坚强并坚持下来的?
Tim Sweeney: Epic 一直努力去做的一件关键事情是,做一些与众不同的、别人没在做的事情。并且尝试去满足一个小众群体,而不是在全球范围内与游戏巨头竞争。回到 1990 年代,Epic 是新公司,但像艺电 (Electronic Arts)、动视 (Activision) 和其他大型发行商已经存在了十年,它们是庞大的公司,拥有巨大的零售分销网络。如果我尝试制作一款游戏,然后说服他们发行,我怀疑我是否有机会,即使我做出了成功的游戏,我怀疑我是否能从中赚到多少钱,尽管他们可能会。
所以,当时 Epic 真正独特的角度是共享软件 (Shareware)。就是这个想法:如果我们用不同的方式分发我们的游戏,那么凭借游戏第一集的免费,我们可以比这些更大的竞争对手接触到更广泛的受众。这有点像后来出现的免费游戏 (Free-to-Play) 的开端。这种逻辑现在和当时一样有效:如果东西是免费的,任何人都可以进入,那么它就会在朋友之间传播,因为人们会把现实生活中的朋友带入他们正在玩的游戏中,并有机会围绕它建立一个社区。
所以另一个教训就是,尽量减少人们进入你游戏的摩擦,让它容易进入,并且有趣。我认为另一个… 我非常幸运。ZZT 是一个有趣的游戏,它不像其他任何游戏。它的图形要差得多,因为它全是文本字符——笑脸和其他希腊字母等参与到这个游戏模拟中。它们更像是角色的标志性表示,而不是真实的。而这已经是真正图形化游戏、拥有有趣图形的时代过去了数十年之后。所以它甚至没有试图在那个领域竞争。
但它能够在另一个领域竞争,那就是,不仅仅是我制作并作为三部曲发行的那三款游戏成功并推动了产品的成功,而是我发布了一个编辑器,并且围绕它形成了一个完整的社区。你会看到这个趋势一再重复。比如 ZZT 之前有 Bill Budge 的《弹珠台建造套装》(Pinball Construction Set),那是 1980 年代的 Apple 游戏,允许用户建造自己的弹珠台。从那以后,一些世界上最成功的游戏都遵循了这条道路,比如《我的世界》(Minecraft),你可以建造自己的东西;《Roblox》,你可以建造;《堡垒之夜》创意模式 (Fortnite Creative) 和虚幻编辑器 UEFN。让游戏成为其他人可以构建内容的平台是一个真正的机会。
我认为现在独立开发者需要意识到的最重要的事情是,在每一个主要的游戏类型中都存在着巨大无比的竞争。除非你碰巧是某个特定领域的全球最佳,否则你发布一款现有高度竞争类型的游戏并获胜的可能性非常小。一个更好的成功机会在于发布一些以前从未做过的东西,真正独特,触达一个受众——无论是大、中还是小——触达一个受众并在其中变得非常受欢迎,从中赚一些钱,能够再投资,然后朝着你的最终梦想扩展。我认为那种从想法一步登天到大规模商业成功的可能性,远低于随着时间的推移不断构建越来越好的东西,直到你达到卓越地位的多步骤过程。
Lex Fridman: 并且不断尝试做一些别人没在做的事情。
Tim Sweeney: 没错。因为如果你观察每一个市场,只有少数几个市场,当前的领导者是后来者——通常是因为之前的领导者失败得太惨了。但大多数时候,在一个市场中成功并获胜的公司是第一或第二个进入者。他们只是不断地巩固自己的成功。
Lex Fridman: 很棒的建议。很有启发性。但在人性层面上,当时孤独吗?害怕吗?你作为一个开发者坐在那里。
Tim Sweeney: 我会说,那恰恰相反,一点也不孤独。因为促使我真正发布它的,是看到邻居家的孩子们玩这个游戏玩得很开心,觉得:“这真的很好。”看到他们享受其中,欢笑,指着屏幕,聚在一起,就想玩更多。这太棒了。
是的,所以… 人情味一直都在。因为我不仅收到订单,人们还会写信——我们在 1990 年代是写信的。人们会说他们多么喜欢这个游戏,他们的孩子在玩这个游戏,等等等等。所以感觉非常有连接感。
我认为很多企业必须做出可怕的决定,因为你可能在投入你所有的钱去尝试一件你不确定能否成功的事情。我非常幸运,创办这样的企业,因为它几乎不需要任何资本。资本就是我通过修剪草坪买来的几千美元的电脑。风险不大。如果那没有成功,我想我可能会去搞清楚人们是怎么找到机械工程工作的,然后去追求那个。但是一旦它起飞了,一旦订单开始涌入,人们开始写信说他们喜欢这个游戏,我就知道我要全力以赴,努力在那里建立一家公司并取得成功。那将是我的大目标。
VII. Unreal Engine (虚幻引擎) 的诞生
Lex Fridman: 所以我确信人们知道,Epic Games 创建于 1991 年,并多次改变了游戏行业,其中之一就是虚幻引擎 (Unreal Engine)。让我们谈谈它的起源故事。你说过《德军总部》(Wolfenstein) 和《毁灭战士》(Doom) 的问世改变了一切。带我回到那个时刻。
Tim Sweeney: 那是一个非常有趣的时期。在我最初几款游戏之后,Epic 招募了一些开发者,通常是大学生或高中生,他们只是自己工作,拥有真正的技能,但没有作品的出口。Epic 一直在将来自世界各地的最优秀的艺术家和程序员进行匹配。比如《爵士兔》(Jazz Jackrabbit) 是由加州一个高中生 Cliff Bleszinski 制作的非常酷的冒险游戏,与来自荷兰的 Demo 编码者 Arjan Brussee 合作完成,他能制作出惊人的图形效果,并构建了一个 2D 游戏引擎。我把他们和加州的一位音乐家 Robert Allen 联系在了一起。通过电话、调制解调器等方式,我们制作这些小型的 2D 游戏,并取得了相当大的成功。有一群人,在他们还是学生的时候,每月就能从 Epic 通过协调人员和共享软件发行游戏产生的版税中赚取数千美元。
这一切都进展顺利。公司有了一个小办公室,我们复印软盘并邮寄出去。但是,当《德军总部》(Wolfenstein) 问世时,我们意识到游戏的未来将是 3D 的。在此之前有很多 3D 实验效果并不好。有迷宫的 3D 渲染,但不是实时的,你总是只能朝北、南、东或西看。还有矢量图形,只有线框在移动。但《德军总部》是第一款速度足够快(以每秒 30 帧运行)的游戏,让你真正感到身临其境。感觉就像你真的在德军总部城堡里与纳粹作战。那是一种非常惊人且沉浸的体验。
当时的 3D 图形还很原始。紧随其后的是《毁灭战士》(Doom),它拥有一个功能强大得多的 3D 引擎,有楼梯——尽管它仍然是我们所说的 2.5D——环境非常逼真,纹理非常逼真,有一种近似但极其逼真的光照形式,再加上出色的艺术设计和音效,感觉完全是发自内心的、真实的。
Lex Fridman: 你今天可能会从一个拥有 20 teraflops 计算能力的现代游戏玩家的角度来看它,说:“哦,那没什么了不起的。”但它在当时是惊人的。对我个人而言,暂停一下,《德军总部》是我人生中最惊人的时刻之一,就像你说的,能够实时地在一个三维世界中移动。我只记得就是四处移动,那种感觉是怎样的?你感觉被传送到了另一个世界,你感觉你就在那里。
Tim Sweeney: 是的,尤其是当你关掉房间的灯,调高扬声器的音量时,它会吓到你。你会感觉那个向你飞来的火球会杀了你。那是一个了不起的时代,因为我们以前从未经历过那样的事情。没有任何东西像那样。你看电影,恐怖电影或其他什么,但那只是正在发生的事情。而这是你,你身处一个 3D 世界。
Lex Fridman: 那么,意识到游戏的未来将是 3D 的,这对 Epic 产生了怎样的改变?
Tim Sweeney: 起初我非常沮丧。因为《毁灭战士》的魔力,尤其是它的魔力,是如此不可思议,以至于我放弃了编程大约 6 个月。我想:“我永远无法与此竞争。我不知道我们该怎么办。”我们就继续制作 2D 游戏,希望业务能继续下去。但… 这就是卡马克 (Carmack) 的魔力所在。他做的事情不仅仅是一个创新飞跃,而是像十几个创新同时相互作用,你无法将它们拆解成各个组成部分。
但有趣的事情发生了。计算机图形学领域的老将迈克尔·阿布拉什 (Michael Abrash) 写了一本关于 3D 图形和纹理映射 (texture mapping) 技术的书,并在当时的一本编程杂志上发表了一些文章,解释了它,并展示了进行纹理映射的汇编代码——在屏幕上绘制这些 3D 图形。结果发现那其实是非常简单的东西。我想:“哦,我能做到。”
于是,Epic 的一些人独立地开始编写自己的 3D 图形代码来弄清楚。我们发现,在某个时刻,我们有好几个人在涉足这个领域,做着不同的部分。那时我们决定:“好吧,3D 图形和 3D 游戏将彻底改变世界。我们需要全力以赴。”
所以我们从我们最好的 2D 游戏开发团队中挑选出最优秀的人才,把他们聚集在一起制作一款 3D 游戏。当时我们并不真正知道自己在做什么。我们中没有人发布过 3D 游戏,大多数人还在学习。但每个人都在尝试不同的领域,看看自己最擅长什么。最终是一群人共同创造了《虚幻》(Unreal)。
我最初自告奋勇制作这个东西的 3D 编辑器。而制作了《Epic 弹珠台》(Epic Pinball) 的詹姆斯·施马尔茨 (James Schmalz)——《Epic 弹珠台》,那可不是个简单的游戏,这是他大学时制作的 2D 共享软件游戏之一,他每月能从这款游戏的版税中赚取大约 3 万美元,因为每个人都想要一款出色的弹珠台游戏,非常成功——但他是一个多才多艺的人。他编写了游戏的代码,绘制了游戏的艺术图,基本上做了所有事情。而且代码是 3 万行汇编语言。所以,他最初打算编写 3D 引擎,而我编写编辑器。他把他的代码发给我,以便我能集成到编辑器中。那是一大堆汇编代码。我想:“嗯… 为什么我不自己写呢?”
于是,詹姆斯转而开始使用当时的工具构建 3D 模型和 3D 动画。克里夫 (Cliff Bleszinski) 做了很多设计工作,并在《爵士兔》中构建了关卡,他也开始学习关卡设计的基础知识。所以我编写这个编辑器,克里夫是它的头号客户,开始构建关卡。詹姆斯·施马尔茨则构建出色的生物模型发给我,我把它们实现到游戏中。然后我们引入了一位动画师让它们活起来,我们引入了越来越多的人。在《虚幻 1》开发的高峰期,我们大约有 20 人参与其中,这在当时是一个庞大的团队,并且几乎将 Epic 的财务推到了崩溃的边缘。我们勉强生存下来,好几次差点耗尽资金,但不知何故我们总是挺过来了。
那是一个疯狂的项目,因为它是一个我们一直以为离发售只有 6 个月的游戏,却开发了三年半。对于项目中的大多数人来说,那是三年半每周工作 70 或 80 个小时的日子,甚至不知道接下来需要解决什么问题,因为我们完全沉浸在当前的问题中。
Lex Fridman: 是否有过失去希望的时刻,觉得这可能耗时太长,公司会没钱?
Tim Sweeney: 我们… 我一直对财务非常紧张。所以我一直担心那个。但我完全有信心我们会解决所有的技术和艺术问题。因为我们知道各个部分,很大程度上就是敲代码、解决一些问题的事情。我们知道我们可以发布一个版本。
真正持续有趣的是,随着我们前进,不断发现新技术。当时《雷神之锤》(Quake) 已经发布,它有一点动态光照。《虚幻》在动态光照方面比其他任何人都做得更深入,然后是彩色动态光,具有一些静态投射阴影或移动光源无阴影的能力。并且弄清楚了如何做体积雾 (volumetric fog),这样你就可以有充满光线的雾区,看到光线在雾中发出的光晕,影响关卡的外观。许多惊人的技术结合在一起,构建出了一款在当时实现了多项技术飞跃的游戏。是的,那真的很疯狂。但我认为大多数公司是无法在那样的困境中生存下来的,但参与其中的人们纯粹的才华使得这成为可能。Epic 经常做成大多数公司会失败的事情,我们成功并非因为出色的管理、规划或融资,而是因为参与其中的人们纯粹的才华和意志力,使其得以实现。
Lex Fridman: 跨学科方面呢?就像你说的,艺术家、工程师或程序员、设计师,他们都在一起工作。那 20 个人,动力如何?在疯狂工作时间下,让这样一个团队像管弦乐队一样协同工作,最终交付游戏,那是什么感觉?
Tim Sweeney: 这是游戏行业独有的真正独特之处之一,在普通的大型科技公司通常不存在,那些公司通常只是由工程和业务驱动。但游戏确实需要所有创意学科中最优秀的人才协同工作。Epic 是通过招募具有卓越才华的人有机成长起来的。我们的预算一直有限,我们从来无法通过出高价挖人。我们只能找到那些处于职业生涯开端、才华横溢的人,并将他们聚集在一起。
所以每个人对这一切都非常陌生,对公司如何运作没有任何假设。你把所有这些人聚集在一起,这真的是人才之间持续的相互作用,因为人们在学习如何作为一个团队一起工作。没有人有管理经验,大多数人在与 Epic 合作之前没有发布过游戏。我们边做边学。
但这是一个持续迭代的循环。我们每天都会制作几个新版本的游戏,进行新的编译,引入新功能或修复一些错误,然后交给艺术家,艺术家改进他们的关卡,继续构建东西。然后我们看到他们在关卡里做了什么,就会想:“啊,我明白你需要什么了。”我们会不断改进工具。就是这个迭代过程以及它改进产品的速度,是游戏成功的关键因素。迭代周期越慢,比如你每周才出一个版本,每周只迭代一次,那么到项目结束时,你的游戏会比每天都出新东西的游戏公司差得多得多。这就是共同发生的魔力。除了热情和每个人的个人奉献之外,真的没有其他东西让它运转起来。
Lex Fridman: 我听说你现在还在编程,但那时你编程的量有多大?你提到了工作时间,可能是疯狂的时间。描述一下你的工作环境,90 年代你构建《虚幻》时,蒂姆·斯威尼的一天是什么样子,可能会很有趣。
Tim Sweeney: 我们都倾向于采用一种能最大化生产力的工作时间表。那通常意味着晚起。我通常在中午左右到公司,工作到凌晨 2 点左右,有时是 3 点。我生活中没有其他事情,所以基本上就是工作、睡觉和偶尔吃饭。我发现我总是需要每晚睡 8 或 9 个小时。没有好的睡眠,我就会变成僵尸,状态远非最佳。所以我总是需要睡眠,但我不需要其他任何事情。编程本身就充满了活力和刺激。
是的,所以项目期间就是那样过了三年半。大部分时间花在编程上。我会说,大概每周 60 小时编程,5 小时与其他人协调和迭代,和他们坐在一起,看着屏幕上发生的事情,弄清楚他们需要什么,还有 5 小时处理业务事务。当时分工很好。Epic 没有庞大的高管团队,基本上就是我负责公司的技术和开发部分,马克·莱恩 (Mark Rein) 负责业务部分,谈交易,刷爆他的信用卡,满世界跑,引入收入来源来维持公司运转。
Lex Fridman: 我们说的是什么编程语言?因为你提到有一堆汇编代码。你在选择编写虚幻引擎的编程语言时做了什么决定?
Tim Sweeney: 我从小学习,最喜欢的语言是 Pascal。为了获得最大性能和最新的操作系统特性,我的第二款游戏《Jill of the Jungle》(任天堂风格的平台游戏)不得不转向 C 语言。所以当我开始开发虚幻引擎时,是在 16 位 Windows 上使用 C 编程语言。
在第一年过程中,它迁移到了 32 位——当时使用 DOS 扩展器,然后使用 Windows NT——我转向了 C++ 语言,因为它极大地简化了代码。从一堆非常复杂的代码变成了一个简单得多的代码。完成了那个转变。所以整个虚幻引擎的开发,大约两年半的时间,都是用 C++ 在 32 位环境下完成的,在当时是完全最先进的。32 位保护模式,对于经历过计算机可靠性差、经常崩溃的时代的人来说,有点像魔法一样。
Lex Fridman: 是的,结果证明这是一个相当不错的赌注,因为 C++ 在所有那些语言中,最终成为了至今仍然存在的主流性能导向语言。
Tim Sweeney: 是的,因为它解决了所有规模化的问题,通常是通过手动的痛苦,但总能解决。很多其他语言在很多理论方面做得更好,对某些使用场景也更好,但你无法用它们做所有事情,这真的非常有局限性。
Lex Fridman: 好吧,那么… 荒谬的问题,但比如,你当时用一个显示器还是两个?你对键盘挑剔吗?对椅子挑剔吗?我们谈论的是什么?让我们描绘一幅画面。
Tim Sweeney: 我经历了一个大的转变。我一开始比较懒。我买了一些二手电脑,因为通常能以新电脑一半的价格买到,而且性能足够好。所以我用一台旧的 486 开发,我想当时是 15 英寸的显示器。那是一个糟糕的工作站配置,但非常经济。
当我们开始开发《虚幻》时,我意识到我必须编写大量的代码,必须以绝对最高的生产力来编写。所以我必须重新安排我的整个生活,围绕着实现最大产出。那时我意识到,花钱购买好的设备实际上是一项好的投资。我们这里谈论的不是数百万或数十亿美元(如果你在建 GPU 集群的话),只是购买一些基本硬件。所以我买了当时能买到的最大的 CRT 显示器。因为那是 CRT 的时代。它有 24 英寸,重约 100 磅。我装好它之后背疼了一个星期。但它让我在 1996 年获得了 1920x1200 的分辨率。
Lex Fridman: 哇!1996 年!
Tim Sweeney: 那相当酷。所以我升级到了 90MHz 的奔腾 (Pentium) 处理器,在上面编程。当时 90MHz 是主流消费级计算机。我优化了虚幻引擎的软件渲染器,使其能在上面运行。奔腾是消费级计算中第一个超标量 (superscalar) 架构,它可以同时运行最多两条指令。如果你非常仔细地编写汇编代码,你可以获得绝对最大的吞吐量。所以我把我的纹理映射代码优化到了 6 个 CPU 周期,包含 11 条指令。屏幕上的每个像素都需要这个,这刚好足够提供所需的性能。
但戴尔 (Dell) 推出了这些新的工作站,英特尔 (Intel) 刚刚发布了奔腾 Pro (Pentium Pro),第一个乱序执行 (out-of-order execution) 处理器。所以我基本上买了当时能买到的绝对最高配置,花了 7000 美元。我在 1996 年拥有 1GB 的内存。
Lex Fridman: 哇!
Tim Sweeney: 一个 200MHz 的 CPU。它让编译速度提高了大约三倍,极大地提高了我的生产力。所以这就是我在整个虚幻引擎开发过程中使用的配置,并用它发布了游戏。
Lex Fridman: 顺便说一句,90 年代的人们会被这个工作环境惊呆的。我喜欢这个。
Tim Sweeney: 是的。
Lex Fridman: 你在编写时,是否考虑了很多硬件?是否有这样的感觉… 所以,对于不了解的人,虚幻引擎的渲染,我猜是全软件的,不使用硬件。但你是否试图… 据我理解,也许你可以纠正我,但你是否试图针对硬件进行优化?
Tim Sweeney: 嗯… 当时,我们在第一批真正的 GPU 问世之前完成了大部分虚幻引擎的开发。3dfx Voodoo 1,第一个相比软件渲染真正提供显著性能提升的 GPU,第一个真正有用的 GPU,是在开发末期出现的,我们很快就支持了它,但它并非一直以来的目标。
所以开发重点是构建引擎的两个部分。一部分是所有的游戏玩法系统,管理模拟、物理等等,这都是用非常高级的 C++ 代码编写的,可维护性与性能同等重要。因为我们必须随着时间的推移构建大量的系统。但有一件事是真正的瓶颈,那就是图形。渲染单个像素的成本非常高。所以你必须尽一切可能优化屏幕上像素的渲染。
我们之前谈到 CPU 周期。当你说你的 CPU 运行在 1 GHz 或其他频率时,那是每秒 $10^9$ 条指令。你需要运行多少条指令才能在屏幕上显示一个像素?所以这是一个持续的挑战,要将其优化。当时所有图形程序员之间也存在竞争,他们经常互相发邮件吹嘘自己发现了什么新技术,试图降低成本。Abrash 最初的文章需要大约 12 个 CPU 周期来渲染一个像素,其他人则想办法把它降到了大约 6 个,有时甚至 4 个周期。这涉及到缓存、内存层次结构等许多不同的权衡。
那真是一个神奇的时代,人类可以真正理解 CPU 底层在做什么,并编写能够精确针对它的代码。现在这很大程度上已经失传了。当我们现在谈论软件优化时,很大程度上是关于启发式方法 (heuristics) 和统计学:“这次内存访问很可能命中缓存”,“这个算法比那个算法快”。因为现在的 CPU 拥有如此先进的乱序执行能力,你真的无法在指令级别微观管理正在发生的事情,你只能管理代码的聚合性能。所以有一种失传的艺术,有人怀念,有人不怀念,在这种艺术中,程序员对机器拥有绝对的控制权,并且在特殊情况下,如果你尝试,可以创造奇迹。
Lex Fridman: 当涉及到 GPU 和 ASIC(专用集成电路)时,这种艺术似乎仍然有价值。基本上,尝试理解硬件的细微差别以及如何真正地优化它,无论是用于机器学习应用,还是用于超真实的实时图形应用。
Tim Sweeney: 这是真的吗?
Lex Fridman: 是的,这绝对是真的。优化的难题只是转移了阵地。像 Nanite 这样的系统,虚拟化的微多边形几何体系统,由 Epic 的杰出工程师 Brian Karis 构建,就是那种耗时多年的优化工作之一。这需要他理解从最高层到硬件最底层的方方面面,弄清楚如何让这种突破性技术以在 GPU 上实际性能最高的方式工作。
VIII. Unreal Engine 技术深入探讨
Lex Fridman: Nanite 是这个系统… 我们时间上跳跃一下,这把我们带到了今天的虚幻引擎 5。这是处理几何体的系统。
Tim Sweeney: 是的。所以几何地渲染世界。这有很多层面,我们可能会逐一探讨。但首先,你必须实际创建你周围世界的几何形状,并实时、高效地完成。有很多不同的优化方法。你能谈谈这个吗?
Lex Fridman: 是的。利用我们今天拥有的先进艺术工具,很容易创建一个包含数十亿多边形的场景。困难的部分是如何高效地渲染它,因为你无法在一帧内渲染数十亿个多边形。基本上,你想渲染一幅图像,它与以极高成本渲染的完整细节几何体无法区分。
挑战在于如何简化渲染的每一个组成部分:几何体、光照等等,将其简化为高效的实时技术,捕捉你周围环境的真实视图。所以当一个物体离你很近时,你想用比它离你远时多得多的多边形来渲染它。但数学中一个很酷的原理是奈奎斯特定理 (Nyquist sampling theorem),它说,如果你试图重建一个信号,你需要费心捕捉的数据量是有限的。如果你想以某个分辨率渲染纹理,那么你永远不需要超过屏幕上纹理像素数的两倍。这被称为奈奎斯特极限 ($f_s > 2f_{max}$)。
计算机图形学的挑战之一是,鉴于需要在极近距离和极远距离渲染对象,你总是希望能够生成恰到好处的几何体量,使其足以与现实无法区分,但又不多于必要。对于几何体,想法是,如果你每像素渲染两个三角形,你应该得到一幅与每像素数千个三角形无法区分的图像。如果你渲染少于两个三角形/像素,你将开始看到明显的失真瑕疵。
GPU 在许多不同的流水线中拥有这种惊人的硬件,但它们都是非常固定功能的。有像素着色器硬件,有几何处理硬件,然后是三角形光栅化硬件。GPU 的一个限制是,三角形光栅化器是为相当大的三角形构建的。如果你构建或渲染一个有 10 个像素的三角形,效率相当高。但如果你构建或渲染一个只有 1 个像素的三角形,效率非常低。
Brian 取得的突破之一是设计了一个完全避免 GPU 中光栅化硬件的流水线,直接处理像素。通过在像素着色器中进行一些光线追踪和几何相交计算,来计算该像素应该如何处理。所以我们没有使用三角形流水线,而是只使用了像素流水线,并且由于 GPU 中三角形光栅化器的限制,我们得到了更好的结果。
Lex Fridman: 这很吸引人。因为正如你所描述的,你需要微小的三角形来处理细节,处理近处的物体。这对人们来说可能显而易见,但这不仅仅是近处的物体,它取决于你在看哪里。人眼、人类的焦点和注意力机制定义了你想显示多少细节。因为人类可能关注的事物,你希望它是超高分辨率的,而其他所有东西,包括由于距离的原因,可以有较少的几何体、较少的纹理、较少的信息。
Tim Sweeney: 是的,没错。但有很多这样的挑战。事实证明,渲染一帧看起来完美的图像,比渲染一系列在运动中看起来完美的帧要容易得多。早期渴望做这类事情的算法存在的一个问题是“跳变”(popping)。你可能运行一定数量的三角形一段时间,然后切换到不同数量的三角形,你会看到一个可见的过渡,屏幕看起来像是被晃动了。这是一种干扰性的瑕疵,会分散你对游戏的注意力。所以 Nanite 的一个神奇权衡是如何避免所有可见的过渡,并将它们降低到虽然统计上存在,但对于观察者来说实际上无法感知的程度。
Lex Fridman: 看看像 Nanite 这样的东西,有一篇不错的博客文章,有关于细节的精彩描述,但你可以看出,即使在细节之下,也有着令人难以置信的工程工作。这太酷了。看到在这之下… 你知道,美丽细致风景的实际体验之下,有着令人难以置信的工程,为你带来… 实时地模拟现实,超真实的模拟。光线变化,一切。然后,你知道,这让你回想起我在《德军总部》时的那种感觉,但更强烈。你可以完全沉浸在那个世界里,你会忘记这个真实世界的存在。真实世界到底是什么呢?所以,伟大工程与伟大叙事的结合,就感觉而言,超级酷。知道背后有这些团队,这很棒。知道你还在发布大量细节,至少对像我这样的人来说,看到这些很受鼓舞。
那么,虚幻引擎是一个引人入胜的创造物。这是一个大胆、疯狂的赌注,你做出了。也许最好向这个世界之外的人解释一下虚幻引擎是什么。我会说它改变了游戏行业。但那是 1995 年的一个巨大赌注,即大部分努力将用于创建游戏引擎,而不是游戏本身。
Tim Sweeney: 虚幻引擎是一个庞大的代码和工具包,一个巨大的软件包,提供了构建任何类型的 3D 图形应用所需的所有功能。游戏开发者用它来制作游戏,这是主要用途。但它也用于好莱坞电影和电视制作,为制作场景实时创建 3D 布景,进行预可视化。汽车制造商用它在汽车建造或制造前进行可视化。建筑师用它在建筑建成前预览。各种工业设计师都在使用。
它提供了你需要的所有 3D 模拟功能,既用于创建高度逼真的 3D 图形,也用于物理和对象之间的交互,让事物像现实世界中那样发生。它支持从皮克斯风格化的电影到卡通渲染 (cell shading) 再到照片级写实主义的各种风格。它可以用于任何需要实时 3D 图形的东西,包括填充那些三维世界的人类。
Lex Fridman: 我们可能会讨论创建超真实人类过程中涉及的许多细节。因为我们人类关心其他人类的样子,他们如何传达情感和表达,他们如何说话,所有这些。但… 是的,所以它是静态的 3D 对象,动态的 3D 对象,以及动态方面,包括超动态的人类。所有这些,你必须创建这个引擎来模拟那个世界,我们所知和所爱的这个美丽世界。
好的,但是,你知道,你处在早期。所以你看到了《毁灭战士》(Doom),你试图创建这个世界,并试图创建一个不仅能驱动《虚幻》这款视频游戏,还能驱动未来视频游戏的引擎。你是怎么做的?你在想什么?我应该强调一下,这是一个疯狂的赌注,即我们作为一个公司要构建一个引擎。
Tim Sweeney: 是的。这个哲学始于 ZZT 并一直延续。我们不仅仅是在为玩家制作一款游戏,我们还在构建可用于制作该游戏或任何其他游戏的工具。并迎合所有使用过该工具的艺术家和设计师。所以这种哲学在《虚幻》开发的很早期就开始了。
我为关卡设计师如克里夫·布莱津斯基 (Cliff Bleszinski) 和艺术家如詹姆斯·施马尔茨 (James Schmalz) 构建工具。当我们开始营销游戏,以为它还有 6 个月就要发售时,我们不断发布截图之类的东西。其他公司开始给我们打电话,说他们也想制作 3D 游戏,但他们没有这方面的专业知识,他们想授权我们的 3D 引擎。
这是 Epic 历史上最酷的转折之一。MicroProse 打电话给马克·莱恩 (Mark Rein),我们的副总裁和资深业务人员,说他们想授权我们的引擎。马克·莱恩当时大概是:“哦?你想授权什么?什么引擎?什么引擎?”他们向他解释了他们想授权什么。“哦,那个引擎。是的,那个非常贵。”但这成了维持 Epic 度过那三年半的关键因素之一。
我们开始将引擎授权给其他开发者。MicroProse 拿了两个授权,我们从中获得了 50 万美元。一家叫 GT Interactive 的公司授权了我们的引擎来制作另一款游戏,我们也因此获得了报酬。所以我们有这条收入流,来自其他开发者正在构建的其他游戏,资助着虚幻引擎的开发。因为他们是公司的生命线,我们从一开始就非常认真地对待引擎业务。我们设立了邮件列表,以便我们的合作伙伴可以向我们提问,所有参与我们游戏开发的开发者和艺术家都参与其中,帮助客户。每个人都非常认真地对待这件事,因为那是我们的资金来源。
这有点奠定了 Epic 的双重精神:技术和支持游戏开发者,同时构建游戏和支持玩家。这种精神一直延续至今,并随着时间的推移不断壮大。
Lex Fridman: 你能回到你编程的时候吗?你必须克服哪些有趣的技术挑战?你提到了动态光照,比如创建… 你知道,创建这个三维世界,并试图弄清楚你实际上如何做到这一点的谜题,在当时没有人——除了卡马克和你——在做这种事情。那是一个完全开放的狂野西部。那么,你必须尝试解决哪些有趣的技术挑战?
Tim Sweeney: 有很多。其中一些在屏幕上可见,一些则在幕后,仍然需要大量创新。所有的图形技术都是非常有趣的挑战。虚幻引擎在早期,在构建环境方面比 Quake 引擎走得更远,使用了构造实体几何 (Constructive Solid Geometry, CSG) 和实时编辑器。那是一个非常有趣的技术挑战。
想法是,如果你只向世界添加对象,那么构建过程极其繁琐。如果你想建一扇门,你需要添加十几个不同的门框部件,并将一堆不同的墙壁拼凑成正确的形状。如果你能从一面墙开始,然后减去一扇门,那肯定会容易得多。所以我们有这种向世界添加几何体和减去几何体的方法,引擎会执行所有相关的计算。
是的,这是我一直预期可能实现的事情,但当我最终着手去做时,花了一个 30 小时的编码会话,来弄清楚需要实现的所有特殊情况的代码,使其工作。但在 30 小时内,我让构造实体几何运行起来了。我开始做… 就像下次我们在一起时,我把它交给了詹姆斯·施马尔茨,他说:“好吧,我觉得你在这里作弊了。”他创建了一个巨大的环面 (torus),然后添加了另一个与之相扣的巨大环面,然后从中减去了一个圆柱体,仅用三个操作就创建了这个非常高级的复合对象。他说:“哇,我真不敢相信。”我说:“是的,我们搞定了。”第一次看到它真是太酷了。这可能是第一次有人实时完成构造实体几何。但它也是一个非常有用的艺术家工具,所有艺术家都很欣赏并立即开始使用。
Lex Fridman: 你能具体谈谈那 30 小时的会话吗?据我所知,从计算几何的角度来看,做这种事情并不容易。不确定性、开放性问题、算法层面如何高效实现,再加上通常的编程调试、经历其中的棘手之处的痛苦。而且在那个时候,你并没有真正能够很好地可视化所有正在发生的事情的工具,你可能还在用一些糟糕的编辑器。这里有很多摩擦。所以这 30 小时的会话可能很艰难。
Tim Sweeney: 你的大脑以不同的方式工作,取决于你的状态。有些事情需要你在精力充沛时处理,当你已经整合了一堆逻辑片段,现在只需要编写大量代码让它们协同工作,并在大量不同算法之间传递大量数据。但我认为我们大脑的马力远超我们通过思考下一步要输入什么代码所能直接利用的。
当你工作了很长时间后,你会进入一种睡眠不足的状态,这时你能更直接地接触到底层知识。是的,因为… 有一些被充分研究的睡眠剥夺症状,其中之一是短期记忆丧失。所以你工作时无法轻易回忆起你刚刚输入的代码,但你的大脑因此得以解放出来思考其他问题。
我花了很长时间积累了这种直觉。这个主题的基础是二叉空间分割树 (Binary Space Partitioning Tree, BSP Tree),这是由计算机科学图形研究员 Bruce Naylor 发明的数据结构。卡马克注意到了这一点,并在《毁灭战士》(Doom) 中非常有效地使用了这项技术。我也注意到了这一点,《虚幻》的所有图形和渲染都使用了这项技术。但它… 到处都是加法几何,有很多重叠的多边形,效率相当低。
所以我的想法是,如果我们有一个 BSP 树,就有一种非常有效的方法来进行构造实体几何。要做到这一点,你必须分解不同几何片段可以组合在一起的方式。我把它分解成了大约 14 种不同的情况。其中大多数都非常简单,可以快速完成。
总之,当我接近尾声时,有一些非常复杂的事情,比如如何处理共面 (co-planar) 多边形?它们在同一个平面上,指向相同方向与指向相反方向?在什么情况下应该保留它们,什么情况下应该消除它们,等等等等,以创建真正高效的几何输出。就是埋头苦干,最终… 主要通过推导,但也有一些试错——有时你就是得尝试各种可能性,看看哪个可行。我把它完成了,它成功了。第二天我有点疲惫地来上班,心想:“哦哇,这真的成功了,不是梦。”
Lex Fridman: 你也在考虑边缘情况。几何学的问题就在于,可能会有各种奇怪的多边形,你必须… 所以你像是在想象边缘情况,并试图思考如何在考虑边缘情况、允许边缘情况存在的同时,不在这个算法中制造低效。
Tim Sweeney: 是的。编写 99% 正确的软件相当容易。那 1% 才是真正困难的部分,细节决定成败。
Lex Fridman: 那么光照呢?还有其他有趣的…
Tim Sweeney: 有趣的答案是:我们知道物理定律,所以实际上做计算机图形学中的所有事情都非常容易。但是,直接求解物理定律极其缓慢。所以我们找到的是近似解,而不是完整解。因为你需要比暴力求解快一百万倍的东西。
Lex Fridman: 我们应该说,场景的物理学就是,你拿一堆光子,让它们四处反弹,这就是光的工作方式。但这会非常低效,因为有很多反弹和很多光子。
Tim Sweeney: 是的,光子追踪 (photon tracing) 这个学科就是通过暴力计算场景中所有光线来计算屏幕上的像素。它有效,它是正确的,它只是物理定律的一种实现,但它比我们实际做的要慢数百万或数十亿倍。
但卡马克已经想出了如何做非常酷的光照算法,包括物体移动时的实时光照。但他没有做得太深入。所以在虚幻引擎中,我意识到,我们的 CPU 性能远不足以计算屏幕上每个像素受所有影响它的光源的光照。我们有一个 6 周期的纹理映射器,我们无法再负担 30 个周期的光照计算。所以答案必须是某种近似。
卡马克在 Quake 引擎中采用的一种方法是光照贴图 (light mapping)。如果我们不像计算每个像素上的所有光照那样,而是制作一张覆盖场景中所有墙壁的大纹理,就像壁纸一样。如果我们说,我们只为物体上每英尺的网格计算一个光照值,而不是处处计算。然后如果我们只是在其上进行线性插值。你会得到一个实际上效果相当不错,并且速度足够快的光照解决方案。
所以很多虚幻引擎的光照技术都是基于光照贴图的。我们引入了彩色光照,你可以有彩色的光源。然后我们意识到:“哦,既然我们在做这个,而且是在光照贴图上做,我们实际上可以做一些相当昂贵的计算,几百个周期,因为我们只是为每 1 平方英尺的世界空间计算一次,而不是每个像素。”所以我们引入了一大堆复杂的光照效果,比如火炬闪烁,水面反射光线在表面产生的焦散效果 (caustic effects),等等。还有脉冲光、闪烁光等等。我创建了一个系统将它们组合在一起,所以如果你有任意数量的光源,它们都可以那样做。
然后… 我实现了一个阴影算法。如果你从光源上的一个点向表面上的一个点投射一条光线,看它是否与其他几何体相交。如果不相交,那么光线就照射到该物体。如果相交,那么光线先照射到其他东西,该物体上的那个像素应该是暗的。我构建了这个算法的实时版本,它以大约半帧每秒的速度运行。所以我以半帧每秒的速度跑来跑去,发射光线投射物,看着动态光照,心想:“总有一天计算机会足够快来实现这个,但不是今天。”
所以我做了一个非实时版本,预先计算所有光照,然后意识到:“哦等等,如果你预先计算了一个物体的阴影,只要光源不动,你仍然可以动态应用光照。”你可以做带阴影的火炬闪烁。我弄清楚了当时计算机上实际可行的所有动态和静态光照情况,并将它们暴露给艺术家。
这是最棒的事情。我就像输入这些小功能,把它们暴露给艺术家,每天他们都会发现下拉菜单里多了些光照选项,然后他们就开始使用它们,做出我从未想过可能的事情。这作为一名构建引擎的程序员,总是最酷的事情:你可能认为你知道你构建的功能的含义,但艺术家们是如此聪明,以至于你总会发现,当他们开始协同使用功能的组合来做越来越惊人的事情时,你构建的能力远超你最初的预期。
Lex Fridman: 艺术家的天才之处在于,他们被赋予了约束条件,在这些约束条件下,他们创造出你根据这些约束条件根本无法想象的东西。这是工程与艺术之间多么美妙的结合。
Tim Sweeney: 没错。而且它是永恒的。文艺复兴时期的画家用颜料做了什么?早期的游戏艺术家用早期引擎做了什么?每个人都在探索他们媒介的能力。
Lex Fridman: 你正在见证一场革命。这真是让我大开眼界。这太有趣了。那雾呢?你提到了雾。我甚至不知道… 你怎么做雾?你提到了《虚幻》,所以第一个版本有雾。
Tim Sweeney: 是的,那是个有趣的事情。芬兰刚成立了一家图形硬件公司,他们发布了一张他们的 GPU 效果截图。他们展示了一个充满体积雾 (volumetric fog) 的场景。你有一个有雾的房间,里面有一些光源。当现实世界中发生这种情况时,你看到的是灯光周围的光晕,因为光线照亮了它周围的雾气。但雾气的亮度会随着时间推移而减弱,因为雾会吸收一些光线。所以离光源越远,衰减就越多。如果你有一堆彩色灯光在这样的空间里重叠在一起,效果绝对是神奇的。就像在有雾的夜晚,头顶有街灯,那是超现实的,看起来非常漂亮。
所以我当时想:“哦我的天,他们弄清楚了如何做实时体积雾。我必须自己弄清楚。”那又是另一次大约 30 小时的编码会话。
Lex Fridman: 漂亮!
Tim Sweeney: 但… 核心在于,我意识到,这里发生的是,我们有这个光照函数,描述空间中特定点的光线强度,比如随着离光源距离的平方反比 ($1/r^2$) 而衰减,对吧?平方反比定律来自艾萨克·牛顿,也适用于光照。我必须意识到的是,雾与光相互作用的方式是,你计算从你的眼睛位置到世界上表面上一个点的视线,它穿过雾气,你根据该点雾气被照亮的程度,累积越来越多的光线。
嗯… 我在学机械工程的时候甚至不知道自己学过这个,那就是线积分 ($\int f(x) dx$)。你有一个函数沿着一条线的积分。这正是它的用途。它用于在一个连续的空间和时间上累积一个函数的值。我做了一堆数学计算,意识到:“哦哇,这个积分…”然后我查了一本积分参考书,谢天谢地,人们已经解出了所有积分。我意识到这个变换后的 $1/r^2$ 的积分,结果可以用 $r$ 的反正切 ($\arctan(r)$) 来解。
所以,如果你根据眼睛的位置和你最终看到的表面点的位置计算出一些参数,那么你就能精确计算出你能从中累积多少雾气。当然,你不能对每个像素都这样做,因为那需要数百个 CPU 周期。所以我们要做的是,在一个相当于光照贴图的东西上计算体积雾,但在世界上每平方米计算一次雾效。所以我们有足够的性能来做到这一点。构建了体积光照,把它交给了艺术家,他们开始用体积雾实时构建出神奇细节的关卡。
然后… 几十年后,我和一位曾参与该硬件开发的工程师交谈,问起他们的体积雾,并告诉他那如何启发了我自己去弄清楚如何实时实现它。他说:“哦不,我们作弊了。我们只是用 3D Studio Max 渲染出来的。”
Lex Fridman: 太棒了!这真是太棒了!这在很多层面上都太鼓舞人心了。你看到了那个,也许它是可能的,即使它有点像障眼法。然后你真的让它实现了。听到这类故事,在充满不确定性和诸多限制的情况下,你弄清楚了如何实时地将其变为现实,并创造出《虚幻》所做的那个世界,这真是太鼓舞人心了。
也许我们可以暂停一下,既然你几次提到了约翰·卡马克 (John Carmack)。
John Carmack
Lex Fridman: 作为当时游戏行业的同行先驱,你欣赏约翰的哪些方面?
Tim Sweeney: 约翰尤其拥有这种强烈的执着,要从他的代码中获得最佳结果,并且对过去的代码绝对没有任何留恋。他做的一些传奇性的事情,最终结果是实时计算机图形学的绝对突破,并非他的第一次尝试,而是像他的第七次或第八次尝试。在他一次又一次地做某件事,尝试它,找到更好的方法,扔掉旧的,重新构建之后,不断重写他的代码,直到他找到问题的绝对最佳解决方案。我认为这可以作为每一个程序员学习的榜样:当某件事真的非常重要时,它的性能、质量或能力对产品绝对关键时,就不断迭代它,直到你达到完美,不要满足于第一或第二个“足够好”的解决方案。
Lex Fridman: 而你们俩这样做的结果,定义了游戏的未来,游戏世界的未来。看到这个真是太美好了。这太吸引人了,太鼓舞人心了。因为在如此多的不确定性下,在如此多的限制下,你找到了方法,找到了出路。而且你知道,这实际上一直持续到今天。因为是的,硬件得到了难以置信的改进,但是为了创建一个超现实、高度动态、实时的我们周围世界的渲染,仍然非常非常困难。还有所有这些优化,就像你提到的。
IX. Unreal Engine 的演进 (UE1 - UE6)
Lex Fridman: 也许你能谈谈虚幻引擎从 1 到 5.5 或现在的 6 的旅程。30 年来,你一直在创造虚拟世界。在这 30 年里,当你脚下的硬件呈指数级改进时,发展一个游戏引擎是什么感觉?有哪些事情改变了,又有哪些普遍真理没有改变?
Tim Sweeney: 这是一段惊人的经历。30 年前没有人预料到我们会看到我们在这段时间里实际看到的硬件性能提升。CPU 性能提升了大约 $10^5$ 倍,考虑到多核、更高时钟频率和更多并行性。如果在航空领域有这样的提升,我们大概已经可以去半人马座阿尔法星旅行了。
Lex Fridman: 是的,没错。
Tim Sweeney: 而在图形领域,提升甚至更大。相比我们当年在奔腾 90 CPU 上运行时,净可用 GPU 性能提升了大约 $10^7$ 倍。这都是在 30 年内发生的。
这真的让我体会到,经过几代发展,我们引擎开发的某些领域绝对跟上了这项技术。致力于虚幻引擎的渲染团队是真正的奇迹创造者。几乎每一代虚幻引擎,我们都替换了大部分渲染代码。不同时期的不同领导者和杰出人物构建了绝对重新思考、并为最新一代硬件优化的系统。
虚幻引擎 1 是为软件渲染构建的,然后 Voodoo 1 在周期后期出现,我们添加了支持,但并未完全利用其能力。虚幻引擎 2 是关于将所有最新的 GPU 硬件加速特性引入引擎,并保持前进,构建一些新功能,如载具和其他一些能力。这是在早期 GPU 时代,在 GPU 真正突破摩尔定律预期之前。但随着 DirectX 9 的出现,突破发生了。可编程着色器的能力,一旦你能够控制在 GPU 上运行的代码,可以为屏幕上的每个像素着色,而且那个 GPU 代码比我几年前在奔腾 90 上编写的等效代码快了整整 100 倍。
所以那个 DirectX 9 时代是天赐之物。Epic 的资深杰出人物 Andrew Scheidecker 围绕实时像素着色编写了虚幻引擎 3 渲染器的核心,能够使用多种不同技术进行实时动态阴影,并将渲染器多线程化以支持当时开始出现的早期双核 CPU。那是一次巨大无比的图形升级。
虚幻引擎 4 进行了多项改进,并持续添加功能,为艺术家提供越来越多关于光照和几何体的选项,以创造真实感。但我认为,我们可能最大的一次飞跃是虚幻引擎 5,凭借 Nanite 微多边形几何体解决方案和 Lumen 全局光照解决方案。我认为这真正弥合了从“游戏化”计算机图形到对于想要创造它的艺术家来说“完全可观察的照片级真实感”之间的差距。
这就是演变过程。图形方面的进步绝对是惊人的,音频方面和其他一些领域也是如此。但引擎的某些部分自我在 1998 年编写并发布的版本以来,并没有太大变化。文件管理系统已经优化了很多次,但没有被完全重新思考。网络系统,客户端和服务器交互、协商游戏状态的方式,仍然是我编写的那个东西的演进。现在感觉有点过时了。你仍然会在《堡垒之夜》中看到网络错误,比如有时观战时某些参数没有更新,那是因为那个网络模型的有损特性。
随着时间推移,最大的限制是虚幻引擎中游戏模拟的单线程特性。我们运行单线程模拟。如果你有一个 16 核 CPU,我们只用一个核心进行游戏模拟,运行复杂的游戏逻辑。因为单线程编程比多线程编程容易几个数量级,我们不想给自身、合作伙伴或社区带来多线程的复杂性。随着时间的推移,这成为越来越大的限制。所以我们正在认真思考并致力于下一代技术,那就是虚幻引擎 6。在这一代,我们将真正去解决一些伴随虚幻引擎历史的核心限制,并将它们建立在现代世界应有的、基于计算领域所有已学知识的更好基础上。
Lex Fridman: 这是一个极其具有挑战性的工程问题。看起来虚幻引擎的每一个版本,其背后的卓越团队都愿意… 抛弃大部分代码,或者也许我有点太戏剧化了,但基本上抛弃旧方法,就像你提到的卡马克那样,重新开始。就像 Nanite 和 Lumen 一样,不断地… 针对当前硬件进行优化,甚至重新思考整个实现方式。但是从单线程重构到多线程,哦天哪,这太可怕了。这部分也是… 我们会谈到,为什么也许你必须重新思考… 甚至正在使用的编程语言,重新思考很多事情。这很吸引人。
X. Metahuman 与数字人创作
Lex Fridman: 我们能继续谈谈虚幻引擎 5 吗?我看了很多东西,但在 GDC 2024 的虚幻引擎现状发布会… 谢谢你。我看其中一些东西时兴奋得咯咯笑。所以,如果我们能在这里讨论不同的事情,稍微极客一下。人们应该去看这个视频。他们谈到了… 泥土。超真实的,这是为《Marvel 1943》制作的,它将漫威宇宙置于纳粹占领下的法国冬季。所以有雪。你知道,那是历史上的一个时刻,一个非常紧张的历史时刻,它真的创造了一种感觉,让你身临其境。这其中有很多东西,包括雪,但仅仅是… 看看泥土,是展示如何… 实时地向场景添加大量细节的一个很好的方式,如何… 给予这种… 无限细节的体验。就像,这是真实的,这超级真实。然后我想在演讲中,他们描述了… 生成几何体需要什么,光照需要什么,所有这些。也许你能谈谈泥土吗?对于可能不知道的人来说,构成要素是什么?创建这种超真实的纹理、光照、几何体,所有这些,Nanite、Lumen 如何像一个美妙的管弦乐队一样协同工作,实时绘制出 1943 年纳粹占领下法国的泥土?
Tim Sweeney: 是的,屏幕上发生了很多事情。这张图片的真正英雄不是 Epic,而是共同构建这个环境的艺术家和技术美术师。因为… 我们在 GDC 展示它的原因,是它远远超出了我们意识到系统能够做到的程度,很大程度上是因为他们的才华。这就是计算机图形学的魔力。不是一个特性让它酷,而是十几个技术特性各自相互作用。因为它们相互作用的方式,你真的很难… 很难实际识别出它的各个组成部分。
这里发生的一件非常关键的事情… 哦是的,现在我们看到它被关闭了… 是光照。驱动这个场景的 Lumen 光照系统正在不同尺度上进行不同种类的光照计算。这是 Daniel Wright 的工作,他花了十年时间推动光照技术的进步。但他当时的理论颇具争议,即如果你有足够多的光照计算层级,你就能让全局光照在任何地方都起作用,从场景的最高层级——比如建筑物投射裂缝阴影——一直到像你在这里看到的泥土上的细节,所有这些协同工作,并且没有可区分的界限。所以这里有长达十年的基础工作,特别是让光照起作用。
当你看到非常细致的阴影在冰和泥土之间相互作用时,那是屏幕空间光照 (screen space lighting)。实际上有阴影计算正在进行,不是基于世界,而是基于屏幕上的像素。因为那是我们唯一可能足够快地进行这些计算的方式,在像素着色器中运行它们。
Lex Fridman: 看看这个。当你添加对象,添加纹理,不同的分层,所有必须计算的阴影…
Tim Sweeney: 天哪,阴影是惊人的东西。但你知道,它之所以有效是反直觉的。当有人第一次向我解释时,我想:“这真的很聪明,但我不认为它会奏效。”但它确实奏效了。因为如果你观察入射光的位置和屏幕上不同像素的 z 坐标,你就能弄清楚你那里的几何体可能如何遮挡其他几何体。即使它只是一个近似,并不完美,但对人眼来说看起来完全没问题,并为你提供了像这样的场景中看到的微妙阴影,使其看起来高度逼真。
阴影还影响其他事情。这里颜色方面也发生了一些非常有趣的事情,我甚至不确定是什么原因造成的。看起来像是颜色从雪的某些部分渗透到了其他部分。看起来有一些次表面散射正在发生,我甚至不确定这个场景是否使用了它。然后还有一个材质分层系统,用于铺设… 材质层:泥土、雪和其他东西,所有这些共同作用。然后还有光线从几何体反弹,这是在全局光照系统之上的另一个光照系统。
Lex Fridman: 反射呢?那算… 光线反弹吗?所以有光线从物体反弹,以不同有趣的方式照亮它们,但也有实际的… 字面上的反射,就像我们正在看的泥土里的水坑。
Tim Sweeney: 是的,没错。引擎支持多种不同的反射技术。一种是计算… 基本上是捕捉场景中所有光照的纹理,然后将其从纹理贴图上反弹出去,这样你就能看到不同的光线以不同的方式从不同的像素反弹。然后还有单独的光照… 从物体上投射反射。很多这些都由设计师控制。
未来尚待解决的问题之一是,你不是按几个按钮,这种场景就神奇地出现了。这是由一些技艺高超的人付出大量工作完成的,不仅构建了这个特定场景,还在设置材质层,使你得到带有冰覆盖的泥土,所有反射都正常工作。他们必须做出许多技术美术决策才能实现这一点。如果一个没有… 努力工作过的新手构建这样的场景,它看起来远不会这么好。所以我们面临的挑战之一是,让构建这种质量水平变得更容易、更无缝、更自动化。你希望能够只是构建一个场景,说:“在这里使用这种材质”,然后就得到这种外观。
Lex Fridman: 是的。我的意思是,一旦你创建了场景,你可以做一些事情,我记得他们说:“你能关掉车头灯吗?”我忘了… 你可以控制光照。我的意思是,所有这些,我们应该说… 这都是动态的。所以你可以改变光源的位置,你可以打开灯,关掉灯。这太不可思议了。所以这都是实时的。几何体、光照、纹理,所有这些都是实时的。这就是… 这就是卓越技术美术的力量,三十年的功能开发,以及… 你必须归功于英伟达 (Nvidia) 提供的 20 teraflops 的图形性能。
Tim Sweeney: 感谢英伟达。
Lex Fridman: 从 90 兆赫兹到这个。90 兆赫兹是 90 megaflops。这是 20 teraflops。那是一个巨大的变化。
Tim Sweeney: 那是很多。
Lex Fridman: 所以… 演示中他们谈论的另一件事是关于雪。所以你必须… 如果你在谈论 1943 年纳粹德国的冬天,你知道… 有… 你必须创造一种感觉,其中之一是季节,冬天,寒冷。而且… 你可以控制… 你必须用雪覆盖一切。这里展示的是… 控制物体上覆盖多少雪的能力。所以这个… 你知道… 艺术家能够做到这一点,这太不可思议了。就像动态地控制场景中有多少雪。那很酷。
Tim Sweeney: 是的,那真的很酷。有一个很酷的材质分层系统,还有十几个部分共同作用。你还会注意到,有雾气,还有一些热物体散发着雾气。那是艺术家做的,不是自动产生的。
Lex Fridman: 所以那叫做材质分层。艺术家创建不同的材质,并能够… 用它来分层场景。
Tim Sweeney: 是的,将材质层彼此叠加,并查看在不同地方每种材质应该突出多少,由引擎处理过渡等。
Lex Fridman: 而这是在… 创建场景结构和所有必须计算的遮挡的几何体之上的。我的意思是… 好吧,我得去看看另一个让我震惊的东西,那就是… 烟雾。让我看看。看看那个。
Tim Sweeney: 是的。哦… 火… 垃圾桶里有火,有烟雾,还有… 阴影,光照和阴影在烟雾上的相互作用。这是实时的。
Lex Fridman: 是的,那都是实时的。
Tim Sweeney: 这到底是怎么回事?
Lex Fridman: 你是怎么做到的?烟雾是怎么做的?
Tim Sweeney: 底层有一个非常强大的粒子系统 (particle system),为这类事情提供了技术基础。但在此之上还有卓越的艺术创作,以及一个卓越的物理引擎驱动它。很难确切地说哪一部分在做什么。但你有几个不同的粒子系统在那里。一个用于火焰,另一个用于从中冒出的烟雾。
这里关于烟雾真正有趣的事情是它遮挡了光线。有计算光线穿过烟雾时应该如何减弱。所以你看到烟雾上的光照是真正有趣的部分。之前有过很多尝试,但这是第一个让我感觉这种烟雾真的不再像视频游戏,看起来就像… 一个燃烧的垃圾桶冒着黑烟的演示。而且… 你知道,这是… 这是艺术家的精湛技艺,占了非常非常大的一部分。
Lex Fridman: 是的,所以… 再次,这是工具和艺术家之间的相互作用。但是,是的… 就像那个,我可以看很长时间。现实生活中围坐在火堆旁,看着火焰和烟雾,有一种魔力。人类这样做可能已经有… 我不知道… 成千上万年了。然后同样的… 我只是盯着那个看。我希望… 人们停止说话,我可以无限地看那火焰。我的意思是,那就是沉浸感。就像,我想在里面。我想坐在那个有火和烟雾的垃圾桶旁边看,也许取暖。因为我也因为雪感到冷。你真的会沉浸其中。我的意思是,这太美了。这是真正的艺术。这做得非常精彩。
但是… 好吧,我得问你关于人类的问题。我们谈到了创造场景是什么感觉,但是,你知道,创造逼真的人类真的很难。你能谈谈这个吗?如何创造超真实的人类?这背后有一个演员来传达情感,展示面部的细微差别和细节。也许这也是提及作为虚幻引擎一部分的 Metahuman Creator 的好机会。
Tim Sweeney: 是的,没错。人类是计算机图形学中最难的部分,因为数百万年的进化赋予了我们专门的大脑系统来检测面部模式、推断情感和意图。因为穴居人在看到陌生人时,必须判断对方是友善还是可能想杀死他们。因此,世界上的人们对面部有着极其精细的期望,我们能注意到不完美之处,尤其是由计算机图形学局限性引起的不完美。但这成了迄今为止最难的问题。
Metahumans 项目是由世界上最有才华的数字人梦想家 Vlad Mastilovic 领导的一项长达数十年的计划的一部分,他已经为此工作了好几代游戏。他曾在游戏行业为个别客户服务了一段时间,然后作为 3Lateral 团队的一员加入 Epic,现在领导着一项全球性的努力,旨在构建所有使数字人逼真所需的技术。
其中一部分是捕捉人类。为此,他们构建了非常先进的专用硬件,将人置于一个捕捉球体中,里面有数十个摄像头,以高分辨率、高帧率拍摄他们经历一系列动作的视频。捕捉人脸很复杂,因为我们面部的细微细节,以及所有肌肉、肌腱和脂肪如何协同工作,赋予我们不同的表情。所以这不仅关乎人脸的形状,也关乎他们可能经历的整个运动范围。捕捉一个人类需要… 在像那样的专用环境中进行几个小时的捕捉工作,然后需要数千小时的处理工作,才能在环境中捕捉到一个精确且可实时复制的那个人类版本。
所以,所做的一件事就是捕捉现实世界中的男演员或女演员,然后在视频游戏中使用他们。但更有趣的事情是捕捉数千个人类,形成一个数据集,其目标是涵盖全人类所有面孔的整个范围。走遍每种文化、每个大陆、每个年龄段和每种面部类型,捕捉有代表性的人物,以便整个面孔范围都被代表。然后能够将它们组合和融合在一起,从而能够重新创建一个系统以前从未见过的任意面孔。所以想法之一是捕捉大量这种高精度数据,并用它来在消费级层面上重建一张脸,比如,用 iPhone 拍一张某人脸部的照片,然后捕捉到一个非常准确的描绘,不是通过在该设备上合成它,而是通过结合所有已知的人脸细节来准确捕捉其最准确的表示。
这就是数据问题。计算机图形学还有很多其他问题。比如有渲染毛发的技术,这真的很难,因为你无法渲染每一根毛发——同样,我们知道物理定律,直接渲染每一根头发很容易,但这会慢上 $10^9$ 倍。所以你需要近似方法,在不计算每一束光线与每一根头发的每一次交互的情况下,捕捉毛发对渲染和像素的净效果。这只是其中一部分。
还有针对面部不同部位的细节特征。还有次表面散射 (Subsurface Scattering),因为我们认为人类是不透明的,但实际上光线会穿透我们的皮肤,它并非完全不透明。光线穿透皮肤的方式对我们的外观有着巨大的影响。这就是为什么你无法通过给人体模型上色使其看起来像真人一样。它只是一个坚实的表面,永远不会有那种细节。
Lex Fridman: 我们应该在这里多停留一下。这真是让我大开眼界。思考这个过程。我听说过皮肤的油性会产生非常具体、细致入微且复杂的反射,然后一些光线被吸收并穿透皮肤,这创造了… 说像微阴影之类的公平吗?它创造了像… 我们人眼能够感知的纹理,并创造了我们认为是“人类”的特质,无论那是什么。所以,你必须计算这两者:反射,光线如何与皮肤的油性相互作用,以及它如何同时被吸收。所有这一切,还要考虑到… 肌肉… 涉及做出细微表情的所有肌肉,仅仅是眼睛的轻微眯起,或是微笑的微妙形成。你必须捕捉人脸的这种愚蠢、恼人的微妙之处,比如真实微笑和假笑之间的区别。天哪,我爱人脸。我总体上爱人类。但是那种刚刚开始形成、却实际上揭示了深深悲伤的微笑。所有这些… 当我看一张人脸时,我能读懂,能看到。再次,这是… 工程和艺术家。你必须拥有能够实时渲染出类似效果的工具,而这极其困难。但无论如何,抱歉… 所以是的,即使只是面部光照,也有很多这种复杂性。
Tim Sweeney: 没错。要正确地呈现面部,需要计算机图形学中数十种不同系统和方面的相互作用。如果其中任何一个出错了,你的眼睛会完全被吸引过去,你会发现它落入了“恐怖谷”(Uncanny Valley) 的错误一侧。所以在这个领域需要的完美程度远高于世界渲染、草地或任何其他这些东西。如果建筑作品上的阴影略有错误,你对它还是挺满意的。实际上,你的大脑并不太在意。但如果人类有任何问题,那就完全不协调了。
Lex Fridman: 你能更多地谈谈使用 Metahuman 创建数字人吗?包括编辑器方面和使其栩栩如生方面。看起来… 因为我看了很多视频,很多独立开发者在做这个,使用… 虚幻引擎编辑器提供的工具让一个人栩栩如生,似乎并不太难。
Tim Sweeney: 有两个主要工具。与过去每个面孔都由艺术家从头开始手工创建相比,现在… 一个是用于创建面孔的 Metahuman Creator 工具,你可以调整大量参数来创建一个独特的人类,通过调整他们的所有不同能力。然后你可以将其从 Metahuman Creator 导出到虚幻引擎中,然后你可以添加引擎中所有各种计算机图形特性。你可以使用布料模拟系统添加服装,可以调整头发和所有其他参数。
然后是 Metahuman Animator,一个用于根据面部捕捉来制作人类动画的工具,这可以在像 iPhone 这样简单的设备上完成。它将捕捉到的动画转移到你想要的角色上,这并不简单。如果演员有一个脸型,而屏幕上的角色有另一个脸型,需要完成的从演员到角色的转换实际上非常复杂和不明显。如果你只是字面上应用它,从你的角度来看会完全错误。
这些是人们现在使用的主要工具。然后在虚幻引擎内部,你就有了一张脸,你可以对它做任何你想做的事情。你也可以… 如果你决定走出 Metahuman 几何管线,你可以构建自己的脸,比如… 任何种类的任何生物,然后使用动画工具来制作动画。但这… 是一个可能总共需要 50 年的项目进行到第 30 年的成果,才能达到绝对的照片级真实感和对绝对所有事物的可控性。所以还有大量的工作要做。我们不觉得我们已经完全解决了这个问题。我们只是给了艺术家一个巨大的生产力倍增器和质量倍增器,但这并非我们认为已完成的状态。
Lex Fridman: 然而,我看到人们非常有效地使用它。我看到几乎像插件一样的,也许是外部服务,你可以让面孔近似于说话所需的嘴部运动。所以像… 那是一个非常有用的功能。
Tim Sweeney: 是的,没错。当你在工作室里有艺术家或演员,并且正在录制特定的表演时,你可以直接捕捉他们的面部运动并应用它。但如果你只有一段录音,或者你正在生成一段录音,或者它是参数化的、程序化的或 AI 生成的,那么你就需要系统将那段语音不仅翻译成嘴巴和嘴唇的运动,还要翻译成面部表情和整个意图。当我们说话时,是我们整个脸都在活动,并以不同的方式表达情感,而不仅仅是… 各部分的机械运动。
Lex Fridman: 我们稍微谈到了 Nanite,所以… 虚拟化几何系统背后的魔力。但你能稍微谈谈 Lumen 吗?总的来说,以所有复杂的方式动态照亮我们讨论的面孔、场景,需要什么?比如,对你来说,有哪些有趣的事情促成了它的魔力?
Tim Sweeney: Lumen 是一个用于全局光照 (global illumination) 的系统,意味着它应该以模拟现实的方式计算光线与整个场景的交互。第一代进行光照的引擎只是说:“嗯,光源投射光线,它击中的表面被照亮,它没有直接击中的表面是暗的。”这就是我们拥有的所有技术。所以你会有一个没有任何光线照射到的区域是完全黑色的。
但实际上,光线会在整个场景中动态地反弹。当光线击中一面红墙时,大部分蓝色和绿色的光被吸收,但红色的光被反射出去,现在正照射到其他东西上。所以如果你有一面红墙和一个白色的地板,光线从红墙反弹到地板上,现在地板正在变红。所以整个光线通过多次反弹在场景中传播是需要解决的关键挑战。
同样,物理定律是已知的,所以这个问题的完整解决方案在 1950 年代就已经写下来了,我想。Lumen 真正的魔力在于这个系统,由 Daniel Wright 历时多年开发,基于更长时间形成的理念,用于计算光线在不同尺度上反弹的方式,范围从… 数英里或数公里的尺度,一直到像素和毫米的尺度。并且不仅在每个层级进行计算,还在每个层级无缝地整合它,以给出完全无缝和准确光照的外观。以前的技术是高度专业化的,艺术家必须为每个光源决定它具体做什么。目标… 以及现在很多实践是,你构建一个场景,放置光源,它就自然生效了。让它变得更容易。
Lex Fridman: 是的,我的意思是,我们正在看… 所以我推荐人们去看看这篇博客文章。就像那样看看。动态地… 我的意思是,我们应该说,有室内和室外。能够动态地计算室外光线的影响… 看看那个。看看那有多华丽。是的。仅仅是光照。就像… 我们现在看的是一张洞穴的图片。所以外部光线照亮了这个… 洞穴内部错综复杂的结构。
Tim Sweeney: 是的,看看那个。
Lex Fridman: 现实世界中的光线会经历很多次反弹,其效果非常非常微妙。但当它们不存在时,你会想念它们。通常一个人无法指出一个场景为什么错了,但他们知道它看起来不对。正是缺乏我们在这里看到的那些微妙的光照线索。
Lex Fridman: 而且你知道,对于伟大的… 因为我们提到了伟大的视频游戏,但对于伟大的电影来说,光照可以成就一部电影。我们只是在看… 一个场景非常戏剧性的光照。想象一下走进这个场景,你… 它令人兴奋,它令人恐惧。所有这些都与光有关,光与暗之间的相互作用。这太不可思议了。这真的,真的太不可思议了。光就是一切。然后将工具的力量交到艺术家手中,这真的很特别。
Tim Sweeney: 是的。这个行业经历了巨大的演变,有如此多的支持系统来使之变得卓越。而且总是艺术家…
Lex Fridman: 我们正在看光滑表面上的反射。哦天哪。哦天哪。看看那有多华丽。
Tim Sweeney: 是的,没错。
Lex Fridman: 哇。你必须理解算法在这里做了相当多的工作。你可以有一个… 场景,里面有大量的… 不仅仅是光源,还有明亮的物体可以反射光线。每一个都必须在反射中被捕捉到,才能使其逼真。你知道,你无法计算场景中的每一个光子。所以你需要非常详细的近似。这就是计算机图形学领域:关于物理定律日益有效的近似,这些定律完全难以处理。
Lex Fridman: 但那种图形的结果是一种感觉,是观看者的体验。对我来说,作为一个… 嗯,可以说是世界上美的爱好者,能够综合地、人工地通过图形创造出那种美,这令人兴奋。这极大地扩展了讲故事的可能性。
XI. Unreal Engine 在影视行业的应用与 AI 整合
Lex Fridman: 所以在视频游戏之外,很多人正在使用虚幻引擎制作电影。并且… 巨大的祝贺,我看到用虚幻引擎制作的短片《战争结束了!》(War is Over!) 赢得了奥斯卡奖。所以你可以把那个添加到… 简历上。这很了不起,你知道,一部奥斯卡获奖影片是用虚幻引擎制作的。那么… 你认为虚幻引擎在电影行业创作故事方面的未来是什么?
Tim Sweeney: 不断增强的能力和生产力。这些行业中每一个的限制因素都是成本。引擎越能让他们的工作变得更容易,就赋予他们越多的力量。
我们在好莱坞看到的一大革命是从使用绿幕将计算机图形整合到真人场景中,转向使用这些大型 LED 墙面板,它们显示由虚幻引擎驱动的实时计算机图形。这是一个巨大的质量提升。你可以认出那些旧的绿幕电影,因为角色身上的光照就是错误的。无论他们多么努力地修复它,它从来没有真正奏效。
当你在一块 LED 面板前拍摄,面前还有 LED 光源时,演员不仅从他们本应出现在电影中的实际自然场景中接收到所有光照,而且他们还可以环顾四周看到它,他们知道自己正在哪个布景中表演。整体的最终结果因此而好得多。这很大程度上是因为演员能够看到他们所处的场景,从而更好地完成工作;也因为技术使得更好的光照计算成为可能,虚拟光和现实世界光线更好地相互作用,使最终结果非常出色。
Lex Fridman: 对于生成式 AI 有很多兴奋点。你认为人类艺术家创作的内容和 AI 系统在虚幻引擎中可以创作的内容之间相互作用的未来是什么?
Tim Sweeney: 我认为行业内很多人对 AI 在视频和其他方面的进展速度过于乐观。真正的问题是一致性。生成一张高质量的图像很容易,但在视频中,在一个场景的过程中,所有 AI 方法都存在从一个地方到另一个地方的一致性问题。我不认为这些问题会轻易得到解决。
从根本上说,AI 没有任何类似于对它们所处的整个场景、它们所处的电影或情节的整个弧线,以及它们周围整个世界的理解。以及它可能如何影响一个场景。而游戏引擎则拥有这些,恰好在需要的地方。
所以我认为,在世界级高质量制作领域,我们将看到的不是每个人都转向 AI,然后大部分贡献于此的人类创意人员被淘汰。我认为我们将看到的是,AI 成为人类创意力量的倍增器,使他们能够更快地创造出更好的东西,并获得更高质量的结果。我认为与生成式 2D 艺术和生成式文本领域不同,AI 的未来要复杂得多,也细致得多。
我认为你与马克·扎克伯格在 VR 中进行的采访是这方面一个很好的初步例子。你做了这个 VR 讨论,它捕捉了你们的面部,然后渲染了一个完全 3D 的计算机图形模型,然后最终结果由一个 AI 图像增强器修补,它能够添加大量普通计算机图形渲染所丢失的微妙之处。这是第一步。
你可以想象虚幻引擎的输出被一个 AI 像素着色后处理器增强,这是一回事。你可以想象对象的创建被增强,尤其是将已经创建的高质量对象混合起来。比如 Epic 的 Quixel 团队走遍世界,以极高质量扫描了数万个真实世界的物体。他们拥有从岩石到树木再到考古发现等等的一切,都捕捉在那里。我们在 Fab 内容网站上有一个很棒的它们的库。所缺少的是创建任意数量新内容的能力。
我认为利用像那样的数据和 AI,根据你对高质量扫描树木积累的所有知识,来创建完全符合你规格的新树木,将是一件非常有价值的事情。但是,你知道,我不认为这会减少对人的需求或人的作用。相反,我认为它实际上可能会增强这一点。
我忍不住想到,当我去亚马逊和 Netflix 看电影时,有大量的线性内容,其中大部分不是很好。因为… 媒介、预算和其他方面的限制。如果我们能使用 AI 作为增强器,那么… 每个人的机会将比现在更多。每一次改变人们工作方式的技术革命,最终都为人们创造了更多的机会。有权威人士预测这可能是最后一次,但我认为恰恰相反。我对这一点持乐观态度,乐观地认为它将为每个人创造机会。
Lex Fridman: 你认为是否有可能生成… 所以使用生成式 AI 来创建动态对象,就像你提到的虚幻引擎世界中的树木?创建网格和纹理,并赋予创作者更快创造的能力?使用元旋钮,比如超参数,而不是非常细致的方式,你可以更快地控制一张脸的外观,一棵树的外观,所有这些?
Tim Sweeney: 是的,我认为这是未来十年游戏引擎和用于各种内容创作的 AI 的核心挑战。因为你有两种非常不同的世界模型正在涌现。
一种是场景图 (scene graph),我们用来描述由虚幻引擎或其他引擎维护的 3D 世界中所有对象的集合的技术术语。所以在你看到的视频中,是岩石、树木、雪、桥梁、人物以及所有这些东西。每一个都附加了大量的数据。一些是像纹理贴图,一些是声音文件,一些是动画文件。是的,大量的细节都存储在那里,以这种计算机精确的计算机图形表示形式,使得能够以任何视角、任何设置等来渲染它。这是一个完全通用的系统,对世界在任何时刻的状态都有完整的上下文。所以你总是可以精确地重现它。如果你连续播放同一个场景 10 次,它总是相同的,它永远不会随机改变,你不会说:“哦不,为什么这个角色的脸在中途变了?”
但它也… 相当有限,因为你必须手动构建一切,成本高昂,耗时,需要专业知识。
然后你有另一种世界模型,即 AI 所看到或思考的。如果我们能窥视其参数中真正发生的事情,那有点像… 大脑中神经元的模糊连接。它拥有关于世界、图形、图像、人物以及其他一切的大量知识。它以人类无法理解的形式存储着,但可以通过查询来提取,比如要求它根据提示生成图像,或根据提示生成视频等等。但这带来的巨大问题是,它是非常模糊的数据。我们不知道如何给它一个命令,能让我们得到一个精确的结果。如果它一次生成一张图片,我们稍微改变提示,它可能会生成完全不同的东西。我们无法对其进行艺术指导。所以它是一个完全未被驯服的工具。
我认为… 当我们找出越来越多融合和连接这两者的方法时,你可以想象 AI 增强传统场景表示中的内容创作过程。你可以想象将场景表示与 AI 共享,这样 AI 不仅看到提示,还看到世界上所有对象的列表及其特征等等。它可以更多地了解这些对象应该如何移动和交互。所以如果你在引擎和 AI 之间建立一个持续的反馈循环,那么我认为你可以两全其美:稳定的场景,同时也能提高获取内容的生产力,以及能够… 选择特定部分并进行艺术指导,并让这些艺术指导能够固定下来,并被识别为这个永久场景表示的一部分。
Lex Fridman: 我迫不及待地想看到 AI 能够在场景图的空间中操作,而不是在像素空间中。在场景图中创建对象,无论是像你提到的音频,还是你提到的任何赋予创作者能力的东西。
Tim Sweeney: 是的,那是一个超级令人兴奋的未来。
Lex Fridman: 我想知道你是否能谈谈人们在这个话题上的一种恐惧,关于… 艺术家、工程师害怕失去工作,被 AI 取代。你能给他们一些希望的话语吗?
Tim Sweeney: 这当然是其中最极端的例子,因为 AI 远超先前的技术。但在其他所有行业都曾有过类似的恐惧。曾有人担心数字音乐合成会淘汰音乐家。在很短的一段时间里,使用数字音乐乐器(如早期的 MIDI 和雅马哈合成器)的歌曲不被允许赢得某些音乐行业奖项,因为它们不被认为是真正的音乐。然后… 随着时间的推移,人们受到了教育,意识到:“哦,这些只是人们演奏的乐器,他们控制它们的方式和以前一样。”
对于用 Photoshop 构建的计算机艺术是否真的是艺术,还是只是… 傻乎乎的计算机玩意儿,也有类似的问题。我认为如今数字艺术家已经赢得了尊重。我认为… 如果你只看 Photoshop 中已有的工具,其中一些已经相当复杂了。如今它们有了 AI 功能。但我认为 AI 最终将成为艺术家工具箱中的另一个工具。
我认为它未来将成为一个更强大、更可控、更服务于人类的工具。我认为很多疏离感来自于提示——要么在给你一个完整的创作时异常强大,要么在你想要控制其细微差别时完全不愿意让你控制。这让人感到疏离。你给它一张图片,但你说:“把这个对象换成这个东西”,或者“把那个对象变成绿色”,它就是… 它通常做不到。无论你在提示中用多少词语,都无法说服它。这让人感觉计算机正在从我们人类和艺术家手中夺走控制权,并且拒绝做我们想让它做的事情,它有自己的主见,对吧?它感觉像一个竞争对手。
而我认为,当我们对它拥有远为细致入微的控制,艺术家可以进入并只是… 就像:“让我们增强这个对象。做这个,做那个,做那个。”他们会觉得它是一个… 就像 Photoshop 中存在的某些工具一样——在某些方面,与画笔相比,它们已经是超能力了——AI 也会让人感觉像那样,并将越来越多地服务于创作者,以一种感觉像是他们自身… 身体和思想自然延伸的方式来创造和增强作品。
Lex Fridman: 当然,裁员带来了真实的人类痛苦。围绕 AI 有炒作,然后公司可能会尝试实施 AI 系统,并在此过程中裁掉一批人。那些人感受到的痛苦是真实的。我认为在这种转型中总会有痛苦,这是可怕的痛苦。痛苦在人类经验中通常是可怕的。但我个人对你所描述的整个人机协作过程感到兴奋。所以我认为,如果你一直保持开放态度,使用工具,不断尝试前沿工具,思考它们如何让你更有效率,如何赋予你作为创作者、艺术家或工程师的能力,我认为你会一直赢下去。
Tim Sweeney: 是的,我的意思是,有很多复杂的趋势正在进行中,很难将它们分解和区分。我认为很多人… 社交媒体上获得最大关注的理论往往没有抓住背后真正的驱动力。但我认为 AI 参与代码生产可能会为人类参与编码的需求创造净收益。它可能会改变工作的某些部分。我不认为它会淘汰任何愿意学习新做事方式的人。情况一直如此。
我认为 AI 方面也存在很多过度炒作。AI 非常擅长生成那些一百万个 GitHub 仓库已经做过的事情的代码,因为它有点像学习了底层模式。让它做一些新的、以前从未做过的事情,尤其是在任务复杂时,是出了名的困难。而且… 你向 AI 索要的代码量越大,它越有可能留给你一堆勉强能运行的代码。这就是代码的问题所在:它 99% 能工作,但那 1% 可能用 AI 比用手工编码更难达到 100%。每个关注这个话题的人都应该实际尝试在难题上使用编码助手,看看它们表现如何。
Lex Fridman: 是的,我认为… 对我个人而言,它让生成样板代码 (boilerplate code) 变得更有趣、更快,这样我就可以专注于更难的决策,更难的宏观决策,以及更难的创新决策,所有这些。这只是让编程对我来说更有趣了,因为… 我感觉不那么孤独了。是的,我有一个… 即使它给出错误的代码,我也可以想:“哦好吧,这也是一种方法。很有趣。”然后你可以和它交谈。也许… 也许这说明了编程体验的某些方面,即它有时确实有点孤独。
Tim Sweeney: 样板代码这个话题很有趣。因为样板代码的存在本身就是编程语言和创建软件模块理念的失败。你让 AI 创建一个排序函数,很好,现在你又多了一个可能有 bug 的排序函数,与其他人编写的上百万个其他排序函数并存。更好的做法是拥有一个已经被编写、测试和优化过的排序函数,每个人都依赖它。更模块化的软件,我认为实际上会减少 AI 的机会。因为从事编程工作的人将主要解决本身就是难题的独特问题,而不仅仅是连接其他小部件。
Lex Fridman: 是的,我认为就像在很多情况下一样,AI 只是通过向我们自己映照一面镜子来帮助改进人类系统。
XII. 模拟现实与元宇宙 (Metaverse) 概念
Lex Fridman: 我必须为接下来的“傻瓜式”问题道歉。但你一直… 让我们广泛地谈谈元宇宙 (Metaverse)。你一直是元宇宙理念的重要支持者。我们会更具体地谈谈今天这意味着什么。但我们一直在谈论越来越好地模拟现实。所以这个傻瓜式问题是:要将现实模拟到我们今天周围看到的水平,需要什么?我们距离模拟出地球这个超现实、沉浸式、有趣的现实还有多远?需要什么?
Tim Sweeney: 我们将在未来几年内惊人地接近这个目标,肯定用不了 20 年。如果你看看我们已经实现完全照片级写实的领域,以及我们仍然不足的领域。我们在世界上所有非人类交互方面已经非常接近了。在丛林或城市中行走,所有的光照,都非常接近。这可能只需要几年时间。
但是所有涉及人类的问题——人类对话和意图——它们需要满足的标准要高得多得多,才能满足我们的大脑,让我们相信它们是逼真的或真实的。是的,我认为这将是未来十年图形开发和模拟开发的主要挑战。
Lex Fridman: 所以逼真的人类将是底线。
Tim Sweeney: 是的。还有… 视觉和行为也是。所以一切。
Lex Fridman: 大约 10 年前我被问到这个问题,我说即使给我们无限的计算能力,我们也无法模拟逼真的人类,因为我们根本没有算法,我们不知道如何模拟人类智能。当时绝对是这样。但现在不完全是了。我们从生成式文本 AI 中看到的,不仅达到了你可以说它在模拟人类方面做得相当不错的水平,至少在文本层面是这样。还不是情感层面,但至少在口语词汇层面。随着找到越来越多在更多场景中训练它的方法,你可能会在未来五年内看到非常非常引人入胜的人类模拟。我不是说这是个好主意,但我认为技术的弧线正不可避免地朝那个方向发展,而且速度惊人。
Lex Fridman: 我们没有足够多地提到这一点,但大型语言模型 (LLM) 的现状… 我的意思是,如果你让艾伦·图灵 (Alan Turing) 与 ChatGPT 对话… 它真的通过了图灵测试,几乎是确定无疑地通过了图灵测试。当然,我们像… 不断提高标准。“嗯,图灵测试不是真正的测试。它不是有用的测试。”无论如何,我们只是不断提高对 AI 的标准,让它总是比… 但,是的,你拥有越来越超真实的面孔和身体,结合越来越动人、强大的情感、语音、文本。你知道,我与一家名为 Eleven Labs 的出色公司合作,他们做文本到语音。嗯,有些公司专门将文本赋予生命力,对吧?这种情况会增加。不同的公司在这方面做得很好。所以你… 然后突然之间,你有了这个综合创造的场景,一个人类在说话,你因为这个场景而感动到流泪。光线优美地照亮了完全黑暗中的脸庞,情感,场景的戏剧性。
Tim Sweeney: 是的,我想…
Lex Fridman: 所以你说 5 年,10 年,也许 20 年?
Tim Sweeney: 是的,绝对如此。我们肯定会在有生之年看到。
Lex Fridman: 在我的问题中增加“傻瓜”程度。你认为我们可能生活在一个模拟中吗?如果我们是,或者不是,构建这样一个让我们完全相信身处其中的模拟会有多难?
Tim Sweeney: 嗯,我不认为这些问题必然是无法回答的。我希望看到更多实际的努力来确定… 宇宙的底层机制是什么。我不认为我们毫无理由地存在于此。我认为世界是一个相当酷的地方。我们能够存在的事实,以及物理定律,尤其是物理学的标准模型和所有导致… 这些原子和生命在热力学梯度存在下演化的参数,这真的很酷。我认为这是一个值得更全面研究的领域。
关于我们自己是否生活在模拟中的问题,总是归结为:“好吧,如果我们生活在模拟中,那么‘他们’生活在什么之中?”因为在某个点上,必须有某个基础现实。或者… 有一个被认真提出的哲学理论是,根本没有物理现实。如果你有一个方程系统,比如物理定律,那么在这些定律下动力学系统的所有可能演化都具有某种物理现实。所以我们只是有点像数学定律的一种表现形式,而不需要一个实际的宇宙围绕着我们。
我不知道。我喜欢涉猎那种哲学。随着 AI 变得越来越聪明,我们越来越接近真正捕捉到完整的物理定律,这些问题变得相当引人入胜。你开始思考,如果我们不是生活在模拟中,那么关于这个现实的哪些方面是无法模拟的?
Lex Fridman: 所以我们周围有哪些巨大的谜团?感觉物理学是可模拟的。感觉我们谈论的许多令人难以置信的东西,虽然超级棒,但似乎是可模拟的。但然后是… 意识的火焰,那种感觉,无论它是什么,在我们人类眼中点亮的东西。也许那是不可模拟的。也许那就是… 连接到解释宇宙机制(正如你所说)的线索,理解这一点非常重要。而我们对那个机制完全一无所知。我的意思是,很多宗教文本都在暗示那个机制是什么,但我们仍然大部分一无所知。我们只有这些… 信念的飞跃,相信那个机制可能是什么。
Tim Sweeney: 所以,你知道,嵌套模拟 (nested simulations) 的整个想法,也许… 考虑到足够先进的技术,有点被… 使得… 如果你想模拟另一个现实,你有点像只是在实际创造那个现实。你在做… 量子力学操作,无论如何都会产生相同的结果,并且你以全速运行它们。所以它不是真正的嵌套模拟,它只是宇宙中发生的另一件事。
那会很有趣。但我认为这最终是一个神学问题。因为将神学作为科学的一部分来处理不再酷了,这方面的研究并不多。你无法在受人尊敬的物理学期刊上发表关于这些主题的结果。所以我认为这有点被搁置了。
但有趣的是,量子力学定律本身为… 你知道,上帝或灵魂或任何你想附加到这类事物上的外部输入来源留有位置。而且… 有量子波函数坍缩 (quantum wave function collapse) 的想法,当我们… 观察一个处于许多可能性完美叠加态演化的量子系统时,你去观察它,你实际上只看到一个特定的可能性。在多缝实验中,光最终被观察到通过一个缝隙或另一个缝隙。这是一个随机数被注入到我们周围一切事物中的地方。你知道,每秒钟发生数万亿亿亿次,在我们观察的一切事物中。如果你想附加一些外部输入… 嗯,那里有一个地方。它可以通过科学的严谨性来认真地触及,但我们所知甚少。
Lex Fridman: 是的,很有趣。在那个领域,我们知道的并不比… 穴居人知道的多。我们知道量子力学定律,我们有计算机,可能很快会比我们更先进。但是… 我们对关于生命、宇宙和一切的基本问题没有任何答案。
Lex Fridman: 你认为… 更实际地说,你认为我们会创造出… 视频游戏,元宇宙类型的视频游戏世界,人类会愿意留在其中吗?我的意思是,对我来说,这种… 模拟现实的讨论,沉浸感的真正考验是… 作为一个完全健康、兴奋、正常的普通人,选择留在那个世界,而不是想回到现实世界。你认为这有多难?
Tim Sweeney: 嗯,我认为技术… 正在到来。然后有一个人类问题:我们应该… 我们应该走那么远吗?我们应该… 是的,当然作为游戏开发者,我们 Epic 并不渴望那样。我们制作有趣的游戏。我们发现的终极表现形式是人们一起玩的有趣游戏,在工作和现实生活中其他事情之间获得乐趣。但随着模拟变得越来越逼真,能力变得越来越真实,我认为我们必须问自己一些难题,关于人类应该如何在那个空间中运作?我们应该达到的极限是什么?我们应该设定的极限又是什么?
Lex Fridman: 是的,我认为… 会有一些难题。我认为也许我只是在这里以人类为中心,但可能应该有一些法律界限,关于两件事:某种程度上不创造一个人类会想停留太久的现实… 是的,更专注于游戏方面。更重要的是,不创造能够受苦的人类模拟。对我来说… 正如我们谈到的… 创造超真实的人类,最终意味着创造能够受苦的人类。他们可以坠入爱河,经历心碎和失落。他们可以害怕死亡。你越是将人类状况的全部现实模拟出来,你就越接近这个地方:你拥有能够受苦的模拟人类。我认为在法律上… 你必须达到一个不允许这样做的地步。就像有一条你不能跨越的线。这对人类来说是一件难以处理的事情。
Tim Sweeney: 那将是一些有趣的最高法院案例。一旦你创造了一个足够逼真以至于能够受苦的人类,意味着那个人类可以被折磨… 对那个人类做可怕的事情,那个所谓的“人造”人类。
Lex Fridman: 天哪,那… 那仍然感觉不对。我不知道那是什么,但折磨… 折磨一个模拟人类感觉不对。现在,当你玩一个视频游戏,它是一个射击游戏,每个人都很开心,那不感觉不对。但是有一条线。对最高法院来说,探索这条线将是一件引人入胜的事情。
Tim Sweeney: 哦天哪,我们生活的未来多么令人兴奋,嗯?
Lex Fridman: 是的。你知道,我认为需要认识到的是,游戏开发者通常都站在善良的一边。如果你看看人们在当今流行视频游戏中最糟糕的行为,就像… 你在 GTA 里抢银行。这显然是虚构的、令人敬畏的、有趣的,而且不是认真的,是夸张的。是的,我认为… 随着事物变得越来越逼真,尤其是人类模拟,是的,那里有一些难题将不得不被回答。但我认为所有游戏开发者需要记住的是,我们在这里是为了通过娱乐他们、为他们提供乐趣,以及从其他事物中分心,来让人们的生活变得更好。成为他们生活的一部分,而不是试图变得太大或太多,也不是试图提供现实的替代品,而只是提供一个有趣的娱乐来源,就像人们为乐趣而做的许多其他事情一样。
Lex Fridman: 所以… 你像我提到的那样,多年来一直在谈论元宇宙 (Metaverse)。让我们退一步。什么是元宇宙?说到乐趣… 你知道,《堡垒之夜》(Fortnite),你知道,数亿人就在这个巨大的社交游戏中享受自己。你可以称之为元宇宙。也许你可以描述一下你所看到的元宇宙的不同风格、不同层面?
Tim Sweeney: 元宇宙是一个其股价根据谁在哪天说了什么而涨跌的想法。而且… 有些人一张嘴就有能力让它暴跌。但最终,这是关于多人社交游戏体验。你和你的朋友们在一个 3D 世界里聚在一起,以任何你想要的方式一起玩乐。
如果你在玩《堡垒之夜》大逃杀 (Fortnite Battle Royale),在我看来,那就是抓住了元宇宙的精髓。尤其是在《堡垒之夜》中,当我们让索尼加入,使得《堡垒之夜》中所有平台上的所有玩家都能一起玩,可以一起语音聊天,可以成为单一游戏体验的一部分时,它真正呈现出一种新的性质,不仅仅像一个多人游戏,你知道,继承自《毁灭战士》(Doom),而且是你和你朋友之间真正的社交体验。
《堡垒之夜》大逃杀只是其中的一种表现形式。另一种就像 VR Chat 里的 Rec Room,你和朋友们在 VR 里站着玩台球、投篮或做其他一些轻松的娱乐活动。我认为每一款拥有大量玩家、并且玩家们作为他们娱乐生活一部分进行社交互动的游戏,我认为都真正触及了元宇宙愿景的核心本质。
我们仍处于其非常早期的阶段。我大概在 1992 年左右就上网了,那是个相当简陋的东西。我认为当我们回顾今天游戏的状态时,我们会意识到要达到它的终极版本还有很长的路要走。但我认为一切都在正轨上。我认为,当我们发布《堡垒之夜》大逃杀并开始一起玩——Epic 的所有人都在小队里玩,体验那个世界——那时我们意识到这个趋势正在发生,我们需要尽一切努力引入其他创作者,让任何人都可以… 通过创建自己的世界来扩展我们正在做的工作,通过《堡垒之夜》创意模式 (Fortnite Creative) 和 UEFN,并创造更多人们可以玩的游戏和类型,不断扩大其范围。
XIII. Fortnite 的起源、成功与规模化
Lex Fridman: 是的。我很想稍微多谈谈这方面的不同方面。因为,你知道,Epic 创造了很多令人惊叹的游戏:《虚幻竞技场》(Unreal Tournament)、《战争机器》(Gears of War)。但我认为公平地说,改变了游戏行业的那个游戏是《堡垒之夜》(Fortnite),尤其是《堡垒之夜》大逃杀 (Fortnite Battle Royale)。你能解释一下《堡垒之夜》的起源故事吗?
Tim Sweeney: 《堡垒之夜》的开端很不起眼。2011 年,我们刚刚… 完成《战争机器》系列某款游戏的最后阶段。我们想探索新游戏的想法。我们有一个大致的想法,想做一些… 更小型的游戏,在线游戏,以便更多地了解那个领域,而不仅仅是始终只有一个单一的大型游戏在制作中。
所以公司里的每个人都有一周时间,组建团队,和他们想合作的任何同事一起工作,并制作一款游戏。你知道,使用虚幻引擎,你实际上可以在一周内做出一些非常有趣的东西。其中一个团队制作了后来成为《堡垒之夜》的最初版本。它的最初版本艺术风格不同,但核心想法是,你白天用这个建造系统建造堡垒,然后夜晚来临,你防御堡垒抵御僵尸。你能坚持得越久,就能建造越精巧的堡垒,就能抵御越多的生存波数,随着时间的推移会变得越来越酷。
那款游戏开发了很长时间。我们一直看到它的潜力,仅仅是建造方面就非常有趣。但我们在不同时期做出了不同的转向。在某个时候,我们转向了当前的《堡垒之夜》艺术风格,从一种更写实的风格转变过来,让它… 更偏向皮克斯 (Pixar) 的风格,你知道,酷炫的风格化角色。
Lex Fridman: 那个决定是怎样的?因为我们应该提到,《战争机器》是那种… 难以置信的… 将图形效果发挥到极致的游戏,与《堡垒之夜》的艺术风格不同。同一家公司竟然会做出《堡垒之夜》这种有趣、傻气的图形风格,这很令人惊讶。
Tim Sweeney: 人们来到 Epic 是因为他们想和世界上最优秀的人一起工作。艺术家们带来了许多不同的个人艺术追求和风格能力,他们中许多人都非常有才华,可以制作照片级写实内容或高度风格化的内容。《堡垒之夜》上许多最优秀的艺术家也是《战争机器》上许多最优秀的艺术家。改变风格,但继续做出色的工作。
我们意识到《堡垒之夜》可以非常主流,它可以成为人们玩很长时间的游戏。所以拥有一个… 更视觉上令人愉悦的艺术风格,不像《使命召唤》(Call of Duty) 那样压力大,你总是在黑暗场景中像素级地寻找某人的步枪瞄准镜,这就是目标。所以,一些艺术家完成了并定义了新的艺术风格,我们转向了它。
在不同时期,它演变成有点像一个轻度的 MMO,像《命运》(Destiny) 那样,带有相当复杂的 RPG 和属性系统。那演变成了一个… 有点像一个… 类似塔防游戏的… MMO,只在物品和属性的持久性方面是 MMO。这就是后来成为《堡垒之夜:拯救世界》(Fortnite: Save the World) 模式的东西。我们在 2017 年初发布了它,取得了中等的成功。你知道,它收回了预算,我们最终盈利了。
然后,与此同时,大逃杀 (Battle Royale) 类型正在蓬勃发展。《绝地求生》(PUBG) 刚刚问世,Epic 的很多人都在玩那个。他们想:“哦,如果这有《堡垒之夜》的建造系统就太酷了。”于是… 我们在一个作战室里组建了一个团队,大概 30 个人在一个大房间里。他们… 疯狂地工作了四个星期来构建大逃杀模式。
好消息是,《堡垒之夜》的所有内容都是在过去七年里构建的。他们有一个巨大的内容库,但没有他们想要的那种游戏玩法。所以他们必须在那四周内全部构建出来并发售。这让 Epic 走上了一条指数增长的曲线,我们从 300 名员工增长到… 数千名员工,年收入从大约 1 亿美元增长到数十亿美元。并且… 成为了当时游戏世界的中心。
Lex Fridman: 你能具体谈谈技术… 规模化… 从一个基本上不是大型在线游戏平台,转变为能够支持大逃杀模式下大量玩家同时在线的技术挑战吗?就像,那四周的技术… 有哪些技术挑战必须克服?
Tim Sweeney: 从 2012 年开始,我们一直在构建在线后端系统,以支持玩家账户、登录以及… 你知道,制作多人游戏所需的所有不同系统。我们一直在构建它们使其具有可扩展性。并且奇迹般地,我们把它们构建得足够稳定,以至于它们能够扩展。
所以,负责修补那些代码的在线团队花了一年的紧张工作,将其从支持大约 4 万并发用户扩展到支持 1500 万并发用户。
Lex Fridman: 是的,我的意思是,他们在扩展。他们在扩展。那是很多。那… 那是巨大的。
Tim Sweeney: 但他们如此出色地构建了基础,以至于… 这是可行的,是可以做到的。如果… 如果他们没有那样做,那么公司就会倒闭。你知道,《堡垒之夜》根本无法玩,整个事情就会失败。
Lex Fridman: 我的意思是,这里有太多细节决定成败。因为我的意思是… 这就是 Spotify 谈到的,比如… 延迟。就像你提供歌曲的速度如何改变了产品,从这个… 我宁愿盗版歌曲的糟糕东西,变成了… 这足够好,我真的很享受这种体验,我想使用它。所以… 创造一种… 1500 万并发用户的体验,让他们不… 不卡顿,让它实际工作,这真的非常重要。你能谈谈… 实现这一点的难度吗?
Tim Sweeney: 如今构建在线服务的趋势是微服务 (microservices)。没有一个单一的大型服务器处理与《堡垒之夜》的所有交互。有游戏服务器为每个大逃杀会话运行 100 个玩家的游戏实例。然后有… 一个账户服务器,以及它的许多实例,都与一个共享数据库通信。还有数百个不同的微服务相互通信。所以扩展就是一个识别该系统瓶颈是什么的问题,并确保每一个… 都能扩展,并有足够的冗余来处理负载。
我的意思是,感谢亚马逊网络服务 (AWS) 和云托管。因为 Epic 在没有购买任何服务器硬件的情况下,扩展到了 1500 万并发用户。我们能够直接打电话给亚马逊说:“我们需要更多。”有一段时间,《堡垒之夜》正经历这种指数级增长,我们会发现,比如一周,我们在巴西的一个游戏高峰周末服务器用完了。下一周,我们有一个更繁忙的游戏高峰周末,结果有服务器来处理它了。就像亚马逊的某个人把… 数百万美元的服务器硬件空运到巴西,并在《堡垒之夜》需要它的那一刻及时开启了它。你知道,那个故事里有很多无名英雄,其中许多我们从未听说过。
Lex Fridman: 是的。我的意思是,AWS 背后有很多无名英雄。就像… 如此多的那些人运行着现代… 现代互联网。所有令人难以置信的服务,游戏,我们视为理所当然的服务,目前都在 AWS 或最初在 AWS、谷歌云等上面运行。
Lex Fridman: 你能谈谈《堡垒之夜》赚了多少钱吗?这是视频游戏史上最伟大的成功之一。
Tim Sweeney: 《堡垒之夜》每年赚取数十亿美元。这是 Epic 收入的大部分。我们在虚幻引擎授权、《火箭联盟》(Rocket League)、《糖豆人》(Fall Guys) 以及一些其他工具,如 Fab 内容市场等方面也有稳健的业务。但大部分收入来自《堡垒之夜》。
因为我们选择大量再投资于构建我们认为是未来技术的东西,我们每年的支出超过了我们的收入。有一段时间,我们每年的支出比收入多出超过 10 亿美元。我们发现这是不可持续的,那时我们经历了一些痛苦的裁员。然后我们稳定下来,现在我们每年的支出比收入多出几亿美元,这我们完全负担得起。因为我们银行里有数十亿美元。这要归功于我们在还是一家小公司拥有一款非常大型游戏时赚取的利润,以及我们筹集的投资。
我们不是一口在发现石油的地方从地里抽油的油井。我们正在成长为未来的技术强国。我们认为 3D 空间以及未来的实时 3D 模拟将成为人类技术的主要方面之一。我们正全力投入于此。
Lex Fridman: 看到你们投资于长期未来,承担做研究和定义 Epic 下一章的风险,这令人兴奋。利用今天的成功来投资于明天的成功,那可能看起来非常不同,完全不同。其中一部分是投资于虚幻引擎的开发、研究和创新。
Tim Sweeney: 没错。我们是一家可以开始一个项目,并且知道我们可能在 3 年、4 年、5 年内都无法实现或从中赚到任何钱的公司。我们对此完全没问题。这就是随着时间的推移推动我们增长的周期:不断投资于未来,并成为一家认真进行严肃研发的公司,同时发布和维护产品并从中赚钱。
XIV. 未来元宇宙:互操作性与标准
Lex Fridman: 你能谈谈… 我的意思是,这里有几个方向。其中之一是元宇宙这个想法的未来演变。所以,潜在地创建社区… 《堡垒之夜》是这个令人难以置信的巨大的人类互动社区。但你的愿景是超越仅仅一个游戏。那么… 你在考虑构建什么样的标准,使得人们可以… 几乎拥有一个身份,在游戏之间穿梭,诸如此类?
Tim Sweeney: 让我从游戏的现状以及它为何糟糕开始。
Lex Fridman: 那是个好的开始。当然。
Tim Sweeney: 《堡垒之夜》是一件很棒的事情。你进入《堡垒之夜》,有… 每月 1 亿活跃用户。你自己的很多朋友都在那里。你可以和他们一起玩,无缝地从一个体验切换到另一个体验,而无需离开应用程序。有 10 万个不同的岛屿可以玩,其中一些非常棒。而且不断有新的岛屿推出,不断有事情可做。
如果你想玩《Roblox》,好吧,你退出《堡垒之夜》应用程序,启动《Roblox》应用程序。不同的程序,不同的好友系统,不同的账户名称。你在《堡垒之夜》中的用户名和你在《Roblox》中的用户名是不同的名称,它们彼此没有关联。所以你必须重新添加所有朋友,然后找到不同的… 可玩的东西。现在控制方式也不同了,所以你必须重新学习… 摇杆、鼠标、键盘、控制器在该体验中如何工作。你必须从一个地方到另一个地方。
你在《堡垒之夜》里买了一些东西,它们很酷,你可以在《堡垒之夜》的任何地方使用。然后你进入《Roblox》,你没有那些东西。你必须购买不同的东西,而那些东西只在《Roblox》中有效。和《使命召唤》一样,它是另一个孤立的地方。和《魔兽世界》一样,和《英雄联盟》一样,和其他所有… 你去的每个地方都是它自己独特的地方。不同的朋友,不同的账户名称,不同的人。它们之间完全没有社交凝聚力。
很久以前,主机平台试图通过创建它们的全平台好友系统和账户来解决这个问题。所以你在 PlayStation 上一个游戏中的朋友,也是你在 PlayStation 上另一个游戏中的朋友。但仅限于 PlayStation。如果你在 Xbox 上,你看不到 PlayStation 的朋友。所以你基本上有两个正交且交叉的… 将世界划分为领地的划分方式。它们… 并非出于恶意创建,而是自然产生并… 分离的孤立岛屿。一个是平台及其社交服务:Xbox、PlayStation、任天堂、Steam、Epic(如果算上的话)。另一个是人们玩的这些不同的游戏。
因为这个奇怪的历史遗留问题,我们… 生活在一个人们无法无缝地从一个游戏移动到另一个游戏,带着他们的朋友和他们的物品的世界。
解决方案是联合 (federate) 并连接所有系统。所有不同平台上的所有玩家都可以通过他们的名字被识别。加上 @ 符号,这样你的 Xbox 名字、你的 Fortnite 或 Epic 名字、你的 Steam 名字都可以共存于一个单一空间并相互操作。统一社交生态系统是需要发生的一件事。
下一个,也是更大的挑战,是统一经济。我不是说… 像你在《魔兽世界》里拥有的一把剑应该在《堡垒之夜》里也能用。每个游戏… 每个游戏都会有自己的游戏玩法规则,很多游戏会有只在其中有效的东西。但是,你知道,有一大类游戏,它们共同拥有一个不影响游戏玩法结果、纯粹是… 酷炫外观和造型的外观系统 (cosmetic system) 的想法。大多数主要的多人游戏都有。
如果你看看这些游戏,你大概可以把其中 70% 捆绑在一起,说它们足够相似,实际上可以互操作。你可以… 在《堡垒之夜》拥有一套服装,在《Roblox》拥有一套服装,在《使命召唤》可能也拥有同一套服装。也许… 在 100 或 200 个其他游戏中,并期望它们能协同工作。你会发现其他类型的物品可能也可以互操作。比如《堡垒之夜》有汽车外观。所以你可以… 购买不同外观的汽车。当你在《堡垒之夜》的世界里找到一辆实体汽车时,如果你是那个会话中第一个进入它的人,砰,它就变成了你… 你选择的汽车外观。现在你有了一辆酷车,可以识别出是你的。
我们很早就意识到,《堡垒之夜》作为创作者经济运作的关键在于,将道具商店 (Item Shop) 的收入开放给所有参与度的来源。在《堡垒之夜》中有两件大事使其作为一个产品和一个业务得以运作。一是游戏模式:《堡垒之夜》大逃杀和所有用户模式以及其他一切,是参与度的来源。人们在那里玩,因为它超级有趣。因为他们在那里玩,他们愿意购买酷炫的东西,让他们的角色看起来更酷。
所以你有所有这些参与度的来源,但参与度的来源并不直接赚钱。你不能在《堡垒之夜》大逃杀中花钱购买… 游戏物品。就像,所有东西… 游戏玩法不是付费获胜 (pay-to-win),它都只是游戏。所以我们从道具商店赚钱。而道具商店的存在仅仅是因为有参与度的来源。如果你不玩大逃杀,相信我,没人会想买《堡垒之夜》的服装。如果你不玩任何《堡垒之夜》游戏,你为什么要买《堡垒之夜》的服装?
所以你所有的收入都在这个道具商店经济中,所有的参与度都在这个参与度经济中。而神奇地让《堡垒之夜》创作者经济运作起来的是:根据参与度来源分享道具商店支出。如果你购买一件物品,并且你玩了… 比如 40% 的时间在大逃杀,60% 的时间在这些用户模式中,你花的钱中,那部分是利润的部分,可以被分离出来,支付给所有参与该经济的不同创作者。这就是为什么《堡垒之夜》扩展到了一个 $4 亿美元的创作者经济,并且还在增长。
Lex Fridman: 这太令人惊奇了。
Tim Sweeney: 我们在设计它时力求做到的一件非常关键的事情是,确保它是一个可以扩展到其他公司、其他生态系统的创作者经济。比如说,现在我们有很多行业标准机构。一个标准化游戏评级,你知道,游戏的年龄评级。另一个标准化… 网页的文件格式。另一个标准化… 3D 文件格式,像 Khronos Group 和 Metaverse Standards Forum。
如果我们有一个标准机构来标准化什么是便携式游戏服装——你可以在一个游戏中购买并在另一个游戏中使用的游戏服装。它们的… 尺寸是多少?它们的能力是什么?你能做什么,不能做什么?等等。那么你就可以有一个道具经济,每个游戏都同意尊重彼此… 对那种道具的购买。并且收入也在生态系统之间共享。那将是不可思议的。
Lex Fridman: 那将是如此惊人。首先,只是… 对不玩视频游戏的人来说,这可能看起来很傻,但一套服装是重要的… 如果一套服装可以在视频游戏之间持久存在… 我的意思是,我不知道… 生活的目的是什么?我们为什么穿衣服?这是我们身份的一部分,是我们向世界展示自己的方式。是… 你知道,我穿这身傻西装领带,感觉很好。穿上它感觉很好。而且… 甚至像我的另一套服装,我有两套:这个,然后是黑色 T 恤和牛仔裤。穿那个感觉很好。感觉像我自己,当我照镜子的时候。“好吧,我认识那个人。”能够让那套服装从一个游戏到另一个游戏,也许跨越数年,那将是美妙的。
我想知道你是否可以评论一下… 是否也可能有另一种关于价值的标准化… 对于更复杂的物品?所以,你知道,从《暗黑破坏神》(Diablo) 拿一把剑,然后把它转换成《堡垒之夜》里的一把枪,但是基于价值,某种… 某种金钱的通用概念?所以一个游戏中物品的价值与另一个游戏中物品的价值,你几乎是在一个价值空间中操作,而不是实际的物品?还是那已经变得太… 太笼统了?
Tim Sweeney: 我认为这是可以做到的。我们对《堡垒之夜》的经济进行了大量分析,发现… 某些《堡垒之夜》的体验导致或关联着比其他体验更高的支出。《大逃杀》… 在那方面相对较强。因为你从背后看到你的角色,从正面看到所有其他角色,你有很多机会真正看到你是谁,并做表情,与其他玩家互动。很多游戏… 都有这个特点。
一个有趣的异常现象突显出来。有一款游戏是《堡垒之夜》的重大突破之一,《Only Up》。这是一款你只是通过沿着堆叠物体的路径向上攀爬的游戏。它就是傻傻的好玩。每个人都喜欢。但我们发现人们在玩《Only Up》时并没有在服装上花很多钱。这有点符合直觉。就像,你没看到其他玩家。如果你看到什么,你看到的是他们的屁股,当你试图追上他们,从一个物体跳到另一个物体时。他们在你上面。所以,你知道,那不是一个很能展示服装的模式。但是你可以… 你可以确定一个游戏模式和支出之间的经济关联。
Lex Fridman: 这太吸引人了。我的意思是,《堡垒之夜》是这个巨大的经济体,你可以在其中进行这类研究。你可以理解市场,数字市场,当它们在人类中出现时,以及他们看重什么。从那个价值中,你可能可以产生一种非常稳定的货币。
Tim Sweeney: 是的,我认为是的。你不需要… 像一个替代货币系统。你知道,不幸的是,一堆想法被混淆了,因为人们试图炒作不同的东西。但是,你知道,大规模多人在线社交游戏这个想法… 你知道,元宇宙的那个概念… 每月有 6 亿到 8 亿人在玩那种游戏。所以,你知道,那是真实的,它正在发生,而且它… 非常进行中。
VR 的受众要小得多。我不认为你需要 VR 才能拥有类似这样的东西。VR 是硬件,它可能增强也可能不增强某些使用场景的体验。对某些场景可能会更好,对某些场景可能会更差。但肯定没有任何… 大逃杀玩家涌向… 涌向 VR。
另一件事是 NFT。这就像… 试图将数字或加密货币等同于元宇宙。这就像… 嗯,你知道,这只是一种表示金钱或价值交换的方式。你可以用钱来做,也可以用 NFT 或其他什么来做。但关于这个未来的数字经济,没有任何东西从根本上需要加密货币或其他什么。你需要的是互操作性 (interoperability)。互操作性可以通过区块链实现,可以通过数据库实现,可以通过标准机构定义标准和协议来实现。我们这样做已经有数百年了,自从铁路被标准化以来。而且… 你知道,这并非完全需要一个新颖技术解决方案的事情。
Lex Fridman: 是的。我的意思是… 即使在加密货币这个话题上,也非常令人沮丧。区块链和加密货币是一项非常强大的技术,我认为可以实现我们谈论的很多事情。但如此多的人用它来试图… 试图赚钱,制造这些泡沫,他们… 炒作和模因币 (meme coins) 等等。这变得越来越少地… 关于那个… 它迅速地偏离了实际上有价值的东西,那就是玩《堡垒之夜》的体验,以及你在玩大逃杀时的样子。我的意思是,说起来可能很荒谬,但这是真的。那是有价值的。那就像… 你知道,你在物理空间有黄金,我们知道那有价值。你在《堡垒之夜》里的服装看起来如何,正如你所说,可证明地拥有价值。所以你想连接… 像一个标准的… 金钱、价值的定义到那个上面,而不是让它变成这种炒作的东西,就像你提到的 NFT,它们就是变成了那样。它… 它迅速地漂移到人们试图买卖、试图赚钱的领域,而不是… 保持接近人们实际看重的东西。忘了钱吧。更多的是关于交换有价值的体验或有价值的东西。所以你可以… 玩《堡垒之夜》,然后去另一个视频游戏,继续有价值的体验,然后回到《堡垒之夜》,做那样的事情。所以你说可能有一种方法可以做到这一点,并且… 基本上创建标准,就像 Web 有不同的标准用于显示网站和所有这些东西,或者… 网络端所需的通信。所以所有让 Web 工作的不同标准。需要有那种标准… 那些标准会是什么样子来启用元宇宙?
Tim Sweeney: 我们需要很多不同的东西。标准在创建所有主要引擎今天都已实现的工作标准方面非常成功的一个领域是底层文件格式,用于数据交换。是的,Web 有用于 2D 图像的 PNG 文件,用于音频的 MP3 文件。而 3D 有… 皮克斯的 USD 文件格式,通用场景描述 (Universal Scene Description),它是场景图——场景中所有对象的集合及其所有参数的描述。这样任何支持这些功能的引擎都可以导入它,然后渲染与它们来源引擎相同的场景。其中很大一部分在虚幻引擎、Unity、Blender 以及所有这些不同类型的 3D 软件包中都能工作。还有 glTF 纹理格式,它存储纹理、几何体和其他用于 3D 对象的底层数据。
当你看到一个《堡垒之夜》角色时,那个文件格式连同图像文件格式可以存储它们的静态外观,它们的… 身体形状,甚至它们的动画,以及它们不同的姿势。以及它们的外观。不同的标准文件格式可以存储它们在表情 (emotes) 中发出的所有声音。但我们仍然缺少一些部分。
最大的缺失部分是一个处于标准化元宇宙核心的编程语言。如果你看看 Web,Web 是多种不同技术的组合。两个最大的技术是 HTML,它描述了 2D 场景图或… 网页上控件和对象的 2D 布局。但这只是静态数据。它只是一个不移动、不动画的网页。然后你有 JavaScript 编程语言,用于操纵它,向用户显示东西,并实现任何你可以在代码中实现的东西。所以它是一个在你的 Web 浏览器中运行的小型编程语言。
元宇宙需要某种扮演类似角色的东西。但元宇宙和 3D 游戏总体上需要比 JavaScript 更强大、更安全、更可扩展、更有能力的东西。因为元宇宙实际上比网页更难的技术问题。网页… 就像一个应用程序,只是由某个人、某个公司准备的一捆代码和内容,他们发布它,它就保持原样,直到他们发布新版本,它随着时间的推移从一个版本升级到另一个版本。
但元宇宙需要是一个由数百万不同人构建的代码和内容的组合,它们可能共同形成一个无缝的世界。
Lex Fridman: 是的,完全分布式、协作的… 首先,还有数据量。我的意思是,不一定非要那样,但网站显示的信息非常少。元宇宙,即使它看起来像《堡垒之夜》那样的东西,仅仅是当个体玩家协作时在场景图中传达的信息量就是巨大无比的。
Tim Sweeney: 《堡垒之夜》最高细节的更新量大约是 60 GB 的数据。而这只是《堡垒之夜》创意经济中存在的一小部分。如果你看看十年后这可能是什么样子,随着标准的出现,你可能会有艾字节 (Exabytes) 的数据在那里。
《堡垒之夜》大逃杀… 我不认为它是将… 永远被发明的终极游戏玩法体现。我们一次又一次地看到,随着我们获得更多的技术能力——图形变得更有能力,CPU 变得性能更强,Web 服务变得越来越可扩展——我们会看到新的游戏类型出现,这些类型以前是不可能的。
《毁灭战士》(Doom) 开创了死亡竞赛 (Deathmatch) 的时代,也是第一次 3D 多人游戏成为可能。早期的大逃杀游戏,大约从 10 年或 15 年前开始,只是在那时才成为可能。你无法在 20 年前构建一个,因为你根本无法渲染一个像 VR 游戏那么大的环境,有那么多玩家,有那种级别的交互和性能。运行它根本不可能。所以你达到了一定的技术能力水平,一个类型出现了,被证明是迄今为止发明的最好的射击游戏类型。
但我认为还有无数无数更多的类型,其中一些比任何现有类型都要好,随着我们获得越来越多的能力,它们将被发明出来。我们现在缺乏的能力之一是构建环境和游戏模拟的能力,其跨度超过单个公司可能创造的范围。你看到了这种想法在《堡垒之夜》和《Roblox》中的萌芽,那里有成千上万的创作者,每个人都在构建内容,用户正在玩其中相当数量的内容。所以有一个生态系统,其规模超过了公司。但它仍然很大程度上是你进入一个岛屿,玩那个创作者的作品。
可扩展性的另一个方向是将越来越多的人的作品整合到一个无缝、连续的游戏空间中。对于那些适合这样做的游戏,你可以想象一个… 发生在一个大陆或地球大小的环境中的游戏。在其中你可以从一个地方到另一个地方,然后看到不同的区域,这些区域由不同的人维护。当你进入不同的空间时,游戏规则会根据此进行定制。你可以从一个体验到另一个体验。而且你不会无论身在何处都只有一家公司的作者身份永远存在。你会看到… 你开着一个人造的车,携带着另外二十个人造的武器。并且… 参与到一个由数千个其他人——为独立公司工作或他们自己的… 企业家或独立开发者或爱好者——共同同时工作的环境中的模拟中。
我们完全缺乏这样做的编程基础。你现在需要编写的那种代码,来实现这一点,根本不实用。所以我们正在投入巨资构建围绕 Verse 和我们提议的未来元宇宙编程标准的新的编程语言技术,我们希望这将解决这类问题,并使那种世界成为可能。
XV. Verse 编程语言:愿景与技术
Lex Fridman: 首先,那是一个超级令人兴奋的未来,你知道,不是几百或几千,而是数百万的创作者可以创造… 一个像地球一样大的世界中不同的小或大元素。如果你只是… 闭上眼睛想象那个世界,那真的令人兴奋。在那里,不是一个中心化的公司控制着某个特定岛屿的发布等等,而是人们不断地动态地修改这个数字世界中现实的所有岛屿。
那么… 如果你能谈谈一些能够实现这一点的技术。你提到了 Verse 编程语言。首先,还有… 对你,Epic Games 的 CEO,作为合著者来说,这有多正当?编程语言理论家们都要疯了。作为一篇描述编程语言某些细微细节的论文的合著者。所以也许你能谈谈这种叫做 Verse 的编程语言。它是一种函数式逻辑语言。它是什么?Verse 有哪些很酷的特性?
Tim Sweeney: Verse 是我们正在为大规模模拟编程构建的一种编程语言。它旨在使编写能够扩展到… 不仅仅是你构建一个《堡垒之夜》岛屿,而是你构建可以被数百万其他程序员使用并共存于一个巨大环境中的模块或组件的代码变得容易。并且也能够扩展到巨大的模拟规模。
有些游戏会很小。《大逃杀》可能会发现… 100 个玩家实际上是最佳的。也许一千个玩家版本的大逃杀会更糟。但我敢打赌,有一千、一百万和数千万玩家的体验,甚至比那更好,还有待发现。
Lex Fridman: 等等,等等… 数千万玩家在一起?
Tim Sweeney: 当然。我们举办过吸引了 1500 万并发用户的《堡垒之夜》活动。但是,你知道,他们都被划分到每个有 100 个玩家的服务器中进行那些活动,这并非真正的积极因素,这只是技术的限制,追溯到虚幻引擎 1 及其单线程决策。如果我们能构建一个演唱会,所有演唱会参与者——可能是数千万人——可以同时参与,并看到有那么庞大的人群,他们都可以做有趣的事情并相互互动,那会酷得多。
Lex Fridman: 只是… 如果我们只是… 抱歉我只是在加载它… 只是想象一下,在一个场景图中,一千万人互动。那是一个多么酷的世界。
Tim Sweeney: 当然。嗯,你有一千万人,你的屏幕上像素不到一千万。那么奈奎斯特定理说了什么?它说你不需要为每个玩家提供完整的开销。你需要渲染你周围的玩家,以及其他一切的某种近似。
Lex Fridman: 是的,太… 但还有一个网络组件。就像你在谈论渲染,但是… 哦天哪… 那里需要做很多工作。
Tim Sweeney: 但你知道,这就是我们赖以生存的方式。我们解决难题。
Lex Fridman: 我理解。因为如果它们很容易,那么其他人早就解决了。
Tim Sweeney: 那真的很酷。仅仅是… 那种可能性,那种愿景真的很酷。即使只是… 你知道,即使是十万人,或者像… 把一万人聚集在一起,仅仅是为了… 我的意思是,在物理世界中,当你去听音乐会,周围有那么多人,那种能量,或者你去看一场足球比赛,那种能量是无与伦比的。如果你能把那种能量带到数字世界,那太棒了。
Lex Fridman: 是的。但无论如何… 所以抱歉… 那么… 在技术方面,在编程语言方面,实现这一点… 你能继续吗,在我粗鲁地打断你之后… 谈论 Verse。
Tim Sweeney: Verse 是一种函数式逻辑语言 (functional logic language),因为我们认为这是同时制造最简单和最强大语言的方法。回到 1970 年代,构建了 Pascal(早期编程语言之一)的编程语言设计师尼克劳斯·维尔特 (Niklaus Wirth),或者美国人可能称他为 Nicholas Wirth,陈述了这个原则:编程语言应该通过拥有少量能够协同工作并可以任意组合在一起的特性来达到高度的强大性,而不是拥有大量特性。这样你只需要学习相对较少的东西,然后真正的知识来自于你学习如何组合它们来实现越来越大的程序。
编程语言领域有着悠久的历史。但在 1950 年代,第一批编程语言设计师聚集在一起,构建了第一个标准化语言,称为 ALGOL。在 1956 年有一次会议,很少有人知道,但现代编程语言的所有主要基础都是在那里决定的,C 语言家族继承了这些。所以我们很大程度上生活在一个由他们定义的世界中。值得庆幸的是,他们做对了很多事情。他们定义了函数应该如何工作,变量应该如何工作,以及递归应该如何工作。谢天谢地他们做对了这些。但他们也做错了一些事情。Verse 正试图修复那些,这就是函数式逻辑部分。
函数式逻辑语言有趣的地方在于,在老式语言中,一个表达式产生一个值。在函数式逻辑语言中,一个表达式可以产生零个、一个或多个值。如果它产生零个值,我们可能说它失败了 (fails)。如果它产生一个值,我们说它成功了 (succeeds)。如果它产生多个值,那么它有点像迭代地提供了一组你可以遍历的值。
所以今天的编程语言中有很多特性是以一种特别的方式定义的,没有真正考虑这种零、一或多个值的方式。这就是函数式逻辑语言解决的问题。最基本的例子是编程语言中的 if 语句:如果某个条件成立,则做这件事,否则做那件事。在今天的语言中,这是通过布尔 (boolean) 类型的变量或产生布尔值的表达式来完成的。我们有值为真 (true) 或假 (false) 的布尔变量,我们有计算结果为布尔值的表达式。所以你可以将一个条件表示为一堆这些特性的组合。但你已经丢失了在进行布尔表达式求值时所做的任何计算。
在函数式逻辑语言中,你的条件不会那样做。它要么成功并产生一个值,要么失败。如果成功,它进入 then 分支:你的操作成功了,现在你运行这一批代码。如果你的表达式失败了,那么你进入 else 分支。但这令人兴奋的地方在于,你的成功或失败的表达式可以产生值,并绑定变量,然后这些变量可以被 then 分支访问。所以你可以编写一个条件句,只有在一堆变量已成功绑定到变量时,你才能进入条件的内部,即 then 部分。所以它让你能够测试某些条件是否成立,然后使用那些测试的结果。这给了你更高层次的可靠性。
然后是 for 循环。在传统语言中,它只是一堆命令式代码编织在一起,迭代地产生一堆值。在 for 循环中做复杂的事情相当笨拙。所以你经常最终得到这些越来越复杂的、为了绕过这个限制而构建的结构,比如迭代器 (iterators) 和其他东西。函数式逻辑语言的想法是,你的 for 循环可以直接产生多个值。如果它产生零个值,你迭代零次。如果它产生一堆值,你就将那些作为你的迭代遍历,而不是拥有一堆嵌套循环。你可以在一个条件或 for 循环中编写任意看起来像 SQL 查询的东西,绑定一堆变量,做一堆测试,产生一系列结果,然后按某种顺序迭代它们。然后你可以处理所有这些并产生一个结果。所以你有点像获得了 SQL 查询的能力——对数据结构进行大型复杂查询——在一个更简单的语言中,你的代码只是执行简单的迭代操作。这有点像以一种更统一的方式,给了你数据库和常规编程两者的精华。
这种力量在于,现在用户可以编写不仅产生一个值的函数,还可以编写可能失败的函数。所以你可以编写一个回答问题的函数,答案可以是“是,我的值是这个”,或者“否”。你可以将这些组合成任意查询。
有趣的是,这不是 C++ 的工作方式。所以当我们的 Epic 程序员从 C++ 转过来,编写他们的第一个 Verse 代码时,他们试图用 Verse 的风格编写 C++ 代码,结果实际上最终变成了比好的 C++ 或好的 Verse 更 convoluted (晦涩难懂) 的代码。当我们看到… 但几个月后,他们掌握了要领,他们编写的代码比以前更紧凑、更简洁。而对于那些从未编程过、但在《堡垒之夜》的背景下第一次学习编程的用户来说,这真的很有趣。你会看到这些用户正在学习这种… 它变成了他们的直觉。他们就假设编程是这样工作的。他们编写的 for 循环和条件比我们内部经常编写的要先进和有趣得多,因为他们有点领悟了核心概念。
Lex Fridman: 是的,我的意思是… 你说了很多非常有趣的东西。首先,有很多人… 很多人第一次用 Verse 学习编程,这是一种非常不同的看待编程的方式,并且在某种深层意义上,正如你所说,是一种非常直观的学习编程的方式。但是关于这是一种逻辑语言,有很多特性。其中之一… 嗯,我们也许也可以谈谈合流性 (confluence),但还有正确性 (correctness)。所以能够证明代码的正确性,基本上… 更容易编写无 bug 的代码。你能谈谈这个,以及当你在构建元宇宙时,这一点的重要性吗?
Tim Sweeney: 是的。所以元宇宙的挑战首先在于,它是一个巨大的代码库,随着时间的推移不断演变,并由许多作者编写。所以你可能会看到每秒钟某个地方都有一个新模块被更新。你期望在这个永不关闭的实时、持续运行的模拟中,一切都能实时就地升级。
所以其中一个关键组成部分是能够… 发布一个你已经发布过的东西的更新,并确保它与你已经发布的那个版本向后兼容。这本质上是一个类型检查 (type-checking) 问题:检查你的新接口是否与旧接口向后兼容。这归结为语言的类型系统。
多年来,关于类型系统有很多非常有趣的研究,其中大部分很不幸从未进入 C++ 编程语言。但你看到那个领域的几个分支。Java 和 C# 在早期做的一件非常有趣的事情,然后后来放弃了并没有费心更新,是定义了一套非常严格的规则:如果你今天发布了一个带有一组类型的模块,那么你未来对该模块可以做哪些更改,而不会破坏向后兼容性?这是一个类型检查的问题。比如说,你有一个函数承诺返回某个整数 (integer)。未来你可以说它返回某个自然数 (natural number),因为每个自然数都是整数,所以这是一个向后兼容的更改。但你不能说它返回一个有理数 (rational number),因为一些有理数不是整数。所以… 系统应该拒绝那种更改。
但关于类型检查,远为有趣的事情是认识到——这实际上是在 1930 年代认识到的——如果你以一种非常特殊的方式设计编程语言的类型系统,那么它不仅可以用来表达变量的类型——这是每个类型系统做的传统事情,比如“变量 X 是整数类型”——而且,如果你以某种方式设计类型系统,那么你的类型可以表达定理 (theorems),比如数学定理。勾股定理 ($a^2 + b^2 = c^2$) 是一个很酷的定理。但你在程序中可能有的一个定理是:“这个函数接受一个整数数组,并返回一个相同整数的数组,但结果是排序的。”如果你将此表达为一个定理,并且你遵循这个类型理论系统,那么你实际上可以要求任何编写该排序函数的人证明它确实对其结果进行了排序。
所以你有类型即定理 (types as theorems),以某种方式构造的值可以是那些定理的证明 (proofs)。如今在数学文献中,你看到越来越多的定理正在被机械地证明。数学家正在以一种可以被计算机验证为正确证明的方式来证明定理。在古代数学中,人们会写下… 像语言。如果你看看欧几里得的所有定理,那只是语言,只是用古希腊语写下证明的步骤,以说服读者该事物是真的。从 1930 年代开始,数学家转向了严格的形式化证明,其中有一系列可以被机械验证的步骤,证明事物。当数学家说他们对一个定理进行了计算机证明时,他们真正的意思是他们用一种证明语言(如 Lean 是一个定理证明器,Coq 是一个定理证明器,还有其他几个)编写了程序,意味着他们用那种语言编写了一个计算机已经检查过的机械证明,所以… 不可能撒谎。如果你说你证明了一件事,并且计算机验证了它,那么它肯定是正确的。
这是数学证明语言的一个特性,但它也是一个正在逐渐进入编程语言的想法。我们对 Verse 的目标是成为第一个完全采用那种方法和技术的主流编程语言。并且不仅采用它,而且以一种真正用户友好的方式采用它,这样你就不必非得那样做。
这个想法是,你希望变量类型中逐渐包含更多信息。你希望编程语言具有的属性是,如果你的编译器接受了你的程序,并且没有发出哔哔声告诉你出错了,那么你的程序就应该能工作。现在,人类可以通过各种方式犯错误,所以永远无法达到那个理想状态。但我们可以通过拥有越来越多能够让编译器捕捉更多人类编码错误并告诉用户哪里出错了的语言特性,来越来越接近它。
这在元宇宙中变得极其重要。修复一个已经进入运行时、到达用户手中的 bug 的成本,比修复一个你刚在自己运行代码时观察到的 bug 的成本高出数百倍。当它在你的计算机上运行时,你只需修复一行代码,你的 bug 就修复了。当你必须实时修复它时,你必须发布一个补丁,你必须发布补丁说明,你必须测试补丁,你必须检查所有其他可能被引入的 bug,一切都变得极其昂贵。
所以… Verse 程序和方法的真正目标是在编译时捕捉所有这些错误,并使元宇宙成为一个非常可靠的地方。
Lex Fridman: 你是否看到一个世界,比如在编译时,你可以证明程序在某种意义上的正确性?
Tim Sweeney: 证明事情随着规模变大,组合难度会越来越大。所以这个领域的真正重要之处在于… 你应该能够逐步采用这些能力,并在你真正需要的地方应用它。比如,如果你在编写像密码学算法之类的东西,那是一个进行证明的好地方。如果你在编写一个将被整个生态系统使用的数据解压缩器,那么证明它不会内存溢出实际上非常重要。今天安全漏洞发生的很多原因在于… 因为在不同的语言中,编译器可能捕捉到或在 C 语言中捕捉不到,因为它就是没有这个特性。但是,是的,我们不应该认为这很可怕。
每个使用像 C# 或 Java 这样的类型语言工作的人,一直都在证明定理。如果你有一个整数类型的变量,并且你给它赋了一个值,你就向编译器证明了那个值是一个整数,否则它就会拒绝它。所以,你知道,随着我们添加越来越多高级的证明,我们将从我们的系统中获得组合属性,它们… 易于使用,而且… 人们更愿意使用。
我们可能会思考一个未来,我们有 AI 帮助我们编写某些类型的代码。AI 的大问题在于,你让它做某事,让它编写一段做某事的代码片段,它可能会给你一个完全有效的、可以编译的代码片段,但它做的事情是错误的。如果我们有语言,你可以说:“编写一个对这个数组进行排序的函数,并证明它做到了。”它实际上可以编写证明。而且… 如果编译器没有对此发出哔哔声,你就可以相信它确实对数组进行了排序。否则你可以回到 AI 那里说:“嗯,那没用。”但是,你知道,达到我们知道我们的程序做了我们说它们会做或认为它们会做的事情的程度,是一件非常重要的事情。
Lex Fridman: 顺便说一句,我应该提一下,你… 你给我发了一张关于柯里-霍华德同构 (Curry-Howard correspondence) 的笔记,我深入研究了一下,那是一个全新的引人入胜的领域,它展示了程序和证明之间的数学关系。
Tim Sweeney: 是的,这是 1930 年代的一个结果。它是计算机科学最重要的结果之一,几乎没人知道。是的,但他们对类型系统和 1930 年代编程的表述进行了严格的分解,并确定了… 你在数理逻辑中能证明的一切,如果类型系统具有某些特性,你都可以在其中证明。
而且… 如果你分解什么是证明?嗯,证明整数存在的证明是某个整数,比如 5 是整数存在的证明。所以当你有一个… 像 var x: int 这样的东西,然后你说 x = 5,嗯,你向编译器证明了 5 是一个整数。你知道,这已成为第二天性。但你可以证明更高级的事情。
如果你想证明… 一对事物是真的,比如定理 A 为真且定理 B 为真,那么你需要提供一对值,一个证明定理 A,一个证明定理 B。这是证明的合取律 (conjunctive law)。还有一个析取律 (disjunctive law)。然后还有一个蕴涵律 (implication law)。
事实证明,这确实… 被函数满足了。当你在编程语言中编写一个函数时,你说的是:“如果你给我这个东西,我会给你那个东西。”如果你给我一个某种类型的参数,那么我会给你一个其他类型的结果。如果你写… 通过编写那个函数,你证明了给定其中一个东西,你可以产生另一个东西。这是一个蕴涵的证明。仅用大约七条定律,你就可以在类型系统中构建所有的数理逻辑。
对于编程语言来说,一件没有得到足够重视的重要事情是,编程语言的某些方面只是主观的,它们只是编程语言设计师的策划。你知道,Guido van Rossum 决定 Python 应该以某种方式支持缩进。只要你处理的是像人类符号和命名这样的事情,总会有那个主观层。但编程语言的其他部分不是主观的,而应该是基础的。当你审视类型系统时,有一种做类型系统的方式可以给你数学证明,而所有其他不给你数学证明的类型系统方式都只是更差,最终应该被拒绝。
所以我认为计算的任务之一是识别:我们过去实际上做对了什么,做错了什么?对于我们做错的一切,实际上要回去修复它。否则我们只会不断积累如此多的废物 (croft),以至于我们的系统最终会被自身的复杂性压垮。你知道,过去一年里,软件和服务中出现了大量可怕漏洞的公告。是的,事实证明,像某个民族国家后门入侵了许多电信公司的… 用于窃听的监控系统。那里存在巨大的问题。但你知道,最终当你把它分解开来,很可能是因为某个 C 程序中的缓冲区溢出 (buffer overrun)。这些… 关于编程语言的决定具有长期影响。
Lex Fridman: 令人着迷的是,在构建这些亿万人使用的系统时,你正在重新思考… 你实际上如何从第一性原理构建它。所以应该提到… Verse 的主要设计目标是:它应该足够简单,让初学者能够学会;足够通用,可以编写任何类型的代码和数据;在团队环境中构建、迭代和发布项目的上下文中具有生产力;静态验证,以在编译时捕捉尽可能多的运行时问题类别,正如我们谈到的;对于实时开放世界多人游戏具有高性能——我们并没有真正讨论性能,也许我稍后可以问你关于那个——完整性,使得语言的每个特性都支持程序员对该特性的抽象;永恒性,为今天的需求和可预见的未来需求而构建。
是的。然后还有一些我们谈到的设计目标:强类型 (strongly typed);多范式 (multi-paradigm),以利用函数式编程、面向对象编程、命令式编程的精华;尽可能确定性 (deterministic),你知道,如果你一遍又一遍地运行它,它以完全相同的方式运行;如你所谈到的,可失败表达式 (failable expressions) 非常吸引人。这里有很多很酷的特性… 推测执行 (speculative execution)、并发性 (concurrency)。也许你能谈谈并发性?Verse 有什么特性允许它达到你需要的并发规模?
Tim Sweeney: 这是我们这一代正在努力解决的最大的技术问题。那就是驯服并发性。以便任何普通程序员只需编写普通代码就能实现它。这很难。在单线程计算机上编程已经够难了,但它是完全可预测的。如果你有一种确定性的语言,并且你一遍又一遍地运行相同的代码,它总是会做完全相同的事情,对于可能发生什么没有任何不可预测性,对吧?你以某种顺序读取和写入变量,你总是会看到它行为相同。
问题在于,当你引入多个线程或数据中心中的多个节点共同处理一个问题时,它们各自都想读取和写入不同的数据片段,并在进行过程中改变世界的状态。至今,现实世界程序中几乎所有的并发性都是手动实现的。程序员正在非常非常仔细地编写可能在多个线程中运行的代码,以便他们… 每个线程之间进行协商,以一种能够给他们可预测结果的方式访问数据。这… 极其困难。
困难到我们在五代虚幻引擎中,每一代都决定:我们不打算尝试将我们所有的游戏玩法代码手动扩展到多个线程。这… 极有可能出错,不仅对我们自己,而且对每一个授权虚幻引擎并试图用它构建游戏的合作伙伴公司来说也是如此。那里就是一个巨大的“坑”(foot gun)。
有多种并发解决方案,它们都相当不理想。一种尝试的解决方案是:“哦,根本别尝试解决这个问题。让我们把程序分解成微服务 (microservices)。”几乎所有大规模在线网站,如 Amazon.com,都使用数百个微服务工作,不同的服务器通过互相发送消息来进行协商。通过程序员非常仔细地编写这些东西,他们最终能够可靠地处理你的订单而不会搞砸。
但是,你知道,这对于元宇宙来说完全不可扩展,那里有数百万程序员,他们大多不会是计算机科学家,他们大多会是业余爱好者、发烧友和第一次编程、为了好玩而做东西的人。这对他们来说永远行不通,因为他们永远无法预见到他们在并行运行的不同计算之间的所有不同依赖关系。
但是… 事实证明,在 1980 年代完成了一些惊人的基础工作,并通过一篇关于 Haskell 并发性的论文——《可组合内存事务》(Composable Memory Transactions) 是论文的名称——变得非常真实。它描述了一个用于… 程序事务性更新 (transactional updates) 的系统。事务 (transaction) 的想法是… 事务是一个代码块,它对内存执行一系列操作,可能读取,可能写入,它可能处理一个订单,它可能接受一个订单或拒绝一个订单(如果…),它可能将钱从一个银行账户转移到另一个银行账户,它可能会做出条件性决定,比如:“哦,你要求从你的账户转 100 美元到这个家伙的账户。我们要看看你是否有 100 美元。如果你没有,我们会拒绝它。如果你有 100 美元,我们会从你的账户中取出 100 美元,并将其添加到另一个家伙的账户中。”
如果没有事务,如果每个人都只是随机地增减彼此的银行余额,那么你可能会遇到某人读取银行余额,减去 100,然后写回去,但在此期间,其他人同时写入了其他东西。所以如果你没有一种方法来确保这些都以特定顺序运行,你可能会得到不一致的银行余额。
所以事务的想法是,这是一种将整个程序划分为更新的方式——你知道,独立的更新——它们执行任意数量的计算,但必须… 以单线程方式运行。在游戏引擎的情况下,那是游戏对象更新。当你玩《堡垒之夜》时,你看到游戏对象——其他每个玩家都是一个游戏对象,每个敌人都是游戏对象,你看到的每个火箭、投射物、汽车和移动、交互的东西,只要它不是世界固定的静态部分,它就是一个独立的游戏对象。这些对象中的每一个都以… 每帧一次的速率更新,每秒 60 帧。所以在《堡垒之夜》大逃杀游戏过程中,每帧有数万个对象更新发生,有 100 个玩家。一个拥有数十亿玩家的模拟,其数量将远超于此。
Lex Fridman: 所以现在那是单线程完成的。
Tim Sweeney: 是的,那是在每个游戏会话中单线程完成的。这就是为什么《堡垒之夜》有 100 个玩家的限制。如果你绝对榨干一台服务器,也许今天你可以把它提高到 140 左右,但你知道,它不会达到数千、数百万或数十亿。
所以我们需要一种技术来神奇地、自动地将我们的代码扩展到那个规模。事务就是这个想法。想法是,事务是一个运行其全部内容的代码粒度。这个事务性内存 (transactional memory) 概念的想法是,我们将让程序员编写完全普通的、以完全普通的方式读取和写入变量的代码。他们完全不必担心并发性。然后系统… 就像今天,程序… 计算机只是运行你的程序。在编程语言层面上没有任何推测执行 (speculation)。
事务的想法是,因为我们有一堆我们需要知道的操作,我们应用… 我们并发地应用一大组它们。但是,与其让每一个都从所有人共享的全局内存中读取和写入——在这种情况下,它们可能会读取和写入,并相互争夺相同的数据,并且可能对其进行矛盾的操作——我们将把我们所有的写入操作都追踪在本地。我们不会将数据更改写入全局内存。我们会将它记录在一个仅用于那一个事务的缓冲区中。所以它对那段代码来说,看起来完全就像它正在全局系统上运行,影响着全局游戏状态。但它将被隔离到仅那一个事务,并被搁置起来,缓冲起来供以后考虑。
我们将并发运行数十、数百或数千个更新。我们将看看哪些存在读写冲突。因为如果两个事务没有读取和写入任何相同的数据,那么你可以按任意顺序运行它们,或者同时运行,结果不会改变。
Lex Fridman: 是的,顺序无关紧要。
Tim Sweeney: 这真是…
Lex Fridman: 想象这种系统,任意并发地运行… 数百万个游戏对象的更新,并行进行。那是… 那是实现我们谈论的事情——即数千万人同处一个场景——的关键。
Tim Sweeney: 是的,完全正确。关键在于你推测性地 (speculatively) 运行这些更新,并且在确定它们没有冲突之前,不将其更改提交到内存。所以你可能更新 10,000 个对象,你可能发现其中 9,000 个没有冲突。所以你将那 9,000 个对象的更新应用到内存中。它们本可以按任意顺序运行,结果不会改变。现在还剩下 1,000 个对象。现在你必须再次运行那些,尝试它们,也许以不同的方式交错,让它们最终提交到内存。在此期间,你只需丢弃它们所有的计算结果,稍后重做。
通过这样做,我们正在将这个问题从一个需要程序员处理的编程问题,转变为一个需要我们语言设计者处理的语言问题。我们将大量本会施加给一百万人的痛苦,转移到了少数必须实际实现这一切的人身上。
Lex Fridman: 太棒了。这真的不可思议。那么… Verse 的现状如何?我猜你概述的是,如果——希望如此——它成功了,这将是虚幻引擎 6 的重要组成部分。那么时间线是怎样的?我们今天处于什么位置?
Tim Sweeney: 嗯,有很多事情在并行进行。Verse 的关键在于,我们一直在具体化… 我们认为是语言的最终版本,包含我们想要的所有特性。而我们一直在发布… 随着时间的推移,语言的更适度版本。在过去一年半里,我们已经发布了几十个更新。想法是,我们发布的版本随着时间的推移获得越来越多的特性,但每一个都保持与旧版本的向后兼容性,并且每一个都在不断改进,朝着最终版本前进。
我们一直在完全在虚幻编辑器 UEFN (Unreal Editor for Fortnite) 的世界里进行这个实验。目前,我们想在仅元宇宙使用场景下,与《堡垒之夜》创作者一起测试和迭代这个,然后再将其提供给我们所有使用虚幻引擎进行所有项目的合作伙伴。想法是迭代地改进它并构建它。因为现在 UEFN 的编程功能相对较少,它需要更多功能。我们添加的每一项都让《堡垒之夜》创作者的世界变得更好。我们正在… 今年全年,每隔几个月就会添加主要的、主要的新 API。
而构建独立游戏的虚幻引擎授权用户,已经可以通过 C++ 访问完整的引擎。他们对 API 有着巨大无比的期望。所以我们无法在构建出他们未来构建游戏玩法所需的所有基本特性之前,将这个发布给他们。
所以… 我们有这两个不同的进展触角。有面向游戏开发者的虚幻引擎 5,还有面向《堡垒之夜》社区的虚幻引擎 5。还有一些开发只在其中一个领域进行,并未应用于两者。比如,并非所有虚幻引擎 5 的特性都实际在《堡垒之夜》中可用,因为其中一些我们还没有弄清楚,或者还没有达到能够以平台无关的方式将它们部署到所有七个平台的程度。
所以所有这些不同开发线索汇集的地方就是虚幻引擎 6。它还需要几年时间。我们没有确切的时间表。但是… 我们可能会在未来两到三年内看到它的预览版本。我们正在朝着它持续取得进展。
Lex Fridman: 所以这非常好。有一个你不断致力于和思考的语言的最终版本。然后有… 语言的已发布版本,被大量人使用,但仍然在虚幻编辑器 UEFN 的受限环境中。所以对于《堡垒之夜》游戏。然后等待着更通用的虚幻编辑器、虚幻引擎,等待着在《堡垒之夜》背景下学到的经验教训被整合到为所有类型的游戏(包括《堡垒之夜》)创建模拟世界的更通用背景中。这设置非常好。因为你同时… 它是《堡垒之夜》中语言的试验场,并且你关注着最终的东西会是什么样子。也需要… 来交付我们提到的所有特性。
Tim Sweeney: 太棒了。你知道,UE6 的目标是将两个世界的精华结合起来:为《堡垒之夜》社区和授权用户提供更容易的游戏玩法编程;更强的可扩展性,适应各种大规模模拟;更高的易用性,意味着将更容易雇佣熟悉和有经验的程序员;但也要确保每个游戏开发者都拥有完整的部署能力,这样他们就可以构建一次游戏,然后随处发布。
这个的最终版本使得游戏开发者能够构建任何类型的游戏,或者… 同时将它发布到《堡垒之夜》中,作为一个《堡垒之夜》岛屿,玩家可以进入,带上他们的《堡垒之夜》物品和外观,并正确地互操作;或者作为独立游戏发布;或者两者兼有。如果他们作为独立游戏发布,他们也不应该错过… 开放经济,因为在这个时间框架内,我们将向所有类型的第三方开发者开放《堡垒之夜》道具经济,最好是通过一个标准机构,但也可能有多个阶段。这样… 如果你选择发布独立游戏,你仍然可以选择… 让《堡垒之夜》物品在你的游戏中工作,让你的游戏物品在《堡垒之夜》中工作,让你的道具经济与整体元宇宙经济整合。并解决… 马修·鲍尔 (Matthew Ball) 在过去几年里一直在记录的游戏行业的真正核心问题。
XVI. 对独立游戏开发者的建议 (再次提及)
Lex Fridman: 是的。顺便说一句,马修·鲍尔一直非常有帮助,他是一位… 他写了一本非常棒的书,我推荐大家去看看。有一个更新版本。让我问一下,因为… 再次,有很多独立开发者在听这个。我看到… 有很多单人开发者在那里使用虚幻引擎,他们基本上是单人创作视频游戏。我看到… 非常推荐,它很棒。《查尔斯小火车》(Choo-Choo Charles) 是一款很棒的视频游戏。Gavin Eisenbeisz,他… 很棒的人。他单人创作了这款我认为相当受欢迎的游戏。我相信他说他用了可视化… 他甚至没用 C++,他用了可视化脚本,他用了蓝图 (Blueprints) 来创作。
Tim Sweeney: 是的。
Lex Fridman: 好的。所以… 我的意思是,所有这些都说明,人们应该去看看,支持独立开发者,支持 Gavin,支持所有那样的人。我认为说这个很重要,因为那里有如此多的天才和艺术才能,我们想要支持那些疯狂的梦想家。无论如何… 所有这些都说明,你认为 Epic 有哪些方式可以支持像那样的独立开发者?像 Gavin 那样的人?给他们超能力来创作游戏,让他们至少能赚到足够的钱,可以继续他们的艺术创作。
Tim Sweeney: 是的,那真的关乎生产力。因为要想让一款游戏成功,你必须拥有一款出色的游戏。如果你瞄准… 如果你正在构建一种以前从未有人构建过的游戏类型,你也许能够构建一个比你在一个有着巨大期望的大型类型中竞争时更小、更简单的游戏。但这都关乎让某人能够在他们可以投入的合理时间内完成它,并能够完成、发布和成功维护它。
工具是其中很大一部分。让工具尽可能高效。但还有很多其他方面。比如,拥有一个内容市场是一件大事。你知道,现成的… 成堆的内容,一些免费,一些付费,由其他创作者构建,可以使一个小型独立团队能够… 构建一个大型游戏,并且能够专注于游戏的独特内容,能够编写他们的游戏玩法,并按他们想要的方式布局他们的环境,而不必构建每一棵树和每一块岩石。是的,因为有人已经构建了一个,而且他们的可能非常适合你的游戏。
随着时间的推移,会有越来越多… 你知道,也有很多独立开发者以内容创作者的身份生存。他们会在 Fab Marketplace 或 Unity Asset Store 上发布内容,并以此为生。但劳动分工 (specialization of labor) 是一件非常有价值的事情。早期,几乎是一个人构建一个游戏。这就是 1980 年代很多游戏的构建方式。随着时间的推移,你有了分工,艺术家变得专业化,然后是程序员,然后是游戏玩法程序员和引擎程序员。现在你有了技术美术师 (technical artists),你有… 数十种不同的专业共同贡献于一个 AAA 级 3D 游戏。
我们越能将那些内容片段模块化,使得你可以拿到现成的而不是必须自己构建,或者让… 引擎为你合成它,我们就越能… 使创作者能够快速、成功地创造东西。
XVI. 反垄断斗争:以苹果为例 (再次提及)
Lex Fridman: 所以我们应该谈谈… 事实是,在许多其他事情中,你一直在… 哲学上和精神上与垄断作斗争。总的来说… 其中之一是苹果… 市场,它向开发者收取 30% 的费用。你能谈谈… 这个想法吗?你认为苹果和其他公司,比如 Valve,不应该收取那种收入分成。
Tim Sweeney: 当然。让我们从一个非常基本的计算原理开始。我拥有的第一台电脑是 Apple II Plus。由史蒂夫·沃兹尼亚克 (Steve Wozniak) 设计,由苹果公司营销。然后是一台 IBM PC。在那些日子里,任何人都可以编写代码。你的电脑开机时,字面上就是一个编程语言提示符在你面前。你实际上需要做一些工作才能不编写程序,而是运行别人的程序。
那具有难以置信的赋权意义。任何人都可以编写程序,任何人都可以把它放在软盘上,任何人都可以与朋友分享,任何人都可以复制它,把它放到商店里,他们可以出售它,可以围绕它建立业务。他们完全能够… 无需寻求任何大型科技公司的许可,做任何他们想做的事情。即使是 IBM,请记住,IBM 当时是地球上占主导地位的计算机公司,他们发布 IBM PC 时也是一个开放平台。
所以,这真的在我脑海中根深蒂固:那是一个神奇而美好的时代,是全世界技术领域无与伦比的经济进步时期。随着时间的推移,大公司意识到他们可以关闭并阻止软件制造商自行发布软件,阻止软件制造商直接与客户做生意。我一直认为这种做法是极其滥用的。
因为当你购买一台电脑或一部手机时,你花了真金白银,是你自己的钱花在那部手机上。现在你拥有了那部手机。绝对没有任何理由苹果应该阻止你… 直接从其他开发者那里安装应用程序,如果你想的话,去他们的网页,或者编写你自己的应用程序,而无需他们的许可。并自己运行它们,无需获得开发者账户,无需通过他们的官僚机构。
没有任何理由任何获得应用程序的消费者不应该能够直接与该消费者(应为应用程序)的开发者做生意。你已经购买了那部手机,为什么苹果要对你进行的所有商业活动额外征收 30% 的垃圾费?为什么他们有选择地对某些事情征收,而对其他事情不征收?
我一直认为这是深度滥用的。它关闭了曾经推动应用程序和软件经济发展的竞争引擎。在 Windows 和互联网上,它仍然是一个充满活力的竞争引擎,但在移动应用程序上不再是了。因为这些商店出现了,它们没有为用户提供任何有用的价值。是的,它们是一个搜索软件的功能,但没有理由其他公司不能构建一个更好的。我敢打赌,如果你有 Steam,或者如果你让 Valve 为 iPhone 构建 Steam,我敢打赌 iPhone 版 Steam 会比 iOS App Store 好得多,很多人会使用它。苹果将被迫在竞争中构建一个更好的 App Store,每个人都会因此改进他们的产品。
但是,你知道,苹果和谷歌关闭了驱动软件经济的竞争引擎,这对一切都有着巨大的影响。其中之一是重塑了移动应用的性质,使其非常冒犯游戏玩家的感受。如果你去主机平台,你在商店… 店面上列出的最好的主机游戏… 你看到的被评论的最好的主机游戏都是很棒的游戏,真正具有很多创意价值。那些卖得最好的游戏,其性价比极高,是大量工作的产物。你在 iPhone 上看不到这个。iPhone 上的顶级应用,顶级游戏,几乎在所有时候都是这些… 极其贪婪、高货币化、你知道,“鲸鱼”游戏 (whale games),充斥着付费获胜和开箱子 (loot box) 的做法。你知道,它们有一种… 合法化的赌博形式。你知道,这些游戏不是由乐趣驱动的,而是由操纵玩家以达到贪婪目的驱动的。
对于基于乐趣的游戏来说,在那里取得成功非常困难。你知道,运营这些在线游戏的成本现在非常高。所以你有一个基于乐趣的游戏,它不严重依赖开箱子。你知道,你必须支付你收入的 30% 给苹果,仅仅是为了获得平台的访问权。而 30% 远超… 远超大多数游戏公司目前的利润。所以如果费用超过了一个自然公司的利润,那么他们只能通过提高价格来维持业务。所以这些 30% 的费用正在提高所有数字商品的价格。它就像经济中的一种通胀力量。
那只是… 第一个直接税收。但随后,为了触达用户,当用户搜索… 比如,在苹果屏蔽 iOS 上的《堡垒之夜》之前,当用户搜索《堡垒之夜》时,第一个结果总是一些竞争对手的游戏。这完全是反用户的。你在 Steam 上搜索一个游戏,如果那个游戏在 Steam 上,它总是第一个结果。因为 Steam 没有被广告所玷污。苹果则有。你知道,他们这样做是为了能赚取甚至超过 30%。所以如果你想成为你游戏搜索结果的第一名,你可能要支付更像 45%。如果你想在社交媒体上触达用户,你还要再支付 20%。所以字面上,你游戏收入的大约 70% 只是进入了获取用户并将他们带入你游戏的垃圾费用中。而剩下的钱只够资助这些… 你知道,带有相当滥用性做法的游戏,对于普通游戏玩家来说,它们在很大程度上看起来不像游戏。
现在有一些例外,iOS 上有一些很棒的游戏,有一些做法良好的游戏。但是,你知道,这个引擎真的被腐蚀了,而竞争本可以修复这一点。如果你在 iOS 上释放大量相互竞争的商店,那么你就会有很多很棒的选择,你会得到更好的交易和更好的价格。
Lex Fridman: 我和马修快速聊了一下,他让我问你这个问题:为什么没有更多公司像 Epic 一样公开、彻底地与苹果抗争?是什么让你… 是什么让 Epic 在这方面如此独特?我应该说,我认为你说的每一句话我都完全同意。我认为苹果正在做的事情就是错误的。我认为苹果在许多维度上是一家令人难以置信的公司,他们为世界带来了如此多的好处。在这方面,我就是认为他们做的是彻头彻尾的错误。他们没有提供 30% 的价值。即使他们提供了,垄断、没有竞争的中心化控制也是错误的。无论如何… 为什么你无所畏惧地在这方面与苹果抗争,而其他公司似乎不愿意站出来?
Tim Sweeney: 所有公司都害怕苹果。因为苹果可以摧毁他们的业务。Epic 在《堡垒之夜》方面处于独特的地位。首先,在我们开始与苹果斗争时,拥有… 当时世界上最大的游戏。其次,我们大部分用户在 PC 和主机上玩,这意味着如果我们在一场斗争中失去了对 iOS 的访问权,我们仍然能够生存。这使得… Spotify、Facebook,你说出前 10 大移动应用,我认为没有一个能在没有苹果的情况下生存。字面上,如果苹果阻止访问它们,它们的业务就会被摧毁。
苹果对开发者非常清楚地表明,他们愿意剥夺所有用户访问任何应用程序的权利,如果他们陷入争斗。他们已经… 如果你看看他们如何对待 Epic,他们不仅仅是在法律上 maneuvering(运用策略),意图赢得对我们的法庭案件,他们也在向全世界所有开发者传递一个信息:“如果你与我们作对,我们将摧毁你的业务,或者我们会尽力而为。”
只有极少数直言不讳的开发者愿意发声,而苹果实际上在他们没有违反任何苹果政策时,克制了摧毁他们业务的行为。这需要一定的纪律,我认为这也是苹果的一种计算,即他们无法承受被视为“公司杀手”——“如果你批评我们,我们就摧毁你的公司”。
但是,是的,苹果拥有的另一件他们可以并且会随时对每个开发者使用的武器是软实力 (soft power)。当他们收取 30%,而广告又如此昂贵时,苹果的软实力——比如更快地批准你的更新,或者将你所有的更新拖慢几周——也可能对你成功竞争的能力产生巨大影响。苹果在与开发者玩猫鼠游戏方面有着非常悠久的历史。就像一个开发者… 不在苹果的“好名单”上,他们就会拖慢更新。他们一直在拖慢几家主要科技公司的更新,有时是几周,有时是几个月,所有这些都在雷达之下进行,因为每个人都害怕公开挑战他们。
所以苹果运用软实力可以使一家公司的经济状况变得更糟,足以阻止几乎任何上市公司。而且,你知道,Epic 参与这场斗争是因为我坚信,像元宇宙这样的东西——只有像十亿以上用户… 实时 3D 社交生态系统,并且发展到包含潜在所有或大多数主要开发者的所有主要游戏,通过开放经济联系在一起,他们在其中作为同行参与,他们都竞争为用户提供最好的交易,他们成长并… 直接与客户做生意——只有在苹果和谷歌的守门人垄断被解除的情况下才能存在。
这不仅仅是 30% 的费用。30% 的费用在经济上是毁灭性的,但他们还施加了其他层面的控制。苹果阻止 iOS 上的所有 Web 浏览器实现优于苹果自身的 Web 标准。所以苹果极大地限制了… 数据存储能力,以及… iOS Web API 上的 3D 图形能力——你可以从在 Web 浏览器中运行的 Web 应用程序访问的 API。你知道,这是为了逐步削弱那些应用程序,以确保它们绝不可能与原生应用程序竞争。通过剥夺 Web 应用程序的那些特性,他们阻止了 Web 应用程序与原生应用程序竞争。
嗯,你知道,苹果如果像对待 Web 那样对待元宇宙,他们会说:“你只能使用苹果的元宇宙引擎。虚幻引擎是不允许的。”然后他们可以对元宇宙施加所有他们自己的限制,以迫使所有商业活动通过苹果进行,或者迫使它变得如此没有竞争力和糟糕,以至于无法竞争。
你知道,他们拥有这一整套反竞争技术,用来让其他应用程序开发者处于不利地位。比如,“只有苹果可以构建某些类型的应用程序”,或者“只有苹果可以集成某些特性”。即使在欧洲,DMA 法律要求苹果允许竞争商店存在,他们也说:“商店只能是商店。你不能把商店构建到 Facebook 中。你不能把社交网络构建到商店中。商店必须仅仅是商店。”因为一个不仅仅是商店的商店可能能够更有效地与我们竞争。
这只是一个巨大的… 用苏联的术语来说,这是一个纵深防御 (defense in depth) 策略,他们构建了一系列巨大的障碍,每一个都对任何竞争尝试都是致命的。这样即使一个障碍被克服,其他的仍然存在,并扼杀整个计划。这正在欧洲上演,苹果允许我们推出 Epic Games Store,但使其变得如此困难和缺乏竞争力,无论是对 Epic 还是对我们想与之做生意的客户来说,以至于… 在欧盟开始真正执行 DMA 法律并对苹果施加严厉、严肃的惩罚以强制合规之前,它没有任何成功的机会。
Lex Fridman: 我认为应该再说一遍,我认为他们这样做是错误的。我希望有公众压力和政府压力让他们开放平台。我相信作为一个… 热爱苹果的人,我相信这对苹果也是有好处的。公司内部有一种想要封闭、控制和扼杀竞争的自然倾向。但是,苹果充满了杰出的工程师。开放它,然后去赢。这将创造正确的竞争激励,使 App Store 变得更好,使… 你知道… 因为他们擅长创造伟大的界面。但竞争会磨砺剑锋。我的意思是,这只会让一切… 一切变得更好。所以我确实希望有很多公众压力,我深切感谢你以这种方式发声,施加那种压力,并让人们知道:指出这是错误的,没关系。
Tim Sweeney: 谢谢。是的,竞争让每个人都变得更好。你有一个被迫竞争的垄断者,突然之间垄断者的产品变得好得多,向消费者提供的产品也好得多。你看到很多领域苹果本可以做到最好,但他们拥有的却非常非常糟糕。正是这群固守旧政策的老派领导层,把自己变成了每个开发者、每个监管机构的敌人。我认为这最终对他们极其不利。我迫不及待地想看到新一代人进来,你知道,描绘一条通往未来的光明道路。
我们 Epic 曾与苹果有过十多年的精彩合作,进行演示、合作和技术使用。我们共同完成了很多了不起的事情。我最希望的就是… 拥有那个苹果… 你知道,带回史蒂夫·沃兹尼亚克最初的观点。Apple II 是如此了不起的东西。它完全是开放平台。Apple II 的手册包含了所有 ROM 的列表,ROM 的源代码,你可以确切地理解那里发生了什么,你可以从中学习。它包含了整个计算机的硬件原理图,所以你可以学习如何制作一个外设并将其插入一个开放的生态系统。那才是了不起的苹果。那家公司会再次成为世界上最好的公司。我认为现在的这家正处于历史的错误一边,需要改变。
Lex Fridman: 嗯,我希望 Epic 和苹果找到一条共同前进的道路,共同繁荣,苹果更好地拥抱竞争。
XVII. Epic Games Store (EGS):策略与竞争 (再次提及)
Lex Fridman: 我很欣赏这次谈话的一点是,你多次提到 Steam,言辞友善,支持,并且基本上从未提到 Epic Games Store。我喜欢那样。所以我真的喜欢那样。它真正体现了你想要多样性,想要自由,让人们选择最好的东西,并以此方式创建这个庞大的人类自由互动的网络。
好吧,话虽如此,Epic 几年前创造的竞争压力之一是推出了 Epic Games Store。与 Steam 的 30% 收入分成不同,你选择了 12% 的收入分成,制造了竞争压力,说:“听着,这不应该是那么高的分成。”我当时觉得这… 太棒了。这是一个绝妙的想法,我认为它现在仍然是一个绝妙的想法。
现在,在准备这次谈话时,我在互联网上看了看,我看到有很多对 EGS (Epic Games Store) 的批评。首先我应该说,互联网充满了戏剧性和批评。就像… 对了不起的东西庆祝得不够多。如果我可以向互联网这个整体提一个请求:我们能不能多庆祝一些了不起的东西,同时也批评?但就像… 庆祝不够。无论如何… 两个… 批评的方向是,直接说启动器界面笨重 (clunky),并且缺少 Steam 的很多功能。然后第二个… 批评是关于独占合同 (exclusive contracts),这些合同是与 Epic Games Store 上的一些游戏签订的。
所以,首先,为 12% 点赞。也许你能谈谈这背后的愿景。其次,你能评论一下那两个批评吗?
Tim Sweeney: 当然。是的。我认为… 人们将 Epic Games Launcher 描述为笨重的原因之一是,Epic Games Launcher 确实笨重。我们需要改进这一点。那里正在进行很多工作。我希望我们能更好地处理生活质量 (quality of life) 特性,并将它们置于所有其他特性之上。因为 Steam 有 15 年的积累,由整个行业中许多最优秀的程序员在一个更大的团队中工作,致力于 Steam,并且花了更多时间。
所以我们必须做出很多关于我们用 Epic Games Store 支持什么以及何时支持的优先级决策。很多时候是支持商业特性,比如商品推销,提供游戏的多个版本进行销售,提供从普通版到豪华版的升级,以及合作伙伴需要的其他东西。其他优先事项是生活质量、启动器加载时间和别的东西。我们在生活质量特性上投入的精力不够。我们已经非常清楚地认识到这一点很多次了,我们已经进行了多次重构。但你知道,那对我们和很多用户来说确实是一个失望。
我认为我们花了一段时间才意识到的一件事是,它不是… 统一的。取决于你离 CDN (内容分发网络) 的距离和你游戏收藏的大小,它可能很棒,也可能真的很笨重。而对于那些觉得它真的很笨重的用户… 我认为很大一部分抱怨… 他们会发声。
Lex Fridman: 我也应该说,Steam 启动器在很长一段时间里,根据我的记忆,但也只是在网上看看,一开始也非常笨重。
Tim Sweeney: 是的。你知道,从一开始对 Epic Games Store 的批评之一是:“你没有 Steam 的所有功能。”但我们非常不想拥有 Steam 的所有功能。比如 Steam 有论坛来迎合你的游戏。我们决定我们不想创建论坛。当我们与合作伙伴交谈时,他们通常不希望我们为他们的游戏创建 Epic Games Store 论坛,因为已经有… 他们更喜欢的渠道了。有社交媒体和一些平台,有 Reddit,有很多地方供玩家讨论他们的游戏,他们更希望那些讨论在那里进行。所以模仿 Steam 的一切绝不是我们的目标。
但我们确实希望拥有所有便利功能,使其像 Steam 一样易于使用和有趣。所以未来的路还很长,但你知道,我们继续再投资。你知道,我们正在努力在那里建立一个数十亿美元的业务,并认为我们会成功。Epic Games Store 已经… 支持了 Epic Games 在 PC 上的《堡垒之夜》的大量商业活动。现在在 Android 和 iOS 上,以及欧盟也是。所以它是行业永恒的一部分,我们永远不会对它失去信心。我们认为在某个时候,你知道,我真的觉得 Epic Games 方法的好处将超过 Steam 方法的好处,尤其是随着游戏变得多平台化。
对所有玩家来说,真正糟糕的事情之一是,你知道,你在现实世界中有很多朋友,每个人都有不同的平台。你的 Steam 朋友与你的 Xbox 朋友没有连接,他们也与你的 PlayStation 朋友、任天堂朋友没有连接。所以你很大程度上把 PC 游戏限制在了一个有点硬核的、只玩 PC 的群体中,并使其所有其他方面变得困难。你知道,很多游戏涌向了 Discord,这本身就是一团糟。因为现在你的 Steam 名字不是你的 Discord 名字,那也不是你的 PlayStation 名字。所以现在你在一个游戏里有三… 两个人,他们有四个不同的身份,这太糟糕了。
我们对此的目标是,你知道,通过 Epic Online Services 和我们为《堡垒之夜》构建的、并向所有开发者开放的社交系统,让跨平台社交功能变得超级容易,并且对所有开发者免费。这不是我们试图把关或寻租 (rent-seeking) 的东西,也不是试图锁定人们的东西。这只是我们让社交游戏对每个人都更容易的一种方式。
随着越来越多的游戏遵循《堡垒之夜》的多平台方法,尤其是多人游戏,梅特卡夫定律 (Metcalfe's Law) 在行业中是一个非常真实的现象。它正在颠覆一些游戏,并导致其他游戏的增长。它是当今弥漫于游戏世界的第一大趋势。它说的是,你知道,你的游戏价值与你能连接到的用户现实世界朋友的百分比成二次方 ($V \propto N^2$) 关系。你的游戏通过将所有玩家连接在一起,而不是… 将他们隔离到不同的在线平台群体等等,会极大地受益。
所以,你知道,我认为未来的趋势是朝着那个方向发展。我希望 Valve 能开放 Steamworks,让它在所有平台上都能工作。他们本可以轻易做到。我们做到了。但是,你知道,他们似乎在利用它作为杠杆,让人们锁定在 Steam PC 游戏商店。而且,你知道,那将是一场长期的战斗。因为总有一群非常 токсичный (有毒的) Steam 用户,他们甚至… 创建了一个专门批评 Epic 和我们商店的整个 subreddit。他们有时会发起… 基本上是骚扰活动,针对… 使用 Epic Online Services 的开发者。你知道,开发者那样做是为了能跨平台连接他们的玩家,拥有跨平台好友和跨平台语音。但是,你知道… 突然之间那… 那被试图变成负面的。
Lex Fridman: 很明显,Epic 希望开发者赢,希望玩家赢,也希望 Steam 做得很棒。在 Steam 和 Epic Games Store 的竞争中,就像… 一起创造了不起的东西。我的意思是,对我来说很明显,如果你不看网上的东西。但网上就像… 有这种… 我认为没有建设性的负面情绪。总的来说…
我应该给予一个巨大的… 积极的感谢和赞扬,对于推动多平台的努力,这在《堡垒之夜》中一直存在。也许在 Epic 施加压力打破 Xbox、PlayStation 和 PC 的壁垒并实现多平台之前就有了。就像我… 有机会和你以及团队里的所有人一起玩了一会儿《堡垒之夜》。顺便说一句,很棒的界面,音频聊天,非常有趣。但你可以看到,就像几个 PC 玩家,一个 PlayStation 玩家,一个 Xbox 玩家,都在一起。你真的无法分辨他们在使用什么,除了一个小图标。这很好。我们用这些平台制造的所有那些壁垒都消失了。你… 施加压力,通过 Epic Games Store 和你用《堡垒之夜》平台所做的一切… 这真的很好。没有理由创建这些孤岛,因为最终你应该把玩家放在第一位,并且… 让每个人都与… 与现实生活中的朋友互动,并在整个人类网络中结交新朋友。所以无论如何,谢谢你。谢谢你施加那种压力。
Tim Sweeney: 哦,谢谢。是的,那是一个有趣的时期。索尼长期以来有一项阻止跨平台游戏的政策。我们进行了一系列漫长的对话,到最后变得相当严厉。但索尼… 索尼最终改变了主意,他们开放了 PlayStation。你知道,通过一系列私下对话,他们做了正确的事情。
不仅如此,我们与索尼的伙伴关系自 2018 年那场争论以来有所加强。我们变得越来越近,做了越来越多的事情,比如索尼… 你知道,品牌 IP,像《战神》(God of War) 和其他游戏的角色进入《堡垒之夜》。以及… 你知道,各种各样的联动。索尼在制作游戏、在索尼影业制作电影方面大量采用虚幻引擎。与索尼音乐的音乐合作。那一直是一段绝对精彩的关系。
我认为这可以作为一个… 了不起的例子:一家公司,你知道,因为历史原因… 坚持了一项对未来不再有意义的政策。并且… 你知道,在与一个亲密伙伴进行认真讨论后,纠正了它,做了一件了不起的事情。现在索尼的状况好得多,Epic 的状况也好得多,所有游戏开发者都好得多,整个主机行业,我认为现在比如果… 这些孤岛继续存在下去要强大得多。
尽管存在那种… 潜在的担忧,比如… 也许阻止与 Xbox 的跨平台游戏给了索尼优势。你知道,索尼实际上在那之后相对于 Xbox 的市场份额有所增长。所以你不能说那件事除了好事之外还有什么。
我认为一个更好的苹果版本… 本会收到… 我发送给苹果高级管理层的邮件,然后会想:“嗯,这里有个问题。我们应该讨论一下。我们应该重新考虑这个。我们应该倾听。”而你知道,他们没有。这就是为什么… 我们正处于与苹果长达 5 年的斗争之中。并且… 你知道,希望… 仍然处于与索尼长达 15 年以上伙伴关系的早期阶段。
Lex Fridman: 加油苹果!我们爱你苹果!做得更好一点。
第二个批评,我提到的独占合同… 对于某些游戏。你能谈谈这个吗?因为在你 Epic 的很多历程中,你一直有点… 反对独占。
Tim Sweeney: 让我们回溯一下,谈谈这里的原则。苹果… 苹果强迫其他公司使用他们的支付服务,这是苹果的一种强制性决定。但是,如果苹果通过提供好处、更好的交易、资金或任何其他积极激励来说服其他开发者使用他们的支付服务,那么这将是完全可以的。前者是阻止竞争,后者是实际的竞争。
Epic 从未强迫任何开发者进入任何形式的独占关系。相反,我们向开发者提供了… 付款、激励、营销或任何对他们有价值的东西,以换取他们独家登陆我们的商店。这是他们的游戏。所以完全且理应由他们来决定如何分发它,并为他们的业务做出决定。这是他们的游戏。如果他们想通过 Steam 分发,他们可以。如果他们想独家通过 Epic 分发,他们可以。如果他们想两者都分发,他们也可以。如果我们向他们支付金钱或其他有价值的东西,以换取他们独家登陆 Epic Games Store,我认为这是他们的权利。这是一个例子,说明了 Epic,一个市场份额远小于 Steam 的后来者,通过提供更好的游戏供应来积极与 Steam 竞争。一些偏爱 Steam 的消费者可能更希望游戏也在 Steam 上架,但是开发者在每种情况下都决定了,他们相信通过达成这个独占协议以换取利益,会比仅在 Steam 上架获益更多。
你知道,Epic 对谷歌审判案中的一个关键证物是开庭陈述中的一个证据,旨在向陪审团指出独占的好处。想象一下一家新商店开张,外面挂着大牌子:“我们是新商店!我们拥有另一家商店的所有商品,而且价格相同!”你会去新商店吗?不。如果 Steam 拥有与竞争对手商店完全相同的游戏,并且所有商品定价完全相同,那么没有人会从 Steam 转换过来。
所以我们最初考虑了两种与 Steam 强力竞争的方式。我们想以比 Steam 更优惠的价格销售游戏,通过商定我们支付给每个游戏开发商的金额。你知道,如果我们打算… 如果游戏要卖 50 美元,我们收取 12%,我们实际上会降低价格,甚至可能亏损一些钱来提供更好的交易。嗯… 我们试图推行这个。但很快,每个开发者都告诉我们,他们不会同意更优惠的价格,因为如果他们这样做了,那么 Steam 就会停止给他们… 你知道,市场推广、推荐位和好处,主机制造商也会生气,他们所有的关系都会受到损害。
所以… 存在一种强大的平台和生态系统的暗流,鼓励开发者不要在价格上竞争。因此,由于无法在价格上竞争,我们决定通过独占协议在供应上竞争。我们签了很多协议。向开发者支付了大量大量的资金。我想我们分发出去了超过十亿美元… 的净支出给开发者,超出了我们实际从游戏中赚取的收入,以获得大量独占游戏。有些成功了,有些没有。《无主之地》(Borderlands) 在 Epic Games Store 上表现非常出色,我们和 Gearbox 都觉得它通过 Epic 取得的成绩和在 Steam 上一样好,因为… 想要《无主之地》的玩家就是想要《无主之地》,他们来了并购买了它。而很多其他游戏,尤其是一些没有绝对会玩该游戏的专门受众的小型游戏,通常受益于在 Steam 上的曝光。它们接触到了本来无法有机触及的受众。所以其中一些… 最终我们和他们都得出结论,仅在 Epic Games Store 上独家发售,他们在… 接触到更少客户方面做得更差。
所以,你知道,我们有这些限时独占。当它们到期后,他们把游戏放到了 Steam 上。并且… 收集了大量数据来了解什么有效。所以这对某些游戏效果很好,对其他游戏则不然。但是… 寻求竞争的公司,尤其是寻求竞争的后来者,必须提供一些独特的价值,必须提供一些竞争对手那里没有的东西。
我理解那些只喜欢使用 Steam 并在 Steam 上购买游戏的 Steam 用户,希望他们的库都在一个地方,不喜欢这样。但如果你不支持允许竞争者出现的竞争机制,你就永远不会有更好交易的竞争。我认为如果 Valve 被迫通过 Epic Games Store 的成功来与 Epic Games Store 竞争,那么开发者会得到更好的交易,消费者也会得到更好的交易。这些 30% 的费用会被大幅拉低,接近支持商店所需的实际成本。
Lex Fridman: 是的,我的意思是,这里有很多可说的。你知道,我有机会看到 Spotify 试图用播客来做这件事。你知道,作为后来者进入这个领域,并试图吸引… 你知道,他们与… 例如乔·罗根 (Joe Rogan) 达成了独家协议,该播客只在 Spotify 上发布。我个人认为,长期来看,我希望看到 EGS (Epic Games Store) 不做任何独占,类似于 Spotify 现在正在做的事情,即使是乔·罗根,他们也放开了,完全开放。而是… 在界面… 不笨重方面竞争。因为 Epic Games Store 所代表的基础,12%,在哲学上是如此… 你也在精神层面上竞争,比如它在道德上代表什么。那也是一种非常强大的获胜方式。
所以既然现在有足够多的… 人在使用 Epic Games Store,比如,摆脱… 摆脱独占。可以理解,对于竞争、对于后来者进入场景来说,这是必要的。但这有点违背了… 自由… 选择的自由精神,我认为你所做的很多决定都代表了这种精神,比如让游戏跨平台,只是… 是的… 给予开发者自由,给予玩家选择的自由。所以从这个角度来看,我认为独占有点违背了这一点。
Tim Sweeney: 嗯,这就是困境所在。所有竞争商店行使软实力 (soft power) 使得几乎任何开发者都无法通过 Epic Games Store 提供比通过 Steam 更好的价格。你可以想象,如果… Epic 收入分成 12% 给开发者的效果是游戏在 Epic Games 上便宜 22%… 抱歉,便宜 18%… 那么这实际上会开始显著重塑消费者行为。人们会开始为了更好的交易而来这里。
Lex Fridman: 是的。
Tim Sweeney: 但我觉得 Steam… 给开发者打 nasty(令人不快的)电话等等,当他们提议这样做时,阻止了开发者将节省的成本传递给消费者。那么,是什么机制促使用户离开现有商店,转向提供更好交易的商店呢?如果基本上… 开发者害怕通过商店进行价格竞争。你知道,能做什么来让一个拥有… 你知道,多发行商商店中大约 90% 收入份额的主导商店… 与一个规模小得多的商店竞争呢?我认为那里需要一些答案。
更好的用户界面很棒。Steam 超级完善。Epic Games Store… 随着时间的推移,希望也能同样完善。你知道,这如何克服你过去 15 年的整个库都在那里的事实呢?如果开发者… 因为害怕而不敢行使他们自己的经济利益——因为在 Epic 上销售并获得… 你知道,多 18% 的收入符合开发者的利益。你知道,我认为现有者有一种真正的力量,很难仅仅通过存在和同样好来克服。
Lex Fridman: 最终我希望它能趋向于减少独占,并且竞争能够是我最喜欢的那种,即在… 用户界面、体验、只是… 嗯… 然后在 Steam 方面,在 12% 上竞争。所以它可以从 30% 下降,并通过将其从 30% 降低到接近 12% 来开始支持开发者。所以无论如何… 我是一个大力支持者,我不喜欢对 Epic Games Store 的批评。但我也必须说,我不喜欢独占,但我理解… 我理解世界的现实是,你必须有一些机制来… 让人们转换,或者不是转换,而是至少让他们的一些游戏去尝试、去体验、将他们库的一部分分配给… 后来者。所以完全理解,并希望用户界面持续改进。
Tim Sweeney: 谢谢。关于独占这一点还有一点要补充的是,当我们告诉谷歌我们将要在 Google Play 之外推出《堡垒之夜》并与他们竞争时,他们认为独占是一种如此强大的竞争力量,以至于他们去找了排名前 30 的发行商,并支付了数亿美元给他们,以换取他们同意不与竞争对手签订独占协议。这被称为… “拥抱计划”(Project Hug)——“紧紧抱住开发者”(Hold developers close)。这是陪审团认定他们的做法非法且反竞争的主要证据之一。
还有一个数据点。你知道,我们谈论 30%,总有很多人为 Steam 辩护:“嗯,当然他们成本更高,因为他们比 Epic 有更多功能。”我们有关于这个的非常详细的数据。运营 Google Play 商店的所有成本——备货、维护、软件、整个生态系统——大约是收入的 6%。所以,你知道,在一个竞争市场中,一个成本为 6% 的公司怎么能收取 30% 呢?绝对不能。苹果的成本也类似。苹果的运营甚至比谷歌更高效、更精简。所以他们的成本也很可能在 6% 的范围内。他们将其从 6% 标记到 30%。只有垄断者才能做到这一点。看看竞争性企业,它们的利润率只有几个百分点。那里的数字惊人地… 支持了这完全是反竞争的市场扭曲。
XVIII. 游戏行业的未来与游戏设计
Lex Fridman: 好的。你认为游戏行业的未来是什么?我们… 我们说了很多关于独立开发者的令人兴奋的事情。那么… 所谓的 AAA 级视频游戏公司,这些大型游戏公司,它们有未来吗?它们的作用是什么?你如何看待… 未来 5 年、10 年、20 年,这些大公司和独立开发者的演变?
Tim Sweeney: 游戏领域有一个永恒不变的东西,我认为这个行业有时会惊人地忽视它,那就是乐趣 (fun)。人们玩游戏是为了乐趣。是的,我们的全部工作就是传递乐趣。当你看看最近失败的很多游戏,它们只是没有传递乐趣,或者它们传递乐趣的方式远不如人们生活中存在的其他乐趣来源具有竞争力。
所以,你知道,在基本层面上,我们不需要一个极其复杂的理论来解释游戏行业中的许多混乱。很多发行商的能力有所下降,部分原因是人才竞争。你知道,像拥有非常活跃游戏业务的公司,如 Epic 或 Riot 或其他公司,正在雇佣最优秀的开发者并积累他们。大型科技公司也在雇佣最优秀的游戏开发者,因为那里有超级人才。所以在某些情况下,公司没有进行强有力的竞争,或者变得更糟。他们制作的游戏乐趣减少了。我认为发生的所有其他事情都有点像… 旁枝末节。你知道,总有政治戏剧等等,但我认为核心就是未能传递乐趣。
而且,你知道,乐趣的性质正在改变。事实证明,在一个真正具有社交吸引力的方式下,通过语音聊天与朋友一起玩游戏,通常比独自玩游戏有趣得多。这也有例外。但我认为我们看到越来越多越来越多的游戏时间转向了你和朋友一起玩的游戏,而不仅仅是碰巧也玩那个游戏的随机互联网陌生人,而是你在现实世界中真正认识的人。这对我来说,以及几乎所有我认识的玩《堡垒之夜》或类似游戏的人来说,当然是这样。
这对整个游戏业务重塑产生了非常显著的影响。因为像一个单人游戏,如果你有 20 个人,对玩哪个游戏有 20 种不同的意见,每个人可能都会购买不同的单人游戏。但在一个多人游戏中,如果有 20 款游戏,每个人可能有自己完全独立的偏好,并且每个人都独立选择玩哪个游戏,每个人可能都会购买不同的游戏。但是… 如果你知道… 但他们都意识到他们想一起玩。
所以玩家们越来越多地做的是,和他们的朋友一起玩一个他们喜欢并接受的游戏,即使那不是他们每个人自己可能更偏爱的游戏。如果你有… 你知道,这在我有时玩的不同的《堡垒之夜》小组中当然是这样。就像… 一个玩家可能更喜欢玩 COD,一个可能更喜欢《英雄联盟》,另一个人可能喜欢完全随机的东西。但一起玩就是这么有趣,我们就在这样做。
这意味着确实存在很强的梅特卡夫定律效应,即能够吸引你朋友中很大比例的游戏,更有能力吸引你。不仅吸引,而且还能留住。
所以,你知道,我认为马修·鲍尔多年来对此的分析确实记录了朝着… 你可以称之为元宇宙,或者你可以称之为大规模多人在线社交游戏的趋势。他确实记录了这个趋势。而且,你知道,在过去一年左右,它朝着变化速度加快、来到《堡垒之夜》的玩家数量增加的方向发生了非常非常强的转变。我们大约一年前达到了每月 1.1 亿活跃用户的历史新高。这次又接近峰值。《Roblox》比以往任何时候都更大。你知道,这个趋势是玩家整合到他们一起玩的多人体验中。
我们看到另一个与此叠加的趋势是,当一款出色的单人游戏或小型多人游戏问世时,人们通常会… 将其视为一次“度假”。他们会离开去玩那个游戏一段时间,然后回来。我认为《悟空》(Wukong) 是这方面一个很棒的例子。来自中国一个才华横溢团队的精彩游戏。他们制作了一款像… 西方玩家以前从未真正见过那种类型的游戏。它很棒,而且做得很好。但大多数玩家玩了一段时间就… 回去了。这可能有利可图,但构建那种类型游戏的业务将不得不每隔几年就构建一个新的,并围绕它建立业务。而其他游戏则继续创造用户。
但是,你知道,当你有大量玩家迁移到少数游戏时,其效果是这些游戏的收入增加,再投资增加。而且,你知道,Epic 有一个数千人的团队在内部构建《堡垒之夜》。还有… 数万名作为独立创作者贡献于《堡垒之夜》。你知道,那种程度的投资可以发生的事情,在一个较小的游戏中是无法发生的。所以某种程度上存在一种日益增强的赢家通吃动态,最大的游戏再投资更多,使其游戏更有趣,它们获得乐趣的速度比其他游戏更快。而且… 你知道,行业正在围绕这一点发生变化。
所以,你知道,我认为现在游戏行业的教训是,确实有两个大的机遇正在被追求。有大型游戏,或者有潜力成为真正大型多人体验、能够让玩家留存… 你知道,无限期地、很长时间的游戏。然后就是那些非常好的单人游戏和小规模游戏,人们从他们的大型游戏中抽出时间来玩。你知道,那里的趋势将是朝着高效开发那些游戏的方向发展。你不能用 3 亿美元的预算来构建其中一款游戏,但如果你能用 4000 万美元的预算来做,你可以赚很多钱。所以我认为这是正在发生的主要重塑。我认为这给很多类别的… 比如没有庞大受众可触及的单人游戏,带来了相当黯淡的前景。而且,你知道,但这只是围绕技术和时代变化重组业务的真正趋势之一。
Lex Fridman: 好的,这将是一个荒谬的问题。但是… 除了你创造的游戏之外,对你来说,有史以来最伟大的视频游戏有哪些?比如,哪些视频游戏对你的生活产生了影响,或者也许你看到它们被创造出来,然后你想:“嗯,那是一件美丽的艺术品。”它可能是在一个完全不同的领域。比如,对我来说,我经常回到单人角色扮演游戏的领域,《上古卷轴》(Elder Scrolls) 系列,《天际》(Skyrim),那是他们创造的一个世界。最近的游戏《博德之门 3》(Baldur's Gate 3),那是一部真正令人难以置信的作品和艺术,并且做了很多创新,同样是在单人领域。是否有像那样的、在你创造的游戏之外的游戏?
Tim Sweeney: 我印象最深的是那些创造了似乎是一个完整的、活生生的、呼吸着的世界的游戏。那些让你感觉你只是其中的一部分,还有更多事情正在发生,而且… 你知道,总有更多… 并且… 你知道,让你感觉你可以去任何地方,做任何事情的游戏,即使这些游戏确实有有限的限制,有些地方你去不了。真正创造出那种奇迹感简直是神奇的事情。像《塞尔达传说:旷野之息》(Zelda: Breath of the Wild)。
Lex Fridman: 哦是的。
Tim Sweeney: 《天际》(Skyrim)。《荒野大镖客:救赎》(Red Dead Redemption)。
Lex Fridman: 《荒野大镖客》很棒。
Tim Sweeney: 是的。就像那里有一个完整的生态模拟器。我有一个高中同学,他后来研究河流生态学,他评论说:“这是极少数水文学上合理的游戏之一。”就像… 他们实际上努力使河流的形状遵循侵蚀动力学等等。仅仅是那种对细节的关注。
那里有一些重要的东西。穿越这个行业的旅程一直很有趣。我上一次设计游戏是在 1992 年。我不是游戏设计师。是的,我有一个非常开放的心态… 认为有史以来最好的游戏类型尚未被发明出来。随着我们获得更多的技术能力,图形变得更有能力,CPU 变得性能更强,Web 服务变得越来越可扩展,创意人员利用这一点,并且… 你知道,希望被更高生产力的工具等所赋能,我们将看到越来越多我们从未梦想过可能出现的酷东西涌现。而且,你知道,世界模拟器的想法实际上在那里非常有趣。它被尝试了很多次。它… 通常极其缓慢和昂贵去创造。但随着时间的推移,也许我们会在这方面做得更好,那也会成为现实。
Lex Fridman: 你在那里说了很多有趣的事情。新的城市建设者… 《文明》(Civilization)。他们构建了一个具有那种深度的游戏,能够如此依赖你的行动而演变,这简直令人难以置信。做到那种世界规模,但又能让你步入其中,身临其境。你知道… 我认为《荒野大镖客》是一个很好的例子。但是以一种你可以和朋友们大规模地四处走动的方式来做《荒野大镖客:救赎》,并且… 我猜你投入了这么多年的是创造工具,使艺术家能够在那些… 在其中几件事情上给予《荒野大镖客》所做的那种对细节的关注。一旦你做到了,那里就有某种魔力。就像一旦你给予了那种对细节的关注,就像… 我不知道那是什么,但艺术家的爱不知何故流露出来,你可以感受到他们投入其中的关怀。
Tim Sweeney: 没错。最好的游戏有灵魂。你真的能感觉到它。就像《使命召唤》的灵魂与《堡垒之夜》截然不同。它不仅仅体现在你在游戏中看到的东西,也体现在玩家如何与之互动以及在线上如何相互互动。那是一件非常引人入胜的事情,我希望它能得到更多研究。
Lex Fridman: 我认为我们在几个方面谈到了灵魂,对吧?我希望它能得到更多研究。
Tim Sweeney: 是的。这些… 设计师们做出的微小的游戏设计决策,对玩家如何看待游戏、在游戏中看到什么,有着深远的影响。《堡垒之夜》大逃杀一直有一种神秘感。你在这个岛上,但你不确定这里到底发生了什么。有所有这些房子,它们被遗弃了,为什么?而且,你知道,我不是秘密持有者。我… 我不在设计团队。我作为一个玩家体验《堡垒之夜》。但它真的散发出很多那种气息。还有一种善良的精神。因为即使你在《堡垒之夜》中被淘汰了,你知道,没有… 血溅,没有… 碎块。你只是… 被传送出模拟。而且通常… 你最终以一种足够搞笑的方式输掉游戏,以至于… 你实际上在笑它,或者你想:“向刚才获胜的那个玩家致敬,因为那很聪明。”
而且,你知道,它创造了一种与其他游戏非常不同的动态,玩家之间往往非常非常积极。我喜欢在《堡垒之夜》中做的一件事,只是为了衡量游戏进展如何,是我玩“填补小队”(Fill Squad)。所以我会被匹配到… 其他三个随机玩家,一起玩一局游戏。有时他们有语音聊天,有时没有。而且… 你知道,在我们的匹配区域更大时,我学了一点… 战场西班牙语,这样我就可以和远在… 墨西哥城的人交谈。而且,你知道,那里的互动… 的积极性,仅仅是在你可能在网上遇到的各种各样的人之间,真的相当令人印象深刻。与你在像《使命召唤》这样的游戏中看到的完全不同,那里总是… 你知道… 每个人都得是个“边缘领主”(edgelord)。
GTA 6 与 Rockstar Games
Lex Fridman: 我喜欢在线游戏文化。我必须问这个,因为它有点像传奇游戏之一:《侠盗猎车手》(Grand Theft Auto)。说到那些世界,就像… 我的意思是,那完全是它自己的东西,对吧?那是… 那个世界,角色,风格,前卫性,所有这些。但是… 《侠盗猎车手 6》对我来说有趣的地方,我想问你的是,他们花了很长时间。就是你之前提到的“六个月”的事情。你知道,有些游戏就是那样,需要数年才能完成。你能谈谈那个过程吗?你知道,你最终能够将《虚幻》完成。如果你从外部来看,为什么《侠盗猎车手》需要那么长时间,或者其他… 公司,将游戏完成?以及… 我的意思是,只是对那个过程是怎样的见解?
Tim Sweeney: 制作游戏非常困难。尤其是当你正在推动某件事的边界时。你知道,对于《侠盗猎车手》来说,仅仅是那种真实感和感觉,你置身于这个巨大的城市中,任何事情都可能发生,一切都是活生生的、呼吸着的,而你只是其中的一部分。Rockstar 将质量带到那个类型的高度是惊人的。
当你正在构建一个质量和细节水平前所未有的东西时,你无法预测它需要多长时间。无论你今天在解决什么问题,为了达到… 质量的下一次迭代,你不知道那会解锁什么新问题。通常你修复了一件事,并且… 使其超级逼真,那只会凸显出你需要修复的其他事情的不真实感。
我认为总是浮现在脑海的是,如果你没有一个高质量标准,发布一款游戏很容易。我们也不会取得太大成功。我们从 Rockstar 看到的是,他们花费很长时间,但他们发布了令人惊叹的游戏。最终是值得的,对吧?一款糟糕的游戏永远糟糕。一款迟到的好游戏最终会发布,并且是好的。
Lex Fridman: Rockstar 是这方面的一个好例子。你是否曾感受到交付质量的压力?你知道,据我所知,Epic 最近没有失手过,在交付质量方面。你感受到那种… 不允许失手的压力吗?
Tim Sweeney: 我们当然有。我们… 每个人通常都在非常努力地工作到最后一刻,以使某件事变得卓越。而且… 在这些快速交付时间框架下,这真的很难。因为你真的必须让很多东西运行起来,才能全面地判断… 比如一个新的《堡垒之夜》赛季。你知道,直到像最后一个月左右,你才真正知道你构建了什么,你才真正理解它。如果在像平衡或其他任何方面出现任何后期问题,通常是在接近尾声时。那通常会导致快速推进来修复它。
然后其他的经验教训你只能在上线后学到。而且… 你知道,从经验中… 那意味着… 接受一个游戏,它像… 它是一个现场体验,它也是一个实验。而且… 它将持续改进。在任何时候,总有一些事情一些人不喜欢。而且… 你从中学习,你改进它,你继续前进。
XIX. 对人类未来的希望
Lex Fridman: 让我问你一个大的哲学问题。你创造了这些巨大的世界,现在给人类带来了如此多的乐趣。但你也得以了解人性。关于我们人类,关于人类的未来,关于人性的未来,是什么给了你希望?
Tim Sweeney: 你知道,我看到两个截然不同的世界,它们… 在数字时代被带到了我们面前。一个是… 社交网络的世界,人们互相打字,只是… 大量的负面情绪和政治,你知道,投机取巧和… 你知道,通过参与度进行的内容策划,通常会推广负面情绪… 和毒性。那是一个严酷的世界,我认为在很多方面是一种倒退。就像,我认为世界的根基实际上有点动摇,仅仅是因为那些平台带来的社交动态。
但然后我将其与… 在线正在发生的事情的善良精神进行比较,当你与真实的人连接时。就像实际玩《堡垒之夜》,和你从未见过、从未交谈过的人玩《堡垒之夜》填补小队,仅仅判断你知道,在那里发展了什么样的人类连接,以及它们是否是积极的。我发现那些真的非常非常出色和讨人喜欢。我认为从中得到的所有教训是,人类与人类交谈,并共同处于一个模拟… 一个世界,真实的现实世界或虚拟世界,是一种天然具有同理心的媒介。它自然会导致纽带的形成。尽管冲突有时会发生,但它通常更能促进我们的社会规范和人与人之间的良好互动,并促进积极性。
而那种… 你知道,互相打愤怒消息的事情,作为一种自我强化的负面动态… 那是负面的。我认为… 虽然你看看社交媒体,再看看日益社交化的游戏,我看不出任何两种媒介之间比我在这里看到的在实际社交动态方面的分歧更大了。一个超级积极,一个有时超级有毒。
Lex Fridman: 是的,那实际上真的… 基于文本的媒介。现在,即使是围绕游戏,你看看 Discord,它们也可能在文本中非常 токсичный (有毒)。但你把人类放在一起… 在现实世界中,就在这个房间里。我字面上从未… 我很少看到人类在物理空间中相处不来。你能创造一个数字空间,比如元宇宙类型的空间,达到足够沉浸的程度,让你… 你能感受到另一个人,同理心就出来了,然后从同理心中产生的快乐就出来了。这只是提醒我们,人类… 我不知道… 人类是善良的,他们想看到他人身上的善良,他们想分享善良。然后,你知道,当他们聚在一起时,那里有爱。现在,他们可能会说某个其他群体的坏话。这是人类的阴暗面。但在一起,就那个群体的动态而言,是快乐的。
所以,是的… 那也给了我希望。我们能创造那些在线世界的程度越高,让我们能够以那种共情的方式超级容易地连接起来… 就越好。我很感激你正在推动创造这样的世界的可能性边界。我很感激你今天愿意与我交谈,蒂姆。这太棒了,与你交谈是我的荣幸。
Tim Sweeney: 哦,非常感谢。这很有趣。
Lex Fridman: 感谢收听这次与蒂姆·斯威尼的对话。要支持本播客,请查看描述中的赞助商。现在,让我以本杰明·富兰克林的一些话结束:我们并非因为年老而停止玩乐,我们是因为停止玩乐而变老。感谢收听,希望下次再见。
要点回顾
I. 渲染“真实人类”的挑战
- 人类是计算机图形学中最难的部分,因为进化赋予了我们专门识别面部模式、推断情感和意图的大脑系统(生存需求)。
- 人们对面部有极高的期望,能轻易察觉不完美,尤其是计算机图形技术的局限性造成的瑕疵。
- 技术难点:
- 数据采集: 需要专用硬件(如捕捉球、多摄像头)高帧率、高分辨率地捕捉人类的各种动作和表情。
- 面部复杂性: 不仅要捕捉形状,还要捕捉肌肉、脂肪等协同工作产生的细微表情和运动范围。
- 毛发渲染: 物理模拟每一根头发计算量过大(
$10^9$倍慢),需要近似方法捕捉其整体视觉效果。 - 次表面散射 (Subsurface Scattering): 光线会穿透皮肤,这种交互方式对外观有巨大影响,使皮肤看起来与不透明的模型(如人体模型)截然不同。
- 皮肤细节: 油脂、复杂的反射、光线吸收和穿透共同构成了人眼能感知到的“人类”纹理和质感。
- 微表情捕捉: 需要捕捉极其细微的表情,如眼神的微小变化、真假笑容的区别、笑容中透露的深层情感等。
- 任何一个环节出错,都会立刻被注意到,导致结果落入“恐怖谷” (Uncanny Valley)。
II. Tim Sweeney 的编程启蒙与早期经历
- 初识编程: 约11岁时,在加州的哥哥处接触到 IBM PC,几天内学会了 BASIC 编程,从此着迷。
- 早期编程记忆: 对早期学习的代码和挑战记忆犹新,认识到编程语言设计的缺陷会带来“摩擦” (friction)。
- 早期项目:
- 编写各种小程序,包括文本模式游戏(用括号接星号)。
- 开发数据库、类 Pascal 语言的编译器。
- 沉迷于BBS(公告板系统),编写BBS程序,学习数据库管理、用户界面、并发处理等。
- 投入时间: 在10岁到20岁之间,大约投入了 10,000 到 15,000 小时进行个人编程。
III. 对年轻程序员的建议与学习观
- 小时数的价值: 不仅仅是时间投入,更重要的是不断学习、理解知识缺口,通过实验和项目提升知识库。
- 项目驱动学习: 通过做有趣、酷的项目,不断学习新知识(数据管理、数据结构、复杂程序设计等)。
- 知识的融会贯通:
- 早期学习的数学(微积分、向量、矩阵)和工程知识(物理、力学)在后来开发 3D 引擎时派上用场(“空手道小子”时刻)。
- 认识到看似无关的知识(如特征值/特征向量
$Ax = \lambda x$)可能在其他领域(如 Google 搜索算法)产生突破。 - 强调学习线性代数的重要性,即使当时不理解。
- 工程训练的价值: 工程学位的严谨性、解决复杂问题的训练对编程非常有价值。
- 学习的本质 vs. 证书: 大学教育的真正目的是学习知识本身,而非仅仅为了文凭;创业和创造伟大事物更看重真才实学而非证书。
- 珍惜年轻时的学习自由: 青少年和二十多岁是自由探索、学习各种知识的黄金时期,这种自由度会随着成年后的责任增加而减少。
- 反思现代教育: 担忧过度结构化、以成绩为导向的教育模式可能扼杀孩子自由探索、有机学习(如自己动手做项目、打零工创业)的机会。
IV. Epic Games 与 ZZT 的起源
- 从文本编辑器到游戏: 最初为 IBM PC 编写文本编辑器,觉得无聊后将其改造成游戏,用字符(如笑脸)代表游戏元素,并制作了关卡编辑器。
- ZZT 的诞生: 将编辑器演变成包含约20-30种对象的游戏编辑器,构建了一系列关卡,形成了 ZZT 游戏。
- 用户体验测试: 邀请邻居(成人和孩子)试玩,观察他们的反应和卡点,不断打磨游戏。
- Shareware (共享软件) 模式:
- 制作了三部曲,免费发布第一部,吸引玩家购买后两部(售价
$30)。 - 通过BBS传播,几天内开始收到订单,每天收入约
$100。
- 制作了三部曲,免费发布第一部,吸引玩家购买后两部(售价
- 成功的意义:
- 金钱是实现目标的工具。
- 更重要的是知道世界各地的人在玩自己的游戏,软件传播的魔力。
- 意识到软件业务的潜力没有上限。
- 发布编辑器: ZZT 不仅发布了游戏,还发布了编辑器和脚本语言,让玩家成为创造者,这奠定了 Epic 的核心理念。
- Epic 的双重使命: 创造精彩的娱乐内容,同时创造强大的工具并分享给社区,让工具和游戏互相促进,帮助公司穿越行业周期。
V. 早期互联网与数字发行
- BBS 时代: 在互联网普及前,通过调制解调器(早期速度如 300 波特,约 30 字符/秒)拨号连接本地 BBS,每个 BBS 由个人运营,有自己的社区和主题。
- 互联网的兴起: 90年代,原先主要连接大学的互联网向公众开放,极大地方便了全球传播。
- 游戏发行的变迁:
- Epic 最初通过数字化的 Shareware 模式分发。
- 随着 3D 游戏(Wolfenstein, Doom, Unreal)兴起,为触达大众需要通过零售商发行实体版(CD-ROM)。
- 之后又逐渐回归数字发行,早期面临盗版问题(如 BitTorrent)。
- Steam 的出现使正版数字发行变得便捷,有效打击了盗版。
VI. 对独立游戏开发者的建议
- 差异化竞争: 创造与众不同的东西,满足特定受众,而非直接与行业巨头竞争。
- 利用新模式: Epic 早期的成功在于 Shareware 这种不同的分销模式(免费试玩吸引用户)。
- 降低门槛: 让玩家更容易接触和体验游戏。
- 提供创作工具/平台: 像 ZZT、Minecraft、Roblox、Fortnite Creative 那样,让游戏成为玩家创作的平台,能建立强大的社区。
- 认识到竞争激烈: 在成熟的高竞争品类中胜算很小,不如做一些独特、创新的东西。
- 迭代发展: 成功的路径往往是多步的,不断积累、改进,而非一蹴而就。
- 早期创业的优势: 软件创业初期所需资本较少,风险相对较低。
- 社区连接: 早期通过邻居试玩、BBS 用户来信等方式获得反馈和连接感,并不孤单。
VII. Unreal Engine (虚幻引擎) 的诞生
- 时代背景: Wolfenstein 和 Doom 的出现展示了 3D 游戏的未来,其沉浸感前所未有。
- Tim Sweeney 最初因 Doom 的技术过于领先而感到沮丧,甚至放弃编程半年。
- 技术解密与启发: Michael Abrash 关于 3D 图形和纹理映射技术的书籍和文章揭示了其原理并不遥不可及。
- 团队组建与转型: Epic 决定全力投入 3D,集合了 2D 游戏项目的顶尖人才(艺术家、程序员、设计师)组成 Unreal 团队。
- 早期开发:
- Tim Sweeney 负责 3D 编辑器和引擎核心,Cliff Bleszinski 是编辑器的首个用户(关卡设计),James Schmalz 负责 3D 模型和动画。
- 团队逐渐扩大到约 20 人(当时算大团队)。
- 项目历时 3.5 年,每周工作 70-80 小时,期间公司财务多次濒临破产。
- 引擎授权业务的意外开启:
- 其他公司(如 MicroProse, GT Interactive)联系 Epic 希望授权其 3D 引擎。
- 引擎授权带来的收入成为维持公司运营和 Unreal 开发的关键资金来源。
- 这进一步强化了 Epic 同时服务创作者(引擎)和玩家(游戏)的双重基因。
- 成功的关键: 并非出色的管理或规划,而是团队成员的才华、意志力和快速迭代。
VIII. Unreal Engine 技术深入探讨
- 早期技术挑战与创新:
- 构造实体几何 (Constructive Solid Geometry, CSG): 允许通过布尔运算(加、减)构建复杂几何体,Tim Sweeney 在一次 30 小时的编程马拉松中实现,极大提升了关卡编辑效率。利用了二叉空间分割树 (BSP Tree) 技术。
- 动态光照与光照贴图 (Light Mapping): 面对 CPU 性能限制,无法实时计算所有像素光照,借鉴 Quake 引擎,采用光照贴图(预计算光照信息存储在纹理中)实现高效的近似光照,并在此基础上添加了彩色光、闪烁、水波纹等效果。
- 体积雾 (Volumetric Fog): 受到芬兰某 GPU 公司(后证实是预渲染图)的启发,Tim Sweeney 在另一次 30 小时编程中,利用线积分(
$\int f(x) dx$)和数学技巧(如$\int \frac{1}{r^2} dr$与$\arctan(r)$的关系)实现了实时体积雾效果,极大增强了场景氛围。 - 编程语言选择: 从 C (16位 Windows) 迁移到 C++ (32位),简化了代码。
- 硬件优化: 针对早期 CPU(如 Pentium 90MHz)进行极致优化,例如将纹理映射代码优化到 6 个 CPU 周期(包含 11 条指令),充分利用硬件特性(如超标量架构)。后期升级到 Pentium Pro 等更强工作站提升效率。
- Unreal Engine 5 核心技术:
- Nanite (虚拟化微多边形几何体):
- 解决渲染数十亿多边形场景的难题。
- 目标是渲染出与原始高精度模型无法区分的图像,但计算量可控。
- 根据物体远近动态调整多边形数量,利用奈奎斯特定理 (
$f_s > 2f_{max}$) 思想,目标是每像素渲染约 2 个三角形。 - 突破 GPU 三角形光栅化器对小三角形效率低下的限制,采用新的管线直接计算像素,避免了传统光栅化硬件瓶颈。
- 解决了LOD切换时的“跳变” (popping) 问题,实现平滑过渡。
- Lumen (全局光照系统):
- 模拟光线在场景中的多次反弹(间接光照),实现更真实的光照效果(如颜色溢出)。
- 早期引擎只处理直接光照,导致无直接光区域全黑。
- Lumen 在不同尺度(从宏观到微观)计算光线交互,并将结果无缝整合。
- 包含屏幕空间光照等技术,用于计算精细阴影和细节。
- 目标是让艺术家放置光源后系统能“自动”产生真实效果,简化流程。
- 材质系统: 允许艺术家分层叠加材质(如泥土、雪、冰),控制混合效果,创建复杂表面。
- 粒子系统 (Niagara): 用于创建复杂的动态效果,如火焰、烟雾,并与光照系统(Lumen)交互,实现烟雾的光线遮蔽和透光效果。
- Nanite (虚拟化微多边形几何体):
IX. Unreal Engine 的演进 (UE1 - UE6)
- 硬件性能的飞跃: 30 年间 CPU 性能提升约
$10^5$倍,GPU 性能提升约$10^7$倍。 - 渲染技术的迭代:
- UE1: 主要面向软件渲染,后期添加 Voodoo 1 GPU 支持。
- UE2: 全面拥抱早期 GPU 加速特性。
- UE3: 利用 DirectX 9 可编程着色器 (Programmable Shaders) 实现重大图形升级(实时像素着色、动态阴影),并开始支持多核 CPU。
- UE4: 持续改进光照、几何体等功能,增加艺术家选项。
- UE5: 通过 Nanite 和 Lumen 实现照片级真实感的飞跃。
- 保持不变/演进较慢的部分: 文件管理系统、网络系统(客户端/服务器状态同步)、游戏模拟逻辑(仍主要为单线程)。
- Unreal Engine 6 的目标:
- 解决核心历史遗留问题,特别是将游戏模拟逻辑迁移到多线程架构。
- 利用 Verse 编程语言重构基础。
- 统一 UEFN (Unreal Editor for Fortnite) 和标准 UE 的开发体验。
- 进一步提升可扩展性、易用性、性能和跨平台能力。
X. Metahuman 与数字人创作
- 挑战: 渲染真实可信的人类是图形学中最难的部分(见第一节)。
- Metahuman 项目: 由 Vlad Mastilovic 领导的长期项目,旨在攻克数字人难题。
- 数据采集: 使用专用扫描设备捕捉大量不同人种、年龄、面部特征的个体及其表情,构建庞大数据集。
- 面部重建: 利用数据集,能够基于少量输入(如 iPhone 照片)重建高精度、可信的数字人面孔,或在 Metahuman Creator 工具中通过参数化调整创建独特面孔。
- 动画捕捉与迁移: Metahuman Animator 工具能捕捉演员面部表演(可用 iPhone 完成),并将其智能地迁移到不同脸型的数字角色上。
- 渲染技术: 需要解决毛发、次表面散射、皮肤细节(油脂、反射)、微表情等多个技术难题。
- 现状与未来: 虽然取得了巨大进展,极大提高了生产力和质量,但距离完全解决数字人问题仍有很长路要走(可能是 50 年项目中的第 30 年)。
XI. Unreal Engine 在影视行业的应用与 AI 整合
- 影视应用:
- 提高生产力,降低成本。
- LED 虚拟制片: 取代绿幕,在大型 LED 屏幕上实时渲染 UE 场景作为背景,让演员能看到真实环境光照和场景,提高表演质量和最终画面真实感。
- 已有使用 UE 制作的短片获得奥斯卡奖 (War is Over!)。
- 与生成式 AI 的结合:
- 当前挑战: AI 生成视频在一致性、可控性方面存在问题,缺乏对场景、剧情、世界的整体理解。
- 未来方向: AI 将成为人类创作者的“力量倍增器”,而非完全替代。
- 后处理增强: AI 可用于增强 UE 的渲染输出,补充细节(类似 Meta 的 Codec Avatar)。
- 内容辅助生成: 利用现有高质量扫描数据(如 Quixel Megascans)和 AI 生成新的、符合要求的变体(如特定形态的树木)。
- 场景图与 AI 结合: 让 AI 理解场景图(世界中的对象及其属性),实现更可控、更稳定的内容生成和交互。
- 克服 AI 的“不可控”: 未来 AI 工具需要提供更精细的控制,让艺术家能进行“艺术指导”,使其感觉更像 Photoshop 中的强大工具,而非一个难以驾驭的竞争者。
- 对从业者的影响:
- 技术变革总会带来阵痛(如裁员),但历史上技术最终都创造了更多机会。
- AI 可能改变工作方式,但不太可能完全淘汰愿意学习新技能的人。
- AI 在编写重复代码(样板代码)方面可能有用,但这本身也反映了编程语言和模块化设计的不足。
- AI 在创造全新、复杂解决方案方面仍有局限。
XII. 模拟现实与元宇宙 (Metaverse) 概念
- 模拟现实的逼近:
- 在非人类交互方面(如环境渲染)已非常接近照片级真实,可能几年内实现。
- 人类相关的模拟(外观、对话、意图、情感、智能)是更大的挑战,但 AI 的进展(如 LLM)使之在未来 5-20 年内变得可能。
- 模拟假设:
- Tim Sweeney 认为这不是完全无法回答的问题,鼓励探索宇宙的底层机制。
- 对“我们是否生活在模拟中”持开放态度,但也指出这会引出“模拟我们的人又生活在哪里”的问题。
- 提及物理现实可能只是数学定律(物理法则)的一种体现。
- 认为随着 AI 和物理学理解的深入,这些问题会变得更引人入胜。
- 指出当前的物理学(如量子力学波函数坍缩)本身为外部影响(意识、灵魂等)留有理论空间,但科学界目前研究甚少。
- 创造沉浸式虚拟世界的伦理考量:
- 技术上可能创造出让人愿意“留在”其中的虚拟世界。
- Epic 的目标是创造娱乐,而非替代现实。
- 需要思考人类应如何使用这种技术,界限在哪里。
- 引发对模拟“能感知痛苦”的人工智能的担忧,以及相关的法律和伦理困境。
- 强调游戏开发者应以为玩家提供乐趣、改善生活为目标。
- 元宇宙的定义与现状:
- 核心是多人在线社交游戏体验(和朋友在 3D 世界中一起玩乐)。
- Fortnite (尤其是实现跨平台后)、Rec Room 等是当前元宇宙形态的例子。
- 目前仍处于早期阶段,如同 90 年代初的互联网。
- VR/AR、NFT/加密货币并非元宇宙的必要条件,核心在于体验和互联互通。
XIII. Fortnite 的起源、成功与规模化
- 起源: 来自 2011 年 Epic 内部的游戏잼 (Game Jam),最初概念是白天建造堡垒、夜晚抵御僵尸。
- 演变:
- 经历了多次方向调整,包括艺术风格从写实转向卡通化(类皮克斯风格)。
- 曾尝试过轻度 MMO、塔防等模式,最终形成“拯救世界”(Save the World) PVE 模式。
- Battle Royale (大逃杀) 模式的诞生:
- 受当时兴起的 PUBG 等游戏启发,团队认为结合 Fortnite 的建造系统会很酷。
- 一个约 30 人的团队在 4 周内利用现有素材开发并上线了 Battle Royale 模式。
- 爆炸性成功与规模化:
- 导致 Epic 员工数从 300 增至数千,年收入从约 1 亿美元增至数十亿美元。
- 技术挑战:后台系统(账户、登录、匹配等)需要从支持几万并发用户扩展到支持 1500 万并发用户。
- 幸运的是,早期系统设计具有足够的可扩展性,加上 AWS 云服务的支持,使得规模化成为可能。
- 商业模式与再投资:
- 主要收入来自道具商店(外观道具,非 Pay-to-Win)。
- 道具商店的收入与玩家在不同模式(官方模式、玩家创作模式 UEFN)中的游玩时间挂钩,进行收益分享,形成了庞大的创作者经济(已达
$4亿美元规模并持续增长)。 - Epic 将 Fortnite 的巨额利润大量再投资于未来的技术研发(如 UE、Verse),每年投入甚至超过收入数亿美元。
XIV. 未来元宇宙:互操作性与标准
- 当前痛点: 游戏世界是孤立的“围墙花园”,不同平台(Xbox, PlayStation, Steam, Epic)、不同游戏之间账户、好友、道具不互通,体验割裂。
- 目标: 实现跨平台、跨游戏的互联互通。
- 社交互通: 统一账户体系,让玩家可以在不同平台和游戏中保持好友关系(Epic Online Services 免费提供此功能)。
- 经济互通:
- 实现某些类型的道具(尤其是外观道具)跨游戏使用。
- 建立开放的道具经济,让玩家购买的道具可以在支持该标准的多个游戏中生效。
- 实现跨生态系统的收益分享。
- 标准化需求:
- 需要行业标准来定义可互操作的道具(如外观)的规格、能力等。
- 已有的标准主要在底层文件格式(如 Pixar USD 用于场景描述,glTF 用于模型纹理)。
- 关键缺失: 缺乏一个标准化的元宇宙编程语言,类似 Web 中的 JavaScript,但需要更强大、安全、可扩展。
XV. Verse 编程语言:愿景与技术
- 定位: 为大规模模拟(元宇宙)设计的编程语言,旨在简化并发、可组合、可验证的代码编写。
- 设计哲学: 追求简洁而强大,通过少量正交(orthogonal)特性的组合实现复杂功能(受 Niklaus Wirth 启发)。
- 核心特性:函数式逻辑编程
- 表达式可以产生 0 个(失败)、1 个(成功)或多个(迭代)结果。
- 条件表达式:
if语句的条件部分可以直接绑定变量,成功则进入then分支并使用该变量,失败则进入else分支,比传统布尔判断更强大可靠。 - 循环/查询:
for循环等结构可以像 SQL 查询一样组合复杂的条件和数据绑定,生成一系列结果进行迭代。 - 失败处理: 函数可以显式地表示“失败”状态,方便组合和错误处理。
- 直观性: 对于初学者,这种模型可能比传统命令式语言更自然。
- 面向元宇宙的特性:
- 可靠性与验证: 利用强大的类型系统(受 Curry-Howard 同构启发,类型即定理,值即证明),在编译时捕捉更多错误,甚至未来可能证明代码的某些属性(如排序函数确实返回排序结果),提高代码可靠性,降低运行时修复成本。
- 向后兼容性: 严格的类型系统规则确保模块更新时不会破坏现有依赖。
- 并发处理 (Concurrency):
- 目标是让普通程序员能轻松编写并发代码,无需手动处理锁和同步。
- 基于软件事务内存 (Software Transactional Memory, STM) 概念。
- 事务 (Transaction): 将代码块(如游戏对象更新)视为原子操作。
- 推测执行 (Speculative Execution): 并发执行多个事务,但不立即写入全局内存,而是将写入操作缓存在本地。
- 冲突检测与解决: 系统检测同时读写相同数据的事务(冲突),无冲突的事务变更被提交到全局内存;有冲突的事务被回滚并稍后重试。
- 将并发管理的复杂性从应用开发者转移到语言/运行时系统层面。
- 发展路线:
- 持续迭代,逐步向包含所有预期特性的“最终版本”演进。
- 当前主要在 UEFN 环境中进行测试和部署,收集 Fortnite 创作者的反馈。
- 未来将整合进 Unreal Engine 6,提供给所有 UE 开发者。
XVI. 反垄断斗争:以苹果为例
- 核心理念: 开放平台的重要性,回顾 Apple II、IBM PC 时代的自由创造和分发环境。
- 对苹果模式的批评:
- 封闭生态: 阻止用户侧载应用、阻止开发者直接与用户交易。
- 30% "苹果税": 对应用内购买强制抽成 30%,被认为是过高的“垃圾费”,扼杀开发者利润,抬高数字商品价格。
- 选择性收费: 对不同类型的交易收费标准不一。
- 扼杀竞争:
- 不允许第三方应用商店。
- 限制 Web 应用的能力(如存储、图形 API),使其无法与原生应用竞争。
- 利用 App Store 搜索排名、广告等方式进一步榨取利润或打压对手。
- 通过“软实力”(如审核速度)影响不顺从的开发者。
- 对游戏生态的影响: 导致移动平台充斥着重度氪金、利用玩家心理而非注重乐趣的游戏。
- Epic 发起挑战的原因:
- 坚信开放的元宇宙生态需要打破苹果、谷歌的垄断。
- Epic 自身的体量和跨平台用户基础(PC/主机为主)使其有能力承受失去 iOS 平台的风险。
- 其他开发者因害怕苹果报复(可能导致业务毁灭)而不敢发声。
- 对苹果的期望: 希望苹果回归初心(如 Apple II 的开放精神),拥抱竞争,最终这对苹果自身、开发者和消费者都有利。
XVII. Epic Games Store (EGS):策略与竞争
- 核心策略: 通过提供更优厚的条件(12% vs 30% 抽成)吸引开发者,打破 Steam 的垄断地位。
- 面临的批评与回应:
- 启动器体验“笨重” (Clunky): 承认 EGS 在用户体验和功能丰富度上与有 15 年积累的 Steam 存在差距,表示正在努力改进,但在功能优先级(商业功能 vs. 用户体验)上曾有权衡不足。强调不会完全复制 Steam 的所有功能(如内置论坛)。
- 独占协议 (Exclusivity Deals):
- 性质: Epic 通过提供资金、营销支持等激励措施,换取游戏在 EGS 限时独占,这是开发者自愿的选择,而非强制。
- 目的: 作为市场后来者,需要提供独特的价值(独占内容)来吸引用户,因为在无法进行价格竞争(开发者因惧怕其他平台报复而不愿降价)的情况下,内容是主要的竞争手段。
- 效果: 对某些大作(如无主之地)效果较好,对一些依赖平台曝光的小游戏效果不佳。
- 争议: 理解部分玩家希望所有游戏都在 Steam 的心情,但认为这是打破垄断、促进竞争、最终让开发者和玩家受益的必要手段。
- 长远目标:
- 推动行业降低抽成比例。
- 促进跨平台社交和游戏体验(通过免费的 Epic Online Services)。
- 希望通过竞争最终让所有平台都提供更好的服务和更公平的条款。
XVIII. 游戏行业的未来与游戏设计
- 核心驱动力:乐趣 (Fun) 游戏公司必须持续提供有趣、有竞争力的娱乐体验。
- 社交化趋势:
- 与朋友一起玩(而非随机陌生人)的社交游戏体验正变得越来越主流。
- 梅特卡夫定律 (
$V \propto N^2$) 效应显著:能连接更多现实好友的游戏更具吸引力和用户粘性。
- 市场格局变化:
- 玩家时间和消费向少数大型、长线运营的多人社交游戏集中(如 Fortnite, Roblox)。
- 这些大型游戏凭借高收入进行再投资,迭代速度更快,形成“赢家通吃”的趋势。
- 高质量的单人游戏或小规模多人游戏仍有市场,玩家会将其视为从大型游戏中“度假”的选择,但开发者需要控制成本(如
$40M而非$300M预算)。 - 中等规模、缺乏独特吸引力的游戏面临的挑战增大。
- 优秀游戏的特质:
- 创造“活生生的世界”感: 让玩家感觉自己只是世界的一部分,充满探索可能(如 Zelda: BOTW, Skyrim, Red Dead Redemption)。
- 注重细节与“灵魂”: 顶尖游戏(如 RDR 的生态模拟)体现了开发者的匠心和热爱,赋予游戏独特的“灵魂”和氛围。
- 神秘感与正向互动: Fortnite 的设计鼓励积极的玩家互动和社区氛围。
- GTA 6 与长开发周期:
- 创造前所未有的质量和细节水平极其困难且耗时,无法准确预测工期。
- 修复一个问题可能暴露更多问题。
- Rockstar 以投入大量时间打磨出卓越品质而闻名,“好游戏不怕晚”。
- Epic 自身也面临快速迭代和保持高质量的压力。
XIX. 对人类未来的希望
- 数字世界的两面性:
- 社交媒体的负面: 充斥着负面情绪、政治极化、恶意行为和算法驱动的毒性。
- 在线游戏的正面: 在设计得当的游戏中(如 Fortnite),玩家之间(即使是陌生人)的互动往往是积极、友好和充满同理心的。
- 希望的来源: 人类在共享空间(无论是现实还是虚拟)中直接互动时,天然地倾向于共情、连接和积极交往。相比之下,纯文本、异步的交流更容易滋生误解和敌意。元宇宙/高质量的在线社交游戏有望放大这种积极的人类连接。