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,论文把它分成两类:

GroupInputTypeMeaning
MovementLX, LYcontinuous左右 / 前后移动
CameraRX, RYcontinuous左右转向 / 上下看
CombatRT, LT, R3discrete开火、ADS、近战
UtilityA, X, Ydiscrete跳跃、换弹、切枪

在 released code 中,这对应 inference.pyBUTTON_COLS = [right_trigger, left_trigger, south, right_thumb, west, north]j_left + j_right 四维 joystick;ACTION_CONFIG 设置 mouse_dim_in=4keyboard_dim_in=6dim=3072num_heads=24vae_time_compression_ratio=4windows_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_actionActionModulemouse_attn.okeyboard_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@d2ecdf66scope_pipeline.py 中 CFG 是常规 prompt positive/negative CFG:noise_pred = noise_pred_nega + cfg_scale * (noise_pred_posi - noise_pred_nega)mouse_actionkeyboard_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, mouse
import 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 ConceptSource FileKey Class/Function
10-DoF action loadinginference.pyBUTTON_COLS, ACTION_CONFIG, load_actions()
image + action inference entryinference.pygenerate_video(), parse_args()
per-block SCOPE conditioningdiffsynth/models/scope_dit.pyActionModule.forward()
DiT block insertion pointdiffsynth/models/scope_dit.pyDiTBlock.forward() calls self.action_attn(...) after text cross-attention and before FFN
Wan2.2 DiT config with action enableddiffsynth/models/scope_dit.py, inference.pyWanModel, DIT_CONFIG
denoising loop and CFGdiffsynth/pipelines/scope_pipeline.pyWanVideoPipeline.__call__(), model_fn_wan_video()
generic training utility, not SCOPE launchdiffsynth/diffusion/runner.pytrain() 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。

GameTotalTrainValTest
Halo Infinite32,46630,844973649
Xonotic10,4609,938313209
Call of Duty: Modern Warfare8,8538,411265177
Halo8,2277,817246164
Call of Duty: Warzone4,8184,57814496
Call of Duty: Modern Warfare III3,6623,48010973
Call of Duty5144891510
Total69,00065,5572,0651,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

AxisMetricMeaning
Action ResponsivenessDynamic Degree衡量整体运动强度与视频 activity
Action ResponsivenessFlow Score衡量帧间 optical flow displacement
Spatial StabilityPhotometric Smoothness用 backward warping 评估像素颜色一致性,越低越好
Spatial StabilityDepth Accuracy用 depth reprojection 评估 3D geometry consistency,越低越好
Visual QualityJEPA Similarity用 V-JEPA feature cosine similarity 衡量语义/物理结构保真度
Visual QualityFVD生成视频分布与真实视频分布的 Fréchet distance,越低越好
Visual QualityLPIPS单帧 perceptual distortion,越低越好
Visual QualityMotion 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=480width=832max_frames=81num_inference_steps=30ACTION_CONFIG 的 4D joystick + 6D buttons、VAE temporal compression ratio 4、window size 4。

5. Experimental Results(实验结果)

5.1 Main CrossFPS results

MethodJEPA ↑FVD ↓LPIPS ↓Dyn.Deg. ↑Flow ↑Smooth ↑Photo. ↓Depth ↓
Matrix-Game 3.00.3661022.70.6920.66113.362.5021.1941.524
LingBot-World (Act)0.615954.40.6270.86815.502.2150.6261.454
HY-World 1.50.4641131.70.6110.2252.371.6902.5231.502
SCOPE0.806690.30.6010.91018.242.3830.1981.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

VariantJEPA ↑FVD ↓LPIPS ↓Dyn.Deg. ↑Flow ↑Smooth ↑Photo. ↓Depth ↓
SCOPE0.806690.30.6010.91018.242.3830.1981.299
w/o Spatial Selectivity0.625885.40.6480.52114.102.0120.7451.620
w/o Temporal Self-Attn0.683784.40.6270.64211.601.7990.4821.521
w/o Discrete Cross-Attn0.763725.30.6060.84617.142.4420.2341.334
w/o Action-CFG0.740725.80.6100.82015.902.4050.2801.350
Frozen backbone0.724775.40.6310.79615.572.3350.2641.392
Two-stage (FT→freeze)0.761732.10.6140.85217.132.3740.2261.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

ScaleTitlesSeriesSource CompositionFVD ↓LPIPS ↓Flow ↑
1K11Halo Infinite478.200.54517.64
5K21Halo Infinite + Halo MCC603.910.59216.67
10K32Halo ×2 + CoD:MW1017.820.74511.69
30K63Halo ×2 + CoD ×3 + Xonotic799.700.66616.84
65K73Full CrossFPS690.300.60118.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 StyleJEPA ↑LPIPS ↓Flow ↑Photo. ↓Smooth ↑
Stylized open-world0.7720.61817.450.2352.341
Cooperative adventure0.7580.63216.890.2512.298
Mythological action0.7810.61217.820.2242.356
Sci-fi corridor0.7950.60518.010.2122.370
Average (unseen)0.7770.61717.540.2312.341
In-distribution (ref.)0.8060.60118.240.1982.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:

MethodFireScopeScope+FireMove+FireSwitch+FireObjectEnvironmentNPCAvg.
Matrix-Game 3.00%0%0%4%0%0%0%0%0.5%
HY-World 1.54%12%2%36%2%0%6%2%8.0%
LingBot-World (Act)82%74%42%18%26%12%32%20%38.3%
SCOPE94%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 是核心瓶颈。