ChatGPT у геймдеві: коли він корисний, а коли до нього краще не звертатися? Розповідають українські розробники ігор

18 лютого ChatGPT офіційно почав працювати в Україні — і чимало фахівців різних галузей кинулися проводити з ним експерименти. А як щодо українського геймдеву?

Ми запитали в розробників, чим ChatGPT (або схожі інструменти) можуть бути корисні для створення ігор. Чи вже вдалося геймдев-фахівцям успішно застосувати ChatGPT? У яких випадках ChatGPT може написати вдалий код, а коли до нього краще не звертатися? Коли до цього інструменту краще ставитися скептично? Публікуємо відповіді українських геймдев-спеціалістів.

«ChatGPT на 100% розуміє, чого я хочу, і йому не потрібно детально пояснювати професійні терміни». Герман Богданов, Principal Game Designer у компанії Plarium

Те, що нині відбувається з AI, мене щиро зацікавлює. Відчуття схожі на ті, що були в дитинстві, коли мій старший брат узяв мене на радіоринок. Він купив світлодіод і сказав, що той загориться, якщо під’єднати його до батарейки. Награвшись із пальчиковою батарейкою, я вирішив увіткнути його в "крону"‎. Я був здивований, як же яскраво горить світлодіод. І ще більше здивувався, коли він перегорів.

"Чому це сталося? Як це взагалі працює?"‎ — ці питання спонукали мене вивчати радіоелектроніку.

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

