Это статья про программирование, разработку игр на движке Unity, а также менеджмент задач. В ней пойдёт речь про коллективную работу: как совместно создавать игру в маленькой инди-команде. Но использование рассматриваемых инструментов будет удобно и для одиночного разработчика, который создаёт свою игру из нескольких мест (например с рабочего места в офисе тайком от начальника и у себя дома) или долго работает над одним и тем же проектом (когда планы начинают забываться и путаться, а из головы постоянно вылетает что сделано и на какой задаче остановился).
История версий и параллельная разработка (Unity+GitHub)
Я уже рассказывал про использование GitHub (и чем полезна система контроля версий в принципе) при разработке приложений в среде Visual Studio. Всё то же самое верно и для работы в Unity в командах состоящих не только из программистов, но и из художников, переводчика, музыканта и бог весть кого ещё. В Unity Asset Store есть плагины для работы с GitHub, но они не особо пользуются популярностью (причины почитайте в комментариях к ним). Намного проще и удобнее воспользоваться утилитой от самого GitHub'a.
Первым делом качаем и устанавливаем её. Выбираем папку с проектами Unity, называем одноимённо с проектом игры репозиторий, выбираем платформу Git ignore - "Unity". Создаём (займёт некоторое время).
Жмём "Publish", появится окно подтверждающее выбранные настройки (снова подождём немного). И всё - проект уже у нас на гитхабе. Когда перезапустим Visual Studio, то увидим, что все подключения выполнены и можно работать с программным кодом по описанному в предыдущей статье. Но если изменения были не только в программном коде, то лучше пушить коммит из самого приложения GitHub Desktop.
Планирование и отслеживание задач (Jira)
В самом Unity для решения этой задачи есть Collab (он включается в верхнем правом углу). В бесплатной версии он предоставляет довольно ограниченный набор интеграций, но зато не требует дополнительных регистраций.
Для тасктрекинга мне нравится Jira. Это простой, мощный инструмент, работающий в браузере, есть удобный клиент на телефон (правда тут как повезёт: у моей жены на телефоне он тормозит, а у музыканта на старом айфоне "плывёт" интерфейс). В бесплатной версии меня как инди-разработчика смущает только отсутствие возможности ограничить доступ членам команды к каким-то задачам. Но без доверия в команде вообще не давайте доступ в свою Jir'у.
Базовая идея работы в Jira следующая: есть крупные задачи, в них входят задачи поменьше, в них ещё меньше и так далее. Самые крупные задачи называют Эпиками, а что называют родительской задачей, а что дочерней и так понятно. Задачам можно назначать конкретного исполнителя, сроки, делать коментарии и много ещё чего. У каждой задачи есть состояния: начата, в работе, закончена и какие ещё захотите.
Вы под свой проект можете настроить как угодно переходы из одного состояния в другое, виды задач (например кроме обычной задачи ещё баг или пожелание подписчика), группы исполнителей, а также расширить функционал с помощью интеграций с приложениями.
Jira в наибольшей мере подходит для разработки приложения (игры) следуя принципам Agile. Можно настроить многое под себя, например организовать учёт времени работы или поменять цвета, но для меня как инди-разработчика функционала по-умолчанию хватает.
Jir'у можно интегрировать с Unity (через Collab), но как по мне это излишне. Вполне достаточно иметь интеграции GitHub с Unity и GitHub с Jira.
Создание ветки программы для решения конкретной задачи (Jira+GitHub)
Чтобы два программиста не мешали друг другу при параллельном решении разных задач и был придуман Git. Но эта концепция была не полная без системы управления задачами.
В Jira можно включить интеграцию с их собственным продуктом (системой контроля версий) BitBucket. Всё включается буквально одним кликом, интуитивно-понятно, а работа в едином интерфейсе приносит определённую гармонию.
Но я привык пользоваться GitHub и с его интеграцией с Jira также ничего сложного: надо просто выбрать пункт "подключить организацию" со значком GitHub'а во вкладке "Приложения". После довольно продолжительного ожидания появится полезная функция ради которой всё затевалось.
В настройках проекта во вкладке "Автоматизация" можно включить (выбрать из библиотеки) правила по которым сразу при создании ветки задача будет менять статус на "В работе", а после запроса на вытягивание - "Готово".
Листайте галерею
Для создания ветки из Jira надо просто скопировать и выполнить команду и выполнить её в командной строке Git-клиента. После нажатия кнопки "Publish Branch" из GitHub Desktop на GitHub появится ветка, а в Jira во вкладке "Код" (и в самой задаче) появится ссылка на эту ветку. Если был открыт Visual Studio, то там тоже автоматически перейдёт на свежесозданную ветку.
Далее программист выполняет задачу из которой создана ветка кода.
По окончании выполнения задачи из которой создана ветка разработчик в GitHub Desktop делает Commit. Повторюсь, что хорошим тоном считается делать коммиты на английском - и даже если вы работаете в одиночку - стоит потренироваться, чтобы привыкнуть. Затем Push и Merge (листайте галерею, если не понятно где что). Cпросит подтвердить "Confirm merge" - соглашаемся, затем появится сообщение "Pull request successfully merged and closed".
Visual Studio снова само всё сделает, если было отрыто, а если нет - надо переключиться на главную ветку и выполнить команду Pull в Team Explorer'е.
В Jira с включенной автоматизацией статус задачи изменился, о чём пришло уведомление команде в мобильное приложение (что может быть удобно например дизайнеру, который ждёт, когда это будет сделано, например чтобы посмотреть как выглядит в тестовом билде сделанный им раннее интерфейс для этой фичи).
Дополнительные интеграции с Jira
С помощью дополнительных интеграций в Jira можно добавлять ссылки на модели и документы (например на Google-диске). А если и этого не хватит, то можно включить ещё один продукт от Atlasian - Confluence. Я им пользуюсь только для записи каких-то личных интересных заметок, связанных с игрой. Но в больших командах разработчиков с его помощью ведётся документация к проекту, голосования и отчёты, в работе с которыми должны принять участие не только участники команды. Мне пока для всего этого хватает Jir'ы.
Рассмотренная модель работы отражает мой личный опыт (он пока не очень большой и не включает работу в больших компаниях), поэтому буду рад советам по улучшению и примерам из Вашего личного опыта.
Upd. 05.03.22: Уже неделю ходят слухи что GitHub могут заблокировать для пользователей из России, поэтому на всякий случай рекомендую сбросить Location если он указан у Вас в профиле.
Upd. 15.07.22: Пропробовал добавить новый проект в Jira и Confluence и столкнулся с его блокировкой для русских разработчиков (старые работают). Пока можно регистрировать "левые" аккаунты или попробовать продукт от Яндекса.
Upd. 09.06.23: Начал работать над новым проектом и добавил проекты в Jira и Confluence без каких либо проблем.
Upd. 2024: Git Hub Работает нормально, а Jira и Confluence надо с "левого" аккаунта, основной со всеми старыми проектами был удалён.
___________________________
Если Вам понравилась эта статья, то возможно Вам будет интересно почитать про создание модели в конструкторе и анимацию гуманоидного персонажа в Unity.
#разработка игр #unity3d #github #jira #планировка задач