SCOPE: Simulating Cross-game Operations in Playable Environments for FPS World Models
Paper: arXiv:2605.23345 Code: z2tong/SCOPE Code reference:
main@d2ecdf66(2026-05-25)
1. Motivation(研究动机)
FPS game world model 的难点不只是“给视频模型加动作条件”,而是要在每一帧同时处理高频、重叠、空间作用范围不同的控制信号。论文指出,FPS 玩家会在一个很短的生成窗口里同时做高速视角扫动、移动、开火、ADS、换弹、跳跃等操作;其中相机/移动会改变整个场景的 ego-motion,而开火、换弹、瞄准等离散事件通常只影响武器、准星和交互物体附近的一小块区域。已有 interactive world model 常把 action embedding 全局广播到所有空间 token,这在 Minecraft / open-world navigation 这类低频控制中还能工作,但在 FPS 中会把“本该局部发生的开火”扩散到整帧,或把连续视角变化压成低运动输出。
本文要解决的具体问题是:如何让 video diffusion world model 在 FPS 场景中同时具备 动作响应性、局部 scope 分离、跨游戏泛化。作者把局部受离散动作影响的区域称为 scope,例如枪口火光、瞄准镜、换弹动作和近距离交互对象;scope 之外的墙面、天空、远处环境应该主要由连续相机/移动信号驱动并保持稳定。如果模型不能区分 in-scope / out-of-scope,它要么为了稳定性压制所有动作,要么为了响应动作牺牲背景一致性。
这个问题值得做,因为 FPS 是动作密度最高、空间选择性最强的 game world model stress test。一旦模型能在 FPS 中完成“连续控制驱动全局运动 + 离散事件只改变局部”的分解,它更接近可交互模拟器,而不是只能按文本提示外推的 video generator。SCOPE 还引入 CrossFPS:69,000 个 5 秒 clips、7 个 FPS titles、每帧对齐的 10-DoF controller telemetry,让模型学习跨游戏共享的 action-to-visual dynamics,而不是记住单个游戏的视觉模式。
Figure 1 解读:teaser 展示了 SCOPE 在 unseen scenes 中执行复合控制和 action-environment interaction 的能力。重点不是单一动作是否出现,而是同一段视频里可以同时保持背景稳定、武器局部变化和连续视角/移动响应;这正是论文所谓 scope separation 的直观目标。
2. Idea(核心思想)
核心 insight:FPS action 的视觉效果天然是空间选择性的,因此 action conditioning 不应作为一个全局向量注入整帧,而应让每个空间位置根据自己的 local visual content 决定“这个动作是否应该影响我”。SCOPE 把 DiT hidden states reshape 成 per-pixel temporal sequences,然后为连续 joystick 控制和离散 button 事件设计两条 action pathway:连续控制走 MLP fusion + temporal self-attention,离散事件走 visual-query cross-attention。
与 OASIS / GameGen-X / HY-World / Matrix-Game 这类 global conditioning 思路相比,SCOPE 的关键差异是 同一个 action 在不同像素上有不同响应:武器区域可以强烈 attend 到 fire / ADS / reload,远处墙面则几乎不受这些 button 影响;连续相机/移动则通过时间窗口建模 out-of-scope ego-motion。这样,模型不需要显式 segmentation mask,也能从数据中学出 in-scope / out-of-scope 的隐式分离。
第二个创新是数据层面的 CrossFPS。以往 game world model 多训练在单个 title 上,action 与视觉风格高度耦合;CrossFPS 把 Halo、Call of Duty、Xonotic 等 7 个 FPS title 的 clips 统一成 10-DoF telemetry,并通过 action balancing、visual-action de-biasing、kinetic normalization 降低 gameplay bias 和引擎差异,使模型学习“右摇杆右转会产生相应 optical flow、RT 会产生开火局部效果”这类跨游戏规律。
3. Method(方法)
3.1 Overall framework:在每个 DiT block 中插入 SCOPE module
输入是首帧 和动作序列 ,输出是 video continuation 。底座模型是 Wan2.2-TI2V-5B,一个 5B 参数 video diffusion transformer;SCOPE 在 30 个 DiT transformer blocks 中都插入 action module,位置在 text cross-attention 之后、FFN 之前。整体训练仍是 flow matching / velocity prediction objective: 这里 是 VAE latent, 是加噪 latent, 预测 flow/velocity, 包含文本、首帧和动作条件。SCOPE 不改变 diffusion objective,而是改变 action 条件如何进入 DiT block。
Figure 9 解读:左侧是 10-DoF controller signal,连续 joystick 与离散 buttons 被分开编码;中间把 hidden tokens 从 变成 ,即每个空间位置拥有自己的 temporal sequence;右侧两条 pathway 分别处理 continuous / discrete action residual,最后 residual 相加再送入 FFN。这个结构让局部视觉内容参与 action routing,而不是让 action 先验全局广播。
3.2 Action representation:10-DoF telemetry
CrossFPS 每帧记录 10 维 controller telemetry,论文把它分成两类:
| Group | Input | Type | Meaning |
|---|---|---|---|
| Movement | LX, LY | continuous | 左右 / 前后移动 |
| Camera | RX, RY | continuous | 左右转向 / 上下看 |
| Combat | RT, LT, R3 | discrete | 开火、ADS、近战 |
| Utility | A, X, Y | discrete | 跳跃、换弹、切枪 |
在 released code 中,这对应 inference.py 的 BUTTON_COLS = [right_trigger, left_trigger, south, right_thumb, west, north] 与 j_left + j_right 四维 joystick;ACTION_CONFIG 设置 mouse_dim_in=4、keyboard_dim_in=6、dim=3072、num_heads=24、vae_time_compression_ratio=4、windows_size=4。
3.3 Spatial reshape:把空间位置变成独立时间序列
SCOPE 的第一步是把 token sequence reshape 成 per-pixel temporal sequence: 这一步是方法的关键直觉:同样的开火信号在枪口区域应产生 muzzle flash,在天空/墙壁区域应接近无影响;同样的右摇杆转向在整帧都产生 scene flow,但局部武器动画不应污染背景。把每个 spatial position 当作独立 temporal sequence 后,模型可以按像素位置学习“该位置是否处在 scope 内”,而不需要人工 mask。
released code 中 diffsynth/models/scope_dit.py::ActionModule.forward 使用 rearrange(x, "b (f s) c -> (b s) f c", f=f, s=S) 实现这一步,处理完 action residual 后再 rearrange(hidden_states, "(b s) f c -> b (f s) c", b=B) 还原为 DiT token layout。
3.4 Continuous pathway:joystick window + temporal self-attention
连续控制 包含两个移动轴和两个相机轴。由于 VAE temporal compression ratio 是 ,每个 latent frame 对应一个 raw-frame action window: 其中 是 window size。SCOPE 把该 window flatten 后与每个 per-pixel hidden feature 拼接,再走 fusion MLP 和 temporal self-attention: 直觉上,continuous pathway 主要负责 out-of-scope ego-motion:相机旋转、视差、前后移动会让整帧背景以平滑方式变化。论文强调这条路径与离散路径分开,是为了避免局部枪械动画污染背景稳定性。
3.5 Discrete pathway:visual-query cross-attention 约束局部事件
离散控制 覆盖 fire / ADS / reload / jump / melee / switch。论文用视觉 token 作为 query、离散 action embedding 作为 key/value:
这样,局部视觉内容决定该位置是否应该响应离散事件。枪口和手部区域更容易 attend 到 fire / reload;远处背景即使看到同样的 button sequence,也可以输出接近零的 residual。两条 residual 最后相加:
released code 中 continuous pathway 命名为 mouse_action,discrete pathway 命名为 keyboard_action。ActionModule 的 mouse_attn.o 和 keyboard_o_proj 都做 zero initialization,因此插入模块在训练初期近似不扰动预训练视频模型。
3.6 Training / inference:end-to-end + Action-CFG
论文训练 backbone 和 30 个 SCOPE modules,所有 SCOPE output projection 零初始化,训练时以概率 把动作条件替换为 learnable null embedding,用于 inference-time Action-CFG: 表示普通 action conditioning, 放大动作响应, 减弱响应。
论文公式与 released code 实现差异:论文写的是“动作条件的 null-action CFG”,但当前 GitHub main@d2ecdf66 的 scope_pipeline.py 中 CFG 是常规 prompt positive/negative CFG:noise_pred = noise_pred_nega + cfg_scale * (noise_pred_posi - noise_pred_nega);mouse_action 和 keyboard_action 被放在 inputs_shared 中,因此 positive/negative pass 共享同一组动作。inference.py 也没有暴露 action guidance scale 或 null-action 输入。也就是说,released inference code 实现了 action-conditioned generation,但没有直接暴露论文公式中的 Action-CFG 控制。
3.7 CrossFPS 数据构造
Figure 2a 解读:dataset samples 展示 CrossFPS 覆盖多个 FPS titles 与不同 HUD / weapon / scene style。作者的目标不是让模型复刻某个游戏,而是让同一套 10-DoF action semantics 在不同 visual domains 中保持一致。
Figure 2b 解读:统计图覆盖 linear velocity、angular velocity、peak angular acceleration、de-biasing 后的 action entropy、strafe-to-forward ratio 和 post-normalization kinetic consistency。关键数字是 entropy 从 1.85 提升到 bits,post-normalization gain variance 降到 0.034,input 与 optical flow 的相关性达到 。
CrossFPS 来自 NitroGen 与 WorldCam,总计 69,000 个 5 秒 clips,20 fps、,划分为 train/val/test = 65,557 / 2,065 / 1,378。处理 pipeline 包括:裁掉直播 overlay / UI 边界、按 scene transition 切分、统一到 20 fps、切成 non-overlapping 5 秒窗口、裁掉 chat 等游戏特定 UI 并 resize 到 。为了减少人类 gameplay bias,作者还做了三步:
- Action Distribution Balancing:过滤 idle clips,要求 left-stick active ;按 action entropy 与 peak camera velocity 找出 top 15% high-intensity clips 并 oversample,避免模型只学低运动轨迹。
- Visual-Action De-biasing:保留“低效/反直觉”动作,例如对天空开火、撞墙奔跑,降低 scene-action mutual information,迫使模型学习物理 action-to-visual mapping,而不是玩家策略。
- Kinetic Normalization:用 optical-flow gain calibration 对齐不同游戏引擎的 action-to-pixel displacement;论文举例同样 stick displacement 在 Halo 可是 rotation、在 Call of Duty 可是 ,未校准会导致 joint training 梯度冲突。
Figure 3 解读:Halo Infinite 示例中首帧既作为 image-to-video condition,也用于 caption generation;action sequence 包含 forward movement、rightward camera sweep 和 ADS activation,说明数据样本同时绑定视觉首帧、文本 caption 与逐帧 action telemetry。
Figure 4 解读:Call of Duty: Warzone 示例强调 simultaneous fire / reload 与 camera rotation 的组合,这类高频混合动作正是 global conditioning 容易失败的场景。
Figure 5 解读:Xonotic 示例补充了非 Halo / CoD 系列的视觉域,帮助 CrossFPS 覆盖不同引擎、HUD 和场景风格,降低模型只记住单一 franchise 的风险。
3.8 Source-code-grounded pseudocode
以下伪代码按 released code main@d2ecdf66 抽象,而不是只复述论文算法。
import torch
import numpy as np
import pandas as pd
BUTTON_COLS = ["right_trigger", "left_trigger", "south", "right_thumb", "west", "north"]
def load_scope_actions(parquet_path: str, num_frames: int, device="cuda"):
df = pd.read_parquet(parquet_path)
if len(df) < num_frames:
pad = pd.concat([df.iloc[[-1]]] * (num_frames - len(df)), ignore_index=True)
df = pd.concat([df, pad], ignore_index=True)
buttons = df[BUTTON_COLS].values[:num_frames].astype(np.float32) # [T, 6]
j_left = np.array(df["j_left"].tolist())[:num_frames].astype(np.float32)
j_right = np.array(df["j_right"].tolist())[:num_frames].astype(np.float32)
joystick = np.concatenate([j_left, j_right], axis=-1) # [T, 4]
keyboard = torch.tensor(buttons).unsqueeze(0).to(device, torch.bfloat16)
mouse = torch.tensor(joystick).unsqueeze(0).to(device, torch.bfloat16)
return keyboard, mouseimport torch
from einops import rearrange
class ScopeActionModule(torch.nn.Module):
def forward(self, x, f, h, w, freqs_mouse, mouse_action=None, keyboard_action=None):
B, L, C = x.shape
S = h * w
hidden = rearrange(x, "b (f s) c -> (b s) f c", f=f, s=S)
if mouse_action is not None:
pad_t = self.vae_time_compression_ratio * self.windows_size
padded = torch.cat([mouse_action[:, :1].expand(-1, pad_t, -1), mouse_action], dim=1)
windows = []
for i in range(f):
start = i * self.vae_time_compression_ratio
windows.append(padded[:, start:start + pad_t])
windows = torch.stack(windows, dim=1) # [B, f, pad_t, 4]
windows = windows.unsqueeze(-1).expand(-1, -1, -1, -1, S)
windows = rearrange(windows, "b f p c s -> (b s) f (p c)")
continuous = self.mouse_mlp(torch.cat([hidden, windows], dim=-1))
hidden = hidden + self.mouse_attn(continuous, freqs_mouse) # zero-init output proj
if keyboard_action is not None:
key_emb = self.keyboard_embed(keyboard_action) # [B, T, hidden/window]
key_windows = build_temporal_windows(key_emb, f, self.vae_time_compression_ratio)
q = self.key_attn_q_norm(self.keyboard_q_proj(hidden))
k, v = self.keyboard_kv_proj(key_windows).chunk(2, dim=-1)
discrete = flash_attention(q, self.key_attn_k_norm(k), v, self.num_heads)
hidden = hidden + self.keyboard_o_proj(discrete) # zero-init output proj
return rearrange(hidden, "(b s) f c -> b (f s) c", b=B)def scope_denoise_step(pipe, models, inputs_shared, inputs_posi, inputs_nega, timestep, cfg_scale=5.0):
# Current released code: actions are in inputs_shared, so both pos/neg prompt branches see the same actions.
noise_pos = pipe.model_fn(**models, **inputs_shared, **inputs_posi, timestep=timestep)
if cfg_scale == 1.0:
return noise_pos
noise_neg = pipe.model_fn(**models, **inputs_shared, **inputs_nega, timestep=timestep)
return noise_neg + cfg_scale * (noise_pos - noise_neg)Code reference:
main@d2ecdf66(2026-05-25) — pseudocode and mapping based on this commit
| Paper Concept | Source File | Key Class/Function |
|---|---|---|
| 10-DoF action loading | inference.py | BUTTON_COLS, ACTION_CONFIG, load_actions() |
| image + action inference entry | inference.py | generate_video(), parse_args() |
| per-block SCOPE conditioning | diffsynth/models/scope_dit.py | ActionModule.forward() |
| DiT block insertion point | diffsynth/models/scope_dit.py | DiTBlock.forward() calls self.action_attn(...) after text cross-attention and before FFN |
| Wan2.2 DiT config with action enabled | diffsynth/models/scope_dit.py, inference.py | WanModel, DIT_CONFIG |
| denoising loop and CFG | diffsynth/pipelines/scope_pipeline.py | WanVideoPipeline.__call__(), model_fn_wan_video() |
| generic training utility, not SCOPE launch | diffsynth/diffusion/runner.py | train() uses AdamW, but repo does not include a SCOPE-specific training launch/config |
4. Experimental Setup(实验设置)
4.1 Dataset
CrossFPS 含 69,000 个 clips,每个 clip 是 5 秒、20 fps、,每帧有 10-DoF controller telemetry。按 95:3:2 split:train 65,557、val 2,065、test 1,378。
| Game | Total | Train | Val | Test |
|---|---|---|---|---|
| Halo Infinite | 32,466 | 30,844 | 973 | 649 |
| Xonotic | 10,460 | 9,938 | 313 | 209 |
| Call of Duty: Modern Warfare | 8,853 | 8,411 | 265 | 177 |
| Halo | 8,227 | 7,817 | 246 | 164 |
| Call of Duty: Warzone | 4,818 | 4,578 | 144 | 96 |
| Call of Duty: Modern Warfare III | 3,662 | 3,480 | 109 | 73 |
| Call of Duty | 514 | 489 | 15 | 10 |
| Total | 69,000 | 65,557 | 2,065 | 1,378 |
4.2 Baselines
论文比较三类支持 action-conditioned generation 的 interactive world models:Matrix-Game 3.0、LingBot-World (Act)、HY-World 1.5。由于这些 baseline 的原生 action interface 与 CrossFPS 的 10-DoF telemetry 不一致,作者用 Gemini 把 action sequences 翻译成各 baseline 需要的 detailed natural-language prompts。为避免把改进误归因于 input modality,论文还用 w/o Spatial Selectivity ablation:同样使用 native telemetry,但把 per-pixel conditioning 换成 global injection。
4.3 Metrics
| Axis | Metric | Meaning |
|---|---|---|
| Action Responsiveness | Dynamic Degree | 衡量整体运动强度与视频 activity |
| Action Responsiveness | Flow Score | 衡量帧间 optical flow displacement |
| Spatial Stability | Photometric Smoothness | 用 backward warping 评估像素颜色一致性,越低越好 |
| Spatial Stability | Depth Accuracy | 用 depth reprojection 评估 3D geometry consistency,越低越好 |
| Visual Quality | JEPA Similarity | 用 V-JEPA feature cosine similarity 衡量语义/物理结构保真度 |
| Visual Quality | FVD | 生成视频分布与真实视频分布的 Fréchet distance,越低越好 |
| Visual Quality | LPIPS | 单帧 perceptual distortion,越低越好 |
| Visual Quality | Motion Smoothness | 用 flow acceleration 惩罚突变运动,越高越平滑 |
4.4 Training config
论文正文 Setup 写 backbone 与 30 个 SCOPE modules end-to-end training,分辨率 ,81 frames/clip,20 fps,Adam,learning rate ,action dropout ,balanced game sampling,约 18 小时、8 NVIDIA GPUs。Appendix Implementation Details 进一步写:Wan2.2-TI2V-5B 有 30 transformer layers、hidden dimension 3072、24 heads、patch size 、FFN dimension 14336;text encoder 是 UMT5-XXL 4096-d embeddings;VAE 8× spatial compression、4× temporal compression;训练使用 AdamW、LR 、bfloat16、gradient checkpointing、batch size 1/GPU、8 NVIDIA GPUs、500 epochs、Accelerate DDP。
released GitHub repo 当前没有 SCOPE-specific training launch script 或 experiment config;diffsynth/diffusion/runner.py 是 generic training runner,inference.py 只提供 inference-time DIT_CONFIG。因此上面 training config 是论文/Appendix 报告值,而非从公开代码 launch config 验证出的值;公开代码可验证的是 inference config:height=480、width=832、max_frames=81、num_inference_steps=30、ACTION_CONFIG 的 4D joystick + 6D buttons、VAE temporal compression ratio 4、window size 4。
5. Experimental Results(实验结果)
5.1 Main CrossFPS results
| Method | JEPA ↑ | FVD ↓ | LPIPS ↓ | Dyn.Deg. ↑ | Flow ↑ | Smooth ↑ | Photo. ↓ | Depth ↓ |
|---|---|---|---|---|---|---|---|---|
| Matrix-Game 3.0 | 0.366 | 1022.7 | 0.692 | 0.661 | 13.36 | 2.502 | 1.194 | 1.524 |
| LingBot-World (Act) | 0.615 | 954.4 | 0.627 | 0.868 | 15.50 | 2.215 | 0.626 | 1.454 |
| HY-World 1.5 | 0.464 | 1131.7 | 0.611 | 0.225 | 2.37 | 1.690 | 2.523 | 1.502 |
| SCOPE | 0.806 | 690.3 | 0.601 | 0.910 | 18.24 | 2.383 | 0.198 | 1.299 |
SCOPE 在 8 个指标中的 7 个最好;唯一不是第一的是 Motion Smoothness,Matrix-Game 3.0 更高,但论文解释这是因为 baseline 抑制动作响应会自然得到更平滑的视频。更关键的 controllability 指标中,SCOPE 的 Dynamic Degree = 0.910、Flow = 18.24,明显高于 LingBot-World 的 0.868 / 15.50、Matrix-Game 的 0.661 / 13.36 和 HY-World 的 0.225 / 2.37。空间稳定性上,SCOPE 的 Photometric Smoothness = 0.198,是 LingBot-World 0.626 的约 改善,也是 HY-World 2.523 的约 改善。
Figure 6 解读:qualitative comparison 对同一高频 action 序列进行比较。SCOPE 能产生 smooth viewpoint changes 并保持 out-of-scope stability;baselines 则表现为 motion suppression、near-static output 或 artifacts。这个图对应主表里的现象:只追求 smoothness 很容易,但在 FPS 中更重要的是动作真的发生且不会污染整帧。
5.2 Architecture ablation
| Variant | JEPA ↑ | FVD ↓ | LPIPS ↓ | Dyn.Deg. ↑ | Flow ↑ | Smooth ↑ | Photo. ↓ | Depth ↓ |
|---|---|---|---|---|---|---|---|---|
| SCOPE | 0.806 | 690.3 | 0.601 | 0.910 | 18.24 | 2.383 | 0.198 | 1.299 |
| w/o Spatial Selectivity | 0.625 | 885.4 | 0.648 | 0.521 | 14.10 | 2.012 | 0.745 | 1.620 |
| w/o Temporal Self-Attn | 0.683 | 784.4 | 0.627 | 0.642 | 11.60 | 1.799 | 0.482 | 1.521 |
| w/o Discrete Cross-Attn | 0.763 | 725.3 | 0.606 | 0.846 | 17.14 | 2.442 | 0.234 | 1.334 |
| w/o Action-CFG | 0.740 | 725.8 | 0.610 | 0.820 | 15.90 | 2.405 | 0.280 | 1.350 |
| Frozen backbone | 0.724 | 775.4 | 0.631 | 0.796 | 15.57 | 2.335 | 0.264 | 1.392 |
| Two-stage (FT→freeze) | 0.761 | 732.1 | 0.614 | 0.852 | 17.13 | 2.374 | 0.226 | 1.337 |
最重要的 ablation 是 spatial selectivity:去掉后 FVD 从 690.3 变 885.4,Photometric Smoothness 从 0.198 变 0.745,Dynamic Degree 从 0.910 掉到 0.521。这证明 native telemetry 本身不是关键,关键是 per-pixel action routing。去掉 temporal self-attention 后 Flow 从 18.24 掉到 11.60,说明连续 joystick 控制需要专门的时间建模。去掉 discrete cross-attention 时指标下降较小但 Photo. 仍从 0.198 变 0.234,符合“局部离散事件更容易泄漏到背景”的解释。训练策略上,Frozen backbone (FVD 775.4) < Two-stage (732.1) < End-to-end (690.3),说明只训练 adapter 不够,backbone co-adaptation 对动作响应有帮助。
Figure 7 解读:左侧展示没有 spatial selectivity 时动作会扰动整帧;完整 SCOPE 则把影响限制在 scope 区域。右侧展示不同 pathway 缺失造成的失效:缺 continuous/temporal pathway 会损害运动,缺 discrete/cross-attention pathway 会丢失或泄漏 in-scope 元素。这个 qualitative ablation 与表格中的 Photo./Flow 变化一致。
5.3 Data scale / diversity ablation
| Scale | Titles | Series | Source Composition | FVD ↓ | LPIPS ↓ | Flow ↑ |
|---|---|---|---|---|---|---|
| 1K | 1 | 1 | Halo Infinite | 478.20 | 0.545 | 17.64 |
| 5K | 2 | 1 | Halo Infinite + Halo MCC | 603.91 | 0.592 | 16.67 |
| 10K | 3 | 2 | Halo ×2 + CoD:MW | 1017.82 | 0.745 | 11.69 |
| 30K | 6 | 3 | Halo ×2 + CoD ×3 + Xonotic | 799.70 | 0.666 | 16.84 |
| 65K | 7 | 3 | Full CrossFPS | 690.30 | 0.601 | 18.24 |
这个表不能简单解读为“更多数据一定单调改善所有数值”:1K Halo-only 的 FVD/LPIPS 看起来很好,是因为视觉域窄、测试更容易;当加入更多 series 后任务变难,10K 出现退化。但 full CrossFPS 在 7 titles / 3 series 下恢复到 FVD 690.30、Flow 18.24,说明多样性最终提升跨游戏 action mapping,并且论文认为尚未饱和。
Training strategy 表也支持 single-stage full-resolution:65K full 上 progressive 是 FVD 756.28 / LPIPS 0.652 / Flow 17.12,single-stage 是 690.30 / 0.601 / 18.24。
5.4 Zero-shot generalization
作者用 GPT-image-2 合成 unseen first-person frames,覆盖 stylized open-world、cooperative adventure、mythological action、sci-fi corridor。视觉质量结果如下:
| Scene Style | JEPA ↑ | LPIPS ↓ | Flow ↑ | Photo. ↓ | Smooth ↑ |
|---|---|---|---|---|---|
| Stylized open-world | 0.772 | 0.618 | 17.45 | 0.235 | 2.341 |
| Cooperative adventure | 0.758 | 0.632 | 16.89 | 0.251 | 2.298 |
| Mythological action | 0.781 | 0.612 | 17.82 | 0.224 | 2.356 |
| Sci-fi corridor | 0.795 | 0.605 | 18.01 | 0.212 | 2.370 |
| Average (unseen) | 0.777 | 0.617 | 17.54 | 0.231 | 2.341 |
| In-distribution (ref.) | 0.806 | 0.601 | 18.24 | 0.198 | 2.383 |
unseen average 相比 in-distribution 有小幅下降:JEPA 0.777 vs 0.806,Photo. 0.231 vs 0.198;但四类 unseen style 的 Photo. 都 ,说明 scope separation 能迁移到训练外的 aesthetic domain。
Action controllability 使用 50 videos/task,并由 Gemini pre-evaluation + human verification 评估 completion rate:
| Method | Fire | Scope | Scope+Fire | Move+Fire | Switch+Fire | Object | Environment | NPC | Avg. |
|---|---|---|---|---|---|---|---|---|---|
| Matrix-Game 3.0 | 0% | 0% | 0% | 4% | 0% | 0% | 0% | 0% | 0.5% |
| HY-World 1.5 | 4% | 12% | 2% | 36% | 2% | 0% | 6% | 2% | 8.0% |
| LingBot-World (Act) | 82% | 74% | 42% | 18% | 26% | 12% | 32% | 20% | 38.3% |
| SCOPE | 94% | 90% | 82% | 76% | 68% | 46% | 62% | 54% | 71.5% |
Figure 8 解读:action controllability 图展示 single action、multi-action composition 和 action-environment interaction。SCOPE 对 Fire / Scope 这类基础离散动作达到 94% / 90%,对 Scope+Fire、Move+Fire、Switch+Fire 这类复合动作仍有 82% / 76% / 68%,说明它不只是生成“像 FPS 的视频”,而是在 unseen visual domain 上保持 action semantics。
5.5 Limitations
作者明确承认,SCOPE 当前泛化主要覆盖 cross-scene visual transfer 和 basic action interactions;更复杂的 in-scope behaviors,例如 multi-step weapon mechanics、item usage、fine-grained object manipulation 仍然困难,原因是训练数据交互多样性有限。模型对 fire / smoke / lighting 这类 appearance-level responses 更好,对 structural deformation、physics-driven reactions 这类 geometry transformation 更弱,反映了 diffusion backbone 的 texture bias。极端模糊或退化的 initial frame 也会导致模型回归到平均训练外观。
总体结论:SCOPE 的贡献不是单纯提升 FVD,而是证明“per-pixel action conditioning + CrossFPS multi-game data”可以同时改善动作响应、局部稳定和 zero-shot transfer。主表、ablation 和 unseen controllability 都指向同一结论:FPS world model 需要把连续控制和离散局部事件分开建模,global action injection 是核心瓶颈。