一款共享软件文本编辑器、一场 30 小时的狂欢,与苹果的五年之战

原标题A shareware text editor, a 30-hour binge, and a five-year war with Apple

蒂姆·斯威尼回顾虚幻引擎三十年的成长、《堡垒之夜》大逃杀四周成型的过程、为元宇宙设计的新语言,以及他为什么认为苹果站在了计算机历史的错误一边。

TSTim Sweeney嘉宾 · Weights & Biases
频道
Lex Fridman Podcast
发布
2025年4月30日
视频
4:25:19
阅读
43 分钟
原文
英语
在 YouTube 打开
往下滚动阅读时,视频会缩到右下角继续播放。字幕跟随阅读语言。
阅读语言共 2 种语言可读
由 AI 从英语原文翻译。打开“对照原文”可以逐段核对。
摘要

30 秒看懂

1991 年,一名马里兰大学的毕业生,把一款从无聊的文本编辑器里长出来的游戏,上传到了几个公告板系统上。几天之内,每份 30 美元的支票就开始寄来,这家公司后来成了 Epic Games。在与 Lex Fridman 的长谈中,斯威尼从那些软盘讲起,一直讲到五代虚幻引擎、《堡垒之夜》的 1.1 亿月活玩家、他正在参与设计的 Verse 语言,以及他认为开放元宇宙必须打赢、否则无法存活的一场法律战。

  1. 1斯威尼 10 到 20 岁之间独自写了一万到一万五千小时的代码,才第一次发布任何东西。他说,时间本身没那么重要,重要的是做实验,让自己看清哪些懂、哪些不懂。
  2. 2《毁灭战士》发布时,他停写了六个月代码。约翰·卡马克的巫术是十几项创新同时咬合在一起;迈克尔·阿布拉什的杂志文章,让纹理映射看起来简单到可以动手试试。
  3. 3虚幻编辑器里的实时构造实体几何,来自一次连续 30 小时的编码。他认为,睡眠不足会削弱短期记忆,让大脑其余部分腾出来去找那 1% 真正会弄坏几何体的情况。
  4. 4斯威尼认为,AI 视频的单张画面很惊艳,但整个场景的一致性才是真正的问题。游戏引擎本来就保存着精确的场景图,提示词没有,而提示词稍有不同,结果就可能乱掉。
  5. 5一个 30 人的作战室,用七年的美术积累,四周就做出了《堡垒之夜》大逃杀。之后,在线团队把同时在线人数从 4 万扩展到 1500 万,而 Epic 一台服务器都没有买。
  6. 6苹果的 30% 抽成加上广告费,可能吃掉一款游戏大约 70% 的收入。Epic 之所以敢打,是因为大多数《堡垒之夜》玩家在 PC 和主机上;他说,Spotify 或 Facebook 如果被封禁,是挺不过去的。
全文

按章节阅读完整文稿

01

一万小时的业余代码,然后是一个很晚才派上用场的工程学位

蒂姆·斯威尼的哥哥 Steve 比他大 16 岁,去西海岸为一家科技公司工作,还买了最早一批 IBM PC 中的一台。斯威尼十一岁左右,在加州度过了一个夏天,几天之内就学会了 BASIC。他对 Lex Fridman 说,自己“从那一刻起就上瘾了”。他对早年写过的每个程序,记得都比记住别人的名字清楚。他在 Apple II 上做的第一款游戏只有文字模式:星号从左往右飘,右边一个括号像棒球手套,要靠它接住星号。做这个游戏花了几个小时。

他做过数据库,还自己动手写了一门近似 Pascal 的语言,外加一整套编译器,因为他不知道该去哪里买现成的。他也写过公告板软件,要同时处理数据和界面,还得应付好几个同时拨入的用户。每座城镇都有几百个这样的公告板,各有各的站长和风格。他估计,十岁到二十岁之间,自己写了 10,000 到 15,000 小时的代码,而且这些都是在向陌生人交出任何东西之前完成的。他坚持说,时间本身并不关键。关键在于从一个项目转到下一个项目,弄清楚自己会什么、缺什么,直到这些业余积累长成了第一代虚幻引擎。

他在马里兰大学读机械工程。那所学校在一些院系里很热闹,工程系却把学生压得很狠,用他的话说,是“把工程师往死里干”。矢量微积分、矩阵、物理,还有应力和应变,上课时看不出工程师到底拿它们做什么用。后来他写虚幻引擎的三维数学,忽然碰到一次《龙威小子》式的顿悟:刷篱笆、打蜡,动作看似毫不相干,最后却拼成了一个三维引擎。多年以后,他翻出一本旧教科书,一章一章对照自己用过的内容,翻到特征值那一章时,竟然认不出来。他指出,正是特征值这一块,成了 Google 搜索的关键突破:把全网的链接关系放进一个巨大的矩阵,求出主特征向量,就能得到排序。

在他看来,上大学不是为了拿文凭。成绩只是学校的记账方式,创业公司真正录用的,是你实际能做什么。他还为一种正在消失的美国式童年感到惋惜。他小时候,母亲给他做早饭,邻居家的妈妈也一样,唯一的要求是“天黑前回家”。孩子们在树林里探险,造卡丁车,把旧电器拆了拼成假飞船的面板。有的人把时间浪费在电视上,有的人做出了真正的东西。他担心,越来越受保护、越来越有结构的成长环境,正在把这段自由的时间从美国挤出去。

02

他玩游戏是为了把它们重新做一遍,起点是一个长出笑脸的文本编辑器

斯威尼说,他真正的志向一直是编写很酷的程序,编程带给他的快乐比世界上任何事都多。塑造他的有两款游戏:Atari 2600 上的《Adventure》,屏幕上一个小点拾起宝剑、闯入城堡;还有文字冒险游戏《Zork》,没有画面,却能在脑海里构造出精细的场景。玩这两款游戏,让他学会了如何让角色移动,如何解析“往北走”“捡起宝剑”这样的指令,还有一条一直留在心里的原则:构建世界的工具,和运行这个世界的游戏,应该分开。在《堡垒之夜》出现之前,他玩游戏大多是为了反向工程。《德军总部 3D》和《毁灭战士》出来后,他一个像素一个像素地研究,轻轻挪动鼠标,看哪里会变。他说,那就是一场规模很大的解谜。

Epic Games 始于 1991 年的 ZZT,而 ZZT 一开始并不是游戏。斯威尼刚从 Apple II 换到 IBM PC,需要一个文本编辑器,于是自己写了一个。有天晚上,做好的编辑器看上去很乏味,他就把光标改成了笑脸,还给文档里的字符安排了游戏里的角色:墙、杀手、会飞的东西。他觉得二三十种对象类型,足够做出一款有吸引力的游戏,又不至于多到让玩家迷失。他把各个年龄段的邻居请来,让他们坐下来玩,还逼自己什么都不解释。那些试玩记录(他们卡在哪里、喜欢什么、觉得哪里无聊)在这个领域还没有名字的时候,就已经是用户体验研究了。

他把第一集以共享软件的形式上传到本地公告板,续作两集收费 30 美元,还把父母的邮寄地址印在了上面。几天之内支票就来了:一天三四份订单,每天大约 100 美元,对一个 20 岁的年轻人来说,这已经像一笔财富。一个月后,订单开始来自海外。他说,钱始终只是用来支持做酷东西的工具;真正让他吃惊的,是本地公告板上的一个孩子,居然在和全世界做生意。软件的传播方式,是机械装置永远做不到的。他还把编辑器和一个小型脚本语言随游戏一起发布。三十年后,仍有成年人在行业活动上拦住他,说他们是玩 ZZT 长大的。他认为,娱乐和工具这种双重使命,让别人可以共享去创造,正是 Epic 能扛过每一次低谷的原因:游戏没有收入的时候,引擎养活公司;反过来也一样。

给独立开发者的建议,来自他 90 年代的思路:别想在美国艺电(Electronic Arts)或动视自己的品类里击败它们。共享软件是 Epic 的不公平优势,免费的第一集后来看起来很像免费游玩。要尽量降低玩家进入的门槛。要去别人还没站上去的地方竞争:《我的世界》、《Roblox》和《堡垒之夜》创意模式,都重复了同一种模式,一款游戏变成了一个平台。他认为,从一个想法一步跳到全球爆款,远没有分好几步慢慢爬上去的可能性大。他当年并不孤单。邻居家的孩子对着屏幕笑,后来父母写来的信,让他下定决心全力投入。启动资金只是几千美元的电脑,是他靠给人割草挣来的。

03

《毁灭战士》让他停写了半年代码,然后一篇杂志文章让 3D 看起来可以做到

到 90 年代初,Epic 已经在跨洋撮合年轻人才:加州的一名高中生 Cliff Bleszinski,与荷兰的演示程序员 Arjan Brussee、音乐人 Robert Allen 合作,在孩子们还在上学的时候,就做出了《Jazz Jackrabbit》之类的 2D 共享软件。《德军总部 3D》以每秒 30 帧运行,让公司意识到未来属于 3D。紧随其后的《毁灭战士》进展快得惊人,才是真正的打击。斯威尼很沮丧。那种巫术般的完整度,让他放下了编程约六个月。卡马克没有只做一次跨越,他一次就跨出十几步,它们彼此咬合,你根本没法把其中一项单独拿出来看。

转机来自迈克尔·阿布拉什。这位资深图形程序员出版过一本书,又在杂志上发表过文章,其中附有纹理映射的汇编代码。斯威尼心想:“哦,这个我也能做。”Epic 内部有几个人各自开始写 3D 代码。他们把最好的 2D 人才拉进一个从没做过 3D 游戏的 3D 团队。斯威尼自愿负责编辑器。James Schmalz 在大学时写过《Epic Pinball》,那款游戏每月能拿到 3 万美元版税,代码有 3 万行汇编。本来应该由他来写引擎,他把一大堆汇编代码发了过来。斯威尼看了一眼,决定自己来写引擎。Schmalz 转去做模型和动画;Bleszinski 则成了编辑器的第一号用户。

《虚幻》开发高峰期大约有 20 人参与,对当时来说是一个庞大的团队,把 Epic 的财务拉到了断裂的边缘。这个游戏开发了三年半,而他们始终觉得“再过六个月就能发布”。大部分人每周工作 70 到 80 个小时,埋头于眼前的问题,根本不知道下一个问题会是什么。斯威尼确信他们能解决技术和美术上的问题,让他们一直担心的是钱。马克·雷恩负责经营,把信用卡刷到极限,好让收入不断线。团队一天要编译好几次。斯威尼说,迭代速度是游戏开发里的关键变量:到项目后期,每周构建一次的团队,会远远输给每天构建的团队。

他从 Pascal 起步,做《丛林中的吉尔》时转到了 C 语言,在 16 位 Windows 上开始做《虚幻》,之后大部分时间用 C++ 在 32 位保护模式下开发。C++ 把复杂的代码理顺了,尽管写起来很费劲,依然能在大规模项目里解决问题。为了最大化产出,他不再在硬件上省钱:一台 24 英寸、重约一百磅的 CRT 显示器,分辨率 1920 乘 1200(那是 1996 年);后来又花 7000 美元买了一台戴尔,配有 Pentium Pro 处理器、1 GB 内存和一颗 200 MHz 的 CPU,编译速度提高了三倍。在 90 MHz 的 Pentium 上,他把软件纹理映射压到了每像素 6 个 CPU 周期、11 条指令。他说,这门手艺已经失传了,因为乱序执行的芯片让逐条指令的控制变得不可能。不过这门手艺仍然活在 GPU 和 ASIC 上。多年后的 Nanite,也是这种跨越多年、从最高层直到最底层的优化。

04

三十个不眠的小时,把构造实体几何放进了实时编辑器

虚幻引擎在一个方面比《雷神之锤》走得更远,美术师们立刻就感受到了:在实时编辑器里使用构造实体几何。只能加、不能减的世界很枯燥:做一扇门,就要拼十几块门框和墙面,还要全部对齐。从墙上减掉一扇门,才是最自然的操作。斯威尼很久以前就相信这是做得到的。等他真正坐下来动手,连续 30 个小时把各种特殊情况都处理完了。第二天,他给 James Schmalz 演示:一个巨大的圆环,再加一个交错的圆环,减去一个圆柱,三步操作做出一个复杂的组合体。Schmalz 说他作弊。斯威尼认为,那大概是第一次有人在实时环境里做出可以发布的构造实体几何。

