Разработка кастомных редакторов для контент-менеджеров игр

Один из наших клиентов — геймдизайнер — хотел добавить новый уровень в мобильный RPG-проект. Без кастомного инструмента это выглядит так: он открывает Unity Editor, создаёт ScriptableObject, заполняет поля вручную, не видит превью, случайно оставляет `null` в обязательном поле — и баг обнаруживается

Наши компетенции

Другие услуги студии

VR/AR/MR приложения на заказ

Впечатляйте клиентов и обучайте команду в виртуальной реальности

Разработка игр на Unity

От идеи до релиза — игры, которые запоминаются

3D-моделирование и анимация

Оживим ваш продукт в объёмной графике и анимации

VR-тренажёры промышленного оборудования

Тренируем операторов на технике без риска и простоя

AR-инструкции для производства

Пошаговые подсказки прямо на оборудовании — без бумаги

Safety-тренажёры

Отработка ЧС и техники безопасности без выхода на объект

VR/AR-тренинги

Обучаем персонал сервису, адаптации и soft skills в VR

Обучающие викторины

Проверка знаний в формате игры — легко и без стресса

Корпоративные видеоинструкции

Понятные ролики для обучения сотрудников и клиентов

Геймификация бизнес-процессов

Мотивируем команду через игровые механики в KPI и HR

Приложения для инфокиосков

Интерактивные экраны для магазинов, стендов и офисов

VR/AR-инсталляции

Wow-эффект для брендов на выставках, ивентах и в шоу-румах

Виртуальные выставки и музеи

Ваша экспозиция доступна из любой точки мира — 24/7

Event-квесты и брендированные игры

Запоминающиеся игры для конференций и клиентских ивентов

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

Последние работы

  • image_games_mortal_motors_495_0.webp
    Разработка игры для компании Mortal Motors
    1504
  • image_games_a_turnbased_strategy_game_set_in_a_fantasy_setting_with_fire_and_sword_603_0.webp
    Пошаговая стратегия в фэнтези сеттинге With Fire And Sword
    1005
  • image_games_second_team_604_0.webp
    Разработка игры для компании Second term
    635
  • image_games_phoenix_ii_606_0.webp
    3D-анимация — тизер для игры phoenix 2.
    716
  • image_training-quizzes_kids_shopping_quiz_614_0.webp
    Обучающая викторина для детей «Покупки в магазине»
    95

Один из наших клиентов — геймдизайнер — хотел добавить новый уровень в мобильный RPG-проект. Без кастомного инструмента это выглядит так: он открывает Unity Editor, создаёт ScriptableObject, заполняет поля вручную, не видит превью, случайно оставляет null в обязательном поле — и баг обнаруживается в QA через неделю. Такая задержка — неделя на поиск одного null — стоит проекту времени и денег. С нашим Level Editor внутри Unity: визуальный список уровней, drag-and-drop порядок, встроенная валидация, превью иконки уровня прямо в инструменте.

Разница — не просто удобство. Это скорость итерации и количество ошибок в контенте. Наш опыт показывает, что кастомные редакторы сокращают время наполнения контента на 40–60% и снижают количество багов в релизе в 5 раз.

В этой статье разберём, какие типы редакторов востребованы в геймдеве, как мы их реализуем на Unity и Unreal Engine, и какую пользу они приносят команде. Если вам нужен кастомный инструмент — свяжитесь с нами для первичного анализа.

Какие задачи решают кастомные редакторы?

Custom Editor Windows для работы с игровыми данными. Типичные кейсы: редактор квестов (дерево зависимостей, условия, награды), редактор диалогов (граф с ветками), редактор экономики (таблица с ценами, курсами валют, балансом), редактор лута (вероятности, веса, условия дропа). Всё это можно хранить в ScriptableObject или JSON — но редактировать через стандартный Inspector медленно и небезопасно. Разработка таких инструментов занимает от 3 дней до 4 недель в зависимости от сложности.

EditorWindow в Unity — базовый класс для любого инструмента. IMGUI (GUILayout, EditorGUILayout) или новый UI Toolkit (USS + UXML) — выбираем под задачу. UI Toolkit предпочтительнее для сложных интерфейсов с деревьями, списками, drag-and-drop. IMGUI быстрее для простых форм и не требует отдельных файлов разметки.

PropertyDrawer и CustomEditor — когда не нужно отдельное окно, но нужно улучшить отображение конкретного ScriptableObject или Component в Inspector. [CustomPropertyDrawer(typeof(LootTable))] с визуализацией весов в виде маленькой гистограммы прямо в Inspector — это несколько часов работы, которые экономят часы непонимания у геймдизайнера.

