kuzheren/geometry-dash-levels-tensors-2
Geometry Dash Chunks HDF5 Dataset Описание Этот датасет создан для обучения нейросетевых моделей (автоэнкодер, DiT, diffusion и др.) на реальных уровнях из Geometry Dash. Он хранится в форматах HDF5 (каждый файл содержит не более 5000 уровней) и подготовлен для максимально быстрой и эффективной работы с последовательностями чанков уровней. Структура данных Каждый HDF5-файл содержит: Датасет: chunk_data — тензоры с чанками уровней. Датасет:… See the full description on the dataset page: https://huggingface.co/datasets/kuzheren/geometry-dash-levels-tensors-2.
Geometry Dash Chunks HDF5 Dataset
Описание
Этот датасет создан для обучения нейросетевых моделей (автоэнкодер, DiT, diffusion и др.) на реальных уровнях из Geometry Dash. Он хранится в форматах HDF5 (каждый файл содержит не более 5000 уровней) и подготовлен для максимально быстрой и эффективной работы с последовательностями чанков уровней.
Структура данных
Каждый HDF5-файл содержит:
- Датасет: chunk_data — тензоры с чанками уровней.
- Датасет: valid_mask — булева маска валидных чанков в каждом уровне.
- Атрибут: metadatajsonlist — JSON-список метаданных уровней из оригинальных .jsonl-файлов (кроме level_string и неважных служебных полей).
- Другие атрибуты описывают размерности тензоров и смысл признаков.
chunk_data
Размерность: ``num_levels, max_seq_len, chunk_h, chunk_w, num_block_features``
Значения: int32
- num_levels — количество уровней в файле
- maxseqlen — максимальное число чанков среди всех уровней в этом файле
- chunk_h — высота чанка в сеточных "пикселях" (например, 32)
- chunk_w — ширина чанка (например, 128)
- numblockfeatures — количество признаков на ячейку
valid_mask
Размерность: ``num_levels, max_seq_len``
Тип: bool
- Показывает, какие чанки в каждом уровне содержат реальные данные (True), а какие — добавлены паддингом (False).
metadatajsonlist (атрибут)
Это JSON-список метаданных каждого уровня в файле. Пример содержимого одного entry:
{
"level_id": 123456,
"level_name": "My Level",
"difficulty_stars": 5,
"length_code": 2,
"downloads": 1234,
"likes": 56,
"num_chunks_generated": 12
}level_string (и похожие служебные поля) не сохраняются для экономии места и скорости доступа.
Содержимое одного чанка
- Каждый чанк — это сетка ``
chunk_h x chunk_w``. - В каждой ячейке хранится массив из ``
num_block_features`` чисел: - block_id — целое, идентификатор блока Geometry Dash (0 = пусто)
- xrel — индекс ячейки (0 .. chunkw-1)
- yrel — индекс ячейки (0 .. chunkh-1)
- rotation_index — 0–3 (соответствует 0°/90°/180°/270°)
- flipcombined — код флипа: 0=нет, 1=flipy, 2=flipx, 3=flipx+flip_y
Пустая ячейка содержит block_id=0 и все остальные значения ноль.
Как читать датасет
Пример на Python с использованием библиотеки h5py и numpy:
import h5py
import numpy as np
filename = "gd_dataset_chunked_part_1.h5"
with h5py.File(filename, "r") as hf:
chunk_data = hf["chunk_data"] # Размер: (num_levels, max_seq_len, chunk_h, chunk_w, num_block_features)
valid_mask = hf["valid_mask"] # Размер: (num_levels, max_seq_len)
meta_json = hf.attrs["metadata_json_list"]
metadata = json.loads(meta_json)
# Пример: получить все чанки первого уровня:
idx = 0
real_len = valid_mask[idx].sum()
level_chunks = chunk_data[idx, :real_len] # (real_len, chunk_h, chunk_w, num_block_features)
# Декодировать первый чанк в уровень:
chunk = level_chunks[0] # (chunk_h, chunk_w, num_block_features)
block_ids = chunk[:,:,0] # карта блоков
x_coords = chunk[:,:,1]
y_coords = chunk[:,:,2]
rotation_idxs = chunk[:,:,3]
flip_combined = chunk[:,:,4]Как использовать в DataLoader
- Для обучения transformer/DiT моделей: формируйте батчи из уровней (последовательностей чанков), используйте valid_mask для attention mask и masking в loss.
- Для автоэнкодера: берите отдельные чанки, считывайте ``
chunk_h x chunk_w x num_block_features`` тензоры, пустые блоки можно игнорировать или паддить.
Описание признаков
Пример визуализации чанка
import matplotlib.pyplot as plt
plt.imshow(block_ids, cmap="tab20") # или cmap="nipy_spectral"
plt.title("Карта ID блоков в чанке")
plt.show()Лицензия и источник
- Данные Levels: из open Geometry Dash (2013-2025).
- Код парсера и структуры: Kuzheren (actually, not really), 2025.
- Используйте свободно для ML-исследований и геймдев-прототипирования!
Обратная связь
Вопросы, предложения и баги — в Issues HuggingFace или на github.com/kuzheren/gdparse
