Контроль версий и резервные копии игры без кода
Проект игры без кода — это файлы: включите файловый режим сохранения, храните историю в приватном репозитории GitHub и делайте недельную копию вне дома.
Проект игры без кода — это папка с файлами, а файлы можно версионировать и резервировать как любые другие. Вся практика умещается в две привычки: сохраняйте проект в файловом режиме, который уже есть в вашем движке, и храните его там, где сохраняется каждая версия и где он переживёт ваш ноутбук. 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 держит кэш снаружи |
| Не хочется новых инструментов | Облачные возможности движка плюс автоматические резервные копии | Работает — с оговоркой, что откат зависит от файловой истории облачного сервиса, а не от вас |
| Проект уже потерян | Спасите то, что есть в экспорте, остальное переделайте — и сегодня же заведите репозиторий | Экспорт — не исходник; для этой строки единственное настоящее лекарство — профилактика, и начинается она сегодня |
Что вы на самом деле защищаете
На диске лежат три вещи, и непоправима только одна.
- Исходный проект. Файл или папка, которые открывает редактор: сцены, события, объекты, макеты. Это месяцы работы, и восстановить их не из чего.
- Ассеты. Спрайты, звук, шрифты, тайлмапы. Часто импортированы в проект, но живут рядом с ним. Потеряете — переделывать графику или платить за неё заново.
- Документы. Дизайн-документ игры, заметки, таблицы. Переделываются дешевле графики, но дороже ничего.
Чего в списке нет: экспортированных сборок. Экспорт отвечает на вопрос, что игра делает; проект — из чего она сделана. Разработчик с 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 проводит через всю последовательность, и она переносится на любой движок:
- Сначала репозиторий. В GitHub Desktop: файл, новый репозиторий, создать, затем «опубликовать репозиторий» с галкой «оставить код приватным».
- Сохраните проект внутрь. Новый проект: выберите папку репозитория как место. Существующий: «сохранить как» в папку репозитория, старое место бросьте.
- Коммит после каждой рабочей сессии. Однострочное описание изменений, коммит, отправка. Иллюстрация в уроке показывает несколько коммитов в день; правило там сформулировано прямо: коммиты должны быть частыми.
- Ветки для экспериментов. Отдельная ветка под рискованную переработку, коммиты туда, слияние, когда сработало. В этом вся фича: попробовать разрушительное, не рискуя рабочей игрой.
- Возврат по необходимости. Когда что-то сломалось тихо, откройте историю в 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: рабочий проект на вашей машине, там, откуда его читает редактор.
- Копия 2: отправленный репозиторий или проект в облачном сохранении. Вне дома по определению, с историей, если это репозиторий.
- Копия 3: датированный архив на другом сервисе или диске. Раз в неделю: запакуйте папку проекта вместе с исходниками ассетов, назовите файл датой и положите на внешний диск или в облако, которое не используется под репозиторий.
Пять минут в пятницу — и готово. Архив нарочно примитивен: он выживает, даже если вы потеряете аккаунт GitHub, у облака случится сбой или вирус-вымогатель зашифрует всё, до чего машина дотягивается, — ровно тот сценарий, от которого вечно включённая синхронизируемая папка спасти не может.
Внедряем за неделю
- Переключите режим сохранения. GDevelop: свойства, несколько файлов. Construct: сохранить как проект-папку. Godot: делать нечего, метаданные сгенерируйте всё равно.
- Создайте приватный репозиторий и перенесите проект внутрь. Сначала репозиторий, потом «сохранить как» — как в последовательности урока GDevelop.
- Сделайте коммит и отправку сегодня. Один первый коммит — и есть вся разница между «защищено» и «нет».
- Включите автоматические резервные копии в движке, где такая опция есть, с интервалом, при котором потерять работу с последней копии не обидно.
- Исключите сгенерированные файлы до первого коммита, если получится, после — если придётся; историю чистка не портит.
- Отмечайте коммит под каждый билд, который уходит людям. Когда игра доберётся до публикации в Steam или плейтеста, вы захотите точно знать, какая версия проекта породила сборку, которую видели игроки.
- Пятничный архив, каждую неделю. Напоминание в календаре, пять минут, три-два-один готово.
Частые ошибки
- Экспорт как резервная копия. Это продукт, а не исходник; восстановление из него — та самая история с r/gdevelop, с которой статья началась.
- Коммит раз в месяц, отправка никогда. Неотправленный репозиторий — одна точка отказа с лишними шагами.
- Остаться в режиме одного файла. Каждая версия — непрозрачный ком, разницы бессмысленны, параллельно работать невозможно.
- Облачная синхронизация как единственная копия. Синхронизация честно тиражирует порчу, а в шеринге GDevelop разрешение конфликта означает, что чью-то работу выбрасывают целиком.
- Проекты в браузерном хранилище. Один клик «очистить данные» — и их нет; само руководство Construct не советует на него полагаться.
- Резервные копии на том же диске или в том же доме. Список руководства, что забирает их вместе: пожар, потоп, кража, отказ, вирус-вымогатель.
- Экспортированные сборки в репозитории. Они раздувают каждый клон, и блок 100 МБ однажды отвергнет одну из них посреди отправки.
- Нет записи, какая версия уходила игрокам. Баг-репорт плейтестера о третьей сборке без тега — археология; версионирование проекта окупается, только когда каждой сборке можно сопоставить версию проекта.
Место Egmatic
О стадии скажем прямо: Egmatic — no-code 2D-редактор и движок, построенный на ИИ, сейчас в pre-alpha. Тема оказалась в нашем блоге не случайно: в читках сообщества, которые мы проводим, потерянные исходники, тихая порча и восстановление из экспортов повторяются неделями, а люди, с которыми это случается, были заняты созданием игр, а не пренебрежением очевидными инструментами. Инструменты были не очевидны. Их собирали программисты.
Наша позиция: безопасность проекта — работа слоя публикации. Редактор, который ведёт игру от сцены до выпуска, должен нести и её историю, чтобы версионирование, откат и копии вне дома были свойствами рабочего процесса, а не самообразованием на выходные. Вы направляете игру, инструментарий исполняет обвязку, и всё выпущенное, включая историю, принадлежит вам. Дат мы не анонсируем: честность pre-alpha означает, что даты появляются, когда мы можем их сдержать. Если вы ждёте именно такого рабочего процесса, он обретает форму в листе ожидания на egmatic.com — и запросы, приходящие сейчас, включая ваш о том, как должны защищаться ваши проекты, и ведут разработку.
Заключение
Защищайте исходник, а не экспорт. Переключите режим сохранения, превращающий проект в отслеживаемые файлы, положите его в приватный репозиторий через GitHub Desktop, отправляйте изменения после каждой сессии и держите третью датированную копию там, куда машина не дотянется. GDevelop, Construct и Godot встречают вас на полпути по самому замыслу, облачные функции движков закрывают свою половину — отказ железа, а пятничный архив закрывает то, что не закрывает ничего другое. Вся настройка стоит один вечер и, в отличие от игры, никогда не падает: она просто тихо следит, чтобы всегда было вчера, куда вернуться.
Источники
- GDevelop Wiki, Properties of the game: тип файла проекта, по умолчанию один файл, режим нескольких файлов — каждая сцена, внешний макет и внешний лист событий отдельным файлом, рекомендовано для систем контроля версий
- GDevelop Wiki, How to backup and maintain your project using GitHub and GitHub Desktop: последовательность «сначала репозиторий», рекомендация нескольких файлов, ветки под фичи, частые коммиты, восстановление из истории
- GDevelop Wiki, Collaborate on a GDevelop project: облачные проекты, доступ на просмотр и правку, подписка Pro у соавторов и один гость на проект, реалтайм-коллаборация пока не готова, разрешение конфликта «перезаписать или отменить»
- Construct 3 Manual, Saving projects: Cloud Save в Google Drive, OneDrive и Dropbox; .c3p через «скачать копию»; папки проекта рекомендованы для контроля версий с текстовыми файлами; .c3p как заархивированная папка проекта; ограничения браузерного хранилища и риск очистки данных
- Construct 3 Manual, Best practices: регулярные копии, копии вне дома обязательны против пожара, потопа, кражи, отказа железа и вирусов-вымогателей; настройка периодического копирования активного проекта с интервалом и местом
- Godot Docs, Version control systems: дружелюбные к системам контроля версий читаемые и сливаемые файлы, плагин Git, генерируемые .gitignore и .gitattributes, исключения .godot и .translation, настройка Git LFS
- GitHub Docs, About large files on GitHub: предупреждение с 50 МБ, блокировка свыше 100 МБ, лимит загрузки 25 МБ через браузер
- GitHub Docs, About Git Large File Storage и GitHub's plans: потолок 2 ГиБ на файл LFS, неограниченные приватные репозитории на бесплатных аккаунтах; включение LFS и цена паков данных — по странице тарифов
- Читки сообщества, сентябрь 2026: сообщения r/gdevelop о потере исходников и тихой порче проектов, процитировано из дайджеста обратной связи Egmatic; дословные фразы использованы с контекстом
Читайте также

Construct 3 против Godot: какой движок выбрать для 2D-игры
Construct 3 — таблицы событий без кода, но $129,99 в год. Godot — бесплатный, но нужен код на GDScript. Какой движок выбрать для 2D-игры: сравнение.
2D-движки для мобильных игр 2026: Godot, Defold или Unity?
Лучшие 2D-движки для мобильных игр 2026: Godot (код), Unity (экосистема), GameMaker (2D), Defold (Lua, малый объём), GDevelop и Construct (без кода).
Альтернативы GDevelop: 6 no-code движков для сравнения
Шесть альтернатив GDevelop: Construct 3, Godot, GameMaker, Unity Visual Scripting, Buildbox и Egmatic, по цене, возможностям и платформам.