AI-рушій процедурної генерації (PCG) для ігор: світи, квести, діалоги

Світ і квести розповзаються, коли контенту стає більше, ніж команда встигає його зв'язувати. Ми розробляємо керовані системи процедурної генерації під ключ: світи, завдання й діалоги збираються за вашими правилами, зі збереженням стилю та зв'язності. Обсяг контенту зростає, а ручних правок стає менше.
Часті запитання

Чому процедурна генерація контенту ламається на масштабі

Процедурна генерація контенту впевнено тримається на невеликому світі: сотня квестів, десяток регіонів, осяжний набір фракцій — і правила сходяться. Збій починається на масштабі.

Генератор, який ухвалює рішення за локальним контекстом, не бачить, що видане ним завдання спирається на стан, якого у світі вже не існує.

Так накопичуються розриви логіки квестів: неігровий персонаж видає нагороду за подію, якої не було, діалог посилається на вбитого героя, а ланцюжок кроків обривається на середині, бо наступний вузол не зібрався.

З’являються тупикові гілки — гравець доводить завдання до кроку, який неможливо завершити, — і дублі: три квести про один і той самий сюжетний поворот в одному регіоні. Світ залишається формально цілим, але перестає бути зв’язним: переходи є, сенсу в них немає.

Далі — зростання ручних правок, і воно нелінійне. Кожен новий регіон додає не стільки контенту, скільки комбінацій «завдання × фракція × стан світу», і перевіряти вручну доводиться майже всі.

Основний сюжетний шлях подовжується, дефекти повертаються в місця, які вже вважалися закритими, а цикл підготовки релізу перестає вкладатися в план.

Розбираємо, як це закривається: де саме руйнується зв’язність і що змінюється в архітектурі генерації, щоб правила утримували світ цілком, а не по шматках.

Що дає керована генерація: вимірюваний ефект

Керована генерація вимірюється не красою підсумкових сцен, а величинами зі звітів: скільки часу займає наповнення рівня, яка частка контенту йде на ручну правку і чи повторюється світ за повторного прогону. Нижче — що саме змінюється і за рахунок чого.

Терміни наповнення рівнів скорочуються тому, що планування, розстановка об’єктів і первинний баланс збираються з набору правил, а не виставляються вручну. Дизайнер отримує готовий каркас і працює з акцентами — сюжетними точками, нагородами, кривою складності.

Частка ручних правок при цьому падає з десятків відсотків контенту до одиниць: правиться не кожен об’єкт, а параметри правил, що впливають одразу на всю вибірку.

Відтворюваність світу тримається на фіксованому зерні генерації та версії набору правил — один і той самий вхід дає той самий граф рівнів, квестів і діалогів. Ми спираємося на підхід на основі обмежень, відомий як Wave Function Collapse, саме заради цієї передбачуваності.

Це дає змогу порівнювати дві генерації порядково, відкочувати невдалу зміну правил і розбирати зауваження тестувальника на конкретному відтворюваному стані, а не на «у мене так не повторюється».

Окремо йде клас відмов, характерний для ручного складання: недосяжні зони, тупики в графі квестів, нагороди поза досяжністю, конфліктні умови в діалогах.

Валідатори перевіряють зв’язність і досяжність до того, як контент потрапить у гру, — брак відсікається на етапі генерації, а не в зібраній версії.

При розширенні світу ефект не розмивається: новий біом додається набором правил і одразу проходить ті самі перевірки, тому терміни та частка правок залишаються на попередньому рівні.

Повна автоматика чи гібрид: порівняння підходів

Повна автоматизація та гібридний режим наповнюють світ однаково швидко, але по-різному розподіляють відповідальність за результат. У першому випадку генератор видає контент потоком, а людина дивиться лише вибірку на прийманні.

У другому генератор готує чернетку, а рішення про публікацію ухвалює перевіряльне правило або редактор.

