Проблема: ручной ввод текста - это бомба замедленного действия. Данные начинают расходиться, а потом код начинает "спотыкаться"
Пока у вас всё разложено по полочкам - здоровье, скорость и урон считаются как целые числа, а новые враги появляются из формы на базе одного объекта - да здравстсвует оптимизация!
Правда, одно поле до сих пор никак не системтатизированно: вид сущности. Напишите в поле босс, Босс или боСс - для таблицы баланса и для движка это три разных значения, которые никогда не совпадут.
Тот же дрейф касается связанных данных. Слабое место в одном враге - часть тела, в другом - таблица урона.
Исправление заключается в том, чтобы перестать описывать эти вещи произвольным текстом и вместо этого определить их один раз как реальные типы структуры, которые собирают несколько связанных полей в одну переиспользуемую форму, а перечисления ограничивают поле фиксированным набором допустимых значений.
Что такое структура и перечисление
Структура - это многоразовая форма, которая собирает несколько полей со свойствами в одну единицу. Определите её один раз, и любой элемент сможет использовать её как тип поля - тогда редактор отобразит это вложенной формой, а значение сохранится одним структурированным объектом.
Перечисление - фиксированный список допустимых значений. Вместо произвольного текста поле принимает только те значения, которые вы определили, каждое со стабильным служебным именем под капотом. При выборе значения в данных сохраняется точный ключ, поэтому движок и таблицы баланса всегда видят одну и ту же согласованную строку.
Создаём структуру Враги
Структуры создаются как обычные элементы. Нажмите Создать элемент, Другое, выберите тип Структура и назовите её Враги. Откроется выделенный редактор структуры.


Нажмите Добавить поле, чтобы задать форму, общую для всех врагов. У каждого поля есть имя, тип и служебное имя. Задайте структуре Враги поля, которые встречаются вместе по всей коллекции:
- Слабое место — Тип: Структура (форма о частях тела, которую вы зададите далее)
- Стол с добычей — Тип: Выбор элемента
Теперь Слабое место - не расплывчатое слово, а известная форма с проверяемыми подполями.
Задаём перечисление Тип Врага
Теперь словарь типов. Нажмите Создать элемент, Другое, выберите тип Перечисление и назовите его ТипВрага. Откроется выделенный редактор перечисления с пустым списком значений.

Нажмите Добавить элемент, чтобы добавить каждый допустимый тип:
Посетитель-ходячийГрубыйБосс
У каждой записи есть Имя (то, что вы видите) и служебное имя (стабильный ключ, сохраняемый в данных, - показан тегом). Редактор отклоняет повторяющиеся служебные имена, поэтому вы просто не можете завести босс и Босс как отдельные записи, и каждый элемент, использующий это перечисление, выбирает одно и то же значение.
Используем структуру и перечисление как типы полей
Задать полю тип Структура или Перечисление - значит ввести их в работу. На базовом объекте Враги добавьте в свойствах поле Тип и задайте его тип Перечисление, затем в параметрах выберите ТипВрага. Добавьте поле Слабое место с типом Структура и в параметрах выберите свою структуру Враги.
Теперь каждый экземпляр врага редактирует данные поля: Тип - выпадающий список из трёх значений, Слабое место - вложенная форма, составленная из структуры.
Поскольку перечисление хранит служебное имя, а структура - заданную форму, значения согласованы у каждого экземпляра, в таблице баланса и в экспортированном JSON.
Результат: ввод заслуживает доверия
Дизайнер больше не может выдумать тип с опечаткой, а движок может положиться на то, что словарь останется единым.
Что дальше: просмотр графа связей
Ваш дизайн теперь структурирован, связан и приведён к единым типам. Мы рассмотрим дизайн как граф связей - персонажи, способности и враги, нарисованные единой сетью, чтобы вы знали, что от чего зависит, прежде чем редактировать.
FAQ
Что такое структура в игровом дизайне?
Структура - это форма, которая собирает несколько полей со свойствами в одну единицу. Определите её один раз и используйте как тип поля на множестве элементов? каждый элемент заполняет вложенную форму, построенную из полей структуры.
Что такое перечисление в игровом дизайне?
Перечисление - это фиксированный список допустимых значений поля. Вместо свободного текста поле принимает только заданные вами значения, каждое с постоянным служебным именем, поэтому словарь остаётся согласованным везде, где он используется.
Как создать структуру в IMS Creators?
Нажмите Создать элемент, нажмите другое и выберите тип Структура и дайте имя. Откроется выделенный редактор структуры, где вы добавляете поля кнопкой Добавить поле, задавая каждому имя, тип и служебное имя.
Как создать перечисление в IMS Creators?
Нажмите Создать элемент, нажмите другое выберите тип Перечисление и дайте имя. Откроется выделенный редактор перечисления, где вы добавляете допустимые значения кнопкой Добавить элемент; у каждого есть имя и служебное имя, повторяющиеся служебные имена отклоняются.
Как использовать структуру или перечисление как тип поля?
При настройке типа свойства выберите Структура или Перечисление, затем в параметрах укажите конкретную структуру или перечисление. Элемент после этого редактирует поле как управляемое - вложенную форму для структуры, выпадающий список для перечисления.
Зачем нужны перечисления вместо того, чтобы вводить значение самому?
Потому что свободный текст уводит в сторону: босс, Босс и боСс - три разных значения для машины. Перечисление фиксирует словарь в согласованном наборе, поэтому все могут быть уверены в том, что в документе нет дубликатов