Skip to content
Egmatic
контроль версийрезервные копииgit для игрgdevelopconstruct 3godot

Контроль версий и резервные копии игры без кода

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

Владислав КовнеровОснователь и разработчик Egmatic23 сентября 2026 г.18 мин

Проект игры без кода — это папка с файлами, а файлы можно версионировать и резервировать как любые другие. Вся практика умещается в две привычки: сохраняйте проект в файловом режиме, который уже есть в вашем движке, и храните его там, где сохраняется каждая версия и где он переживёт ваш ноутбук. GDevelop и Construct умеют такой режим из коробки, Godot дружит с ним по умолчанию, GitHub Desktop закрывает хранение без терминала, а недельный архив закрывает то, что не закрывают оба.

Причина, по которой эта статья существует, дважды всплыла в читках сообщества, которые мы провели в сентябре. Разработчик с r/gdevelop потерял исходники и восстанавливал игру из экспортированной сборки, а потом обнаружил, что «ассеты, сделанные после сборки, практически потеряны». Другой смотрел, как проект ломается «внезапно и без всякой причины», и не мог вернуться ни к одному прежнему состоянию. Потеря исходников повторяется в наших читках две недели подряд, в разных движках, и каждый раз не хватало не мастерства. Не хватало настройки и привычки, обе заводятся за один вечер.

Статья разбирает, что вы на самом деле защищаете: единственную настройку, которая дружит проект без кода с Git, облачные возможности, уже встроенные в движок, и правило резервных копий, покрывающее пожар, кражу и вирусы-вымогатели. Сразу оговорюсь, что этот блог принадлежит Egmatic — no-code 2D-редактору в pre-alpha; что мы сами планируем делать с этой проблемой, станет ясно ближе к концу.

Короткий ответ

Ваша ситуацияЧто делатьПочему работает
Любой проект без кода, солоПриватный репозиторий на GitHub плюс GitHub Desktop, коммит и отправка после каждой сессииБесплатные аккаунты включают неограниченное число приватных репозиториев; история с возвратом одним кликом
Вы делаете игру в GDevelopНастройки игры, свойства, тип файла проекта — несколько файловКаждая сцена и лист событий становятся отдельными файлами, и Git видит настоящие изменения; собственный урок GDevelop про GitHub Desktop рассчитан именно на этот режим
Вы делаете игру в Construct 3Меню, проект, «сохранить как», папка проектаВ папке лежат те же текстовые файлы, которые .c3p держит в архиве; руководство Construct рекомендует папки для контроля версий
Вы делаете игру в GodotПереключать нечего; сгенерируйте метаданные контроля версий из менеджера проектовСцены и ресурсы — текстовые файлы по замыслу; сгенерированный .gitignore держит кэш снаружи
Не хочется новых инструментовОблачные возможности движка плюс автоматические резервные копииРаботает — с оговоркой, что откат зависит от файловой истории облачного сервиса, а не от вас
Проект уже потерянСпасите то, что есть в экспорте, остальное переделайте — и сегодня же заведите репозиторийЭкспорт — не исходник; для этой строки единственное настоящее лекарство — профилактика, и начинается она сегодня

Что вы на самом деле защищаете

На диске лежат три вещи, и непоправима только одна.

  1. Исходный проект. Файл или папка, которые открывает редактор: сцены, события, объекты, макеты. Это месяцы работы, и восстановить их не из чего.
  2. Ассеты. Спрайты, звук, шрифты, тайлмапы. Часто импортированы в проект, но живут рядом с ним. Потеряете — переделывать графику или платить за неё заново.
  3. Документы. Дизайн-документ игры, заметки, таблицы. Переделываются дешевле графики, но дороже ничего.

Чего в списке нет: экспортированных сборок. Экспорт отвечает на вопрос, что игра делает; проект — из чего она сделана. Разработчик с r/gdevelop восстанавливал игру из экспорта, потому что это была единственная уцелевшая вещь, — и всё, что появилось после того экспорта, исчезло. Считайте каждый экспорт одноразовым продуктом — он им и есть.

Контроль версий и резервные копии защищают от разных сбоев

Два термина используют как синонимы, и зря.

Контроль версий — это история. Он отвечает: что изменилось, когда и как проект выглядел до правки, которая всё сломала. Сбой, от которого он защищает, — вы сами на прошлый вторник.

Резервная копия — это выживание. Она отвечает: если исчезнут этот компьютер, этот диск, это здание — выживет ли игра? Сбой, от которого она защищает, — внешний мир: смерть диска, кража, вирус-вымогатель, который страница лучших практик Construct ставит в один ряд с пожаром и потопом.

