← 返回 2026-04-03

MultiGen:基于扩散游戏引擎的可编辑多人世界关卡设计 MultiGen: Level-Design for Editable Multiplayer Worlds in Diffusion Game Engines

Ryan Po, David Junhao Zhang, Amir Hertz, Gordon Wetzstein, Neal Wadhwa, Nataniel Ruiz 📅 2026-03-30 👍 7 2026-07-13 08:36
世界模型 关卡设计 外部记忆 多人交互 扩散游戏引擎 视频生成

MultiGen 用显式外部记忆+三模块架构,让扩散游戏引擎支持关卡可编辑与多人一致性

前置知识

扩散模型 (Diffusion Models)

扩散模型是一类通过迭代去噪过程生成数据的生成模型,其前向过程 $\mathbf{x}_\tau = \sqrt{\bar\alpha_\tau}\mathbf{x}_0 + \sqrt{1-\bar\alpha_\tau}\boldsymbol\epsilon$ 逐步向样本添加高斯噪声,反向过程则学习一个去噪网络 $\boldsymbol\epsilon}_\theta(\mathbf{x}_\tau,\tau)$ 来逐步还原干净样本。Flow-matching 框架中的速度参数化形式训练目标为 $\mathcal{L}=\mathbb{E}[\|v_\theta(\cdot;\tau) - v^*(\mathbf{x}_0,\tau)\|^2]$,其中目标速度 $v^*(\mathbf{x}_0,\tau)$ 由加噪后的样本线性插值到原始样本定义。本文采用的就是这种 velocity-parameterization 训练方式,使训练稳定性更好。

扩散模型是本文观察模块的生成基础。理解扩散模型的训练目标(特别是 velocity parameterization)以及如何在测试时通过迭代去噪生成单帧画面,是把握 MultiGen 整体设计的必要前提。

扩散游戏引擎 (Diffusion Game Engine)

扩散游戏引擎将扩散模型重新用作实时交互式世界模拟器,给定当前状态 $\mathbf{S}_t$(通常由最近若干帧画面组成)和下一动作 $\mathbf{a}_t$,预测下一帧观测 $p(\mathbf{o}_{t+1}|\mathbf{S}_t,\mathbf{a}_t)$。代表性工作 GameNGen 用 Doom 游戏作为受控测试环境,把图像扩散模型当作自回归的下一帧生成器。该范式的核心局限是:环境结构信息全部隐式编码在有限的视觉上下文窗口 $\mathbf{o}_{t-L+1:t}$ 中,无法支持多人共享状态或用户前置编辑。

MultiGen 是对扩散游戏引擎范式的扩展。理解 GameNGen 的 'frames-as-state' 设计及其缺陷(上下文窗口溢出后产生的结构漂移和不可编辑性),是理解本文创新点的前提。

外部记忆 (External Memory)

外部记忆指独立于模型上下文窗口、能够跨时间步持续维护的显式数据结构,常见形式包括可编辑的 2D 地图栅格、显式姿态追踪、3D 几何表示或 KV 缓存。在多智能体系统中,外部记忆常作为共享状态,多个智能体可同时读写同一份记忆以保持协同一致性。与之相对的隐式记忆则把状态编码在模型权重或内部激活中,难以直接控制或编辑。

外部记忆是本文的核心创新。它把持久性的全局结构信息从视觉上下文中抽离出来,形成可被用户直接编辑、可被多个智能体共享的显式状态,从而同时解决了关卡可编辑性 (editable memory) 和多人一致性 (shared memory) 两个挑战。

光线投射与视差 (Ray Casting & Disparity)

光线投射是从指定视点沿某方向投射一条射线,统计其与多边形几何第一次相交的距离,得到 1D 深度向量 $\mathbf{d}\in\mathbb{R}^{N_r}$,其中 $N_r$ 是射线数量。视差 $\mathbf{r}_t = 1/\mathbf{d}$ 是深度的倒数,物理意义是 '近场结构在视差图中更突出'。将 1D 视差向量升采样到 UNet 输入分辨率 $\mathbf{R}_t\in\mathbb{R}^{H\times W\times C_r}$ 并与上下文帧在通道维拼接,可以把低维几何先验注入高维图像生成过程。

