Docker 镜像动辄 GB 级;完整游戏引擎竟可编译为仅 35MB 的 WASM
摘要
作者将基于 WebAssembly 编译的 Godot 游戏引擎(仅 35MB)与典型的 Docker 基础镜像进行对比,并探讨了尽管 WASM 在文件体积和部署效率上优势显著,但其实际应用范围却依然有限的深层原因。
暂无内容
查看缓存全文
缓存时间: 2026/05/12 12:59
# Docker 镜像高达数百 MB;而完整的游戏引擎编译为 35MB WASM
来源:https://bogomolov.work/blog/posts/wasm-vs-docker/
几个小时前我将一个游戏骨架导出为 WebAssembly,对生成的产物大小感到惊讶。这是一个完整的 3D 引擎——包含 GL 兼容性渲染器、Jolt 物理引擎、GDScript 运行时、Ink 叙事解释器。二进制文件:35MB。可在任何浏览器中运行,无需安装。
Facebook 的主页加载量是 44MB。这个游戏引擎是 35MB。
## # (https://bogomolov.work/blog/posts/wasm-vs-docker/#try-it) 试一试
全屏 (https://pub-cab470135ad64bbf9490e4c1ce5fa431.r2.dev/stanica/index.html),WASD,Esc。
###### # (https://bogomolov.work/blog/posts/wasm-vs-docker/#the-thing-that-weighs-less-than-a-base-image) 比重比基础镜像更轻的东西
`python:3.14-slim-trixie` – 精简的基础镜像,在你添加任何单个依赖之前 – 大小为 144MB。即使是使用 uv 精心构建的最小化版本 (https://bogomolov.work/blog/posts/docker-uv/) 也达到了 282MB。
## # (https://bogomolov.work/blog/posts/wasm-vs-docker/#landscape) 现状
来自我的浏览器和本地 Docker 缓存的大小数据:
项目大小 Google 主页(所有资源,43 个请求)10MB
本游戏(Godot 4,完整引擎)35MB
Facebook 主页(所有资源,379 个请求)44MB
livekit/livekit-server(Go, WebRTC)75MB
python:3.14-slim-trixie 144MB
python:3.14-slim-trixie + 最小依赖 282MB
我工作中的 REST API 300–400MB
node:latest(每周拉取 19M 次)421MB
ghcr.io/gohugoio/hugo 423MB
我工作中基于 Python 的 AI 智能体 1.45GB
Hugo: 423MB 用于生成静态 HTML。游戏引擎仅为 35MB 😌
Go 二进制文件(livekit 为 75MB)已经非常接近了。
## # (https://bogomolov.work/blog/posts/wasm-vs-docker/#the-open-question) 待解的问题
一方面,Go 可能是一个解决方案,但 `wasip1` 仍处于预览阶段——标准运行时中没有套接字(sockets),没有线程。Zig 更接近一些,但也尚未达到。目前只有 Rust 和 C/C++ 是实际可行的选项。
另一方面 —— Cloudflare Workers 可以加载 WASM 模块,containerd 有 runwasi,Kubernetes 有 kwasm 实验,WASI 运行时也已存在。
那么为什么 WASM 的采用停滞不前?传输大小的优势已经很明显了:大约小 10 倍。为什么这还不足以成为标准实践?
就像几年前的 ARM 节点一样:更便宜、密度更高、广泛可用——但仍然不是默认选择。
相似文章
完全在浏览器中的容器构建
一个完全在浏览器中使用客户端代码构建容器的Web应用程序,展示了自定义容器工具的强大功能。用户可以选择基础镜像、运行Shell脚本,并将生成的镜像导出为tar文件。
将我的C游戏移植到WASM,这是我遇到的所有Bug
一位开发者分享了将C游戏移植到WebAssembly的经验,详细介绍了因32位与64位差异遇到的Bug,并提供了调试技巧。
godotengine/godot
Godot Engine 是一个免费、开源、跨平台的游戏引擎,用于创建2D和3D游戏,采用社区驱动的开发模式,基于MIT许可。
@laowangbabababa: 淘到一个狠项目。 Godot,一个 11.2 万 stars 的开源游戏引擎,MIT 协议,全免费。 Unity 一年订阅费够你雇一个程序员,但这玩意儿直接全免。它表面看是个免费游戏引擎,说白了就是 Unity 的平替。 但免费只是表面。…
介绍 Godot 开源游戏引擎,强调其免费、MIT 协议、2D 引擎优势,并鼓励下载使用。
Wasmer 如何使用 Codex 构建面向边缘计算的 Node.js 运行时
Wasmer 利用 OpenAI 的 Codex 构建了 Edge.js,这是一个运行在 WebAssembly 沙箱中的边缘计算 Node.js 运行时,将开发周期从一年缩短至两周。