---
title: Esports_world_model_datasets
canonical_url: "https://www.modelscope.cn/datasets/meisah111/Esports_world_model_datasets"
md_url: "https://www.modelscope.cn/datasets/meisah111/Esports_world_model_datasets.md"
repository: meisah111/Esports_world_model_datasets
chinese_name: "电子竞技世界模型数据集"
last_updated: 2026-10-12
license: cc-by-nc-4.0
storage_size: "733 GB"
downloads: 666950
stars: 1
---

# Esports_world_model_datasets

> Esports_world_model_datasets - meisah111 在 ModelScope 开源的数据集。涵盖CS2,DOTA2,SC2的高质量电子竞技世界模型数据集，可用于训练VLA,World Model, VLM等等

meisah111/Esports_world_model_datasets 是 ModelScope 魔搭社区上的数据集，存储大小 733 GB，采用 cc-by-nc-4.0 许可。

- **Repository**: meisah111/Esports_world_model_datasets
- **License**: cc-by-nc-4.0
- **Storage size**: 733 GB
- **Downloads**: 666950
- **Stars**: 1
- **Last updated**: 2026-10-12

Source: https://www.modelscope.cn/datasets/meisah111/Esports_world_model_datasets

---

# Esports World Model Dataset / 电子竞技世界模型数据集

[English](#english) | [简体中文](#chinese) | [GitHub](https://github.com/sc2musa/esports-worldmodel-datasets)

<a id="english"></a>

# English

**Authors:** Weiyu Ma<sup>†</sup>, Zeyuan Gong<sup>1</sup>, Xuhui Liu<sup>1</sup>, Wenxuan Zhang<sup>1</sup>, Jian Ding<sup>1</sup>, Xinyu Cui<sup>2</sup>, Jian Zhao<sup>3,*</sup>, Mohamed Elhoseiny<sup>1,*</sup>

<sup>1</sup>King Abdullah University of Science and Technology (KAUST) &nbsp; <sup>2</sup>Institute of Automation, Chinese Academy of Sciences &nbsp; <sup>3</sup>Beijing Zhongguancun Academy & Zhongguancun Institute of Artificial Intelligence &nbsp; <sup>†</sup>Project leader &nbsp; <sup>*</sup>Corresponding authors: Jian Zhao, [jianzhao@zgci.ac.cn](mailto:jianzhao@zgci.ac.cn); Mohamed Elhoseiny, [mohamed.elhoseiny@kaust.edu.sa](mailto:mohamed.elhoseiny@kaust.edu.sa)

[![Esports World Model Dataset promo video (click to play)](https://www.modelscope.cn/datasets/meisah111/Esports_world_model_datasets/resolve/master/promo/promo_poster.jpg)](https://www.modelscope.cn/datasets/meisah111/Esports_world_model_datasets/resolve/master/promo/promo_2160p.mp4)

Promo video (64 s): [4K](https://www.modelscope.cn/datasets/meisah111/Esports_world_model_datasets/resolve/master/promo/promo_2160p.mp4) · [1080p](https://github.com/sc2musa/esports-worldmodel-datasets/blob/main/docs/assets/promo_1080p.mp4) &nbsp;|&nbsp; Paper: [PDF](https://github.com/sc2musa/esports-worldmodel-datasets/blob/main/paper/Esports_World_Model_Dataset.pdf)

> **Non-commercial research use only.** This dataset contains footage rendered from game replays and game data. All related copyrights and trademarks belong to Blizzard Entertainment (StarCraft II) and Valve Corporation (Dota 2, Counter-Strike 2). Read the [license and copyright notice](#en-license) before use.

The dataset decodes replays of real players into multi-view player videos for **StarCraft II (RTS), Dota 2 (MOBA), and Counter-Strike 2 (FPS)**, time-aligned with game actions, engine state, and events. It is intended for research on action-conditioned world models, multi-view consistency, partial observability, and video understanding.

## Scale

| | StarCraft II | Dota 2 | Counter-Strike 2 |
|---|---:|---:|---:|
| Genre / format | RTS / 1v1 | MOBA / 5v5 | FPS / 5v5 |
| Matches | 2,320 indexed | 303 | 50 |
| Gameplay hours | 430.8 h | 282.8 h | 34.8 h |
| Player-view hours | 861.5 h | 2,827.9 h | 138.4 h |
| Views | 2 per match | up to 10 per match | 7,623 round-level POV clips |
| Structured data | ~69.5M trajectory steps | ~8.4B state changes | 64 tick/s replay aligned with 16 FPS video |

Total: 2,673 matches/maps, 748.4 gameplay hours, ~3,828 player-view hours. Gameplay hours count each match once; player-view hours sum over all views.

The online release keeps growing; trust the metadata shipped with each subset. SC2 standard release `v1.0.0` has 2,314 training-ready games and 4,628 views (see [`meta/info.json`](https://www.modelscope.cn/datasets/meisah111/Esports_world_model_datasets/resolve/master/esports_world_model_full_20260901/starcraft2/publish/standard/v1.0.0/meta/info.json)). The CS2 training-ready subset has 7,341 paired video/state clips, 134.7 h (see the [scale report](https://www.modelscope.cn/datasets/meisah111/Esports_world_model_datasets/resolve/master/esports_world_model_full_20260901/counter_strike2/reports/dataset_scale_summary.md)).

## Layout

```text
esports_world_model_full_20260901/
├── starcraft2/
│   ├── publish/standard/v1.0.0/   # Recommended: Parquet trajectories + MP4 + metadata
│   ├── publish/index/             # File index and statistics
│   └── dataset_prep/              # Format spec and scripts
├── dota2/
│   ├── gdrive/matches/<match_id>/ # One package per match
│   └── gdrive2/matches/           # Additional packages (overlapping match IDs)
└── counter_strike2/
    ├── extracted/                 # By match / round / player
    └── reports/                   # Inventories and quality reports
```

The repository also holds source archives and intermediate files. Download what you need; do not pull the whole repository recursively.

## Formats

### StarCraft II

Each replay is re-run in the engine build that matches it, with fog of war on, once per player, sampled along `game_loop`.

```text
standard/v1.0.0/
├── meta/        # info.json, schema.json, games/players/views/clips/files.parquet
├── data/build=<b>/context=<c>/split=<s>/<game_id>.p<i>.trajectory.parquet
└── videos/build=<b>/context=<c>/split=<s>/<game_id>.p<i>.{rgb,minimap}.mp4
```

One row per step. Main fields: `step_index`, `game_loop`, `timestamp_s`, `frame_index`, `observation` (camera, resources, score, upgrades, visible units), `action` (camera moves and unit commands), `is_first/is_last/is_terminal/is_truncated`, `reward_terminal` (win +1 / loss −1).

- `step[t].action` is the action taken between `observation[t]` and `observation[t+1]`. It is already aligned; do not shift it again. Actions before the first frame are in `views.reset_actions`.
- Observations contain only what that player can see. Entity tags are shared by the two views of a game, so the same unit can be matched across views. Unit and ability IDs depend on the game build.
- Both views of a game are always in the same split. Full spec: [STANDARD_RELEASE.md](https://www.modelscope.cn/datasets/meisah111/Esports_world_model_datasets/resolve/master/esports_world_model_full_20260901/starcraft2/dataset_prep/STANDARD_RELEASE.md).

### Dota 2

`.dem` replays are parsed into state changes and events, and a video is rendered for each player slot.

```text
matches/<match_id>/
├── match.json          # Match info, tick rate, per-slot files, missing assets
├── delta.parquet       # Engine state deltas (not full snapshots)
├── messages.parquet    # Events / messages
└── slot00/ … slot09/
    ├── video.mp4
    ├── alignment.parquet       # Video frame ↔ replay tick
    └── frame_actions.parquet   # Player actions per frame
```

Frame rate and frame-to-tick ratio can differ between matches, so use each package's `alignment.parquet`. `gdrive` and `gdrive2` share some match IDs; deduplicate before counting or splitting.

### Counter-Strike 2

Replays are parsed with `demoparser2`, first-person video is recorded with `csdm` + FFmpeg, and output is split by round and player.

- Match level: `metadata.json`, `player_states.parquet`, `player_inputs.parquet`, event tables
- Round / player level: `video.mp4`, `state.parquet`, `events.parquet`
- 16 FPS video against 64 tick/s replay (1 frame = 4 ticks); account for clip start offsets and death truncation. Not every round has all 10 views. Filter using the quality categories in `reports/`.

## Quick start

```bash
pip install modelscope pandas pyarrow
```

```python
from modelscope.hub.file_download import dataset_file_download
import pandas as pd

REPO = "meisah111/Esports_world_model_datasets"
SC2 = "esports_world_model_full_20260901/starcraft2/publish/standard/v1.0.0"

def get(path):
    return dataset_file_download(REPO, file_path=f"{SC2}/{path}")

views = pd.read_parquet(get("meta/views.parquet"))
view = views[views["split"] == "train"].iloc[0]

traj = pd.read_parquet(get(view["data_path"]),
                       columns=["step_index", "game_loop", "observation", "action"])
print(traj.head())
# Video: get(view["rgb_path"]), get(view["minimap_path"])
```

For Dota 2, start with `match.json`; for CS2, start with the inventories in `reports/`.

## Usage notes

- **Avoid split leakage:** keep all views, rounds, and clips of one match in the same split.
- **Separate visible and privileged information:** global engine state may be used as supervision, but not as model input in partial-observability evaluation.
- **Use complete pairs only:** check that video and structured data are both present.
- **No shared action space:** each game's actions are its own commands / engine inputs; define your own mapping for cross-game use.
- **Privacy:** the SC2 standard release anonymizes non-professional players. Raw files of other games are not processed the same way. Do not use the data to identify or track individual players.

<a id="en-license"></a>

## License and copyright notice

1. **Non-commercial research use only.** The parts of this repository we produced (decoded structured data, alignment tables, metadata, scripts, and documentation) are released under [CC BY-NC 4.0](https://creativecommons.org/licenses/by-nc/4.0/). Any commercial use is prohibited, including commercial products or services, training commercial models, and paid distribution or resale.
2. **Game content belongs to its owners.** Video footage, game assets, unit/hero/map names, replay files, and related trademarks belong to Blizzard Entertainment and Valve Corporation respectively. This dataset is not affiliated with, endorsed by, or licensed by these companies. We claim no rights to this content, and CC BY-NC 4.0 does not cover it.
3. **Follow upstream terms.** Users must also comply with each game's end-user license agreement, terms of service, and the terms of the replay sources (e.g., Blizzard's replay pack license). Where upstream terms are stricter, they prevail.
4. **No redistribution of raw game content.** Do not repackage and publicly redistribute the videos or replays. Limited screenshots or clips used for illustration in papers and reports are excepted.
5. **Disclaimer.** The data is provided "as is", without warranty of any kind.
6. **Rights holders.** If you believe any content here infringes your rights, contact us at the email below and we will promptly address or remove it.

## Citation

```bibtex
@misc{esports_world_model_dataset,
  author       = {Ma, Weiyu and Gong, Zeyuan and Liu, Xuhui and Zhang, Wenxuan and Ding, Jian and Cui, Xinyu and Zhao, Jian and Elhoseiny, Mohamed},
  title        = {Esports World Model Dataset},
  howpublished = {ModelScope dataset repository},
  url          = {https://www.modelscope.cn/datasets/meisah111/Esports_world_model_datasets},
  note         = {Please state the subset and revision used}
}
```

## Contact

project leader Weiyu Ma, [sc2meisah@gmail.com](mailto:sc2meisah@gmail.com); corresponding authors Jian Zhao, [jianzhao@zgci.ac.cn](mailto:jianzhao@zgci.ac.cn), and Mohamed Elhoseiny, [mohamed.elhoseiny@kaust.edu.sa](mailto:mohamed.elhoseiny@kaust.edu.sa); or the ModelScope dataset discussion page.

---

<a id="chinese"></a>

# 简体中文

**作者：** Weiyu Ma<sup>†</sup>, Zeyuan Gong<sup>1</sup>, Xuhui Liu<sup>1</sup>, Wenxuan Zhang<sup>1</sup>, Jian Ding<sup>1</sup>, Xinyu Cui<sup>2</sup>, Jian Zhao<sup>3,*</sup>, Mohamed Elhoseiny<sup>1,*</sup>

<sup>1</sup>阿卜杜拉国王科技大学（KAUST） &nbsp; <sup>2</sup>中国科学院自动化研究所 &nbsp; <sup>3</sup>北京中关村学院 & 中关村人工智能研究院 &nbsp; <sup>†</sup>项目负责人 &nbsp; <sup>*</sup>通讯作者：Jian Zhao，[jianzhao@zgci.ac.cn](mailto:jianzhao@zgci.ac.cn)；Mohamed Elhoseiny，[mohamed.elhoseiny@kaust.edu.sa](mailto:mohamed.elhoseiny@kaust.edu.sa)

[![电子竞技世界模型数据集宣传片（点击播放）](https://www.modelscope.cn/datasets/meisah111/Esports_world_model_datasets/resolve/master/promo/promo_poster.jpg)](https://www.modelscope.cn/datasets/meisah111/Esports_world_model_datasets/resolve/master/promo/promo_2160p.mp4)

宣传片（64 秒）：[4K](https://www.modelscope.cn/datasets/meisah111/Esports_world_model_datasets/resolve/master/promo/promo_2160p.mp4) · [1080p](https://github.com/sc2musa/esports-worldmodel-datasets/blob/main/docs/assets/promo_1080p.mp4) &nbsp;|&nbsp; 论文：[PDF](https://github.com/sc2musa/esports-worldmodel-datasets/blob/main/paper/Esports_World_Model_Dataset.pdf)

> **仅限非商业科研使用。** 本数据集包含由游戏回放渲染得到的画面及游戏数据，相关版权与商标归 Blizzard Entertainment（StarCraft II）和 Valve Corporation（Dota 2、Counter-Strike 2）所有。使用前请阅读文末[许可与版权声明](#zh-license)。

本数据集解码真实玩家的比赛回放，提供 **StarCraft II（RTS）、Dota 2（MOBA）和 Counter-Strike 2（FPS）** 的多视角玩家视频，并与游戏动作、引擎状态和事件在时间上对齐。适用于动作条件世界模型、多视角一致性、部分可观测推理和视频理解等研究。

## 数据规模

| | StarCraft II | Dota 2 | Counter-Strike 2 |
|---|---:|---:|---:|
| 类型 / 对阵 | RTS / 1v1 | MOBA / 5v5 | FPS / 5v5 |
| 对局数 | 2,320（索引） | 303 | 50 |
| 比赛时长 | 430.8 h | 282.8 h | 34.8 h |
| 玩家视角视频时长 | 861.5 h | 2,827.9 h | 138.4 h |
| 视角 | 每局 2 个 | 每局最多 10 个 | 7,623 个回合级 POV 片段 |
| 结构化数据 | 约 6,950 万轨迹步 | 约 84 亿条状态变化 | 64 tick/s 回放与 16 FPS 视频对齐 |

合计 2,673 局/地图、748.4 小时比赛、约 3,828 小时玩家视角视频。比赛时长每局只计一次，视角时长对所有视角求和。

线上版本持续更新，以各子集自带的元数据为准：SC2 标准版 `v1.0.0` 含 2,314 局可训练对局、4,628 个视角（见 [`meta/info.json`](https://www.modelscope.cn/datasets/meisah111/Esports_world_model_datasets/resolve/master/esports_world_model_full_20260901/starcraft2/publish/standard/v1.0.0/meta/info.json)）；CS2 训练可用子集含 7,341 个视频/状态配对片段、134.7 小时（见[规模报告](https://www.modelscope.cn/datasets/meisah111/Esports_world_model_datasets/resolve/master/esports_world_model_full_20260901/counter_strike2/reports/dataset_scale_summary.md)）。

## 目录结构

```text
esports_world_model_full_20260901/
├── starcraft2/
│   ├── publish/standard/v1.0.0/   # 推荐使用：Parquet 轨迹 + MP4 视频 + 元数据
│   ├── publish/index/             # 文件索引与统计
│   └── dataset_prep/              # 格式说明与处理脚本
├── dota2/
│   ├── gdrive/matches/<match_id>/ # 按比赛打包
│   └── gdrive2/matches/           # 补充数据包（与上者有重复比赛 ID）
└── counter_strike2/
    ├── extracted/                 # 按比赛 / 回合 / 玩家组织
    └── reports/                   # 清单与质量报告
```

仓库同时包含源压缩包和中间产物，请按需下载，不要递归拉取整个仓库。

## 各游戏数据格式

### StarCraft II

使用与回放版本匹配的游戏引擎、保留战争迷雾，分别从两名玩家视角重放，并沿 `game_loop` 采样。

```text
standard/v1.0.0/
├── meta/        # info.json、schema.json、games/players/views/clips/files.parquet
├── data/build=<b>/context=<c>/split=<s>/<game_id>.p<i>.trajectory.parquet
└── videos/build=<b>/context=<c>/split=<s>/<game_id>.p<i>.{rgb,minimap}.mp4
```

每行一个时间步，主要字段：`step_index`、`game_loop`、`timestamp_s`、`frame_index`、`observation`（镜头、资源、分数、升级、可见单位）、`action`（镜头移动与单位指令）、`is_first/is_last/is_terminal/is_truncated`、`reward_terminal`（胜 +1 / 负 −1）。

- `step[t].action` 是从 `observation[t]` 到 `observation[t+1]` 之间的动作，已对齐，无需再平移。首帧前的动作在 `views.reset_actions` 中。
- 观测仅包含该玩家可见的信息；同一局两个视角的实体 tag 一致，可用于跨视角匹配同一单位；单位/技能 ID 与游戏 build 相关。
- 同一局的两个视角始终在同一 split 中。完整约定见 [STANDARD_RELEASE.md](https://www.modelscope.cn/datasets/meisah111/Esports_world_model_datasets/resolve/master/esports_world_model_full_20260901/starcraft2/dataset_prep/STANDARD_RELEASE.md)。

### Dota 2

解析 `.dem` 回放得到状态变化与事件，并为每个玩家槽位渲染视频。

```text
matches/<match_id>/
├── match.json          # 比赛信息、tick rate、各槽位文件及缺失项
├── delta.parquet       # 引擎状态增量（非完整快照）
├── messages.parquet    # 事件 / 消息
└── slot00/ … slot09/
    ├── video.mp4
    ├── alignment.parquet       # 视频帧 ↔ 回放 tick
    └── frame_actions.parquet   # 每帧玩家动作
```

不同比赛的帧率和帧/tick 比例可能不同，请使用各自的 `alignment.parquet`。`gdrive` 与 `gdrive2` 存在重复比赛 ID，统计和划分前请先去重。

### Counter-Strike 2

使用 `demoparser2` 解析回放，通过 `csdm` + FFmpeg 录制玩家第一人称视频，按回合和玩家切分。

- 比赛级：`metadata.json`、`player_states.parquet`、`player_inputs.parquet`、事件表
- 回合/玩家级：`video.mp4`、`state.parquet`、`events.parquet`
- 16 FPS 视频对应 64 tick/s 回放（1 帧 = 4 tick），需结合片段起点和死亡截断对齐。并非每个回合都有 10 个完整视角，请依据 `reports/` 中的质量分类筛选。

## 快速开始

```bash
pip install modelscope pandas pyarrow
```

```python
from modelscope.hub.file_download import dataset_file_download
import pandas as pd

REPO = "meisah111/Esports_world_model_datasets"
SC2 = "esports_world_model_full_20260901/starcraft2/publish/standard/v1.0.0"

def get(path):
    return dataset_file_download(REPO, file_path=f"{SC2}/{path}")

views = pd.read_parquet(get("meta/views.parquet"))
view = views[views["split"] == "train"].iloc[0]

traj = pd.read_parquet(get(view["data_path"]),
                       columns=["step_index", "game_loop", "observation", "action"])
print(traj.head())
# 视频：get(view["rgb_path"])、get(view["minimap_path"])
```

Dota 2 建议先读 `match.json`，CS2 建议先读 `reports/` 下的清单。

## 使用注意

- **防止划分泄漏：** 同一比赛的所有视角、回合和片段应放在同一划分。
- **区分可见与特权信息：** 引擎全局状态可用于监督，但在部分可观测评测中不应作为模型输入。
- **只用完整配对样本：** 使用前核对视频与结构化数据是否齐全。
- **动作空间不统一：** 三款游戏的动作是各自的游戏指令/引擎输入，跨游戏使用需自行定义映射。
- **隐私：** SC2 标准版已对非职业玩家身份脱敏；其他游戏的原始文件未做同等处理，请勿用于识别或追踪个人玩家。

<a id="zh-license"></a>

## 许可与版权声明

1. **仅限非商业科研用途。** 本仓库中由我们产出的部分（解码后的结构化数据、对齐表、元数据、脚本与文档）以 [CC BY-NC 4.0](https://creativecommons.org/licenses/by-nc/4.0/deed.zh-hans) 发布。禁止用于任何商业目的，包括但不限于商业产品或服务、商业模型训练、付费分发或转售。
2. **游戏内容版权归原权利人。** 视频画面、游戏素材、单位/英雄/地图名称、回放文件及相关商标分别归 Blizzard Entertainment 和 Valve Corporation 所有。本数据集与上述公司无关联，也未获其认可或授权。我们不对上述内容主张任何权利，CC BY-NC 4.0 不覆盖这些内容。
3. **遵守上游条款。** 使用者须同时遵守各游戏的最终用户许可协议、服务条款以及回放来源（如 Blizzard 回放包许可）的相关规定；若上游条款更严格，以上游条款为准。
4. **禁止再分发原始游戏内容。** 请勿将视频或回放单独打包公开再分发。论文、报告中少量引用截图或片段用于学术说明的情况除外。
5. **免责。** 数据按“现状”提供，不作任何明示或暗示的保证。
6. **权利人联系。** 如权利人认为本数据集的任何内容侵犯其权益，请通过下方邮箱联系，我们将及时处理或下架相关内容。

## 引用

```bibtex
@misc{esports_world_model_dataset,
  author       = {Ma, Weiyu and Gong, Zeyuan and Liu, Xuhui and Zhang, Wenxuan and Ding, Jian and Cui, Xinyu and Zhao, Jian and Elhoseiny, Mohamed},
  title        = {Esports World Model Dataset},
  howpublished = {ModelScope dataset repository},
  url          = {https://www.modelscope.cn/datasets/meisah111/Esports_world_model_datasets},
  note         = {Please state the subset and revision used}
}
```

## 联系方式

项目负责人 Weiyu Ma：[sc2meisah@gmail.com](mailto:sc2meisah@gmail.com)；通讯作者 Jian Zhao：[jianzhao@zgci.ac.cn](mailto:jianzhao@zgci.ac.cn)，Mohamed Elhoseiny：[mohamed.elhoseiny@kaust.edu.sa](mailto:mohamed.elhoseiny@kaust.edu.sa)；或在 ModelScope 数据集讨论区留言。