几何条件信号是 Memory 模块和 Observation 模块之间的桥梁。没有这种轻量的几何先验,外部记忆就只是抽象符号;有了它,扩散模型可以在每一步直接对齐到地图布局,从根本上抑制 'frames-as-state' 范式中的结构漂移。

自回归视频生成 (Autoregressive Video Generation)

自回归视频生成将联合分布分解为 $p(\mathbf{x}_{1:N}) = \prod_{i=1}^N p(\mathbf{x}_i|\mathbf{x}_{<i})$,即每帧以之前所有帧为条件依次生成。训练时常采用 per-frame independent noise levels 或 noised-context training 来缓解 train-test 不一致。当前主流做法是把视频帧做离散化 token 化或直接做扩散条件生成,每一步输出去噪一帧并在收敛后移入上下文。MultiGen 的 Observation 模块就是一个条件扩散模型,其条件是最近 $L$ 帧上下文 + 几何 $\mathbf{r}_t$ + 动作 $\mathbf{a}_t$。

本文是基于扩散的自回归视频生成路线的延伸。理解 noised-context training(用随机噪声强度污染上下文帧来增强对错误历史的鲁棒性)和 history guidance(在 CFG 中对干净 vs 带噪上下文分别计算)是理解推理稳定性的关键。

研究动机

现有的扩散游戏引擎(如 GameNGen)将状态隐式建模为最近若干帧的视觉窗口 $\mathbf{S}_t = \mathbf{o}_{t-L+1:t}$,这种 'frames-as-state' 范式在长程交互中存在两个相互纠缠的瓶颈。第一个瓶颈是不可编辑:环境结构只能由模型内部推断,关卡设计师无法在生成之前指定走廊走向、房间布局等全局几何,导致只能复现训练集中的关卡;第二个瓶颈是无法多人共享:每个玩家只在本地维护自己的视觉状态,无法形成跨视角一致的共享世界,命中、击杀、复活等交互在视觉上会出现状态冲突。在论文的 Tab.1 中,这一点被量化——GameNGen 在 128–256 帧的 rollout 区间内 LPIPS 上升至 0.562(相比 1–128 区间的 0.379),意味着超过 100 步之后,模型开始大量幻觉出训练集中不存在的结构。模型本质上是把上下文压缩为一个滑动窗口,因此随着窗口中远离当前视野的旧帧被截断,全局结构信息会损失殆尽。

本文的目标是本文的具体目标是把显式的、低维的、可持续维护的状态从视觉生成链路中分离出来,重新引入扩散游戏引擎。具体而言,作者希望构建一个三模块系统——Memory(维护地图几何 $\mathbf{M}=(\mathbf{V},\mathbf{E})$ 和玩家姿态 $\mathbf{p}_t=(x_t,y_t,\theta_t)$)、Observation(基于上下文帧、几何 $\mathbf{r}_t$ 和动作 $\mathbf{a}_t$ 用扩散去噪出下一帧)、Dynamics(用轻量 Transformer 预测 $\Delta\hat{\mathbf{p}}_t$ 以推进状态)。他们希望这套架构同时支持两个应用:可编辑关卡设计(设计师只要画一张 2D 线段地图,就能生成与该地图一致的长程第一人称 rollouts)和实时的多人交互(多个玩家共享同一份外部记忆,从任意数量的视角生成一致的实时帧)。最终系统在单张 NVIDIA A100 上达到每个玩家约 20 FPS。

与已有工作不同的是,已有工作要么解决可编辑性,要么解决多视角一致性,但极少同时解决这两个问题。已有的可编辑关卡生成工作(如 ControlNet、IP-Adapter)只能把地图当作额外的视觉条件,无法在 rollout 中持续查询地图,因此长程生成仍会出现结构漂移;已有的多人视频工作(如 'split-screen' 的联合扩散生成)必须在训练时固定玩家数量,无法支持动态的死亡/复活机制。本文的核心切入角度是引入持久外部记忆——把地图当作独立于模型上下文的 'shared memory blueprint'。这同时让设计师能直接编辑环境(只要改 $\mathbf{M}$)和让多个玩家共享同一份 $\mathbf{M}$ 与动态姿态集合。Memory 模块如同 '物理引擎维护的世界状态',Observation 模块只是其中的渲染器。多视角一致性因此成为多人读取同一份记忆的天然副产品,而不需要额外学习多视角一致性损失。

