Renovation - подход к организации проекта. Часть 2

Вторая часть нашей статьи об организации проекта. На этот раз - об инфраструктуре.

Сервер

В нашей разработке мы используем выделенный сервер.

Renovation - подход к организации проекта. Часть 2

В 2020 кому-то этот подход может показаться устаревшим. И если у вас нет в команде человека, который на "ты" с Unix-консолью - это действительно так. Но у нас такой человек, к счастью, есть.

И в нашем случае это развязывает руки. Многое из написанного ниже становится возможным только с использованием отдельного сервера.

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

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

16G Core i5-750 1x2TB Server нам обходится в 16 €/месяц, и оно того стоит. Такой конфигурации нам сейчас хватает с головой.

Вдохновение

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

Если вы считаете, что ваша команда слишком маленькая, чтобы думать о таких вещах - все равно посмотрите. Там речь идет о студии ~5 человек.

Как сделать счастливыми программистов (SVN)...

Renovation - подход к организации проекта. Часть 2

Место для начала холивара

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

Вы когда-нибудь резолвили конфликты в сценах и префабах? Сколько из вас сдалось, так и не добившись приемлемого результата?

SVN - это централизованная система. И она поддерживает очень удобную фичу - File Locking. Если у файла установлен атрибут svn:needs-lock, несколько человек не смогут изменять его параллельно. Это решает проблему конфликтов на корню. А svn:auto-props поможет вам настроить автоматическое применение этого атрибута к сценам и префабам.
Подробности тут и тут.

При грамотном подходе к организации сцен, это не мешает работать над ними художникам и геймдизайнерам одновременно. Разбивайте все на префабы по функциональному и логическому принципу, используйте новый Unity Prefab Workflow и Nested Prefabs. И все должно быть хорошо.

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

Возможность делать локи и избегать неразрешаемых конфликтов - ключевая причина, почему мы выбрали SVN, а не Git.

Хостинг

Как можно было догадаться, мы хостим свои репозитории самостоятельно. В мире SVN нет игроков уровня GitHub или GitLab. Увы. Но у нас есть свой сервер! А значит, поднять хост можно без особого труда.

Renovation - подход к организации проекта. Часть 2

Для управления репозиториями и пользователями мы используем очень минималистичную тулзу submin. Она прекрасно справляется со своими задачами. Мы даем ссылку на файл для Docker Compose, который позволяет поднять у себя SVN одной командой. (Только не забудьте поменять параметры и настроить маршрутизацию к контейнеру)

... и художников (Seafile)

В принципе, проблема обмена файлами уже давно решена. DropBox, Google Drive, etc. Но наверное каждый сталкивался с какими-то мелкими (или даже крупными) проблемами с этими сервисами. Мы опять решили попробовать найти лучший вариант для Renovation. И наш выбор упал на Seafile.

Нас привлекло в нем несколько вещей. Первое - это self-hosting. На самом деле, мы, по ощущениям, уже экономим деньги, не переплачивая за место для кода и арта на сторонних хранилищах.

Второе - это возможность использовать Seafile Drive: версию клиента, который монтируется в систему как отдельный диск. В итоге обмен файлами происходит словно по волшебству. Где-то в Питере наша художница нажимает Ctrl-S, и вскоре новая версия PSD оказывается у всей команды прямо на "диске" без каких-то дополнительных телодвижений.

Renovation - подход к организации проекта. Часть 2

Добавьте к этому бонусы типа хранения истории изменений файлов (да, это работает как VCS с человеческим лицом), возможность давать доступ к отдельным файлам по публичной ссылке, удобный веб-интерфейс, мобильные клиенты. Мы очень довольны тем, как работает Seafile!

Перед окончательным выбором между всеми доступными вариантами, мы измерили скорость передачи файлов нашего Seafile, и сравнили его с GoogleDrive и DropBox. В нашем случае Seafile работает быстрее. Думаю, это из-за того, что сейчас им пользуется всего три человека. Но даже когда нас будет 10, мы рассчитываем на более быстрый и надежный обмен файлами.

Docker Compose для Seafile у нас тоже есть:

CI

Renovation - подход к организации проекта. Часть 2

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

Сейчас мы только планируем внедрять CI для Renovation. О наших планах на этот счет скорее всего выйдет отдельная статья. Они по-настоящему наполеоновские.

По опыту прошлых проектов, CI дает уверенность в завтрашнем дне) В каждый момент времени вы знаете, что ваша игра собирается без ошибок. А даже простейшие тесты дают гарантии, что проект находится во вменяемом состоянии.

Наш выбор по дефолту - это Jenkins. Он проверен поколениями разработчиков и никогда нас серьезно не подводил.

Бэкапы

Вы не делаете бэкапы? Тогда северный лис уже идет к вам.

Вы хотели мемов - я дал вам мемов​
Вы хотели мемов - я дал вам мемов​

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

Мы бэкапим даже документы из Google Drive. Для кого-то это уже признак паранойи. Но возможно вы просто не знаете о случаях, когда люди неожиданно теряли все доступы из-за действий злоумышленников или ошибок Гугла.

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

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

Важно сразу узнавать об ошибках бэкапа<br />
Важно сразу узнавать об ошибках бэкапа

Бэкапы - это надежный сон для всей команды.

На этом сегодня все.

Если вам что-то показалось сложным, то смею заверить - это не так. Сейчас инфраструктуру поддерживает один человек, и она работает четко и без сбоев. Да, это определенная инвестиция времени, но в нашем случае она окупается.

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

Надеемся, что любая команда сможет перенять какие-то общие принципы и доработать их под себя.
Особенно задумайтесь над бэкапами. Серьезно. Вот прямо сейчас.

Спасибо за внимание!

Наши прошлые статьи для фестиваля:

Наши ссылки:

55
Начать дискуссию