Unreal Engine — компиляция всех Blueprints в проекте. Как, а главное — зачем
Простой инструмент, который позволяет отслеживать «здоровье» проекта, ловить баги на ранних этапах и точнее определять момент возникновения ошибки.
Ошибки/предупреждения времени компиляции могут возникать не только во время непосредственной работы с blueprint, но и в результате внешних изменений, таких как:
- Изменение типа/спецификаторов доступа/метаинформации переменной/метода;
- Изменение сигнатуры метода;
- Удаление переменной/метода;
- Удаление файлов, на которые ссылается blueprint;
- И многое, многое другое.
При этом если затронутая логика используется редко, ошибка может жить незамеченной в течение долгого времени.
К счастью для нас, инженеры Epic снабдили свой движок полезным инструментом, который позволяет проверить все blueprints проекта на наличие ошибок/предупреждений.
CompileAllBlueprints
Дисклеймер:
Я буду указывать полные пути до файлов так, как они расположены у меня в системе.
Не забывайте менять на подходящие в вашем случае. :)
Для запуска понадобятся:
1. UE4Editor-Cmd.exe, найти можно по адресу
2.. uproject файл проекта, лежит в корне, в моем случае
3. Терминал/командная строка/текстовый редактор — в зависимости от того, как вы будете запускать проверку.
Способ 1 — запуск из командной строки
Здесь все просто — открываем любимый терминал и вызываем
По экрану поползут логи компиляции. В зависимости от размера проекта процесс может занимать от десятка секунд до нескольких минут.
Если все хорошо, ближе к концу простыни лога появится воодушевляющее сообщение
В противном случае программа подскажет не только файлы с ошибками, но и сами ошибки (в данном случае я создал bool переменную, использовал ее в branch ноде, после чего переменную удалил из variables, но оставил в редакторе):
Способ 2 —. bat
Каждый раз запускать консоль, вспоминать/вводить/копировать длинные пути до нужных файлов — то еще удовольствие. Намного проще один раз задать все в скрипте и запускать проверку двойным кликом по файлу.
Поэтому в корне проекта я создал compileBP.bat с таким содержанием (на самом деле не совсем, но это детали):
Его запуск открывает окно cmd.exe с логами. После завершения проверки окно любезно подождет пользовательского ввода.
Способ 3 — парсинг файла логов
Можно заметить, что полезной информации в логах едва наберется на 5 строчек, так зачем любоваться на все остальное, когда машина может отфильтровать нужное?
Для удобства и облегчения автоматизации процесса можно задать имя файла, в который будет сохраняться лог исполнения. Для этого достаточно к основной команде добавить аргумент -log=BPCompileLog.txt (имя файла можете заменить по вкусу).
А дальше все зависит только от вашей фантазии. Для рабочего проекта я остановился на следующей последовательности:
- Каждый коммит, затрагивающий код, запускает проверку на тестовой машине;
- В случае обнаружения ошибок собирается информация о файлах с дефектами, а также коммитах (номер, пользователь и комментарий), совершенных с момента предыдущей проверки;
- Информация отправляется в Slack с человекочитаемым форматированием;
- Если ошибок не найдено, но предыдущая проверка закончилась неудачей, отправляется сообщение о том, что ошибки были исправлены.
Такие дела. Буду рад ответить на вопросы и обсудить трудности автоматизации в геймдеве. :)
Спасибо за статью! Я еще добавлю от себя хороший канал Life EXE:
https://www.youtube.com/channel/UCWlWoomx6NFIz4mzdqEcLsQ
В нем по автоматизации и тестингу тоже много полезного.
Поддерживаю! Слежу за каналом с момента основания.
У автора еще есть отличный курс на Udemy - https://www.udemy.com/course/unrealengine/
Мне очень помогло при переходе с Unity на Unreal.