Godot 4.7 project for authoring, previewing, validating, and building Exchanger PCK themes. Includes the example and space-pixel themes, binding contracts, editor tooling, validation/build scripts, and project documentation.
7.1 KiB
QA и решение проблем
Автоматический checklist
.\tools\Test-PackagedBindingContract.ps1
.\test-theme.ps1 -ThemeId example
.\test-theme.ps1 -ThemeId space-pixel
.\build-theme.ps1 -ThemeId space-pixel
godot --headless --path . --script res://tools/verify_interactive_pet.gd -- --theme space-pixel
Проверяется формат manifest, девять сцен, root names/metadata, 481 immutable и 24 обязательных supplemental
обязательных ID, типы и уникальность, самодостаточные Theme/background/decoration, импорт GDScript
и остальных ресурсов, запуск preview и export PCK.
Если manifest содержит InteractivePetScene, test-theme.ps1 и build-theme.ps1 также запускают
generic pet verifier. Он проверяет scene/API/сигналы/анимации и неподвижность корня, но не ищет
текстуры по имени папки.
Визуальный checklist 720×1280
- Убедитесь, что в меню
РедактордоступныВыбрать тему,Создать тему,Экспортировать темуиПрименить тему к Exchanger, а selector показываетexampleиspace-pixel. Экспорт должен позволять выбрать каждый ID независимо от активной темы, затем предложить путь.pck; применение — показать стандартный путь Exchanger. - Для выбора, создания, экспорта и применения проверьте окно прогресса: название этапа, процент, итоговый путь и доступную после завершения кнопку закрытия.
- Откройте все девять вкладок: HOME, CASH, SUM, KEYPAD, CARD, SUCCESS, ERROR, SERVICE, SETTINGS.
- С
BINDINGS: ONубедитесь, что каждый функциональный элемент имеет рамку и осмысленный ID. - С
BINDINGS: OFFпроверьте отступы, центрирование изображений, контраст текста, отсутствие обрезания и перекрытий. - Проверьте длинные суммы, сообщения, русские подписи и все внутренние разделы SETTINGS.
- В SETTINGS переключите
KEYBOARD: OFF → TEXT → NUM: обе панели должны быть снизу, не выходить за 720×1280, иметь кнопку скрытия справа сверху и удобные touch-клавиши. - С
BINDINGS: ONпроверьте все 57 keyboard ID; приOFFклавиатуры не должны занимать место. - Переключите
INVENTORY: OFF → PANEL → DIALOG: проверьте остаток, обе кнопки, статус, редактируемое количество и подтверждение; сBINDINGS: ONдолжны быть видны все 14 ID. - Убедитесь, что фон неподвижен, а движение ограничено отдельными спрайтами.
- Сохраните
.tscnили.tresпри открытой вкладке и подтвердите live reload без сброса вкладки. - Просмотрите game/editor logs через
godot-ai: новые parser/runtime/resource errors недопустимы. - Откройте хотя бы одну
.tscnпрямо изthemes/<id>/package/scenes/и сравните с той же вкладкой: кроме внешней навигации/overlay галерея не должна менять её вид или дерево.
Частые ошибки
Godot 4.7 не найден
Запустите Godot Editor, добавьте godot/godot4 в PATH, задайте в текущем терминале
$env:GODOT4_EXECUTABLE = 'D:\path\to\Godot.exe' или передайте -GodotExecutable. Не указывайте
исполняемый файл MCP-сервера godot-ai: это не Godot Editor.
Preview показывает не ту тему
Повторите activate-theme.ps1 -ThemeId <id> и проверьте build/active-theme.json: поле
Package должно указывать на нужный themes/<id>/package/. Preview читает его напрямую.
Изменение package не появилось
Preview должен быть запущен после активации. Сохраните файл на диск, подождите около секунды и
проверьте вывод [Theme Preview]. Для нового типа ресурса, которого нет в watched extensions,
перезапустите preview или дополните tooling отдельной задачей.
Missing/duplicate/wrong type binding
Найдите ID в contracts/screen_bindings.v2.json, проверьте metadata узла и его Godot-класс.
Иерархия/имя дочернего узла не важны; ID, класс и уникальность обязательны.
Packaged binding catalog differs
Не копируйте JSON вручную с изменением кодировки. Если host не менялся, восстановите точную копию
contracts/screen_bindings.v2.json в package. Если host изменился, выполните согласованную миграцию
из BINDING_CONTRACT.md и обновите Exchanger.
Скрипт работает в preview, но не после сборки
Убедитесь, что .gd находится внутри themes/<id>/package/ и прикреплён к экспортируемой сцене
либо загружается из неё. Проверьте относительные пути, parser errors при test-theme.ps1 и журнал
Exchanger после полного перезапуска. _init() может вызываться при предварительной валидации
PackedScene; runtime-инициализацию, которой требуется SceneTree, размещайте в _ready().
PCK собрался, но Exchanger использует fallback
Закройте и перезапустите Exchanger, проверьте путь установки, manifest v2, hash контракта и журнал
ThemeManager. Затем выполните интеграционный checklist из THEME_INTEGRATION.md.
Критерий готовности
Автоматические команды успешны, все девять экранов визуально проверены в портретном окне, журнал чист, PCK содержит только production-ресурсы, изменения и ограничения отражены в docs/agentmemory.