核心方法

MultiGen 的整体思路是把 '环境几何' 与 '感知生成' 解耦,让前者由一个显式、低维、易修改的状态维护,让后者专注于把该状态渲染为图像。直觉是这样的:在第一人称游戏中,玩家的位置、地图上的墙、地板的图案共同决定了下一帧画面的大部分内容;如果模型可以通过显式查询地图(而不是从最近若干画面里 '挤出来')拿到这部分信息,那么它的负担就大大降低,长程一致性也会显著提升。因此,在 Memory 模块中,本文用 2D 顶点集 $\mathbf{V}=\{\mathbf{v}_i\}$ 和线段集 $\mathbf{E}=\{e_j\}$ 表示静态地图 $\mathbf{M}$,并用欧氏坐标+偏航角 $\mathbf{p}_t=(x_t,y_t,\theta_t)$ 表示玩家姿态。观测模块以最近 $L$ 帧的上下文 $\mathbf{o}_{t-L+1:t}$ 加 ray-traced 视差 $\mathbf{r}_t$ 加动作嵌入 $\mathbf{a}_t$ 为条件,用 velocity-parameterization 的扩散网络去噪下一帧 $\hat{\mathbf{o}}_{t+1}$。Dynamics 是一个轻量 Transformer 编码器,输入姿态/动作/几何/UNet 中间特征,输出 $\Delta\hat{\mathbf{p}}_t$ 来推进状态。推理时三者形成闭环——读 $\mathbf{r}_t$、渲染 $\hat{\mathbf{o}}_{t+1}$、更新 $\hat{\mathbf{p}}_{t+1}$——刷新视觉上下文窗口继续下一帧。整套系统不需要为新地图再训练,也不需要为新玩家数再训练。

MultiGen 相对 GameNGen 的本质区别不在于去噪网络本身,而在于 '状态的组织方式'。GameNGen 把状态全部塞进视觉上下文窗口 $\mathbf{S}_t=\mathbf{o}_{t-L+1:t}$,对几何没有专门的低维表示,长程必然出现结构漂移;MultiGen 则显式地分解状态为静态几何 $\mathbf{M}$(持久、时间无关、提供全局参考)、动态姿态 $\mathbf{p}_t$(由 Dynamics 模块推进)和短期视觉上下文 $\mathbf{o}_{t-L+1:t}$(仅提供外观与短程运动连续性)。这种分解让多个独立的创新成为可能:(1) 外部记忆可被用户直接编辑,使粗略 2D 草图足以锚定长程 rollout;(2) 同样的 $\mathbf{M}$ 可被多视角共享,因此动态增删玩家姿态即可支持任意数量的玩家,无须训练时固定;(3) 几何视差 $\mathbf{r}_t$ 作为显式低维条件,避免了模型 '凭想象力捏造' 远处的墙壁。

方法步骤详情