Одно без другого не работает. Репозиторий, который никто не отправляет, — папка на том же умирающем ноутбуке. Облачная синхронизация без истории — машина, которая честно копирует сегодняшнюю испорченную версию поверх вчерашней рабочей, везде и мгновенно. Дальше статья настраивает и то и другое.

Одна настройка, которая дружит проект без кода с Git

Git создан для текста: именно текст позволяет хранить изменение как разницу, а не как новую полную копию. Разработчики no-code-движков это заметили, и в каждом есть подходящий режим.

ДвижокСохранение по умолчаниюФайловый режимОфициальная позиция
GDevelopОдин файл .json со всей игройСвойства: сохранять проект несколькими файлами — каждая сцена, внешний макет и внешний лист событий в своём файлеВики называет этот режим идеальным для передачи игры в систему контроля версий вроде GitHub или Mercurial
Construct 3Файл .c3pМеню, проект, «сохранить как», папка проекта: проект отдельными текстовыми файламиРуководство отмечает, что .c3p — это просто заархивированный проект-папка, и рекомендует папки для работы с инструментами контроля версий вроде GitHub
Godot 4Текстовые сцены и ресурсы уже такПереключать нечего; сгенерируйте .gitignore и .gitattributes из менеджера проектовДокументация называет целью быть дружелюбным к системам контроля версий и генерировать в основном читаемые и сливаемые файлы

Почему режим так важен: в режиме одного файла перенос одного спрайта переписывает весь файл проекта, каждая сохранённая версия — непрозрачная полная копия, разницы не видно, а правка вдвоём означает, что один затрёт другого. В режиме папки то же изменение трогает один маленький файл, история читается по сценам, а размер каждого сохранённого изменения сжимается до того, что действительно изменилось. Если вы ещё выбираете инструмент, а не настраиваете уже выбранный, — обзор no-code 2D-движков ставит эти три и их рабочие процессы рядом.

Практическое замечание для тех, кто остаётся в режиме одного файла: .c3p не заперт. Переименуйте его в .zip, распакуйте — и у вас проект-папка; запакуйте папку обратно, переименуйте — и снова .c3p. Конвертация без потерь в обе стороны, и это само по себе говорит, насколько мало формат был препятствием.

Маршрут 1: Git без терминала

Официальный урок GDevelop проводит через всю последовательность, и она переносится на любой движок:

  1. Сначала репозиторий. В GitHub Desktop: файл, новый репозиторий, создать, затем «опубликовать репозиторий» с галкой «оставить код приватным».
  2. Сохраните проект внутрь. Новый проект: выберите папку репозитория как место. Существующий: «сохранить как» в папку репозитория, старое место бросьте.
  3. Коммит после каждой рабочей сессии. Однострочное описание изменений, коммит, отправка. Иллюстрация в уроке показывает несколько коммитов в день; правило там сформулировано прямо: коммиты должны быть частыми.
  4. Ветки для экспериментов. Отдельная ветка под рискованную переработку, коммиты туда, слияние, когда сработало. В этом вся фича: попробовать разрушительное, не рискуя рабочей игрой.
  5. Возврат по необходимости. Когда что-то сломалось тихо, откройте историю в GitHub Desktop, выберите последний заведомо рабочий коммит — и проект вернётся в то состояние.

Числа, которые стоит знать, все из документации GitHub: бесплатный личный аккаунт включает неограниченное число приватных репозиториев с неограниченными соавторами; Git предупреждает о файлах от 50 МБ и блокирует отправку свыше 100 МБ; Git LFS на бесплатном тарифе — 10 ГиБ хранилища и 10 ГиБ трафика в месяц, один файл LFS — не больше 2 ГиБ, а дополнительный пак данных стоит 5 долларов в месяц за 50 ГБ хранилища и трафика. Сцены и события 2D-проекта — крошечные текстовые файлы; квоту LFS съедают графика и звук, и хобби-проект годами помещается в бесплатный лимит.

Два исключения держат репозиторий здоровым. Экспортированные сборки — не место в нём: они большие, воспроизводимы из проекта и редактору бесполезны. Папка кэша .godot и бинарные импорты .translation в Godot — тоже, и сгенерированный менеджером проектов .gitignore закрывает оба без единой прочитанной вами строчки.

Маршрут 2: облако, которое уже есть в движке

Если Git сегодня — слишком большой шаг, собственные сервисы движков закрывают часть риска, и стоит знать, какую именно.

GDevelop Cloud хранит проекты онлайн и открывает к ним доступ на просмотр или правку. Для соавторов требуется подписка Pro, на проект — один гость, и документация честно пишет, что совместная работа в реальном времени пока не готова. Показательна сама логика конфликтов: когда правили двое, при сохранении предлагается перезаписать чужие изменения или отменить свои. Ни слияния, ни истории. Облако — это долговечность, а не контроль версий.

Construct Cloud Save пишет проект напрямую в Google Drive, Microsoft OneDrive или Dropbox. Руководство Construct отмечает, что эти сервисы дают собственные резервные копии и истории файлов, — настоящая вторая линия обороны, ограниченная политикой хранения провайдера, а не чем-либо, чем управляете вы.

Автоматические резервные копии Construct стоит включить, где бы вы ни сохранялись. В настройках, в разделе сохранения и резервных копий, включите периодическое резервное копирование активного проекта, выберите интервал — например 10 минут — и место. Главное предупреждение руководства — про место: папка резервных копий на той же машине, что и проект, — не резервная копия, потому что одна беда забирает обе. Рекомендуется сочетать функцию с облачным сохранением или с папкой, которая сама синхронизируется в облако, — как локальная папка Dropbox.

Ловушка браузерного хранилища. Там, где локальный доступ к файлам недоступен, Construct может держать проекты в хранилище браузера, и руководство говорит о риске прямо: хранилище принадлежит одному браузеру на одном устройстве, и неаккуратная очистка данных браузера стирает все проекты в нём. Рекомендуется любое другое место. Если единственная копия чего-либо когда-либо жила в браузере — этой копии не существует. Та же ловушка ждёт и игроков вашей игры: браузерная сборка, хранящая прогресс в локальном хранилище, теряет его от того же клика «очистить данные», и руководство по облачным сохранениям без сервера разбирает эту половину проблемы.

Привычка 3-2-1

Правило, к которому пришёл мир резервных копий, обычно приписывают фотографу Питеру Крогу: держите три копии всего, что не можете потерять, на двух разных типах носителей, одну — вне дома. Страница лучших практик Construct приходит туда же со стороны игр: копии вне дома обязательны, потому что пожар, потоп, кража, отказ железа и вирусы-вымогатели забирают все копии, которые живут вместе.

Дешёвая версия для проекта без кода:

  1. Копия 1: рабочий проект на вашей машине, там, откуда его читает редактор.
  2. Копия 2: отправленный репозиторий или проект в облачном сохранении. Вне дома по определению, с историей, если это репозиторий.
  3. Копия 3: датированный архив на другом сервисе или диске. Раз в неделю: запакуйте папку проекта вместе с исходниками ассетов, назовите файл датой и положите на внешний диск или в облако, которое не используется под репозиторий.

Пять минут в пятницу — и готово. Архив нарочно примитивен: он выживает, даже если вы потеряете аккаунт GitHub, у облака случится сбой или вирус-вымогатель зашифрует всё, до чего машина дотягивается, — ровно тот сценарий, от которого вечно включённая синхронизируемая папка спасти не может.

Внедряем за неделю

  1. Переключите режим сохранения. GDevelop: свойства, несколько файлов. Construct: сохранить как проект-папку. Godot: делать нечего, метаданные сгенерируйте всё равно.
  2. Создайте приватный репозиторий и перенесите проект внутрь. Сначала репозиторий, потом «сохранить как» — как в последовательности урока GDevelop.
  3. Сделайте коммит и отправку сегодня. Один первый коммит — и есть вся разница между «защищено» и «нет».
  4. Включите автоматические резервные копии в движке, где такая опция есть, с интервалом, при котором потерять работу с последней копии не обидно.
  5. Исключите сгенерированные файлы до первого коммита, если получится, после — если придётся; историю чистка не портит.
  6. Отмечайте коммит под каждый билд, который уходит людям. Когда игра доберётся до публикации в Steam или плейтеста, вы захотите точно знать, какая версия проекта породила сборку, которую видели игроки.
  7. Пятничный архив, каждую неделю. Напоминание в календаре, пять минут, три-два-один готово.

