Как мы с Git'том сражались.

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

Предисловие:

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

Так выглядел наш проект в середине 2023 года.
Так выглядел наш проект в середине 2023 года.
Так он выглядит сейчас.
Так он выглядит сейчас.

Поменялось всё. Буквально. От текстур и моделей до кода и механик. Мы не делали дизайнерского документа, о котором рекомендуют чуть ли не в каждой статье про геймдев. Мы решили, что у нас не настолько большой проект, что бы вести диздок, а все, что было важным для разработки держали на листочке перед глазами.

Стоит отметить, что мы делаем такой крупный (по нашим меркам) проект и за время разработки наломали немало дров. Дважды чуть не потеряли проект. Первый раз год назад, когда я перенёс эффект (hit) из одного проекта (тестового) в наш (основной) и каким-то образом смог сломать настройки скриптов внутри юнити и теперь переодически он ругается на полноэкранный режим в редакторе. Пришлось чистить и перенастраивать сцену практически с нуля. А второй раз уже в этом году, когда решили пользоваться контролем версий GitHub.

Дело в том, что со временем проект рос вместе с нашим опытом и это неизбежно привело нас к Git'у. В команде 2 человека, а значит два ПК. Не буду вдаваться в подробности настройки, скажу только, что месяц мы потратили на поиски информации, затем пару недель на настройку и в итоге смогли сделать чудо-флешку с актуальной версией проекта. Следующие пару недель были наполнены работой над игрой. Сотни изменений и правок. И вот подошёл день Х - слияние версий. Скорее всего вы уже догадались, что произошло. Напомню, мы словно дети в геймдеве. Учимся, делаем, ошибаемся и снова учимся. Мы не акулы игропрома. К факту: мы одновременно работали в одной сцене, а этого git, как оказалось, ой как не любит. В итоге при слиянии изменений появились ошибки. Мы старались эти ошибки пофиксить еще на стадии слияния, но алгоритмы git'а решили, что легче будет все удалить под ноль. Еще одна причина неудачи была в том ( как потом мы почитали), что слишком большой объем информации git может не слить вместе корректно из-за, собственно, большого объёма информацией (как не странно).

Результат наших стараний.
Результат наших стараний.

Затем мы наткнулся на GitHub Desktop и решили попробовать работать с ним. До этого мы настраивали все через командную строку и контроля над файлами было минимум. А сейчас могли ручками выбирать, что нужно ,а что не нужно нам при переносе. Настройка прошла успешно и казалось, все идёт по плану, вот только "бесплатная" версия настоятельно рекомендовала нам зарегистрироваться и закачать проект на сервер, а не на флешку, как мы хотели. Мы посчитали, что нет необходимости в сервере и работать с флешкой нам гораздо удобнее. В итоге пришлось отказаться от Desktop,а и найти альтернативу. Благо, поиск сейчас "умный" так, что решение нашлось довольно быстро. Из нескольких вариантов мы остановились на Fork.

Фото из интернета, но суть та же.
Фото из интернета, но суть та же.

Но и с ним настройка была не простой. Стоит отметить (как мы узнали), что все эти программы хорошо работают с кодом и отлично его объединяют, но вот с 3d моделями все чуть сложнее.

Грибы, что подпортили нам нервы.
Грибы, что подпортили нам нервы.

Эти грибы мы несколько раз пытались синхронизировать на другом ПК, но каждый раз все заканчивалось ломаными файлами. В итоге на ПК 1 на сцене есть грибы, а на ПК 2 эти же грибы не существуют.

Как оказалось, все дело в gitLFS, который отказывается работать с флешкой, так как на ней нет нужных файлов, с которыми должен он взаимодействовать. Мы поняли так, что LFS прекрасно работает только с серверами GIT'а, а флешка не является сервером (вот это поворот). После нескольких тестов переноса и слияний мы поняли, что без LFS все работает без проблем. Все файлы переносятся без потери.

Но есть и светлая сторона этой ситуации. Проект сохранен и пропала только одна сцена из нескольких. Та, над которой мы работали одновременно. P.S. Сцену уже восстановили.

Послесловие:

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

Никого не призываем делать так же)

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

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

А здесь можно следить за проектом:

1
1