CoolFace
Datasetpublic

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.

sourceHugging Faceapache-2.0updated 11mo agoView on Hugging Face
0likes116downloads
Dataset Card

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`` тензоры, пустые блоки можно игнорировать или паддить.

Описание признаков

ИндексНазваниеОписание
0block_idGD ID блока. 0 — пусто
1x_relX (столбец) внутри чанка, 0 .. chunk_w-1
2y_relY (строка) внутри чанка, 0 .. chunk_h-1
3rotation_indexИндекс поворота: 0=0°, 1=90°, 2=180°, 3=270°
4flip_combined0=нет; 1=flipy; 2=flipx; 3=оба

Пример визуализации чанка

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