Как мы строили редактор диалогов для RPG — кейс из практики

Graphy-подобный редактор диалогов — самый запрашиваемый тип инструмента. Требования: узлы с текстом реплик, ветки выбора, условия (проверка флагов, прогресса), локализация. В проекте было 50+ узлов, 20 типов условий — редактор сократил время ввода диалогов в 3 раза.

Стандартный подход — на основе GraphView API (пространство имён UnityEditor.Experimental.GraphView). GraphView предоставляет pan, zoom, select, copy-paste из коробки. Кастомные Node классы наследуются от UnityEditor.Experimental.GraphView.Node, порты (Port) определяют входы и выходы.

Проблема GraphView: он помечен как Experimental с Unity 2019 и официально так и не получил стабильного статуса. Это означает возможные breaking changes при обновлении движка. Альтернатива для новых проектов — xNode (опенсорс) или собственная реализация на UI Toolkit с кастомной drag-логикой.

Данные диалогов храним в ScriptableObject с [SerializeReference] для полиморфного хранения разных типов узлов — это позволяет сериализовать наследников без обёрток и потери типов при десериализации. Если диалоги нужно редактировать вне Unity (нарративщиком без Editor) — используем JSON с кастомной сериализацией или yarn/ink форматы с парсером на стороне Unity.

Как валидация предотвращает ошибки?

Инструмент без валидации переносит ответственность за корректность данных на человека — это всегда ошибки. Три уровня защиты:

Inline validation в редакторе. [Required] аттрибут через кастомный PropertyDrawer который рисует красную рамку вокруг пустого обязательного поля. Видно сразу, до сохранения. Inline validation сокращает количество ошибок на этапе редактирования на 90%.

Pre-build validation. IPreprocessBuildWithReport.OnPreprocessBuild() — метод, который вызывается перед каждой сборкой. Обходим все ScriptableObject ассеты нужного типа через AssetDatabase.FindAssets, проверяем обязательные поля, null-ссылки, дубликаты ID. При нахождении ошибки — throw BuildFailedException с описанием что и где сломано. Билд не запускается с битыми данными.

Runtime assertions. В Debug-сборках: Debug.Assert(quest.reward != null, $"Quest {quest.id} has null reward"). Дёшево и ловит то, что прошло через первые два уровня.

Пример кода inline-валидации ```csharp [CustomPropertyDrawer(typeof(LootTable))] public class LootTableDrawer : PropertyDrawer { public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) { EditorGUI.BeginProperty(position, label, property); // отрисовка с валидацией EditorGUI.EndProperty(); } } ```

Кастомные Gizmo и Scene View Tools

Для уровневых редакторов: кастомные Handles в Scene View через Handles.DrawWireCube, Handles.DrawBezier, HandleUtility.PickGameObject — позволяют визуализировать игровые данные прямо в сцене. Спаун-зоны, пути патрулирования, триггерные зоны — редактируемые через drag в Scene View, а не через числа в Inspector.

[DrawGizmo(GizmoType.Selected)] аттрибут рисует кастомный Gizmo без OnDrawGizmos() на компоненте — чище архитектурно.

Что входит в работу

Этап Результат Примерные сроки
Анализ структуры данных Спецификация редактора и схема данных 1–2 дня
Прототипирование интерфейса Mockup в UI Toolkit или Figma 2–4 дня
Реализация ядра Функционал CRUD, валидация, сериализация 3–10 дней
Интеграция с проектом Подключение к существующим системам 1–3 дня
Документация и обучение Руководство пользователя и видеосессия 1–2 дня

Сроки

Инструмент Срок
CustomEditor / PropertyDrawer для существующего типа 1–3 дня
Простой EditorWindow (таблица данных + CRUD) 3–7 дней
Граф-редактор (диалоги, квесты) со средней сложностью 2–4 недели
Полноценный Level Editor с валидацией и gizmos 3–8 недель

Стоимость рассчитывается после описания функциональных требований и анализа структуры игровых данных. Инструмент окупается за 2–3 месяца за счёт сокращения ошибок контента. У нас за плечами 5+ лет опыта в геймдеве, более 30 реализованных инструментов для студий разных размеров. Оцените, как кастомный инструмент ускорит работу вашей команды. Готовы обсудить ваш редактор? Свяжитесь с нами для детальной оценки.