一张卡、一台 Linux 机器,能不能把「实时可玩」的神经渲染从演示视频搬进自己的终端?这件事过去一年里被反复承诺、也反复跳票,所以当 Matrix-Game 4.0 在 2026-10-15 把代码、权重和游戏素材一起放出来时,真正值得关心的不是它宣称的帧率,而是——我照着文档敲,能不能跑起来。这篇 SOP 只解决这一个问题:在一台带 NVIDIA 显卡的 Linux 机器上,从零把它装起来、拉下资源、出一段渲染、开一个浏览器 demo,并且知道自己在什么位置踩坑。
按本站批 53 的分工,同批的《Matrix-Game 4.0 开源资源解读》负责讲项目定位、三层架构、许可证链条和生态;本篇只讲装、跑、验,不重复项目背景与许可分析。另外要避让两处:站内 10-07 的《GPT-Live-1 语音发布》配套过一篇实时语音 API 接入 SOP,那是完全不同的一类接口,本篇不涉及;站内 2026-09-14 的《开源不等于可商用:世界模型横评四本账》算的是许可与选型账,本篇也不做横评。你如果是来找「该选哪个模型」的,请去那两篇;如果你是来找「命令写在哪、参数怎么填」的,往下看。
仓库地址先给全:本文所有命令与参数均取自 v4 子目录 README 原文,出处是 SkyworkAI/Matrix-Game 仓库里的 Matrix-Game-4/README.md。
仓库地址:github.com/SkyworkAI/Matrix-Game
下面的九个步骤,就是一条从裸机到「按键有画面」的最短路径。
一、先把机器条件对齐
部署这类项目,最常见的失败不是命令写错,而是环境假设不成立。README 的 Requirements 把边界写得很清楚,先逐条对照,别急着 clone。
模型推理(真正的门槛): 需要 Linux、NVIDIA GPU、Python 3.12 三者同时满足。A100 80GB 的参考部署用的是 PyTorch 2.12.0 / CUDA 13.2。此外仓库还单独内置了一套 RTX 5090 专用运行时——注意它不会自动识别硬件,你必须在命令行里显式选择匹配的 preset,否则会走默认路径。
浏览器 demo: 服务端必须是一台 Linux 主机,它同时负责构建/运行游戏和 GStreamer 管线;桌面客户端的目标浏览器是 Safari 和 Chrome,客户端不需要 GPU。也就是说你可以用一台普通笔记本打开页面,算力全在服务器那侧。
单机游玩与录制: 需要 macOS 或 Linux,外加 CMake、C++20、SDL2 与 FFmpeg 库。这里有个必须说清楚的坑——旧的 Windows 入口被保留下来了,但 README 明确说它「未经验证功能等价」,所以别拿 Windows 当生产路径。
磁盘: 所有运行时素材与模型权重都不随仓库分发,需另外下载。README 特意提醒:除了安装后的副本,还要为 Hugging Face Hub 缓存预留额外空间——也就是同一份权重要占两份地。这一点在第三节会再展开。
一句话总结前置:Linux + NVIDIA GPU + Python 3.12 是硬条件,A100 80GB 走 PyTorch 2.12.0/CUDA 13.2,RTX 5090 走专用 preset,客户端不吃显卡,Windows 别抱期待。
二、安装:在 Matrix-Game-4/ 目录里敲
有一个容易翻车的细节:README 里从 Install 到后面所有命令,都在 Matrix-Game-4/ 这个子目录里执行,而不是仓库根目录。根仓库是系列仓,v4 只是它的一个子目录,进错目录后面全错。
git clone https://github.com/SkyworkAI/Matrix-Game.git
cd Matrix-Game/Matrix-Game-4
python3.12 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install torch==2.12.0 torchvision==0.27.0 --index-url https://download.pytorch.org/whl/cu132
python -m pip install -e '.[inference,server,download,test]'逐行解释一下为什么这么写:
python3.12 -m venv .venv与source .venv/bin/activate把环境隔离在项目内,避免污染系统 Python。Python 3.12 是硬要求,别用 3.11 或 3.13 去凑。torch==2.12.0 torchvision==0.27.0走--index-url https://download.pytorch.org/whl/cu132,也就是 PyTorch 官方为 CUDA 13.2 准备的 wheel 源。版本必须成对,别单独升级其中一个。-e '.[inference,server,download,test]'是以可编辑模式安装本包,并带上四个 extras:推理、服务端、下载器、测试。少装一个,后面matrix-game子命令可能直接报缺模块。
README 补充了三点:优化路径需要版本匹配的 PyTorch/Triton 以及兼容的 NVIDIA 驱动;FlashAttention 的安装是可选的;rtx5090 预设用的是 PyTorch SDPA,不需要 SageAttention,只有 rtx5090-sage 才需要额外构建。原生依赖与媒体依赖的细节,README 指向了 docs/installation.md,装到这一步报错的话先去那里对照。
三、资源下载:权重和素材得单独拉
权重、快速编解码器、sink 图像以及游戏素材都放在 Hugging Face 上,仓库里只有清单(manifest)。README 给的默认目录布局是:
resources/
base/ # Shared umT5, tokenizer, Wan VAE, TAEHV
models/castle/ # model.safetensors, sink.png
models/ancient-egypt/ # model.safetensors, sink.png
models/racing/ # model.safetensors, sink.png
game/assets/ # Shooter assets and per-scene maps
racing/assets/ # City map, captions, routes and vehicle audio下载分两步:游戏素材和模型权重是两份不同的清单。README 原文的命令(含固定的 repo id 与 revision)如下:
matrix-game download --manifest releases/game-assets.json \
--repo-id Skywork/Matrix-Game-4.0 --repo-type model \
--revision 4419accdb7bb7881234c5914de8cd915266e0325 \
--scene ancient-egypt --resources resources
matrix-game download --manifest releases/models.json \
--repo-id Skywork/Matrix-Game-4.0 --repo-type model \
--revision 4419accdb7bb7881234c5914de8cd915266e0325 \
--scene ancient-egypt --resources resources要点:
- 把
ancient-egypt换成castle、racing或all即可切换场景,all会一次拉全部。单进程只支持一个场景模型,所以通常按需下载更省磁盘。 - 下载器会按清单校验文件大小与 SHA256,所以中途断了可以重跑,不用整个删掉重来。
- 共享的 T5/tokenizer 与 Wan VAE 不由本仓库复制,而是从官方 base 模型的固定 revision 自动拉取,你不需要单独下。
- 想复查已安装的场景是否完整,README 提供了
verify:
matrix-game verify --manifest releases/game-assets.json \
--scene ancient-egypt --resources resources
matrix-game verify --manifest releases/models.json \
--scene ancient-egypt --resources resourcesresources/README.md 里有各文件体积与上游依赖,磁盘不够就先去看那张表。
四、离线渲染:先确认模型能出片
装完、资源拉完,别急着开浏览器。先用离线渲染做一次最小验证,因为它把「模型能不能推理」和「网络传输、浏览器解码」这两类问题解耦开了。README 建议先跑快路径:TAEHV 编解码、一步去噪、固定场景 prompt、加速 DiT 运行时。在 A100 上用 --preset realtime 显式选中它。
matrix-game render --scene ancient-egypt --input lowpoly.mp4 \
--resources resources --preset realtime --prompt-mode fixed \
--output outputs/egypt- 输入是低多边形代理画面(README 里叫 low-poly),不是真实录像。游戏引擎自己持有世界状态、物理与输入,渲染出来的是干净的低模 RGB 流。
- 输出是
rendered.mp4加一份配置报告。FPS 与帧数会被保持,只有最后不足四帧的尾块会在内部补齐后再从输出里裁掉。 - 三个 preset 的分工要分清:
realtime(TAEHV + 一步去噪 + ring/fused DiT + CUDA graph 回放)用于 A100;RTX 5090 换rtx5090;quality(Wan VAE + 两步去噪1000,500,含启动步 + 原生 DiT)更慢,但它恰恰是省略--preset时的默认值——这是新手最容易踩的隐性坑:不写 preset,你就默认吃到了最慢的配置。
如果你手上是一段本地录制的 take,还可以让场景从清单里读:
matrix-game render --take /path/to/take-1 --resources resources \
--preset realtime --prompt-mode fixed --output outputs/take-1
python game/tools/finalize-demo.py /path/to/take-1 \
--rendered outputs/take-1/rendered.mp4docs/offline.md 里讲了如何导出干净的 RGB、HUD、音频与输入轨迹。
五、本地游玩与录制:不加载模型也能验证玩法
这一步很关键,因为它完全不加载模型权重,也不需要装 Python 侧依赖。你可以先用它来确认游戏本身、操作手感、录制链路是通的,再去碰模型。
bash scripts/build_game.sh
bash scripts/play.sh --scene ancient-egypt- 对两个射击场景(Castle、Ancient Egypt),
play.sh会启动 48 FPS / 2 倍模拟时间的本地 demo 模式,不带神经渲染、也不模拟网络延迟。按 F9 切换录制,Esc 打开菜单。换另一张地图用--scene castle。 - 环境变量
MATRIX_GAME_DATA_DIR可以覆盖默认的resources/game。 - 赛车场景是另一条命令:
bash scripts/build_racing.sh,之后按docs/racing.md走本地游玩/录制与浏览器模式。注意赛车的 48 FPS 录制模式用的是正常的 1 倍模拟时间,跟射击的 2 倍不一样——浏览器 demo 也不启用射击的本地 2 倍模式,它每一帧把模拟推进1 / --fps秒。 - 这一层的价值在于:你可以配合 coding agent 去改地形、物体摆放、NPC 行为与游戏规则,然后在本地反复验证,全程不用加载模型权重。改完再上模型,才不会把所有问题混在一起。
六、浏览器 demo:服务端与客户端分离
浏览器 demo 是单用户 WebRTC 方案,README 要求先构建原生游戏并装好媒体依赖,然后开两个终端:一个跑 MediaMTX(媒体服务器),一个跑模型服务。
终端一:
mediamtx configs/mediamtx.yml终端二:
CUDA_VISIBLE_DEVICES=0 bash scripts/serve.sh \
--scene ancient-egypt --resources resources --preset realtime --fps 40然后在服务器本机打开 **http://127.0.0.1:8025/**,或按 docs/online.md 里说的通过 SSH 转发所需端口。RTX 5090 上把 --preset realtime 换成 --preset rtx5090;想在不加载模型的情况下先测控制、HUD、音频与传输,加 --reference-only——这是排查「到底是模型慢还是网络慢」的好开关。
这一节有一个官方亲口划的重点:--fps 40 是「目标采集节奏」,不是吞吐或延迟保证。 视频编码、网络传输、缓冲和浏览器解码都会在模型推理之外再加延迟。README 甚至直接说「欢迎提交降低流式延迟的贡献」——言下之意,这条链路的延迟是分段的,别拿一个数字背锅。
七、RTX 5090:两个预设与可选的 SageAttention
标准安装和资源下载完成后,5090 用户直接从 --preset rtx5090 开始。它沿用同一套场景 checkpoint 和共享资源,不需要单独的量化权重:DiT 的块内线性权重在加载时转成 FP8,推理时对激活做量化,而Embedding 与输出头保持 BF16。
两个 5090 预设都选 TAEHV、一步去噪、融合核与 CUDA graph,差别只在自注意力后端:
| 预设 | 自注意力 | 额外安装 |
|---|---|---|
rtx5090 | PyTorch SDPA | 标准安装之外无需任何东西 |
rtx5090-sage | 历史窗口用 SageAttention,窗口填充期用 SDPA | 需要按下方步骤打补丁构建 |
要用 rtx5090-sage,需要用仓库自带的 CUDA-graph 补丁 + CUDA 13.2 构建 SageAttention 2.2.0。以下命令在 Matrix-Game-4/ 目录、与模型同一个 Python 环境里跑:
python -m pip install "nvidia-cuda-nvcc==13.2.*" "nvidia-nvvm==13.2.*" "nvidia-cuda-crt==13.2.*" "nvidia-cuda-cccl==13.2.*" setuptools wheel ninja
export CUDA_HOME="$(python -c 'import nvidia, os; print(os.path.join(nvidia.__path__[0], "cu13"))')"
mkdir -p ../cuda-link && ln -sf "$CUDA_HOME/lib/libcudart.so.13" ../cuda-link/libcudart.so
git clone https://github.com/thu-ml/SageAttention.git ../SageAttention
git -C ../SageAttention checkout eb615cf6cf4d221338033340ee2de1c37fbdba4a
git -C ../SageAttention apply "$PWD/matrix_game/inference/rtx5090_sage/sageattention.patch"
LIBRARY_PATH="$PWD/../cuda-link" MAX_JOBS=4 EXT_PARALLEL=2 python -m pip install --no-build-isolation ../SageAttention装完把上面两条命令里的 --preset rtx5090 换成 --preset rtx5090-sage 即可。用普通 rtx5090 时完全不需要构建 SageAttention。
还有一个体验上的提醒:运行时会在接受真实会话前预热核并捕获 CUDA graph,所以第一次启动比稳态渲染慢,别以为卡住了。官方同时表示,RTX 5080 / 5070 版本预计下周发布——也就是这套 5090 预设目前是最新的消费级路线。
八、验收标准:怎么算真的跑通了
跑通不是「进程没报错」,而是有两个可观察的判定点:
- 浏览器 demo 路径:按键盘,画面有响应。官方口径给出的端到端延迟是约 <150ms——这是官方数字,本站未独立复测。
- 离线渲染路径:给模型一段低模视频,得到一段更精细的渲染输出(
rendered.mp4)。这条路径不依赖网络与浏览器,是最干净的验收方式。
关于性能,这里必须把三方口径并写,不能只挑最好看的那个数:
- 官方发布口径(昆仑万维新闻稿及媒体转引):单张 RTX 5090、480p 60FPS、端到端延迟 <150ms、单步去噪稳态 83 FPS、显存峰值 18.5 GiB。注意这是官方口径,非独立复测。
- 官网性能面板当前是占位符:0FPS / 0ms / 0p / 0GPU,页脚自述「project page preview · content will be updated at release」。也就是说上面这组数字,官网自己还没落数。
- 仓库 README 自测口径(最硬):单张 A100-SXM4-80GB、864×480,一步去噪 + TAEHV + SDPA + ring/fused DiT + CUDA graph,不含启动与预热:射击两场景固定 prompt 约 38-39 FPS(在线会话内的模型处理吞吐);赛车固定 约 38.5、动态 约 28.9(服务端在线管线吞吐)。
README 还专门澄清了两件容易被误读的事:上述数字不是浏览器呈现 FPS,也不是「动作到光子」的端到端延迟;赛车数字来自同架构的早期 checkpoint,只作性能参考。这和第六节里 --fps 40 的说明是同一套逻辑——模型处理吞吐、在线管线吞吐、呈现帧率、端到端延迟,是四个不同的东西,混着比就会得出错误结论。
九、六个必须提前知道的坑
- 单进程只支持一个活动会话 + 一个场景模型。 别指望在一个服务进程里同时挂 castle 和 racing,也别想着并发多用户。这是 demo 级设计,不是多租户服务。
- 默认绑 loopback,不要暴露公网。 README 的安全声明原文是「trusted single-user demo, not an authenticated public cloud-gaming service」,HTTP / RTSP / WebRTC 默认都绑在回环地址。这是没有鉴权的单用户 demo,直接对公网开放等于把端口送人。
--fps 40是采集节奏,不是吞吐或延迟保证。 视频编码、传输、缓冲、浏览器解码都会额外增加延迟。- Windows 入口未验证。 旧入口保留但官方明说未验证功能等价;要走这条路请自担风险,或以 macOS / Linux 为准。
- 磁盘与下载体积要预留,且要留出 Hub 缓存。 权重与素材需另外下载,安装副本和 Hub 缓存的占用是叠加的。
- 显存门槛分两档。 参考路线是 A100 80GB;消费级路线是 RTX 5090(5080/5070 待发布)。别拿中端卡去试
quality预设,那是最慢也最吃显存的一档。
延伸阅读
FAQ
Q1: 没有 A100,只有消费级显卡能不能跑?
A1: 可以,但要走 RTX 5090 专用路线:标准安装后使用 --preset rtx5090(PyTorch SDPA,无需额外构建)。README 还提到 rtx5090-sage 变体,需要额外构建 SageAttention 2.2.0。RTX 5080 / 5070 的版本官方称下周发布,当前尚未提供。至于更早或更低的卡,本 README 未给出支持口径,不建议自行假设。
Q2: --preset realtime 和 --preset quality 到底差在哪?
A2: realtime 用 TAEHV 编解码 + 一步去噪 + ring/fused DiT + CUDA graph,是快路径,A100 上显式选它;quality 用 Wan VAE + 两步去噪(1000,500,含启动步)+ 原生 DiT,更慢。关键点是:省略 --preset 时默认就是 quality,所以「没写 preset」等于选了最慢的一档,而不是最快的一档。
Q3: 为什么我 play.sh 能跑,但浏览器 demo 打不开?
A3: 这两条路径依赖不同。play.sh(第五节)不加载模型、不需要 Python 侧依赖,只验证游戏与录制;浏览器 demo 还需要 MediaMTX 在另一个终端运行、需要 GStreamer 和媒体依赖、且服务端必须是同一台 Linux 主机。先用 --reference-only 在不加载模型的前提下测控制、HUD、音频与传输,可以快速判断是链路问题还是模型问题。
Q4: 官网写的 60FPS 和 README 的 38 FPS,到底信哪个? A4: 两个都要写、都要标口径。60FPS / <150ms / 83 FPS / 18.5 GiB 是官方发布口径,未独立复测;38-39 FPS 是仓库 README 在 A100-SXM4-80GB、864×480 下的自测口径,且明确「不含启动与预热」。二者不是同一测量对象:前者是发布宣传口径,后者是特定硬件与分辨率下的模型处理/管线吞吐。官网当前性能面板还是占位符(0 值)。别把任何一方当成浏览器呈现帧率。
Q5: 把端口映射到公网给朋友玩可以吗?
A5: 不建议。README 的安全声明明确这是「trusted single-user demo」,HTTP / RTSP / WebRTC 默认绑回环且没有鉴权。要在远程使用,README 建议的做法是通过 SSH 转发所需端口(见 docs/online.md),而不是直接暴露到公网。
写在最后
把这篇 SOP 的主线再收一遍:前置条件(Linux + NVIDIA GPU + Python 3.12)、在 Matrix-Game-4/ 内安装、拉权重与素材、离线渲染出片、本地游玩/录制、浏览器 demo、5090 预设、验收、避坑。整条链路里最容易出问题的从来不是命令本身,而是三处「默认值陷阱」:命令要在子目录里跑、--preset 不写就是最慢档、--fps 40 不是延迟承诺。把这三处记住,剩下的基本是等待下载和等待预热。
最后提醒一句分工边界:本篇只负责「装、跑、验」。项目定位、三层架构、许可证链条与更细的性能对照,请看同批的开源篇;横向选型与许可账本,请看站内 2026-09-14 的世界模型横评。一篇 SOP 的价值不在于覆盖全部信息,而在于让下一个人少花一个晚上。