GameplayQA: A Decision-Dense POV-Synced Multi-Video
7
32 commits
3 linked in READMEs
updated May 22, 2026

GameplayQA is the first benchmark for POV-Synced Multi-Video Understanding and Multi-Agent Video Understanding, built from ego-centric gameplay footage across 9 commercial 3D games. It features 2.4K multiple-choice questions spanning three levels of reasoning complexity β from single-clip action recognition to synchronized cross-video understanding.
The ability to reason across multiple synchronized viewpoints is critical in many real-world domains: sports analytics leveraging multiple camera angles, autonomous driving requiring sensor fusion from surround cameras, law enforcement reviewing multiple dashcam feeds, and coordinated robot or drone fleets operating in shared environments. In esports and gaming, cross-POV synchronization and collective reasoning are fundamental to interpreting multi-agent collaboration β making gameplay an ideal controlled testbed for developing and evaluating these capabilities in video-language models.
| 9 Games | 2.4 K QA Pairs | 2,709 Annotations |
| 2,219 s Annotated Footage | 1.22 /s Decision Density | 15 Task Categories |
| File | Description |
|---|---|
qa.csv | Main benchmark β 2,365 questions across 9 games |
qa_generalization.csv | Generalization benchmark β 213 questions on real-world non-game videos (load with config="generalization") |
Raw annotation files and video clips are located in the annotation/ folder, organized by project batch (e.g. annotation/project-batch1/, annotation/project-multi-batch1/). Processed benchmark files ready for evaluation are provided as CSV files at the root level.
The QA metadata (CSV files) can be loaded directly via the HuggingFace datasets library:
from datasets import load_dataset
# Main benchmark (default)
ds = load_dataset("wangyz1999/GameplayQA")
# Generalization benchmark
ds = load_dataset("wangyz1999/GameplayQA", "generalization")
The raw video clips are stored under annotation/ and tracked with Git LFS. To download them, clone the full repository:
git lfs install
git clone https://huggingface.co/datasets/wangyz1999/GameplayQA
Each QA row contains video_start / video_end timestamps in seconds. Evaluation typically requires cropping the referenced clip to the relevant segment before passing it to a model.
| Column | Type | Description |
|---|---|---|
id | string | Unique question ID (e.g. q-1767607156491-x4371a218) |
instance_id | string | Video clip instance ID (e.g. i-052) |
game_name | string | Game title. One of: ApexLegends, ARCRaiders, Battlefield6, CounterStrike2, Cyberpunk2077, EldenRing, Minecraft, NoManSky, Valheim |
video_1_file_name β¦ video_5_file_name | string | null | Paths to the video clip(s) (under annotation/). Single-video questions populate only video_1_file_name; multi-video questions populate up to 5 columns. |
video_indices | string | 0-based index/indices of the video(s) used, comma-separated (e.g. 0 or 0,1,2) |
video_start | int | Start time of the relevant video segment (seconds) |
video_end | int | End time of the relevant video segment (seconds) |
question_code | string | Fine-grained question type code (e.g. OA-IDENT, V1-SA2V2-SA-IDENT) |
task_name | string | Human-readable task category derived from question_code. See Task Categories below. |
question_level | int | Context scope level: 1 = Single Reference, 2 = Temporal, 3 = Cross-Video |
question | string | The question text |
correct_option | string | The correct answer text |
answer_start | int | null | Start time of the answer evidence segment (seconds). Null for existence/binary questions. |
answer_end | int | null | End time of the answer evidence segment (seconds). Null for existence/binary questions. |
distractor_1 β¦ distractor_3 | string | null | Wrong answer options (up to 3) |
distractor_1_type β¦ distractor_3_type | string | null | Distractor source. One of: lexical, temporal, role, scene, binary, count, order, intent, cross-video |
GameplayQA organizes perception in interactive 3D environments around a tripartite entity decomposition that mirrors how agents must reason in multi-agent settings.
![]() | ![]() |
| Entity | Code | Description |
|---|---|---|
| Self | SA / SS | The POV agent. Self-Action (SA) captures what the player does (shooting, reloading, jumping). Self-State (SS) captures the player's condition (health, ammo, equipped weapon). |
| Other | OA / OS | External agents β teammates, enemies, NPCs. Other-Action (OA) and Other-State (OS) mirror the Self primitives for other autonomous entities. |
| World | WO / WE | The shared environment. World-Object (WO) covers static or interactive elements (supply crates, vehicles, landmarks). World-Event (WE) covers dynamic occurrences (explosions, system notifications, environmental triggers). |
Questions are organized by the amount of temporal and cross-video context required:
| Level | Scope | What it tests |
|---|---|---|
| L1 | Single Reference | Basic perception within a single video segment β recognizing what happened, what state something was in, or what object/event was present. |
| L2 | Temporal | Reasoning that requires grounding across time β linking entities across different moments, localizing when something happened, identifying absences, counting occurrences, ordering events, or inferring intent. |
| L3 | Cross-Video | Reasoning across multiple synchronized POV videos β matching events across perspectives, ordering events across videos, or identifying which POV performed a given action. |
Questions are organized into 15 task categories across 3 context scope levels (2,365 total questions).
| Scope | Task | Description | Example Codes | #Q | Avg Dur. |
|---|---|---|---|---|---|
| Single Reference (L1, 469) | Action Recognition | Identify or verify existence of self & others' actions | SA-IDENT, OA-EXIST, ... | 162 | 10.0s |
| State Recognition | Identify or verify existence of self & others' states | SS-IDENT, OS-EXIST, ... | 147 | 10.1s | |
| Object Recognition | Identify or verify existence of world objects in scene | WO-IDENT, WO-EXIST | 70 | 9.3s | |
| Event Recognition | Identify world events occurring in the environment | WE-IDENT | 61 | 8.4s | |
| Static Object Count | Count static objects present in the scene | WO-COUNT | 29 | 21.3s | |
| Temporal (L2, 1383) | Cross-Entity Referring | Link one entity to another (X2Y reasoning) | SA2SS-IDENT, WO2SS-EXIST, ... | 423 | 23.0s |
| Timestamp Referring | Given time range [t1βt2], identify what entity exists | TR2SS-IDENT, TR2SA-IDENT, ... | 81 | 24.3s | |
| Time Localization | Locate exact timestamp when an event occurred | SA-TIME, WE-TIME, ... | 281 | 28.4s | |
| Absence Recognition | Identify actions/states that did not occur over a timespan | SA-ABSENT, SS-ABSENT, ... | 195 | 38.9s | |
| Occurrence Count | Count how many times an action/event happened | SA-COUNT, OA-COUNT, WE-COUNT | 75 | 26.4s | |
| Ordering | Determine temporal order sequence of actions/events | SA-ORDER, OA-ORDER, MIX-ORDER | 180 | 32.6s | |
| Intent Identification | Identify underlying intent or goal behind actions | SA-INTENT, OA-INTENT | 148 | 23.0s | |
| Cross-Video (L3, 513) | Sync-Referring | Link corresponding entities across synchronized videos | V1-SA2-V2OA, V1-WO2-V2SS, ... | 207 | 94.7s |
| Cross-Video Ordering | Determine event order sequence across multiple videos | SA-ORDER-MV, MIX-ORDER-MV, ... | 117 | 110.0s | |
| POV Identification | Identify who performed what action in which video | SA-POV-ID, OA-POV-ID, ... | 189 | 91.6s |
GameplayQA is built from first-person gameplay footage sourced from 9 commercially released multiplayer games spanning diverse genres:
Videos were sourced from YouTube, Twitch streams, and existing datasets (Counter-Strike 2 footage from X-EGO-CS). For multi-POV games, groups of streamers who played together in the same match were identified and their individual recordings were manually time-aligned to construct temporally synchronized multi-video sets.
Questions are generated through a combinatorial template-based algorithm that systematically combines verified annotation labels across five orthogonal dimensions: number of videos (single/multi), context target (summative/timestamp/entity/cross-video referring), entity type (SA/SS/OA/OS/WO/WE), distractor type, and question form. The algorithm initially produces ~400K candidate QA pairs; strategic downsampling to 4K enforces balanced category coverage before quality assurance yields the final 2,365 gold-standard pairs.
| Type | Description |
|---|---|
lexical | Text-based variants of the correct answer (synonyms, antonyms, attribute changes) |
temporal | Events that did occur, but outside the queried time window |
role | Correct event but attributed to the wrong agent |
scene | Plausible events that never occurred in the video |
cross-video | Events from a different synchronized video perspective |
binary | Negation of a binary (true/false) answer |
count | Incorrect quantity for counting questions |
order | Incorrect temporal ordering of events |
intent | Alternative plausible motivations for an action |
Language prior filtering: Each question is queried with text only (no video) using Gemini Flash with k=3 trials. Questions where the model consistently selects the correct answer without visual grounding are removed to prevent exploitation of statistical regularities in question phrasing.
Human evaluation: A stratified sample of 120 questions covering all question types was reviewed by annotators, who verified that (1) the video contains exactly one unambiguous correct answer, and (2) the question adheres to the semantics of its question code. Questions flagged as faulty (~8%) were corrected or removed.
Videos were annotated using dense multi-track timeline captioning via a custom-built annotation tool β sync-video-label. Each of the six entity types (SA, SS, OA, OS, WO, WE) is treated as an independent annotation track, and labels within and across tracks can overlap temporally to capture concurrent events.
The process follows a two-stage human-in-the-loop workflow:
A live read-only demo of the annotation interface is available at sync-video-label.vercel.app. See the demo video for a walkthrough.
The annotation team consisted of 5 graduate students (ages 21β31). All annotators were experienced gamers: 60% play 3β5 times per week, 60% have 8+ years of gaming experience. Roles were distributed as 4 labelers and 2 evaluators, with one participant serving in both capacities for cross-stage consistency.
A total of 2,709 true labels were annotated across 2,219 seconds of footage, yielding a decision density of Ο β 1.22 labels/second β roughly one decision-relevant event per second.
| Label Type | Count | Share |
|---|---|---|
| Self-Action (SA) | 658 | 24.3% |
| Self-State (SS) | 729 | 26.9% |
| Other-Action (OA) | 160 | 5.9% |
| Other-State (OS) | 190 | 7.0% |
| World-Event (WE) | 417 | 15.4% |
| World-Object (WO) | 555 | 20.5% |
| Total | 2,709 | 100% |
CounterStrike2 split in this benchmark.If our research is helpful to you, please cite our paper:
@article{wang2026gameplayqa,
title = {GameplayQA: A Benchmarking Framework for Decision-Dense POV-Synced Multi-Video Understanding of 3D Virtual Agents},
author = {Wang, Yunzhe and Xu, Runhui and Zheng, Kexin and Zhang, Tianyi and Kogundi, Jayavibhav Niranjan and Hans, Soham and Ustun, Volkan},
year = {2026},
eprint = {2603.24329},
archivePrefix = {arXiv},
primaryClass = {cs.CL},
url = {https://arxiv.org/abs/2603.24329}
}
32 commits
GameplayQA: A Decision-Dense POV-Synced Multi-Video
7
32 commits
3 linked in READMEs
updated May 22, 2026

GameplayQA is the first benchmark for POV-Synced Multi-Video Understanding and Multi-Agent Video Understanding, built from ego-centric gameplay footage across 9 commercial 3D games. It features 2.4K multiple-choice questions spanning three levels of reasoning complexity β from single-clip action recognition to synchronized cross-video understanding.
The ability to reason across multiple synchronized viewpoints is critical in many real-world domains: sports analytics leveraging multiple camera angles, autonomous driving requiring sensor fusion from surround cameras, law enforcement reviewing multiple dashcam feeds, and coordinated robot or drone fleets operating in shared environments. In esports and gaming, cross-POV synchronization and collective reasoning are fundamental to interpreting multi-agent collaboration β making gameplay an ideal controlled testbed for developing and evaluating these capabilities in video-language models.
| 9 Games | 2.4 K QA Pairs | 2,709 Annotations |
| 2,219 s Annotated Footage | 1.22 /s Decision Density | 15 Task Categories |
| File | Description |
|---|---|
qa.csv | Main benchmark β 2,365 questions across 9 games |
qa_generalization.csv | Generalization benchmark β 213 questions on real-world non-game videos (load with config="generalization") |
Raw annotation files and video clips are located in the annotation/ folder, organized by project batch (e.g. annotation/project-batch1/, annotation/project-multi-batch1/). Processed benchmark files ready for evaluation are provided as CSV files at the root level.
The QA metadata (CSV files) can be loaded directly via the HuggingFace datasets library:
from datasets import load_dataset
# Main benchmark (default)
ds = load_dataset("wangyz1999/GameplayQA")
# Generalization benchmark
ds = load_dataset("wangyz1999/GameplayQA", "generalization")
The raw video clips are stored under annotation/ and tracked with Git LFS. To download them, clone the full repository:
git lfs install
git clone https://huggingface.co/datasets/wangyz1999/GameplayQA
Each QA row contains video_start / video_end timestamps in seconds. Evaluation typically requires cropping the referenced clip to the relevant segment before passing it to a model.
| Column | Type | Description |
|---|---|---|
id | string | Unique question ID (e.g. q-1767607156491-x4371a218) |
instance_id | string | Video clip instance ID (e.g. i-052) |
game_name | string | Game title. One of: ApexLegends, ARCRaiders, Battlefield6, CounterStrike2, Cyberpunk2077, EldenRing, Minecraft, NoManSky, Valheim |
video_1_file_name β¦ video_5_file_name | string | null | Paths to the video clip(s) (under annotation/). Single-video questions populate only video_1_file_name; multi-video questions populate up to 5 columns. |
video_indices | string | 0-based index/indices of the video(s) used, comma-separated (e.g. 0 or 0,1,2) |
video_start | int | Start time of the relevant video segment (seconds) |
video_end | int | End time of the relevant video segment (seconds) |
question_code | string | Fine-grained question type code (e.g. OA-IDENT, V1-SA2V2-SA-IDENT) |
task_name | string | Human-readable task category derived from question_code. See Task Categories below. |
question_level | int | Context scope level: 1 = Single Reference, 2 = Temporal, 3 = Cross-Video |
question | string | The question text |
correct_option | string | The correct answer text |
answer_start | int | null | Start time of the answer evidence segment (seconds). Null for existence/binary questions. |
answer_end | int | null | End time of the answer evidence segment (seconds). Null for existence/binary questions. |
distractor_1 β¦ distractor_3 | string | null | Wrong answer options (up to 3) |
distractor_1_type β¦ distractor_3_type | string | null | Distractor source. One of: lexical, temporal, role, scene, binary, count, order, intent, cross-video |
GameplayQA organizes perception in interactive 3D environments around a tripartite entity decomposition that mirrors how agents must reason in multi-agent settings.
![]() | ![]() |
| Entity | Code | Description |
|---|---|---|
| Self | SA / SS | The POV agent. Self-Action (SA) captures what the player does (shooting, reloading, jumping). Self-State (SS) captures the player's condition (health, ammo, equipped weapon). |
| Other | OA / OS | External agents β teammates, enemies, NPCs. Other-Action (OA) and Other-State (OS) mirror the Self primitives for other autonomous entities. |
| World | WO / WE | The shared environment. World-Object (WO) covers static or interactive elements (supply crates, vehicles, landmarks). World-Event (WE) covers dynamic occurrences (explosions, system notifications, environmental triggers). |
Questions are organized by the amount of temporal and cross-video context required:
| Level | Scope | What it tests |
|---|---|---|
| L1 | Single Reference | Basic perception within a single video segment β recognizing what happened, what state something was in, or what object/event was present. |
| L2 | Temporal | Reasoning that requires grounding across time β linking entities across different moments, localizing when something happened, identifying absences, counting occurrences, ordering events, or inferring intent. |
| L3 | Cross-Video | Reasoning across multiple synchronized POV videos β matching events across perspectives, ordering events across videos, or identifying which POV performed a given action. |
Questions are organized into 15 task categories across 3 context scope levels (2,365 total questions).
| Scope | Task | Description | Example Codes | #Q | Avg Dur. |
|---|---|---|---|---|---|
| Single Reference (L1, 469) | Action Recognition | Identify or verify existence of self & others' actions | SA-IDENT, OA-EXIST, ... | 162 | 10.0s |
| State Recognition | Identify or verify existence of self & others' states | SS-IDENT, OS-EXIST, ... | 147 | 10.1s | |
| Object Recognition | Identify or verify existence of world objects in scene | WO-IDENT, WO-EXIST | 70 | 9.3s | |
| Event Recognition | Identify world events occurring in the environment | WE-IDENT | 61 | 8.4s | |
| Static Object Count | Count static objects present in the scene | WO-COUNT | 29 | 21.3s | |
| Temporal (L2, 1383) | Cross-Entity Referring | Link one entity to another (X2Y reasoning) | SA2SS-IDENT, WO2SS-EXIST, ... | 423 | 23.0s |
| Timestamp Referring | Given time range [t1βt2], identify what entity exists | TR2SS-IDENT, TR2SA-IDENT, ... | 81 | 24.3s | |
| Time Localization | Locate exact timestamp when an event occurred | SA-TIME, WE-TIME, ... | 281 | 28.4s | |
| Absence Recognition | Identify actions/states that did not occur over a timespan | SA-ABSENT, SS-ABSENT, ... | 195 | 38.9s | |
| Occurrence Count | Count how many times an action/event happened | SA-COUNT, OA-COUNT, WE-COUNT | 75 | 26.4s | |
| Ordering | Determine temporal order sequence of actions/events | SA-ORDER, OA-ORDER, MIX-ORDER | 180 | 32.6s | |
| Intent Identification | Identify underlying intent or goal behind actions | SA-INTENT, OA-INTENT | 148 | 23.0s | |
| Cross-Video (L3, 513) | Sync-Referring | Link corresponding entities across synchronized videos | V1-SA2-V2OA, V1-WO2-V2SS, ... | 207 | 94.7s |
| Cross-Video Ordering | Determine event order sequence across multiple videos | SA-ORDER-MV, MIX-ORDER-MV, ... | 117 | 110.0s | |
| POV Identification | Identify who performed what action in which video | SA-POV-ID, OA-POV-ID, ... | 189 | 91.6s |
GameplayQA is built from first-person gameplay footage sourced from 9 commercially released multiplayer games spanning diverse genres:
Videos were sourced from YouTube, Twitch streams, and existing datasets (Counter-Strike 2 footage from X-EGO-CS). For multi-POV games, groups of streamers who played together in the same match were identified and their individual recordings were manually time-aligned to construct temporally synchronized multi-video sets.
Questions are generated through a combinatorial template-based algorithm that systematically combines verified annotation labels across five orthogonal dimensions: number of videos (single/multi), context target (summative/timestamp/entity/cross-video referring), entity type (SA/SS/OA/OS/WO/WE), distractor type, and question form. The algorithm initially produces ~400K candidate QA pairs; strategic downsampling to 4K enforces balanced category coverage before quality assurance yields the final 2,365 gold-standard pairs.
| Type | Description |
|---|---|
lexical | Text-based variants of the correct answer (synonyms, antonyms, attribute changes) |
temporal | Events that did occur, but outside the queried time window |
role | Correct event but attributed to the wrong agent |
scene | Plausible events that never occurred in the video |
cross-video | Events from a different synchronized video perspective |
binary | Negation of a binary (true/false) answer |
count | Incorrect quantity for counting questions |
order | Incorrect temporal ordering of events |
intent | Alternative plausible motivations for an action |
Language prior filtering: Each question is queried with text only (no video) using Gemini Flash with k=3 trials. Questions where the model consistently selects the correct answer without visual grounding are removed to prevent exploitation of statistical regularities in question phrasing.
Human evaluation: A stratified sample of 120 questions covering all question types was reviewed by annotators, who verified that (1) the video contains exactly one unambiguous correct answer, and (2) the question adheres to the semantics of its question code. Questions flagged as faulty (~8%) were corrected or removed.
Videos were annotated using dense multi-track timeline captioning via a custom-built annotation tool β sync-video-label. Each of the six entity types (SA, SS, OA, OS, WO, WE) is treated as an independent annotation track, and labels within and across tracks can overlap temporally to capture concurrent events.
The process follows a two-stage human-in-the-loop workflow:
A live read-only demo of the annotation interface is available at sync-video-label.vercel.app. See the demo video for a walkthrough.
The annotation team consisted of 5 graduate students (ages 21β31). All annotators were experienced gamers: 60% play 3β5 times per week, 60% have 8+ years of gaming experience. Roles were distributed as 4 labelers and 2 evaluators, with one participant serving in both capacities for cross-stage consistency.
A total of 2,709 true labels were annotated across 2,219 seconds of footage, yielding a decision density of Ο β 1.22 labels/second β roughly one decision-relevant event per second.
| Label Type | Count | Share |
|---|---|---|
| Self-Action (SA) | 658 | 24.3% |
| Self-State (SS) | 729 | 26.9% |
| Other-Action (OA) | 160 | 5.9% |
| Other-State (OS) | 190 | 7.0% |
| World-Event (WE) | 417 | 15.4% |
| World-Object (WO) | 555 | 20.5% |
| Total | 2,709 | 100% |
CounterStrike2 split in this benchmark.If our research is helpful to you, please cite our paper:
@article{wang2026gameplayqa,
title = {GameplayQA: A Benchmarking Framework for Decision-Dense POV-Synced Multi-Video Understanding of 3D Virtual Agents},
author = {Wang, Yunzhe and Xu, Runhui and Zheng, Kexin and Zhang, Tianyi and Kogundi, Jayavibhav Niranjan and Hans, Soham and Ustun, Volkan},
year = {2026},
eprint = {2603.24329},
archivePrefix = {arXiv},
primaryClass = {cs.CL},
url = {https://arxiv.org/abs/2603.24329}
}
32 commits