他对那次连续熬夜有一套理论。大脑的算力,远超过你一行一行去想下一行该敲什么时能调动的程度。熬得够久之后,睡眠不足会损伤短期记忆,于是你刚写完的代码就不那么好回想了,而大脑的其余部分就腾出来去想别的问题。底层基础是二叉空间分割树(BSP 树),这种数据结构来自图形学研究者 Bruce Naylor,卡马克在《毁灭战士》里用它取得了很好的效果。斯威尼想到,有了 BSP 树,构造实体几何就可以做得很高效。他把几何体之间的组合拆成了大约 14 种情况,其中大部分很简单。难点是共面多边形:同一平面上,方向相同或相反,要保留还是剔除。这部分主要靠推导,也有一部分靠反复试错。他说,写一个 99% 正确的软件很容易,难的是那最后的 1%。

光照也是同一个难题:物理定律是已知的,所以把它算对很容易,难的是算得快,这就是整个领域的核心。暴力的光子追踪要慢上百万甚至几十亿倍。每像素只要多 30 个周期的光照,一个只有 6 个周期的纹理映射器就承受不起。卡马克在《雷神之锤》里的做法是光照贴图:每隔一英尺墙面算一个光照值,然后插值,像铺壁纸那样。虚幻引擎在此基础上加入了彩色光源。因为昂贵的计算是按每英尺做的,而不是按每像素做的,他们就有几百个周期可以花在火把的闪烁、水面的焦散、脉动和闪烁的光,以及一套可以合成任意数量光源的系统上。实时的光线追踪阴影只能跑到每秒半帧。斯威尼在场景里走来走去,发射光弹,心想电脑总有一天会快到能实时算它。实用的办法是:光源不动时,把阴影预先算好,光照本身仍然保持动态,这样带阴影的闪烁火把就成了可能。美术师们每天都能找到新的选项,做出他从没想到过的组合。

体积雾的故事始于一张截图,来自一家芬兰的图形硬件创业公司:一个雾气弥漫的房间,几盏灯在雾里发光,光亮随距离衰减,像雾夜里的路灯。斯威尼以为他们做出了实时体积雾,于是又给自己留了 30 个小时。光的强度随距离按平方反比衰减,这是牛顿定律;雾与光的相互作用,则是沿着从眼睛到表面的视线做线积分,把被照亮的雾累积起来。他在机械工程课上学过这个,当时完全不知道学它有什么用。一个变形后的 1/r² 积分,结果是 r 的反正切。如果逐像素计算,就要好几百个周期,所以他们改成每平方米算一次雾,像光照贴图那样,然后交给美术师。很多年后,斯威尼和那家硬件公司的一名工程师聊起这件事,说那张截图启发了他。对方说,他们其实是作弊,那张图是 3ds Max 渲染出来的。斯威尼佩服卡马克的,正是同样拒绝保留旧代码的态度。那些传奇性的成果,往往是第七次、第八次尝试的结果。当性能、质量或能力真正关乎成败时,就一直迭代到对为止,不要满足于第一个能用的方案。

05

GPU 性能涨了一千万倍,游戏模拟却仍然只用一个线程

斯威尼说,三十年前,没人预料到硬件曲线会走成后来的样子:CPU 性能靠核心数、主频和并行,涨了大约 10 万倍。如果航空业有这样的增速,我们已经能飞到邻近的恒星了。图形领域的增速还要更夸张:可用的 GPU 性能,比 Pentium 90 高出约一千万倍。渲染技术一直跟得上。几乎每一代虚幻引擎,都替换掉了大部分渲染器。虚幻引擎 1 是纯软件渲染,后期支持了 Voodoo 1。引擎 2 搭上了早期 GPU 加速的快车。DirectX 9 和可编程着色器是一场及时雨:GPU 上的像素代码,比几年前在 Pentium 90 上跑的同类工作快了大约一百倍。安德鲁·谢德克围绕实时像素着色、动态阴影和一个为早期双核芯片设计的多线程渲染器,做出了虚幻引擎 3。引擎 4 增加了大量美术选项。引擎 5 的跃进在于 Nanite 微多边形几何和 Lumen 全局光照,斯威尼认为,它们让想要的美术师,能把“游戏感”的画面一路推进到照片级的真实。

其他子系统自 1998 年发布以来几乎没怎么变。文件管理器经过很多次优化,却从没有被彻底重新设计。网络部分,即客户端和服务器如何协商游戏状态,仍然是斯威尼当年写的那套机制的演化,这一点从《堡垒之夜》里的观战 bug 就能看出来:有些参数不更新,正是这种模型有损的特性造成的。历史上最大的包袱是游戏模拟只能单线程运行。在 16 核的 CPU 上,游戏逻辑只用到其中一个核心。多线程要难好几个数量级,而他们不愿意把这种容易走火的东西交到合作伙伴或社区手里。这个限制每年都更痛。他说,虚幻引擎 6 将是那一代,要把这些核心限制放到现代世界应有的基础之上。

现在的美术工具能做出几十亿个多边形的场景,但每一帧不可能把几十亿个多边形全部画出来。目标是在实时的成本之内,得到一张和全细节几何分辨不出差别的图像。奈奎斯特采样定理说,重建一个信号所需的采样数,不必超过你要显示的样本数的两倍。换句话说,每个像素两个三角形,就该看起来像几千个三角形,少于两个才会开始露馅。硬件光栅化器更适合处理较大的三角形:一个三角形覆盖 10 个像素时效率尚可,只覆盖 1 个像素时效率就很差。Brian Karis 在 Nanite 里的突破,是搭出一整条绕过光栅化器的管线,直接落到像素上,在像素着色器里用光线与几何求交,来决定这个像素应当是什么。近景细节需要极小的三角形,而画大三角形的硬件恰恰是错的工具。另一个敌人是跳变(popping),也就是三角形密度切换时出现的可见跳动,仿佛屏幕被晃了一下。Nanite 的取舍之一,是把这些切换压到只在统计上存在、人眼基本察觉不到的程度。

06

Lumen 在每一个尺度上都没有接缝地打光,人脸仍是图形学里最难的问题

Fridman 提到了 Epic 在 2024 年 GDC 上展示的《漫威 1943》:被纳粹占领的冬日法国,积雪和泥土细致到仿佛分辨率无穷。斯威尼说,这张画面的第一功劳不属于 Epic。那张画面的英雄是美术师和技术美术;他们之所以拿出来展示,是因为它“远远超过”团队原以为这套系统能做到的水平。Lumen 是 Daniel Wright 十年光照工作的成果,它起初是个有争议的说法:只要计算的层级足够多,从建筑尺度的阴影一直细化到泥土,全局光照就能在任何地方成立,而且没有可见的边界。那些精细的冰面与泥土接触阴影,属于屏幕空间技术,是基于像素而不是世界坐标计算的,因为这是唯一能在像素着色器里跑得足够快的办法。斯威尼最初的反应是:这很聪明,但应该行不通。结果它确实行得通,作为一种人眼可以接受的近似。一个新手即便搭出同样的场景,也得不到这种效果。斯威尼说,让这种品质变得更容易、更自动化,仍然是接下来的任务。

