Draw-to-Play — це програмний комплекс, призначений для автоматизованого створення ігрових рівнів жанру 2D платформер без необхідності програмування.
Система використовує методи Computer Vision для аналізу фотографічних зображень рукописних схем та їх конвертації в інтерактивні сцени на базі ігрового рушія Godot Engine.
-
Автоматизована конвертація
Швидка обробка вхідних зображень та генерація повноцінного ігрового рівня. -
Алгоритмічне розпізнавання
Використання бібліотеки OpenCV для:- компенсації артефактів освітлення (тіні, відблиски),
- згладжування та апроксимації кривих ліній,
- класифікації геометричних форм.
-
Колірне кодування об'єктів
Ідентифікація ігрових елементів на основі спектрального аналізу кольорів маркера. -
Графічний інтерфейс користувача (GUI)
Інструменти для:- завантаження зображень,
- налаштування параметрів сканування,
- запуску симуляції гри.
-
Режими роботи
- режим попереднього перегляду результатів аналізу;
- режим безпосередньої гри.
Для коректної роботи алгоритмів розпізнавання рекомендується дотримуватись наступних вимог при створенні схеми рівня:
- використовувати чистий білий аркуш без лініювання або клітинок;
- застосовувати насичені маркери або фломастери для високої контрастності;
- забезпечити рівномірне освітлення під час фотографування;
- уникати сильних тіней та перспективних спотворень.
Система класифікує об'єкти на основі їх колірних характеристик:
| Колір маркера | Тип об'єкта | Опис функціональності |
|---|---|---|
| Чорний | Платформа | Статична колізійна поверхня (стіни, підлога) |
| Червоний | Ворог | Рухомий небезпечний об'єкт (NPC) |
| Жовтий | Монета | Колекційний предмет для нарахування балів |
| Зелений | Старт | Точка появи гравця (Spawn Point) |
| Синій | Фініш | Тригер завершення рівня |
| Трикутник | Шипи | Статична небезпечна перешкода (незалежно від кольору) |
Для роботи проєкту необхідні:
- Python 3.x
- Godot Engine 4.x
git clone https://github.com/your-username/draw-to-play.git
cd draw-to-play2️⃣ Налаштування Python-оточення
Рекомендується використовувати віртуальне середовище.
Windows
python -m venv venv
.\venv\Scripts\activatemacOS / Linux
python3 -m venv venv
source venv/bin/activateВстановлення залежностей
pip install opencv-python numpy pillow3️⃣ Експорт виконуваного файлу гри
Модуль сканування (Launcher) вимагає наявності скомпільованого файлу гри в кореневій директорії.
-
Відкрийте godot_project/project.godot у редакторі Godot
-
Перейдіть у меню Project → Export
-
Експортуйте гру під назвою:
- Game.exe (Windows)
- Розмістіть файл у кореневій папці репозиторію (поряд із LevelScanner.py)
4️⃣ Запуск програми
python LevelScanner.py🧠 Технічна реалізація Архітектура проєкту базується на багатоступеневій обробці зображень:
🔹 Попередня обробка (Preprocessing)
- масштабування зображення;
- конвертація в колірний простір HSV;
- адаптивна бінаризація;
- нормалізація освітлення.
🔹 Багатопрохідне сканування (Multi-Pass Scanning)
-
Сегментація кольорових об'єктів (сутності, тригери) за HSV-масками
-
Виключення знайдених областей із загальної маски
-
Аналіз залишкової структури для виявлення статичних платформ
🔹 Апроксимація контурів
Використання алгоритму Рамера–Дугласа–Пекера (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;
-
основа для процедурної генерації рівнів;
-
повноцінний курсовий або дипломний проєкт.