Що вибрати, вирішує не обсяг контенту, а ціна помилки в конкретному шарі. Неправильну розстановку декорацій дешево відкинути, помилку в ланцюжку квестів гравець помічає одразу, і її правка коштує дорожче, ніж весь згенерований блок.

Режим Коли підходить Обмеження
Повна автоматизація Рельєф, розстановка об’єктів, варіації реплік і предметів Смислові зв’язки не перевіряються, збій видно лише на прийманні вибірки
Гібридний режим Квести, діалоги, економіка, баланс фракцій Потрібен набір правил-обмежувачів і точка перевірки всередині конвеєра
Ручна доводка Сюжетні розвилки, навчання, ключові сцени Не масштабується: час зростає лінійно з обсягом контенту

Режим вибираємо за метриками, а не за смаком: частка елементів, прийнятих без правок, час на доводку одного елемента, кількість відкатів після випуску. Шар, який проходить приймання без правок у більшості випадків, переводимо в повну автоматизацію. Де частка нижча — залишається гібридний режим, а ручну доводку скорочуємо до проблемних місць.

Етапи впровадження: від аудиту правил до передачі

Процедурна генерація починається не з налаштування генератора, а з інвентаризації того, що вже є в проєкті. Якщо цей крок пропустити, алгоритм відтворює не логіку світу, а випадковий шум, і доводка контенту перетворюється на нескінченну ручну правку. Порядок нижче вибудований так, що кожен етап спирається на артефакти попереднього.

  1. Аудит правил. Збираємо умови квестів, таблиці нагород, діалогові гілки, вимоги до рівнів. Окремо фіксуємо правила, які поки живуть лише в досвіді дизайнера — саме вони найчастіше ламають генерацію.
  2. Схема зв’язності. Будуємо карту залежностей: які зустрічі допустимі в яких зонах, що стикується лише вручну, які сутності не можуть з’явитися поруч. Схема стає технічним завданням на генератор і знімає спірні правки під час приймання.
  3. Налаштування обмежень. Задаємо діапазони, ваги, заборони та обов’язкові «якорі», які генератор не чіпає: сюжетні точки, ключових супротивників, точку входу новачка. Обмеження описують не «як красиво», а що вважається некоректним контентом.
  4. Перевірка на малій вибірці. Проганяємо кілька десятків фрагментів і розбираємо вручну: частка прохідних маршрутів, повтори, розриви логіки. Правимо правила, поки ціна помилки низька і розходження не розійшлося по всьому контенту.
  5. Перевірка на реальному обсязі. Запускаємо на повному наборі світу: час генерації, частка відбракованих варіантів, різноманітність на довгій дистанції. Тут же перевіряємо, що відкат до попередньої версії правил повертає попередній контент.
  6. Передача команді. Віддаємо документацію, конфігурації з коментарями, розбір типових помилок і регламент версіонування правил. Спільно правимо живі задачі — після цього зміни в генераторі ваша команда вносить сама.

Артефакти впровадження: схеми, правила, регламенти

Без артефактів процедурна генерація перетворюється на чорну скриньку: контент начебто з’являється, але змінити баланс, повторити вдалий світ або пояснити, чому квест вийшов неіграбельним, нікому.

Тому в передачу входить не лише код, а й весь шар налаштувань і домовленостей — за ним команда править генерацію без нашої участі й розуміє, що саме вона править.

  • Конфігурації правил — набори обмежувачів, ваг і пріоритетів за кожним типом контенту: рельєф і біоми, щільність точок інтересу, довжина і складність квестових ланцюжків, тон реплік для персонажів.
  • Схеми зв’язності — графи переходів між локаціями, вузлами квестів і гілками діалогів, з позначками, які зв’язки обов’язкові, які генеруються і де стоїть заборона на тупик.
  • Каталог шаблонів і словників — заготовки сцен, блоки реплік, списки сутностей та їхніх допустимих поєднань: правки тексту не ламають структуру.
  • Набір перевірок контенту — валідатори на недосяжні зони, розірвані ланцюжки, дублі нагород і репліки поза роллю персонажа; запускаються перед складанням.
  • Документація з відтворюваності — як зафіксувати стартове зерно та версію набору правил, щоб отримати той самий світ або той самий квест повторно.
  • Регламент правок — хто погоджує зміну правил, як вона тестується на вибірці, у який момент іде в основну гілку і як відкочується.
  • Інструкція передачі зміни — порядок дій для нового інженера або геймдизайнера: де дивитися логи генерації, куди писати правку, що перевірити перед викаткою.