第一代引擎只照亮光线直接打到的地方,其余部分就是黑的。真实的光会反复弹射:一面红墙会把红光投到白色地板上,地板于是泛红。完整的解法在 1950 年代就写下来了,Lumen 的技巧,是把从公里级到毫米级的多次弹射都算出来,并把各个层级整合起来,让它们看上去没有接缝。斯威尼说,在 Nanite 场景里放上光源,它就能直接工作。反射、分层的泥土和积雪、艺术家添加的雾(而不是模拟出来的雾),还有一个燃烧的垃圾桶,它的烟会遮挡光线,不再“像电子游戏”,这些都是实时完成的,运算能力约 20 TFLOPS,而 90 MHz 的 Pentium 只有 90 MFLOPS。他特别强调,粒子系统和物理是基础,而艺术家的成熟度,是这团火终于看起来像火的一个很大原因。

在计算机图形学里,人是最难的对象,因为进化给了我们专门识别脸的机制。一个穴居人遇到陌生人,必须立刻判断对方是朋友还是杀手。人对不完美之处很敏感,尤其是那些由图形学局限造成的不完美。MetaHuman 是一个持续十多年的项目,由 Vlad Mastilovic 领导,他加入了 3Lateral 团队。捕捉时,要把人放进布满几十台相机的球形装置里,拍摄几个小时,然后要花上几千个小时来处理数据:不只是一张脸的形状,还有肌肉、肌腱和脂肪的完整运动范围。更进一步的目标,是采集来自不同文化、不同大陆、不同年龄和各种类型的成千上万张脸,让系统即便从未见过某张脸,也能重建出来,甚至只凭一张 iPhone 照片,也能通过组合已知的人类面部细节来做到,而不是在设备上凭空编造。

头发在物理上很简单,但逐根渲染要慢上十亿倍。皮肤也不是实心的:光会穿透皮肤,次表面散射在很大程度上决定了为什么涂色的人体模特永远不像真人。斯威尼说,几十个系统里只要有一个出错,眼睛就会立刻盯上它,掉进恐怖谷错误的那一边。建筑稍有偏差还能被原谅,人脸稍有偏差却会让人极不舒服。MetaHuman Creator 提供参数,用来捏出一张独特的脸;MetaHuman Animator 则把 iPhone 级别捕捉到的表演,迁移到另一种头部形状上,这种迁移“非常复杂,也不那么显而易见”。如果直接把演员的动作照搬到角色上,效果会完全不对。这个项目已经做了三十年,要达到完全的照片级真实与可控,可能还需要五十年。他们已经为美术师提供了效率和质量上的倍增器,但并不认为这个问题已经解决。

07

AI 只有在能被告知该保留什么的时候,才会放大艺术家的能力

在游戏之外,虚幻引擎已经变成了电影工具。Fridman 提到,用这个引擎做出的短片《Wars is Over》拿了奥斯卡奖。斯威尼说,好莱坞最大的转变,是从绿幕转向由实时驱动的 LED 影棚。旧式合成之所以露馅,是因为演员身上的光照不对。站在 LED 面板前,表演者会被虚拟场景照亮,也能看到布景,所以表演和光照都会变得更好。在这些行业里,成本始终是限制;任何能让工作更轻松的东西,都是力量。

他认为业界对 AI 视频过于乐观。静态图片可以非常惊艳,但视频在不同地点之间切换时,存在一致性问题,而他不认为这些问题会自己消失。AI 对整个场景、剧情走向或周围的世界,并没有类似的理解。游戏引擎本来就有这种表示。他想要的未来,是让 AI 成为倍增器,而不是让人类创作者被淘汰。这有点像 Fridman 与扎克伯格那次 VR 访谈:采集到的人脸先在 3D 中渲染,再由 AI 增强器补上缺失的细微之处。Epic 旗下的 Quixel 团队扫描过几万件真实物体,Fab 上有这个素材库。它缺的,是根据这些知识按规格生成任意新树木的能力。

两种世界模型正在相互碰撞。场景图是对每个物体及其数据的精确清单,从任何相机视角都能复现,同一个场景播放十次结果都一样。它成本高,而且要手工制作。另一种模型是 AI“所理解的”世界:海量知识以一种模糊、人类难以理解的形式存在,只能靠提示词去查询,几乎无法做美术指导。提示词稍微一改,图像就可能变成完全不同的东西。把两者连起来:让 AI 帮忙搭建场景,同时让场景图以物体和属性清单的形式对 AI 可见,这样你可能会得到稳定的场景、更高的生产力,以及能够保留下来的美术指导。他说,对工作被取代的担忧是真实的,但它和合成器的遭遇很像:合成器曾经一度被排除在音乐奖项之外;Photoshop 也曾被说“不算艺术”。让人疏离的,是这样一种提示词:它能一下子给你整个作品,却不肯让你改其中的一个细节。你说把这个换成那个,或者把某个物体变成绿色,它做不到,你用多少词都说服不了它。这种感觉,像在跟一个竞争对手打交道。而细致的控制,感觉就只是又一个 Photoshop 工具。

谈到代码,他的态度要冷静得多。AI 擅长输出那些 GitHub 上已经有上百万个仓库在做的东西,面对全新而困难的问题,却出了名地不行。你要的代码越多,拿到的就越像一堆“勉强能跑”的东西。想靠 AI 把最后那 1% 补到 100%,有时比自己动手还难。认真的人应该拿真正的难题去试助手,而不是只看演示。他还说,样板代码本身就说明语言和模块设计没做好:让 AI 写一个排序函数,结果是多出一个可能藏着 bug 的排序,和另外一百万个排在一起。更好的做法,是只写一个,测好、优化好,然后大家共用。至于模拟现实,丛林、城市、光照这类非人的场景,可能再过几年就会逼真到让人吃惊;人、对话和意图则是高得多的门槛,接下来十年的主要挑战会落在这里。十年前,他说过,就算算力无限,也模拟不出人,因为没人掌握相应的算法。这话现在已经不完全成立了:生成式文本在文字层面上,已经能把一个人模拟得相当像。他并不是说这是个好主意。他认为,这条路正在以惊人的速度走向那里,在我们有生之年,而且肯定不到二十年就会实现。Epic 并不想造出让人不愿离开的世界,在工作与生活的其他部分之间带来乐趣,才是它要做的事。Fridman 主张,能感受痛苦的模拟人应当被禁止。Sweeney 的回应是,游戏开发者总体上心地善良,流行游戏里最糟的例子,是在 GTA 里抢银行,那显然是虚构的。随着人变得越来越真实,更难的问题必须给出答案。

