Разработка Новой Игры От Wargaming С Использованием Rider Для Unreal Engine

Всем привет! Последние полтора года открыта программа раннего доступа Райдер для Unreal Engine — IDE для разработки игр на C++ с использованием Unreal Engine. Сегодня в программе участвуют десятки тысяч отдельных разработчиков игр, а также множество студий и крупных компаний-разработчиков игр.

Нам стало интересно узнать, почему эти люди ценят наш продукт, что им нравится и чего им не хватает.

Разработка новой игры от Wargaming с использованием Rider для Unreal Engine

Мы решили поговорить с Вячеслав Дубиковский — технический директор компании Варгейминг RED Варгейминг , который недавно начал свою работу в Москве.

Интервью провела Анастасия Казакова.

@anastasiak2512 , менеджер по маркетингу инструментов для .

NET и C++, и Александр Пирогов @apirogov , руководитель проекта Rider для Unreal Engine. Вячеслав, расскажите о проекте, над которым вы работаете.

Какая игра это? Мы еще не анонсировали проект; из-за соглашения о неразглашении я пока не могу говорить об этом подробно.

Но это будет новый сессионный научно-фантастический шутер от третьего лица.

Правильно ли я понимаю, что в качестве игрового движка вы используете Unreal Engine? Да все верно.

Мы пишем игру на C++ с использованием Unreal Engine (сейчас это версия 4.26, но мы потихоньку переходим на 4.27).

Проект вряд ли перейдет на Unreal Engine 5, так как в этой версии меняется рендеринг и поэтому придется менять весь уже подготовленный для игры арт.

Разработка новой игры от Wargaming с использованием Rider для Unreal Engine

Расскажите вкратце о структуре проекта.

Есть ли какие-то особенности? Какие технологии вы используете? Как я уже говорил, проект написан на C++ и построен на Unreal Engine. Мы активно используем как возможности отражения Unreal Engine, так и метапрограммирование шаблонов на C++.

Наш проект состоит из двух больших монорепозиториев: самой игры и ее движка.

Основная игровая логика размещена в общем модуле.

Основная проблема при работе в редакторах кода — механизм отражения UE. Мало кто может работать с кодом, заключенным в такое количество макроопределений, которые с точки зрения языка на самом деле ничего не значат. Rider для Unreal Engine, несомненно, отлично справляется с этой задачей! Сколько разработчиков задействовано в проекте? Какие инструменты они в основном используют? В команде около 25 программистов.

Треть из них используют Rider for UE, остальные работают в различных версиях Visual Studio. До Rider мы использовали Visual Studio — без плагинов, с плагином Visual Assist или с ReSharper C++.

Однако мы часто сталкивались с проблемами в работе редактора, независимо от того, подключали ли мы ReSharper C++ или работали без плагинов.

При использовании Visual Assist нам не хватило точности возможностей языка (хотя признаю, что сейчас что-то изменилось).

При этом Rider для Unreal Engine кажется нам явным лидером по производительности — по крайней мере, при работе с кодом Unreal Engine. Легко ли было перейти на Rider для Unreal Engine? Мое первое впечатление было: «Как здорово, что есть поддержка раскладки клавиш Visual Studio!» Теперь я могу применить здесь все знания и навыки, полученные во время работы в VS».

Поскольку интерфейс Visual Studio мне более знаком, в некоторых аспектах (например, при работе в отладчике) он мне кажется более удобным.

С другой стороны, интерфейс Rider очень приятен визуально.

Сменить инструмент, которым пользуетесь много лет, конечно, не каждому легко.

Многие люди продолжают использовать Visual Studio до сих пор.



Разработка новой игры от Wargaming с использованием Rider для Unreal Engine

Какие функции Rider for Unreal Engine оказались наиболее полезными для вашего проекта? Во-первых, это навигация, поиск вариантов использования, переход к объявлению символа, поиск наследников и предков символа — то, что мы делаем постоянно, и не только в нашем коде, но и в коде Unreal Engine. потому что код движка — это основная документация для разработчиков.

Также одним из ключей к эффективной работе с Unreal Engine является возможность быстро находить ссылки на поля и функции и моментально перемещаться по коду — с этим отлично справляется Rider for UE. Далее это статический анализ кода, то есть подсказки об ошибках, допущенных при его написании.

