Этот туториал — часть серии Начало работы — День 4, Неделя 2.
Проблема: ручной ввод текста - это бомба замедленного действия
К этому моменту всё разложено по полочкам: здоровье, скорость и урон считаются типизированными числами, новые персонажи и карты появляются из форм на базе объекта, переименование больше не ломает связь. Да здравствует структура!
Но один вид полей всё ещё ведёт себя как клейкая записка: всё, что вы набираете руками.
Возьмём поле Роль у Хлои из первой недели. Оно хранит Защитник - но это верно ровно до следующей опечатки. Кто-то пишет защитник, другой помечает Защитник (ЛИД), и для таблицы баланса и для движка это три разных значения, которые никогда не совпадут. Значение всегда подразумевало небольшой закрытый набор - просто поле об этом не говорило.
Та же неопределённость касается и структурированных данных. Таблица добычи каждого врага - это строка «что выпадает и с какой вероятностью». Опишите её свободным текстом - и каждый решит по-своему: один напишет Огнетушитель 30%, другой огнетушитель / часто, третий придумает новый формат. Одни и те же данные, три формы, сравнивать нечего.
Как исправить? Перестать описывать эти вещи произвольным текстом и определить их один раз как настоящие типы: структуры, которые собирают несколько связанных полей в одну переиспользуемую форму, и перечисления, которые ограничивают поле фиксированным набором значений. Вместе они дают то, чего ни одно по отдельности не даёт: таблицу добычи, которая одновременно типизирована и повторяема, и словарь ролей, который не будет «дрейфовать» от одной формы записи к другой.
Что такое структура и перечисление
Структура - это многоразовая форма, которая собирает несколько полей со свойствами в одну единицу. Определите её один раз, и любой элемент сможет использовать её как тип поля: редактор отобразит вложенную форму, а значение сохранится одним структурированным объектом.
Перечисление - фиксированный список допустимых значений. Вместо произвольного текста поле принимает только те значения, которые вы определили, каждое со стабильным служебным именем под капотом. При выборе значения в данных сохраняется точный ключ, поэтому движок и таблицы баланса всегда видят одну и ту же согласованную строку.
Создаём структуру «Строка Таблицы добычи»
Помните таблицу добычи из начала статьи - «что выпадает и с какой вероятностью» в пяти разных рукописных форматах. Давайте дадим этой строке настоящую форму, чтобы у каждого врага она была заполнена одинаково.
Структуры создаются как обычные элементы. Нажмите Создать элемент, Другое, выберите тип Структура и назовите её Строка Таблицы добычи. Откроется выделенный редактор структуры.
Нажмите Добавить поле, чтобы задать форму одного выпадения. У каждого поля есть имя, тип и служебное имя. Задайте ей два поля, которые есть у любого выпадения:
- Карта — Тип: Выбор элемента (выпадающая карта - ссылка на Игровую карту, так работают и предметы, и карты способностей)
- Шанс выпадения — Тип: Число (насколько вероятно выпадение,
0.3= 30%)

Теперь «что выпадает с этого врага» - не размытая фраза, а известная форма с проверяемыми полями: связанная карта и шанс.
Таблица добычи врага - это список таких строк
Перейдите к базовому объекту Враг, откройте блок Свойства и добавьте поле:
- Таблица добычи — Тип: Структура → в параметрах выберите
Строка Таблицы добычи
Одна строка - одно выпадение. Но враг роняет несколько карт - ему нужен массив строк. Испраить легко: прямо в настройках поля отметьте Множественный. Один флажок превращает одиночное значение в массив - поле становится не «одной строкой добычи», а целым списком строк.

Теперь каждый экземпляр врага хранит список строк добычи: добавьте строку, выберите карту выбором элемента, впишите шанс. Один «Посетитель-ходячий» может ронять Огнетушитель 0.3 и Банановая кожура 0.7, а босс - дюжину строк.
Множественный - не особенность структур; он работает у любого поля: список строк, список ссылок, список чисел. Это общий переключатель «поле хранит коллекцию», и именно со структурами он раскрывается: из хорошо типизированной одиночной строки он делает хорошо типизированную таблицу.
Создаём перечисление «Роль персонажа»
Теперь словарь. Нажмите Создать элемент, Другое, выберите тип Перечисление и назовите его Роль Персонажа. Откроется выделенный редактор перечисления с пустым списком значений.

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