Skip to content

About

DrawToPlay - a computer vision–powered 2D level generator that transforms hand-drawn sketches into playable Godot game levels.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

17 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎮 Draw-to-Play

Система генерації ігрових рівнів на основі комп'ютерного зору

Draw-to-Play — це програмний комплекс, призначений для автоматизованого створення ігрових рівнів жанру 2D платформер без необхідності програмування.
Система використовує методи Computer Vision для аналізу фотографічних зображень рукописних схем та їх конвертації в інтерактивні сцени на базі ігрового рушія Godot Engine.


✨ Функціональні можливості

  • Автоматизована конвертація
    Швидка обробка вхідних зображень та генерація повноцінного ігрового рівня.

  • Алгоритмічне розпізнавання
    Використання бібліотеки OpenCV для:

    • компенсації артефактів освітлення (тіні, відблиски),
    • згладжування та апроксимації кривих ліній,
    • класифікації геометричних форм.
  • Колірне кодування об'єктів
    Ідентифікація ігрових елементів на основі спектрального аналізу кольорів маркера.

  • Графічний інтерфейс користувача (GUI)
    Інструменти для:

    • завантаження зображень,
    • налаштування параметрів сканування,
    • запуску симуляції гри.
  • Режими роботи

    • режим попереднього перегляду результатів аналізу;
    • режим безпосередньої гри.

📝 Інструкція користувача

Для коректної роботи алгоритмів розпізнавання рекомендується дотримуватись наступних вимог при створенні схеми рівня:

  • використовувати чистий білий аркуш без лініювання або клітинок;
  • застосовувати насичені маркери або фломастери для високої контрастності;
  • забезпечити рівномірне освітлення під час фотографування;
  • уникати сильних тіней та перспективних спотворень.

🎨 Схема колірного кодування

Система класифікує об'єкти на основі їх колірних характеристик:

Колір маркера Тип об'єкта Опис функціональності
Чорний Платформа Статична колізійна поверхня (стіни, підлога)
Червоний Ворог Рухомий небезпечний об'єкт (NPC)
Жовтий Монета Колекційний предмет для нарахування балів
Зелений Старт Точка появи гравця (Spawn Point)
Синій Фініш Тригер завершення рівня
Трикутник Шипи Статична небезпечна перешкода (незалежно від кольору)

⚙️ Встановлення та налаштування середовища

Для роботи проєкту необхідні:

  • Python 3.x
  • Godot Engine 4.x

1️⃣ Клонування репозиторію

git clone https://github.com/your-username/draw-to-play.git
cd draw-to-play

2️⃣ Налаштування Python-оточення

Рекомендується використовувати віртуальне середовище.

Windows

python -m venv venv
.\venv\Scripts\activate

macOS / Linux

python3 -m venv venv
source venv/bin/activate

Встановлення залежностей

pip install opencv-python numpy pillow

3️⃣ Експорт виконуваного файлу гри

Модуль сканування (Launcher) вимагає наявності скомпільованого файлу гри в кореневій директорії.

  1. Відкрийте godot_project/project.godot у редакторі Godot

  2. Перейдіть у меню Project → Export

  3. Експортуйте гру під назвою:

  • Game.exe (Windows)
  1. Розмістіть файл у кореневій папці репозиторію (поряд із LevelScanner.py)

4️⃣ Запуск програми

python LevelScanner.py

🧠 Технічна реалізація Архітектура проєкту базується на багатоступеневій обробці зображень:

🔹 Попередня обробка (Preprocessing)

  • масштабування зображення;
  • конвертація в колірний простір HSV;
  • адаптивна бінаризація;
  • нормалізація освітлення.

🔹 Багатопрохідне сканування (Multi-Pass Scanning)

  1. Сегментація кольорових об'єктів (сутності, тригери) за HSV-масками

  2. Виключення знайдених областей із загальної маски

  3. Аналіз залишкової структури для виявлення статичних платформ

🔹 Апроксимація контурів

Використання алгоритму Рамера–Дугласа–Пекера (approxPolyDP) для:

  • згладжування рукописних ліній;

  • перетворення їх у геометричні примітиви.

🔹 Серіалізація даних

Експорт параметрів рівня у формат JSON (level_data.json) для подальшої обробки рушієм Godot.

📁 Структура проєкту

DrawToPlay/
├── Prefabs/
│   ├── Player.tscn
│   ├── Enemy.tscn
│   ├── Finish.tscn
│   ├── Main.tscn
│   ├── Player.tscn
│   ├── Spike.tscn
│   └── Platform.tscn
├── Scripts/
├── Assets/
├── project.godot
├── LevelScanner.py
├── level_data.json
├── Game.exe
└── README.md

🚀 Призначення проєкту

Проєкт може бути використаний як:

  • навчальний приклад з Computer Vision;

  • демонстрація інтеграції CV + GameDev;

  • основа для процедурної генерації рівнів;

  • повноцінний курсовий або дипломний проєкт.

About

DrawToPlay - a computer vision–powered 2D level generator that transforms hand-drawn sketches into playable Godot game levels.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages