одиниці
1. Вступ до штучного інтелекту в розробці ігор: ролі, межі, перевірка, авторське право та етика 2. Прототип і механічний дизайн: швидка ітерація від ідеї до ігрового ядра 3. Системи поведінки та діалогу NPC: штучний інтелект, який оживляє персонажа 4. Процедурне генерування контенту (PCG): рівень, карта, квест і розповідь 5. Об’єкти та візуальне виробництво: концепт-арт, 2D/3D і текстури 6. Виробництво звуку, музики та ефектів: чутний світ гри 7. Генерація коду та інтеграція двигуна: Unity (C#) і Unreal (Blueprint/C++) 8. Ігровий баланс, моделювання та економія: чесна гра з числами 9. Забезпечення якості (QA), налагодження та автоматизоване тестування 10. Авторське право, оригінальність, ліцензія та етика: вміст, який можна опублікувати та відповідальний 11. Наскрізний робочий процес, інтеграція виробничої лінії, управління та живе обслуговування
одиниця 7 / 11

Генерація коду та інтеграція двигуна: Unity (C#) і Unreal (Blueprint/C++)

Прибуток:

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

Гра програмна; Незалежно від того, наскільки добре він розроблений, він реалізований за допомогою коду. Ігровий движок — це інфраструктура, яка забезпечує роботу гри: Unity (широко використовуваний движок зі сценаріями на C#) і Unreal Engine (движок, що використовує C++ і візуальну мову сценаріїв Blueprint) є двома найпоширенішими. ШІ є одним із найдосконаліших допоміжних засобів у створенні коду: контролер програвача, система інвентаризації, кінцеві автомати, збереження/завантаження, логіка інтерфейсу, налагодження та рефакторинг (рефакторинг коду без порушення його поведінки). Але код гри має свої підводні камені: продуктивність (частота кадрів), життєвий цикл движка, безпека багатокористувацької гри. У цьому розділі ви дізнаєтесь, як безпечно та ефективно використовувати штучний інтелект у коді гри.

Критичний принцип: двигун і контекст версії

Якщо штучний інтелект не знає, для якого механізму та версії він пише, він створить заплутаний, застарілий або неіснуючий API. Тож у кожному запиті коду вказуйте контекст двигуна, версії, мови та архітектури. «Написати рух гравця для Unity» слабкий; «Unity 2022.3, C#, нова система введення, рух на основі фізики Rigidbody» є потужним. Укажіть, чи хочете ви Blueprint чи C++ у Unreal, і яку версію ви використовуєте.

Захистіть потік коду крок за кроком:

  1. Укажіть контекст (механізм, версія, мова, поточна архітектура, обмеження).
  2. Хочеться, щоб він був невеликим і визначеним (окремий компонент, а не вся система).
  3. Прочитайте та зрозумійте код (зрозумійте, що він робить рядок за рядком; не вставляйте код, який ви не розумієте).
  4. Збірка та тестування (запуск на двигуні; профіль — вимірювання продуктивності).
  5. Рефакторинг та інтеграція (відповідність стандарту проекту).
Порада: запитуючи у ШІ код, скажіть «пояснити з коментарями». Ваша мета - зрозуміти код; Впровадження в проект коду штучного інтелекту, який ви не розумієте, призведе до накопичення непоправних боргів. Також попросіть код у невеликих фрагментах, які можна перевірити: замість системи з 500 рядків компонент із 30-50 рядків, який виконує одну визначену роботу, легко перевірити та інтегрувати.

Пастки, характерні для коду гри

Продуктивність. Код гри виконується 30-60+ разів на секунду. ШІ може виконувати дорогі операції (виділення пам’яті, пошук, маніпулювання рядками) у цикл оновлення, який виконується в кожному кадрі; це зменшує частоту кадрів. Профілюйте критичні коди продуктивності та встановіть обмеження ШІ, такі як «виконувати кожен кадр, без виділення».

Життєвий цикл двигуна. ШІ іноді плутає, коли викликаються спеціальні методи, наприклад Awake/Start/Update в Unity, BeginPlay/Tick в Unreal. Виявляйте помилки життєвого циклу шляхом тестування.

Багатокористувацька безпека. Це найбільш критична проблема з точки зору ІТ/безпеки. Ніколи не довіряйте клієнту в багатокористувацькій грі: клієнтом на комп’ютері гравця можна маніпулювати для шахрайства. Перевірте критичний статус, такий як бали, пошкодження, гроші на сервері (авторитетний сервер). Контролюйте мережевий код, згенерований штучним інтелектом, за цим принципом; Якщо штучний інтелект створив уразливість, що викликає довіру клієнта, виправте її. Використовуйте цю інформацію лише для захисту та перевірки власної гри; Несанкціонований доступ до чужого сервера або його шахрайство є незаконними та неетичними.

Застереження: код, створений штучним інтелектом, може містити вразливості (відсутня перевірка введення, довіра клієнта, маніпуляції з файлом збереження). Не приймайте сліпо код; Виконайте перевірку безпеки, зокрема мережі, економіки та коду збереження.

Заборгованість за архітектуру та обслуговування

ШІ швидко виконує окремі функції; Але архітектура гри — як системи розділені, як вони спілкуються одна з одною, де зберігаються дані — це довгострокове рішення, і воно належить людині. Якщо ви скажете штучному інтелекту «написати весь інвентар, боротьбу та систему збереження разом», ви отримаєте робочий, але тісно пов’язаний, складний у обслуговуванні клубок, який не розширюється. Натомість ви розробляєте архітектуру, використовуєте штучний інтелект для заповнення невеликих компонентів визначеними інтерфейсами. Хороша архітектура впливає на розвиток гри: неправильні рішення повертаються через рік як технічний борг, який затримує кожну нову функцію.

Іншим джерелом заборгованості за технічне обслуговування є код, який входить у проект, не будучи зрозумілим. Система, написана ШІ, може працювати сьогодні; Але коли через півроку його потрібно замінити, і ніхто не пам’ятає, що вони зробили, борг перетворюється на відсотки. Ось чому важливі дві дисципліни: читання та розуміння коду під час виробництва та запит на уточнюючі коментарі від ШІ. Як правило, не вставляйте у свій проект жодного коду ШІ, який ви не можете переписати самостійно або принаймні пояснити рядок за рядком. AI дає швидкість; Ваша дисциплінованість забезпечує стійкість.

три міні-чохла

Випадок 1 — Контекст випуску запобіг помилці. Програміст спочатку сказав: «Напишіть інвентар для Unity»; код використовував старий API, він не компілювався. Потім він дав контекст «Unity 2022.3, C#, на основі ScriptableObject»; код, скомпільований вперше та відповідний проекту. Контекст заощадив годину налагодження.

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

Випадок 3 — Виявлено вразливість системи безпеки. У багатокористувацькій грі код, згенерований штучним інтелектом, обчислював шкоду клієнту та повідомляв про це серверу; це було відкрито для шахрайства (клієнт міг завдати нескінченної шкоди). Код зроблено серверно-авторитарним (сервер розраховує збитки). Аудит запобіг скандалу з обманом після публікації.

Чотири шаблони, які можна копіювати

1) Запит коду з контекстом:

Двигун: Unity 2022.3. Мова: C#. Архітектура: [напр. на основі компонентів]. Обмеження: розподіл в оновленні; бути читабельним і коментованим. Завдання: [один, визначений компонент, напр. «контролер символів подвійного стрибка»]. Переконайтеся, що кожен API, який ви використовуєте, має цю версію; Якщо ви не впевнені, дайте мені знати.

2) Пояснення/огляд коду:

Поясніть наступний код рядок за рядком і напишіть (1) що він робить, (2) можливі проблеми з продуктивністю (розподіл кадрів, дорогий пошук), (3) можливі помилки, (4) пропозиції щодо покращення. Код: [вставити]

3) Аудит безпеки для кількох гравців:

Перегляньте наведений нижче код багатокористувацької гри на предмет безпеки. Зокрема: місця, де клієнт є довіреним, критичний стан, який потрібно перевірити на сервері (пошкодження, бали, гроші), відсутність перевірки введення. Запропонуйте виправлення, щоб зробити сервер авторитарним. Це лише для захисту моєї власної гри. Код: [вставити]

4) Рефактор, орієнтований на профіль продуктивності:

Цей код виконується на кожному кадрі та зменшує частоту кадрів: [код]. Знайти розподіл, дорогі пошуки та непотрібні операції кадр за кадром; Оптимізуйте без порушення поведінки за допомогою кешування та менш частих оновлень. Поясніть зміни.

Слабка підказка / Сильна підказка

Слабка підказка:

Напишіть систему збереження в Unity.

Немає версії, формату, обсягу даних, безпеки; Результат загальний і ризикований.

Потужна підказка:

Двигун: Unity 2022.3, C#. Завдання: система збереження/завантаження на основі JSON. Необхідно зберегти: місцезнаходження гравця, інвентар, прогрес. Обмеження: отримати керування помилками проти пошкодження файлів; Додайте перевірку цілісності (хеш) до файлу збереження, щоб запобігти шахрайству, легко змінивши його гравцем. Закоментуйте код і переконайтеся, що кожен API має цю версію.

Контроль версій, область дії, обробка помилок і перевірка цілісності посилюють результат.

Контекстна таблиця двигуна/мови

двигун

мова

Що ви повинні дати ШІ

особливу увагу

єдність

C#

Версія, система введення/фізики

Розподіл оновлення, життєвий цикл

нереальний

Blueprint

Версія, контекст вузла

Візуальні логічні межі

нереальний

C++

Версія, модульна структура

Пам'ять, GC, макроси

мультиплеер

обидва

модель мережі

Ведучий-авторитаризм

Поширені помилки

  • Двигун/версія не вказується. Він походить із застарілого або створеного API.
  • Довіряти коду, не розуміючи його. Накопичується непоганий борг.
  • Не вимірювання ефективності. Покадрове розподілення тихо зменшує частоту кадрів.
  • Довіра до клієнта. У багатокористувацькій грі існує вразливість до шахрайства.
  • Бажання отримати всю систему одразу. Маленький шматочок, який можна перевірити, безпечніший.

Підсумовуючи

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

Аплікаційне завдання

Виберіть невеликий компонент (наприклад, подвійний стрибок або простий інвентар). Згенеруйте код, надавши механізм і версію з шаблоном «запит коду з контекстом». Потім усуньте ризики щодо продуктивності та помилок, перевіривши той самий код за допомогою шаблону «Опис коду/перегляд». Скомпілюйте та протестуйте код у двигуні.

контрольний список

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