08

《堡垒之夜》大逃杀模式,是在七年美术积累之上做了四周的玩法

斯威尼心中的元宇宙,不是一个股票代码。它是和你真正的朋友一起,在一个 3D 世界里进行的多人社交游戏。《堡垒之夜》大逃杀模式就抓住了这一点的精髓,尤其是在索尼同意所有平台可以彼此同玩、彼此语音聊天之后。VR 里的 Rec Room 是另一种形式。每月已经有六到八亿人在玩这一类游戏。VR 只是可选的硬件;NFT 只是标记价值的一种方式。真正的要求是互操作性,它可以存在于区块链里,也可以存在于数据库里,或者由标准组织来定义。铁路早在几百年前就实现了标准化。

《堡垒之夜》本身的起点并不起眼。2011 年,Epic 在完成《战争机器》之后,给全公司一周时间自由组队,用虚幻引擎做点东西。其中一个团队做出了最早的《堡垒之夜》:白天建造堡垒,晚上抵御僵尸,坚持得越久,堡垒就越精巧。建造这件事一直很好玩,其余部分则在几年里多次转向,包括从比较写实的风格,转到现在这种皮克斯式的风格。做过《战争机器》的美术师,同样能做风格化的作品,他们认为,一款长期运营的主流游戏,不该让玩家在黑暗中费劲地用《使命召唤》式的瞄准镜找人。游戏又经历过类似《命运》的轻度 MMO,以及一种塔防式的持久模式,最终在 2017 年初以《堡垒之夜:拯救世界》的名字上线:成绩中等,收回了预算,还略有盈余。

接着,大逃杀品类爆发了。PUBG 刚推出,Epic 的人都在玩,有人说如果能加上《堡垒之夜》的建造玩法,那该多酷。于是他们把大约 30 人关进一个作战室。四周之后,大逃杀模式上线了。七年的内容已经在那里,缺的只是玩法和系统,而这些在四周内全部做完了。之后,Epic 从大约 300 名员工扩张到几千人,收入从大约一亿美元级别,涨到几十亿美元级别,并且一度成为整个游戏界的中心。《堡垒之夜》现在每年的收入达到数十亿美元,是 Epic 收入的大头,此外还有虚幻引擎授权、《火箭联盟》、《糖豆人》和 Fab。公司一直在花钱比赚钱多:有一段时间每年额外支出超过十亿美元,之后是痛苦的裁员,现在额外支出是几亿美元,靠着现金和投资,这笔开销还负担得起。他们可以开始一个三年、四年、五年都不会回本的项目。

其实,这场技术上的奇迹比这个模式还要早。从 2012 年开始,Epic 就一直在为账号、登录和多人游戏构建可扩展的后端系统。在经过一年的高强度工作后,在线团队把同时在线的用户数从大约 4 万扩展到 1500 万。架构采用微服务:游戏服务器运行 100 人的对局,多个账号服务器实例共享同一个数据库,几百种服务彼此通信。扩展的工作,就是找出瓶颈,让每一个环节都能横向扩展,并且有足够的冗余。Epic 做到 1500 万同时在线,却没有购买任何服务器硬件。有一周,巴西在周末高峰时服务器不够用了,等到下一周更重的负载来临时,机器已经到位了。斯威尼说,亚马逊有人在恰当的时间,及时把价值几百万美元的服务器直接发了过来。在这个故事里,有许多无名英雄,其中很多人 Epic 从来都没有听说过。

09

今天的游戏是一块块封地,可携带的外观物品是第一个可能打破它们的东西

斯威尼讲经济学的开场,是 Fridman 最没想到的一种:“游戏的现状,以及它为什么糟糕。”《堡垒之夜》有大约 1 亿月活,有你的一大群朋友,有十万个岛屿,而且你可以在不同体验之间无缝切换。你想玩 Roblox?那就得退出《堡垒之夜》,启动另一个应用,换一套好友列表、另一个用户名,还要重新熟悉操作手感。你在《堡垒之夜》里买的外观物品就会消失。《使命召唤》《魔兽世界》《英雄联盟》也是同样的孤岛。主机厂商曾经试图用全平台好友来解决这个问题,但 PlayStation 上的朋友在 Xbox 上是看不见的。平台和游戏这两个彼此垂直的封地,并非有意为之,而是历史偶然的结果。人没法带着朋友和物品,在不同游戏之间自由移动。

解决办法是联邦化。玩家可以用 @ 前缀来识别彼此,让 Xbox、Epic 和 Steam 的身份能够共存于同一个空间。统一社交关系图是第一层。统一经济则要难得多。《魔兽世界》里的剑,在《堡垒之夜》里不应该能用;玩法道具是本地的。不影响结果的外观物品就不一样了,大多数主流多人游戏都有这类东西。斯威尼估计,把相似的那些归在一起,大约 70% 的外观可以互通:同一套服装,可以在《堡垒之夜》、Roblox 里穿,或许还有《使命召唤》,甚至在一两百个其他游戏里都能穿。《堡垒之夜》内部在汽车上已经这样做了:你一上车,汽车就会带上你的外观。

创作者经济的诀窍,在于把参与度和现金分开。大逃杀和玩家自制模式,才是人们愿意玩的原因;它们不是付费取胜,也不直接赚钱。赚钱的是道具商店,而它之所以存在,正是因为这些玩法带来的参与。消费随后按参与度分配:比如你 40% 的时间玩大逃杀,60% 的时间玩玩家自制模式,那么你消费的利润中可以拆分出来的部分,就会按比例分给这些地方的创作者。正是靠这种机制,《堡垒之夜》的创作者经济做到了 4 亿美元,而且还在增长。下一步是建立一个标准组织,定义可携带的外观的规格:尺寸、能力,以及它能做什么、不能做什么,这样各个游戏就会尊重彼此的购买记录,收入也能在不同生态之间分配。一个大家都很喜欢的攀爬模式《Only Up》,其实呈现了相反的情况:人们不太买皮肤,因为你在上面能看到的唯一其他玩家,只是头顶上那个人的屁股。你可以量化某个游戏模式与消费之间的相关性。

