Единицы
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. Выявляйте ошибки жизненного цикла путем тестирования.

Многопользовательская безопасность. Это наиболее критичная проблема с точки зрения ИТ/безопасности. Никогда не доверяйте клиенту в мультиплеере: клиентом на компьютере игрока могут манипулировать с целью мошенничества. Проверьте критический статус, такой как очки, урон, деньги на сервере (авторитетный сервер). Контролируйте сетевой код, генерируемый ИИ, в соответствии с этим принципом; Если ИИ создал уязвимость, вызывающую доверие клиентов, исправьте ее. Используйте эту информацию только для защиты и проверки своей игры; Несанкционированный доступ к чужому серверу или мошенничество на нем являются незаконными и неэтичными.

Внимание: код, сгенерированный ИИ, может содержать уязвимости (отсутствует проверка ввода, доверие клиента, манипуляции с файлами сохранения). Не принимайте слепо код; Выполните проверку безопасности, особенно сети, экономики и сохраните код.

Архитектурный и эксплуатационный долг

ИИ быстро выполняет отдельные функции; Но архитектура игры — то, как системы делятся, как они общаются друг с другом, где хранятся данные — это долгосрочное решение, и оно принадлежит человеку. Если вы скажете ИИ «написать всю систему инвентаря, боя и сохранения вместе», вы получите работающий, но тесно связанный, трудно поддерживаемый и нерасширяемый клубок пряжи. Вместо этого вы проектируете архитектуру и используете ИИ для заполнения небольших компонентов с определенными интерфейсами. Хорошая архитектура имеет значение по мере роста игры: плохие решения возвращаются через год в виде технического долга, который задерживает каждую новую функцию.

Еще одним источником задолженности по обслуживанию является код, который входит в проект, будучи непонятым. Система, написанная ИИ, могла бы работать сегодня; Но когда через полгода приходится его менять и никто не помнит, что делали, долг превращается в проценты. Вот почему необходимы две дисциплины: чтение и понимание кода во время производства и запрос уточняющих комментариев от ИИ. Как правило, не добавляйте в свой проект код ИИ, который вы не сможете переписать самостоятельно или хотя бы объяснить построчно. ИИ дает скорость; Ваша дисциплина дает устойчивость.

три мини-кейса

Случай 1. Контекст выпуска предотвратил ошибку. Программист сначала сказал: «Напишите инвентарь для Unity»; код использовал старый API, он не компилировался. Затем он дал контекст «Unity 2022.3, C# на основе ScriptableObject»; код скомпилировался с первого раза и соответствовал проекту. Контекст сэкономил час отладки.

Случай 2. Ловушка производительности. В одной игре частота кадров была низкой. При профилировании было видно, что метод Update, созданный ИИ, выделял новый список в каждом кадре и искал врагов. Исправлен код с кэшированной ссылкой и неквадратичным обновлением, увеличивающий частоту кадров с 42 до 60.

Случай 3. Обнаружена уязвимость безопасности. В многопользовательской игре код, сгенерированный ИИ, подсчитал ущерб, нанесенный клиенту, и сообщил об этом серверу; это было открыто для мошенничества (клиент мог нанести бесконечный урон). Код сделан серверно-авторитарным (сервер подсчитывает ущерб). Проверка предотвратила скандал с мошенничеством после публикации.

Четыре копируемых шаблона

1) Запрос кода с контекстом:

Движок: Юнити 2022.3. Язык: С#. Архитектура: [например. на основе компонентов]. Ограничение: выделение при обновлении; быть читаемым и комментируемым. Задача: [один определенный компонент, например. «контроллер персонажа с двойным прыжком»]. Убедитесь, что каждый используемый вами API находится в этой версии; Если вы не уверены, дайте мне знать.

2) Объяснение/обзор кода:

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

3) Аудит безопасности многопользовательской игры:

Проверьте следующий многопользовательский код на предмет безопасности. Конкретно: места, где клиенту доверяют, критическое состояние, которое необходимо проверить на сервере (урон, очки, деньги), отсутствие проверки ввода. Предложите исправление, чтобы сделать сервер авторитарным. Это просто защита моей игры. Код: [вставить]

4) Рефакторинг, ориентированный на профиль производительности:

Этот код выполняется для каждого кадра и снижает частоту кадров: [код]. Поиск выделений, дорогостоящих поисков и ненужных покадровых операций; Оптимизируйте, не нарушая поведение, за счет кэширования и менее частых обновлений. Объясните изменения.

Слабая подсказка / Сильная подсказка

Слабая подсказка:

Напишите систему сохранения в Unity.

Нет версии, формата, объема данных, безопасности; Результат общий и рискованный.

Мощная подсказка:

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

Управление версиями, область действия, обработка ошибок и проверка целостности повышают надежность выходных данных.

Таблица контекста механизма/языка

двигатель

язык

Что вы должны дать ИИ

особое внимание

единство

С#

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

Распределение обновлений, жизненный цикл

нереальный

План

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

Ограничения визуальной логики

нереальный

С++

Версия, структура модуля

Память, сборщик мусора, макросы

мультиплеер

оба

сетевая модель

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

Распространенные ошибки

  • Не указан двигатель/версия. Это происходит из-за устаревшего или выдуманного API.
  • Доверять коду, не понимая его. Накапливается невыполнимый долг.
  • Не измерять производительность. Покадровое распределение незаметно снижает частоту кадров.
  • Доверие клиенту. В мультиплеере есть уязвимость к мошенничеству.
  • Хочет всю систему сразу. Небольшая, проверяемая деталь безопаснее.

В заключение

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

Задача приложения

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

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

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