方法包含四个步骤,按训练/推理两条线展开。\textit{步骤 1:构建状态}。在每个 timestep $t$ 定义状态 $\mathbf{S}_t=(\mathbf{M},\mathbf{p}_t,\mathbf{o}_{t-L+1:t})$,其中 $\mathbf{M}=(\mathbf{V},\mathbf{E})$ 是从游戏或人工标注的顶点和线段集,$\mathbf{p}_t=(x_t,y_t,\theta_t)\in\mathbb{R}^2\times\mathbb{S}^1$ 表示玩家位置和朝向,$\mathbf{o}_{t-L+1:t}$ 是最近 $L$ 帧画面。\textit{步骤 2:光线投射几何条件}。给定当前 $\mathbf{p}_t$ 和地图 $\mathbf{M}$,沿视场角均匀投射 $N_r$ 条射线,统计各射线第一次与 $\mathbf{E}$ 相交的距离 $d_i$,取视差 $r_{t,i}=1/d_i$,并被 reshape 成 $\mathbf{r}_t\in\mathbb{R}^{H\times W\times C_r}$ 的空间张量,作为扩散 UNet 的额外输入通道。\textit{步骤 3:观测模块采样}。Observation 把 $\mathbf{r}_t$ 和 $L$ 帧上下文在通道维拼接,构造条件输入;动作 $\mathbf{a}_t$ 经学习到的 embedding 后通过 cross-attention 注入。损失函数为 $\mathcal{L}_{\mathrm{obs}}=\mathbb{E}_{t,\tau}[\|v_\phi(\mathbf{o}_{t-L+1:t},\mathbf{r}_t,\mathbf{a}_t;\tau) - v^*(\mathbf{o}_{t+1},\tau)\|^2]$,即标准 velocity matching 目标。为缩小 train-test 鸿沟,训练时对所有上下文帧加随机噪声强度。\textit{步骤 4:动力学模块}。把 $L$ 帧上下文、几何 $\mathbf{r}_t$、动作 $\mathbf{a}_t$ 和当前 $\mathbf{p}_t$ 输入到一个小型 Transformer 编码器 $\mathcal{D}_\psi$,预测增量 $\Delta\hat{\mathbf{p}}_t$;用 $\ell_2$ 损失监督平移部分,用 wrapped-angle 误差监督朝向。推理时三步构成闭环:读 $\mathbf{r}_t=\mathrm{ray}(\mathbf{M},\mathbf{p}_t)$、生成 $\hat{\mathbf{o}}_{t+1}\sim p_\phi(\cdot|\mathbf{o}_{t-L+1:t},\mathbf{r}_t,\mathbf{a}_t)$、更新 $\hat{\mathbf{p}}_{t+1}=\mathbf{p}_t+\Delta\hat{\mathbf{p}}_t$,再滑动上下文窗口并继续。多人模式下,所有玩家共享 $\mathbf{M}$ 与姿态集合,每个玩家跑独立的 (Observation, Dynamics),而新玩家加入/移除只需修改姿态集合 $\{\mathbf{p}_t^{(i)}\}$。

技术新颖性

MultiGen 的技术新颖性可从三个维度评判。第一是 '状态分解' 这一架构选择:它把长期困扰扩散游戏引擎的长程漂移问题,从 '如何让模型记住' 转化为 '如何让模型查询外部'。这是一个系统层面的重新设计,比单纯的去噪网络改进影响更广泛。第二是外部记忆的可读写接口:地图 $\mathbf{M}$ 在用户编辑后可作为离线参数持续指导生成;同时同一份 $\mathbf{M}$ 被多方玩家读取和更新,这种 dual-role 抽象是新颖的,已有工作要么只做可编辑生成,要么只做共享状态生成,没有同时做到两件事。第三是 streaming 推断架构:每个玩家跑独立 (Observation, Dynamics),共享同一份 (Memory),随玩家数线性扩展;这与 joint split-screen baseline 形成本质对比——后者必须在训练时固定玩家数。技术上还有两个工程贡献:(1) noised-context training 加 history guidance 的组合,使自回归 rollout 在 20 FPS 下长程仍稳定;(2) Dynamics 模块利用 UNet 中间特征作为输入,避免了重复的视觉编码,使整闭环效率得以保障。

Method overview (Memory / Observation / Dynamics)
Fig. 2: Method overview (Memory / Observation / Dynamics)
Real-Time Interactive Multiplayer Generative Experiences
Fig. 5: Real-Time Interactive Multiplayer Generative Experiences

实验结果