Наприклад, за порадою колег я з цікавості створив Telegram-бота, який звертається до OpenAI API та дає відповіді. Не знаючи Python, необхідний для написання бота (але знаючи C#, тобто володіючи інформацією про мови програмування), я через ChatGPT приблизно за чотири години ‎"написав" код бота.

ChatGPT створив план:

  • як встановити Python та під’єднати бібліотеки;
  • де орендувати сервер для бота та як робити коміти на нього.

Потім ми послідовно написали код, налагодили його, і все запрацювало. ChatGPT детально пояснював усі кроки та код.

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

ChatGPT чудово розуміє суть запиту. Я експериментував і давав йому опис вигаданих функціональностей у грі. Так само, як я б давав цей запит геймдизайнеру. ChatGPT на 100% розуміє, чого я хочу, і йому не потрібно детально пояснювати професійні терміни. Наприклад, що таке «баланс» і що легендарний герой кращий, ніж рідкісний. Він це знає.

Це дає змогу проводити гіпотетичні дослідження на кшталт: «Ось так працює функціональність. Уяви, що ти гравець. Як би ти вчинив?». На такому рівні розуміння технології це допомагає ще раз перевірити свої теорії під час розроблення правил гри.

ChatGPT чудово програмує. Це відкриває можливості для швидкого написання коду симуляцій «без формул» для перевірки балансів / формул. Розрахунки з Google Sheets можна перевести в код і симулювати Use Cases для великої кількості гравців.

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

Експериментуючи та читаючи документацію, ми дізналися, чому так відбувається. ChatGPT — це модель мовного AI, яка не «рахує» (не використовує CPU для розрахунків), а генерує послідовність слів з огляду на запит і знання. Чат знає правила математики та застосовує їх, але використовує тільки можливості мови.

Наприклад, попросимо його детально розповісти, як він порівнює два великих числа: 1 000 000 000 та 1 000 700 000.

ChatGPT скаже, що для порівняння він почав оцінювати числа послідовно за цифрами зліва направо і на 6-й цифрі знайшов відмінності, а оскільки 7 більше за 0, то друге число більше.

Зараз це обмеження можна обійти написанням Python-коду для ситуацій, де потрібні математичні розрахунки.

Ми продовжуємо досліджувати можливості AI. Це чудовий інструмент для навчання. Але ми повинні бути готові до сценарію, що якщо все, що відбувається зараз, приведе до нової інформаційної революції (дуже хочеться вірити в це), то AI ніколи не замінить професіонала, який знає його можливості.

«Для генерування коду ChatGPT радше заважає». Олег Нечитайло, Associate Lead Programmer Ubisoft

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

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

Ще він вигадує. Якщо він не знає про якусь бібліотеку, то він її просто вигадає чи вигадає функції, що зроблять задачу простіше. Це особливо проблематично, коли ви використовуєте бібліотеки із закритим кодом (внутрішні чи, наприклад, SDK для консолей). Як плюс можна подумати про використання ChatGPT для дизайну API бібліотек для їхньої більшої інтуїтивності [усміхається].

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

Тому для генерування коду в роботі — це не зручна і не корисна річ. GitHub Copilot і Visual Studio Intellicode (як мінімум для C#) показують набагато більш практичні результати, оскільки вони обмежуються маленьким контекстом коду і працюють дуже швидко, що допомагає в роботі.

ChatGPT може бути корисним для генерування, наприклад, текстового плейсхолдер-контенту, як, наприклад, автоперекладачі стали корисними для плейсхолдер-локалізації. Але для генерування коду він радше заважає.

Наступна ітерація ChatGPT (Bing Assistant) виглядає більш цікаво саме як пошукова система. Вона здатна давати посилання на першоджерела і взагалі показує більш точний результат щодо фактичної інформації, мало вигадує. Але генерування коду через AI мені не здається перспективним проєктом. Оскільки ліниві програмісти вже мають типовий код у бібліотеках і типові помилки в аналізаторах. А писати правильні запити до AI — це теж по суті код, але без формального синтаксису.

«Що менша команда чи компанія, то простіше їй використовувати умовний ChatGPT». Олександр Піндик, AI Lead Engineer World of Tanks у компанії Wargaming

Такі інструменти, як ChatGPT, Stable Diffusion, Midjourney та інші, вже зараз можуть непогано допомагати при розробці ігор. Але головне — це саме допомагати. Бо повністю виконати роботу за людину чи взагалі замінити її вони не можуть. Та насправді в них немає такої мети. Головна ціль — стати помічником, який забере на себе частину роботи та дасть змогу зосередитися на головному.

Щодо прикладів — то можна почати з перекладу та адаптації тексту. Я пробував переклад з української на англійську або писати фразу у стилі 18 століття, і ChatGPT зробив це дуже якісно. Також він добре пише тексти листів або запитів у корпоративному стилі.

Ще один приклад цікавого використання ChatGPT — це ставити йому питання. Наприклад: «What is the best approach for developing hierarchical pathfinding?». І він непогано розповів про основні підходи, далі я попросив його розказати більше про один з них. Цієї інформації було достатньо, щоб я отримав напрям і вже сам почав поглиблено вивчати питання. Тож ця система може стати довідником, який допоможе зрозуміти, куди рухатися, особливо коли ви не маєте змоги поставити питання людині, яка вже має досвід у цій сфері.

Щодо нейронних мереж, які генерують картинки, то вони можуть стати чудовим доповненням для художників (Artists). Ці інструменти можуть закрити питання референсів і пошуку якогось стилю чи ідей. Я бачив приклади артистів у геймдеві, які так використовують нейронні мережі, і вони задоволенні результатом. Але ці художники ніколи не використовують результат як фінальну роботу. Зазвичай вони беруть її як основу і дороблюють або ж виконують свою роботу в такому стилі.

Таких прикладів можна знайти багато. Головне — ставитися до таких інструментів як до асистентів, які допомагають зробити щось, а не роблять це за вас. І, звісно, перевіряти відповіді самому, адже «асистент» може помилятися. І він помиляється, особливо в складних питаннях. Є ще один нюанс. Що менша команда чи компанія, то простіше їй використовувати умовний ChatGPT. Бо у великих компаній постає питання безпеки, адже ви не знаєте, як OpenAI використовує ті дані, які ви відправили, коли ставили питання ChatGPT. Іноді буває так, що інформація дуже чутлива і її не варто розголошувати. Тож, думаю, скоро ми побачимо обмеження та чіткі правила використання таких інструментів у корпораціях.

Чи може ChatGPT писати код? Коротка відповідь: так, може, АЛЕ... В нього є багато обмежень.

По-перше, ChatGPT має обмеження щодо коду, який він може згенерувати. Адже він пише код на основі того, що вже було у базі, на якій він навчався. Тож цей код, найімовірніше, був на GitHub, Stack Overflow, брався з документації для бібліотек чи з інших відкритих джерел. Тому ChatGPT може добре написати код, який використовує популярні бібліотеки, робить базові речі, наприклад, обгортку на API для доступу у базу даних, розв’язує задачі з LeetCode та демонструє приклади реалізації відомих алгоритмів. Також ChatGPT непогано може впоратися з DevOps-скриптами, наприклад, для AWS чи скриптами для системних адміністраторів. А ще, на мою думку, регулярки він пише краще за 95% людей.

Що ще цікаво, він може пояснити, що конкретно робить код, який він згенерував. Це допомагає при навчанні чи розборі нової теми. Але це зрозумілі задачі, поширені приклади, а також невеликі проєкти-приклади. Повністю написати складний проєкт ChatGPT не зможе. Крім того, у кожного комерційного проєкту є своя кодова база, яку ChatGPT не знає. Тож якщо вам потрібно додати якусь механіку до гри, ChatGPT чи Copilot просто не зможе це зробити, бо він не знає про всі залежності та нюанси проєкту. Також йому важко буде розробити нову механіку, про яку він не знає, якщо в нього не було прикладу, як це робили.

По-друге, ChatGPT не гарантує того, що код не має помилок, а іноді й того, що він взагалі може запуститися (особливо C++ код). Тож увесь код, який ви отримуєте, треба ретельно перевіряти як на помилки, так і на те, наскільки він ефективний. Тож як і з текстом та іншими завданням, людина повинна перевіряти результат роботи нейронної мережі та корегувати його.

І є питання NDA та безпеки компанії. Не всюди можна використовувати Copilot чи ChatGPT, адже є код, який дуже чутливий до того, щоб він потрапив за межі компанії. Ми не можемо гарантувати те, що все, що ми даємо нейронним мережам, не буде використовуватися для їхнього навчання чи не потрапить до третіх осіб. Тож треба обережно ставитися до того, як використовувати ChatGPT і який код продукту можна їй давати як приклад чи базу для доробки. Тому я б радив використовувати такі інструменти для навчання, регулярок чи якихось задач, які не порушують NDA компанії, і, звісно, ретельно перевіряти результат, перед тим як використовувати його у продакшені.

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

ChatGPT і подібні системи — це цікавий помічник, який може частину рутини забрати на себе, допомогти під час R&D, Brainstorm чи в навчанні. Але все одно треба бути спеціалістом у свої галузі, щоб ефективно використовувати ці інструменти.

«Це як більш зручний, але менш надійний Stack Overflow». Павло Зимницький, Senior Programmer в Ubisoft

Щодо ChatGPT і коду — якщо коротко, то цей інструмент може придумувати речі, які не відповідають дійсності. Наприклад, він може назвати вигадані вимоги для використання того чи іншого API, а коли йому вкажуть на те, що цього немає в документації, він може відповісти щось на кшталт «because it’s typically used like this, it’s safe to assume that it should only be used like this».

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

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

Якщо використовувати ChatGPT у такий спосіб, то його помилки не такі критичні й можна зекономити час на те, щоб в’їхати в якусь нову тему.

Якщо врахувати специфіку Ubisoft, то в нашій роботі ChatGPT має обмежений потенціал, тому що він не навчався на наших внутрішніх ресурсах і коді. Більшість наших задач пов’язані саме з особливостями внутрішніх рушіїв, бібліотек та інфраструктури. Те саме стосується third-party інструментів і бібліотек, які не є публічними (що типово для геймдеву загалом).

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

То чи варто взагалі звертатися до ChatGPT за кодом? Саме за готовим кодом — ні.

У плані коду це як більш зручний, але менш надійний Stack Overflow. Як і Stack Overflow, він не має готового рішення для будь-якої проблеми. Його відповіді треба ретельно перевіряти, але він може бути корисним при правильному використанні.

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

Але і в такому вигляді (допускаючи можливість навчання на непублічних матеріалах у майбутньому), думаю, стане в пригоді в багатьох ситуаціях, зокрема в геймдеві.

«Це конвеєр, що прискорює процес виробництва». Тарас Жуков, Communications & Employee Engagement Specialist в Ubisoft

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

Однак такі моделі можуть стати корисним інструментом. І до них потрібно ставитися саме так. Це візок, який дозволяє тягати набагато більше каменів за раз, це конвеєр, що прискорює виробництво, це оптоволокно, котре прискорює зв’язок. Як це використати у геймдеві?

ШІ-модель можна використовувати для того, щоб генерувати велику кількість чернеток. По суті, вона замінює майстру його підмайстра. Тепер набагато простіше подолати «проблему білого аркуша». Один запит — і модель генерує кілька відповідей. Арт, сюжет, код, ідея, структура. Це все не ідеально, іноді помилково або, як у випадку з кодом, абсолютно абсурдно.

Але саме це і добре. Тому що ШІ-модель може видати абсолютно абсурдний результат. Результат, до якого не могла додуматися жива людина. І це дає точку старту думки. Точку, від якої жива людина зі своїм чуттєвим досвідом, розумом і наглядом, зможе відштовхнутися і рушити далі.

Я вважаю, що overall дасть помітний приріст у якості та швидкості генерування контенту. Створення ігор — складний і багатовекторний процес, у якому залучені люди різних професій. Це найскладніше медіа, і передати цей процес на аутсорс поки що неможливо. Ігри як основи людських взаємодій надто фундаментальні. Але ШІ-моделі можуть помітно спростити та прискорити процес. І це велике благо.

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

Підписуйтеся на Telegram-канал @gamedev_dou, щоб не пропустити найважливіші статті і новини

👍ПодобаєтьсяСподобалось5
До обраногоВ обраному4
LinkedIn


Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

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

Підписатись на коментарі