Игра, собранная в 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» делает файл читаемее, но не возвращает утраченные имена. Не путайте форматирование с настоящей декомпиляцией — восстановить исходные названия из обфусцированного файла технически невозможно.
Способы восстановления проекта
Действующих подходов несколько, и выбор зависит от того, что именно нужно получить: ресурсы, логику или полноценный редактируемый проект.
- 🔍 Ручной разбор data.js — открыть файл в редакторе, отформатировать JSON и анализировать блоки событий. Подходит, если минификация отключена или нужна только конкретная механика.
- 🧰 Инструменты сообщества — энтузиастами создавались скрипты и утилиты для парсинга
data.jsи частичной конвертации в формат проекта. Их работоспособность зависит от версии Construct 2, которой собрана игра, и наличия минификации; гарантий полного восстановления такие инструменты не дают. - 🗂️ Извлечение ресурсов — спрайты из папки
imagesи звуки изmediaкопируются напрямую. Атласы придётся разрезать вручную в графическом редакторе. - 🛠️ Пересборка проекта вручную — создание нового .capx с нуля, куда переносятся извлечённые ресурсы, а события воссоздаются по логике из
data.js.
На практике чаще всего комбинируют последние два подхода: ресурсы извлекаются автоматически, а логика переписывается вручную, ориентируясь на структуру событий в файле данных.
Порядок действий при восстановлении своего проекта
Если вы потеряли исходник собственной игры, но у вас осталась экспортированная сборка, действуйте в такой последовательности.
☑️ Восстановление проекта Construct 2
Сначала откройте 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 не применимы, сверяйтесь с документацией и инструментами под конкретную версию.
Законно ли извлекать ресурсы из чужой игры?
Технически возможно, юридически — зависит от цели. Изучение в личных образовательных целях обычно допустимо, а вот использование чужих спрайтов, звуков или кода в своих проектах без разрешения автора нарушает авторские права.