Tim Sweeney:Fortnite、Unreal Engine 与游戏的未来|Lex Fridman Podcast #467
Epic 能够持续运转的模式,是自有产品与提供给其他创作者的工具之间形成反馈闭环,而不是某一款爆款游戏。ZZT 将编辑器与脚本语言打包在一起;后来,Unreal 授权业务在游戏业务失利时为 Epic 提供资金,而当引擎收入落后时,游戏又反过来为公司输血。Sweeney 称,同时服务创作者与玩家,是“Epic 能取得巨大成功并挺过每一次下行周期的唯一原因”。
Fortnite 将7年积累的可复用内容压缩成4周的 Battle Royale 冲刺,并证明 Epic 的基础设施可以将并发用户从40,000扩展至15 million。Epic 由此从约300名员工、约$100M收入,发展到数千名员工和数十亿美元收入。这些现金如今支撑着一项有意为之的投资性亏损:高峰时每年超过$1B,如今为数亿美元,投入 Unreal Engine、Fortnite 以及开放的3D生态。
Unreal Engine 5 的优势,在于用协调一致的近似计算取代蛮力物理模拟,并让艺术家能够实时控制这些近似。Nanite 的目标是每像素约2个三角形,同时不出现可见的切换;Lumen 将光照从公里级几何体一直整合到像素和毫米级细节;MetaHuman 则把捕捉、动画、头发和次表面皮肤渲染结合起来。Sweeney 估算,30年间可用图形性能提升了约10 million倍,形成了他所谓的“完全可观测的照片级真实感”。
Unreal Engine 6 是一项持续多年的工程,目标是移除那些仍可追溯至 Unreal Engine 早期基础的架构约束。如今的游戏模拟仍基本采用单线程,因此 Verse 正围绕函数式逻辑、更强的编译期验证和推测性事务设计,以便安全地将对象更新分配到多个核心或节点。Epic 可能在2到3年后展示 UE6 预览版本,但没有给出确切日期:“我们解决难题。”
Sweeney 预计 AI 将放大创意产出,但不接受“提示词生成视频会直接取代可控3D制作”的论点。生成媒体缺乏稳定的场景知识和艺术指导;Unreal 的场景图精确且可重复,但构建成本高,而 AI 的表征虽然丰富,却是“糊状数据”。他认为更可能的融合路径,是让 AI 在持久、由艺术家控制的世界中生成或增强对象、动画和最终像素;但他也警告,编程模型仍难以处理真正的新问题,以及最终那1%的正确性。
元宇宙的逻辑已经存在于社交游戏基础设施中,并不依赖 VR、NFT 或加密货币。Sweeney 估计,大型社交游戏每月约有600–800 million参与者;Fortnite 自身达到每月100 million用户、约100,000个可玩岛屿,以及$400M的创作者经济。缺失的那一层是互操作性——跨平台身份、可携带的外观、共享社交图谱和收入标准——因为“你需要的是互操作性”,至于具体通过数据库、协议还是区块链实现,并不重要。
Epic 与 Apple、Google 和 Valve 的斗争,本质上是围绕分发经济学以及未来软件市场控制权展开的。Sweeney 对比了 Apple 和 Google 的30%抽成、已披露的 Google Play 约6%运营成本,以及 Epic Games Store 的12%抽成;他认为,守门人的限制让开放的元宇宙经济无法成立。他承认 Epic 启动器“很笨重”,部分独占表现不佳,但仍为超过$1B的游戏收入以外净支出、用于独占交易辩护:后来者不能只靠以相同价格提供同一目录,就撼动既有平台。
游戏行业正围绕持久型社交产品整合,给高效制作的单机爆款留下了更窄、但仍然可行的机会。Fortnite 达到110 million月活的历史高点,Sweeney 认为,类似 Metcalfe 定律的效应会将参与度和再投资推向那些聚集玩家现实朋友的游戏。他的标准依然简单:“人们玩游戏是为了快乐。”可行的模式,要么是长期存在的多人世界,要么是制作成本约$40M、而非经济上不可承受的$300M的优秀“度假”。
1. 一万个小时之所以重要,是因为每个项目都填补了一个知识缺口
Sweeney 大约11岁时,第一次在哥哥 Steve 新买的 IBM PC 上编程。他花了几天学习 BASIC,很快就“彻底上瘾”。相比人的名字,他对最早写下的代码记得更清楚,因为每个挑战都暴露出一个个人学习障碍,或编程语言设计本身造成的真实摩擦。
从大约10岁到20岁,Sweeney 估计自己在任何商业产品发布之前写了10,000–15,000小时代码。产出包括文字模式的接物游戏、数据库、公告板系统,以及一门带有自己编译器的 Pascal-like 语言;他经常是因为不知道现成工具该去哪里买,才决定自己做一个。
他对那套熟悉的“小时数决定成功”叙事做了重要修正:“不只是小时数。”他逐个项目推进,朝着那些看起来有趣的方向前进,同时有意识地观察自己知道什么、不知道什么;存储、并发、解析、复杂数据结构和控制流,后来共同构成了 Epic 的基础。
2. 工程教育提供的工具,往往在多年后才找到用途
机械工程最初似乎与编程毫无关联,但 Sweeney 构建第一版 Unreal Engine 时,微积分、向量、矩阵、物理学和应力分析都重新派上用场。他把这种延迟整合比作“Karate Kid 时刻”:先刷墙、打蜡,后来才意识到这些练习其实是在训练一套完整能力。
Sweeney 认为教育的核心是获取知识,而不是积累证书。大学成绩和文凭或许能向雇主传递价值,但“这一切真正的目的,是学习”;工程训练要求解决一整条困难问题链,即便他后来从未以机械工程师为职业,这种严谨性仍然非常有价值。
他用 PageRank 说明更广泛的道理:刚接触特征向量时,它似乎毫无用处,却后来成为 Google 早期搜索优势的核心。程序员应该大量写代码,艺术家应该跨风格创作,而所有人都应该学习数学,因为没人知道储存下来的哪一条知识,会在未来解锁某个问题。
3. 缺乏结构的童年,为实验提供了复利空间
Sweeney 担心,成绩、作业和被排满的生活,正在挤压塑造他这一代人的自由。他小时候经常只被要求“天黑前回来”,因此有时间探索树林、造卡丁车,把废旧电子元件改造成想象中的宇宙飞船面板,并在没有成年人规定用途的情况下推进项目。
这种自由带来了不同结果:有人看电视,有人社交,也有人认真造东西;但它同样让创业显得平常。孩子们会割草、耙树叶、把自己的作品拿给邻居测试;Sweeney 用割草赚来的钱买了最早的电脑,也一次次观察当地孩子试玩未完成的游戏,然后才决定公开发布。
4. 游戏最初吸引 Sweeney,是因为它们可以被逆向工程
Atari 的 Adventure 和文字冒险游戏 Zork,是对他影响最大的两款游戏。Adventure 用简单图标构建出城堡、巨龙和宝剑;Zork 则通过“向北走”“捡起宝剑”等指令,让玩家在脑海中生成一个复杂世界,尽管游戏完全没有画面。
游戏很快变成了一门工程课程:Sweeney 学会移动角色、解析语言、构建城堡和保存关卡。更重要的是,他发现了游戏与制作游戏的工具之间的分离——“你拥有的工具越强大,就越能释放自己或他人的创造力。”
他说,在 Fortnite 之前,自己通常是为了弄清游戏如何运作而玩游戏。Wolfenstein 或 Doom 出现后,他会轻微移动鼠标,逐个“像素、像素”地检查画面,推断渲染技术;娱乐的一部分,就是破解一个可以被自己复现的宏大技术谜题。
5. ZZT 的起点,是一个无聊到不想再用的文字编辑器
Epic 的第一款商业游戏并非从游戏开始。Sweeney 从 Apple II 转到 IBM PC 后需要一个文字编辑器,于是先实现光标移动和编辑功能,随后把光标换成笑脸,再给文字字符赋予游戏行为——墙壁、危险物和移动物体——直到编辑器变成了一个造世界的工具。
他有意将词汇限制在约20–30种对象:足以组合出有吸引力的关卡,又不会让玩家不堪重负。相互连接的棋盘组成了一个可导航的世界,这个项目后来成为 ZZT,于1991年发布。
发布前,Sweeney 邀请邻里的成年人和孩子来“自己搞明白”,并强迫自己不要帮忙。他记录他们在哪里卡住、发笑或感到无聊,再据此迭代;这是一种非正式的用户体验研究。
ZZT 采用共享软件分发:3个章节中的第1个免费,后续2个通过邮件购买,每个$30。每天3或4笔订单就能带来约$100收入,但更重要的验证在于,上传到本地公告板的软件,不需要制造或实体分发,就能传播到世界各地。
6. 把编辑器交给玩家,确立了 Epic 的运营模式
Sweeney 发布 ZZT 时,将编辑器和脚本语言与游戏一起交付,让玩家成为创作者,并学习基础编程。几十年后,成年人仍会告诉他,自己是在制作 ZZT 世界中长大的;产品能够延续,是因为它不局限于他亲自创作的3个章节。
这一选择成为 Epic 最初的原则:制作“精彩的娱乐”和“精彩的工具”,再把工具分享出去,让其他人构建公司从未预料到的东西。Unreal、Fortnite Creative、Unreal Editor for Fortnite 和 Epic Online Services,都是同一逻辑的延伸,而不是互不相关的业务线。
Sweeney 将这种双重服务对象视为 Epic 的生存机制。有时,引擎授权业务在公司没有爆款游戏时提供资金;另一些时候,游戏又为引擎开发提供资金。按他的说法,同时服务创作者和玩家,是 Epic 挺过游戏行业残酷财务周期的“唯一原因”。
7. 公告板同时揭示了数字富足与分发摩擦
在消费者能够接入互联网之前,用户通过电话线拨号连接一台台电脑。Sweeney 的第一台300波特调制解调器每秒只能传输约30个字符;热门公告板共用一条争夺激烈的电话线,拥有几百名用户,并形成了编程、新闻或盗版 Apple II 游戏等不同社群。
稀缺性反而促进了分发:用户通过上传新文件并声称自己是第一个带来它的人来获得地位,于是 ZZT 在公告板之间自然传播。到1990年代,大学互联网基础设施向消费者开放,可触达的受众变成全球规模,数字交付也突然摆脱了零售业的实体约束。
商业游戏随后短暂地反向发展,因为大型3D作品需要盒装 CD-ROM 分发。数字化转型早期由 BitTorrent 和盗版主导:有些游戏可能卖出100,000份,却触达2 million用户;后来 Steam 让合法下载足够方便,许多玩家才更愿意付费而非盗版。
8. 独立开发者应避开拥挤赛道,并先赢得扩张资格
Epic 早期的差异化来自分发,而不是制作规模。共享软件降低了进入门槛,推动朋友间传播,并触达了传统发行商零售网络无法触及的受众;Sweeney 称,这正是后来改变游戏行业的免费游玩逻辑的早期版本。
ZZT 选择在成熟游戏薄弱的地方竞争,而不是追赶它们的图形水平。它的文字字符看起来很原始,但编辑器把它变成了一个平台;这与 Bill Budge 的 Pinball Construction Set 相呼应,也预示了 Minecraft、Roblox 和 Fortnite Creative。
Sweeney 的警告是绝对的:如今每个主要品类都存在“巨大的竞争”,除非产品真正达到世界级,否则传统进入者很难胜出。更现实的路径,是做出别人没有的东西,哪怕只统治一个小受众,也要先赚到现金,再向更大目标再投资。
他更认可多阶段推进,而不是从想法直接跳到商业巨大成功的幻想。市场领导者通常是第1或第2个进入者,并在此后不断复利自己的位置;后来者通常只有在 incumbent 极其严重地失败时,才有机会获胜。
9. Doom 第一次让 Sweeney 认定 Epic 无法竞争
Wolfenstein 的30帧每秒环境让3D世界显得有人居住,而不仅仅是被显示出来;Doom 则将纹理、光照、艺术和声音结合成一种强烈的感官体验。对 Sweeney 而言,John Carmack 的作品“不是领先一个创新飞跃,而是像有十几个创新同时交织在一起”。
这种冲击起初令人沮丧,而不是振奋:Sweeney 因为无法想象自己如何赶上 Doom,“放弃编程大概6个月”。随后,Michael Abrash 的文章和汇编代码示例把纹理映射拆成了可理解的组件;看到机制之后,惊叹重新变成了“哦,我也能做到”。
几名 Epic 开发者先各自独立实验,之后公司才将最强的2D人才集中到一个3D项目上。没人发布过3D游戏,因此角色是在过程中摸索出来的:Sweeney 起初主动承担编辑器,看到现有汇编代码后又亲自编写3D引擎;James Schmalz 制作生物,Cliff Bleszinski 成为编辑器的第一个关卡设计客户。
Epic 将 Unreal 团队扩展到约20人,在当时是很大的规模,同时持续招募能力异常突出的学生和职业早期创作者。公司无法在薪资竞价中取胜,因此比较优势在于找到那些被忽视、但能力超过职业履历所显示水平的程序员、艺术家和音乐人。
10. Unreal 有3年半时间都处于“再过6个月”的状态
Unreal 开发持续了3年半,但团队始终认为距离发布大约还有6个月。大多数人每周工作70–80小时,却不知道当前问题之后还会出现什么新的未知问题;Epic 也曾多次接近资金耗尽。
Sweeney 对技术结果保持信心,因为各个组成部分看起来都能解决,但他始终担心现金。MicroProse 的两份引擎授权带来了约$500,000,GT Interactive 等其他客户也贡献了收入;在 Unreal 发布前,引擎业务成为公司的生命线。
这种对客户的依赖让支持服务成为文化核心。Epic 建立邮件列表,由自己的程序员和艺术家回答授权客户的问题,因为正是这些合作伙伴在为开发提供资金;商业转型永久地将游戏制作与严肃的第三方技术业务连接起来。
11. 每日迭代击败了正式管理
Unreal 的跨学科团队缺乏有经验的管理者和传统流程,但每天会生成数个版本。程序员暴露新功能,艺术家把它们用于关卡,而结果会立即揭示缺失的工具;Sweeney 将这种迭代循环视为“游戏成功的关键要素”。
他的比较毫不留情:每周迭代一次的工作室,最终成果会“差得非常非常非常多”,不如每天改进可玩产品的团队。Epic 的协作依靠的与其说是组织架构,不如说是个人热情、快速反馈,以及有才华的人实时学习彼此的专业。
Sweeney 认为 Epic 能够生存,不是因为“出色的管理、出色的规划或出色的融资”,而是因为参与者“纯粹的才华和意志力”。他自己的作息大约是中午工作到凌晨2点或3点,每周约60小时编程、5小时协调、5小时处理业务。
12. C++ 与昂贵硬件换来了编程吞吐量
Unreal 最初采用16位 Windows 上的 C,随后经历32位 DOS 扩展器和 Windows NT,最终转向 C++。Sweeney 原本更喜欢 Pascal,但随着系统堆积,C++ 简化了足够多的问题,开发最后2年半使用的是32位 C++。
他仍认为 C++ 是占主导地位的性能基础设施,因为“它能在规模上解决所有问题”,尽管通常需要承受大量手工操作。其他语言可能在特定领域更干净或更强大,但无法覆盖所有需求,会限制通用引擎的发展。
Sweeney 最终按照最大产出重新安排工作站:先是一台24英寸、约100磅、分辨率1920×1200的 CRT,随后在1996年购入一台$7,000的 Dell,搭载200 MHz Pentium Pro 和1 GB内存。更快的编译速度和更大的工作空间,都是对开发者生产力的资本投入。
在90 MHz Pentium 上,他将纹理映射压缩到每像素6个 CPU 周期、共11条指令。程序员可以精确理解并微调机器;现代乱序执行让这种直接控制基本变得少见,但类似的底层掌握能力仍存在于专业 GPU 工作中。
13. 构造几何将30小时冲刺转化为艺术家杠杆
Unreal 的实时构造实体几何允许艺术家增减形状,而不是手工拼装每一扇门框或开口。Sweeney 在一次30小时的连续工作中实现了这一突破,随后看到 Schmalz 仅用3个操作,就将两个巨大的圆环互相嵌套,并减去一个圆柱体。
这套实现建立在 Bruce Naylor 的二叉空间分割树之上,Carmack 也使用过类似技术,但 Sweeney 仍需要对约14种几何情况进行分类。同平面多边形朝向相同或相反,构成了最困难的尾部问题:哪些表面应保留、消失或被切分?
他的总结远不止适用于图形学:“写出99%正确的软件相当容易,真正困难的是那1%。”大多数情况可以通过推导解决,但有些必须尝试不同方案并观察输出;睡了一觉后,他回来时仍惊讶于系统确实运行成功。
14. 实时光照是一组受控近似的组合
Sweeney 反复强调的图形学原则是:“物理定律我们都知道”,因此正确渲染在概念上简单,在计算上却不可能。光子追踪可以复现现实,但速度慢了 millions 或 billions 倍;每像素6周期的纹理映射,无法再承担额外30周期的光照计算。
光照贴图提供了折中方案:在粗粒度的世界空间网格上计算照明,例如每英尺一个值,将其存成纹理,再在采样点之间插值。由于采样稀疏,Epic 可以负担更丰富的效果——彩色灯光、闪烁火炬、焦散、脉冲和多个叠加光源。
从光源射向表面的光线,可以判断中间几何体是否形成阴影。Sweeney 的动态实现只能达到每秒约半帧,因此他预先计算阴影关系,同时为固定光源保留运行时变化,让火炬可以动态闪烁,而阴影结构保持不变。
艺术家一次次超出他对功能的想象。程序员可能只暴露一个小型下拉选项,关卡设计师却会将其与无关系统组合,创造出“远远更强大”的结果;Sweeney 认为,这正是受限媒介与发明之间的关系,也类似文艺复兴时期的绘画。
15. 一次造假的雾气演示,引发了真正的数学突破
一家芬兰硬件初创公司展示了彩色灯光穿透体积雾的效果,Sweeney 以为对方已经解决了实时计算,于是又开始了一次30小时编程。这个视觉问题要求沿观察者到可见表面的路径,累积雾气受到的照明。
机械工程教育提供了那个被遗忘的工具:线积分。光照衰减涉及平方反比,一张参考表显示,变换后的积分可以通过反正切求解;由于逐像素计算仍然太昂贵,Epic 像使用光照贴图一样,在粗粒度结构上对结果进行采样。
多年后,Sweeney 告诉公司一名工程师,那张截图曾启发 Unreal 的实时雾效果。对方回答:“哦,不,我们作弊了。我们只是用 3D Studio Max 把它渲染出来。”但这场障眼法依然展示了一个足够有说服力的目标,最终促成了真正的发明。
16. Carmack 最鲜明的纪律,是愿意丢弃优秀代码
Sweeney 最钦佩 Carmack 对既有工作的疏离感。许多标志性技术都是第7或第8次实现:先写出来、学习、扔掉,再重建,直到结果不只是够用,而是现有条件下最好的方案。
这条经验并非普遍适用,而是有条件的。当某个子系统的性能、质量或能力具有决定性意义时,程序员不应满足于第一个或第二个能运行的答案;持续迭代至接近完美,可能定义一个产品类别,正如 Carmack 的重写重新定义了实时3D。
Sweeney 自己的雾气故事提供了互补经验:即使演示背后的机制是假的,演示也能揭示某种可能性。面对看似魔法的结果,正确反应是拆解它、检验假设,并判断能否通过不同机制达到同一结果。
17. Unreal 在旧基础不断积累债务的同时重建渲染系统
经过30年,Sweeney 估计 CPU 性能提升了约100,000倍,可用图形性能提升约10 million倍——从 Pentium 90 的约90 megaflops,提升到当代 NVIDIA 硬件约20 teraflops。因此,每一代渲染技术都需要大规模替换,而不仅是渐进式打磨。
Unreal Engine 1 以软件渲染为目标,后期才加入对 3Dfx Voodoo 1 的支持。Unreal Engine 2 拥抱 GPU 加速;DirectX 9 的可编程着色器带来了 Unreal Engine 3 的像素着色、动态灯光、阴影和早期多核渲染;Unreal Engine 5 的 Nanite 与 Lumen 则带来了最大的一次跃升。
并非所有东西都同步发展。文件管理和网络系统仍是 Sweeney 1998年设计的演进版本,造成状态丢失等问题;核心游戏模拟也仍基本采用单线程,即便 CPU 有16个核心,因为让 Epic 和授权客户安全编写并行游戏逻辑要困难得多。
Unreal Engine 6 的目标,是处理这些继承下来的限制,而不仅仅是增加图形功能。Lex 称从单线程转向多线程“令人恐惧”;Sweeney 同意,现代基础必须吸收原始架构决策之后计算领域学到的一切。
18. Nanite 只在画面能够呈现几何细节的地方花费几何预算
现代工具可以轻松构建包含 billions 个多边形的场景,真正不可能的是把它们全部渲染出来。Nanite 的目标,是生成与完整细节场景无法区分的画面,同时根据每个对象在画面中的可见尺寸,动态调整其几何复杂度。
Sweeney 引用 Nyquist 采样定理:超过足够采样率后,源数据增加的细节无法改变可观察信号。在 Nanite 的粗略几何表述中,每个屏幕像素约2个三角形,应该与上千个三角形无法区分;更少的三角形则会开始暴露伪影。
传统 GPU 三角形光栅化器在一个三角形覆盖约10个像素时表现良好,但接近单像素时会变得低效。Brian Karis 的突破,是绕过这条固定功能三角形路径,改用着色器计算交点,更直接地走向最终像素。
完美的静态画面还不够。早期的细节层级系统在几何体切换时会明显“跳变”,令世界看起来在抖动;Nanite 更深层的工程处理减少了这些时间上的转换,直到它们可能在统计上仍存在,却不再干扰运动中的观察者。
19. Lumen 将间接光纳入模拟
早期引擎只照亮被光源直接照射的表面,其余部分保持黑暗。Lumen 则模拟全局光照:白光照到红墙上会损失蓝光和绿光,反射出来的红光又会给附近地面和后续表面染色,并经历多次反弹。
Daniel Wright 采用了一个颇具争议的方法,计算从建筑物投射的宽广阴影到毫米和像素细节等不同尺度的光照,再将这些层级整合起来,同时不产生可感知的边界。理想状态是艺术家摆放灯光后“一切自动生效”,而不是为每盏灯配置专门技术。
屏幕空间光照通过可见像素和深度推断遮挡关系,处理部分最细微的污垢、冰雪阴影。它并不完整符合物理,却足够有说服力,体现了 Sweeney 对图形学的定义:图形学是“对那些完全不可计算的物理定律,进行越来越有效的近似”。
20. 照片级真实世界仍是由多套系统共同完成的艺术成果
Epic 的 Marvel 1943 演示结合了几何体、Lumen、材质层、反射、积雪、污垢、雾气和变化中的灯光,但 Sweeney 坚持认为“真正的英雄”是制作团队的艺术家和技术艺术家。他们把技术推到了 Epic 自己都没意识到可以达到的程度。
材质分层允许创作者改变积雪或结冰在表面的累积方式,同时由引擎管理过渡。反射混合了捕捉的纹理、单独灯光和反弹效果;熟练操作者仍需选择、调节和协调这些效果,而不是按下一个写着“照片级真实感”的按钮。
燃烧的垃圾桶由独立的火焰和烟雾粒子系统、物理效果,以及烟雾中的光照衰减共同构成。Sweeney 认为,这是第一个让他觉得烟雾不再像电子游戏的演示,但他将突破同样归因于艺术能力的成熟,而不仅是粒子技术。
剩下的产品挑战是易用性:新手还无法仅通过选择几种材质,就构建出同样的场景。Epic 希望引擎吸收更多技术艺术决策,让创作者能够指定外观,而无需亲自掌握每一层渲染。
21. 人脸为图形质量设定了高于周围世界的门槛
人类是最难处理的图形问题,因为进化训练人们从微小的面部线索中判断情绪和意图。观众可以容忍建筑阴影略有错误,但人脸上任何一个错误组件,都会把注意力拉向“恐怖谷的错误一侧”。
MetaHuman 捕捉让表演者站在一个装有数十台高分辨率、高帧率摄像机的球体内,记录大范围动作。一个人可能需要数小时捕捉和数千小时处理,因为目标不仅是脸部形状,还包括肌肉、肌腱、脂肪和表情之间的互动。
Epic 也在跨文化、跨洲、跨年龄和不同面部特征捕捉 thousands of people。目标是建立足够广泛的数据集,从代表性数据中学习高质量知识,最终重建一张新脸,甚至可能只需要一张 iPhone 照片。
渲染还要为头发和次表面皮肤分别建立近似。每根发丝和每个光子都无法计算;皮肤并不不透明,因此油脂表面反射和在皮肤下传播的光线,必须与表情协同。涂漆的人偶之所以失败,正是因为实体表面无法复现这些光学线索。
22. MetaHuman 是放大器,而不是已经解决的数字人问题
MetaHuman Creator 不再要求从零开始雕刻每张脸,而是使用源自捕捉面部空间的可调参数。创作者可以把结果带入 Unreal,添加模拟服装和头发、调整材质,并将其整合进实时场景。
MetaHuman Animator 可以通过简单到 iPhone 的捕捉硬件转移面部表演。重定向并非字面复制:演员的解剖结构可能与角色不同,因此系统必须保留预期表情,而不是机械复制肌肉位移。
仅凭音频制作动画更难,因为说话会调动整张脸,而不仅是嘴唇。生成的声音要求系统推断嘴部运动、面部表情和意图;Sweeney 说,更广泛的努力可能“总共需要50年”,而现在大约只走了30年。
23. 虚拟制作同时改善表演与灯光
Unreal 服务于游戏、汽车设计、建筑、工业可视化和好莱坞制作,因为这些领域都需要交互式3D模拟。它的范围从照片级真实感延伸到 Pixar 式风格化和 cel shading,物理、动画与人类角色共享同一个底层系统。
在电影制作中,大型 LED 墙正越来越多地用实时 Unreal 场景替代绿幕。传统合成经常暴露光照不匹配;LED 环境可以用场景的真实颜色照亮演员,同时让演员看到拍摄地点、调整表演方向,并对观众最终会看到的内容作出反应。
Sweeney 将机会归结为受成本约束的生产力。获得奥斯卡的短片 WAR IS OVER! 是一个里程碑,但更大的变化在于,实时工具减少了昂贵的迭代,并改善了虚拟布景、实体灯光与人类表演之间的互动。
24. AI 生成的像素缺乏制作世界所需的连续性
Sweeney 认为,行业对 AI 视频的进展“过度乐观”。模型可能生成一张令人印象深刻的画面,却无法在不同镜头之间维持角色、物体和故事逻辑,因为它缺乏对场景、周边世界以及叙事弧线的明确理解。
引擎拥有场景图:精确的对象、几何体、纹理、声音、动画和状态,可以从任何视角反复渲染。AI 在“糊状数据”中包含更广泛的知识,但提示词稍有变化就可能改变整个结果,使精准艺术指导和可复现性变得困难。
他预期的融合是双向的。AI 可以根据 Quixel 的 tens of thousands 份扫描生成新树木,增强对象或对 Unreal 像素做后处理;引擎则可以向 AI 提供完整对象列表,接收建议,并将其变成场景中持久、可选择、可编辑的组成部分。
Lex 与 Mark Zuckerberg 的 VR 对话提供了一个早期例子:捕捉到的3D面孔提供了稳定结构,AI 图像增强器则恢复了普通渲染中丢失的细节。传统图形学和提示词模型单独都无法提供完整结果。
25. AI 可能扩张创意工作,同时暴露薄弱的软件抽象
Sweeney 预计 AI 会成为“放大人类创作者力量的倍增器”,而不是全面替代。他承认存在不确定性,Lex 也保留了反面观点:即便长期技术最终创造更多机会,由炒作驱动的落地和裁员仍会带来即时且真实的痛苦。
他用合成器和 Photoshop 作历史类比。两者起初都被认为不是真正的艺术,后来却成为艺术家能够控制的工具;AI 今天令人疏离,是因为它可以生成一整张图,却不一定能听懂“把某个对象的颜色改掉”这种简单指令。
编程助手在数 million 个代码库已经包含所需模式时表现出色,但面对复杂、原创的工作就会挣扎。它们生成的代码可能“差不多能运行”,却把更难的1%留给人类;这正是 Sweeney 在计算几何中遇到的正确性尾部问题,因此他建议用真正困难的问题测试助手。
生成样板代码很有用,但也反过来批评了语言设计。让 AI 再写一个排序程序,只会得到“另一个可能有 bug 的排序函数”,与 million 个类似函数并列;更强的模块化库可以消除样板工作,把人类和 AI 留给那些值得重新写代码的独特问题。
26. 接近照片级真实的世界,可能早于令人信服的合成人类
当被问及模拟何时能够接近可观察现实,Sweeney 的回答是“肯定少于20年”。丛林和城市等非人类环境可能只需几年,而面孔、对话、意图和行为则面对更高的感知标准。
10年前,他认为即使拥有无限算力也会失败,因为没有人拥有实现真实智能的算法。生成式文本改变了他的看法:文本层面的人类模拟已经足够可信,令人信服的行为模拟可能在5年内出现,但他明确补充:“我不是说这是个好主意。”
Lex 认为当前语言模型实际上已经通过图灵测试;Sweeney 回答说,这个测试并不特别有用。双方更窄的共识是:快速进步的语言、语音、情绪和数字人技术,可能创造出足以让观众落泪的场景,即便意识本身仍无法解释。
对于现实是否也是模拟,Sweeney 没有结论。嵌套模拟只会把问题转移到“基础现实”上;数学存在、量子测量和意识仍同时属于神学与科学问题,而他说,主流物理学基本已经放弃了这种整体性探究。
27. 更高的真实感会制造 Epic 不希望游戏跨越的边界
Sweeney 区分了娱乐和一种旨在无限留住人的替代现实。Epic 希望朋友们在工作与生活之间一起玩;随着模拟越来越引人入胜,开发者必须问“我们是否应该走那么远”,并决定哪些能力需要克制。
Lex 提出了更尖锐的伦理问题:足够真实的合成人类可能遭受痛苦、爱、害怕死亡或经历折磨,从而形成法律不应允许跨越的边界。Sweeney 没有声称自己知道答案,但同意,更真实的人类模拟会带来超越当下明显虚构、夸张游戏暴力的难题。
他的运营原则是,开发者存在的目的,是通过乐趣、陪伴和消遣“让人们的生活变得更好”,而不是成为生活过于庞大的替代物。他说游戏开发者总体上是善意的,但也承认,未来的真实感可能要求明确的法律和文化边界。
28. 元宇宙是社交游戏,而不是某一款头显或代币
Sweeney 开玩笑说,元宇宙是“一个股价会随着谁在什么日子说了什么而涨跌的概念”。他稳定的定义更简单:朋友聚集在共享的3D世界中,在不同体验之间移动,同时保持社交连接。
Fortnite Battle Royale 捕捉了这一核心,因为跨平台玩家可以一起玩、说话,并维持同一个社交体验。Rec Room 的 VR 台球或篮球是另一种表现,但 VR 只是可选硬件,而非定义层;Battle Royale 玩家并没有普遍迁移到头显。
他估计,大型多人社交游戏每月已经有600–800 million参与者。加密货币和 NFT 同样只是价值的可选表现形式:“你需要的是互操作性”,它可以通过区块链、传统数据库、协议或标准机构实现。
Fortnite Creative 和 UEFN 将这一逻辑从单一开发者的模式,扩展成不断增长的创作者品类目录。Sweeney 认为,今天的生态类似早期互联网:已经真实存在,但距离成熟形态仍很远。
29. Fortnite 的7年绕路,变成了4周突破
Fortnite 起源于2011年的一次内部一周原型活动,员工分组制作游戏。最初的循环已经包含持久的核心想法:白天建造堡垒,夜间抵御僵尸。
多年来,Epic 将视觉方向从写实转向更易接近的风格化,并通过持续存在的 RPG 和 MMO-like 系统不断演进,最终形成 Save the World。该模式于2017年初发布,收回了预算并取得中等回报,却没有带来颠覆性变化。
PUBG 崛起后,团队产生了这样的想法:“如果它拥有 Fortnite 的建造功能,那一定很酷。”大约30人进入战情室,用4周完成 Battle Royale 玩法,借助了7年间积累的环境、角色和资产。
发布后,Epic 从约300名员工扩展到数千人,收入也从约$100M跃升至数十亿美元。压缩后的冲刺之所以可行,是因为可见内容已经存在;这4周创造的是缺失的模式,而不是从零开始完成整个制作。
30. 可扩展的基础,避免指数级需求摧毁 Fortnite
自2012年以来,Epic 一直在为多人游戏构建账户、登录和后端系统。发布后,在线团队花了约1年,将并发用户从约40,000扩展到15 million。
Fortnite 将职责分配给100人游戏服务器、账户服务、共享数据库和数百个其他微服务。扩容意味着定位每一个新瓶颈、增加冗余,并确保某个组件饱和时不会让整个产品停摆。
云基础设施让 Epic 无需自行购买数据中心,就能应对需求。当巴西某个周末耗尽可用容量时,Amazon 似乎在下一次流量高峰前运来了价值 millions of dollars 的设备;Sweeney 的评价是:“感谢上帝,有 Amazon Web Services”,以及那些没有被点名的众多运营人员。
他认为,最初的架构具有生死攸关的意义;如果基础不够稳定,Fortnite 在爆发时只会变得无法游玩。如此规模下的产品质量,依赖的不仅是 Battle Royale 设计,也同样依赖隐藏在背后的账户、数据库和容量工程。
31. Fortnite 的利润正在为一场有意亏损的转型提供资金
Fortnite 每年产生数十亿美元收入,仍是 Epic 收入的主要来源,此外还有 Unreal 授权、Rocket League、Fall Guys 以及 Fab 等市场。但 Epic 仍在支出超过收入,因为公司正在资助一个更广泛的实时3D平台。
在某一阶段,年度支出超过收入$1B以上;Sweeney 称这是不可持续的,并将调整与痛苦的裁员联系起来。目前年度亏损为数亿美元,由早期利润和外部投资带来的数十亿美元现金支撑。
他的比喻非常明确:Epic“不是一口从地下抽油的油井”。公司正在利用当前现金流,转型成为未来的科技公司,接受那些可能需要3年、4年或5年才产生收入的项目——前提是它们最终真的能够落地。
32. 今天的游戏市场切碎了每一种身份和购买
Sweeney 以“游戏的当下,以及为什么它很糟糕”开启互操作性论证。Fortnite 拥有约100 million月活和约100,000个岛屿,但转到 Roblox、Call of Duty 或 League of Legends,就意味着更换应用、身份、朋友、控制方式和已拥有的物品。
主机级别的好友系统只在单一硬件孤岛内部解决了问题。PlayStation、Xbox、Nintendo、Steam 和 Epic 身份与游戏专属身份交叉存在,玩家因此为现实中同一批关系,拥有多个互不相关的名字和社交图谱。
Epic 提议的是联邦式体系,而不是由一个所有者统一控制:Xbox、Fortnite/Epic 和 Steam 的名字可以共存,并在同一个空间里互操作。Epic Online Services 向其他开发者免费开放 Fortnite 的社交基础设施,因为 Sweeney 希望跨平台网络成为通用基础设施,而不是新的租金来源。
他引用 Metcalfe 定律:多人游戏连接的每个用户现实朋友越多,价值就会以不成比例的速度增长。这种动力会奖励那些消除平台隔离的游戏,并惩罚社区被困在孤立商店或主机中的体验。
33. 可携带的外观可以统一经济体系,而不必抹平游戏差异
Sweeney 不接受 World of Warcraft 的宝剑必须在 Fortnite 中发挥作用;游戏规则和竞技道具仍会属于各自的游戏。服装、汽车等非 pay-to-win 商品更有前景,因为主要多人游戏中或许有70%拥有足够相似的表现需求。
Fortnite 将参与度与变现分开。Battle Royale 和创作者岛屿提供让玩家重视身份的乐趣,物品商店则产生收入;“如果你根本不玩任何 Fortnite 游戏,为什么要买 Fortnite 服装?”
Epic 将物品商店的盈利支出归因于参与度。如果玩家40%的时间在 Battle Royale、60%的时间在创作者模式中,那么可分配利润就可以按这一比例流动,帮助 Fortnite 的创作者经济达到约$400M,并继续增长。
Only Up 模式体现了机制的细微差异。玩家喜欢攀爬由物体堆成的高塔,但因为他们很少看到其他角色——通常只能看到对方的后背,或上方角色的“屁股”——外观消费的相关性很弱;能够更明显展示身份的模式,商业价值更强。
34. 开放标准必须从文件扩展到行为和商业
现有3D标准已经能够传输底层内容:Pixar 的 Universal Scene Description 可以表示场景图,glTF、图像和音频格式则能在 Unreal、Unity、Blender 等软件之间保留几何体、纹理、动画和声音。
缺失的标准,需要描述可携带服装、允许的尺寸、能力和收入分成。如果游戏同意尊重兼容购买并在生态之间分配经济利益,创作者就能把一个身份对象卖入更广泛的市场,而无需让所有游戏共享同一套玩法规则。
内容规模最终可能达到 exabytes。一次高细节 Fortnite 更新可能约60 GB,而这只是 Fortnite Creative 生态的一小部分;未来的游戏因此需要标准,让 millions of authors 的作品能够共存,而不是作为一家公司的固定捆绑包发布。
Sweeney 想象的是大陆级或地球级空间,环境、车辆、武器和规则分别来自不同创作者。玩家可以在不同人维护的区域之间移动,却无需离开一个无缝模拟;这是 Fortnite 和 Roblox 所指向的方向,只是目前还无法以完整的组合规模实现。
35. Verse 将失败和多重结果视为普通的表达式结果
Epic 正在构建 Verse,使其成为面向大型模拟和可复用模块的函数式逻辑语言。其设计遵循 Niklaus Wirth 的原则:力量应来自少量可组合的功能,而不是不断增加互不相关的构造。
在传统语言中,一个表达式通常产生一个值;在 Verse 的模型中,它可能产生0个、1个或多个值。0代表失败,1代表成功,多个代表迭代;条件、变量绑定和循环因此可以共享统一机制,而无需不断累积独立的 Boolean、迭代器和查询系统。
成功的条件可以绑定值,并让这些值在分支内部可用,因此检查与提取信息可以同时完成。循环可以消费任何产生多个结果的表达式,让类似数据库的选择和筛选更接近日常代码,而不是嵌入一个独立的 SQL 系统。
有经验的 C++ 开发者起初会用 C++ 式写法笨拙地编写 Verse,几个月适应后才变得更简洁。通过 Fortnite 学习的初学者则往往会立刻内化这种模型,写出令人意外的复杂查询,因为他们从未形成旧语言中的直觉。
36. Verse 旨在让被接受的代码越来越值得信任
持久的元宇宙需要许多作者在不关闭世界的情况下进行实时升级。新模块必须与旧接口保持兼容,这会把看似运维层面的部署问题,转化为类型系统问题:哪些变化仍然向后兼容。
Verse 更大的目标借鉴了 Curry–Howard 对应:类型可以表示命题,值可以构成证明。排序函数的类型未来或许不仅能表达“它返回一个整数数组”,还可以表达“它返回包含相同元素且已经排序的数组”。
Sweeney 提到 Lean 和 Coq 这类定理证明器,它们接受的机械证明不能撒谎。Verse 希望逐步将更多这种严谨性带入主流语言;开发者不必证明所有事情,但密码学、解压缩和安全敏感模块值得更强的保证。
实际目标很简单:“如果编译器接受你的程序,没有发出提示并告诉你存在错误,那么你的程序就应该能运行。”人为的规格错误仍然可能存在,但每一个能够移入编译阶段的属性,都能避免更昂贵的运行时 bug、补丁和安全失败。
37. 事务可以把并发问题从创作者的问题变成引擎的问题
Unreal 仍然主要在一个模拟线程上更新 Fortnite 的玩法。玩家、敌人、火箭、汽车和其他对象都需要更新;在一场100人游戏中,每帧可能涉及 tens of thousands 次更新,因此单纯增加硬件核心无法消除架构瓶颈。
Verse 的拟议方案建立在软件事务内存之上。普通代码看起来像是在读写全局状态,但运行时会缓冲每个事务的变化,推测性地执行大量更新,再检查它们的读写是否冲突。
如果10,000次更新中有9,000次互不相关,系统就可以按任意顺序提交这9,000次,再丢弃或重跑发生冲突的1,000次。这样,并发复杂性就从 millions of creators 转移给 Epic 更小规模的语言运行时团队。
Sweeney 将这种架构与包含 millions of simultaneous participants 的演唱会或世界联系起来。10 million人并不需要10 million个完整的屏幕表示——屏幕像素还不到10 million个——但网络、模拟和层级近似仍然需要基础性工作。
38. Unreal Engine 6 是 Epic 各条研究线汇合的地方
Verse 已经通过 UEFN 以频繁、向后兼容的更新形式发布,每隔几个月就会增加重要 API。Epic 有意先在 Fortnite 创作者中测试它,之后再提供给希望获得完整 Unreal C++ 能力的独立开发者。
因此,Unreal Engine 5 的开发目前分成两条部分独立的战线:传统授权客户和 Fortnite 创作者环境。一些引擎功能还无法在 Fortnite 支持的7个平台上保持一致发布,而 UEFN 的编程能力又按照不同节奏演进。
UE6 的目标是统一这些线程:更简单的游戏编程、可扩展模拟,以及一次构建即可用于 Fortnite 岛屿、独立发布,或两者兼得。独立作品也可能选择加入兼容 Fortnite 的物品和开放共享经济。
Sweeney 表示,UE6“还要几年”,没有确切时间表;预览版本可能在2到3年后出现。拟议架构仍是雄心和迭代方向,并不意味着 million-player simulations 或完全验证的程序已经能够运行。
39. 独立开发者的杠杆来自工具、可复用内容和专业化
对个人和小团队开发者而言,Sweeney 将 Epic 的角色归结为生产力:创作者需要足够的杠杆,在现实预算内完成、发布并维护一款有独特性的游戏。Gavin Eisenbeisz 的 Choo Choo Charles 证明,单人开发者甚至可以主要依靠 Blueprint 可视化脚本,而非 C++。
Fab 等市场让团队可以买入或免费复用树木、岩石和其他通用资产,把稀缺劳动留给游戏的独特设计。其他专业人士可以靠出售这些组件谋生,让模块化内容本身成为一种创作者经济。
行业已经从一个人包办所有工作,转向艺术家、玩法程序员、引擎程序员和技术艺术家各自专注于狭窄领域。Sweeney 希望引擎和 AI 进一步模块化这些工作,让小团队能够组装出大规模体验,而不必重新制作每一项普通资产。
40. Epic 与 Apple 的斗争,关乎设备售出后谁控制软件
Sweeney 的基准来自 Apple II 和 IBM PC:买家拥有一台鼓励编程、安装和直接分发的机器,无需企业许可。Apple II 的文档甚至包含 ROM 源代码列表和硬件电路图,让用户能够理解或扩展整个系统。
他认为,移动端的守门机制构成了逆转。客户已经买下手机,但 Apple 阻止外部安装和开发者直接交易,并对数字交易选择性收取“30%的垃圾费”;Google 也采取了类似结构。
Sweeney 认为,这项税收会重塑产品设计。当商店、搜索广告和社交获客消耗约70%的收入后,操纵性的鲸鱼变现和 pay-to-win 机制就可能胜过围绕乐趣构建的游戏,而普通开发者的利润率无法吸收30%的抽成。
Epic 之所以能抗争,是因为 Fortnite 最大的用户群在 PC 和主机上,因此失去 iOS 会造成重创,却不会摧毁公司。多数领先移动业务无法承受被移除;审批延迟和 Apple 的其他“软实力”,则足以悄悄恶化经济条件,让公开反抗变得不值得。
41. 在移动守门规则下,元宇宙不可能保持开放
Sweeney 将与 Apple 的争端视为基础设施战略,而不仅是费用谈判。一个拥有 billion users 的实时生态,需要开发者直接接触客户、彼此竞争的商店和共享经济;否则,Apple 和 Google 可以对每一层新增结构征税或加以禁止。
Web 限制展示了这种风险:Sweeney 称,Apple 不允许 iOS 浏览器实现比 Apple 更好的 Web 标准,并限制 Web 应用可用的存储和3D图形能力。他担心,元宇宙政策也可能要求使用 Apple 的引擎,将 Unreal 排除在外。
欧洲《数字市场法》正式要求 Apple 允许竞争商店,但他称 Apple 的条件让这些商店无法竞争,例如要求商店只能是商店,不能整合社交功能。他把这种层层叠加的限制称为苏联式的“纵深防御”:移除一道障碍后,仍有几道致命障碍。
Lex 同意 Apple 的行为是错误的,但认为开放最终会改善 Apple。Sweeney 则指出 Sony 是先例:在2018年激烈的跨平台联机谈判后,Sony 改变政策,随后扩大了与 Epic 的合作,覆盖游戏、电影、音乐和 Unreal 的采用,同时相对 Xbox 提高而非失去市场份额。
42. Epic Games Store 承认产品弱点,但坚持12%的经济模型
Sweeney 直言,人们称启动器“很笨重”,是因为“Epic Games Launcher 确实很笨重”。性能取决于与 CDN 的距离和库的大小,但 Epic 在实现发行商要求的商业功能时,优先级不足,没有充分投入加载时间和生活质量改进。
Epic 无意复制 Steam 的所有功能,例如商店专属论坛,因为开发者可能更喜欢 Discord、Reddit 或自己的社区。但公司确实希望提供同等便利,坚持打造数十亿美元业务,并预计跨平台社交基础设施将成为差异化优势。
商店的核心经济报价是12%抽成,相比 Steam 的30%。试验证据显示,Google Play 的全包运营成本接近收入的6%,Apple 可能类似;Sweeney 认为,竞争性业务无法承受成本的五倍加价。
Lex 理想的终点,是更少独占、更好的界面,以及迫使 Steam 下调抽成的竞争。Sweeney 接受这一终点,但追问什么机制能够突破15年的用户游戏库:发行商担心,如果在 Epic 上提供更低价格,既有平台可能会撤回推广。
43. 独占是一次代价高昂的尝试,旨在创造后来者差异化
Sweeney 区分了强制独占与协商独占。平台强迫开发者使用自己的支付系统,会阻断竞争;Epic 通过金钱、营销或其他激励,换取自愿的限时独占,在他的框架中则是商店之间争夺开发者,而开发者仍拥有游戏所有权。
Epic 最初希望降低消费者价格,但发行商担心 Steam 和主机合作伙伴的后果。因此,Epic 转而在供给侧竞争,除游戏收入外净支出超过$1B用于独占交易;如果后来者以相同价格提供相同游戏,消费者没有理由切换。
结果各不相同。Borderlands 表现强劲,因为坚定的粉丝跟随它;较小的作品往往失去 Steam 的发现流量,触达更少买家。限时独占结束后,这些开发者回到 Steam,双方也获得了关于哪些受众可以跨平台迁移的证据。
Lex 保留了分歧:即便是自愿独占,也与 Epic 所倡导的自由相冲突,并类似播客平台购买封闭式分发。Sweeney 回答,既有者无法只靠界面打磨被挑战,尤其当“软实力”阻止价格竞争时;这个困境仍未解决。
44. 社交游戏正在集中注意力,单机爆款则变成度假
Sweeney 对行业的第一定律几乎简单得令人尴尬:“人们玩游戏是为了快乐。”近期失败通常不是相对于替代选项提供了足够乐趣;与此同时,人才竞争削弱了那些最优秀开发者转向头部游戏公司或大型科技公司的发行商。
社交玩法改变了需求。20个朋友可能各自偏好不同的单机游戏,但会聚到一款可以接受的多人游戏上,因为一起玩比个人品类偏好更有价值;类似 Metcalfe 定律的效应,随后会强化最大的社区及其再投资能力。
Fortnite 达到约110 million月活的历史高点,Roblox 也继续增长。Sweeney 看到一个赢家通吃的循环:thousands of internal developers 和 tens of thousands of creators,可以用传统小型制作无法达到的规模改善生态。
优秀的单机游戏仍可作为持久社交世界之间的“度假”存在。Black Myth: Wukong 是他认为具有独特成就、玩家会前往体验后离开的例子;$40M制作可能产生强劲回报,但试图以$300M制作同样有限的体验,可能摧毁经济模型。
45. 最伟大的游戏,会创造出带有可感知灵魂的世界
Sweeney 最欣赏那些即便超出玩家当前路径,也让人觉得世界依然活着的游戏:The Legend of Zelda: Breath of the Wild、Skyrim 和 Red Dead Redemption。Lex 还提到 Civilization。关于 Red Dead 的河流呈现出合理侵蚀和水文规律的观察,来自 Lex 转述的一位同学,而非 Sweeney。
Sweeney 自1992年以来就没有设计过游戏,并有意保持开放观点:“未来最好的游戏类型还没有被发明出来。”新的图形、CPU、网络和创作者能力不断让过去不可能的品类变得可行,Doom 曾为 deathmatch 做到这一点,后来的技术又为 Battle Royale 做到这一点。
不同作品也会表达不同的灵魂。Fortnite 的神秘感、风格化和无血传送,让失败也显得幽默或值得称道;Sweeney 将这种善意,与那些鼓励玩家持续表现得刻薄的游戏基调进行对比。
Rockstar 说明了为什么突破边界的游戏需要多年时间。修复一个不真实的系统,就会暴露出另一个系统的问题,让时间表变得不可知;“坏游戏永远是坏游戏”,而延期的游戏最终可能变得优秀。Epic 的实时节奏则带来另一种压力:一个赛季只有到最后一个月,才能进行整体判断。
46. 具身协作比社交媒体文字更让 Sweeney 感到希望
Sweeney 对比了两个数字世界。以参与度优化的社交网络推动愤怒、政治、逐利和毒性;而通过语音连接的 Fortnite 小队,即便常由陌生人组成,也会产生他认为明显更积极、更可爱的互动。
他的推论是,共享真实或模拟空间的人,会以人类的方式彼此相遇,激活同理心和社会规范,而文字会剥离这些东西。即使 Discord 社区也可能在文字交流中变得有毒;一起玩、一起说话、一起解决问题,会创造出明显不同的动态。
这一差异构成了他对 Epic 工作的乐观基础。更真实的社交世界之所以重要,不是因为人们应该放弃现实,而是因为它们可以把更多现实存在中的同理心带入数字互动:“人类与人类交谈并彼此在一起”,对 Sweeney 而言,本身就是一种天然具有连接力的媒介。
#467
Humans are by far the hardest part of computer graphics because millions of years of evolution have given us dedicated brain systems to detect patterns and faces and infer emotions and intent. Cavemen had to determine, when they saw a stranger, whether that person was likely friendly or might be trying to kill them. People have extraordinarily detailed expectations of a face, and we can notice imperfections, especially imperfections arising from computer graphics limitations.
One part is capturing humans. They built really advanced, dedicated hardware that puts a human in a capture sphere with dozens of cameras in it, taking high-resolution, high-frame-rate video as they go through a range of motions. Capturing the human face is complicated because of the nuanced detail of our faces and how all the muscles, sinews, and fat work together to give us different expressions. It's not only about the shape of a person's face, but also about the entire range of motion that they might go through. So that's the data problem.
There are a lot of other problems in computer graphics. There's technology for rendering hair, which is really hard because you can't render every hair. Again, we know the laws of physics. It would be easy to just render every hair, but it would be a billion times too slow. You need approximations that capture the net effect of hair on rendering and on pixels without calculating every single interaction of every light with every strand of hair. That's one part of it.
There are detailed features for different parts of faces. There's subsurface scattering, because we think of humans as opaque, but really, light travels through our skin. It's not completely opaque, and the way in which light travels through skin has a huge impact on our appearance. There's no way you can paint a mannequin to look realistic like a human. It's just a solid surface, and we'll never have the sort of detail you see.
That kind of blew my mind, thinking through that. I think I heard that the oiliness of the skin creates very specific, nuanced, complex reflections, and then some light is absorbed and travels through the skin. That creates textures that human eyes are able to perceive, and it creates the thing that we consider human, whatever that is.
All of that happens while considering all the muscles involved in making the nuanced expression—the subtle squinting of the eyes or the subtle formation of a smile. It's the subtlety of human faces that you have to capture, like the difference between a real smile and a fake smile, or the way to show the beginning of a smile that actually reveals a deep sadness. All of that—when I watch a human face, I can read that. I can see that. You have to have the tools that can render something like that in real time, and that's incredibly difficult.
#467
That's right. Getting faces right requires the interplay of literally dozens of different systems and aspects of computer graphics. If any one of them is wrong, your eye is completely drawn to that, and you find it on the wrong side of the uncanny valley.
The following is a conversation with Tim Sweeney, a legendary video game programmer, founder, and CEO of Epic Games that created many incredible games and technologies, including the Unreal Engine and Fortnite, which both revolutionized the video game industry and the experience of playing and creating video games. This is the Lex Freedman podcast. To support it, please check out our sponsors in the description. And now, dear friends, here's Tim Sweeney.
When did you first fall in love with computers and maybe with programming?
#467
I had a brother, Steve Sweeney, who was 16 years older than me. At some point, when I was a little kid, he went off to work in California for a tech company. He'd gotten one of the first IBM PCs. So, for one summer—I think I was about 11—I went to visit him in California. It was my first trip away from my family, just to hang out with him, and he had this brand-new IBM computer.
I learned to program in BASIC over the course of a few days, and I was just blown away by the capabilities of computers at the time. It was unbelievable what they could accomplish, and I was hooked from that point onward and very much wanted to be a programmer.
Do you remember what you wrote in BASIC? Was it video game-type things? Was it a FOR loop, some numerical thing? What do you remember?
#467
Yeah, it's funny. I have a perfectly vivid memory of all the first things I learned to program. I have a hard time remembering people's names, but code really sticks with me. Every step and every challenge—there were lessons learned. Some of those, I've come to realize, were just me getting over learning hurdles, but other things were actually shortcomings of programming languages. That led to the realization that there are actually better ways.
When a programmer is learning to program for the first time, a lot of what they're facing isn't the challenge of learning a new art. It's the friction introduced by failures of programming-language design. I've constantly come back to those early lessons as I've progressed and done more and more things, including building programming languages.
The friction and the pain are the guide to learning in programming. If I were to describe my programming journey, it would be marked by pain, and you shouldn't escape that pain. The pain is instructive for you to understand programming languages.
But do you remember what kind of stuff you were writing at that time, just the early programs?
#467
Yeah. In the early days, I wrote a little bit of everything. I wrote some games. The first game I wrote on the Apple II was—since I only knew how to program in text mode—the computer would throw asterisks across the screen. They'd flow from left to right, and you'd have a parenthesis on the right-hand side of the screen. It looked like a baseball mitt, and you were supposed to catch the asterisks. That was my very first game. It took a couple of hours to build and tune.
I built a lot of things. I built databases at different points. I built a programming language and a full compiler for a language like Pascal because I didn't know where you went to buy one of those, so I made my own.
One of the fun things of that time was bulletin boards. Before we had the internet in the hands of consumers, you used your modem and dialed into a local phone number and connected to whoever was running the computer there. Every town or city had hundreds of these bulletin boards, run by different people with their own personalities and themes.
I spent a lot of time building a bulletin board program and learning how to deal with database management and user interfaces, multiple users concurrently, and things like that. I probably spent about 10,000 or 15,000 hours writing code just on my own as a kid, between age 10 and age 20, before I actually shipped a program to the outside world.
What was the value of the hours you put in as a kid programming that led to the success you've had in later life? Maybe this is by way of advice to younger people in terms of how they allocate the hours of their early life.
#467
Yeah, it's not just hours. It's really striving to learn, to understand what knowledge you have, what knowledge you lack, and to continually do experiments and work on projects that improve your knowledge base. I didn't do this with a great amount of structure or planning. I was rather just going from project to project, doing things that I thought would be fun and cool.
With each project, I learned new things: how to store and manage data, how to deal with advanced data structures, and how to write complex programs that have deeply nested data and control flow. Each one of those provided a lesson, which was later essential.
In 1991, I released my first game, and over the course of that decade, we went from 0 commercial releases to the first-generation Unreal Engine. This was largely just using the knowledge that I built up over the previous decade, doing fun hobby projects. If I hadn't done all that work, there's no way I could have ever built the things that came later.
All the experimentation and all the exploration somehow contributed and somehow made sense later on. All of that is integrated somehow in the stuff you build. It's funny how life works—the pieces kind of come together eventually.
#467
Yeah, there are definitely Karate Kid moments. All this time, I was learning math in high school and in college. I studied mechanical engineering, and so you learn all kinds of math: vector calculus and vector math, matrices, and related fields—physics, stress and strain, and how to deal with complex physical systems.
I wasn't really sure how engineers would actually make use of that knowledge. Do you just forget about it when you go off to do work, or do you write down equations on paper? It wasn't actually clear as an early engineering student what you do.
But when I started writing the first-generation Unreal Engine and dealing with 3D math, I was like, “Wait, I know this stuff. I learned this.” Suddenly, like in The Karate Kid, you get to paint the fence and wax the car, and suddenly put all the pieces together into a 3D engine based on a whole lot of accumulated programming-language and math knowledge—often knowledge gained without ever anticipating that I might use it in that way.
Also, I think what's useful is repeatedly learning a hard thing and then showing yourself that you can do it—that you can learn a hard thing.
So then, when you come to having to write a 3D engine in ways that haven't been done before, you're like, “I've been here. I've been here in this experience. I don't know what to do, but we'll figure it out. We'll learn. I'll learn all the necessary components.” So, just not being afraid of something new.
#467
That's right. And constantly striving to make connections between these fields and look for their applications. Long after I shipped Unreal Engine, it was like going back through an engineering textbook and looking at, “Oh, yeah, I use that. I use that. I use that.” And then I got to the section on eigenvectors and eigenvalues, and I'm like, “I don't know what the hell this is.”
But it turns out eigenvectors and eigenvalues were the critical breakthrough that made Google's search engine technology work and stand apart from the rest. They found that if you threw all the links that existed on the web—links from and to different sites—and put them in a giant matrix, then computed it and found the dominant eigenvalues, those vectors described the best search results for different things.
So, constantly picking up knowledge and looking for ways to put it together is the thing to do. If you aspire to be a programmer, you've got to write a lot of code, and you've got to continually learn new things and improve. If you want to be an artist, you've got to continually draw artwork of all styles and all kinds, and constantly push yourself to learn more and more, because you never know exactly what you're going to end up doing in the long run.
But the more knowledge you have and the more skills you have, the more chance you have of putting it together and being successful. Whether you're a programmer or an artist, you should probably take linear algebra, even though it doesn't make sense at the time. I found getting an engineering degree and then never working in an engineering field—just being a computer programmer—was immensely valuable.
I went to the University of Maryland, which for some disciplines is kind of known as a party school, but they work the engineers to death. They worked us really hard. If you learn any engineering discipline, you learn massive amounts of math, and you learn the rigor of problem-solving—not just what you find from the Wikipedia article, but going through all the exercises of solving complex problems and building up a series of solutions to derive an answer.
It's valuable, and it embodies the knowledge that you need as a programmer. People often go to university and think, “Okay, my goal here is to get good grades so I get a diploma and prove to an employer that I'm valuable.” No, that's just kind of the superficial bookkeeping of the university. The real purpose of all of this is to learn, and whether you learn formally or you learn on your own, it's the learning that's really valuable in a career.
And especially if you're going to be entrepreneurial, it's really knowing the stuff that matters and not having the diplomas. There's ever more pressure to rebuild society more and more around credentials. Do you have this certificate? Do you have that proof? But companies that are focused on just building great products and doing great things gravitate toward people who do great work.
#467
Yeah. One of the great things about youth is there's more freedom. There's just more time to learn. People, when they go to high school, sometimes think, “Why? I can't wait to get out of this and be an adult and be free.” But it's not quite freedom. When you get a job and start a family—all wonderful things—you get more and more busy and less and less time to learn in the general sense, to learn whatever the hell you want.
That is a wonderful time in life: the teenage years, the early 20s, the 20s, when you could just learn random shit. I think this is something that's kind of changing in America. There's so much focus on grades and homework and structure around kids' lives.
When I was growing up, my mom would feed me, and my neighbors' moms would feed them breakfast, and they'd be like, “Well, be back by dark.” We'd go out and play and do all sorts of things. We'd explore the woods. We'd build go-karts. We'd salvage old pieces of electronics and build what we thought were our spacecraft control panels for the fake spaceships we were building as play.
We'd have an enormous amount of freedom. From basically being a little kid through the time I went off to college, I had an enormous amount of free time. Some people just wasted it and watched TV. Some people socialized, and some people really got into serious projects. So many people, at all times, were doing cool things.
I was programming. I was learning to build things. Before I was releasing games to the world, I'd have neighborhood folks over to play the things I was working on and check them out. Sometimes they were impressed, and sometimes they weren't. They'd have their own projects, and often we'd have spare-time jobs. Everybody was entrepreneurial. Everybody had a side gig.
Sometimes you'd go around and mow people's lawns, or you'd rake the leaves up and earn money. The freedom there and the organic learning that occurred there, I think, is something that's really critical to the American experience. I worry it's increasingly going away as society is ever more protective and sheltering and makes it harder to get these experiences.
So, on the video game side, when did you first fall in love with video games?
#467
I've had a funny relationship with games, because my real aspiration has always been to program cool stuff. I get more enjoyment out of programming than anything else in the world. My first 2 formative experiences with games were playing this game called Adventure for the Atari 2600. You moved this dot around the screen, picked up objects like swords, fought dragons, invaded castles, and solved puzzles. Very simple, iconic stuff, rather than realistic graphics.
The other game that I really got immersed in was Zork, which was a text adventure game. It would tell you where you are and what you see, and you'd type in commands like “go north,” “pick up sword,” or “open door” and explore a world that way. The game didn't have any graphics, but in your mind you had this elaborate picture of what you were seeing there. It really inspired imagination more than other things.
Playing those games led me to want to learn to program everything that I saw there. That drove a lot of my programming. I learned how to move a player around the screen, and I learned how to build a design tool so I could build castles and save them off and then play them in a game.
I realized there was a separation between the tools that you use to build a game and the game itself, and that the more powerful tools you had, the more creativity you could unleash in yourself or others. I learned all the programming techniques that supported games: how to parse text, like “pick up sword” and “go north.” How do you make that sentence into an actual series of commands on the computer? That was really, really exciting.
Until Fortnite came out, I played video games primarily to learn what they were doing so that I could go off and do that myself. I'd sit down when Wolfenstein came out, and then Doom came out, and I'd go through and look at it pixel by pixel. I'd move the mouse very slightly and look exactly at what was happening to figure out what technique was being used there. That was puzzle-solving at a grand scale, and it was so fun.
So, take me there in the early 1990s. You launched Epic Games in 1991. The writing of your first big video game, ZZT—what was it like? What were the technical challenges? What were the psychological challenges of building that?
#467
It was a funny project, because I didn't start out to build a video game. I had just moved from an Apple II. My brother bought my family an Apple II right after I'd visited him in California. I'd done programming on that for a few years and learned a lot of techniques, but there weren't many Apple II users around still by the time that cycle came to an end.
So, I got an IBM PC of my own. I was learning to program, and I realized I needed a text editor. I started writing a text editor. A text editor is a program to edit text files. You have logic to move the cursor around and let people type things, backspace, delete, and do all those mundane actions.
One night, I finished it up and thought, “Well, okay, I have a text editor, but this is pretty boring.” So I made the cursor into a smiley-face character, and I had the different characters you could place in this document perform different gameplay actions. Some would be walls, some would kill you, and some would be moving objects that could fly around the screen.
This text editor I made evolved into a little game editor. I was building these levels for a game. I put a lot of time into building an editor and a primitive set of objects—about 20 or 30 different objects—enough to build a really cool and compelling game, but not so many that players would lose track of what they were seeing.
I started off just building different game levels. The idea is you'd be on a series of boards. They'd be connected by going north; the end of the current board would take you to a new one if it was open, or maybe it was blocked and you couldn't go there.
#467
I built this whole game world around that. This was the game that became ZZT. I was having fun with it, building it and playing it, but I didn't know if it would really work. So I did this experiment. I started inviting neighbors over—some adults, some kids of all different ages—and I sat them down in front of it and said, “Here's a game I made. Figure it out.”
I had to force myself not to tell them what they needed to do, because I really wanted to learn if they were able to discover it all for themselves. Today we call this a user experience test, and there's a whole field of research around user experience research. But back then, it was just inviting some kids over to play the game. I took notes about what they got stuck on, what they enjoyed, and where they felt bored. I iteratively polished the game until I felt it was good.
I put it out and released it—this was before the internet, so there were bulletin boards. I uploaded it to a bunch of local bulletin boards, and from there it started spreading. The way to build up credibility for bulletin board users was to upload new files and claim that you were the first to bring them to the community, so there was a natural tendency for the software to spread.
I decided to use the shareware model, so I didn't just build this one game. I built a trilogy of 3 games. I released the first one for free and said, “Hey, if you like this, buy the 2 sequels.” I included my parents' mailing address and said, “Send us $30 and you can get the sequels to this game.” The checks started coming in within a few days. I was getting 3 or 4 orders a day and making about $100 a day. I was like, “Woo, I'm rich!” Because being 20 years old, that was a pretty big deal.
What did that feel like, just getting money and probably feeling this immense success from something you've created?
#467
I've always looked at money as a tool to help you fund accomplishing cool things. Having enough to do the things you want to do is the critical thing. It's always been just very utilitarian.
But the knowledge that other people all around the country and then, a month later, all around the world were playing the game—that was mind-boggling. That I, this little kid who'd put out a game on a local bulletin board, could be doing international business and shipping discs all over the world to players because the software was spreading on its own was just magical.
That was a new thing for software. That did not happen with mechanical devices. You manufactured one, sold it to somebody, and they had it, and that was it. But software could spread. That was just really cool to see, and it made me realize there was really no upward limit on the potential for a business like that.
We saw Microsoft as a big juggernaut company at the time. But I thought, “Hey, if Epic made games good enough, we could accomplish what they'd accomplished with operating systems.” The sky was the limit. I think this is the age we live in now. You don't have to be an industrialist manufacturing physical products. Anybody who builds anything digitally, if it's good enough, can reach the entire world and build the next Microsoft or Meta or Apple or Google or Epic Games.
It's such a cool origin story, though. You start out building a text editor, so you're looking at this project, playing around with it, and building up the tools. It's such an inspiring moment, because a lot of us start out building a project, and to allow yourself to see the potential pivots, the potential trajectories that can happen, is really nice.
You sit back, allow yourself to be bored, and say, “Ah, I'm going to go this way.” I mean, that's a crossroads. You came to a crossroads. You built compilers, designed your own programming language, built databases—all these things you mentioned—and you started building a text editor. Then it came to this crossroads: “I'm going to make this fun.” From there, one of the most legendary gaming companies was created.
It's kind of cool. That's an inspiring thing for developers: be open to the possibility of creating something you didn't plan to create and just go with it, right? That's cool.
#467
Yeah. A bunch of learnings emerged really quickly there. The neat thing I did with ZZT was that I didn't just release the game. I also released the editor with it. I built this tool so I could make these ZZT boards that people could play, but I also gave it to all the players themselves.
Thirty years later, I still run into people when I go to a game industry event. They're like, “I grew up playing ZZT.” Here's an adult who grew up playing my game, and it was because it enabled anybody to become a creator, too. It had this little board editor, and it also had a little scripting language, so you could learn a little bit of programming in it, too.
It really impressed me and set a formative principle of Epic, which was that the company's mission is to make awesome entertainment, but also awesome tools, and to share those tools with everybody so they can build their own amazing things, too.
When we got into Unreal Engine a few years later, the interplay between us building a game and us building tools that were widely used by others was a critical part of that. I think that's the sole reason that Epic has been massively successful, and actually the reason that we've survived all of this time: by serving both creators and gamers, we've been able to weather the ups and downs of the game industry.
It's a brutal place for companies. We've been able to survive every financial downturn. Sometimes the engine's been funding the business because we didn't have a game, and sometimes the games have been funding the business. It really set a principle in our culture that has persevered and is continually brought to the forefront.
But on the editor front, that's such a fascinating philosophy: that you always allow people to create their own worlds. You have an engine from which you simulate the world that the game is in, you have the actual game, and you also have the freedom for creators to create various Fortnite islands of their own. With everything you ship, that freedom to create is always there. That's really interesting.
#467
Yeah, and it's something we aim to do more and more fully over time. In the course of building Fortnite, we've built a lot of other tools that are useful for us, too. It's not just a game powered by Unreal Engine, but also a social ecosystem where people can make friends, voice chat, get together in parties, and so on.
We've opened up all of those social features in Epic Online Services, and we give them away to all developers for free because we all benefit from growth in that user base. Our goal is ultimately to build the company's products on the same technology that we share with everybody else and to help foster a bigger and bigger ecosystem over time where everybody benefits.
If we could just linger on the '90s. You said bulletin boards. Maybe you can explain what that's like and also explain the birth of the internet. What was the internet like in the '90s?
#467
The internet is a funny thing. It started out as this Defense Department research project called ARPANET, the Advanced Research Projects Agency Network, and it was like this revered secret thing. It became more and more open as universities connected to the internet in the mid-1980s. If you were at a prestigious institution with access to computers, you could get on there.
But as consumers back then, we just had these modems. This was a thing you plugged into your phone line. It dialed up a phone number, and then it sent wild sound effects over the telephone line to send digital signals back and forth.
These were really slow. The first modem I had was 300 baud. That means 30 characters per second of data. You're sitting there watching a sentence slowly emerge character by character as you're going online. But that's how we got online and talked with each other.
You'd dial up to a local bulletin board. It would be run by a person. Usually, they had a computer or 2 sitting in their kitchen or something that was running the bulletin board, and they had a small community of a few hundred users all competing to connect to that one phone line.
It was often busy, and you couldn't get in. The more popular bulletin boards were the hardest to get to.
Nice.
#467
We had all kinds of communities develop. There were programming communities where people talked about programming. There was the news and events community. I lived on the outskirts of Washington, D.C., so that was a big thing. But then there was the pirate community, where people were sharing pirated Apple II games.
There were very different community ethoses and mantras out there, but they were all really nice and also very small. These boards couldn't grow to the size of Facebook because your phone line couldn't take that many calls. Then, later in the 1990s, the internet, which had been fostered in these colleges, started opening up to the public. Anybody could connect to it, and suddenly the world took on a life of its own.
#467
It became much easier to reach a global audience faster, and you would start shipping games over the internet, which is a bit of a crazy thing to do because you were supposed to have a physical copy. To post on the internet was pretty innovative. Even shareware was pretty innovative.
It’s been a funny transition for the game business. Epic started out making shareware games distributed digitally. But as the first 3D games took off—like Wolfenstein, then Doom from id Software, and then Unreal from us—we had to go into retail stores to reach a huge audience of millions of users. So we worked with a retail publisher, and they made a box and put CD-ROMs in the box.
Then the world started transitioning back to digital, and that transition didn’t start well. The initial transition of gaming to digital was all BitTorrent, all piracy. There were horror stories about games that would sell 100,000 copies but have 2 million users because most people pirated them.
Then Steam came along, introduced digital distribution, and made the digital distribution of legitimate games so convenient that most players moved away from piracy toward that. Those practices were then followed by others, and the early digital industry took form.
It’s fascinating. Pirates do lead the way for innovation, the same as the story of Spotify. I think most people, when they derive value from things like video games, want to pay for those video games. They just want it to be easy. It’s the same thing with music and Spotify.
Maybe just staying on the ’90s, there are going to be a lot of indie game developers who listen to us talking today. Can you go back to that mindset and try to derive some wisdom and advice for those folks? When you were just a solo developer, or maybe just a small group of people creating your early games that eventually became this huge gaming company, what were you going through in the early days? What were the ups and downs? What did it take to stay strong and persevere?
#467
One of the critical things that Epic always worked hard to do was make something different that nobody else was doing. We tried to satisfy a small audience rather than competing globally with the game juggernauts.
Back in the 1990s, Epic was new, but Electronic Arts, Activision, and the other big publishers had been around for a decade, and they were huge companies. They had giant retail distribution networks. If I tried to make a game and then convince them to publish it, I doubt I could have had a chance. I doubt that, even if I made a successful game, I would have made much money from it, though they might have.
The really unique angle to Epic then was shareware. That was the idea that, if we distributed our game differently, then we could reach a much larger audience than these bigger competitors by virtue of the first episode of the game being free. It was kind of the advent of what later became free-to-play.
The logic of that is just as true now as it was then. If the thing is free and anybody can get into it, then it’s going to spread from friend to friend as people bring their real-world friends into the games they’re playing and have the opportunity to build up a community around that.
The other lesson there was to minimize the friction of people getting into your game. Make it easy to get into, and make it fun.
I think the other thing is that I was very fortunate. ZZT was a funny game. It was not much like any other game. It had much worse graphics because it was all just text characters—smiley faces and other Greek letters and things participating in this game simulation. They were kind of iconic representations of characters rather than real ones.
This was decades into the age of real graphical games with interesting graphics, so it wasn’t even trying to compete in that area. But it was able to compete in a different area. It wasn’t just the 3 games I’d made and shipped as a trilogy that were successful and drove the success of the product. It was the fact that I released an editor, and there was a whole community around it.
You see that trend repeated itself. Before ZZT, there was Bill Budge’s Pinball Construction Set. That was a 1980s Apple game that let users build their own pinball tables. Since then, you’ve had some of the world’s most successful games follow that path, like Minecraft, where you can build your own stuff; Roblox; Fortnite Creative; and Unreal Editor for Fortnite.
Games that become platforms for other people to build stuff are a real opportunity. I think the big thing for indie developers to realize right now is that there’s massive competition in every major genre. It’s very unlikely that, unless you just happen to be the world’s best at a particular thing, you’re going to release a game in an existing, highly competitive genre and win.
A much better chance of success is releasing something that hasn’t been done before, being really unique, and reaching an audience—even if it’s big, medium-sized, or small—becoming really popular with that audience, making some money from it, and being able to reinvest and then expand toward your ultimate dream.
The one-shot go from idea to commercial success at massive scale is a lot less likely than the multistep process of continually building better and better stuff over time until you get into a position of excellence. Constantly try to do something that others aren’t doing.
Yeah, that’s right. Because if you look at every market, there are a few markets where the current leader came late to the space, usually because the prior leader failed so horribly. But most of the time, the company that’s succeeding and winning in a market is the first or second entrant there. They’ve just continually built their success.
Great advice. Fascinating. But on a human level, was it lonely? Was it scary, sitting there as a developer?
#467
It was the opposite of lonely, because the thing that spurred me to actually release this was seeing kids playing the game in my neighborhood and having fun, being like, “This is really good,” and seeing them enjoying it, laughing and pointing at the screen, getting together, and just wanting to play more. That was awesome.
The human element was always pervasive. I not only received orders, but people would actually write letters. We wrote letters back then, in the 1990s. People would say how much they were enjoying the game and how their kids were playing the game, and so on and so on.
I felt very connected. A lot of businesses have to make scary decisions because you’re spending potentially all the money you have to take a shot at something that you’re not sure will succeed.
I was very fortunate starting a business like this because it didn’t really need any capital. The capital was the several thousand dollars in computers I’d bought by mowing lawns, and it wasn’t much risk. If that hadn’t succeeded, I guess I could have figured out how people get mechanical engineering jobs and pursued that.
But once it took off, and once the orders started coming in and people started writing letters saying they were enjoying the game, I knew I was going to go all out and try to build a company and succeed. That was going to be my big goal.
I’m sure people know, but Epic Games was created in 1991 and went on to transform the gaming industry several times. One of those transformations was Unreal Engine. Let’s talk through the origin story of that.
You said that when Wolfenstein and Doom came out, that changed everything. Take me to that moment.
#467
That was a very interesting time. After my first couple of games, Epic had recruited developers, usually college students and high school students who were just working on their own. They had real skills but didn’t have an outlet for their work.
Epic had been matchmaking the best artists and programmers together from all over the world. Jazz Jackrabbit was made by Cliff Bleszinski, a high school kid in California, together with Arjan Brussee, a demo coder from Holland who had made amazing graphical stuff and built a 2D game engine.
I connected them together with a musician, Robert Allen, in California. By telephone and modem, we were building these little 2D games and having quite a lot of success. There were a bunch of people making thousands of dollars a month while they were still students, in royalties from the games that Epic was producing by coordinating people and publishing through shareware.
That was all going great. The company had a little office, and we were copying floppy disks and mailing them out. But when Wolfenstein came out, we realized that the future of gaming was going to be 3D.
There had been a lot of experiments in 3D before that that hadn’t been great. There were 3D renderings of mazes that were not in real time, and you were always looking north, south, east, or west. Then there were vector graphics with little wireframes moving around and things.
Wolfenstein was the first game that was fast enough—running at 30 frames per second—that it really felt immersive.
#467
It felt like you were there, like you were in Castle Wolfenstein, fighting Nazis. That was a really amazing and immersive experience. 3D graphics were pretty primitive then, but the software followed shockingly fast with Doom, which was a much, much more capable 3D engine. It had stairs, and although it was still what we call 2.5D, the environments had very realistic textures, a form of lighting that was approximate but incredibly realistic, and such great artistry and sound effects that it felt completely visceral and real.
You might look at it today from the point of view of a modern game player with 20 teraflops of computing power in your device and say, “Oh, that's not very impressive,” but it was amazing at the time.
I mean, for me, just to pause on that, I think Wolfenstein was one of the most amazing moments of my own life: just being able to, like you said, move about a three-dimensional world in real time. I remember just moving around, thinking, “What is that feeling like?” You feel transported into another world. You feel that you're there.
#467
Yeah, and especially when you turn the lights down in your room and turn the sound up on your speakers, it will scare you. You'll feel like that fireball that's coming at you is going to kill you. That was an amazing time because we hadn't experienced that before. There was nothing like that.
You'd watch a movie, a scary movie or whatever, but it was just this thing that was happening. This was you. This was you in a 3D world.
So how did that—how did that change Epic, this realization that the future of gaming is going to be 3D?
#467
Well, at first I was really depressed. I figured, because Carmack's wizardry, especially in Doom, was so incredible, that I gave up on programming for like 6 months. I was like, “I'll never be able to compete with this. I have no idea what we're going to do.” We'd just keep making 2D games and hope that the business goes on.
That was the nature of Carmack's wizardry. He had done things that were not just 1 innovative leap ahead, but a dozen simultaneously interplaying in a way that you couldn't pick them apart into their component pieces.
A funny thing happened. Michael Abrash, a longtime figure in computer graphics, wrote a book on the techniques for 3D graphics and texture mapping. He wrote some articles in 1 of the programming magazines of the day and explained it, showing assembly code to do texture mapping—drawing these 3D graphics on the screen. It was actually really simple stuff. I was like, “Oh, I can do that.”
A bunch of us at Epic independently went off and started writing our own 3D graphics code to figure it out. We found at 1 point that we had a number of people dabbling in this, doing different parts of it. At that point, we decided, “Okay, 3D graphics and 3D gaming are going to completely change the world. We need to go all in on this.” So we took the best people from our best 2D game development teams and put them all together to make a 3D game.
We didn't really know what we were doing at the time. None of us had ever shipped a 3D game, and most of us were still learning, but everybody was trying different disciplines to see what they were best at. It was a combination of a bunch of people who came together to make Unreal.
I'd initially volunteered to make the 3D editor for the thing, and James Schmalz, who'd made Epic Pinball—this wasn't a crazy game; it was 1 of the 2D shareware games—made it while he was in college and was making like $30,000 a month from the royalties from this game because everybody had wanted an awesome pinball game. It was massively successful.
But he was a multidisciplinary person. He wrote the code for the game, the art for the game, and did basically everything. The code was 30,000 lines of assembly language, right? He was initially going to write the 3D engine, and I was going to write the editor. He sent me his code so I could integrate it into the editor. It was this giant pile of assembly code. I was like, “Why don't I just write this myself?”
And so James instead started going off and building 3D models and 3D animations using the tools at the time. Cliff, who'd done a lot of design work and built the levels on Jazz Jackrabbit, went off and started learning the basics of level design. I was writing this editor, and Cliff Bleszinski was customer number 1 for it, starting to go off and build levels. James Schmalz was building awesome creatures, sending them to me; I'd get them in and implement them in the game, and then we brought in an animator to bring them to life.
We brought in more and more people until, at the peak of Unreal 1 development, we had about 20 people working on it, which was a huge team for the time and really stretched Epic's finances nearly to the breaking point. We barely survived and almost ran out of money a number of times, but somehow we always pulled through. It was a crazy project because it was 3.5 years of development on a game that we always thought was 6 months from shipping. It was 3.5 years of 70- or 80-hour weeks for most everybody working on the project, not even knowing what problems we needed to solve next because we were so immersed in the current ones.
Were there moments when you were losing hope that this might take too long and the company would run out of money?
#467
We were—I was—we were always very financially stressed, so I was continually worried about that. I had total confidence that we'd work out all the technical and artistic problems because we knew the pieces, and it was largely a matter of typing code in and solving some problems. We knew we could ship a version of it.
The thing that was continually really interesting was the ongoing discovery of new techniques as we went. At the time, Quake had shipped; it had a little bit of dynamic lighting. Unreal really pushed dynamic lighting much harder than anybody else had done before. Then colored dynamic lights, with some shadow-casting capabilities—static or moving lights without shadows—and we figured out how to do volumetric fog.
So you could have foggy areas that were full of lights, and you'd get the kind of glow of the lights standing out in the fog and affecting the appearance of the level. A whole lot of amazing techniques came together to build a game that made a number of leaps ahead of the state of the art at the time.
It was really crazy, but I think most companies wouldn't have survived that. The sheer talent of the people involved made it possible, and that's something Epic has often done: things that most companies would have failed at, we succeed—not because of awesome management, awesome planning, or awesome financing, but because of the sheer talent and willpower of the people involved to make it happen.
What about the interdisciplinary aspect of it? Like you said, artists, engineers, or programmers, designers—all of them working together. What was that, the 20 people? What was the dynamic there like, working insane hours? What was it like to make a team like that work together well, as an orchestra, to actually deliver the game?
#467
That's 1 of the really unique things that exists in gaming, not in normal big tech companies, which are just engineering- and business-driven. Gaming really does require all the best people across all the creative disciplines working together.
Epic had grown organically by recruiting people with awesome talent. We always had a limited budget, but we could never pay to hire, bid up people's salaries, and hire them away by paying them more. We just had to find awesome people who were at the beginning of their careers and put them together.
Everybody was very new to this and didn't have any assumptions about how companies worked. You put all these people together, and it was really a constant interplay of talent as people were learning how to work together as a team. Nobody had management experience. Most people hadn't shipped a game before they worked with Epic, and we were figuring it out as we went.
But it was a constant iterative cycle. Every day we'd make several new versions of the game: build a new compile, introduce a new feature or fix some bugs, get it to artists, artists improve their levels, continue building stuff, and then we'd see what they were doing in their levels, like, “Ah, I see what you need.” We'd constantly be improving the tools.
Just the iterative process and the speed at which that improves products is the critical element to success in games. The slower the iteration cycle—if you make a build every week and you go through 1 iteration every week—you’re going to be way, way, way worse by the end of your project than a game company that makes new stuff every day. That was the magic that happened together. There was really nothing but passion and everybody's individual dedication to it that made it work.
I heard you still program, but how much programming were you doing back then? You mentioned the hours, probably insane hours. It'd be fun to talk about your setup: what a day in the life of Tim Sweeney in the '90s, when you were building Unreal, looked like.
#467
Well, we'd all gravitated toward a schedule, a work schedule that maximized productivity, and that usually meant waking up late.
#467
I usually got to work around noon. I usually worked until 2:00 a.m. or so, and 3:00 a.m. sometimes. I didn't have anything else going on in my life, so it was really just work and sleep and occasional eating. I found I always needed 8 or 9 hours of sleep a night. Without good sleep, I would just become a zombie and wouldn't be nearly at my best.
I always needed to get sleep, but I didn't need anything else going on. The programming itself was so energizing and thrilling. It was 3.5 years of that during the project, mostly spent programming. I would say probably 60 hours a week of programming, 5 hours a week of coordinating with other people and iterating—sitting down with them, looking at what's going on on-screen, and figuring out what they needed—and 5 hours of business stuff.
There was a good division of labor then. Epic didn't have a big executive team, but it was basically myself running the technical and development part of the company and Mark Rein running the business part of it, doing deals, maxing out his credit card, and going around the world bringing in sources of revenue to keep the company funded.
What programming language are we talking about? You mentioned there's this pile of assembly. What was your decision in choosing the programming language that Unreal Engine would be written in?
#467
I'd grown up learning Pascal as my favorite language. In order to get maximum performance and the latest operating system features, I had to move to C for my second game, Jill of the Jungle, a Nintendo-style platformer. When I started Unreal Engine, it was on 16-bit Windows using the C programming language.
Over the course of the first year, it moved to 32-bit, using these DOS extenders and then Windows NT, and I moved to the C++ language. It simplified the code so much. We went from a really complicated pile of code to a much simpler one by making that transition. The entirety of Unreal Engine development—about 2.5 years of it—was all in 32-bit C++, completely state-of-the-art then.
32-bit protected mode was kind of a magical thing, having come from the days when computers were much less reliable and crashed all the time. And it turned out to be a pretty good bet, because C++, out of all those languages, ended up being the dominant performance-oriented language that survives to this day.
#467
Yeah. It's because it solves all the problems at scale, often through manual pain, but it always solves them. A lot of other languages do better in a lot of theoretical aspects and are better for some use cases, but you can't do everything, and that's really very limiting.
All right, ridiculous questions: did you have 1 monitor, 2 monitors? Were you picky about the keyboard? Were you picky about the chair? What are we talking about? Let's paint a picture.
#467
I went through a big transition there. I started out being pretty lazy. I'd bought used computers, because you'd often get them at half the price of a new one. They'd be good enough. So I had this old 486 I was developing on with, I guess, a 15-inch monitor at the time. It was a poor workstation setup, but it was very economical.
As we started on Unreal, I realized that I had to write a ton of code and write it at absolute maximum productivity. I had to rearrange my entire life around delivering maximum output. At that point, I realized that spending money on getting good equipment was a good investment. We're not talking about millions of dollars here, or billions if you're building a GPU farm. We're just talking about buying some basic hardware.
I bought the biggest CRT you could buy at the time, because this was the CRT era. It was 24 inches. It weighed like 100 pounds. I had back pain for a week after I installed it, but it got me 1,920 by 1,200.
Wow. In 1996.
#467
In 1996. That was pretty cool. So I'd upgraded to a 90-megahertz Pentium, programming on that. These were the main consumer computers at the time. I'd optimized the Unreal Engine software renderer on that. The Pentium was the first superscalar architecture in consumer computing. It could run up to 2 instructions at a time, and if you wrote your assembly code very carefully, you could get absolute maximum throughput.
I'd gotten my texture-mapping code down to 6 CPU cycles, comprising 11 instructions. That was required for every pixel on the screen, and that was just enough performance to deliver it. Then Dell came out with these new workstations, and Intel had just launched the Pentium Pro, the first out-of-order processor. I basically bought the absolute maximum configuration that money could buy. It cost $7,000. I had a gigabyte of memory in 1996 and a 200-megahertz CPU, so it tripled the speed of compiles and just made me massively more productive. That's what I was using throughout Unreal Engine development, and it shipped with that.
By the way, people in the '90s would have been blown away by this work. I love it.
#467
Yeah, yeah.
In writing, were you considering the hardware much? Was there a sense—so, for people who don't know, Unreal Engine rendering, I guess, is all software. It doesn't use the hardware. Were you trying to optimize to the hardware at all? As I understand it—maybe you can correct me—were you trying to optimize to the hardware at all?
#467
At the time, we did most Unreal Engine development before the first real GPUs came out. The 3Dfx Voodoo 1 was the first GPU that actually delivered serious performance compared to software rendering. The first GPU that was really powerful came at the end of development, and we supported it really quickly, but it was not the target all along.
Development was focused on building the 2 parts of the engine. There were all of the gameplay systems that managed the simulation, physics, and so on. That's all written in very high-level C++ code, and maintainability is as much of a goal as performance, because we had to build massive amounts of systems over time.
The one thing that was really a bottleneck was graphics. The cost of rendering a single pixel was really high, so you had to do everything you possibly could to optimize the rendering of pixels on-screen. We were talking about CPU cycles. When you say your CPU runs at a gigahertz or whatever, it's a billion instructions per second. How many instructions do you need to run to get a pixel on-screen? There was a constant challenge to optimize that down.
There was also a competition among all of the graphics programmers. We'd often send emails bragging to each other about what new technique we'd discovered to try to get the cost down. Abrash's original algorithm took about 12 CPU cycles to render a pixel, and everybody else had figured out how to get it down to 6 or sometimes even 4 cycles. That involved lots of different trade-offs of caching, memory hierarchy, and so on.
It was a magical time when a human could actually understand exactly what the CPU was doing under the hood and could write code that exactly targeted that. That's largely lost now. Some people miss it; some people don't. The programmer had absolute control over the machine and could work miracles in special cases if they tried.
It seems like there's still value to that art when it comes to GPUs and ASICs—basically, trying to understand the nuances of the hardware and how to truly optimize it, whether it's for machine learning applications or for ultra-realistic real-time graphics applications. Is that true?
#467
Yeah, that's absolutely so. The optimization problems have just moved around. A system like Nanite, the virtualized micropolygon geometry system that Brian Karis, a brilliant engineer with Epic, built, was one of those multiyear optimization efforts that required understanding everything from the highest levels to the lowest levels of the hardware to figure out how to make this breakthrough technique work in a way that was actually maximally performant on GPUs.
Nanite is the system—we'll jump around in time—that takes us to today with Unreal Engine 5.
That's the system that does the geometry.
#467
Yeah. So, rendering the world geometrically, there are many layers to this. We'll probably speak to each of those. But first, you have to actually create the geometry of the world around you and do that in real time and really efficiently. There's a bunch of different ways to optimize that. Can you just speak to it?
#467
With the advanced art tools we have today, it's really easy to create a scene with billions of polygons. The hard part is how to render it efficiently, because you can't render billions of polygons in a frame. Basically, you want to render an image that's indistinguishable from the full-detail geometry if you rendered it at ridiculous cost.
#467
And so, the challenge is how to simplify every component of the rendering—the geometry, the lighting, and so on—down to real-time techniques that are efficient and capture a realistic view of what’s around you. When an object is up close to you, you want to render it with a lot more polygons than when it’s far away.
One of the cool principles of mathematics is the Nyquist sampling theorem, which says that if you’re trying to reconstruct a signal, there’s a limit to the amount of data you need to bother capturing. If you want to render a texture at a certain resolution, then you never need more than twice as many pixels as there are in the texture that you have on the screen. That’s called the Nyquist limit.
One of the challenges of computer graphics is that, given the need to render objects at extreme close-up distances and extreme faraway distances, you always want to be able to generate the right amount of geometry so that you have enough to be indistinguishable from reality, but not any more than necessary. With geometry, the idea is that if you render 2 triangles per pixel, you should get an image that is indistinguishable from thousands of triangles per pixel. If you render fewer than 2 triangles per pixel, you’re going to start to see visible artifacts from the loss.
GPUs have amazing hardware in a lot of different pipelines, but it’s all very fixed-function. There’s pixel shader hardware, geometry-processing hardware, and triangle-rasterization hardware. One of the limits of GPUs is that the triangle rasterizers are built for pretty large triangles. If you’re building or rendering a triangle with 10 pixels, that’s pretty efficient, but if you’re building or rendering a triangle with 1 pixel, it’s very inefficient.
One of the breakthroughs Brian made was to design an entire pipeline for avoiding the rasterization hardware in the GPU and going straight to pixels, calculating what should be done with that pixel as a result of some ray tracing and geometry-intersection calculations done in a pixel shader. Instead of using the triangle pipeline, we’re just using the compute pipeline and getting a better result because of the limitations of the triangle rasterizer in GPUs.
That’s fascinating because, as you described, you need the tiny triangles for the detail, for the stuff that’s up close. This might seem obvious to people, but it’s not just stuff that’s up close. It depends on where you’re looking. The human eye, the human focus, and the human attention mechanism define how much detail you want to show, because the thing that the human is likely to be giving attention to, you want that to be super-high-resolution.
Everything else, including due to distance, can have less geometry, less texture, and less information in it.
#467
Yeah, that’s right. But there are a lot of challenges like that. It turns out it’s a lot easier to render 1 frame that looks perfect than it is to render a series of frames in motion that look perfect.
A lot of the problems with the earlier algorithms that aspired to do this sort of thing involved popping. You’d be rendering some number of triangles for a while, and then you’d switch to a different number of triangles and see a visible transition. The screen would look like it got shaken up. It’s a disturbing artifact that distracts you from the game.
One of the magical trade-offs of Nanite was how to avoid all the visible transitions and get them down to a point where, although they exist statistically, they’re not really perceptible to a person looking at it.
When you look at something like Nanite, there’s a nice blog post and nice descriptions about the details, but you can tell that even underneath the details, there’s just incredible engineering that goes on. It’s so cool how, underneath the actual experience of beautiful, detailed scenery, there’s incredible engineering to bring you an ultra-realistic simulation of reality in real time—lights changing, everything.
It just takes you back to that feeling I had with Wolfenstein, but more. You can completely lose yourself in that world, and you would forget that this real world exists. What is the real world anyway? That coupling of great engineering and great storytelling, in terms of just feeling, is super cool.
It’s great to know that there are these teams behind it. It’s cool that you’re also releasing a bunch of details around it. At least for folks like me, it’s inspiring to see.
Unreal Engine is this fascinating creation. It’s a big, bold, crazy bet that you made. Maybe it’s good to actually explain what Unreal Engine is for people outside this world. I would say it transformed the gaming industry, but that was a big bet in 1995 that most of the effort would be on creating the game engine, not the game.
#467
Unreal Engine is a big bundle of code and tools, a huge software package that provides all the functions you need to build any sort of 3D graphics application. Game developers use it to make games, and that’s the predominant use, but it’s also used in Hollywood film and television production to create 3D scenery in real time for production sets and to do previsualization.
It’s used by carmakers to visualize their cars before they’re constructed or manufactured. It’s used by architects to preview buildings before they’re made, and by industrial designers of all sorts.
It provides all the 3D simulation features you need, both for creating highly realistic 3D graphics and for physics and interactions between objects, making things happen like you might see in the real world. It supports a huge variety of styles, from Pixar-stylized movies to cel shading to photorealism. It can be used for anything that needs real-time 3D graphics, including humans that populate those three-dimensional worlds.
We’ll probably talk about a bunch of the details involved in the process of creating ultra-realistic humans, because we humans care about how other humans look, how they convey emotion, and how they express themselves when they speak—all that kind of stuff. But yes, it’s the 3D objects that are static, the 3D objects that are dynamic, and on the dynamic front, humans that are ultra-dynamic.
You have to create this engine that simulates that world—the beautiful world that we know and love.
Okay, so you’re early. You see Doom, and you’re trying to create this world and an engine that would not just power Unreal, the video game, but future video games. How do you go about it? What are you thinking?
That is a crazy bet: “We’re going to build an engine as a company.”
#467
The philosophy began with ZZT and continued onward. We’re not just building a game for players to play. We’re also building tools that could be used for building that game or any other game, and catering to all the artists and designers who had used the tool.
That philosophy started in the very early parts of Unreal development. I was building the tools for level designers like Cliff Bleszinski and artists like James Schmalz. As we began marketing the game, thinking it was 6 months away, we were constantly releasing screenshots and things like that.
Other companies started calling us and saying they wanted to build 3D games, too, but they didn’t have the expertise for that and wanted to license our 3D engine. This was one of the coolest pivots in Epic’s history.
MicroProse called up Mark Rein, our vice president and longtime business guy, and said they wanted to license our engine. Mark Rein was like, “Oh, you want to license what? What’s an engine? What engine?” They explained to him what they wanted to license. “Oh, that engine. Yeah, that’s very expensive.”
This was one of the critical things that kept Epic going through those 3.5 years. We were starting to license our engine out to other developers. MicroProse took 2 licenses, and we got half a million dollars from that. GT Interactive licensed our engine to build another game, and we got paid for that.
We had this revenue stream funding the development of Unreal Engine from other games that were being built by other developers. Because they were the lifeline for the company, we took the engine business very seriously from the start.
We set up mailing lists so that our partners could ask us questions, and all the developers and artists working on our games were participating and helping customers. Everybody took that very seriously because it was our funding source. That set this dual spirit of Epic: technology and supporting game developers, simultaneous with building games and supporting gamers.
It’s continued onward and just grown over time.
Can you go back to that? You were programming. What are some interesting technical challenges you had to overcome? You mentioned dynamic lighting, creating this three-dimensional world, and trying to figure out the puzzle of how you actually do that at a time when nobody knew what John Carmack and you were doing.
It was a totally open Wild West. What are some interesting technical challenges you had to try to solve?
#467
There’s a lot. Some of them are visible on screen, and some are behind the scenes and still require a lot of innovation. All the graphical techniques were really interesting challenges.
#467
Unreal Engine in those early days went a lot further than the Quake engine in building environments using constructive solid geometry with a real-time editor. That was a really interesting technical challenge. Building is extremely tedious if you're only adding objects to the world. If you want to build a door, then you need to add a dozen different pieces of door frames and a bunch of different walls to fit together in the right shape.
It would be easier if you could just start with a wall and subtract the door out. We had this way of adding geometry to the world and subtracting geometry, and the engine would perform all the calculations on that. This was something that I'd been anticipating was possible for a long time, but when I finally got around to it, it took a 30-hour coding session to figure out all the special cases of the code that needed to be implemented to make it work.
In the course of 30 hours, I got constructive solid geometry up and running. The next time we were together, I handed it to James Schmalz. He said, “Okay, I think you're cheating here. So you create a giant torus, then add another giant torus interlocked with it, and then subtract a cylinder from it, and create this really advanced composite object with just 3 operations.” He was like, “Whoa, I can't believe this.” I said, “Yeah, we figured it out,” and that was cool to see for the first time.
It was probably the first time somebody had done constructive solid geometry in real time, but it was also a really useful artist tool that all the artists appreciated and immediately began making use of.
Can you actually speak to that 30-hour session? From everything I know about computational geometry, doing this kind of thing from your perspective is not easy. What is it—the uncertainty, the open questions involved? Even just on the algorithm front, how to do that efficiently, and then the usual programming thing of debugging, suffering through the trickiness of it.
At that time, we didn't really have the tooling to visualize everything that's going on very well, and you were probably using some crappy editor. There was just a lot of friction here, so the 30-hour session is probably a rough one.
#467
Your brain works in different ways depending on your state. There are some things that require really working on a problem fresh, where you've put together a bunch of logical pieces and now you just need to write a whole lot of code to make it all work together and plumb a whole lot of data between a whole lot of different algorithms.
I think our brains have vastly more horsepower than we're able to directly access by thinking of what code to type next. After you've been working for a very long time, you can get into a sleep-deprived state where you have much more direct access to that low-level knowledge.
That's great, because there are symptoms of sleep deprivation that are well studied. One of them is short-term memory loss, so you're working without the easy recall of the code you just typed. But your brain is then freed to think about other problems.
#467
I'd built up this intuition over a very long period of time. The foundation for the subject is the binary space partitioning tree, a data structure invented by computer graphics researcher Bruce Naylor. Carmack had picked up on that and had used the technique in Doom to really great effect. I'd picked up on that, and Unreal was using this technique for all its graphics and rendering, but it was just additive geometry everywhere. It had a lot of overlapping polygons and was pretty inefficient.
I had the idea that if we had a BSP tree, there was a really efficient way to do constructive solid geometry. To do that, you had to break down the ways that different pieces of geometry can fit together. I broke it down into 14 different cases. Most of them are pretty simple, so you just crank them out.
As I got towards the end, there were some pretty complicated things, like how to deal with coplanar polygons. They're in the same plane, pointing in the same direction versus the other direction. In what cases should you keep them? In what cases should you eliminate them, and so on, to create really efficient geometry output?
I just plowed through it, eventually, through mostly deduction but some trial and error too. Sometimes you just have to try the possibilities and see what works. I cranked it out, and it worked. The next day I came in kind of weary, and I was like, “Oh, wow, this actually did work. It wasn't just a dream.”
So you're considering the edge cases too. That's the problem with geometry: there's probably going to be all kinds of weird polygons that you have to consider. You're imagining the edge cases and trying to see how not to create inefficiencies in the algorithm while still allowing for those edge cases.
#467
It's pretty easy to write software that's 99% correct. It's the 1% that's really hard, and that's where the devil lies in the details.
What about lighting?
#467
The funny answer is that we know the laws of physics, so it's actually really easy to do everything in computer graphics. But the direct solution of the laws of physics is immensely slow. What we're finding are approximations rather than complete solutions, because you need something that's a million times faster than the brute-force answer.
We should say that the physics of the scene is that you just take a bunch of photons and bounce them around. That's how light works. That's going to be very inefficient, because there's a lot of bouncing and a lot of photons.
#467
Yeah. Photon tracing is the subject matter that does brute force calculation of pixels on a screen from all the light in the scene. It works, it's correct, and it's just an implementation of the laws of physics. It's millions or billions of times slower than what we do.
Carmack had figured out how to do really cool lighting algorithms, including real-time lighting with objects moving around. I hadn't taken it very far. With Unreal Engine, I'd realized that we didn't have nearly enough computing performance on our CPU to compute the light of every pixel on the screen from all the light sources that affect it. We had a 6-cycle texture mapper, and we couldn't afford 30 more cycles for lighting. The answer had to be some approximation.
The one that Carmack had picked up on in the Quake engine was light mapping. Instead of calculating all the lighting on every pixel, what if we made a big texture that we placed over all the walls in the scene, like wallpaper? What if we said that every foot, we're going to compute a lighting value for just that 1-foot grid on the object rather than computing it everywhere? If we just linearly interpolate that over the course of it, you get a lighting solution that actually works pretty well and is fast enough to work.
A lot of Unreal Engine's lighting techniques were based on light mapping. We introduced colored lighting, so you could have colored light sources. Then we realized that, since we were doing this on light maps, we could do some pretty expensive calculations—hundreds of cycles—since we were only calculating it for every 1 foot of world space rather than every pixel.
We introduced a whole bunch of elaborate lighting effects, like torch flickering and the caustic effects of water bouncing off a surface, as well as pulsing lights, blinking lights, and everything else. I created a system for compositing them together, so if you had an arbitrary number of light sources, they could all do that.
Then I implemented a shadowing algorithm. You cast a ray from a point on a light to a point on a surface and see whether it intersects any other geometry. If it doesn't intersect, then the light hits the object. If it does intersect, then the light hits something else first, and that pixel on the object should be dark.
I built a real-time version of this, and it ran at about half a frame a second. I was running around at half a frame a second, shooting out light projectiles and looking at dynamic lighting. It was like, “Someday computers will be fast enough for this, but not today.”
So I made a non-real-time version that pre-calculated all the lighting and realized, “Oh, wait. If you pre-calculate the shadowing for an object, you can still apply the lighting dynamically as long as the light's not moving.” You could do torch flickering with shadows. I figured out all the cases of dynamic and static lighting that were actually practical on a computer at the time and exposed them to artists.
This was the wonderful thing. I was just typing in these little features and exposing them to artists. Every day they'd find a drop-down with some more lighting options available to them, and they'd start using them. They'd do things that I never thought possible.
This was always the coolest thing. As a programmer building an engine, you might think you know the implications of the feature you're building, but artists are so clever that you'll always find that you built the capability of doing vastly more than you ever anticipated. They start to use combinations of features together in concert to do ever more amazing things.
That's the genius of artists: they're given constraints, and within those constraints they create something you could have never possibly imagined given the constraints. That's such a beautiful coupling between engineering and artistry and art.
#467
That's right. And it's timeless. What did the Renaissance painters do with paints? And what did the early game artists do with early engines? Everybody's figuring out the capabilities of their medium, and you're seeing a revolution.
This is blowing my mind. This is so fun. What about fog? You mentioned fog. I don't even know how you do fog.
#467
So, you mentioned Unreal. The first version had fog. It was a funny thing. This graphics hardware company had just started up in Finland, and they released a screenshot of what their GPU was doing. They showed a scene filled with volumetric fog. You had a foggy room with some light sources in it.
When that happens in the real world, what you see are glows around the lights as the light brightens the fog around it. The brightening of the fog diminishes over time because the fog absorbs some lighting. The further you get away from the light, the more fall-off there is. You have a bunch of colored lights overlapping together in a space like that, and the effect is absolutely magical. It's like being out on a foggy night with street lamps above. It's surreal and beautiful.
So I was like, "Oh my God, they figured out how to do real-time volumetric fog. I have to figure it out myself." That was another 30-hour coding session.
Nice.
#467
But at the core, I realized that what's happening here is that we have this lighting function saying the light at a particular point in space is falling off with the inverse square of the distance from the light source. The inverse-square law is from Isaac Newton, which applies to lighting. What I had to realize was that the way the fog interacted with the light was that you calculate the view from your eye's position to a point on a surface in the world. It's going through fog, and you're accumulating more and more light as a function of the amount of light illuminating the fog at that point in time.
I had studied that in mechanical engineering without even knowing it. That's the line integral. You have an integral over a line of some function. This is exactly what it's for: accumulating the values of a function over a continuous space and time. I did a bunch of math and realized, "Oh, wow, the integral..." Then I looked in a reference book of all the integrals, and thankfully, people have solved them all. I realized that the integral of this transformed 1/r² turns out to be solved by the arctangent of r.
If you calculate some parameters based on the position of the eye and the position of the surface point you're ultimately seeing, then you calculate exactly how much fog you can accumulate from that. Of course, you can't do that per pixel, because that's hundreds of cycles of CPU time. What we had to do was calculate volumetric fog on something equivalent to a light map, calculating fog every square meter in the world. We had enough performance for that, built volumetric lighting, and gave it to the artists. They started building magically detailed levels with volumetric fog in real time.
Decades later, I was talking to one of the engineers who had worked on that hardware. I asked about their volumetric fog and told him how it inspired me to figure out how to do it in real time myself. He was like, "Oh no, we cheated. We just rendered it out of 3D Studio Max."
That's awesome. That is so awesome. That is so inspiring on so many levels. You saw that maybe it was possible, even if it was kind of smoke and mirrors, and then you actually made it happen. It's so inspiring to hear these kinds of stories when there's so much uncertainty and so many constraints, and you figure out how to bring it to life in real time and create this world that Unreal did.
Maybe we could just pause, since you mentioned John Carmack a few times as a fellow pioneer in the game industry at that time. What do you admire about John?
#467
John singularly has this intense dedication to getting the best result from his code and having absolutely no attachment to past code. Some of the legendary things he did—the end result was an absolute breakthrough in real-time computer graphics—weren't his first try. They were like his seventh or eighth try, after he'd done something time and time again: tried it, found a better approach, thrown out the old one, built it again, and continually rewritten his code until he found the absolute best solution to a problem.
I think that stands as a lesson for every programmer to pick up on: when something is really, really important—its performance is absolutely critical to the product, or its quality or its capabilities—just iterate on it until you've achieved perfection, and don't settle for the first or second solution being good enough.
The result of that is that both you and him sort of define the future of gaming worlds. It's beautiful to see. It's fascinating. It's inspiring because, under so much uncertainty and so many constraints, you figure out a way. And that actually continues to this day because, yes, the hardware has improved incredibly, but in order to create an ultra-realistic, highly dynamic, real-time rendering of the world around us, it's still really, really difficult. There are all these kinds of optimizations, like you mentioned.
Maybe you can speak to that—the Unreal Engine 1 journey from 1 to 5.5 or 6 now, or whatever. For 30 years, you've been creating virtual worlds. What's it like evolving a game engine for those 30 years, when the hardware under you is improving exponentially? What are some things that changed, and what are some universal truths that have not changed?
#467
It's been an astonishing experience. Nobody 30 years ago had anticipated that we'd see the performance gains in hardware that we've actually seen in that time frame. It's something like 100,000 times higher CPU performance between multiple cores, higher clock rates, and more parallelism. If we had that in aviation, then we'd be taking a trip to neighboring stars off Alpha Centauri.
In graphics, it's been even more so. It's something like literally 10 million times more net usable GPU performance than we had running on a Pentium 90 CPU, all in 30 years. It's really made me appreciate that, over the generations, some areas of our engine development have absolutely kept up with that technology. The rendering team that works on Unreal Engine are the real miracle workers there.
Just about every generation of Unreal, we've replaced most of the rendering code. The different leaders at different points in time and the different luminaries have built systems that were absolutely rethought and optimized for the latest generation of hardware. Unreal Engine 1 was built for software rendering, and then the Voodoo 1 came along late in the cycle. We added support for it, but it wasn't fully capable or utilized.
Unreal Engine 2 was about bringing all the latest GPU hardware acceleration features to the engine and, moving forward, building some new features like vehicles and a few other capabilities. This was in the early GPU era, before GPUs had really broken out of everybody's expectations of Moore's law. That breakout occurred with DirectX 9 and the capabilities of programmable shaders.
Once you had control over writing code that ran on the GPU and could color every pixel on the screen, that GPU code was literally a factor of 100 times faster than the equivalent code I wrote a few years earlier on the Pentium 90. Andrew Scheidecker, a longtime Epic luminary, wrote the core of the Unreal Engine 3 renderer around real-time pixel shading, real-time lighting, being able to do dynamic shadows using several different techniques, and multithreading the renderer to support the early dual-core CPUs that were starting to show up at the time. That was a massive graphical upgrade.
Unreal Engine 4 made a number of improvements and just continued to add features to give artists more and more options for lighting and geometry that created realism. But I think probably our biggest single leap came with Unreal Engine 5, with a Nanite micropolygon geometry solution and with Lumen, the global illumination lighting solution. I think that really bridged the gap from game-ish computer graphics to total observable photorealism for artists who wanted to create that.
That's been the evolution, and the progress on the graphics side is absolutely astonishing, as it is on the audio side and a number of other areas. But parts of the engine also haven't changed all that much since the version I wrote and shipped in 1998. The file management system has been optimized a number of times, but it hasn't been completely rethought.
The networking system—the ways that clients and servers talk together and negotiate game state—is still an evolution of the thing I wrote. It's feeling kind of dated now. You still see networking bugs in Fortnite where, for some reason, when you're spectating, you're not seeing some parameters update.
#467
Well, that's because of the lossy nature of that networking model. The biggest limitation that's built up over time is the single-threaded nature of game simulation in Unreal Engine. We run a single-threaded simulation. If you have a 16-core CPU, we're using 1 core for game simulation.
Running complicated game logic with single-threaded programming is orders of magnitude easier than multithreaded programming. We didn't want to burden either ourselves, our partners, or the community with the complications of multithreading. Over time, that becomes an increasing limitation, so we're really thinking about and working on the next generation of technology. That means Unreal Engine 6, and that's the generation we're actually going to use to address a number of the core limitations that have been with us over the history of Unreal Engine and get those onto a better foundation that the modern world deserves, given everything that's been learned in the field of computing in that time frame.
That's a terrifyingly challenging engineering problem. It seems like every version of Unreal Engine, the amazing teams behind it are willing to throw away most of the code—or maybe I'm being a little too dramatic—but basically throw away the old approaches, like you mentioned with Carmack, and start again, like with Nanite and Lumen. Just keep optimizing to the current hardware, but even rethinking how it's all done.
Going from single-threaded to multithreaded—oh boy, that's terrifying. And that's in part why, we'll talk about it, maybe you have to rethink even the programming language that's being used, to rethink a lot of things. That's fascinating.
Can we just stick on Unreal Engine 5? I watched a bunch of stuff, but the State of Unreal at GDC 2024. Thank you. I was giggling with excitement watching some of this stuff. If we can talk about different things here just to nerd out a little bit, people should go watch this video.
They talked about the dirt, just the ultra-realistic dirt, and this is for Marvel 1943, which is putting the Marvel universe into Nazi-occupied France in the winter. So there's snow, and that's a very intense moment in history, and it really creates a feeling and puts you there. There's so much to that, including the snow.
Just looking at the dirt is a really nice way to show how you add a lot of detail to the scene in real time, which gives this experience of infinite detail—this is real, this is super-real. I think in the talk they describe what's entailed in generating the geometry, what's entailed in the lighting, all that kind of stuff.
Maybe can you speak about dirt? What are the components, for people who might not know, in creating this ultra-realistic texture, lighting, geometry—all of that? How do Nanite and Lumen all come together in this beautiful orchestra to paint, in real time, the dirt in Nazi-occupied France in 1943?
#467
Yeah, there's a lot happening here on screen. The real hero of this image isn't Epic; it's the artists and technical artists who worked together to build this environment, because it went way beyond what we realized the system was capable of doing, largely because of their brilliance. This is the magic of computer graphics: there's not 1 feature that makes this cool. There's a dozen technical features that each interplay, and because of the ways they interplay with each other, it's hard to actually identify the individual components.
One thing that's happening here that's really critical—oh yeah, now we're seeing it being turned off—is the lighting. The Lumen lighting system that's powering the scene is doing different kinds of lighting calculations at different scales. This was the work of Daniel Wright, following a decade of moving the state of the art of lighting forward.
His theory, which was rather controversial at the time, was that if you have enough levels of lighting calculation, then you can get everything—global illumination working everywhere from the absolute highest levels of a scene, where buildings are casting crisp shadows, all the way down to details like you see on the dirt—all working in concert and without distinguishable boundaries. So there's a good decade of foundational work there to make the lighting work.
In particular, when you see the very detailed shadows interplaying between the ice and the dirt, that's screen-space lighting. There's actually shadow calculation going on not based on the world, but on the pixels on the screen, because that is the only way that we could possibly do those calculations fast enough, running them in a pixel shader.
Yeah. Watch this. Watch when you add the objects, when you add the textures, the different layering, all the shadows that have to be computed. Shadowing is the amazing thing.
#467
The reason that works is counterintuitive. When somebody first explained it to me, I was like, "That's really clever, but I don't think that will work." But it does work, because if you observe the positions of incoming lights and the z-coordinates of the different pixels on the screen, you can figure out how your geometry there is likely to occlude other geometry. Even though it's only an approximation and isn't perfect, it looks perfectly good to the human eye and gives you the subtle shadowing that you see in a scene like this, which makes it look highly realistic.
The shadowing influences other things, too. There's also some really interesting things happening with the color here. I'm not even sure what's causing it. It looks like color is bleeding from some parts of the snow onto other parts of the snow. It looks like there's some subsurface scattering going on. I'm not even sure if that's being used in this scene.
Then there's a material layering system for laying down layers of material—dirt and snow and other things—all making that work. And then there's light bouncing off the geometry, which is another system for lighting on top of the global illumination system.
What about reflections, too? Does that count as the light bounce? There's light bouncing off of stuff to light it up in different interesting ways, but then there's also actual literal reflections, like we're looking at a puddle in the dirt.
#467
Yeah, that's right. The engine supports a number of different reflection techniques. One is calculating basically textures that reflect and capture all the lighting in the scene, and then bouncing that off of texture maps. So you can see different lights bouncing off of different pixels in different ways. And then there's individual lighting casting reflections off of things, too.
A lot of this is under the control of designers. One of the things that's a to-do problem for the future is that you don't just press a few buttons and have this kind of scene magically appear. This is a lot of work from some highly skilled people, not only building out this particular scene, but setting up the material layers so that you get the dirt with the ice layered on top and all the reflections working.
They had to make a number of technical art decisions to make this work. If a novice who hadn't worked very hard built a scene like this, it wouldn't look nearly as good. One of the challenges we have is to make building this kind of quality level even easier, more seamless, and more automatic. You'd like to just build a scene and say, "Use this material here," and have this appearance come out of it.
Once you create the scene, you can do things. I remember them saying, "Can you turn off the headlights?" I forget. You can control the lighting. All of this, we should say, is dynamic. You can change the position of the light, turn the lights on and off. That's incredible.
This is all real time: the geometry, the lighting, the textures, all of it. This is the power of awesome technical art, 3 decades of feature development. You have to give credit also to the 20 teraflops of graphics performance that NVIDIA is delivering. Thanks, NVIDIA. From 90 megahertz to this—90 megahertz is 90 megaflops. This is 20 teraflops. That's a big change. That's a lot.
One of the other things they talk about in the presentation is snow. If you're talking about 1943 in Nazi-occupied France in the winter, you have to create a feeling—one of which is the season, the winter, the cold. You have to cover everything in snow. Shown here is the ability to control how much snow covers the objects.
The ability for the artist to do that is incredible, to control dynamically how much snow is in the scene like that. That's cool.
#467
Yeah, that's really cool. There's a cool system for material layering and a dozen pieces coming together here. You also notice there's fogginess, and there are some hot objects emanating fog. An artist did that; that didn't just arise automatically.
So that's called material layering. An artist creates the different materials and is able to layer the scene with them.
#467
Yeah. Layer materials on top of each other and see how much of each material should be protruding in different places, with the engine handling transitions and things like that.
And that's on top of the sort of geometry that creates the structure of the scene and all the occlusions that have to be computed.
I've got to go to the other one that was just blowing my mind, which is smoke. Let me see that. Look at that. Yeah. Oh, there's a fire. There's a fire in a trash can with the smoke and the shadows, the lighting and the shadows interplaying on the smoke. Is this real time?
#467
Yeah, that's all real time.
What the hell? So, how do you do that? How do you do the smoke?
#467
Well, there's a really powerful particle system underneath. It's providing the technological foundations for this sort of thing, but there's awesome artistry on top of that, and an awesome physics engine powering it. It's hard to tell exactly which piece is doing what. But you have several different particle systems there. There's one for the fire, and then there's another one for the smoke coming out of it.
The really interesting thing happening with the smoke here is that it's occluding the light. You know, there's a calculation of how the light should diminish as it travels through smoke. And so you're seeing the lighting on the smoke being the really interesting thing. There have been a lot of attempts, but this was the first demo where I felt like this kind of smoke really no longer looked like a video game. It looked like just a burning trash can billowing out dark smoke.
And it's the artist's sophistication. It's a very, very, very large part of it. So, yeah, again, it's the interplay between the tooling and the artists. But, yeah, I could watch that for a long time.
There's something magical about sitting around a fire in real life and just watching the fire and the smoke. Humans have been doing that for, I don't know, hundreds of thousands of years, maybe. I was just staring at that, and I wish people would just stop talking so I could watch the fire infinitely. That's immersion. That's like, I want to be in that.
I want to sit around that trash can with the fire and the smoke and watch, and maybe warm up, because I was also feeling cold because of the snow. You really get immersed in the thing. I mean, it's so beautiful. It's true art. It's true art. It's just really wonderfully done.
But, okay, I've got to ask you about the humans. We talked about what it's like to create the scenes, but creating realistic humans is really tough. Can you speak to that? How do you create ultra-realistic humans? You have an actor behind this to convey emotion and show the nuances and details of the faces. Maybe this is a good opportunity to also mention MetaHuman Creator, which is part of Unreal Engine.
Yeah, that's right. Humans are by far the hardest part of computer graphics, because millions of years of evolution have given us dedicated brain systems to detect patterns and faces and infer emotions and intent. Cavemen had to, when they saw a stranger, determine whether they were likely friendly or whether they might be trying to kill them. And so we people in the world have extraordinarily detailed expectations of a face, and we can notice imperfections, especially imperfections arising from computer graphics limitations. It becomes by far the hardest problem.
The MetaHumans effort is part of a decades-long initiative that Vladimir Mastilović, the most talented digital human visionary in the world, has been working on for generations and generations of games. He served individual clients around the game industry for a while and then joined Epic as part of the 3Lateral team, leading now a worldwide effort to build all of the technologies required to make digital humans realistic.
One part is capturing humans. They built really advanced dedicated hardware that puts a human in a capture sphere with dozens of cameras in it, taking high-resolution, high-frame-rate video of them as they go through a range of motions. Capturing the human face is complicated because of the nuanced detail of our faces and how all the muscles and sinews and fat work together to give us different expressions. So it's not only about the shape of a person's face, but also about the entire range of motion that they might go through.
Capturing 1 human requires a few hours of capture work in a dedicated environment like that, and then thousands of hours of processing work to capture a precise, real-time-replicable version of that human in the environment. One of the things that's done is capturing an actor or actress in the real world and then using them in a video game. But the much more interesting thing going on is capturing thousands of humans to form a dataset whose goal is to encompass the entire range of faces in all of humanity.
So, going around every culture, every continent, every age, and every face variety, and capturing representative people, the entire range of faces is represented. Then you're able to combine and merge those together to enable recreating an arbitrary face that the system's never seen before.
Mm-hmm.
One of the ideas is to capture giant amounts of this high-precision data and use it to reconstruct a face at a consumer level. Maybe you take an iPhone photo of somebody's face and then capture a very accurate depiction of that—not by synthesizing it there on that device, but by combining all the known details of human faces to accurately capture the most accurate representation of that.
So that's the data problem. There are a lot of other problems in computer graphics. There's technology for rendering hair, which is really hard, because you can't render every hair. Again, we know the laws of physics. It would be easy to just render every hair; it would just be a billion times too slow. So you need approximations that capture the net effect of hair on rendering and on pixels without calculating every single interaction of every light with every strand of hair. That's one part of it.
There's detailed features for different parts of faces. There's subsurface scattering, because we think of humans as opaque, but really, light travels through our skin. It's not completely opaque, and the way in which light travels through skin has a huge impact on our appearance. This is why there's no way you can paint a mannequin to look realistic as a human. It's just a solid surface, and we'll never have the sort of detail you see.
We should actually just linger on that. That kind of blew my mind, thinking through that. I think I heard that the oiliness of the skin creates very specific, nuanced, complex reflections, and then some light is absorbed and travels through the skin. Would it be fair to say that creates micro-shadows or something? It creates textures that human eyes are able to perceive, and it creates the thing that we consider human, whatever that is.
You have to compute both the reflection—how light interacts with the oiliness of the skin—and how it is also absorbed, all while considering all the muscles involved in making the nuanced expression. Just the subtle squinting of the eyes or the subtle formation of a smile. It's a stupid, annoying subtlety of human faces that you have to capture, like the difference between a real smile and a fake smile.
Man, I love human faces. I love humans in general, but the way to show the beginning of the formation of a smile that actually reveals a deep sadness—all of that, when I watch a human face, I can read that. I can see that. Again, this is the engineering and the artist. You have to have the tools that, in real time, can render something like that, and that's incredibly difficult. But anyway, sorry.
So, yeah, there's a lot of this kind of complexity in even just the lighting of a face. That's right. Getting faces right requires the interplay of literally dozens of different systems and aspects of computer graphics. If any one of them is wrong, your eye is completely drawn to that, and you find it on the wrong side of the uncanny valley.
The level of perfection needed in this area is vastly, vastly higher than world rendering or grass or any of these other things. If the shadows on a work of architecture are slightly wrong, you're pretty forgiving of it, actually. Your brain doesn't really care that much. But if anything's wrong with a human, it's totally jarring.
Can you speak more to the creation of digital humans with MetaHuman, both on the editor side and sort of the bringing-it-to-life side? It seems like, because I've watched a bunch of videos of individual developers doing it, it's not too difficult to bring a human to life using the tooling that Unreal Engine Editor provides.
There are 2 main tools. Compared to the old days, where every face was created by hand by an artist from scratch, 1 is the MetaHuman Creator tool for creating faces, where you have a huge number of parameters you can adjust to create a unique human by adjusting all the different capabilities of the character.
You can then get that out of MetaHuman Creator into Unreal Engine, and then you can add all kinds of computer graphics features in the engine. You could add clothing using the cloth simulation system, and you can adjust the hair and all these other parameters on the character.
Then there's MetaHuman Animator, a tool for animating a human based on a facial capture, which can be done on a device as simple as an iPhone. It transfers the captured animation to the human you want, which is not straightforward. If the actor has 1 face shape and the character on screen has another face shape, the translation that needs to be done from the actor to the face is actually really sophisticated and nonobvious.
#467
And if you just applied it literally, then it would be completely wrong from your point of view. So those are the main tools that people are using now. Within Unreal Engine, you have a face, and you can do absolutely anything you want to it. You could also, if you decide to go outside of the MetaHuman geometry pipeline, build your own face, any creature of any sort, and then use the animation tools to animate it.
But this is 30 years into a project that's probably 50 years in total to get to absolute photorealism and controllability for absolutely everything. There's vast amounts of work still to do. We don't feel like we've solved the problem at all. We've just given artists a big productivity multiplier and a quality multiplier, but this is not in a state that we would say is done.
Nevertheless, I've seen people use it really effectively.
I've seen what seem like plugins, maybe external services, where you can get the faces to approximate the mouth movements required to speak a thing. That's a really useful feature.
#467
Yeah, that's right. When you have an artist or actor in your studio and you're recording a specific performance, you can just capture their facial motion and apply it. But if all you have is a voice recording, or you're generating a voice recording, or it's parametric, procedural, or AI-generated, then you need the system to translate that speech not only to movement of the mouth and lips, but also to facial expressions and the whole intent.
When we're speaking, it's our whole face that's active and emoting in different ways. It's not just the mechanical motion of the pieces.
So we spoke a bit about Nanite, the magic behind the virtualized geometry system. Can you speak a little bit to Lumen and, in general, what it takes to dynamically light, in all the complicated ways, the faces and scenes that we discussed? What are some interesting things to you that made the magic of it happen?
#467
Lumen is a system for global illumination, meaning it's supposed to calculate the interaction of light with the entire scene in a way that mimics reality. The first generation of engines that did lighting just said, “The light casts light, and the surfaces it hits are lit. The surfaces it doesn't directly hit are dark.” Those were all the techniques we had.
You'd have an area that wasn't hit by any light being completely black, but in reality, light bounces around the entire scene. Dynamically, when a light hits a red wall, most of the blue and green light is absorbed, but the red light reflects off and is now hitting other things. If you have a red wall with a white floor, light is bouncing off the red wall into the floor, and now the floor is being turned red. The entire bouncing of light around the scene through multiple bounces is the critical challenge to solve here.
Again, the laws of physics are known, and the complete solution to this was written down in the 1950s, I think. The real magic in Lumen is this system that Daniel Wright developed over the course of many years, based on ideas formed over a longer period of time, to calculate the way lighting bounces around at different scales.
That ranges from the scale of miles or kilometers down to the scale of pixels and millimeters. It has to calculate at each level and integrate it seamlessly at each level to give the appearance of completely seamless and accurate lighting. Previous techniques were highly specialized, and artists had to make a decision for each light about exactly what it did.
The goal, and a lot of the practice now, is that you build a scene, you place lights in it, and it just works. That's what makes it that much easier.
I recommend people go through this blog post and look at that. Dynamically, there's the indoors and the outdoors. To be able to dynamically compute the impact of outdoor light, just look at that. Look how gorgeous that is. Just the lighting.
We're looking now at an image of a cave. External light is lighting the intricate complexity of the inside of a cave. Look at that.
#467
Light in the real world goes through a lot of bounces, and the effects of it are very subtle. But when they're not there, you miss them. Often, a person can't point out why a scene is wrong, but they know it looks wrong. It's a lack of the subtle lighting cues that we're seeing here.
For great video games, but also for great films, lighting can make a film. We're looking at a very dramatic lighting of a scene. Imagine stepping into this scene: it's exciting, it's terrifying, and all of that has to do with light—the interplay between light and darkness.
It's incredible. It's truly incredible. Light is everything. To put the power of the tooling in the hands of an artist is really special.
#467
The industry's gone through a massive evolution, with so many supporting systems to make this awesome.
And, as always, artists. We're looking at reflections on smooth surfaces. Oh boy, oh boy. Look at how gorgeous that is. Wow.
#467
You have to appreciate that the algorithms are doing quite a lot here. You can have a scene with a huge number of not just lights, but also bright objects to reflect light off of them. Every one of those has to be captured in the reflections in order for it to be realistic.
You can't calculate every photon in the scene, so you need really detailed approximations. That's the field of computer graphics: increasingly effective approximations of the laws of physics, which are just totally intractable.
The result of those graphics is a feeling, an experience by the viewer. As a fan of beauty in the world, it's exciting that we can create that synthetically, artificially, through graphics. It blows wide open the possibilities of storytelling.
Outside of video games, a lot of people are using Unreal Engine for movies and films. Big congrats—I saw WAR IS OVER!, a short film that was made with Unreal Engine, won an Oscar. You can add that to the résumé. That's huge: an Oscar-winning film made with Unreal Engine.
What do you see as the future of the use of Unreal Engine in creating stories in the film industry?
#467
Increasing capabilities and productivity. The limiting factor in every one of these businesses is cost. The more the engine can make their jobs easier, the more power that brings them.
One of the big revolutions we've seen in Hollywood is moving away from doing computer graphics integration into a human scene with green screens, and moving to these large LED wall panels displaying real-time computer graphics powered by the Unreal Engine. That's a massive improvement in quality.
You can recognize the old green-screen movies because the lighting on the characters is just wrong. As much as they try to fix it up, it never really works. When you're filming in front of an LED panel, with LED light emitters in front of you as well, the actor not only picks up all the lighting from the actual natural scene they're supposed to appear in, but they can also look around and see it. They're aware of exactly what set they're acting in, and the overall end result is that much higher.
It's as much because the actors are able to do their jobs better, seeing the scene they're in, as because the technology is enabling a better lighting calculation and a better interplay of virtual light and real-world light to make the end result awesome.
There's a lot of excitement around generative AI. What do you think is the future of the interplay between what a human artist creates and what an AI system can create in Unreal Engine?
#467
I think a lot of people in the industry are overly optimistic about the rate of progress of AI for video and other things like that. The real problem is consistency. Spitting out an image that's really high quality is one thing, but with video, over the course of a scene, all the AI approaches have consistency issues going from one place to another. I don't think those issues will be remedied easily.
Fundamentally, AI just doesn't have anything resembling an understanding of the entire scene it's in, the entire arc of the movie or plot it's in, or the entirety of the world around it and how that might affect a scene. Game engines have that, exactly where they need to be.
I don't think what we're going to see in the space of world-class, high-quality productions is everybody moving to AI and a large part of the human creatives contributing to that being obsoleted. I think what we're going to see is AI becoming a multiplying force on the power of human creatives, making them able to create better stuff more quickly, with higher quality and better results.
Unlike the fields of generative 2D art and generative text, I think the future of AI is much more complex and nuanced. Your interview with Mark Zuckerberg, conducted in VR, was a really good first example of this. You did this VR discussion, capturing your faces and then rendering a completely 3D computer-graphics model of your faces. The end result was patched up by an AI image enhancer that was able to add an awful lot of the missing subtleties that are lost through normal computer-graphics rendering.
That's a first step. You can imagine the output of Unreal Engine being enhanced by an AI pixel-shading postprocessor. You can imagine the creation of objects being enhanced, and especially the mashing up of high-quality objects that have already been created.
#467
Epic's Quixel team went around the world and scanned tens of thousands of real-world objects at extremely high levels of quality. They have everything from rocks to trees to archaeological finds and so on, all captured there. And we have an awesome library of them on the Fab content site. What's missing is the ability to create arbitrary amounts of new content.
Using data like that and AI to create completely new trees that meet your specification, from all the knowledge that is built up from high-quality scanned trees, is going to be a really valuable thing. But I don't see this reducing the need for people, or the role of people, rather. I think it actually is probably an enhancer of that.
I can't help but think when I go on Amazon and Netflix to watch a movie, there's an awful lot of linear content, and most of it isn't very good because of the limitations of the media, budgets, and other things. If we can use AI as an enhancer on that, then everybody's going to have even more opportunity than they have now.
Every single technological revolution that has changed the way that people work has ultimately created more opportunity for people, and there are pundits predicting that this might be the last. But I think just the opposite. I'm an optimist on this, and an optimist that it's going to create opportunity for everyone.
Do you think it will be possible to use generative AI to create dynamic objects, like you mentioned, trees in the Unreal Engine world? So, create meshes and textures and empower the creator to create faster, use meta-knobs like hyperparameters, versus very nuanced controls where you can control much faster the look of a face, the look of a tree, all that kind of stuff?
#467
Yeah, I think that's the central challenge of the next decade of game engines and AI for content creation of all sorts. You have 2 very different models of the world that are emerging.
There's the scene graph—the technical term we use to describe the set of all the objects in the world in a 3D world maintained by Unreal Engine or another engine. In the videos you saw, it's the rocks and the trees and the snow and the bridge and the people and all of these things. Each one has enormous amounts of data attached to it.
Some are texture maps. Some are sound files. Some are animation files. There are enormous amounts of detail all stored there in this computer-precise computer graphics representation that enables rendering it from any perspective, with any settings, and so on. It's a completely general system that has complete context about the state of the world at any point, and so you can always precisely reproduce it.
If you play the same scene 10 times in a row, it's always the same. It's never randomly changing, and you're like, "Oh no, why did this character's face change midstream?" But it's also rather limited because you have to build everything manually, and it's costly and time-consuming. It requires expertise.
Then you have this other model of the world, which is what AI sees or thinks. If we could peer into what's really happening in its parameters, there's something like the mushy connections of neurons in a brain. It has a vast amount of knowledge about the world, graphics, images, people, and everything else. It's stored in a human-incomprehensible form, but it can be extracted through queries, like asking it to produce an image from a prompt or a video from a prompt or whatever.
The huge problem with that is it's very mushy data. We don't know how to give it a command that will give us a precise result. If it produces 1 image 1 time and we change our prompt slightly, it might produce something completely different. We are unable to art-direct it, and so it's this completely untamed tool.
I think when we figure out more and more ways to merge these and connect these 2 together, you can imagine AI enhancing the process of content creation. In a traditional scene representation, you can imagine the scene representation being shared with the AI. So the AI not only sees a prompt, but also has a list of all the objects in the world and their characteristics and so on. It can learn more about how those objects should move and interact.
If you get a constant feedback cycle going back and forth between an engine and AI, then I think you can get the best of both worlds: stable scenes, but also the higher productivity of being able to get content out, the ability to select specific parts of it and art-direct those, and to have that art direction stick and be recognized as part of this permanent scene representation.
Yeah, I can't wait until AI can operate not in the space of pixels, but in the space of scene graphs, creating objects in the scene graph, whether it's audio, as you mentioned, or any of the things that you mentioned that empower the creator. Yeah, that's a super exciting future.
I wonder if you could speak to a fear that people have on this topic: artists and engineers fear losing their jobs, being replaced by AI. Are there words of hope that you could offer them?
#467
This is certainly the most extreme example of it because AI is just so far ahead of prior technologies. But similar fears were had in every other industry.
There's a fear that digital music synthesis would obsolete musicians, and there was a very brief period of time in which songs with digital music instruments, like early Moog and Yamaha synthesizers, weren't allowed to win certain music industry awards because they weren't considered real music. Over time, people were educated and realized, "Oh, these are just instruments people are playing and controlling the same way they did before."
There are similar questions about whether computer art built in Photoshop is really art, or is it just goofy computer stuff? I think nowadays digital artists have gained respect. If you look at just the tools that have existed in Photoshop, some of them are pretty sophisticated, and nowadays they have AI features. But I think AI is ultimately going to be another tool in the artist's tool set.
I think it's going to become a more powerful, directable, and human-serving tool in the future. A lot of the alienation comes from the prompt either being immensely powerful at giving you an entire creation, but then being completely unwilling to let you control the nuances of it. That feels alienating.
You give it an image, but you're like, "Replace this part of it with this thing," or, "Make that object green," and it just can't do it. Often it can't be convinced with any number of words in the prompt, and that makes it feel like the computer is taking control away from us—humans and artists—and is refusing to do what we want and has its own opinions, right? It feels like a competitor.
When we have much more nuanced control of it and artists can go in and say, "Let's enhance this object. Do this, do that, do that," they'll feel it's like some of the tools that exist in Photoshop, which are, in some ways, compared to a paintbrush, superpowers already. AI will come to feel like that too and will increasingly serve creators, creating and enhancing a work in a way that feels like a natural extension of their own bodies and minds.
And of course, there is a real human price to layoffs, and there is a hype around AI. Companies might try to implement AI systems and, in so doing, lay off a bunch of folks. The pain that those folks feel is real.
I think there's always going to be pain with these kinds of transformations that are happening, and it's a terrible pain. Pain in general in the human experience is terrible. I'm personally excited by the human-AI collaboration as you've described in this whole process.
So I think if you just keep being open to using the tools, constantly trying the cutting-edge tools, how they can make you more productive, how they can empower you as a creator, as an artist, or as an engineer, I think you're going to just keep winning.
#467
There are a lot of complicated trends underway, and it can be hard to break them down and distinguish them. I think a lot of the theories that get the biggest traction on social media often don't capture the real underlying motive forces at play there.
But yeah, I think AI involved in code production will probably create a net benefit for the need for humanity to be involved in coding. It may change parts of jobs. I don't think it's going to obsolete anybody who's willing to learn new ways of doing things. It's always been this way.
I think there's also a lot of overhype in AI. AI is really great at spewing out code that does something that a million GitHub repositories already do because it's learned the underlying pattern. It's notoriously hard to get it to do something new that hasn't been done before, especially when it's a complex task.
The bigger amount of code you ask AI for, the more it leaves you with just a mess of code that sort of works right then. That's the problem with code: it 99% works, but the 1% might be harder to get to 100% with AI than with hand-coding.
Everybody who's looking at this topic should actually try using the coding assistants on hard problems and see how they do there.
Yeah, for me personally, it makes it more fun and faster to generate boilerplate code, so I can focus on the harder decisions, harder big-picture decisions, and harder innovative decisions and all that kind of stuff.
#467
And it just makes programming more fun for me because I feel less lonely. Even when it gives the wrong code, I can say, “Oh, okay. Well, that’s a way to do it. That’s interesting.” Then you can talk to it.
Maybe that shows something about the programming experience: it is, in part, sometimes a bit lonely. The topic of boilerplate code is an interesting one because the mere existence of boilerplate code is a failure of programming language and of the idea of creating software modules, right? You ask AI to create a sorting function. Great. Now you have another sorting function that might be buggy alongside the million others that different people have written. It would be better to have a sorting function that’s been written, tested, and optimized, and that everybody relies on. More modular software, I think, will actually reduce the opportunity for AI, because people doing programming work will largely be solving unique problems that are actually hard problems in themselves and not just connecting other widgets.
Yeah, I think, as in many cases, AI will just help improve the human systems by shining a mirror to ourselves. I have to apologize for the pod question ahead of time, but you’ve been a big proponent of the idea of the metaverse. We’ll talk more specifically about what that means today, but we’ve been talking about simulating reality better and better and better.
So the pod question is: What does it take to simulate reality to the level we see around us today? How far away are we from simulating this ultrarealistic, immersive, fun reality that Earth is? What does it take?
#467
We’re going to get shockingly close over the coming years, certainly in less than 20 years. If you look at the progress, in the areas where we have achieved total photorealism and the areas where we fall short, we’re getting very close in all nonhuman interactions you see in the world: walking through a jungle or a city, all the lighting. It’s very close, and that might be just a few years away.
But all the problems that involve humans—human dialogue and intent—have a much, much, much higher bar that they need to meet to satisfy our brains and convince us that they’re realistic or real. I think that’s going to be the primary challenge of graphics development and simulation development over the coming decade.
So realistic humans—that’s going to be the bottom line.
#467
Yeah, visual and behavior, too—everything. I was asked about this about 10 years ago, and I said that even if you gave us an infinite amount of computing power, we couldn’t simulate realistic humans because we simply didn’t have the algorithms. We had no idea how to simulate human intelligence. That was absolutely the case then, but it’s not really true anymore.
What we’re seeing with generative text AI is at a level where you could say that it’s actually doing a pretty good job of simulating a human—at least humans at the text level. Not at the emotional level yet, but at least at the level of words spoken. If you find more and more ways of training it on more and more scenarios, you might have a very compelling human simulation going on in the next 5 years, even. I’m not saying it’s a good idea, but I think the arc of the technology is inextricably heading in that way, and it’s heading at a shocking, shocking rate.
You know, we don’t say this enough, but the current state of LLMs—I mean, if you put Alan Turing in conversation with ChatGPT, it really passes the Turing test, almost definitively.
#467
Of course, we keep raising the bar. Well, the Turing test is not a real test. It’s not a useful test. Whatever. We just keep raising the bar for AI, so it’s always going to be seen as lesser. But you have increasingly ultrarealistic faces and bodies combined with increasingly moving and powerful forms of emotion, speech, and text.
I work with this amazing company called Level Labs that does text-to-speech. There are companies that specialize in bringing text to life, and that’s going to increase. Different companies do that very well. Then all of a sudden, you have this synthetically created scene where a human is speaking, and you’re moved to the point of tears because of the scene: a beautifully lit face in the full darkness, the emotion, the drama of the scene.
Yeah, I think—so you’re saying 5, 10 years, maybe 20?
#467
Yeah, absolutely. We’ll definitely see it in our lifetimes.
To increase the level of pod-ness in my question, do you think we might live in a simulation? And if we do or don’t, how hard would it be to build such a simulation where we’re fully convinced we’re in it?
#467
Well, I don’t think these questions are necessarily unanswerable. I’d like to see more actual effort to ascertain what the underlying mechanism of the universe is, and I don’t think we’re here for no reason at all. I think the world’s a pretty cool place, and the fact that we can exist, and the laws of physics—especially the Standard Model of physics—and all the parameters that lead to these atoms and life evolving in the presence of thermodynamic gradients, that’s really cool. I think it’s a worthy field to study more holistically.
I don’t know. The question of whether we’re living in a simulation always boils down to: If we are living in a simulation, what are they living in? At some point, there has to be some base reality. One of the philosophical theories that was put forth seriously was that there is no physical reality. If you have a system of equations, such as the laws of physics, then all possible evolutions of dynamical systems under those equations kind of have a physical reality. So we’re just a manifestation of mathematical laws rather than needing an actual universe around us.
Mm-hmm. I don’t know. I like dabbling in that philosophy. As we get AI becoming smarter and smarter, and we get closer and closer to really capturing the full laws of physics, these questions become quite a lot more compelling. You start to think: If we’re not living in a simulation, what are the things about this reality that are not simulatable? What are the big mysteries around us?
It feels like the physics is simulatable. It feels like a lot of the incredible stuff that we talked about, while super nice, seems simulatable. But then there’s the flame of consciousness, the feeling of it, whatever that is that lights up in our eyes as humans. Maybe that’s not simulatable. Maybe that is the thing. Maybe that’s a thread that connects to the explanation of the mechanism of the universe, as you said. That’s really important to understand, and we’re completely clueless about that mechanism.
I mean, a lot of the religious texts sneak up on what that mechanism is, but we’re still mostly clueless. We only have these leaps of faith in believing what that mechanism might be.
#467
So the whole idea of nested simulations, given a sufficiently advanced technology, is kind of moot, such that if you wanted to simulate another reality, you’re kind of just actually creating the reality. You’re doing quantum mechanical operations that would produce the same result anyway, and you’re running them at full performance. So it’s not really a nested simulation; it’s just another thing that’s happening in the universe.
That would be interesting, but I think it’s ultimately a theological question. Because it’s no longer cool to deal with theology as part of science, there hasn’t been much work on that. You can’t publish results on those topics in a respected physics journal. I think that’s kind of been set aside. But it’s interesting to note that the laws of quantum mechanics themselves have a place for God or souls, or whatever external source of input you might want to attach to such a thing.
There’s this idea of quantum wave function collapse: when we look at a quantum system evolving in perfect superposition of many possibilities and go to observe it, we actually just see a specific possibility. In the multi-slit experiment, the light ultimately ends up being observed going through one slit or the other, and that’s a place where there’s this random number being injected into everything around us—trillions of trillions of trillions of times per second in everything we’re observing. If you wanted to attach some external input, well, there’s a place, and it could be seriously accessible through the rigors of science, but we just know so little there.
Yeah, it’s funny. In that area, we know nothing more than cavemen knew whatsoever. We know the laws of quantum mechanics, and we have computers that may soon be more advanced than we are, but we just don’t have any answers to the fundamental questions about life, the universe, and everything.
Do you think, more practically, that we’ll create video games—video game worlds of the metaverse variety—in which humans will want to stay? To me, this kind of discussion of a simulated reality—the real test of immersion is a perfectly healthy, excited, normal human being choosing to stay in that world and not wanting to go back to the real world. How hard is that, do you think?
#467
Well, I think the technology is coming, and then there’s the human question: Should we go that far? Should we? Certainly, as a game developer ourselves, Epic doesn’t aspire to that. We make fun games. The ultimate manifestation that we found is fun games that people play together to have fun in between work and the other things in their real lives.
#467
But as simulations get more and more realistic and the capabilities become more and more real, I think we have to ask ourselves some hard questions about how humanity should operate in that space. What are the limits that we should go to, and what are the limits we should set?
Yeah, I think there are going to be some hard questions, and I think maybe I’m just being anthropocentric here, but there should probably be some legal bounds on 2 things. The first is not creating a reality in which humans would want to stay too long.
#467
Yeah.
The second is focusing more on the game side and, more importantly, not creating simulations of humans that could suffer. To me, as we talked about, creating ultra-realistic humans eventually means creating humans that can suffer. They can fall in love and experience heartbreak and loss. They can fear death.
The more you simulate that to the full reality of the human condition, the more you get to this place where you have simulated humans that are able to suffer. I think, legally speaking, you have to get to a place where that’s not allowed. There is a line you can’t cross, and that’s a hard thing for humans to deal with.
#467
That’s going to be some interesting Supreme Court cases. Once you create a human sufficiently realistic to the point where they can suffer, it means that human could be tortured and people could do terrible things to that human. That’s artificial, quote-unquote, but boy, that still feels wrong. I don’t know what that is, but it feels wrong to torture a simulated human.
Now, when you play a video game and it’s a shooter and everybody’s having fun, that doesn’t feel wrong. But there’s a line, and that’s going to be a fascinating line for the Supreme Court to explore. Oh man, what an exciting future we’re living in, huh?
#467
Yeah. I think the thing to appreciate is that game developers have generally been on the good-spirited side of things. If you look at the worst things that people do in popular video games today, it’s like you rob a bank in Grand Theft Auto. It’s clearly fictional and fun and not serious and over the top.
As things get more realistic, especially simulations of humans, there are some hard questions that will have to be answered there. But I think the thing that all game developers need to remember is we’re here to make people’s lives better by entertaining them, providing them with fun and a diversion from other things, and being a part of their lives—not trying to be too big or too much, and not trying to provide an alternate to reality, but just to provide a fun source of entertainment, like the many other things that people do for fun.
So, you’ve spoken, as I mentioned, about the metaverse for many years. Let’s step back. What is the metaverse? And speaking of fun, Fortnite—hundreds of millions of people just enjoying themselves in this huge-scale social game. You could call it a metaverse. Maybe you can describe the different flavors, the layers, of how you see what the metaverse is.
#467
The metaverse is an idea whose stock price goes up and down depending on who says what on what day. Some have the ability to drive it way down by opening their mouths. But ultimately, this is about multiplayer social gaming experiences: you and your friends getting together in a 3D world and having fun together in any way you want.
If you’re playing Fortnite Battle Royale, in my view, that is capturing the essence of the metaverse. Especially in Fortnite, when we got Sony on board so that all players on all platforms in Fortnite could play together, could voice-chat together, and could be part of a single game experience, it really took on a new nature. It was not just a multiplayer game with heritage from Doom, but also a true social experience between you and your friends.
Fortnite Battle Royale is just 1 manifestation of that. Another one is Rec Room VR, where you’re standing around in VR with friends, playing billiards or shooting hoops or doing other light entertainment things. I think every game that has a huge number of players who play together socially as part of their entertainment lives is really getting at the core essence of the vision, the aspiration for the metaverse.
We’re still in the very early days of it. I was on the internet in 1992 or so, and it was a pretty bare-bones thing. I think when we look back at the state of gaming today, we’ll realize that there’s a lot further to go to get to the ultimate version of it. But I think it’s all on track.
I think it was at the time we released Fortnite Battle Royale and started playing together—all the people at Epic in squads and experiencing that world—that we realized this trend was afoot and that we needed to do everything we could to bring in other creators, so that anybody could pile on to the work we were doing by creating their own worlds through Fortnite Creative and UEFN, creating more games and more genres that people could play, and ever-expanding the repertoire.
Yeah, I would love to talk about different aspects of that a little bit more, because Epic has created a lot of amazing games: Unreal Tournament, Gears of War. But the game that I think it’s fair to say transformed the gaming industry was Fortnite, Fortnite Battle Royale especially. Can you explain the origin story of Fortnite?
#467
Well, Fortnite has humble beginnings. In 2011, we’d just been in the final days of finishing one of the Gears of War games, and we wanted to explore ideas for new games. We had a general idea that we would like to build some smaller online games in order to learn more about that space, and not just have 1 single massive game in production at all times.
Everybody in the company was given a week to form a team, work with whichever coworkers they wanted, and build a game using Unreal Engine. So you can actually build something pretty interesting in a week. One of the teams built the very first version of what became Fortnite.
The very first version of it had a different art style, but it had the idea at the core that you were going to build forts by day using this building system. Then night would come and you’d defend the forts against zombies.
Nice.
#467
The longer you could go, the more elaborate forts you could build and the more survival waves you could withstand, and it would get cooler and cooler with time. That game was in development for a very long time. We always saw the potential. Just the building aspect of it was incredibly fun, but we made different pivots at different times.
At 1 point, we moved to the current Fortnite art style, away from a more realistic style, and made it more in the Pixar vein, with cool, stylized characters.
What was that decision like? Because we should mention Gears of War is this incredible game that shows off the graphics to the fullest, different from the artistic style of Fortnite. It’s amazing that the same company would make this fun, silly graphic style of Fortnite.
#467
People come to Epic because they want to work with the best people in the world, and artists bring a lot of different personal art aspirations, style, and capabilities. Many of them are very multitalented. You can produce photorealistic content or highly stylized content, and a lot of the best artists on Fortnite were a lot of the best artists on Gears of War, too. They changed styles but continued doing awesome work.
We’d realized that Fortnite could be really mainstream and could be a game people play for a long time. Having a more visually pleasing art style that’s not as stressful as a Call of Duty game, where you’re constantly pixel-hunting a dark scene for somebody’s rifle scope—that was the goal. A few of the artists got together and defined the new art style, and we moved to it.
At different points, it evolved toward being kind of like a light MMO, like Destiny, with rather complex RPG and stat systems. That evolved into an MMO-like tower defense game—MMO only in that persistence of items and stats—which became Fortnite: Save the World mode. We launched that in early 2017, and it was a moderate success. It paid its budget, and we came out ahead.
At the same time, the battle royale genre was booming. PUBG had just come out, and tons of people at Epic were playing that. They were like, “Oh, this would be so cool if it had Fortnite building.”
So we assembled a team in a war room—about 30 people in 1 big room—and they worked insanely hard for 4 weeks to build Battle Royale. The nice thing is that all the content for Fortnite had been built over the previous 7 years. They had a huge library of content, but no gameplay of the type they wanted. So they had to build it all in those 4 weeks and ship it.
That put Epic on an exponential growth curve. We went from 300 employees to thousands of employees, and from about $100 million in revenue to billions of dollars in revenue. We became the center of the gaming world at the time.
Can you actually speak to the technical challenge of going from mostly not being an online, large-scale gaming platform to being able to support, with Battle Royale, a huge number of people playing with each other at the same exact time? What was the technical challenge of doing that in 4 weeks? What were the technical challenges that had to be overcome?
#467
Since 2012, we’d been building online backend systems to support player accounts and login and all of the different systems needed to make a multiplayer game.
#467
And we've been building them to be scalable. By some miracle, we built them stably enough that they were able to scale up. The online team responsible for patching that code spent a year of intense work getting it to scale from 40,000 concurrent users to 15 million concurrent users.
Yeah. They're scaling their scaling. That's a lot. That's immense. But they'd done such an awesome job of building the foundations that it was tractable. It was doable. If they hadn't done that, then the company would have died. Fortnite just wouldn't have been playable, and the whole thing would have failed.
There's so much detail there that makes all the difference. That's what Spotify has talked about: latency, how quickly you can deliver the song, changes the product from being this shitty thing where I'd rather pirate the songs to, "This is good enough. I really enjoy the experience. I want to use it." That's really important, to create an experience for 15 million concurrent users where it isn't lagging and actually works, right? Is there something you could say about how difficult that is to pull off?
#467
The trend nowadays for building online services is microservices. There's not one big server that handles all the interactions with Fortnite. There are game servers running 100-player game instances for each Battle Royale session. Then there's an account server and many instances of it, all talking to a shared database. There are hundreds of different microservices talking to each other.
Scaling is a matter of identifying the bottlenecks in that system and making sure that each one can scale and has enough redundancy to handle the load. Thank God for Amazon Web Services and cloud hosting, because Epic went to 15 million concurrent users without buying any server hardware. We were able to just call up Amazon and say, "We need more."
There was a period of time when Fortnite was undergoing exponential growth, and we'd find that one week we ran out of servers in Brazil during a heavy weekend of play. The next week, we had an even heavier weekend of play, and there were servers to handle it. Somebody at Amazon had drop-shipped millions of dollars' worth of server hardware into Brazil and turned it on just in time for Fortnite to need it. There are a lot of unsung heroes in that story, many of whom we've never heard of.
Yeah. Behind AWS, there are many unsung heroes. So many of those folks run the modern internet. All the incredible services, games, and other services that we take for granted are currently being run on AWS, or were originally, and on Google Cloud and so on. Can you speak to how much money Fortnite made?
#467
This is one of the greatest successes in the history of video games. Fortnite makes billions of dollars a year, and that's the majority of Epic's revenue. We have a robust business around Unreal Engine licensing, Rocket League, Fall Guys, and some other tools like the Fab content marketplace, but the majority of it is Fortnite because we've chosen to reinvest heavily in building what we think is the future of technology.
We're spending more every year than we're making. For a period of time, we were spending over $1 billion a year more than we were making, and we found that to be unsustainable. We went through some painful layoffs at that time, and then we stabilized. Now we're spending several hundred million dollars a year more than we're making, which we can very well afford to do because we have billions of dollars in the bank, thanks to a combination of the profits we made when we were a very small company with a very big game and the investments we've raised.
We're not an oil well pumping oil out of the ground after we discovered oil. We are growing to be a future technology powerhouse. We think the 3D space and the future of real-time 3D simulations are going to be major facets of technology for humanity. We're all in on investing in that.
Yeah, it's exciting to see you investing in a long-term future, taking the risk of doing the research and defining the next chapter of Epic. You're using the successes of today to invest in the successes of tomorrow, which might look very different—completely different. Part of that is investing in the development, research, and innovation in Unreal Engine.
#467
That's right. We're a company that can start working on a project knowing that we won't reach fruition or make any money from it at all for 3 years, 4 years, or 5 years. We're totally okay with that. That's the cycle that's fueled our growth over time: constantly investing in the future and being a serious company that's doing serious R&D side by side with shipping and maintaining products and earning money from them.
Can you speak to—I mean, there are several directions here. One of them is the future evolution of this idea of the metaverse, potentially creating communities. Fortnite is this incredible, huge community of humans interacting, but your vision is to go outside of just one game. What are the kinds of standards that you're thinking about building, such that people can have an identity and almost travel between games and that kind of thing?
#467
Let me start with the present of gaming and why it sucks.
Sure, Fortnite is an awesome thing. You go into Fortnite, and there are 100 million monthly active users there. A huge number of your own friends are there. You can play with them and go from experience to experience seamlessly without leaving the app. There are 100,000 different islands you can play on, and some of them are really awesome. There are constantly new ones coming out and constant things to do.
If you want to play Roblox, you quit out of the Fortnite app and launch the Roblox app—different program, different friend system, different account names. Your username in Fortnite and your username in Roblox are different names, and they're not connected to each other. You have to remake all your friends and then find different things to play. Now the controls are different, so you have to relearn how the joystick, mouse, keyboard, or controller works in that experience. You have to go from place to place.
You buy some stuff in Fortnite, and it's really cool, and you can use it anywhere in Fortnite. Then you go into Roblox and you don't have that stuff. You have to buy different stuff, and that stuff only works in Roblox. The same is true with Call of Duty. It's another isolated place, and the same is true with World of Warcraft and League of Legends. Every place you go is its own unique place: different friends, different account names, different people, and there's no social cohesion between them at all.
A long time ago, consoles set out to solve this problem by creating their console-wide friend system and account. Your friends on PlayStation in one game are your friends on PlayStation in another game, but only on PlayStation. If you're on Xbox, you can't see PlayStation friends.
There are 2 basically orthogonal and cross-cutting divisions of the world into fiefdoms, which were not created with bad intentions but arose as separated, isolated islands. One is the platforms and their social services—Xbox, PlayStation, Nintendo, Steam, and Epic, if you add it to the list—and the other is these different games people play. Because of this weird historical artifact, we're left in a world where people can't seamlessly move from game to game, bringing their friends and their stuff.
The solution to this is to federate and connect all of the systems together. All the players on all the different platforms can be recognized by their name, and you put the @ sign in it. Your Xbox names, your Fortnite or Epic names, and your Steam names can all live together and interoperate together in a single space. Unifying the social ecosystems is one thing that needs to happen.
The next and bigger challenge is to unify the economies, too. I'm not talking about how a sword you have in World of Warcraft should work in Fortnite. Every game is going to have its own gameplay rules, and a lot of games are going to have stuff that only works in them. But there's a huge set of games that have in common the idea of a cosmetic system that does not affect gameplay outcomes, but is purely about cool looks and cool appearances.
Most of the major multiplayer games have them. If you look at games, you could probably bundle together about 70% of them and say they're similar enough that they could actually interoperate. You could own an outfit in Fortnite, own an outfit in Roblox, and own the same outfit in maybe Call of Duty and maybe 100 or 200 other games, and actually expect them to work together.
You'd find other kinds of items are probably interoperable, too. Fortnite has car outfits, so you can buy different appearances of a car. When you find a physical car in the world of Fortnite, if you're the first person to get into it in that session, boom, it takes on your chosen car cosmetic. Now you have a cool car. It's identifiable as yours.
We realized early on with Fortnite that the key to making Fortnite work as a creator economy was to open up the revenue from the item shop to all the sources of engagement. There are 2 big things happening in Fortnite that make it work as a product and as a business. One is the game modes—Fortnite Battle Royale and all the user modes and everything else—which are sources of engagement.
#467
People play there because it’s super fun, and because they’re playing there, they’re willing to buy cool stuff to make their character look cooler. You have all these sources of engagement, but the sources of engagement don’t make money directly. You can’t spend money in Fortnite Battle Royale to buy a game item. The gameplay is not pay-to-win; it’s all just a game.
We make money from the item shop, and the item shop only exists because of the sources of engagement. If you weren’t playing Battle Royale, trust me, nobody would want to buy a Fortnite outfit. If you weren’t playing any Fortnite games, why would you buy Fortnite outfits? You have all the revenue in this item shop economy and all the engagement in this engagement economy.
The thing that magically makes the Fortnite creator economy work is revenue sharing: item shop spending according to sources of engagement, by engagement. If you buy an item and you’ve played 40% of your time in Battle Royale and 60% of your time in these user modes, the money you spent—the portion of that that’s profit—can be separated out and paid out to all the different creators who participate in that economy.
That’s why Fortnite scaled up to a $400 million creator economy so far, and it’s growing. It’s amazing. One of the really critical things we aim to do in designing that is ensure it’s a creator economy that could scale to other companies and other ecosystems.
Right now, we have many industry standards bodies. One standardizes game ratings—age ratings of games. Another standardizes file formats for the web. Another standardizes file formats for 3D, like the Khronos Group and the Metaverse Standards Forum. If we had a standards body standardize portable outfits in games—game outfits that you could buy in one game that work in another—what are their dimensions and capabilities? What can you do and what can’t you do, and so on?
Then you could have an item economy where every game agrees to respect each other’s item purchases of that sort, and revenue is shared between ecosystems as well. That would be incredible.
That would be so amazing. Is there, first of all—it seems silly, maybe, for people who don’t play video games—but an outfit is important. If an outfit can be persistent across video games, I mean, what’s the purpose of life? Why do we wear clothing? It’s a part of our identity; it’s how we present ourselves to the world. I wear this stupid suit and tie. It feels good when I put it on.
Even with the other outfit, I have 2 outfits: this, and then a black T-shirt and jeans. It feels good to wear that. It feels like me when I look in the mirror. I know that guy. To be able to have that outfit go from game to game to game, maybe across years, would be wonderful.
I wonder if you could comment: Could there also be another standardization about the value, for more complicated items? Take a sword from Diablo and transfer it to a gun in Fortnite, but based on the value—some generic concept of money. The value of a thing in one game versus the value of a thing in another game, where you’re almost operating in a space of value versus the actual items. Is that already getting too general?
#467
I think this can be done. We did a lot of analysis of the Fortnite economy and found that some Fortnite experiences lead to, or correlate with, higher spending than others. Battle Royale is relatively strong in that area because you see your character from behind and see all of the other characters from the front. You have lots of opportunities to really see who you are, to emote, and to interact with other players.
A lot of games have that characteristic. One funny anomaly stood out. There’s this game that was one of the big breakthroughs in Fortnite, Only Up! It’s a game where you’re just climbing up and up by following paths of stacks of objects and things. It was just stupid fun. Everybody loved it, but we found people weren’t spending a lot of money on outfits when they were playing Only Up!
It’s kind of intuitive, actually. You’re not seeing other players. If you see anything, you’re seeing their butt as you’re trying to catch up to them, jumping from object to object, and they’re above you. It wasn’t a mode that showed off outfits very much, but you can determine the economic correlation between a game mode and spending.
That’s so fascinating. Fortnite is this gigantic economy where you could do those kinds of studies. You can understand markets—the digital markets as they emerge amongst humans—and what they value. From that value, you can probably have a very stable kind of money that emerges.
#467
Yeah, I think so. You don’t need an alternate currency system. Unfortunately, a bunch of ideas have been conflated because people are trying to hype up different things. This idea of large-scale multiplayer social gaming—the notion of the metaverse—has 600 to 800 million people playing that kind of game every month. That’s real, and that’s happening. It’s very much underway.
VR has a much smaller audience. I don’t think you need VR to have anything like this. VR is hardware that may or may not enhance the experience for some use cases. For some, it will probably be better, and for some, it will probably be worse. Certainly, there’s not any set of Battle Royale players flocking to VR.
And the other thing is NFTs. It’s like trying to equate digital or cryptocurrency to the metaverse. It’s just a way of denoting money or value exchange. You can do that with money, or you can do it with NFTs, or whatever. There’s nothing about this future digital economy that fundamentally requires cryptocurrency or whatever.
What you need is interoperability. Interoperability can happen through a blockchain, through a database, or through standards bodies defining standards and protocols. We’ve been doing it for hundreds of years, since the railroads were standardized. It’s not something that totally requires a novel technological solution.
Yeah, even on the topic of cryptocurrency, it’s very frustrating. Blockchain and crypto are really powerful technologies that I think can enable a lot of the things we’re talking about, but so many people use them to try to make money, to create these bubbles. The hype and the memecoins and so on and so forth become much less about that. They drift far away, and rapidly, from things that are actually of value, which is the experience of playing Fortnite and how you look when you play Battle Royale.
That’s valuable. It sounds ridiculous to say, but it’s true. That’s like gold in the physical space. We know that holds value. How your outfit looks in Fortnite, as you’re saying, provably holds value. You want to connect a standard definition of money value to that and not let it become this hype thing, which NFTs, as you mentioned, just become. It quickly drifts away into the land of people trying to buy and sell and trying to make money, versus staying close to the thing that people actually value.
Forget the money. It’s more about exchanging valuable experiences or things of value. You can play Fortnite, then go to another video game and continue the valuable experience, and then come back to Fortnite and do that kind of thing.
So you’re saying there might be a way to do that and to basically create standards the way the web has different standards for displaying websites and all this kind of stuff, or the communication that’s required on the networking side. All the different standards that make the web work—there need to be those kinds of standards. What would those standards look like to enable the metaverse?
#467
We need a lot of different things. The 1 area where the standards have been very successful in creating working standards implemented by all the major engines today is in low-level file formats for data interchange.
The web has PNG files for 2D images and MP3 files for audio. 3D has the Pixar USD file format, the Universal Scene Description, which is a description of the scene graph—the entire set of objects in the scene and all their parameters—so that any engine that supports those features could import that and then render the same scene as the engine they came from.
Large parts of this work across Unreal Engine, Unity, Blender, and all of these 3D packages of different sorts. There’s the glTF format, which stores textures, geometry, and other low-level data for 3D objects.
When you see a Fortnite character, that file format together with the image file formats can store their static appearance—the shape of their body—even their animations and their different poses. The different standard file formats could store all the sounds they make in their emotes, but we’re still missing a bunch of pieces.
The biggest missing piece is a programming language that’s at the center of standardizing the metaverse. If you look at the web, the web is a combination of a bunch of different technologies. The 2 biggest ones are HTML, which describes the 2D scene graph, or the 2D layout of controls and objects on the web page.
#467
But that's just static data. It's a nonmoving, nonanimating web page. Then you have the JavaScript programming language, which is used to manipulate that, display things to the user, and implement anything you could implement in code. It's a little programming language that runs in your web browser.
The metaverse needs something that performs a similar role. But the metaverse and 3D gaming in general need something that's more powerful, safer, more scalable, and more capable than JavaScript, because the metaverse is actually a more difficult technical problem than a web page.
A web page, like an app, is just a single bundle of code and content that a company has prepared and released. It stays exactly what it is until they release a new version, and it's upgraded from version to version as it goes. But the metaverse needs to be a composite of code and content built by millions of different people that could potentially form a seamless world together. Yes, fully distributed and collaborative.
First of all, there's also the amount of data. It doesn't have to be that way, but websites are showing very little information. The metaverse, even when it looks like something like Fortnite, conveys a huge amount of information in the scene graph as the individual players are collaborating. The highest-detail Fortnite updates amount to about 60 gigabytes of data. That's just a small part of what exists in the Fortnite Creative ecosystem, and if you look at what this might be in a decade, as standards emerge, you might have exabytes of data out there.
Fortnite Battle Royale is not, I don't think, the ultimate manifestation of gameplay that will ever be invented. What we've seen time and time again is that as we gain more technical capabilities, graphics get more capable, CPUs become more performant, and web services become ever more scalable, we see new genres of games emerge that weren't possible before. Doom ushered in the era of deathmatch, and it was the first time 3D multiplayer gaming was even possible at all.
The early battle royale games, starting about 10 or 15 years ago, only became possible back then. You couldn't have built one 20 years ago because you simply couldn't have rendered an environment as large as a battle royale game with that many players, that level of interaction, and that level of performance. It was just not possible to run it. So, at a certain level of technical capability, a genre came out that proved to be by far the best shooter genre ever invented.
But I think there are numerous more genres, some of which are better than any of the existing ones, that will be invented as we get more and more capabilities. Some of the capabilities we're lacking now are the ability to build environments and game simulations that span more than a single company can possibly create. You see the birth of that idea in Fortnite and Roblox, where there are tens of thousands of creators each building content, and users are playing meaningful amounts of it all. So, there's an ecosystem that scales larger than a company, but it's still very much, you go into one island and you play that creator's work.
The other direction of scalability is putting more and more of people's work together in a seamless, continuous play space. For games where that makes sense, you can imagine a game taking place in an environment that's the size of a continent or Earth, in which you can go from place to place and see different areas that are maintained by different people. As you go into different spaces, the game rules are customized accordingly, and you can go from experience to experience.
Instead of having just one company's authorship ever-present wherever you are, you'd see yourself driving a car built by one person, carrying weapons built by 20 other people, and taking place in a simulation in an environment that's built by thousands of other people working for separate companies, or as entrepreneurs, indies, or enthusiasts—all working together simultaneously.
We totally lack the programming foundations for that. The kinds of code you would need to write now to make that happen are just not practical. So, we're investing massively in building new programming-language technologies around Verse and our proposed standards for future metaverse programming. We hope that will solve those kinds of problems and make that kind of world possible.
So, first of all, that's a super exciting future where it's not hundreds or thousands, but millions of creators who can create different small or big elements of a world as big as Earth. If you close your eyes and imagine that world, that's really exciting, where it's not a centralized company controlling the release of a particular island or so on. It's people constantly and dynamically modifying all the islands of reality in this digital world.
So, if you could speak to some of the technology that can enable that—you mentioned the Verse programming language. First of all, how legit is it for you, the CEO of Epic Games, to be a co-author? The programming-language theorists are losing their minds. You're a co-author on a paper describing some of the nuanced details of a programming language.
So, maybe you could speak to this programming language called Verse. It's a functional logic language. What is it? What are some cool features of Verse?
#467
Verse is a programming language that we're building for large-scale simulation programming. It's designed to make it easy for you to write code that can scale up to not only building a Fortnite island, but also building modules or components that can be used by millions of other programmers, coexist in a huge environment, and scale up to a huge-scale simulation.
Some games will be small. Battle Royale might find that 100 players is actually optimal. It might be that the 1,000-player version of Battle Royale would be worse, but I bet there are 1,000-player, million-player, and tens-of-millions-player experiences that are even better than that, which have yet to be discovered.
Wait a minute. Tens of millions of players together?
#467
Sure, we've had Fortnite events that have attracted 15 million concurrent users, but the fact that they're all divided up into servers with 100 players each for those events isn't really a positive. It's just a limitation of the technology, tracing back to Unreal Engine 1 and its single-threading decisions.
If we could build a concert where all the concert participants—potentially tens of millions of them—could participate together simultaneously, see that there's a massive crowd, and all do interesting things and interact with each other, that would be way cooler.
Sorry, I'm just loading it in. Just imagining 10 million people interacting together in one scene graph—what a cool world that is.
#467
Sure. Well, you have 10 million people, and you have less than 10 million pixels on your screen. So, what does the Nyquist sampling theorem say? It says that you don't need the full overhead for every player. You need to render the players around you in some approximation of everything else.
Yeah, but there's also a networking component. You're speaking to the rendering, but, oh boy, there's a lot of work that has to happen there.
#467
But, you know, this is what we do for a living. We solve hard problems.
I understand, because if they're easy, then other people could have solved them already. That's really cool, though. The possibility, the vision of that, is really cool. Even just 100,000 people—or bringing 10,000 together—because there's a reason in the physical world, when you go to a concert and have all those people around you, that energy, or when you go to a football game, that energy is unlike anything else. If you can bring that energy to the digital world, that's amazing.
But anyway, on the technology side of bringing that to life, on the programming-language side, can you continue, as I rudely interrupt you, talking about Verse?
#467
Verse is a functional logic language because we think that's the way to make the simplest and most powerful language simultaneously. Back in the 1970s, the programming-language designer who built Pascal, one of the early programming languages, Niklaus Wirth—or Nicholas Wirth, as Americans might call him—stated this principle: a programming language should achieve a high degree of power not by having a lot of features, but by having a small number of features that work together and can be composed together arbitrarily.
That way, you have to learn a relatively small set of things, and the real knowledge comes as you learn ways to combine them to achieve bigger and bigger programs. There's a long history to the field of programming languages, but in the 1950s, the first programming-language designers got together and built the first standardized language called ALGOL. There was this meeting in 1956 that very few people even know about, but it's where all the major foundations of modern programming languages were decided on, which the C family of languages inherited.
So, we're very much living in a world that was defined by them. Thankfully, they got a whole lot of things right. They defined how functions should work, how variables should work, and how recursion should work. Thank God they got those things right, but they got a few things wrong.
Verse is trying to fix those, and that's the functional logic part of it. The interesting thing about functional logic languages is that in an old-school language, an expression produces a value.
#467
In a functional logic language, an expression can produce zero, one, or multiple values. If it produces zero values, we might say it fails. If it produces one value, we say it succeeds. If it produces multiple values, it’s providing a set of values you could iterate over.
There are a bunch of features in today’s programming languages that were defined in an ad hoc way without really thinking through this zero-, one-, or many-values approach. That’s the problem that functional logic languages address. The most basic example is an if statement in a programming language: if some condition holds, then do this thing; otherwise, do that thing.
In languages today, this is done with variables of type Boolean or expressions that produce Booleans. We have Boolean variables that are either true or false, and we have expressions that evaluate to Booleans. You can express a condition as a bunch of these features together, but you’ve lost any computation you’ve done in evaluating that Boolean expression.
In a functional logic language, your condition wouldn’t do that. It would either succeed and produce a value, or it would fail. If it succeeds, it goes to the then branch. Your operation succeeded, and now you’re running this one batch of code. If your expression failed, then you go to the else branch.
The exciting thing about that is that your expression that succeeds or fails can produce values and bind variables that are then accessed by the then branch. You can write a conditional where you can only get to the inside of the then branch if a bunch of variables have successfully been bound to values. It lets you test if some conditions hold and then use the results of those tests, and that gives you a much higher level of reliability.
A for loop in a traditional language is just a bunch of imperative code woven together to produce a bunch of values iteratively. It’s rather awkward to do complicated things in for loops, so you often end up with ever more complicated constructs built to work around that, like iterators and other things.
The idea of functional logic languages is that your for loop can just produce multiple values. If it produces zero values, you go through zero iterations. If it produces a bunch of values, you go through all of those as your iterations.
Rather than having a bunch of nested loops, you can write arbitrary things that look like SQL queries in a condition or in a for loop. They bind a bunch of variables, do a bunch of tests, produce a series of results in some order that you’re iterating over, and then you can handle all of them and produce a result.
You gain the power of SQL queries—large, complex queries over data structures—in a language that is much simpler, in which your code is just performing simple iterative operations. It gives you the best of databases and regular programming in a much more uniform way.
The power of this is that now users can write functions that not only produce a value. You can write functions that might fail. You can write a function that answers a question, and the answer can be either yes, with my value being this, or no. You can combine these together into arbitrary queries.
The funny thing is that this is not how C++ works. When we have expert programmers moving over from C++ and writing their first Verse code, they try to write C++ code in Verse style, and it ends up being convoluted code that’s worse than good C++ or good Verse.
After a few months, they get up to speed and start writing really awesome code that’s tighter and more compact than before. With users who’ve never programmed before but are learning programming for the first time in the context of Fortnite, it’s really fascinating. These users are learning this kind of programming as their intuition. They just assume programming works this way, and they’re writing much more advanced and interesting for loops and conditions than we’re often writing internally because they’ve grasped the core concepts.
Yeah, you said a lot of really interesting stuff. First of all, it’s very interesting that there are a lot of people learning programming for the first time with Verse, which is a very different way to look at programming and, in some deep sense, a very intuitive way to learn programming.
There are a lot of properties of this being a logical language, one of which is—well, we could maybe speak about confluence, but also correctness. Being able to prove the correctness of code is basically a way to write bug-free code. Can you speak to that and the importance of that when you’re building the metaverse?
#467
Right. The challenge with the metaverse is, first of all, that it’s a huge codebase evolving over time and written by many authors. You might see a new module being updated somewhere every second, and you expect, in this live, ever-running simulation that never shuts down, for everything to upgrade live in place.
One critical component of that is the ability to release an update to something you’ve already published and be sure that it’s backwards-compatible with the one you’ve already released. That’s essentially a type-checking problem: checking that your new interface is backwards-compatible with your old one. That comes down to the type system of the language.
There’s been a lot of very interesting research on type systems over the years, most of which hasn’t ever made it into the C++ programming language, unfortunately. You see several branches of that whole field. One of the really interesting things that Java and C did in the early days, and later abandoned and didn’t bother updating, was defining a very rigorous set of rules for what changes you can make to a module for your future updates that don’t break backwards compatibility.
That’s a problem for type-checking. Say you have a function that promises to return some integer. In the future, you could say that it returns some natural number, because every natural number is an integer. That’s a backwards-compatible change, but you can’t say it returns a rational number, because some rational numbers are not integers. The system ought to reject that kind of change.
The much more interesting thing about type-checking was the realization, actually made in the 1930s, that if you design a programming-language type system in a very particular way, then it becomes useful not only for expressing types of variables. The traditional thing every type system does is say, “Variable X is of type integer.” But if you design a type system in a certain way, then your types can express theorems, like mathematical theorems.
The Pythagorean theorem is a cool one. One theorem you might have in a program is that this function takes an array of integers and returns an array of the same integers, but the result is sorted. If you express that as a theorem and follow this system of type theory, then you can require anybody who writes that sorting function to prove that they’ve actually sorted its result.
You have types, or theorems, and values constructed a certain way can be proofs of those theorems. Nowadays, in mathematical literature, you see more and more theorems being proven mechanically. Mathematicians are proving theorems in a way that is verified by a computer to be a correct proof.
In the old days of mathematics, people would write down language. If you look at all of Euclid’s theorems, it was just language—writing in ancient Greek to explain the steps of the proof and convince the reader that the thing was true. Starting in the 1930s, mathematicians moved toward rigorous formal proofs in which there’s a series of steps that can be mechanically verified.
When mathematicians say they’ve done a computer proof of a theorem, what they really mean is that they’ve written the program in a proof language. Lean is a theorem prover, Coq is a theorem prover, and there are several others. They’ve written a mechanical proof in that language that a computer has checked, so it’s impossible to lie. If you say that you’ve proven something and the computer verifies it, then it’s definitely true.
This is a feature of mathematical proof languages, but it’s also an idea that’s making its way into programming languages gradually over time. Our aim for Verse is to be the first mainstream programming language that fully adopts that approach and that technique, and not only adopts it but adopts it in a way that’s really user-friendly, so you don’t have to do all of that yourself.
The idea is that you want gradually more information to be incorporated into the types of variables. The property you want from a programming language is that if your compiler accepts your program and doesn’t beep and tell you there was an error, then your program should work.
There are all kinds of ways humans can make mistakes, so we’ll never achieve that ideal. But we can get closer and closer to it by having more and more language features that enable the compiler to catch more human coding errors and tell the user what went wrong.
That becomes extremely important in the metaverse. The cost of fixing a bug that’s made it through to runtime and is in users’ hands—the cost of fixing a bug in a shipping program—is hundreds of times higher than fixing a bug that you’ve just observed while running your code yourself. When it’s running on your computer, you just fix a line of code and your bug is fixed.
#467
When you have to fix it live, you have to release a patch, release patch notes, test the patch, and check for all the other bugs that might have been introduced. Everything becomes vastly, vastly more expensive. The real aim of the Verse programming language and approach is to catch all of these errors at compile time and make the metaverse a very reliable place.
Do you see a world where, at compile time, you could prove that the program is correct in some sense of correctness?
#467
Proving things becomes computationally harder as they get larger. The really important thing about this whole field is that you should be able to adopt these capabilities gradually and apply them where you really need them. If you're writing something like a cryptography algorithm, that's a good place to prove things. If you're writing a data decompressor that's going to be used by an entire ecosystem, proving that it doesn't overrun memory is actually really important.
A lot of the reason that security vulnerabilities happen today is because, in a different language, a compiler could have caught them, but it doesn't catch them in C because C just doesn't have this feature. We shouldn't see this as scary. Everybody working in a typed language like C, C#, or Java is proving theorems all the time. If you have a variable of type integer and assign some value to it, you've proven to the compiler that the value was an integer, because otherwise it would have rejected it.
As we add more and more advanced proofs, we'll get compositional properties emerging from our systems that are easy to use, and people will prefer to use them. We might imagine a future where we have AI helping us write certain kinds of code. The big problem with AI is that you ask it to do something and ask it to write a fragment of code that does it, and it might give you a perfectly valid fragment of code that compiles but does the wrong thing.
If we had languages where you could say, “Write a function that sorts this array and prove that it does that,” it could actually write the proof. If the compiler didn't complain about it, you could trust that it was actually sorting the array. Otherwise, you could go back to the AI and say, “Well, that didn't work.” Getting to the point where we know that our programs do what we say they're going to do, or think they're going to do, is a very important thing.
By the way, I should mention that you sent me a note about the Curry–Howard correspondence, which I went down a rabbit hole on. That's a whole fascinating field that shows the mathematical relationship between programs and proofs.
That's right. This is a result from the 1930s. It's one of the most important results of computer science that almost nobody knows about.
#467
They did this rigorous breakdown of type systems and the 1930s formulation of programming, and established that everything you can prove in mathematical logic, you can prove within a type system if it has certain features. If you break down what a proof is, a proof that integers exist is some integer, like 5. That is a proof that integers exist.
When you have something like `var x` and say `x = 5`, you're proving to the compiler that 5 is an integer. That comes as second nature, but you can prove more advanced things. If you want to prove that a pair of things are true—that theorem A is true and theorem B is true—then you need to provide a pair of values: one that proves theorem A and one that proves theorem B. That's the conjunctive law of proofs.
There's a disjunctive law, too, and then there's an implication law for proofs. It turns out that the implication law is really satisfied by functions. When you write a function in a programming language, you're saying, “If you give me this thing, I will give you that thing.” If you give me a parameter of some type, then I'll give you a result of some other type.
By writing that function, you're proving that, given one of these things, you can produce another thing. That's a proof of an implication. With only 7 laws, you can construct all of mathematical logic in a type system.
One important thing about programming languages that hasn't been given enough attention is that some aspects of programming languages are just subjective. They're machinations of the programming language designer. Guido van Rossum decided that Python should support indentation in a certain way. As long as you're dealing with things like human notation and the naming of things, there's always going to be that subjective layer.
But there are other parts of programming languages that are not subjective and should be fundamental. When you look at type systems, there is a way to do type systems that gives you mathematical proofs, and every other way of doing type systems that doesn't give you mathematical proofs is just worse and should ultimately be rejected.
I think one of the jobs of computing is to identify what we've actually done right in the past and what we've done wrong, and for everything we've done wrong, go back and fix it. Otherwise, we just keep accumulating so much cruft that our systems eventually are crushed under their own complexity. There have been massive announcements of horrible vulnerabilities in software and services over the past year.
It turns out that some nation-state backdoored a bunch of telecoms' surveillance systems for wiretaps. That's a huge problem, but ultimately, when you break it down, it's probably because of some buffer overrun in some C program. These decisions about programming languages have long-term implications.
It's really fascinating that, in building these systems that hundreds of millions of people use, you're rethinking how to actually build them from first principles.
#467
I should mention that Verse's primary design goals are that it should be simple enough to learn as a first-time programmer, general enough for writing any kind of code, and productive in the context of building, iterating, and shipping a project in a team setting. It should be statically verified to catch as many categories of runtime problems as possible at compile time, and it should be performant for real-time, open-world, multiplayer games.
We didn't really talk about performance. It should be complete, so that every feature of the language supports programmer abstraction over that feature. It should be timeless, built for the needs of today and for foreseeable future needs. It's also strongly typed and multi-paradigm, using the best of functional programming, object-oriented programming, and imperative programming.
It's as deterministic as possible. If you run it over and over, it runs in exactly the same way. Failable expressions, as you talked about, are super fascinating. There are so many cool features in this, including speculative execution and concurrency. Maybe you could talk about concurrency. What is it about Verse that allows for concurrency at the scale that you need?
This is the single biggest technical problem that we're working to solve in this generation, and that is taming concurrency so that any ordinary programmer can achieve it by just writing ordinary code. It's hard. Programming on a single-threaded computer is hard enough, but it is completely predictable.
If you have a language that's deterministic and you run the same code over and over, it's always going to do exactly the same thing, and there's no unpredictability about what might happen. You're reading and writing variables in some order, and you're always going to see it behave the same.
The problem is when you introduce multiple threads or multiple nodes in a data center, all working together on a single problem. They each want to read and write different pieces of data and change the state of the world as they go.
Still, almost all concurrency in real-world programs today is achieved manually. Programmers are writing code that might run in multiple threads very, very carefully so that they are negotiating among the threads to get access to data in a way that's going to give them predictable results. It's incredibly hard.
It's so hard that, in 5 generations of Unreal Engine, every single generation has decided we're not going to try to scale up all of our gameplay code to multiple threads manually. It's much, much, much too likely to go wrong—not only for ourselves, but for every partner company that licenses Unreal Engine and tries to use it to build a game. It's just a massive footgun.
There are a variety of solutions to concurrency that are all rather suboptimal. One attempted solution was, “Oh, just don't try to solve this problem at all. Let's break our program down into microservices.” Almost all online websites of massive scale, like Amazon.com, work with hundreds of microservices, where different servers negotiate with each other by sending messages to each other.
By programmers writing those things very carefully, they eventually get to the point where they're able to take your orders and not make a mess of them reliably. But this is totally not scalable to the metaverse, where you have millions of programmers who are mostly not going to be computer scientists. They're mostly going to be hobbyists, enthusiasts, and first-time programmers doing stuff for fun.
That's never going to work for them, because they'll never be able to envision all the different dependencies between the computations they're running in parallel.
#467
But it turns out that there was some amazing foundational work done in the 1980s that was made very real by a paper on Haskell concurrency. “Composable Memory Transactions” is the name of the paper, and it describes a system for transactional updates to programs.
The idea of a transaction is a block of code that does a bunch of operations on memory. It might read, it might write, it might process an order, or it might accept or reject an order. It might transfer money between one bank account and another, and it might make conditional decisions like, “You asked to transfer $100 from your account to this guy’s account. We’re going to see if you have $100. If you don’t, we’re going to reject it. If you have $100, we’re going to take $100 out of your account and add it to this other guy’s account.”
Without transactions, if everybody’s just randomly adding and subtracting each other’s bank balances, then you might have somebody read a bank balance, subtract $100, and write it out. But in the meantime, somebody else might have written something else. You might get inconsistent bank balances arising if you don’t have a way of ensuring that these all run in a specific order.
The idea of transactions is a way of dividing an entire program into self-contained updates that do an arbitrary amount of computation but must run in a single-threaded manner. In the case of a game engine, that’s a gameplay object update. When you’re playing Fortnite, every other player is a gameplay object. Every enemy is a gameplay object. Every rocket, projectile, car, and thing you see moving around and interacting—not just a fixed, static part of the world—is a separate game object, and each of those objects is updated at a rate of 1 update per frame, at 60 frames per second.
In the course of Fortnite Battle Royale gameplay, you have tens of thousands of object updates happening every frame with 100 players. In a simulation with billions of players, you’d have a whole lot more than that. Right now, that’s done single-threadedly in each game session. This is why Fortnite is limited to 100 players. If you absolutely maxed out a server, maybe today you could get it up to 140 or something, but it’s not going to thousands or millions or billions.
What we need is a technique for magically, automatically scaling our code to that. Transactions are the idea. A transaction is a granule of code that runs in its entirety.
The idea of this transactional memory concept is that we’re going to have programmers write completely ordinary code that reads and writes variables in the completely ordinary way, and they’re not going to have to worry about concurrency at all. Today, a computer just runs your program. There’s no amount of speculation going on at the programming-language level.
The idea of transactions is that, since we have a bunch of operations, we need to apply a large set of them concurrently. Instead of each one reading and writing from global memory shared by all—in which case they might be reading and writing, contending with each other for the same data, and doing contradictory things to it—we’re going to track all of our writes locally. We’re not going to write changes out to global memory. We’re going to keep track of them in a buffer that’s just for that one transaction.
It’s going to look to that code exactly as if it’s running on the global system, affecting global game state, but it’s going to be isolated to just that one transaction and set aside and buffered up for consideration later. We’re going to run tens or hundreds or thousands of the updates concurrently. We’re going to see which ones had read-write conflicts, because if 2 transactions don’t read or write any of the same data, then you could have run them in either order or simultaneously, and it wouldn’t have changed the end result.
This is so fascinating to imagine: this kind of system, arbitrarily running millions of updates in parallel of gameplay objects. That’s the thing that enables what we’re talking about—tens of millions of people together in 1 scene.
Exactly. The key is that you’re running these updates speculatively, and you’re not committing their changes to memory until you’re sure that they’re free of conflict. You might update 10,000 objects and find that 9,000 of them were conflict-free. So you apply those 9,000 object updates to memory, and they could have run in any order without changing the result.
Now there are 1,000 objects left over. You have to run those again, perhaps in a different way, to get them to eventually commit to memory. In the meantime, you just throw all their computations away and redo them later. By doing this, we’re moving this from being a programming problem for the programmer to deal with to being a language problem for us language designers to deal with.
We’re moving a vast amount of pain that would be imposed on a million people to a vast amount of pain imposed on a small number of people who have to actually make this work.
That’s amazing. That’s really incredible. What’s the state of things with Verse? I guess what you’re outlining is that, if it’s successful—and hopefully it is—this would be a big part of Unreal Engine 6. What’s the timeline? Where do we stand today?
There’s a lot going on in parallel. The key thing with Verse is that we have been specifying what we think is the ultimate version of the language, with all the features we want, whereas we’ve been shipping more modest versions of the language over time. We’ve released dozens of updates to it over the past year and a half.
The idea is that the shipping version gains more and more features over time, while maintaining backward compatibility with old versions and continuing to improve and approach the ultimate version. We’ve been doing this experiment entirely within the world of Unreal Editor for Fortnite. For now, we want to test this and iterate with Fortnite creators in just the metaverse use case before we make it available to all of our partners using Unreal Engine for all of their projects.
The idea is to iteratively improve it and build it out, because right now UEFN has relatively few features for programming. It needs a lot more, and everything we add makes the world a much better place for Fortnite creators. We’re adding major new APIs every few months throughout the course of this year.
Unreal Engine licensees who are building standalone games already have access to the full engine through C++. They have massive expectations of an API, so we can’t release this to them until we’ve built up all the essential features they’ll need for building their gameplay in the future.
We have these 2 different tendrils of progress. There’s Unreal Engine 5 for game developers, and there’s Unreal Editor for Fortnite targeting the Fortnite community. There are different bits of development that are only in one area and aren’t applied to both. Not all of the Unreal Engine 5 features are available in Fortnite, because some of them we haven’t figured out or haven’t gotten to the point where we can deploy them to all 7 platforms in a platform-independent way.
The place where all these different threads of development come together is Unreal Engine 6. It’s a few years away, and we don’t have an exact time frame, but we could be seeing preview versions of it perhaps 2 to 3 years from now. We’re making continuous progress toward it.
That’s really nice. There’s this ultimate version of a language that you’re constantly working on and thinking through. Then there’s the shipped version of the language that’s used by a large number of people, but still in the constrained environment of the Unreal Editor for Fortnite—for the Fortnite game.
Then there awaits the more general Unreal Editor, Unreal Engine, for the lessons learned in the Fortnite context to be integrated into the more general context of creating simulated worlds for all kinds of games, including Fortnite. It’s a really nice setup, because you’re both using Fortnite as a testing ground for the language and keeping an eye on what the ultimate thing will look like. It’s also necessary to deliver all the features that we mentioned.
#467
Brilliant. The aim for UE6 is to bring the best of both worlds together: much easier gameplay programming for the Fortnite community and for licensees, more scalability to large-scale simulations of all sorts, and greater ease of use, meaning it will be easier to hire programmers who are familiar with and experienced with the thing.
We’ll also ensure that every game developer has the full deployment capabilities, so they can build a game once and then ship it anywhere. The ultimate version of this enables a game developer to build a game of any sort, either or simultaneously both, and ship it into Fortnite as a Fortnite island that players can go into, bring their Fortnite items and cosmetics, and interoperate properly, or ship it as a standalone game, or both.
If they ship it as a standalone game, they shouldn’t be missing out on the open economy either, because in this time frame, we’ll have opened up the Fortnite item economy to third-party developers of all sorts, hopefully through a standards body. There might be multiple phases of it, so that if you choose to ship a standalone game, you can still choose to have Fortnite items work in your game, have your game items work in Fortnite, and have your item economy integrated with the overall metaverse economy.
That helps solve the really core problem of the game industry that Matthew Ball has been documenting over the past few years.
Yeah, by the way, Matthew Ball has been really helpful. He wrote a really great book that I recommend people check out. There’s an updated version. Let me just ask, because again, there are a bunch of indie developers listening to this.
I saw that a lot of solo developers out there are using Unreal Engine, and they’re basically creating video games solo. I can highly recommend one—it’s great. Choo Choo Charles is a great video game. Gavin Eisenbeisz is a great guy. He solo-created this game that’s, I think, quite popular. I believe he says he used Visual Scripting. He didn’t even use C++; he used visual scripting. He used Blueprints to create it.
So, all that to say, people should go check it out. Support indie developers. Support Gavin. Support everybody like that. I think it’s important to say because there’s so much genius and artistry out there that we want to support the crazy dreamers out there.
Anyway, all that to say, what are the ways you think Epic can support indie developers like that? People like Gavin? Give them superpowers to create games from which they can make, at the very least, enough money that they can keep doing their art.
#467
Well, that’s really about productivity. Because to be successful with a game, you have to have a great game. If you’re targeting a—if you’re building a type of game that nobody’s ever built before, you might be able to build a smaller, simpler game than if you’re competing in a massive genre that has huge expectations. But it’s all about enabling somebody to do that in a reasonable amount of time that they can spend, and to be able to finish it, ship it, and maintain it successfully.
The tools are a big part of that: having the tools be as productive as possible. But there are a lot of other facets as well, like having a content marketplace is a big thing. Just off-the-shelf piles of content, some free and some paid, built by other creators, can enable a small indie team to build a big game and just be able to focus on the unique content of the game.
Being able to write their gameplay and lay out their environments the way they want, but not have to build every tree and rock. Somebody’s already built one, and theirs is probably perfectly suitable for your game. Over time, there’ll be more and more.
There are also a lot of indie developers living as content creators. They’ll be releasing content on Fab Marketplace or the Unity Asset Store and earning a living from that. But specialization of labor is a really, really valuable thing. In the early days, pretty much one person would build one game. That’s how a lot of the games were built in the 1980s.
Over time, you had a separation where artists became specialized, and then programmers, and then gameplay programmers and engine programmers. Now you have technical artists, and you have dozens of different specialties contributing to a AAA 3D game. The more we can modularize those bits of content so you could get something off the shelf rather than having to build it, or have the engine synthesize it for you, the more we can enable creators to create stuff fast and successfully.
So we should talk about the fact that, amongst many other things, you’ve been philosophically and spiritually battling monopolies in general. One of which is the Apple marketplace that charges 30% from developers. Can you speak about this idea that you believe Apple and other companies—Valve—should not be charging that kind of revenue cut?
#467
Sure. Let’s start from a very basic principle of computing. The first computer I owned was an Apple II Plus, designed by Steve Wozniak and marketed by Apple, and then I owned an IBM PC. In those days, anybody could write code. Your computer literally turned on with a programming-language prompt in front of you. You had to actually do work not to write a program and instead run somebody else’s program.
That was incredibly empowering. Anybody could write a program. Anybody could put it on a floppy disk. Anybody could share it with their friends. Anybody could make copies of it, put it in a store, sell it, and build a business around it. They were completely able to, without seeking any big tech corporation’s permission, do whatever they wanted.
Even from IBM—remember, IBM was the dominant computer company on Earth at the time that they released the IBM PC as an open platform. It’s really been firmly implanted in my mind that this was a magical and wonderful time of unmatched economic progress for technology in the entire world.
Over time, the big companies have realized that they could shut down and block software makers from releasing software on their own, and block software makers from doing business with customers directly. I’ve always viewed this practice as terribly abusive.
When you buy a computer or a phone, you spend good money on it. It’s your money you spent on that phone, and now you own that phone. There’s absolutely no reason that Apple should block you from installing apps from other developers directly if you want, by going to their web page, or writing your own apps without their permission and running them yourself without having to get a developer account or go through their bureaucracy.
There’s no reason that any consumer who gets an app shouldn’t be able to do business directly with the developer of the app. You already bought that phone. Why should Apple be adding a 30% junk fee to all commerce you do? And why do they selectively apply it to some things and not others?
I’ve always viewed this as deeply abusive, and it shuts down the competitive engine that once fueled the app and software economy. It’s still a vibrant competitive engine on Windows and on the internet, but it’s no longer there with mobile apps, because these stores have popped up and they don’t provide any useful value to the user.
Yes, there’s a search function to find software, but there’s no reason other companies couldn’t build a better one. I bet if you had Steam, or if you had Valve build Steam for iPhone, Steam for iPhone would be a much better app store than the iOS App Store. A lot of people would use it, and Apple would be forced to build a better app store in competition. Everybody would improve their products as a result.
Apple and Google shutting down the competitive engine that drives the software economy has massive implications for everything. One of them is reshaping the nature of mobile apps to be really offensive to gamer sensibilities.
If you go on console, the best console games you see listed on the storefronts—the best console games that you see reviewed—are awesome games that really have a lot of creative merit. The ones that sell the best are really enormous values for their money and are the product of an immense amount of work.
You don’t see that on iPhone. The top apps on iPhone, the top games on iPhone, at almost all times, are these ridiculously greedy, high-monetizing whale games, which are pervaded with pay-to-win and loot-box practices. They have a sort of legalized form of gambling, and these games are not driven by fun. They’re driven by manipulation of the players to greedy ends.
It’s very hard for the fun-based games to actually succeed there. The cost of operating these online games now is enormously high. You have a game that’s based on fun, and it’s not loot-box-heavy. You have to pay 30% of your revenue to Apple in order to just get access to the platform.
Thirty percent is way, way, way more than most game companies make in profits right now. If that fee is more than the profit margin of a normal company, then they can only stay in business by raising prices. These 30% fees are raising prices of all digital goods. It’s just inflationary as a force in the economy.
That’s just the first direct tax. But then, to reach users, when a user searches for—before Apple blocked Fortnite on iOS, when a user searched for Fortnite, the first result was always some competing game. That’s utterly anti-user.
You search for a game on Steam, and if that game’s on Steam, it’s always the first result, because Steam’s not monetized with advertising. Apple is. They do that so they can make even more than 30%.
If you want to be the first search result for your game, you’re probably paying more, like 45%. If you want to reach users on social media, you’re paying another 20%. So literally something like 70% of the revenue for your game is just going into junk fees to acquire users and get them in your game.
The money that’s left over is only enough to fund these games with rather abusive practices that do not look like games to normal gamers, for the most part. Now, there are some exceptions. There are some great games on iOS, and there are some games with good practices. But the engine has been really corrupted in a way that competition would fix.
If you unleashed lots of competing stores on iOS, then you’d have lots of awesome options, and you’d have much better deals and much better prices.
I had a quick chat with Matthew. He asked me to ask you this question: Why don’t more companies fight Apple in the way, openly and totally, that Epic has been? What makes Epic so unique in this regard?
And I should say, I think everything you said—I agree with fully. I think what Apple is doing is just wrong. I think Apple, in many dimensions, is an incredible company. They have brought so much good to the world. In this regard, I just think it’s straight-up wrong what they’re doing.
They're not providing the value of 30%. And even if they were, the monopolization and the centralized control without competition are wrong.
Anyway, why are you fearlessly fighting Apple on this when other companies don't seem to want to step up?
#467
All companies are terrified of Apple because Apple can destroy their business. Epic was in a unique position with Fortnite. First of all, we had the biggest game in the world at the time we started the fight with Apple. Second, a majority of our users played on PC and console, which meant that if we lost access to iOS during a fight, we would still be able to survive.
That set us apart from Spotify, Facebook—you name the top 10 mobile apps. I think none of them would be able to survive without Apple. Their businesses would literally be destroyed if Apple blocked access to them. Apple was incredibly clear with developers that they're willing to deprive all users of access to any app if they get into a fight.
If you look at how they dealt with Epic, they were not just legally maneuvering with the intent of winning the court case against us. They were also sending a message to all developers in the world: “We will destroy your business, or we will try our best, if you fight us.”
A very small number of vocal developers have been willing to speak up, and Apple has actually refrained from crushing their businesses when they weren't violating any Apple policies. That took a bit of discipline, which I think was also a certain amount of calculation by Apple: they couldn't survive being seen as the company killer—“If you criticize us, we'll crush your company.”
The other thing Apple has that they can and will readily deploy against every developer is soft power. When they take 30% and advertising is so expensive, soft power from Apple—such as approving your updates faster or slowing down all of your updates by a couple of weeks—can also have a dramatic effect on your ability to compete successfully.
Apple has a very long history of playing cat-and-mouse games with developers. If a developer isn't in Apple's good graces, they'll just slow down the updates. They've been slowing down updates for several major tech companies, sometimes for weeks and sometimes for months, without it all going under the radar because everybody's afraid to challenge them publicly.
Apple's wielding of soft power can change a company's economics for the worse enough to deter almost any public company. Epic is in the fight because I firmly believe that something like the metaverse—a billion-plus-user, real-time 3D social ecosystem that grows to encompass potentially all or most major games by all major developers—can only arise if all of those games are tied together into an open economy where they all participate as peers, compete to give users the best deals, and do business with their customers directly.
That thing can only exist if the Apple and Google gatekeeping monopolies are lifted. It's not just the 30% fees. The 30% fees are economically ruinous, but Apple imposes other levels of control.
Apple prevents all web browsers on iOS from implementing web standards better than Apple does. Apple has really limited data-storage capabilities and 3D-graphics capabilities on the iOS web APIs—APIs you can access from web apps running within a web browser. That's to incrementally cripple those apps and ensure they can't possibly compete with native apps. By depriving web apps of those features, they prevent web apps from competing with native apps.
If Apple treats the metaverse the way it treats the web, it will say, “You can only use Apple's metaverse engine. Unreal Engine is disallowed.” Then Apple can impose all of its own limitations on the metaverse to force all commerce through Apple, or force it to be so uncompetitive and lousy that it can't compete.
They have this giant array of anticompetitive techniques that they use to disadvantage other app developers, saying only Apple can build certain kinds of apps or only Apple can integrate certain features. In Europe, even where the DMA law requires Apple to allow competing stores, they say a store can only be a store. You can't build a store into Facebook. You can't build a social network into a store. A store must only be a store because a store that's more than a store might be able to compete with Apple more effectively.
It's just a giant, to use the Soviet term, defense-in-depth strategy, where they've constructed a massive series of barriers. Each one is fatal to any attempt to compete, so even if one barrier is overcome, the others remain in place and shut down the whole scheme.
That's playing out in Europe, where Apple has enabled us to launch the Epic Games Store but has made it so difficult and uncompetitive, both for Epic and for clients we want to do business with, that it has no chance of success until the European Union starts to really enforce the DMA law and impose harsh and serious penalties on Apple to force compliance.
I think it should be said once again: I think it's wrong, what they're doing there, and I hope there's public pressure and government pressure for them to open up the platform. As a person who loves Apple, I believe this is also good for Apple.
There's a natural thing in companies to want to close, control, and crush competition. But Apple is full of brilliant engineers. Open it up and win. It's going to create the right kind of competitive incentive to make the App Store better, because they're great at creating great interfaces, but competition will sharpen the sword.
It's just going to make everything much better. I do hope there's a lot of public pressure, and I deeply appreciate that you're speaking out in this way, putting that pressure on and letting people know that it's okay to say that this is wrong.
#467
Thanks.
#467
Yeah, competition makes everybody better. You have a monopoly that's forced to compete, and suddenly the monopoly's products get much better. The offerings to consumers get much better.
You see so many areas where Apple could be the best, but what they have is just really, really lousy. It's this old guard of leadership clinging to these old policies, turning themselves into the enemy of every developer and every regulator. I think it's ultimately massively to their detriment, and I can't wait for a new generation to come in and paint a bright path to the future.
Epic was an awesome partner of Apple for more than a decade, with demos, partnership, and technology usage together, and we did amazing things together. I would love nothing more than to have Apple bring back Steve Wozniak's original views. The Apple II was such an amazing thing: a completely open platform.
The manual to the Apple II included a listing for all the ROMs, the source code for the ROMs, so you could understand exactly what was happening there and learn from it. It included a hardware schematic of the entire computer, so you could learn how to make a peripheral and plug it into an open ecosystem. That's the awesome Apple. That company would be the best company in the world again.
I think the current one is just on the wrong side of history and needs to change. I hope Epic and Apple find a path forward together, flourish together, and Apple embraces competition better.
One of the things I admire about this conversation is that you mentioned Steam a bunch with kind words, were supportive, and basically never mentioned the Epic Games Store. I love that. It really embodies the fact that you want variety and freedom for people to choose the best thing, and in so doing create this large network of humans interacting freely with each other.
That said, one of the competitive pressures that Epic created a few years ago was launching the Epic Games Store. Instead of Steam's 30% revenue cut, you went with a 12% revenue cut, creating competitive pressure and saying, “Listen, this shouldn't be that high of a cut.” I thought that was an amazing, brilliant idea, and I think it still is a brilliant idea. It's wonderful.
In preparing for this conversation, I looked on the internet and saw there's a lot of criticism of EGS, the Epic Games Store. First of all, the internet is full of drama and criticism. There's just not enough celebrating of awesome shit. If I can ask the internet as a blob for one request: can we just celebrate awesome shit? Also criticize, but there's just not enough celebration.
The 2 directions of criticism are, first, that the launcher interface is clunky and lacks a lot of the features of Steam. The second set of criticism is the exclusive contracts that were made with some of the games on the Epic Games Store.
First, huge props on the 12%. Maybe you could speak to the vision of that, and second, can you comment on those 2 criticisms?
#467
Sure. One of the reasons people characterize the Epic Games Launcher as clunky is because the Epic Games Launcher is clunky. We need to improve this. There's a lot of work going on there.
I wish we'd gotten better at addressing quality-of-life features and prioritizing them above all the other features. Steam has 15 years of built-up work, with many of the best programmers in the whole industry working on it, a much larger team, and a lot more time spent on it. We've had to make a lot of prioritization decisions about what we support with the Epic Games Store and when.
#467
A lot of the time, it's been supporting commercial features like merchandising, offering multiple versions of a game for sale, offering upgrades from the regular edition to the deluxe edition, and other things that partners work on. Other priorities have been quality-of-life features, launcher load times, and other things. We've not put enough emphasis on the quality-of-life features. We've recognized this very clearly multiple times, and we've gone through multiple refactorings, but that's definitely been a disappointment to us and to a lot of users.
One thing it took us a while to realize was that it's nonuniform. Depending on your proximity to a CDN and the size of your game collection, it can be either awesome or really clunky. The users for whom it's really clunky are the people who, I think, make up a large part of the complaints. They're going to speak up. I should also say that the Steam launcher, for a long time from my memory, but also just looking online, was also very clunky in the beginning.
One of the criticisms of the Epic Games Store from the beginning was, "You don't have all of the features of Steam," but we very much don't want to have all of the features of Steam. Steam has forums dedicated to your game, and we decided we don't want to create forums. When we talked to our partners, they generally didn't want us to create Epic Games Store forums for their games because there are already channels that they prefer.
There's social media and a number of platforms, and there's Reddit, and there are lots of places for gamers to discuss their game. They prefer those discussions to be there, and so it's very much not our goal to mimic everything about Steam. But we do want to have all the convenience features that make it as easy and fun to use as Steam. There's a long journey ahead, but we continue to reinvest, and we're working to build a multibillion-dollar business there. I think we'll succeed.
Already, the Epic Games Store supports an immense amount of Epic Games commerce in Fortnite on PC, and now on Android and iOS in the European Union, too. It's a permanent facet of the industry, and we are never losing heart in it. I really feel that, at some point, the benefits of the Epic Games approach are going to outweigh the benefits of the Steam approach, especially as gaming becomes multiplatform.
One of the things that really sucks for all gamers is that you have a lot of friends in the real world, and everyone has different platforms. Your Steam friends aren't connected to your Xbox friends, and they're not connected to your PlayStation friends or your Nintendo friends. You're very much bottling up PC gaming into a hardcore group of PC-only folks and making all the other aspects of it difficult.
A lot of games have flocked toward Discord, which is a mess in itself, because now your Steam name is not your Discord name, and that's not your PlayStation name. Now you have 2 people in a game, and they have 4 different identities, and that sucks. Our aim for that, with Epic Online Services and the social systems that we built for Fortnite opened up to all developers, is to make cross-platform social features super easy and free for all developers. This is not something we're trying to gatekeep or rent-seek on, or lock people into. It's just a way that we're making social gaming easier for everybody.
As more and more games follow the Fortnite approach of being multiplatform, especially multiplayer games, Metcalfe's law is a very real phenomenon in the industry. It's the thing that's upending some games and causing growth in other games. It's the number 1 trend pervading the world of gaming today. It says that your game is quadratically more valuable the greater the percentage of a user's real-world friends it can connect to.
Your game vastly benefits by connecting all of its players together and not segregating them off into different online platform populations. I think the future trend is in that direction. I wish Valve had opened up Steamworks to just work on all platforms. They could have easily done it. We did it, but they seem to be using it as a lever to keep people locked into the Steam PC game store.
That's going to be a long-running battle, because there's always a very toxic group of Steam users who even created an entire subreddit dedicated to criticizing Epic and our store. They create harassment campaigns at times against developers who use Epic Online Services. Developers do that so they can connect their players across platforms and have friends and voice across platforms, but suddenly that's trying to be turned into a negative.
It's clear that Epic wants developers to win, wants gamers to win, and wants Steam to do awesome also. In the competition between Steam and the Epic Games Store, we want to create awesome stuff together. It's obvious to me if you don't read the stuff online, but online there's this negativity that I don't think is constructive in general.
I should give a big, positive thank-you and props for the push to multiplatform that was always there with Fortnite, perhaps even before the pressure that Epic created around breaking the barriers between Xbox, PlayStation, and PC and being multiplatform. I got a chance to play Fortnite a little bit with you and all the people in the group, by the way. Awesome interface, audio chat, really fun.
You could see a couple of PC folks, a PlayStation person, and an Xbox person all together. You can't really tell what they're using except for a little icon, and it's nice. All those barriers that we've created with these platforms are gone, and you created the pressure with the Epic Games Store and with everything you're doing with the Fortnite platform. It's really nice.
There's no reason to create these silos, because ultimately you should put the gamer first and let everybody interact with actual real-life friends and make new friends across the entire network of humans. Anyway, thank you for that. Thank you for creating that pressure.
#467
Thanks. Yeah, that was an interesting time. Sony had a long-standing policy preventing cross-platform play, and we had a long series of conversations that got pretty harsh toward the end. Sony ultimately came around, and they opened up PlayStation. Through a series of private conversations, they did the right thing.
Not only that, our partnership with Sony has increased since that argument back in 2018. We've gotten closer and closer and done ever more things with Sony, including brand IP like the characters from God of War and other games coming into Fortnite. There have been all kinds of crossovers, massive Unreal Engine adoption at Sony for making games and for making movies at Sony Pictures, and music partnerships with Sony Music. That's been an absolutely wonderful relationship.
I think that stands as an awesome example of a company that, because of historic reasons, got stuck with a policy that no longer made sense for the future. Following a serious discussion with a close partner, they revisited it and did an awesome thing. Now Sony's much better off, Epic's better off, all game developers are better off, and the whole console industry is a lot stronger than it would have been if these silos had continued playing out.
Despite the potential concern that blocking platform play with Xbox gave Sony an advantage, Sony has actually grown in market share relative to Xbox since that time. You can't say that anything but goodness came of that time. I think a better version of Apple would have received the email I sent to senior Apple management and been like, "Huh, there's an issue here. We should have a discussion. We should reconsider this. We should listen."
They didn't, and that's why we're in the midst of a 5-year battle with Apple and, hopefully, still in the early days of a 15-plus-year partnership with Sony. Come on, Apple. We love you, Apple. Do a little bit better.
The second line of criticism that I mentioned is the exclusive contracts with some of the games. Can you just speak to that? In so much of the journey of Epic, you've been sort of against exclusivity.
Let's back up and talk about the principles at work here. Apple forcing other companies to use its payment service is a coercive decision by Apple. But if Apple convinced other developers to use its payment service by offering benefits or a better deal, or funding, or any other positive incentive, then that would be perfectly fine. One is preventing competition, and the other is actual competition.
#467
Epic has never forced any developer into any sort of exclusivity relationship. Rather, we've offered developers payment, incentives, marketing, or any number of things of value to them in exchange for coming to our store exclusively. It's their game, so it's entirely and rightfully up to them to decide how to distribute it and to make the decisions about their business.
It's their game. If they want to distribute it through Steam, they can. If they want to distribute it through Epic exclusively, they can. If they want to distribute it through both, then they can do that as well. If we pay them money or offer other things of value in exchange for them coming exclusively to the Epic Games Store, I think that's their right.
#467
And this is an example of Epic, an underdog with a tiny fraction of Steam’s market share, working to proactively compete with Steam by offering a better supply of games. Some consumers who prefer Steam might prefer that the game be on Steam, but the developer in each case has decided that they would benefit more by doing this exclusive deal in exchange for benefits than by being on Steam.
One of the key exhibits in the Epic-Google trial was this opening exhibit, which was trying to point out to the jury the benefits of exclusives. Imagine a new store popping up. The store has a big sign outside of it: “We’re the new store. We have everything that the other store has, and it’s at the same price.” Are you going to go to the new store? No. Nobody’s going to switch from Steam if Steam has all the same games as the competing store and everything is priced exactly the same.
We initially looked at 2 ways of competing strongly with Steam. We wanted to sell games at a better price than Steam by agreeing on the amount of money we pay each game developer. If the game is going to sell for $50 and we take 12%, we could actually lower the price and potentially even lose some money to offer a better deal.
We tried to pursue this, but very quickly every developer told us that they wouldn’t agree to better pricing because, if they did, Steam would stop giving them marketing, featuring, and other benefits. The console makers would be mad, and all their relationships would be harmed. There’s an undercurrent of powerful platforms and ecosystems encouraging developers not to compete on price.
Not being able to compete on price, we decided to compete on supply by doing exclusive deals, and we signed a lot of them. We paid developers lots and lots of money. I think we distributed over $1 billion in net expenditures to developers beyond the money—the revenue—we actually made from games, in order to get a whole lot of exclusive games.
Some were successful, and some weren’t. Borderlands did awesomely on the Epic Games Store, and we—and Gearbox—felt that it did just as well through Epic as it would have done on Steam because the players who wanted Borderlands wanted Borderlands, and they came and got it.
A lot of other games, especially some smaller games that didn’t have a dedicated audience that was absolutely going to play the game, typically benefited from exposure on Steam. They were reaching an audience that they wouldn’t have reached organically. Some of them, in the end, we and they concluded did worse by being on the Epic Games Store exclusively, in terms of reaching fewer customers.
We had these limited-time exclusives. When they ran out, the developers put their games on Steam, and lots of data was gathered to understand what worked. This worked well for some games and didn’t work for other games, but companies seeking to compete—especially underdogs seeking to compete—have to offer some unique value. They have to offer something that isn’t available through the competitors.
I understand that Steam users who just prefer using Steam and buying games on Steam want to have their library in one place, and don’t like this. But you’re never going to have competition for better deals if you don’t support the competitive mechanisms that allow competitors to come about. If Valve were forced, through Epic Games Store success, to compete with the Epic Games Store, then developers would be getting a better deal and consumers would be getting a better deal.
These 30% fees would be driven down quite a lot toward the actual costs that are required to support the stores.
Yeah, I mean, there’s a lot to be said there. I’ve gotten to watch Spotify try to do this with podcasts: enter as the underdog into the space and try to attract people. They made exclusive deals, for example, with Joe Rogan, where the podcast would only be published on Spotify.
Personally, I think, long term, what I would love to see for the Epic Games Store is to not do any exclusivity, similar to what Spotify is doing now. Even with Joe Rogan, they let go. It’s open, wide open. Instead, compete on the space of the non-clunkiness of the interface, because the foundation of what the Epic Games Store represents with 12% is philosophical.
You’re also competing in the spiritual realm of what it stands for ethically. That’s also a really powerful way to win. Now that there’s a large enough number of people using the Epic Games Store, drifting away from exclusivity is understandable. It’s needed for the underdog to enter the scene, but it goes against the freedom—the free spirit of choice—that I think you represent in a lot of the decisions you’ve made: making the games cross-platform and giving freedom to the developers, giving freedom to the gamers to choose.
In that way, I think exclusivity goes a little bit against that.
#467
Well, here’s the conundrum. The exercise of soft power by all of the competing stores has made it intractable for almost any developer to offer a better price through the Epic Games Store than through Steam.
You can imagine that, if the effect of Epic’s revenue sharing—12% to developers—was that games just cost 18% less on the Epic Games Store, that would actually start to reshape consumer behavior significantly. People would start coming here for the better deals.
But I feel like Steam gives developers nasty phone calls, and so on, when they propose to do that. What’s the mechanism that drives users away from the incumbent store to the store that offers a better deal? If developers are fearful of competing on price through stores, what can possibly be done to get a dominant store with something like 90% of revenue among multipublisher stores in line, so that a much, much smaller store can compete?
A better UI is great. Steam is super polished, and the Epic Games Store, in time, will hopefully be as polished. But how does that overcome the fact that your entire library over the past 15 years is there?
If developers have been afraid to exercise their own economic interest—it’s in a developer’s interest to sell on Epic and get 18% more of the revenue—I think there’s a real power to incumbency that’s very hard to overcome through just being there and being as good.
Ultimately, where I hope it converges to is less exclusivity, and where the competition can be the kind I love the most: on the UI, on the experience, on the overall quality. Then, on the Steam side, on the 12%. It can go from 30% and start to support the developer by lowering it from 30% closer to 12%.
Anyway, I’m a big supporter, and I don’t like the criticism of the Epic Games Store. But I also have to say that I don’t love the exclusivity. I understand the reality of the world is that you have to have some mechanism to get people to switch—or not to switch, but at least to get some of their games to try out, to experience, and to allocate some of their library to the underdog.
I totally understand and hope the UI keeps improving. Thanks.
#467
One more bit on that exclusivity point is that, when we told Google that we were going to launch Fortnite outside of Google Play and go into competition with them, they viewed exclusivity as such a powerful competitive force that they went around to the top 30 publishers and paid out hundreds of millions of dollars to them in order to agree not to do exclusive deals with competitors.
That was called Project Hug—“Hold developers close.”
That was one of the major pieces of evidence on which the jury found their practices to be illegal and anticompetitive. One more data point on that: we talk about 30%, and there are always a lot of people defending Steam. They say, “Of course they have more costs because they have more features than Epic.” We have data on that that’s very detailed.
The all-in cost of operating the Google Play Store—staffing it, maintaining it, the software, and the entire ecosystem—is around 6% of revenue. In a competitive market, what would a company whose costs are 6% be able to charge? 30%? Absolutely not.
Apple’s costs are similar. Apple runs an even more efficient and lean operation than Google, so their costs are also likely in the range of 6% all-in. They mark it up from 6% to 30%. Only a monopoly can do that.
Look at competitive businesses. They have a margin of a few percentage points. The numbers there are strikingly supportive of outright anticompetitive market distortions.
Okay, what do you think is the future of the gaming industry? We’ve said a bunch of exciting stuff about indie developers. Do what are called AAA video game companies—these big gaming companies—have a future? What is their role? How do you see, in the next 5, 10, or 20 years, the evolution of these big companies and indie developers?
#467
There’s one constant in gaming that I think the industry manages to lose sight of from time to time, astonishingly, and that’s fun. People play games for fun. Our whole job is to deliver fun.
When you look at a lot of the games that failed recently, they just didn’t deliver fun, or they didn’t deliver fun in a manner that was nearly competitive with the other sources of fun that exist in people’s lives.
#467
And so, at a basic level, we don't need a terribly complicated theory to explain a lot of the malaise in the game industry. There's been a degradation of the capabilities of a lot of publishers, partly because of competition for talent. Companies with really vibrant game businesses, like Epic or Riot, are hiring the best developers and accumulating them, and big tech companies are hiring the best game developers because there's super talent there. And so, in some cases, the companies aren't competing robustly or are getting worse. They're making games that are less fun.
I think everything else that's happened is kind of a sideshow to that. There's always political drama and so on, but I think the core is a failure to deliver fun. The nature of fun is changing. It turns out that playing a game together with your friends in a really socially engaging way, with voice chat, is just way more fun than playing a solitary game, for the most part. There are exceptions to that.
I think we're seeing much, much more playtime shifting toward games you're playing together with your friends, and not just random internet strangers who happen to play that game too, but people you actually know in the real world. That's certainly been the case with me and with almost everybody I know who's playing Fortnite or similar games.
And that has really significant effects in reshaping the whole game business. If you have 20 people with 20 different opinions of which game to play, in a single-player game, each one might buy a different single-player game. But in a multiplayer game, if there were 20 games out and each one had their own completely individual preference, and each one were independently choosing which game to play, each one might buy a different game.
But if they're all realizing that they want to play together, what players are doing increasingly is playing the game they like and accept together with their friends, even if it's not the game that every one of them might be preferring to play themselves. That's certainly the case in different Fortnite groups I play with from time to time. One player might have preferred to play Call of Duty, one might have preferred League of Legends, somebody else something completely random, but it's just so fun to play together. We're doing that, and that means that there's really a Metcalfe's law effect in which games that are able to attract a large percentage of your friends are more able to attract you, and not only attract but also retain you.
I think Matthew Ball's analysis of this over the years has really documented the trend toward—you can call it the metaverse, or you can call it large-scale multiplayer social gaming. He's really documented this trend. Over the past year or so, it's taken a really, really strong turn toward an increasing rate of change and increasing numbers of players coming to Fortnite. We hit an all-time high of 110 million monthly active users about a year ago. And another close to peak this time, Roblox is bigger than ever.
This trend is players consolidating into multiplayer experiences they play together. We're seeing another trend overlaid with that, which is that when an awesome single-player game or small multiplayer game comes out, people will often treat it as a vacation. They'll go off and play that game for a while, then come back. I think Black Myth: Wukong was an awesome example of that. Wonderful game from a brilliant team in China. They made a game that no Western players had really seen that type of thing done before. It was awesome and it did well, but most players played it for a while and moved back on.
That can be lucrative, but a business that's building those kinds of games is going to have to build a new one every few years and build a business around that, while the other games continue to create users. When you have a large number of gamers migrating to a small number of games, the effect of that is increasing revenue for those games and increasing reinvestment.
There are things that Epic can do with a team of thousands of people building Fortnite internally, and tens of thousands contributing to Fortnite as independent creators. There are just things that can happen with that level of investment that can't happen in a smaller game. So there's somewhat of an increasing winner-take-all dynamic, where the biggest games reinvest more to make their games more fun. They gain fans at a faster rate than other games, and the industry is changing around that.
I think the lesson for the game industry now is that there are really two big opportunities being pursued. There are big games, or games that have the potential to be really big multiplayer experiences that keep players around indefinitely for very long periods of time. And then there are just really good single-player and small-scale games that people are taking a break from their big games for.
The trend there is going to be toward efficiently developing those games. You can't build one of those games with a $300 million budget, but if you can do it with a $40 million budget, you can make a lot of money. So I think that's the main reshaping going on. I think that creates a rather bleak outlook for a lot of the category of single-player games that don't have a huge audience to reach. But this is just one of the trends of restructuring the business around the technology and changes of the day.
Okay, this is going to be a ridiculous question, but aside from the games you've created, what are some of the greatest video games ever created, to you? What video games have been impactful to you in your life, or maybe you've seen created and thought, “That's a beautiful art piece”? It could be in a totally different realm. Obviously, for me, I often return to the single-player domain of role-playing games, like The Elder Scrolls series, Skyrim. That was a world that they created. A recent game, Baldur's Gate 3, was a really incredible piece of work and art, doing a lot of innovative stuff again in the single-player domain. Are there games like that outside the ones you've created?
#467
I'm most impressed with the games that have created what appears to be a full, living, breathing world. Games that give you the sense that you're just a part of it and there's a lot more happening, and there's always more. They give you the sense that you could go anywhere and do anything, even though these games really do have finite limitations and there are places you can't go. Creating that sense of wonder is just a magical thing, like The Legend of Zelda: Breath of the Wild.
Oh, yeah.
#467
Yeah. Skyrim, Red Dead Redemption.
Red Dead is great. Yeah, there's an entire ecology simulator in there. I have a high school classmate who got into studying river ecology, and he was commenting that this is one of the very few games that's hydrologically sound. They actually went to the effort of shaping the rivers to follow erosion dynamics and so on. Just the attention to detail is incredible.
#467
It's been a funny journey through the industry. I last designed a game in 1992. I'm not a game designer. I have a very open mind here: the best game genre that will ever exist has not yet been invented.
As we get more technological capabilities, and creatives use that—hopefully empowered by higher-productivity tools and so on—we'll see more and more cool things emerge that we never dreamed possible. The idea of a world simulator is actually really interesting there. It's been tried a lot. It's usually extremely slow and expensive to create, but over time maybe we'll get better at that, and that will be a thing too.
You said so many interesting things there. New city builders, Civilization—it's just mind-boggling that they built a game with that depth that can evolve so dependent on your actions. To do that at that scale of world, but to where you can step into it and be in it, you know?
I think Red Dead is a great example, but to do Red Dead Redemption in a way where you can walk around with friends at a large scale—and I guess what you have given so many years to is creating the tools that enable the artist to give that attention to detail that Red Dead does on several of those things.
Once you do, there's something magical about that. Once you give that attention to detail, I don't know what it is, but the love of the artist comes through somehow. You can feel the care that they put into it.
#467
That's right. The best games have a soul. You can really sense it. Call of Duty has a very different soul than Fortnite, and it just kind of exudes—not only in what you see in the game, but also in how players interact with it and interact with each other online. That's a really fascinating thing. I wish it would be studied more.
I think we talked about the soul on several fronts, right? I wish it would be studied more.
#467
Yeah, yeah. These little game design decisions that the designers make have a profound impact on what players think of the game and see in the game. Fortnite Battle Royale always had a sense of mystery to it. You're on this island, but you're not sure exactly what's happening here. There are all these houses. They're abandoned. Why?
I'm not the secret holder. I'm not on the design team.
#467
I experience Fortnite as a player, but it really exudes a lot of that good-spiritedness as well. Even when you're eliminated in Fortnite, there's not blood spurts and there's not gibs. You're just teleported out of the simulation. Often, you end up losing the game in a way that's hilarious enough that you're actually laughing at it, or you're like, “Respect to that player who just won because that was clever.”
It creates a very different dynamic than these other games, where players tend to be very, very positive toward each other. One of the things I like to do in Fortnite, just to gauge how the game is going, is play fill squad. I'll get matchmade with 3 other random players and play a game together. Sometimes they have voice chat, sometimes they don't.
Back when our matchmaking regions were bigger, I learned a little bit of battlefield Spanish, so I could speak with the people who were as far south as Mexico City. The positivity of the interactions there, among just every kind of person you might ever meet online, were really quite impressive and completely unlike what you would see in a game like Call of Duty, where everybody's got to be an edgelord.
I love online gaming culture. I have to ask, because one of the legendary games is Grand Theft Auto. Speaking of the worlds that are just—I mean, that's a whole, that's its own thing, right? That world, the characters, the style, the edginess, all of that.
But the interesting thing about Grand Theft Auto 6 to me that I want to ask you about is that they took forever. It's the 6-month thing that you mentioned before. There are some games like that that just take years to bring to completion. What can you say about that process, that you eventually were able to take Fortnite to completion?
If you were to look from the outside, why does Grand Theft Auto take that long, or why do other companies take games to conclusion? Just give me some insight into what that process is like.
#467
Making games is very hard, especially when you're pushing the boundaries of something. With Grand Theft Auto, it's just the realism and feeling that you're in this huge city, that anything can happen, and it's all living and breathing, and you're just a part of it. The level with which Rockstar Games has brought quality to that genre is astonishing.
When you're building something at a level of quality and detail that's never been achieved before, you can't predict how long it will take. Whatever problems you're solving today to get to the next iteration of quality, you don't know what new problems that will unlock. Often, you fix one thing and make it super realistic, and that just highlights the unrealism of other things that you then need to fix.
I think the thing that always comes to mind is that shipping a game is easy if you don't have a high-quality standard. We also won't have much success. What we've seen from Rockstar Games is that they take a long time, but they ship amazing games, and it's worth it in the end, right? A bad game is bad forever. A late good game is eventually released and is good.
Do you ever feel like Rockstar Games is a good example of that—the pressure of delivering quality? Epic has not missed recently, that I'm aware of, in terms of delivering quality. Do you feel the pressure of that, that you're not allowed misses?
#467
We certainly do. Everybody's often working very much to the last minute to make something excellent. It's really hard with these fast delivery time frames, because you really have to get a lot of stuff up and running before you can judge a new Fortnite season holistically.
It's not until the last month or so that you really know what you've built and you really understand it. If any late-breaking problems emerge in balance or anything else, it's usually toward the end, and that usually leads to a rapid push to fix it. Then there are other lessons you can only learn live and from experience.
That means accepting a game that's a live experience and also an experiment, and it's going to continually be improving. At any time, there are some things that some people don't like, and you learn from it, improve it, and move on.
Let me ask you a big philosophical question. You've created these gigantic worlds that bring so much fun to humanity, but you also get to learn about humanity. What gives you hope about us humans? About the future of humans, about the future of humanity?
#467
I see 2 contrasting worlds that have been brought about in the digital age. One is the world of social networks and people typing at each other, and just massive negativity and politics and hucksterism, and engagement curation by engagement, often promoting negativity and toxicity. That's a harsh world that I think is a step backward in many ways. I think the foundation of the world is actually a little bit shaky because of the social dynamic that those platforms have brought on.
But then I compare that with the good-spiritedness of what's happening online when you're connected to real people, like actually playing Fortnite, playing fill squads with people you've never met before, never talked to, and just judging what human connections develop there and whether they're positive. I found those to be really, really excellent and endearing.
I think the lesson from all that is that humans talking to humans and being together in a simulated world, the real world, or a virtual world is a naturally empathetic medium, which naturally leads to bonding. Though conflict sometimes occurs, it's generally so much more promoting of our social norms and good interactions between people and positivity-promoting, whereas typing angry messages at each other is a self-reinforcing negative dynamic. That's negative.
I think, though, you look at social media and you look at gaming, which is increasingly social, and I couldn't see a bigger divide between any 2 mediums as I see there in terms of the actual social dynamics: one super positive, one super toxic at times.
Yeah, that's actually really the text-based medium. Now, that could even be around gaming. You can look at Discords; they can be really toxic in text.
But you place humans together in the real world, here in the room, and I literally have never—I very rarely see humans not get along in the physical space. The degree to which you can create a digital space, like a metaverse-type space, where it's sufficiently immersive, where you feel the other person, the empathy comes out, and then the joy that's derived from the empathy comes out, it's just a reminder that humans are good, and they want to see the good in others.
They want to share the goodness. When they get in that group together, there's love there. Now, they might talk shit about some other group—this is the dark side of humans—but together, in terms of the dynamics of that group, it's joyful. So, yeah, that gives me hope as well.
The more worlds we can create online that make it super easy for us to connect in that empathic way, the better. I am grateful that you are pushing the boundaries of what's possible in creating such worlds, and I'm grateful that you would talk with me today, Tim. This is amazing, and it's an honor to talk to you.
#467
Oh thank you very much it's been fun. Thanks for listening to this conversation with Tim Sweeney. To support this podcast, please check out our sponsor in the description. And now, let me leave you some words from Benjamin Franklin. We do not stop playing because we grow old. We grow old because we stop playing. Thank you for listening. I hope to see you next time.