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 的难度递进:

LevelTaskQAvg dur.
L1 Single ReferenceAction Recognition16210.0s
L1 Single ReferenceState Recognition14710.1s
L1 Single ReferenceObject Recognition709.3s
L1 Single ReferenceEvent Recognition618.4s
L1 Single ReferenceStatic Object Count2921.3s
L2 TemporalCross-Entity Referring42323.0s
L2 TemporalTimestamp Referring8124.3s
L2 TemporalTime Localization28128.4s
L2 TemporalAbsence Recognition19538.9s
L2 TemporalOccurrence Count7526.4s
L2 TemporalOrdering18032.6s
L2 TemporalIntent Identification14823.0s
L3 Cross-VideoSync-Referring20794.7s
L3 Cross-VideoCross-Video Ordering117110.0s
L3 Cross-VideoPOV Identification18991.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 questions
def 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 ConceptSource FileKey Class/Function
Annotation UI and synced timeline labelingsync-video-label/app/api/annotation/route.ts, app/utils/timeline.tsAPI routes and timeline utilities for saved annotations/autosave
Label prediction schema for SA/SS/OA/OS/WO/WE and distractorssync-video-label/app/api/predict/schemas.ts, app/api/predict/prompts.tsstructured output schemas and prompting for candidate labels/distractors
Template-based L1/L2/L3 question generationsync-video-label/app/utils/questionGenerator/index.ts, level1.ts, level2.ts, level3.ts, templates.tsgenerateQuestions, generateLevel1Questions, generateLevel3Questions; Level 3 cap: 1000 questions, cross-video ref cap: 800
Dataset split and video path resolutionGameplayQA/gameplayqa/data.pyread_csv_rows, cropped_video_paths, source_video_paths
Video cropping and frame extractionGameplayQA/gameplayqa/video.pycrop_segment, crop_questions, FrameExtractionConfig, extract_frames
Model/provider registryGameplayQA/gameplayqa/models.py, providers.pyMODEL_CONFIGS, ModelConfig.get_max_frames, get_processor, GoogleProcessor, OpenAIFrameProcessor, OpenRouterProcessor
Benchmark executionGameplayQA/gameplayqa/benchmark.py, run_benchmark.pyprocess_question, run_benchmark; default workers in README: 5
LLM-as-a-judge answer extractionGameplayQA/gameplayqa/judge.py, llm_as_a_judge.pyextract_selected_option, judge_one, run_judge; default judge model gpt-5-mini
Accuracy summaries and plotsGameplayQA/gameplayqa/evaluate.py, evaluate_results.py, plot_results.pyevaluate_files, summarize_group, plot_results
Ablation with degraded visual inputGameplayQA/gameplayqa/ablation.py, ablation_benchmark.pyFrameAblationProcessor, run_ablation

论文公式与 released code 实现差异:论文 Appendix B 写到 Seed 1.6 / Seed 1.6 Flash 因 raw video API 不稳定而改用 32-frame sampling;但 GameplayQA/gameplayqa/models.pymain@65384856 中把 seed-1.6seed-1.6-flash 都设为 InputType.VISION_FRAMESmax_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.pyFrameExtractionConfig 默认 max_frames=32max_size=720fps_for_short_videos=1.0short_video_threshold=32.0GameplayQA/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 qauv 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 排序事件依旧是瓶颈。

ModelAllNotable strengths / weaknesses
Human80.5L3 POV-ID 100.0,仍在 OccCnt 62.5 / SyncRef 88.9 上显著高于模型
Gemini 2.5 Pro71.3Overall 最佳;POV-ID 85.7,SyncRef 81.0
Gemini 3 Flash68.2Overall 第二;TimeLoc 64.4,Intent 62.8
GPT-567.0Order 78.3,OccCnt 62.7;但 static object count 48.3
Qwen3 VL 235B63.8Open-source 最佳;ObjRec / EvtRec 均 70.0+,但 X-VOrd 31.6
GPT-5 Mini62.7Ablation 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,接近保留视觉内容但破坏时间顺序。

ConditionAllL1L2L3
Baseline (Full)62.767.261.960.6
No Video29.436.029.124.2
Random Frame41.752.940.933.7
Shuffled Frames54.863.152.653.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 的感知评测提供更精细的诊断工具。