Возможность увидеть ошибки в редакторе перед компиляцией экономит много времени.

В конце концов, если мы дойдем до стадии компиляции с этими ошибками, это может превратиться в многочасовой «пинг-понг» между компилятором и разработчиком.

Конечно, не все ошибки можно обнаружить таким образом, особенно в шаблонном коде.

Но сам Unreal Engine почти не использует шаблоны, поэтому остается лишь небольшой процент ошибок.

Подсказки об отсутствии директив include и их автоматическая замена также помогают сэкономить время: Rider избавляет от необходимости заходить в заголовок файла и выяснять, какие файлы заголовков включены, а какие нет. Очень здорово, что Rider знает о механизме отражения, реализованном в Unreal Engine, и предлагает автодополнение идентификаторов и макросов отражения.

Такие вещи обычно плохо запоминаешь, поэтому такие подсказки существенно ускоряют разработку.

Я также упомяну анализ ресурсов и связывание Blueprints с исходным кодом C++.

Эта возможность используется не часто, но от этого она не становится менее полезной, особенно при рефакторинге кода: когда что-то меняется в исходном коде C++, очень полезно увидеть применение в Blueprints. Аналогичная ситуация и с файлами конфигурации .

ini и значениями полей класса по умолчанию: зачастую значения можно увидеть в самом коде, без необходимости копаться в файлах .

ini. Также стоит упомянуть интеграцию с редактором Unreal, а именно с плагинами RiderLink/UnrealLink. Обычный подход к разработке — запустить редактор Unreal из отладчика Rider, а затем вести разработку прямо из редактора с помощью Live Coding. Возможность видеть логи запуска и остановки игры прямо из Rider иногда значительно ускоряет разработку.

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

Кстати, у меня есть несколько пожеланий по поводу лога Unreal:

  • Добавьте дополнительные параметры фильтрации.

    Логов очень много, поэтому выбрать нужные категории из имеющихся сложно, ведь их могут быть сотни.

  • Выделить в журнале сразу несколько введенных терминов (это распространенная ситуация).

Спасибо за идеи! Скажите, а вы пользуетесь отладчиком Rider? Конечно.

Без отладчика редактор не может стать полноценным инструментом разработки.

В прошлом были проблемы, когда отладчик не мог остановиться в определенных точках.

Но, кажется, эти проблемы решены.

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

Иногда мы используем условные точки останова.

И нам нравится, как содержимое объектов Unreal Engine отображается в отладчике.

Отладка происходит в основном на рабочем столе? На данный момент да.

Мы планируем в будущем работать с консолями, но пока еще не дошли до этого.

Примечание: к сожалению, отладка на консолях от Rider пока невозможна.

Ведем переговоры с крупными производителями консолей.

Такие процессы занимают много времени, отчасти из-за бюрократии.

Также мы хотели поговорить о системах контроля версий.

Какие из них вы используете? В основном это Git и активный процесс разработки новых функций в ветках.

Мы используем интеграцию Git с Rider. Только для операции перебазирования мы используем клиент Tortoise: там мы видим больше информации об общей картине.

Rebase — вероятно, самая сложная операция в Git. Наши попытки автоматизировать его и в то же время сделать удобным в использовании пока не увенчались успехом.

Что касается других проектов, я работал с Perforce и PlasticSCM. Вы профилируете свой код? Используете ли вы для этого какие-либо сторонние инструменты? Да, мы анализируем код с помощью Нереальные идеи .

Вряд ли возможно сделать внешний инструмент более эффективным, чем родной от Unreal Engine. Это когда мы говорим о сборе информации о профилировании.

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

Содержимое кадра также можно просмотреть через Unreal Insight, но увидеть всю картинку в динамике сложно, и для этого мы решили создать свой инструмент. Спасибо большое за беседу, Вячеслав! Удачи с вашим проектом! Мы приветствуем ваши идеи по улучшению Райдер для Unreal Engine .

Теги: #Разработка игр #программирование #gamedev #ide #wargaming #unreal engine #rider

Вместе с данным постом часто просматривают: