GameplayQA: A Benchmarking Framework for Decision-Dense POV-Synced Multi-Video Understanding of 3D Virtual Agents
Paper: arXiv:2603.24329 Code: wangyz1999/sync-video-label; HATS-ICT/GameplayQA Code reference:
sync-video-label/main@b0516572(2026-05-22);GameplayQA/main@65384856(2026-05-22)
1. Motivation (研究动机)
现有 video understanding / embodied QA benchmark 对“能不能把一个 MLLM 当作 agent 的视觉-时序感知模块”诊断得不够细。论文指出的核心缺口不是普通视频问答准确率,而是 agentic-centric perception:模型需要在第一人称 3D 环境里持续跟踪自身动作/状态、其他 agent 的动作/状态,以及世界物体/事件,并在快速决策循环里把这些信息对齐到正确实体和时间窗口。传统数据集多是慢节奏、被动观察式视频;即使是 egocentric benchmark,也较少同时覆盖高频状态转移、其他 agent 归因、同步多 POV 对齐和可诊断 distractor。
这篇论文要解决的具体问题是:构建一个能够系统评测 MLLM 在 decision-dense、POV-synced、multi-video 场景中是否真正理解 3D virtual agents 行为的 benchmark framework,而不是只发布一批静态题。GameplayQA 以多人 3D gameplay 作为“cognitive sandbox”:游戏状态变化快、行为后果可观察、多个玩家/敌人/NPC 并发行动,因此很适合暴露 temporal grounding、role attribution、cross-video synchronization 这些 agent 感知瓶颈。
问题值得研究的原因在于:如果 MLLM 未来要服务 robotics、computer use、virtual agents 或 world model,它不能只描述画面里有什么,还要知道“谁在什么时候做了什么、另一个视角里对应发生了什么、哪个事件没有发生、某个动作可能意图是什么”。GameplayQA 的结果显示,即使 frontier MLLM 也与 human 有明显差距:human overall accuracy 为 80.5%,最佳模型 Gemini 2.5 Pro 为 71.3%,并且错误集中在 temporal / cross-video / other-agent reasoning 上。
2. Idea (核心思想)
核心洞察是:要评测 agentic perception,benchmark 的基本单位不应只是 video clip 或单句 caption,而应是 时间轴上的 Self–Other–World 多轨标签;这些标签可以被组合成从单点感知到跨视角推理的 QA,并且 distractor 类型本身就是诊断模型 hallucination 的工具。
GameplayQA 的关键创新有三点:第一,用 Self / Other / World × Action / State / Object / Event 建立六类 primitive label;第二,在单视频和多视频同步时间轴上密集标注这些 label,得到 labels/s 的高决策密度;第三,用 deterministic template + quality assurance 生成 2,365 个 gold QA,并把错误选项分成 lexical、scene、temporal、role、cross-video 等类型,从而知道模型到底是语义混淆、时间错位、角色归因错误还是跨视频对齐失败。
与 MVBench / LongVideoBench 这类通用视频理解 benchmark 相比,GameplayQA 的差别在于它把“agent 视角下的行为归因和并发事件对齐”作为主轴;与 MarioQA / VideoGameQA-Bench 等游戏相关 benchmark 相比,它不只问单游戏事件或 glitch,而是系统覆盖 single-reference、temporal、cross-video 三层认知难度,并要求多 POV 时间同步。
3. Method (方法)
3.1 Overall framework:从同步 gameplay 到可诊断 QA
Figure 2 解读:整体流程把 raw gameplay video 转换成 benchmark。第一步是在 6 类实体轨道上做 dense temporal captioning;第二步同时维护 negative labels / distractors,使后续选择题可以诊断 hallucination;第三步把 verified labels 组合成 template-based QA;最后在模型评测阶段保留每道题的 question code、entity type、distractor type、video 数量和时间窗口,方便按认知层级拆解错误。
直觉上,GameplayQA 把“看视频答题”拆成了 agent 感知所需的中间状态:谁是 Self、谁是 Other、世界里有什么 Object/Event、这些状态在何时发生、不同 POV 是否指向同一时刻。这样做比直接人工写问答更可控:一方面 label 可以复用生成大量组合题,另一方面每个 distractor 都有来源,因此错误不是只记为 wrong,而是能归因到 temporal、role、cross-video 等失败模式。
3.2 Question taxonomy:六类 primitive label 与三层认知难度
Figure 1 解读:taxonomy 的横轴是 Entity:Self 表示 POV player,Other 表示 teammate / enemy / NPC 等外部 agent,World 表示共享环境;纵轴是 temporal nature:agent 有 Action / State,world 有 Object / Event。两轴组合得到 SA、SS、OA、OS、WO、WE 六类 primitive label,再组合成 15 个 question categories,按 L1 单点感知、L2 单视频时序推理、L3 跨视频理解递进。
六类 label 的含义如下:SA 记录 POV player 的动作,如 shooting / jumping / reloading;SS 记录 POV player 状态,如 health、ammo、equipped weapon;OA / OS 对应其他 agent 的动作和状态;WO 是 supply crates、vehicles 等静态或交互物体;WE 是 explosion、notification 等动态世界事件。这个 Self–Other–World 分解与 multi-agent RL / agent-based modeling 的状态建模相似:智能体既要跟踪自身,也要建模其他主体,还要把行为放进环境动态中理解。

