Construct 2 Decompiler: реально ли восстановить исходный код игры

Игра, собранная в Construct 2 и экспортированная в HTML5, хранит всю логику событий в файле data.js внутри папки проекта — и именно этот файл чаще всего пытаются «декомпилировать», когда исходный .capx утерян. Проблема в том, что при экспорте с включённой опцией Minify script содержимое data.js проходит обфускацию: имена переменных и объектов заменяются короткими идентификаторами, а структура событий превращается в плоский JSON-массив, который Construct 2 обратно не открывает.

Полноценного официального декомпилятора, который превращает экспортированную сборку обратно в редактируемый проект .capx, не существует. Однако извлечь значительную часть данных — спрайты, звуки, анимации, а иногда и читаемую логику событий — вполне реально. Ниже разберём, как устроен экспорт Construct 2, что можно восстановить и какими инструментами это делается.

Что находится внутри экспортированной сборки Construct 2

При экспорте в HTML5 Construct 2 формирует набор файлов с предсказуемой структурой. Понимание этой структуры — первый шаг к любому восстановлению, потому что именно она определяет, что доступно без всякого «взлома».

  • 📄 index.html — оболочка страницы, подключающая движок c2runtime.js;
  • 📦 data.js — главный файл: все лейауты, события, объекты, переменные и настройки проекта в формате JSON;
  • 🖼️ папка images — спрайты и тайлсеты, часто объединённые в атласы (spritesheet);
  • 🔊 папка media — звуки и музыка в форматах .ogg и .m4a;
  • ⚙️ c2runtime.js — сам движок Construct 2, общий для всех проектов.

Ключевой момент: ресурсы (картинки и звук) лежат открыто и извлекаются простым копированием. Сложность представляет только data.js, потому что именно его содержимое пользователи имеют в виду под «декомпиляцией».

Чем отличается минифицированный и неминифицированный data.js

Если при экспорте галочка Minify script была снята, data.js содержит читаемый JSON с оригинальными именами объектов, переменных и комментариями к событиям. Такой файл можно открыть в любом текстовом редакторе и фактически читать логику игры как документ — события, условия и действия видны в явном виде.

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

⚠️ Внимание: форматирование минифицированного data.js через «beautifier» делает файл читаемее, но не возвращает утраченные имена. Не путайте форматирование с настоящей декомпиляцией — восстановить исходные названия из обфусцированного файла технически невозможно.
📊 С какой целью вы ищете декомпилятор Construct 2?
Потерян свой .capx, нужно восстановить проект
Извлечь спрайты и звуки из игры
Изучить логику чужой игры
Исследование / моддинг

Способы восстановления проекта

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

  • 🔍 Ручной разбор data.js — открыть файл в редакторе, отформатировать JSON и анализировать блоки событий. Подходит, если минификация отключена или нужна только конкретная механика.
  • 🧰 Инструменты сообщества — энтузиастами создавались скрипты и утилиты для парсинга data.js и частичной конвертации в формат проекта. Их работоспособность зависит от версии Construct 2, которой собрана игра, и наличия минификации; гарантий полного восстановления такие инструменты не дают.
  • 🗂️ Извлечение ресурсов — спрайты из папки images и звуки из media копируются напрямую. Атласы придётся разрезать вручную в графическом редакторе.
  • 🛠️ Пересборка проекта вручную — создание нового .capx с нуля, куда переносятся извлечённые ресурсы, а события воссоздаются по логике из data.js.

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

Порядок действий при восстановлении своего проекта

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

☑️ Восстановление проекта Construct 2

Выполнено: 0 / 5

Сначала откройте data.js в редакторе с поддержкой подсветки JSON (подойдёт Notepad++ или VS Code) и оцените, насколько файл читаем. Если имена объектов на месте — вам повезло: события можно переносить практически один в один. Если файл минифицирован, примените форматирование JSON через встроенные средства редактора или онлайн-форматтер, чтобы хотя бы увидеть структуру.

Далее создайте в Construct 2 пустой проект той же версии, что использовалась изначально — это снижает риск несовместимости поведений. Переносите объекты по одному: сначала спрайты и их анимации, затем переменные, затем события. После каждого этапа запускайте предпросмотр и сверяйте поведение с оригинальной сборкой.

Сравнение вариантов восстановления

ПодходЧто восстанавливаетсяТрудозатратыРаботает с минификацией
Копирование ресурсовСпрайты, звуки, музыкаМинимальныеДа
Ручной разбор data.jsЛогика событий, переменныеВысокиеЧастично
Скрипты сообществаСтруктура проекта, частично событияСредниеОграниченно
Полная пересборка вручнуюВесь проект как новый .capxОчень высокиеДа, но требует понимания логики

Правовая сторона и ограничения

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

⚠️ Внимание: даже если игра распространяется бесплатно, её ресурсы не становятся свободными. Для моддинга уточняйте условия у автора; для коммерческого использования чужих ассетов требуется явная лицензия.

Ещё одно ограничение касается экспортов не в HTML5: сборки через Node Webkit (NW.js) или мобильные обёртки содержат те же файлы, но упакованы в архив package.nw или внутрь APK. Их предварительно нужно распаковать — для NW.js это обычный ZIP-архив, который открывается архиватором после смены расширения.

Как достать файлы из NW.js-сборки

Файл package.nw в папке игры — это ZIP-архив. Переименуйте копию в .zip, распакуйте архиватором, и внутри вы найдёте привычные data.js, images и media. Дальше работайте с ними как с обычным HTML5-экспортом.

Как защитить свой проект от декомпиляции

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

Включайте Minify script при финальном экспорте — это лишает файл данных читаемых имён. Дополнительно можно прогнать data.js через сторонние обфускаторы JavaScript, но проверяйте работоспособность игры после каждого такого шага: агрессивная обфускация способна сломать выполнение. И главное — храните резервные копии .capx в нескольких местах, включая облачное хранилище, чтобы вопрос декомпиляции собственной игры вообще не возник.

Часто задаваемые вопросы

Существует ли готовая программа «Construct 2 decompiler»?

Единого официального инструмента нет. В сообществе встречаются скрипты для разбора data.js, но они дают лишь частичное восстановление и зависят от версии Construct 2 и наличия минификации. Полностью автоматического преобразования сборки в .capx не существует.

Можно ли восстановить проект, если data.js минифицирован?

Ресурсы — да, полностью. Логику — только частично: структура событий сохраняется, но исходные имена объектов и переменных утрачены, и их придётся восстанавливать вручную по смыслу.

Чем открыть файл data.js?

Любым текстовым редактором, лучше с подсветкой JSON — например, VS Code или Notepad++. Для минифицированного файла сначала примените форматирование, чтобы увидеть структуру.

Работает ли этот подход с играми на Construct 3?

Общий принцип похож — данные проекта также хранятся в файлах сборки, — но формат и структура отличаются. Инструкции для Construct 2 напрямую к Construct 3 не применимы, сверяйтесь с документацией и инструментами под конкретную версию.

Законно ли извлекать ресурсы из чужой игры?

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