GitHub Dungeons — це не просто гра в терміналі, а унікальний експеримент на стику програмування та ігрового дизайну. Цей проєкт дозволяє перетворити будь-який код чи репозиторій на живе, процедурно згенероване підземелля в жанрі roguelike. Ініціатива була створена Lee Reilly, менеджером програми GitHub Developer Relations, який використав потужність штучного інтелекту для створення чогось абсолютно несподіваного.
Ідея виникла після участі у GitHub Copilot CLI Challenge. Замість звичайного кодування, розробник вирішив застосувати промпт до інструменту: "Створити розширення GitHub CLI на Go, яке візьме поточний репозиторій і перетворить його на грабельне підземелля в стилі roguelike". І завдяки команді /yolo (що є псевдонімом для /allow-all), з'явився GitHub Dungeons.
Це термінальна гра, де кімнати, коридори та вороги генеруються безпосередньо на основі вашого коду. Ви навігуєте за допомогою стрілок, боретеся з багами й шукаєте вихід. Кожен репозиторій дає унікальну карту, а кожен комір змінює її макет. Це демонструє неймовірний потенціал AI-інструментів для створення інтерактивних та динамічних систем на основі уже що існує даних.
Що таке roguelike та як це працює?
Жанр roguelike має глибоке коріння, сягаючи 1980-х років із грою Rogue. Ці текстові пригоди завжди базувалися на трьох ключових елементах: процедурній генерації, перманентній смерті та інтерфейсі на основі тексту. GitHub Dungeons чудово вписується у цю традицію, оскільки кожен запуск генерує нове підземелля, а смерть означає необхідність почати знову.
Технічно гра написана мовою Go. Головний принцип її функціонування — це процедурна генерація (або procgen). Це метод створення контенту алгоритмічно, замість того щоб проєктувати його вручну. Замість того щоб створювати одне підземелля, розробник створює систему, яка генерує їх багато.
Код як карта: BSP та коміри
У GitHub Dungeons ця система генерації прив'язана безпосередньо до вашого репозиторію. Макет підземелля формується за допомогою алгоритму Binary Space Partitioning (BSP), який ініціалізується останнім SHA-хешем вашого коду.
Це означає:
* Один і той самий код завжди дасть однаковий макет.
* Будь-яка зміна в коді призводить до реконфігурації та зміни ландшафту підземелля.
Таким чином, це не просто процедурна генерація — це процедурна генерація, прив'язана безпосередньо до вашого кодової бази.
Роль GitHub Copilot CLI у розробці
Найбільш цікавою частиною проєкту було саме його створення. Завдяки роботі з GitHub Copilot CLI, розробнику не потрібно було писати все з нуля, а можна було описувати бажану поведінку простою англійською мовою.
Ключовим інструментом став /delegate. На відміну від генерації коду безпосередньо в рядку, команда /delegate передає завдання агенту Copilot для програмування, який працює у хмарі. Це дозволило розробнику описати бажаний функціонал, запустити його і зайнятися іншими справами, поки агент працював незалежно. Після завершення він відкривав pull request із результатами.
Еволюція та інтеграція ШІ
Цей асинхронний підхід дозволив швидко впроваджувати складні функції:
- Баланс гри: За допомогою
/delegateбуло запропоновано зробити рівні поступово складнішими (наприклад, на 2-му рівні з'являються додаткові вороги та цілющі зілля). Copilot генерував первинний варіант, який потім можна було відредагувати. - Додатковий функціонал: Було додано Чити, що роблять гравця невразливим.
- Створення допоміжних агентів: Розробник навіть змусив Copilot створити "хронікера підземелля" (dungeon scribe). Цей невеликий помічник автоматично додавав документацію та ASCII-ари для пояснення, як саме генеруються підземелля.
Ці приклади демонструють, що AI є потужним партнером у розробці, дозволяючи зосередитися на поведінці системи, а не лише на синтаксисі коду.
EVERYTHING