Figure 5 解读:这张图用 gameplay 场景展示 Self、Other、World 的边界。Self 不是画面里所有可见对象,而是当前 POV 的 player 状态/动作;Other 是场景中的 teammate、enemy、NPC 等可行动实体;World 是非 agent 的物体与事件。这个分解让题目可以区分“玩家自己在 reload”“敌人在 move”“环境里发生 explosion”,从而把 role attribution 变成可测量变量。
15 个任务类别的规模和平均视频长度如下,体现了由 perception 到 temporal / cross-video reasoning 的难度递进:
| Level | Task | Q | Avg dur. |
|---|---|---|---|
| L1 Single Reference | Action Recognition | 162 | 10.0s |
| L1 Single Reference | State Recognition | 147 | 10.1s |
| L1 Single Reference | Object Recognition | 70 | 9.3s |
| L1 Single Reference | Event Recognition | 61 | 8.4s |
| L1 Single Reference | Static Object Count | 29 | 21.3s |
| L2 Temporal | Cross-Entity Referring | 423 | 23.0s |
| L2 Temporal | Timestamp Referring | 81 | 24.3s |
| L2 Temporal | Time Localization | 281 | 28.4s |
| L2 Temporal | Absence Recognition | 195 | 38.9s |
| L2 Temporal | Occurrence Count | 75 | 26.4s |
| L2 Temporal | Ordering | 180 | 32.6s |
| L2 Temporal | Intent Identification | 148 | 23.0s |
| L3 Cross-Video | Sync-Referring | 207 | 94.7s |
| L3 Cross-Video | Cross-Video Ordering | 117 | 110.0s |
| L3 Cross-Video | POV Identification | 189 | 91.6s |
3.3 Multi-video timeline captioning:密集多轨时间线标注
论文把 SA、SS、OA、OS、WO、WE 当成 6 条独立 annotation tracks。一个时间段内可以同时出现多个标签,例如玩家开火(SA)时血量变化(SS),同时场景里发生爆炸(WE);多 POV 视频还需要手工同步时间轴,让 Video 1 的某个事件可以与 Video 2 / Video 3 的同一时刻对齐。决策密度定义为: GameplayQA 在 2,219.41 秒 footage 上标注了 2,709 个 true labels,因此 labels/second。这个密度很高,意味着几乎每秒都有新的动作、状态或事件要被 agent 感知;这也是该 benchmark 比慢节奏视频更难的根本原因。

Figure 7 解读:single-video annotation interface 把一段视频与多条时间线放在一起,annotator 可以逐类检查 action、state、event、entity 和 distractor。对单视频任务来说,关键是把标签精确绑定到 ,否则 Timestamp Referring、Time Localization、Absence Recognition 这类题会因边界误差传播出错误问题。

