Управление исходным кодом для хранения всего игрового проекта?

10

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

Edward83
источник
Связанный: gamedev.stackexchange.com/questions/35949/…
MichaelHouse
1
Исходный код - это все, что вы не можете сгенерировать из исходного кода. Активы, текстуры, графика и документация также являются исходным кодом в соответствии с этим определением.
Кристофер Хаммарстрем

Ответы:

12

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

Я связал вопрос о хранении активов в репозитории. Есть несколько хранилищ, которые работают лучше, чем другие, для хранения произведений искусства. Они позволят вам «разглядеть» искусство и посмотреть, что изменилось. Другие будут просто относиться к активам как к двоичным данным, так что вам придется проверить их, чтобы увидеть, что отличается. Это также означает, что вам придется загружать весь ресурс при его изменении, так как репозиторий не сможет «знать» (анализировать), что изменилось между версиями.

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

MichaelHouse
источник
7

Git не подходит для нетекстовых файлов. Клонирование репозитория git требует загрузки всех исторических версий файла, за исключением случаев, когда используется большое расширение файла (нестандартное, часто не поддерживается графическим интерфейсом) или специальные команды (для этого требуется наличие гит-гуру). То же самое касается большинства систем DVCS. Для текстуры, модели или аудиоклипа это означает получение большого количества копий очень большого файла. 1 ГБ активов может легко составить 200 ГБ исторических данных ревизий, и git заставляет вас загружать их все, когда вы клонируете новый репозиторий, и загружать все промежуточные ревизии при получении последних. Это становится огромным узким местом в будущем, когда вы меньше всего терпите задержки производства.

Subversion, Perforce и т. Д. - лучший выбор для ресурсов, поскольку они требуют только загрузки нужной ревизии (обычно последней). Вы можете использовать их только для ресурсов и использовать git для кода, а также использовать их для исходного кода. Perforce обладает некоторыми функциями, которые позволяют ему работать как очень неуклюжий DVCS, и, по моему опыту, он лучше функциональности SVN (хотя и гораздо более сложен), однако стоимость означает, что вы, вероятно, будете использовать Subversion.

Большинство профессионалов в области контента мало нуждаются в DVCS, а некоторые в любом случае имеют проблемы даже с основами классического VCS. Не оседлай с мерзавцем. Или Mercurial, DARCS и т. Д.

Шон Миддледич
источник
Хороший вопрос, но вы можете клонировать, не выбирая всю историю stackoverflow.com/questions/11497457/…
Али
1
@ Али: мелкие клоны вообще не решают проблему адекватно (они отключают многие команды, не используются по умолчанию для большинства графических интерфейсов и т. Д.) И практически бесполезны для большинства вещей, кроме серверов CI и тому подобного. Более новые git-решения, такие как git-lfs, возникли для решения проблем, которые я обрисовал, пытаясь привлечь в git команды с большим количеством контента.
Шон Мидлдич
git lfs очень хорошо решает проблему «большого двоичного файла».
Nepoxx
3

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

Пример реального мира, который вы можете увидеть в этом, - это проекты открытых фильмов, сделанные с помощью Blender (Big Buck Bunny, Durian и т. Д.)

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

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

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

Каспер Бейер
источник