交互实验 · 游戏产业

一个 175GB 的游戏里
代码只有 15.56 MB

Valve 在 2025 年 2 月公开了《军团要塞 2》的全部游戏代码。我把仓库整个拉下来逐字节数了一遍, 然后照着真实的贴图与音频公式搭了一台装机台。你可以亲手把一个 12MB 的游戏拨成 175GB。

堆满贴图与音频箱子的巨大仓库,地面上只有一张发光的代码纸
整座仓库都是贴图、语音和地图。地上那张发光的纸,是全部游戏代码。
第一幕

在 175GB 里找到代码,需要放大 11,519 倍

下面这条就是一个 175GB 的安装包,从左到右按体积排开。代码在最右端。 按住按钮不放,条带会持续放大——松手就停,随时能看当前倍率。

1倍
目标 11,519 倍
← 安装包的其余部分

整块条带就是一个 175 GB 的安装包。代码在里面,你看不见。

第二幕

你来当制作人,把包体拨大

先点一张预设卡看看手感,再自己拨滑块。每一项都是明摆着的乘法,公式在下面可以展开核对。

制作人在调音台前推动滑块,身后传送带上的游戏光盘越堆越高
拨一格滑块,硬盘多掉几个 G。
这台游戏的安装包
0 GB
代码占比
0%
单套材质贴图
0 MB
单套材质 = 几份游戏代码
0 份
画面精度
边长翻倍,体积变四倍
1 张只有颜色;2 张是漫反射加法线,Source 时代的做法;6 张是完整 PBR(基础色、法线、粗糙度、金属度、AO、高度图)
逐级缩小的副本,让远景不闪烁,代价是体积 ×4/3
场景里有多少种不重复的表面
内容体量
几何、碰撞体与烘焙好的光照
为了让读盘快一点,同一份资源在多个关卡里各存一份
拉到 500 MB 试试,看总量动不动
展开公式,自己验算
和真实游戏放一起比

金色那条是你刚拨出来的。其余为各游戏公开标注的磁盘占用。

第三幕

顺手拆了一下这个「开源」仓库

既然代码这么小,那 Valve 放出来的 464 MB 仓库里装了什么?点方块可以往下钻,点标题回上一层。

贴着开源代码标签的木箱,里面几乎全是水泥砖,只有最上面一小叠代码纸
箱子上写着「开源代码」,打开一看,七成是预编译好的砖头。
73.1%
预编译二进制
339.6 MB 的 .lib / .a / .so / .exe
14.9%
源码文本
69.3 MB 的 .cpp / .h
12.0%
其他
55.7 MB 的资源、文档与脚本

点任意方块往下钻一层。

拆到这里愣了一下

那个叫 src/engine 的目录,只有一个文件

src/engine/audio/public/sound.h 3,134 字节

Source 引擎本体从来没有开源。Valve 放出来的是游戏层代码——兵种、武器、回合规则这些, 引擎那部分依然是编译好的 engine.dll。 所以「TF2 开源了」这句话,得打个折扣听。

所以硬盘是被谁吃掉的

拨完滑块你大概已经有数了:把包体推上去最快的那一格,永远是贴图分辨率和 PBR 通道数。一套 2K 六通道材质 32 MB,乘上三千多种材质就是一百多个 G。 语音排第二,十国配音能顶三十个 G。

代码在这场膨胀里几乎不参与。DOOM 的年代它还占包体的 6.8%, 到现代 3A 只剩 0.075%——九十倍的塌缩。 把代码滑块从 1 MB 拉到 500 MB,总量那根条几乎不动。

下次看到 175GB 的安装包,别问程序员写了多少代码。该问的是那批 4K 贴图开了几个通道, 以及有没有人真的需要那十种语言的配音。

数据来源

  1. 源码实测数据:Valve Source SDK 2013 仓库(GitHub ValveSoftware/source-sdk-2013,master 分支)。 下载 tarball 后按文件扩展名逐字节统计,采集于 2026 年 8 月。 仓库全部文件 487,115,673 字节;源码文本 72,650,541 字节;预编译二进制 356,056,626 字节。
  2. TF2 游戏代码:src/game/{client,server,shared}/tf 三个目录的 .cpp / .h 文本, 共 16,312,863 字节、533,158 行;gzip -9 压缩后 3,447,002 字节。
  3. TF2 源码公开时间:2025 年 2 月 18 日随 TF2 补丁一同发布,见 teamfortress.com 官方公告与 TF2 Wiki 的 SDK 条目。
  4. 贴图与音频体积:按格式定义直接计算。未压缩 RGBA8 为每像素 4 字节,BC7/DXT5 为 1 字节,BC1/DXT1 为 0.5 字节; mipmap 系数取 1+1/4+1/16+… = 4/3。音频按 码率 ÷ 8 × 秒数 计算。
  5. 真实游戏体积:Steam 商店系统需求页标注的磁盘空间。 《军团要塞 2》15 GB、《黑神话:悟空》130 GB、《赛博朋克 2077》70 GB、《GTA V》72 GB、《博德之门 3》150 GB。 《使命召唤:现代战争》175 GB 为含全部内容包时期的公开报道值。
  6. 模型与地图体积:本页模型为参数化估算(单模型体积随贴图精度档位提升),非实测值,用于让总量贴近公开标注体积。 这两项在页面里单独列出,不与实测数据混算。