Figure 8 解读:multi-video interface 同时显示多个同步 POV,并在统一时间轴上标出事件。图中同一爆炸事件被多个视频捕获,这正是 L3 Sync-Referring / Cross-Video Ordering / POV Identification 所需的监督信号:模型必须把“不同视角的同一时刻”连接起来,而不是分别理解每个 clip。
标注采用 human-in-the-loop 两阶段流程。第一阶段 Gemini-3-Pro 生成 3,632 个候选 labels 和 1,678 个 distractors,4 名研究生 annotators 逐项验证;其中 31.1% 预测 labels 被删除,42.7% 被编辑,26.2% 直接接受,另有 7.6% 最终 labels 完全由人工新增。被编辑的 labels 中,61.9% 需要修正 caption 文本,42.2% 需要调整时间边界。第二阶段再由独立 annotator 复查全部 labels,并进一步调整约 12%。
3.4 Combinatorial QA generation:五维组合生成与 distractor 诊断
QA 生成不是自由写题,而是把 verified labels 放进模板。五个正交维度是:number of videos、context target、entity type、distractor type、question form。算法选一个 ground-truth label 作为正确答案,再从相应 distractor pool 填充错误选项;错误选项类型被保留,用于后续 error analysis。
Figure 3 解读:示例题展示了不同认知层级:L1 如 SA-IDENT / WO-IDENT 只要求识别单视频里的动作或物体;L2 如 TR2OA-EXIST、SA-ABSENT、MIX-ORDER 要把答案绑定到时间窗口或事件顺序;L3 如 SA-POV-ID、V4-SA2V1SA-IDENT、SA-ORDER-MV 要跨多个同步 POV 对齐事件。
生成器最初产生 399,214 个 candidate QA pairs。由于 Sync-Referring、Cross-Entity Referring、Timestamp Referring、Ordering 等组合型题目会主导长尾分布,作者先 downsample 到 4K 以平衡类别覆盖,再经过 quality assurance 得到 2,365 个 gold-standard QA pairs。
Distractor taxonomy 是该 benchmark 的诊断核心:lexical distractor 改写正确答案的主体、反义词或属性;scene distractor 是视频中没有发生但视觉上合理的事件;temporal distractor 是发生过但不在被问时间窗口的事件;role distractor 把 Other 的动作归给 POV player 或反过来;cross-video distractor 则来自其他同步视频。这样模型错选时,可以知道它是只看静态语义、时间对齐失败、角色混淆,还是把另一个 POV 的事件拿来回答。
3.5 Quality assurance:过滤语言先验与人工验证
为了避免模板题被语言先验破解,作者用 Gemini-3-Flash 做 blind filtering:每道题只给 question text,不给 video,运行 trials;如果模型仅凭文本稳定答对,就说明题目可能有统计偏置,会被移除。这个步骤保证留下的问题需要 genuine visual grounding。
人工验证方面,作者均匀抽取 120 个覆盖所有 question types 的问题,检查两个标准:视频中是否只有一个正确选项,以及 question code 的语义是否被满足。存在分歧时开会讨论,仍无法一致则 majority voting。这个过程中 8% questions 被标记为 faulty,常见原因是多个选项过于相似或 temporal boundary 不对齐。
3.6 Released code 对应的 benchmark pipeline
Code reference:
sync-video-label/main@b0516572(2026-05-22);GameplayQA/main@65384856(2026-05-22) — pseudocode and mapping based on these commits
公开代码分成两部分:wangyz1999/sync-video-label 是论文标注与问题生成工具,HATS-ICT/GameplayQA 是 benchmark 运行、视频预处理、model provider、judge 和 evaluation 代码。下面的 pseudocode 用 Python 风格表达 released code 的核心逻辑,但不声称代码本身使用 PyTorch;该论文是 benchmark framework,不训练新模型。
def generate_questions(labels, scene_distractors, video_duration, video_count, custom_questions=None):
questions = []
labels_by_type = group_labels_by_type(labels)
# Level 1: single-reference perception / existence / absence / count / intent / time.
questions += generate_ident_questions(labels_by_type, labels, scene_distractors, video_duration)
questions += generate_exist_questions(labels_by_type, labels, scene_distractors, video_duration)
questions += generate_absent_questions(labels_by_type, scene_distractors, video_duration)
questions += generate_count_questions(labels_by_type, video_duration)
questions += generate_intent_questions(labels_by_type, video_duration)
questions += generate_time_questions(labels_by_type, labels, video_duration)
# Level 2: entity/time reference and single-video ordering.
questions += generate_cross_entity_reference_questions(labels, scene_distractors, video_duration)
questions += generate_timeline_reference_questions(labels, scene_distractors, video_duration)
questions += generate_order_questions(labels, video_duration)
# Level 3: only valid when synchronized POV count >= 2.
if video_count >= 2:
questions += generate_level3_questions(labels, scene_distractors, video_duration, video_count)
questions += normalize_custom_questions(custom_questions or [])
return questionsdef extract_frames(video_path, max_frames=32, fps_for_short_videos=1.0, threshold=32.0, max_size=720):
duration, original_fps, width, height = get_video_info(video_path)
if duration < threshold:
total_frames = min(int(duration * fps_for_short_videos), max_frames)
else:
total_frames = max_frames
total_frames = max(1, min(total_frames, max_frames))
times = [i * duration / total_frames for i in range(total_frames)]
new_width, new_height = resize_longer_side(width, height, max_size)
frames = []
for t in times:
frame = seek_and_read_frame(video_path, t)
frame = resize(frame, (new_width, new_height))
frames.append(jpeg_encode(frame))
return {"frames": frames, "duration": duration, "sample_fps": total_frames / duration, "size": (new_width, new_height)}def run_benchmark(csv_rows, model_config, video_dir, output_path, workers=5, judge=True):
processor = get_processor(model_config)
existing_ids = load_existing_ids(output_path)
for row in parallel(csv_rows, workers=workers):
if row["question_id"] in existing_ids:
continue
mc = format_multiple_choice_from_row(row)
video_paths, video_indices = cropped_video_paths(row, video_dir)
prompt = build_answer_prompt(mc.formatted_text, num_videos=len(video_paths))
response = processor.process(video_paths, prompt, video_indices=video_indices)
append_jsonl(output_path, {
"question_id": row["question_id"],
"question_text": mc.formatted_text,
"model_output": response["response"],
"frames_used": response.get("frames_used"),
"videos_used": response.get("videos_used"),
})
if judge:
run_judge(output_path, judged_output_path(output_path), judge_model="gpt-5-mini")def judge_and_evaluate(raw_results, metadata_csv, judge_model="gpt-5-mini"):
judged = []
for result in raw_results:
selected = llm_extract_selected_option(
judge_model,
question=result["question_text"],
model_response=result["model_output"],
)
judged.append({
**result,
"selected_option": selected,
"is_correct": selected == result["correct_option"],
"selected_distractor_type": lookup_distractor_type(selected, result),
})
metadata = load_metadata(metadata_csv)
return {
"overall": accuracy(judged),
"by_level": summarize_group(judged, metadata, field="question_level"),
"by_question_type": summarize_group(judged, metadata, field="question_type"),
"by_entity": summarize_group(judged, metadata, field="entity"),
}| Paper Concept | Source File | Key Class/Function |
|---|---|---|
| Annotation UI and synced timeline labeling | sync-video-label/app/api/annotation/route.ts, app/utils/timeline.ts | API routes and timeline utilities for saved annotations/autosave |
| Label prediction schema for SA/SS/OA/OS/WO/WE and distractors | sync-video-label/app/api/predict/schemas.ts, app/api/predict/prompts.ts | structured output schemas and prompting for candidate labels/distractors |
| Template-based L1/L2/L3 question generation | sync-video-label/app/utils/questionGenerator/index.ts, level1.ts, level2.ts, level3.ts, templates.ts | generateQuestions, generateLevel1Questions, generateLevel3Questions; Level 3 cap: 1000 questions, cross-video ref cap: 800 |
| Dataset split and video path resolution | GameplayQA/gameplayqa/data.py | read_csv_rows, cropped_video_paths, source_video_paths |
| Video cropping and frame extraction | GameplayQA/gameplayqa/video.py | crop_segment, crop_questions, FrameExtractionConfig, extract_frames |
| Model/provider registry | GameplayQA/gameplayqa/models.py, providers.py | MODEL_CONFIGS, ModelConfig.get_max_frames, get_processor, GoogleProcessor, OpenAIFrameProcessor, OpenRouterProcessor |
| Benchmark execution | GameplayQA/gameplayqa/benchmark.py, run_benchmark.py | process_question, run_benchmark; default workers in README: 5 |
| LLM-as-a-judge answer extraction | GameplayQA/gameplayqa/judge.py, llm_as_a_judge.py | extract_selected_option, judge_one, run_judge; default judge model gpt-5-mini |
| Accuracy summaries and plots | GameplayQA/gameplayqa/evaluate.py, evaluate_results.py, plot_results.py | evaluate_files, summarize_group, plot_results |
| Ablation with degraded visual input | GameplayQA/gameplayqa/ablation.py, ablation_benchmark.py | FrameAblationProcessor, run_ablation |
论文公式与 released code 实现差异:论文 Appendix B 写到 Seed 1.6 / Seed 1.6 Flash 因 raw video API 不稳定而改用 32-frame sampling;但 GameplayQA/gameplayqa/models.py 在 main@65384856 中把 seed-1.6 和 seed-1.6-flash 都设为 InputType.VISION_FRAMES 且 max_frames=24。因此复现实验时应以 released code 的 per-model override 为准,而不是只读论文中“默认 32 frames”的描述。另一个实现细节是 Qwen3 VL 30B / 235B 在代码中 max_frames=30,与论文中 provider 限制导致 30-frame cap 的说明一致。
4. Experimental Setup (实验设置)
4.1 Dataset and scale
GameplayQA 收集 9 个商业游戏的 3D gameplay footage。Single-POV games 包括 Minecraft、Apex Legends、No Man’s Sky、Elden Ring、Cyberpunk 2077、Valheim;Multi-POV synchronized games 包括 Counter-Strike 2、Battlefield 6、Arc Raiders。多 POV 数据来自已有数据集或一起组队游玩的 Twitch streamers,并通过人工对齐形成同步视频集合。
最终 benchmark 规模:2,365 个 gold-standard QA pairs;2,709 个 true labels;1,586 个 distractor labels;2,219.41 秒 annotated footage;decision density labels/s。问题层级分布为 L1 469 题、L2 1,383 题、L3 513 题。标注 label 分布为 SA 658 (24.3%)、SS 729 (26.9%)、OA 160 (5.9%)、OS 190 (7.0%)、WE 417 (15.4%)、WO 555 (20.5%)。
Figure 6 解读:dataset statistics 汇总了问题开头词分布、question code / task type 分布,以及按 entity type 的词云。它说明 GameplayQA 不是单一问法的数据集,而是通过 taxonomy 和 template family 覆盖多种 question forms;同时 self-centric labels 占比较高,符合第一人称 gameplay 的观察偏置。
4.2 Baselines and models
论文评测 16 个 MLLMs,包含 proprietary 与 open-source 两组。Proprietary models:GPT-5、GPT-5 Mini、GPT-5 Nano、Gemini 2.5 Pro、Gemini 3 Flash、Gemini 2.5 Flash、Claude 4.5 Sonnet、Claude 4.5 Haiku、Seed 1.6、Seed 1.6 Flash。Open-source models:Qwen3 VL 235B、Qwen3 VL 30B、Qwen3 VL 8B、Gemma 3 27B、Gemma 3 12B、Gemma 3 4B。Human performance 作为上界对照。
Evaluation setup 是 zero-shot multiple-choice accuracy。Video-native models(论文中 Gemini;Seed 在实际实现中因稳定性走 frame path)输入完整视频;frame-based models 以 1 FPS 抽帧,默认最多 32 frames,视频超过 32 秒时 uniform sample 32 frames;所有视频长边 resize 到 720p,保持 aspect ratio。模型被要求直接输出选项字母,但若输出解释句,使用 GPT-5-mini 作为 LLM judge 抽取 selected option。
4.3 Metrics and ablations
主指标是 accuracy,按 overall、L1/L2/L3、15 个 task categories、6 个 entity types、distractor types、game、video length、number of videos 拆解。非显然指标包括:decision density ,表示每秒 semantic labels 数;selected_distractor_type,用于统计模型错选的是 lexical、scene、temporal、role 还是 cross-video distractor。
Ablation 使用 GPT-5-mini,在三种 degraded visual input 下评测:No Video 只给 question text;Random Frame 用一个随机帧替代完整视频;Shuffled Frames 保留帧但打乱时间顺序。Cross-domain generalization 把同一 pipeline 迁移到 Nexar dashcam collision videos 与 Ego-Humans 多人协作装 Lego 视频,共 4 个视频、约 113 秒、5,463 个 initial questions,QA 后得到 213 题,label density labels/s。
4.4 Training / inference configuration from code
这篇论文不训练新模型,因此没有训练 steps、optimizer、GPU type/count 或 batch size;论文未详细说明硬件。可复现配置主要是 inference / preprocessing:GameplayQA/gameplayqa/video.py 的 FrameExtractionConfig 默认 max_frames=32、max_size=720、fps_for_short_videos=1.0、short_video_threshold=32.0;GameplayQA/gameplayqa/models.py 对 Qwen3 VL 235B/30B 设置 max_frames=30,Seed 1.6/Flash 设置 max_frames=24,InternVL3 78B(代码中存在但论文主表未列)设置 max_frames=4;README 的标准工作流使用 uv run process_data.py --split qa、uv run run_benchmark.py --split qa --model gpt-5-mini --judge,benchmark workers 与 judge workers 默认都是 5。
5. Experimental Results (实验结果)
5.1 Main benchmark performance
主表显示模型仍明显落后 human。Overall accuracy 排名前几:Human 80.5;Gemini 2.5 Pro 71.3;Gemini 3 Flash 68.2;GPT-5 67.0;Qwen3 VL 235B 63.8;Gemini 2.5 Flash 63.7;GPT-5 Mini 62.7;Seed 1.6 61.8;Qwen3 VL 30B 60.8;Qwen3 VL 8B 57.8。低端模型包括 Claude 4.5 Haiku 41.8、Gemma 3 12B 43.7、Gemma 3 4B 42.9。
按认知层级聚合,所有模型平均从 L1 Single-Reference 61.2% 降到 L2 Temporal 56.0%,再降到 L3 Cross-Video 49.4%。这说明 taxonomy 确实把难度分层了:单点视觉识别相对容易,单视频时序推理更难,多视角同步理解最难。最困难的具体任务是 Occurrence Count,所有模型平均只有 36.5%;Cross-Video Ordering 平均 38.8%,是 L3 中最低,说明跨 POV 排序事件依旧是瓶颈。
| Model | All | Notable strengths / weaknesses |
|---|---|---|
| Human | 80.5 | L3 POV-ID 100.0,仍在 OccCnt 62.5 / SyncRef 88.9 上显著高于模型 |
| Gemini 2.5 Pro | 71.3 | Overall 最佳;POV-ID 85.7,SyncRef 81.0 |
| Gemini 3 Flash | 68.2 | Overall 第二;TimeLoc 64.4,Intent 62.8 |
| GPT-5 | 67.0 | Order 78.3,OccCnt 62.7;但 static object count 48.3 |
| Qwen3 VL 235B | 63.8 | Open-source 最佳;ObjRec / EvtRec 均 70.0+,但 X-VOrd 31.6 |
| GPT-5 Mini | 62.7 | Ablation target;baseline L1/L2/L3 为 67.2 / 61.9 / 60.6 |
5.2 Error source analysis
Figure 4 解读:左上角按 distractor type 显示,cross-video distractor error rate 最高(39.7%),temporal 次之(35.0%),lexical 14.0%、role 12.2%、scene 6.5%。这说明模型不是主要被静态视觉场景骗倒,而是更容易在“另一个视角发生的事件”和“发生过但时间不对的事件”上混淆。右上角显示快节奏射击/对抗类游戏最难:Counter-Strike 2 49.7%、Battlefield 6 47.1%、Apex Legends 44.7%。下方两个子图说明视频越长、同步视频越多,错误率通常越高,5 videos 达到 62.3%。
按 entity category 看,World-Object 是最容易类别,aggregate accuracy 62.0%;Other-Agent 相关更难,OA 为 54.0%、OS 为 55.4%,与 WO 约有 8 点差距。这支持论文的 claim:当前 MLLM 处理静态物体强于处理他人行为/状态归因。
5.3 Ablation: visual grounding and temporal order
GPT-5-mini 的 degraded input ablation 显示 GameplayQA 不能靠语言先验解决:Baseline Full 为 62.7;No Video 降到 29.4,下降 33.3 points;Random Frame 为 41.7,只比 No Video 高 12.3 points;Shuffled Frames 为 54.8,接近保留视觉内容但破坏时间顺序。
| Condition | All | L1 | L2 | L3 |
|---|---|---|---|---|
| Baseline (Full) | 62.7 | 67.2 | 61.9 | 60.6 |
| No Video | 29.4 | 36.0 | 29.1 | 24.2 |
| Random Frame | 41.7 | 52.9 | 40.9 | 33.7 |
| Shuffled Frames | 54.8 | 63.1 | 52.6 | 53.4 |
解读:No Video 大幅下降说明题目不是文本 pattern matching;Random Frame 能恢复部分性能,说明静态视觉信息对 L1 有用;Shuffled Frames 在 L1 上接近 baseline(63.1 vs. 67.2),但 L2(52.6 vs. 61.9)和 L3(53.4 vs. 60.6)明显下降,说明 temporal order 对 reasoning task 至关重要。
5.4 Cross-domain generalization
在 real-world ego-centric transfer 中,Gemini 2.5 Pro 仍然最高 overall 66.2,Gemini 2.5 Flash 62.0,GPT-5 Mini 61.0,Qwen3 VL 235B 59.2。任务难度模式与 gameplay 主集一致:模型从 L1 到 L3 退化,Occurrence Count 与 Cross-Video Ordering 仍难。这个实验样本小(213 questions),但说明 Self–Other–World + template QA pipeline 不限于游戏;只需要把默认 actor 从 “player” 改成 “person” 或 “driver”,就能迁移到 dashcam collision 和 Ego-Humans 协作场景。
5.5 Limitations and conclusions
作者明确承认两个限制。第一,GameplayQA 包含 intent identification,但不覆盖 decision reasoning,例如“此刻最优行动是什么”。这类问题需要从 raw video 估计 expected rewards 或 action values,涉及隐式 reward structure 与 world dynamics,仍是开放问题。第二,intent 本身更主观;human evaluation 中约 8% questions 被标记为 ambiguous ground-truth labels。
标注成本和误差传播也很突出:annotators 需要在一段视频里跟踪超过 100 个 labels / distractors,并多次观看、切换认知焦点;标注一个 30-second clip 平均需要 25–35 minutes。由于 QA generation 会复用 labels,一个 timestamp boundary、entity type 或 description 错误可能传播到多道题。不过算法本身是 deterministic template-based,作者认为噪声主要来自 annotation error,而不是 question generation logic。
总体结论是:GameplayQA 证明当前 MLLM 在 agentic perception 上仍不可靠,特别是 other-agent attribution、temporal grounding、cross-video synchronization 和 fast-paced decision-dense 场景。它的价值不只是排名模型,而是用结构化标签、问题类型和 distractor 类型把失败模式拆开,为 embodied AI / virtual agents / world model 的感知评测提供更精细的诊断工具。