实验在两个核心应用上分别验证。\textit{Level Design (Tab.1)}:在 100 张程序生成地图(Obsidian 生成器)训练得到的 MultiGen 全帧平均 SSIM 0.418、PSNR 19.32、LPIPS 0.453,优于 IP-Adapter (0.415/18.74/0.488)、ControlNet (0.411/18.51/0.524)、GameNGen (0.405/18.77/0.471)。差异最显著的是长程 rollout (128–256 步):MultiGen LPIPS 仅 0.505,而 IP-Adapter 升至 0.578、GameNGen 升至 0.562——外部记忆在长程时的抗漂移能力被定量证实。SSIM 和 PSNR 在长程上同样保持领先 (MultiGen 0.406/18.59 vs IP-Adapter 0.396/17.19)。\textit{Multiplayer Consistency (Tab.2)}:用 VLM 当 judge 判断对手是否应可见,MultiGen 准确率 75.38%、精度 88.12%、召回 65.07%,远超最强 baseline split-screen (65.31/86.86/44.59),相对 IP-Adapter 召回率提升约 60%。这一差异直接体现了共享状态带来的对手可见性判断——基线方法常常 '忘记' 队友或 '幻觉' 出已复活的对手。\textit{消融 (Tab.3)}:在 $\mathbf{L}\in\{2,4,8,16,32\}$ 中,SSIM 从 0.709 持续提升到 0.789,LPIPS 从 0.121 降到 0.089;可见上下文窗口对短程运动连续性仍然必要,但收益递减——$\mathbf{L}=8$ 已达 0.783,进一步增大仅带来边际提升,这与论文 '外部记忆承担全局结构,$\mathbf{L}$ 仅承担外观' 的论点一致。\textit{实时性}:单张 NVIDIA A100 下每个玩家约 20 FPS,因此双人或三人实时一致 rollout 在硬件上是可达的。

SSIM/PSNR/LPIPS between generated frames and ground truth
Table 1: SSIM/PSNR/LPIPS between generated frames and ground truth
Multiplayer consistency evaluation using opponent-presence detection
Table 2: Multiplayer consistency evaluation using opponent-presence detection
Context frame ablation
Table 3: Context frame ablation
Example rollouts under an authored map and action sequence
Fig. 3: Example rollouts under an authored map and action sequence
Example Two-Player Gameplay Roll-out
Fig. 4: Example Two-Player Gameplay Roll-out
Consistent Views in Three-Player
Fig. 6: Consistent Views in Three-Player
查看结构化数据
任务指标本文基线提升
Level-conditioned rollout 全帧平均 (1-256 步) SSIM / PSNR / LPIPS 0.418 / 19.32 / 0.453 GameNGen 0.405 / 18.77 / 0.471 SSIM 略升约 0.013, LPIPS 改善约 3.8%, 长程收益更显著
Level-conditioned rollout 长程段 (128–256 步) SSIM / PSNR / LPIPS 0.406 / 18.59 / 0.505 GameNGen 0.384 / 17.33 / 0.562 LPIPS 在长程相对改善 10%, 显示外部记忆最强优势区段
对手可见性判断 (Multiplayer Consistency) Accuracy / Precision / Recall 75.38% / 88.12% / 65.07% Split-screen baseline 65.31% / 86.86% / 44.59% 准确率 +10.07 pp, 召回率 +20.48 pp, 显示最弱 baseline 提升最大
上下文窗口消融 (L=32 vs L=2) SSIM / LPIPS L=32: 0.789 / 0.089 L=2: 0.709 / 0.121 SSIM 提升 +0.080, LPIPS 降低 26%

局限与改进

作者明确指出了三个局限。第一,地图 $\mathbf{M}$ 不显式存储纹理和小物体,只编码几何,因此再次回到同一区域时纹理可能漂移('appearance inconsistency')——论文没有量化这一点,但视觉上可以从 Fig. 4 的多帧中隐约看出。第二,Dynamics 模块并非完美,长程 rollout 仍会累积小的姿态误差,作者用 'actions remain aligned with plausible motion' 这一软描述承认问题——结构仍然站得住,但具体物理位置有偏差。第三,视觉外观受限于 ViZDoom 训练数据分布,泛化到风格迥异的游戏(如写实 3A 游戏)需重新收集数据。我还观察到两个隐含限制:(a) 评测只在 Doom 这一固定环境上进行,作者自己的多玩家实验也承认 'we train and evaluate on a single map',外部记忆的最大优势在于可以零样本编辑关卡,但论文并未提供 '训练集外 100% 新布局' 的泛化指标;(b) 实时性 20 FPS 是单卡单玩家的代价,对于真正的多人 fps,total FPS 会随人数线性增加,因此对 4 人及以上的场景本文未给出实测。

