Defold создан для небольших команд, которые в тесном сотрудничестве работают над созданием игр. Члены команды могут работать параллельно над одним и тем же контентом с минимальным пересечением. Defold имеет встроенную поддержку контроля версий на базе Git. Git разработан для распределенной совместной работы и представляет собой чрезвычайно мощный инструмент, позволяющий реализовать широкий спектр рабочих процессов.
Когда вы сохраняете изменения в своей локальной рабочей копии, Defold отслеживает все изменения в панели редактора Changed Files, перечисляя каждый файл, который был добавлен, удален или изменен.
Выберите файл в списке и нажмите Diff, чтобы просмотреть изменения, которые вы внесли в файл, или Revert, чтобы откатить все изменения и восстановить файл до состояния, которое он имел после последней синхронизации.
Синхронизацию проекта также можно выполнить с помощью одного из множества отличных внешних инструментов для работы с Git репозиториями. GitHub Desktop, GitTower, Git Kraken и SourceTree - одни из наиболее популярных.
Синхронизация проекта означает, что файлы проекта синхронизируются с состоянием проекта на удаленном сервере. Вам следует выполнять синхронизацию, если:
Чтобы начать синхронизацию, выберите в меню пункт File ▸ Synchronize. Последовательность диалогов проведет вас через процесс синхронизации.
Нажмите Pull, чтобы получить изменения с сервера и слить их с вашими локальными изменениями. Если есть конфликты, система попросит вас разрешить их:
Отметьте каждый конфликтующий файл, щелкните правой кнопкой мыши и выберите действие, которое нужно предпринять:
Слева находится файл, полученный с сервера. Справа показана ваша локальная версия. Любые различия четко выделены, так что вы можете быстро их просмотреть.
Встроенный инструмент сравнения файлов работает только с текстовыми файлами. Однако, поскольку Defold хранит все рабочие файлы (игровые объекты, коллекции, атласы и т. д.) в легко читаемых файлах JSON, вы зачастую сможете понять смысл изменений, которые были внесены в такие файлы:
Редактор не позволяет точечно отбирать изменения из обоих конфликтующих файлов. Если вам нужно это сделать, вы можете выполнять Git операции из командной строки и использовать отдельный инструмент слияния.
Когда редактор закончит с подтягиванием изменений и все конфликты будут разрешены, появится диалоговое окно с вопросом, как действовать дальше.
Если вы продолжаете публикацию и имеете локальные изменения, вас попросят зафиксировать (commit) их перед публикацией (push-ем). Диалоговое окно позволяет вам выбрать (подготовить) файлы, которые должны быть включены в коммит (обведено оранжевой рамкой на изображении ниже).
Нажмите Push, чтобы зафиксировать и отправить изменения на сервер.
Инструмент Git создан в первую очередь для обработки исходного кода и текстовых файлов и хранит эти типы файлов с минимальными издержками. Сохраняются только изменения (дельты) между каждой версией, что означает, что вы можете вести обширную историю изменений всех файлов вашего проекта с относительно небольшими затратами. Однако двоичные файлы, такие как изображения или звуковые файлы, не получают преимуществ от схемы хранения Git. Каждая новая версия, которую вы регистрируете и синхронизируете, занимает примерно одно и то же место. Обычно это не является серьезной проблемой с конечными ассетами проекта (изображения JPEG или PNG, звуковые файлы OGG и т. д.), н может быстро стать проблемой с рабочими файлами проекта (файлы PSD, проекты Protools и т. д.). Эти типы файлов часто сильно разрастаются в объеме, поскольку вы обычно работаете с гораздо более высоким разрешением, чем целевые ресурсы. Обычно считается, что лучше избегать передачи больших рабочих файлов для Git версионирования и вместо этого использовать для них отдельное хранилище и решение для резервного копирования.
Есть много способов использовать Git в командном рабочем процессе. Defold использует его таким образом. При синхронизации происходит следующее:
Если вы предпочитаете другой рабочий процесс, вы можете запустить Git из командной строки или через стороннее приложение для выполнения операций стягивания, публикации, фиксации и слияния, работы с несколькими ветками и т. д.
Did you spot an error or do you have a suggestion? Please let us know on GitHub!
GITHUB