Розробка інструментів та редакторів для контент-менеджерів ігор

Наша компанія з розробки відеоігор веде незалежні проекти, спільно з клієнтом створює ігри та надає додаткові операційні послуги. Досвід нашої команди дозволяє нам охопити всі ігрові платформи та розробити приголомшливий продукт, що відповідає баченню клієнта та перевагам гравців.

Від імерсивних застосунків до ігрових світів і 3D-сцен

Наша виділена команда для VR/AR/MR-розробки, Unity-продакшну і 3D-моделювання та анімації — з власними кейсами і презентаціями.

Відвідати персоналізований сайт
Показано 1 з 1 послугУсі 242 послуг
Розробка інструментів та редакторів для контент-менеджерів ігор
Складна
~10 робочих днів
Часті питання

Наші компетенції

Які етапи розробки гри?

Останні роботи

  • image_games_mortal_motors_495_0.webp
    Розробка гри для компанії Mortal Motors
    683
  • image_games_a_turnbased_strategy_game_set_in_a_fantasy_setting_with_fire_and_sword_603_0.webp
    Покрокова стратегія у фентезі сеттингу With Fire And Sword
    862
  • image_games_second_team_604_0.webp
    Розробка ігри для компанії Second term
    491
  • image_games_phoenix_ii_606_0.webp
    3D-анімація – тизер для гри phoenix 2.
    533

Розробка інструментів та редакторів для контент-менеджерів ігор

Геймдизайнер хоче додати новий рівень. Без кастомного інструменту це виглядає так: відкриває Unity Editor, створює ScriptableObject, заповнює поля вручну, не видить превю, випадково залишає null в обов'язковому полі — баг обнаруживається в QA через тиждень. З правильним Level Editor всередину Unity: візуальний список рівнів, drag-and-drop порядок, вбудована валідація, превю іконки рівня прямо в інструменті.

Різниця — це не зручність. Це швидкість ітерації та кількість помилок у контенті.

Що будуємо та для яких задач

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

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

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

Редактор діалогів — розбір одного case

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

Стандартний підхід — на основі 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] для полiморфного зберігання різних типів вузлів — це дозволяє серіалізувати нащадків без обгорток та без втрати типів при десеріалізації. Якщо діалоги потрібно редагувати поза Unity (нарративщиком без Editor) — використовуємо JSON з кастомною серіалізацією або yarn/ink формати з парсером на стороні Unity.

Валідація та захист від помилок

Інструмент без валідації переносить відповідальність за коректність даних на людину — це завжди помилки. Три рівні захисту:

Inline validation в редакторі. [Required] атрибут через кастомний PropertyDrawer який малює червону рамку навколо пустого обов'язкового поля. Видно відразу, до збереження.

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"). Дешево та ловить те, що прошло через перші два рівні.

Кастомні Gizmo та Scene View Tools

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

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

Терміни

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

Вартість розраховується після опису функціональних вимог та аналізу структури ігрових даних.