独立分析的弱点

独立分析可见几处可改进点。第一个弱点是评测指标的粒度仍偏粗:SSIM/PSNR/LPIPS 都是 per-pixel/per-frame 的指标,对 '游戏体验' 这种高层语义并不敏感。例如,复活机制是否一致、视角切换是否平滑、策略性动作(蹲下、跳、换弹)是否正确等关键交互质量无法被这些指标捕捉。一个改进方向是引入 world-state-aware metrics:测量 'cross-view 击中事件的时序一致性' 或 '动作-结果因果性'。第二个弱点是所有 ablation 和 baseline 比较都在单张/少量固定地图上进行,没有报告在新地图(训练集零接触)上的 zero-shot 性能。如果外部记忆真的实现 '可编辑关卡',编辑距离(修改了多少顶点数)应该作为独立维度报告。第三个弱点是动态姿态的精度受 Dynamics 模块的局限,作者也承认姿态误差累积,但没有给出定量分析('small pose errors' 到底有多小?100 步累积多少像素?);一个改进方向是引入 trajectory-level 误差(如 ATE、ADE)做定量评估。第四个弱点是 '20 FPS' 的工程描述缺少资源分解,没说 Observation、Dynamics、Memory 各自占用多少 GPU 时间;这影响未来工程化方向(如换成更小的 UNet 能否提升到 60 FPS)。

未来方向

作者自己提及的方向主要是泛化到更复杂游戏风格(脱离 Doom 数据分布)以及缓解长时间姿态漂移。基于成果可延伸的方向包括:(1) 把外部记忆形式从 2D 线段扩展到 3D 几何或 NeRF 风格可微表征,让 '编辑物体外观' 也成为可能;(2) 引入在线 RL 让 Dynamics 模块在 rollout 中自我纠错姿态,而不是依赖监督学习;(3) 把 Memory 模块用于规划型 agent:用同一份记忆既驱动扩散渲染又驱动决策网络,让 agent '看到自己未来想做的事';(4) 探索 '多次回访一致性'(return consistency):让显式记忆存储区域纹理哈希,使同一区域多次回到时纹理稳定。(5) 在更多玩家(如 8 人或 16 人)下测试系统可扩展性,并分析 GPU 共享策略下的吞吐;(6) 把 Memory 模块从游戏世界推广到机器人导航、AR 内容生成、UGC 引擎等需要 '可编辑 + 多视角一致' 的应用。

复现评估

复现评估整体偏难。论文来自 Stanford 与 Google,作者在个人主页 https://ryanpo.com/multigen 上给出了项目页,但没有声明模型权重或代码是否已开源;arXiv 6 页正文(v2)的实验细节需要从附录推断。论文报告 ViZDoom / Obsidian 数据集是可获取的(ViZDoom 是开源 Doom RL 框架,Obsidian 也是公开的程序化 Doom 地图生成器),但作者用 100 张程序生成地图训练 Observation、用 ViZDoom 死亡竞赛模式训练 multiplayer,总共收集超过 2000 万帧 gameplay,这些数据规模和训练算力对个人研究者门槛较高。最关键的硬件需求是单张 NVIDIA A100 才能达到 20 FPS 的实时推理——生成过程本身是 iterative diffusion,去噪步数未在正文披露,但 20 FPS 大致意味着每个 action 步只有约 50ms 的总预算,约束较强。第三方复现预计需要:(a) 复现 ViZDoom + 两个 baseline;(b) 重新跑 100 张地图 + 死亡竞赛数据收集;(c) 训练 Observation UNet 和 Dynamics Transformer 各一个;(d) 集成闭环推理管线。整体而言,复现难度中高,主要门槛在工程闭环和大规模数据预处理。