Такий комплект закриває головний ризик — залежність від підрядника. Правила лежать поруч із проєктом, зміни проходять через зрозумілу процедуру, і команда сама налаштовує баланс, не чекаючи на нас.

Кейс: зв’язність світу до і після впровадження

Точка старту

Кооперативна рольова гра з відкритими локаціями на Unity. Світ збирався вручну: дизайнери розкладали біоми, розставляли точки інтересу і зв’язували квестові ланцюжки.

Один регіон збирали близько трьох тижнів, і майже третина перевірок ламалася на стиках — квест відправляв гравця до персонажа, якого генератор не створив у цій локації, нагорода посилалася на неіснуючий предмет. Конфлікти шукали за логами, на кожну ітерацію йшло ще день-два.

Що змінили і що вийшло

Ми перевели складання на граф зв’язності: біоми, квести, діалоги та таблиці здобичі описуються як вузли з явними залежностями, а правила валідації перевіряють цілісність на кожному кроці генерації.

Світ збирається із сіда — той самий сід дає відтворюваний результат, тому розриви ловляться під час складання, а не в готовій грі.

На тому самому обсязі контенту термін складання регіону скоротився з трьох тижнів до двох-трьох днів, частка розривів логіки на виході впала з 28% до 4%, обсяг ручних правок після генерації — приблизно у шість разів. Звільнені години команда витратила на баланс і унікальні сюжетні сцени.

Звіт валідатора показує, який вузол породив конфлікт і за яким правилом, — тому нову механіку додають, не боячись зламати вже зібрані світи. Правки дизайнера зберігаються як явні правила поверх генератора і не губляться під час наступного складання.

Що робити, якщо частина світу вже зібрана вручну?

Уже випущений вручну контент — не перешкода, а опорний шар: він задає стиль, щільність і логіку зв’язків, які генератор зобов’язаний враховувати. Перший крок — інвентаризація: у яких об’єктів є стабільні ідентифікатори, а які прив’язані до координат сцени.

Без стабільних ключів автоматика не відрізняє «зайнято» від «вільно» і вставляє нові сцени поверх наявних.

Далі йдемо не «все одразу», а по регіонах: ручні об’єкти потрапляють до реєстру як закріплені, генератор обходить їх і заповнює лише вільні простори. Випущене залишається недоторканим, автоматика додає локації, зв’язки та наповнення навколо.

Сценарій міграції Коли підходить Обмеження
Острівна генерація на нових регіонах Ручний контент випущено і не переробляється Потрібна розмітка меж і спільний реєстр об’єктів
Доповнення наявних локацій Потрібно розширити вже зібрані сцени Чим щільніша ручна забудова, тим вужча свобода генератора
Поступове заміщення за регіонами Ручні сцени застаріли, але залишаються зразком стилю Потрібні стабільні ключі та перевірки зв’язності квестів
Повна повторна генерація Ручний матеріал був прототипом Ручні правки не переносяться, ключові сцени закріплюють вручну

Сумісність із ручним складанням тримається на трьох речах: єдиний реєстр сутностей, фіксоване зерно генерації на регіон і правила закріплення, що забороняють перезапис ручного об’єкта.

Додатково ставимо перевірки зв’язності квестів і прохідності маршрутів — вони ловлять розриви, які виникають саме на стику автоматики з ручними сценами.

