Лучшие практики для запуска вашего проекта с нуля

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

Видео ниже — отличный пример использования Unity в морском приложении. Он сочетает в себе двухмерный пользовательский интерфейс холста, трехмерный контейнер, содержащий проекцию карты, несколько видеопотоков и даже аннотации, созданные искусственным интеллектом, наложенные поверх видео.

Теперь о хорошем

Наш ежегодный хакатон в Slalom в этом году был игровым джемом, где я работал с командой опытных инженеров-программистов и профессионалов в области дизайна над симулятором колонии. У большей части моей команды не было или было очень мало опыта разработки игр или Unity. Я был вдохновлен на создание этого руководства после увеличения команды на Unity. Вот несколько советов, которые помогут вам начать работу на правильном пути.

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

Настройка вашего проекта

#1: Планируйте заранее

Возможно, это звучит как здравый смысл, но к этому стоит обратиться.

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

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

Необходимость планировать заранее относится ко всем элементам дизайна вашего приложения. Мультиплеер, например, гораздо сложнее добавить позже, чем встроить с самого начала. Независимо от того, используете ли вы Unity Netcode, сторонний фреймворк или развертываете собственное решение, вам нужно выбрать подход, прежде чем вы зайдете слишком далеко в создании приложения.

# 2: Используйте LTS-версию и придерживайтесь ее

У Unity есть два связанных цикла выпуска.

  1. LTS или Долгосрочная поддержка содержит ежегодные выпуски и постоянные обновления исправлений для проектов, которым требуется стабильная среда.
  2. Tech Stream обеспечивает быстрый выпуск обновлений, включает в себя функции, находящиеся в разработке, и иногда содержит критические изменения.

Более стабильная LTS-версия Unity почти всегда является правильным выбором для любого проекта, которому явно не нужны последние функции, добавленные в выпусках Unity Tech Stream. LTS-версиям Unity гарантируется двухлетняя поддержка обновлений и отсутствие критических изменений API. Это то, на чем вы хотите основывать любой серьезный проект.

# 3: Выберите VCS (систему контроля версий)

Unity имеет две основные интеграции с системами контроля версий: Perforce и Plastic SCM.

Проект Unity обычно имеет в репозитории хотя бы несколько, а возможно, и много больших (более 100 МБ) файлов. Обычно они не очень сжимаемы, трудно различаются и вообще не объединяются. Если вы используете другую систему управления версиями, такую ​​как Mercurial или Git, убедитесь, что вы настроили соответствующее большое расширение файла. Для Git это LFS, а для Mercurial это расширение LargeFiles.

# 4: Smart Merge — ваш друг

Инструмент Unity Smart Merge устраняет головную боль, вызванную слиянием изменений в файлах сцены и сборных файлов. Он также совместим практически со всеми существующими системами контроля версий.

В проекте Unity вы создадите множество сцен и сборных файлов. Они хранятся в виде файлов YAML, которые обычные инструменты сравнения могут объединять как обычный текст, но это может быть не очень успешным, если у вас есть нетривиальные изменения. Инструмент Smart Merge понимает, как редактор Unity работает с этими файлами, и может гораздо проще объединять сложные изменения.

# 5: Развертывайте на своих целевых платформах как можно раньше и чаще

Функции, особенности и несовместимости, зависящие от платформы, — это реальность жизни для движка, который поддерживает такое же количество платформ, как и Unity. Устраните эти проблемы на ранней стадии, заранее настроив сборку для целевой платформы, даже если сначала это будет просто сцена «привет, мир». Ваш конвейер CI/CD также должен строиться для каждой среды при слиянии кода. (У вас есть один из них, верно?!)

Также рекомендуется, по крайней мере, выполнять сборку для потенциальных будущих платформ, которые вы, возможно, будете поддерживать позже, даже если вы не проводите для них тесты полной проверки сборки (BVT).

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

# 5: Настройка определений сборки

Unity использует определения сборки для создания логически отдельных библиотек кода.

Когда вы добавляете скрипт в проект Unity, вам не нужно добавлять к нему пространство имен, чтобы он работал. Однако рекомендуется использовать пространства имен и создавать определения сборок по нескольким причинам, а именно:

  • помогает логически разделить код.
  • уменьшает количество файлов кода, которые Unity перекомпилирует при изменении кода.
  • помогает изолировать любой редактор или тестовый код, который вы не хотите встраивать в конечный продукт.

# 6 Создавайте эффективные тесты и обновляйте их

Unity встраивает инфраструктуру NUnit прямо в редактор. Вы можете легко использовать его для создания модульных и интеграционных тестов как для кода вашего приложения, так и для любого расширения редактора, которое вы пишете. Также очень легко развернуть эти тесты на телефонах и планшетах для тестирования на устройстве.

Тестирование — большая тема. К счастью, стратегии тестирования являются предметом следующей статьи этой серии.

Дополнительные ресурсы

Unity — это большая экосистема, и в ней есть чему поучиться. Вот несколько дополнительных ресурсов, которые вы можете использовать, чтобы перейти к конкретным предметам в разных форматах, которые наилучшим образом соответствуют вашим требованиям и стилю обучения.

  • Unity Learn — от начинающих до продвинутых уроков по различным темам
  • Официальный Youtube Unity — все, от демонстраций новых функций до записей живых обучающих мероприятий. Записанные видеоролики конференции Unity Unite особенно хороши.
  • Официальная документация Unity — если вы не можете найти то, что вам нужно, скорее всего, здесь.

Теперь пора что-то строить!

Сколько бы вы ни читали о чем-то, это не заменит практический опыт. Лучший способ научиться — это создать небольшой проект для себя или своей компании, начиная с небольших проектов и постепенно расширяя их.

В ближайшие недели я напишу больше статей о масштабировании проектов Unity, создании хороших тестов, а также об измерении и настройке производительности, так что следите за обновлениями!