底层的交换标准已经能用了。网络上有 PNG 和 MP3;场景描述有皮克斯的 USD,虚幻引擎、Unity 和 Blender 都能共享同一个场景图;纹理和几何体则用 glTF。《堡垒之夜》角色的静态外观、身体、动画、姿势,还有表情的音效,都可以用这些文件保存。斯威尼说,最大的缺口,是处于标准化元宇宙中心的那门编程语言。网页有 HTML 负责静态的二维布局,有 JavaScript 让它动起来。元宇宙需要的则是更强大、更安全、更可扩展的东西,因为网页在下一次发布之前,都是一家公司打包好的一套代码和内容;而元宇宙是数百万人写的代码和内容的组合,可能会形成一个无缝的世界。《堡垒之夜》一次高细节的大版本更新,大约是 60 GB,只是创作生态中的一小部分。十年之后,借助标准,可能会以 EB 计。大逃杀不会是最后一个品类;《毁灭战士》让死亡竞赛成为可能,而大逃杀本身,又需要二十年前还不存在的硬件。仍然缺的,是一种能力:让成千上万的作者在同一个连续空间里协作组合作品,比如一辆车来自一个人,武器来自二十个人,地形来自几千个人,而且不需要写出不切实际的代码。这正是 Verse 要做的事。

10

Verse 想把并发变成语言的问题,而不是一百万程序员的问题

Verse 是一门面向大规模模拟的语言:它不只服务于一座《堡垒之夜》岛屿,还能让数百万程序员在同一个环境里共享模块。有些游戏会一直保持 100 人规模;斯威尼押注,千人、百万人、甚至几千万人参与的体验,仍然有待发现。《堡垒之夜》已经吸引了 1500 万同时在线的用户,但这些用户被切分成一个个 100 人的服务器,他说,这是一种限制,而不是设计。如果几千万人能一起参加一场演唱会,还能看到整个人群,那一定会更酷。一千万人不需要在你的屏幕上同时显示一千万个全细节的虚拟形象;这又回到了奈奎斯特采样的道理。网络是更难的那一半。难题本身,就是这份工作。

他想让语言同时做到简单和强大,引用 Niklaus Wirth 的话说:强大应来自少数几个能相互组合的特性,而不是一堆特例。1956 年的一次会议催生了 ALGOL,如今它几乎被人遗忘,但它确定了函数、变量和递归的工作方式,C 语言一族都继承了这些做法。Verse 想修正的,正是其中几处当年做错的地方。普通语言里,一个表达式只会产生一个值;函数式逻辑语言里,表达式可以产生零个、一个或多个值:零个是失败,一个是成功,多个则是可以逐个遍历的一组值。if 的条件也是如此,要么成功,要么失败;成功时还会绑定一些值,供 then 分支使用,而不是用完就扔的布尔值。for 也可以写得像 SQL 查询。Epic 的 C++ 程序员头几个月会写出“Verse 语法的 C++”,它比两种语言都差,过几个月代码才变得紧凑。第一次接触《堡垒之夜》的程序员,会把这种模型当成直觉去用,写出的循环和条件,比很多内部代码还要高级。

活着的元宇宙永远不会关机,模块也在不断更新,因此新版本必须能被证明是向后兼容的,这是一个类型检查的问题。原本返回整数的函数,之后可以改成返回自然数,却不能开始返回有理数。Java 和 C# 早年都定过这类严格规则,后来又放弃了。1930 年代还有一个更深的洞见:精心设计的类型系统可以表达定理。比如某个函数接收一个整数数组,返回由同样整数组成、且已经排好序的数组,那么写这个函数的人就必须证明它确实排了序。类型就是定理,某些值则是证明。Lean 和 Coq 已经能检查数学证明,让你没法撒谎。Verse 的目标,是成为第一门主流语言,以足够友好的方式采用这种做法,友好到你不必亲手去写证明。编译器接受了程序,它就应该能正常运行。人仍然会犯错,但在编译期能拦下的错误,依然可以更多。用户手里的 bug,代价是你机器上 bug 的几百倍。Sweeney 曾让 Fridman 去深挖的柯里-霍华德对应指出:逻辑里能证明的东西,在具备合适特性的类型系统里也能证明,所需特性大约相当于七条定律。命名和缩进是主观的;Guido van Rossum 选择用空白缩进的 Python,属于口味问题。在 Sweeney 看来,不能表达证明的类型系统就是更差,计算领域的工作,就是回头修正那些早先做错的事,免得它们在系统被压垮之前越积越多。他怀疑,去年很多可怕的漏洞,都是 C 语言里的缓冲区溢出。

这一代最大的技术难题,是驯服并发,让普通程序员只需写普通代码,就能用上并发。虚幻引擎五代以来,都拒绝用手工方式把游戏玩法扩展到多线程;对 Epic 和每个授权方来说,这太容易走火了。微服务适用于亚马逊的订单处理,但对几百万无法预见每一个并行依赖关系的业余开发者来说,行不通。可用的基础来自 1980 年代的研究,并在 Haskell 的论文《Composable Memory Transactions》里变得真正可行。事务就是一段必须像在单线程里运行那样执行的代码块:比如一次对象更新,每帧一次,每秒 60 次。一场 100 人的《堡垒之夜》对局,每帧已经有好几万次这样的更新,这也是为什么上限定为 100 人:把一台服务器压榨到极限,也许能到 140 人,但做不到几千、几百万,更做不到几十亿。程序员照常读写变量。运行时会推测性地同时执行很多更新,把写入先缓冲在本地,提交那些没有读写重叠的更新,其余的则重试。比如更新一万个对象,发现其中九千个没有冲突,就可以按任意顺序应用它们;剩下的一千个则丢弃计算结果,重新跑一遍。原本要压给一百万人的痛苦,就这样转移给了少数几位语言设计者。Verse 目前正在《堡垒之夜》的虚幻编辑器里以适度、向后兼容的版本逐步交付,每隔几个月会有重要的 API 发布;那些已经在用完整 C++ 的授权方,在核心接口补齐之前,还用不上它。虚幻引擎 6 还要几年,也许两三年后会有预览版,目标是做出一套构建,既能作为《堡垒之夜》岛屿发布,也能作为独立游戏发布,或者两者兼顾,而且仍然处于开放的道具经济之内。至于独立开发者的成功,他向 Fridman 提到 Gavin Eisenbeisz 的《Choo-Choo Charles》(用的是蓝图,没有写 C++)。他认为,核心是生产力:一个内容市场,让小团队不必亲手建模每一棵树。

11

苹果能毁掉一家公司,这就是为什么几乎没有别人愿意去打这一仗

斯威尼的第一台电脑是沃兹尼亚克设计的 Apple II Plus,之后又用上了 IBM PC。开机之后就是一个编程语言的提示符;你得特意去做点什么,才能不去写程序。任何人都能把软件放进软盘,分享它,卖掉它,不需要任何科技公司的许可。当时在全世界占主导地位的 IBM,也推出了开放的 PC。他说,那个技术高速增长、无人能比的时代,深深刻在了他的脑海里。后来,大公司意识到,它们可以阻止开发者直接发布软件,也可以阻止开发者直接和客户打交道。你花钱买了手机,手机就是你的。苹果没有理由阻止你从网页上安装应用,也没有理由阻止你在没有开发者账号的情况下写自己的应用。苹果也没有理由,对你已经为设备买过单的各种交易,抽取 30% 的“乱收费”,而且只对某些商品收,对另一些不收。他说,竞争的引擎在 Windows 和开放的网络上仍在运转,在移动端却已经停转了。他敢打赌,iPhone 上的 Steam 会是比苹果应用商店好得多的商店,而苹果到那时就不得不做出一个更好的商店。

副作用是,这家商店的排行榜与玩家的口味严重脱节。主机的畅销游戏往往投入很大、质量很高;而 iPhone 的排行榜几乎总是那种“贪婪到荒唐”的鲸鱼游戏,充满付费取胜和抽卡箱,是一种靠操纵玩家的合法赌博。以好玩为核心的游戏很难在那里生存。运营一款在线游戏本来就很昂贵;再交给苹果 30%,这个比例超过了大多数游戏公司的利润,只能涨价。这是对数字商品征收的一种通胀式税。而这只是第一口。在《堡垒之夜》被 iOS 下架之前,在苹果商店里搜索“Fortnite”,排在第一位的是一款竞品。Steam 不会这样。买搜索排名可能要花掉大约 45%;社交媒体获客又要再花 20%。他说,收入中大约有 70% 可能都花在了这些“乱收费”上。剩下的钱,只够支撑一些很恶劣的设计,这些设计在普通玩家看来,基本不像是游戏。

为什么只有 Epic 敢打?每家公司都怕苹果,因为苹果能毁掉它们的生意。这场官司开打的时候,《堡垒之夜》是全世界最大的游戏,而且大多数玩家在 PC 和主机上,所以失去 iOS 还撑得住。斯威尼认为,Spotify、Facebook,以及移动端排名前十的其他应用,都撑不过被封禁这一关。苹果对 Epic 的处理,远不止打官司;它也是在向每个开发者发出一个信号:你敢打,我们就想办法毁掉你。软权力更安静。批准更新快一点,或者把更新拖上几周,就能改变一家公司的竞争能力。苹果对不受待见的开发者,有很长的猫鼠游戏历史:大型科技公司的更新,有时会被悄悄拖慢几周甚至几个月,因为没有人愿意公开说出来。这样的手段,足以吓退几乎所有上市公司。

他之所以投入这场战斗,是因为他认为,一个拥有十亿用户、实时 3D 社交经济的体系,必须在苹果和谷歌的把关被解除之后才能存在;而且届时,大多数主要游戏都能作为平等的一方直接和客户打交道。费用只是其中一层。苹果禁止 iOS 上的浏览器实现比苹果自家更好的网页标准,还限制网页应用的存储和 3D 能力,让网页应用无法和原生应用竞争。如果元宇宙也被同样对待,规则就会变成:只能用苹果的引擎,不许用虚幻引擎,所有交易都必须经过苹果。在欧洲,即使有 DMA,商店依然“只能是一个商店”。他借用了一个苏联时期的说法:纵深防御。每一道壁垒都足以致命,即使其中一道被突破,其他的仍能让这套方案无法运作。在欧盟,苹果允许 Epic 游戏商店上架 iOS,但形式极其困难。他说,除非监管机构施加严厉的处罚,否则它毫无成功的机会。Fridman 喜欢苹果,他认为苹果在这件事上是错的,竞争也会让苹果自己的商店变得更好。斯威尼想要的,是 Apple II 说明书里的那个苹果:书里印着 ROM 源码,附有硬件原理图,是一个开放的生态。“那才是了不起的苹果。”他说,现在这家公司站在了历史错误的一边。

12

12% 是这家商店的重点,好玩仍然是这个行业的重点

Epic 游戏商店以 12% 的抽成上线,Steam 则是 30%。Sweeney 没有回避两项主要批评。启动器确实笨重,需要改进。他的遗憾是,本该先把体验做好,却先去做合作方想要的营销类功能,比如同一款游戏的多个版本,以及从普通版升级到豪华版。好几次重构之后,仍有用户不满意,这一点他也承认。体验并不均匀:离 CDN 近、游戏库不大的时候,用起来还行;体验差的人,恰恰是最爱在网上发帖的那些人。他们并不想复刻 Steam 的每一个功能,合作方通常也不想用 Epic 托管的论坛。但他们确实想要和 Steam 一样方便的体验,尤其是在游戏越来越跨平台、一个人在 Steam、Discord、PlayStation 和 Xbox 上有四种身份的情况下。Epic Online Services 向所有开发者免费提供跨平台的好友、聊天和身份服务。Sweeney 说,梅特卡夫定律是游戏行业最重要的趋势:一款游戏连接的现实好友越多,它的价值就呈平方级增长。索尼曾封锁跨平台游戏,2018 年经过一轮艰难的谈判,它开放了 PlayStation,之后又深化了合作:《战神》进入了《堡垒之夜》,虚幻引擎用于索尼影业,索尼音乐也参与其中。此后,索尼相对 Xbox 的份额有所增长。他说,一个更好的苹果,本可以用一次谈话来回应他写给高层的邮件。可现在,这变成了一场五年的战争,而他希望,眼下只是与索尼长达 15 年以上合作关系的开端。

他坚持原则,为独占辩护。苹果强制使用它的支付体系,是一种强迫;而为独占供货向开发者付钱,是竞争。Epic 从来没有强迫任何人。它提供资金、营销和激励,他说,为了拿到游戏,Epic 在游戏收入之外净投入了超过十亿美元。《无主之地》在 Epic 上的表现,和 Gearbox 估计它在 Steam 上会有的表现差不多。一些小游戏在独占期内触达的玩家较少,独占期结束后转去了 Steam。Epic 与 Google 的诉讼中,开场的展示是一个思想实验:一家新商店,拥有旧商店所有的东西,价格也一样,结果没有人转过去。Epic 无法在价格上竞争,因为开发者担心 Steam 的推荐位,也担心主机厂商的不满,于是只能在供货上竞争。Fortnite 离开 Play 商店后,Google 推出了 Project HUG(Hold developers Close,即“紧紧拥抱开发者”),向排名前 30 的发行商支付了数亿美元,让它们不与竞争对手签独占协议。陪审团认定,这些做法违法。根据 Epic 的数据,运营 Google Play 的全部成本大约是收入的 6%。苹果则更精简。从 6% 提高到 30%,只有垄断者才做得到。

他认为,行业的未来总是被戏剧性的东西遮住,而不变的是好玩。近来一些失败的作品,没能做到这一点,或者在和人们生活中的其他乐趣竞争时,输得很彻底。人才正在向 Epic、Riot 这样的公司和大型科技公司集中。玩耍正在转向那些和现实朋友一起玩的游戏,而不是和随机陌生人玩,也大多不再是单人战役。团体会选定一款游戏一起接受,即便它不是任何人的第一选择。这还是梅特卡夫的道理,也是《堡垒之夜》月活达到 1.1 亿历史新高、Roblox 比以往任何时候都大的原因。他提到,一款出色的单人游戏,比如《黑神话:悟空》,常常像一次假期,玩完之后,人们还会回来。这一类游戏你没法投入 3 亿美元,在 4000 万美元的规模下才能赚到钱。最大的游戏会更快地再投入,形成一个赢家拿得更多的循环。除了他自己的作品,让他印象深刻的游戏,都是那些像活着的世界的游戏:《塞尔达传说:旷野之息》、《上古卷轴 5:天际》、《荒野大镖客》,其中河流的设计,被一位学过生态学的高中同学评价为水文上很合理。他最后一次设计游戏是在 1992 年,他自己也不算设计师。他认为,最好的品类还没有被发明出来。Rockstar 为《GTA 6》花了很多年,这又是虚幻引擎的那个教训:当你把品质推到前人从未达到的地步,每一次修复都会暴露出新的问题,你没法提前把这些问题排进计划。烂游戏会一直烂下去,晚到的好游戏,终究会变好。《堡垒之夜》的赛季要到最后一个月才能看出好坏,所以最后一段路就像冲刺,有些教训只有在上线之后才会出现。

让他感到希望的,是数字时代正在出现的一种分化。社交网络上,人们互相打字,那种以负面情绪推动的互动,感觉像是一步倒退,地基不稳。和陌生人组满一队玩《堡垒之夜》,有时还会用到一种“战场西班牙语”,一路说到墨西哥城,这种体验非常出色,也很讨人喜欢。人与人在真实或虚拟的空间里一起相处,是一种天然有共情力的媒介。愤怒的文字则是一种自我强化的负能量。Fridman 同意,围绕游戏的 Discord 群可能很有毒,但同一个房间里的人几乎总能相处得来。把数字空间做得足够沉浸,让人能感受到对方,共情就会显现出来。斯威尼对自己工作的概括很简单:通过娱乐让人们的生活变得更好,把它当作一种消遣,而不是对现实的替代。

同频道的其他文章

3:36:56EN
Lex Fridman· 2026年9月16日播客Psychiatry Has Never Found Its Penicillin主持 Lex FridmanHistorian Andrew Scull tells Lex Fridman why the field can ease symptoms, has never cured a major mental illness, and keeps paying for overconfidence with patients' lives.Mental HealthPublic HealthNeuroscience
5:15:51EN → 简体中文
Lex Fridman· 2026年8月26日播客 · 2 人对谈DHH 没有亲手写一行 Omarchy Quattro 的代码嘉宾 DHH · 主持 Lex Fridman与莱克斯·弗里德曼一次充满怀疑的对话过去十三个月后,Rails 的创造者讲述了 Opus 4.5、一群编码智能体(Agent)和一个一分钟的 Linux 安装器,如何结束了他一凿一凿手写 Ruby 的时代。编程智能体Vibe Coding智能体工程+3
3:12:58EN → 简体中文
Lex Fridman· 2026年8月12日播客 · 2 人对谈一个冷水澡,二十位冠军:Khabib Nurmagomedov 是如何炼成的嘉宾 Khabib Nurmagomedov · 主持 Lex Fridman在马哈奇卡拉的一间学校体育馆里,七十个人共用一个淋浴间,而且只有冷水。Martial ArtsCombat SportsCoaching+3
3:46:18EN → 简体中文
Lex Fridman· 2026年7月28日播客 · 2 人对谈抽掉奴隶制,就没有美国内战嘉宾 Gary Gallagher · 主持 Lex Fridman1860 年,美国奴隶主名下的奴隶价值,超过了全美所有铁路和工厂的总和。Political PhilosophyLeadershipHistory
3:51:47EN → 简体中文
Lex Fridman· 2026年6月30日播客 · 2 人对谈46% 的皇帝被暴力推翻,帝国照样延续下来嘉宾 Anthony Kaldellis · 主持 Lex Fridman历史学家 Anthony Kaldellis 与 Lex Fridman 一起走过 2200 年的罗马史,并主张我们所说的拜占庭,其实就是罗马本身。Political PhilosophyGeopoliticsLeadership
2:53:42EN → 简体中文
Lex Fridman· 2026年5月29日播客 · 2 人对谈月亮一直在下落,却总也落不到地球上嘉宾 Biggest Mysteries in Physics · 主持 Lex Fridman费米实验室(Fermilab)物理学家 Don Lincoln 在与 Lex Fridman 的对谈中说,物理学的历史就是一部统一的历史;反物质(antimatter)、暗能量(dark energy)和万物理论(theory of everything)依然远在我们能做的实验之外。Quantum MechanicsScience CommunicationPhilosophy of Science