Частые ошибки

  • Экспорт как резервная копия. Это продукт, а не исходник; восстановление из него — та самая история с r/gdevelop, с которой статья началась.
  • Коммит раз в месяц, отправка никогда. Неотправленный репозиторий — одна точка отказа с лишними шагами.
  • Остаться в режиме одного файла. Каждая версия — непрозрачный ком, разницы бессмысленны, параллельно работать невозможно.
  • Облачная синхронизация как единственная копия. Синхронизация честно тиражирует порчу, а в шеринге GDevelop разрешение конфликта означает, что чью-то работу выбрасывают целиком.
  • Проекты в браузерном хранилище. Один клик «очистить данные» — и их нет; само руководство Construct не советует на него полагаться.
  • Резервные копии на том же диске или в том же доме. Список руководства, что забирает их вместе: пожар, потоп, кража, отказ, вирус-вымогатель.
  • Экспортированные сборки в репозитории. Они раздувают каждый клон, и блок 100 МБ однажды отвергнет одну из них посреди отправки.
  • Нет записи, какая версия уходила игрокам. Баг-репорт плейтестера о третьей сборке без тега — археология; версионирование проекта окупается, только когда каждой сборке можно сопоставить версию проекта.

Место Egmatic

О стадии скажем прямо: Egmatic — no-code 2D-редактор и движок, построенный на ИИ, сейчас в pre-alpha. Тема оказалась в нашем блоге не случайно: в читках сообщества, которые мы проводим, потерянные исходники, тихая порча и восстановление из экспортов повторяются неделями, а люди, с которыми это случается, были заняты созданием игр, а не пренебрежением очевидными инструментами. Инструменты были не очевидны. Их собирали программисты.

Наша позиция: безопасность проекта — работа слоя публикации. Редактор, который ведёт игру от сцены до выпуска, должен нести и её историю, чтобы версионирование, откат и копии вне дома были свойствами рабочего процесса, а не самообразованием на выходные. Вы направляете игру, инструментарий исполняет обвязку, и всё выпущенное, включая историю, принадлежит вам. Дат мы не анонсируем: честность pre-alpha означает, что даты появляются, когда мы можем их сдержать. Если вы ждёте именно такого рабочего процесса, он обретает форму в листе ожидания на egmatic.com — и запросы, приходящие сейчас, включая ваш о том, как должны защищаться ваши проекты, и ведут разработку.

Заключение

Защищайте исходник, а не экспорт. Переключите режим сохранения, превращающий проект в отслеживаемые файлы, положите его в приватный репозиторий через GitHub Desktop, отправляйте изменения после каждой сессии и держите третью датированную копию там, куда машина не дотянется. GDevelop, Construct и Godot встречают вас на полпути по самому замыслу, облачные функции движков закрывают свою половину — отказ железа, а пятничный архив закрывает то, что не закрывает ничего другое. Вся настройка стоит один вечер и, в отличие от игры, никогда не падает: она просто тихо следит, чтобы всегда было вчера, куда вернуться.

Источники

  1. GDevelop Wiki, Properties of the game: тип файла проекта, по умолчанию один файл, режим нескольких файлов — каждая сцена, внешний макет и внешний лист событий отдельным файлом, рекомендовано для систем контроля версий
  2. GDevelop Wiki, How to backup and maintain your project using GitHub and GitHub Desktop: последовательность «сначала репозиторий», рекомендация нескольких файлов, ветки под фичи, частые коммиты, восстановление из истории
  3. GDevelop Wiki, Collaborate on a GDevelop project: облачные проекты, доступ на просмотр и правку, подписка Pro у соавторов и один гость на проект, реалтайм-коллаборация пока не готова, разрешение конфликта «перезаписать или отменить»
  4. Construct 3 Manual, Saving projects: Cloud Save в Google Drive, OneDrive и Dropbox; .c3p через «скачать копию»; папки проекта рекомендованы для контроля версий с текстовыми файлами; .c3p как заархивированная папка проекта; ограничения браузерного хранилища и риск очистки данных
  5. Construct 3 Manual, Best practices: регулярные копии, копии вне дома обязательны против пожара, потопа, кражи, отказа железа и вирусов-вымогателей; настройка периодического копирования активного проекта с интервалом и местом
  6. Godot Docs, Version control systems: дружелюбные к системам контроля версий читаемые и сливаемые файлы, плагин Git, генерируемые .gitignore и .gitattributes, исключения .godot и .translation, настройка Git LFS
  7. GitHub Docs, About large files on GitHub: предупреждение с 50 МБ, блокировка свыше 100 МБ, лимит загрузки 25 МБ через браузер
  8. GitHub Docs, About Git Large File Storage и GitHub's plans: потолок 2 ГиБ на файл LFS, неограниченные приватные репозитории на бесплатных аккаунтах; включение LFS и цена паков данных — по странице тарифов
  9. Читки сообщества, сентябрь 2026: сообщения r/gdevelop о потере исходников и тихой порче проектов, процитировано из дайджеста обратной связи Egmatic; дословные фразы использованы с контекстом

Читайте также