Міграція йде по одному регіону за раз, тому відкат можливий на рівні регіону, а не всього проєкту. Частка згенерованих локацій зростає, ручний матеріал залишається валідним, і переробляти випущене не доводиться.

Технічні сумніви: зв’язність, стиль, правки

Стиль і канон тримаються не на «пам’яті» моделі, а на шарі перевірок навколо неї. Факти про світ, імена, стосунки та хронологія дістаються пошуком по базі канону і підставляються в контекст — генератор не вигадує їх заново.

Поверх працюють стильові якорі: еталонні репліки, лексичні обмеження, заборона на терміни поза сетингом. Результат проходить автоперевірку на суперечності і лише потім потрапляє в гру.

Нетипова дія гравця — не збій, а штатний режим. Коли сцена виходить за сценарій, генератор не вигадує нову механіку на ходу, а вибирає найближчий допустимий наслідок із правил світу і фіксує його в журналі стану — той стає опорою для наступних сцен.

Що якщо гравець піде проти логіки світу?

Генератор не намагається виправдати будь-яку дію. За межами правил він видає нейтральну реакцію і веде сцену в найближчу стійку гілку — сюжет не рветься, а гравець отримує наслідок, а не відмову системи.

Як репліки тримають стиль під час довгої сесії?

Стиль задається не одним запитом, а профілем персонажа: словник, довжина фраз, табу на теми й формулювання. Профіль підставляється в кожну генерацію, а розходження відсіюються автоматичною перевіркою до складання.

Як правки сценариста перетворюються на донавчання?

Правки збираються як пари «згенеровано — прийнято в реліз». На них донавчається окремий модуль, а регресійний набір сцен перевіряє, що стиль і канон не просіли: розходження відкочує правку, а не потрапляє в гру.

Обговоримо задачу: що надіслати для оцінки

Щоб повернутися з оцінкою та планом робіт, а не з чергою уточнювальних дзвінків, нам потрібен мінімальний набір вхідних. Зберіть те, що вже є: опис світу, прототипи, приклади-орієнтири, чернетки текстів.

Цього достатньо, щоб оцінити обсяг процедурної генерації контенту і одразу зафіксувати, за якими ознаками ви будете приймати результат.

  • Формат продукту. Жанр, цільові платформи та приблизний обсяг: скільки типів локацій, ліній квестів і діалогових сцен має видавати генератор за одну ігрову сесію.
  • Приклади-орієнтири. Дві-три гри, які вважаєте еталоном, і що саме в них важливо: щільність подій, зв’язність сюжетних гілок, стиль реплік персонажів.
  • Правила світу. Лор, фракції, заборонені поєднання предметів і сюжетні ходи, які ламають сетинг. Це основа для обмежень, на яких тримається правдоподібність генерації.
  • Наявні дані. Таблиці, тексти, графи квестів, розмітка діалогів — у якому вигляді вони лежать зараз і що з цього можна перевикористати як джерело.
  • Обмеження проєкту. Терміни, вимоги до обсягу складання, де має відбуватися генерація: на пристрої гравця чи на сервері, з інтернетом чи без.
  • Критерії приймання. За якими вимірюваними ознаками ви приймете роботу: частка зв’язних квестів без тупиків, відтворюваність (один і той самий вхід дає той самий світ), час генерації однієї сцени, частка текстів, що пройшли перевірку правил.
  • Порядок співпраці. Хто на вашому боці ухвалює рішення і дає зворотний зв’язок, як часто готові дивитися проміжний результат і на якому етапі підключаєте тестувальників.

Отримавши цей список, ми повертаємося з оцінкою, розбитим за етапами планом і проєктом критеріїв приймання. Опишіть задачу і додайте вхідні — запропонуємо, з чого почати.

Напрямки AI-розробки

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1394
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1369
  • Розробка логотипу компанії B2B Advance
    Розробка логотипу компанії B2B Advance
    816
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1141