Убирает dev-инструменты и их следы из экспортных сборок Godot 4.7. Переработка внутреннего release_sanitizer: без хардкода, с редактируемым конфигом, UI и профилями под таргеты.
Студийный аддон, лежит в addons/abyss_moth/export_sanitizer/. Репозиторий: godot-export-sanitizer.
В редакторе удобно держать всё включённым (MCP-помощник, линтеры, авто-слайсеры атласов и т.п.). Но в релизную сборку они попадать не должны: лишний вес, а пути плагинов и имена классов видны при декомпиле project.binary. Аддон вычищает это на время экспорта, не трогая проект в редакторе.
_export_file->skip()для файлов, попавших под правила (страховка поверхexclude_filterпресетов)._export_begin-> временно (только в памяти) убирает из ProjectSettings указанныеstrip_settings(напримерautoload/_mcp_game_helper,editor_plugins/enabled),_export_endвозвращает.- Чистит
global_script_class_cache.cfgот классов исключённых аддонов, после экспорта восстанавливает.
project.godot на диске не меняется. Аддон работает только при экспорте, в редакторе всё остаётся как есть.
Лежит в КОРНЕ проекта: res://export_sanitizer.config.json (а не внутри аддона - чтобы обновление аддона через abyss_moth_kit не затирало ваши правила). По умолчанию пустой:
{
"schema": 1,
"common": { "skip_prefixes": [], "skip_exact": [], "strip_settings": [], "sanitize_class_cache": true },
"targets": { "web": { "skip_prefixes": [] }, "android": { "skip_prefixes": [] } }
}Активный набор при экспорте = common + все targets, чьё имя есть в features платформы (web, android, windows, macos, linux, ios, ...). То есть общие исключения в common, а специфичные для веба или андроида - в соответствующем target.
Записи можно задавать:
- путём:
res://addons/tool/(папка-префикс) илиres://file.json(точный файл); - через
uid://...- резолвится в путь на момент экспорта (у папок uid нет, для папок используйте путь).
Dock "Export Sanitizer" справа: выбор профиля (common/web/android), списки skip_prefixes / skip_exact / strip_settings с добавлением (путь или uid) и удалением, галка чистки кэша классов, кнопки "Загрузить пример студии" и "Сохранить".
data/presets/studio_example.json - типовой студийный набор (godot_ai, kit, сам sanitizer, линтер, atlas slicer + strip mcp-автолоада и editor_plugins). Это не активная конфигурация: грузится кнопкой и требует Сохранить. У сторонних проектов дефолт пустой.
export_sanitizer/
plugin.cfg / plugin.gd # @tool EditorPlugin: регистрирует export-плагин + dock
core/
sanitizer_export_plugin.gd # EditorExportPlugin: skip по активному профилю
sanitizer_config.gd # load/save, резолв uid, сборка активного набора
data/presets/studio_example.json # пример (загружаемый)
ui/sanitizer_panel.gd # панель управления конфигом