Files
open-wc/docs/GODOT_EDITOR.md
T

6.1 KiB
Raw Blame History

Инструменты OpenWC внутри Godot Editor

Принцип

Все интерактивные authoring-инструменты реализуются как Godot EditorPlugin. Отдельный native GUI не является частью целевой архитектуры. Headless-команды допускаются для CI и batch build, но используют те же application services и validators.

Workspace

Плагин addons/openwc_editor должен предоставлять:

  • главное рабочее пространство World;
  • docks Content Browser, Outliner, Inspector, Validation, Build, Database и History;
  • viewport overlays и gizmos;
  • project settings для путей и dev environments;
  • command palette и контекстные действия;
  • playtest launcher.

Editor UI вызывает services, а не SQL, MPQ parsers или файловую запись напрямую.

Инструменты мира

  • Camera/navigation и переход по map/tile/coordinates.
  • Selection, multiselect, filtering, snapping и transform gizmo.
  • Terrain sculpt: raise/lower, smooth, flatten, noise, stamp.
  • Terrain paint: texture layers, alpha, holes и liquid masks.
  • Placement: M2, WMO, creature, gameobject, trigger, sound emitter.
  • Paths: waypoint, patrol, spline, taxi и transport preview.
  • Volumes: area, subzone, encounter, graveyard, phase и weather.
  • Visualization modes: collision, normals, chunk/tile bounds, nav/pathing, spawn density, quest dependencies и streaming budgets.

Каждый stroke или placement создаёт одну логическую undoable command. Длительный stroke агрегируется, чтобы history не содержала команду на каждую вершину.

Data editors

  • Creature и gameobject templates.
  • Spawn/group/path editor.
  • Quest form и quest-chain graph.
  • Gossip/dialogue и conditions.
  • Loot/vendor/trainer/item editors.
  • Dungeon/encounter graph.
  • Localization table с completeness report.
  • Raw server record inspector только как диагностический режим.

Инспекторы генерируются из ContentTypeDescriptor, но сложные сущности могут иметь специализированный inspector. Валидация отображается у поля, сущности и проекта.

Selection и scene tree

Authoring selection хранится отдельно от runtime scene tree. Preview-ноды считаются disposable projection: их можно пересоздать из EditorWorldModel. Сохранение .tscn не является способом записи server content.

Undo/redo и autosave

  • Все мутации проходят через command history.
  • Команда хранит стабильные IDs, а не ссылки на Node.
  • Autosave пишет recovery journal атомарно.
  • После crash предлагается восстановление с preview diff.
  • External file changes обнаруживаются; конфликт не перезаписывается автоматически.

Длительные задачи

Import, bake, validation, packaging и DB snapshot выполняются как jobs:

  • progress и текущий этап;
  • cancellation token;
  • структурированные diagnostics;
  • отсутствие блокировки editor UI;
  • staging output и атомарная публикация результата;
  • повторяемая команда для headless CI.

Database dock

  • Показывает тип ядра, revision, schema version и capabilities.
  • По умолчанию read-only.
  • Production target визуально и технически отделён от dev.
  • Перед apply показывает SQL/change diff, preconditions и backup status.
  • Secrets не сохраняются в проект и не попадают в output/log.

Playtest

Редактор должен уметь:

  1. проверить Content Project;
  2. собрать client assets и server change set;
  3. применить change set к disposable/dev environment;
  4. запустить или перезапустить core при необходимости;
  5. запустить клиент на нужной карте и позиции;
  6. собрать client/server logs и test observations;
  7. откатить временный change set.

Fast preview без сервера допускается для геометрии, освещения, spawn layout и quest graph, но НЕ считается проверкой серверной механики.

Расширения редактора

Новый тип контента регистрирует schema, icon, inspector, validator, compiler и optional viewport presenter. Плагин обязан объявить версию API и зависимости. Неизвестное поле сохраняется round-trip, если формат это допускает.

UX-принципы

  • Безопасные значения по умолчанию и preview перед разрушительной операцией.
  • Ошибка объясняет проблему, местоположение и действие для исправления.
  • Stable IDs видны, но пользователь в основном работает с именами и ссылками.
  • Bulk-edit показывает scope и итоговый diff.
  • Горячие клавиши переназначаются.
  • Цвет не является единственным носителем статуса.
  • Основные сценарии доступны без ручного SQL.

MVP

Первый editor slice: открыть карту, импортировать server snapshot, увидеть spawns, поставить NPC, создать простой kill quest, проверить ссылки, получить SQL diff, применить к dev-базе и запустить playtest.