Хватит плодить дубликаты, рассказываем как навести порядок с помощью структур и перечислений

Из-за банальной опечатки в типе движок просто теряет персонажа из виду. Рассказываем, как перечисления помогают навести порядок и избежать поломок в коде

Проблема: ручной ввод текста - это бомба замедленного действия. Данные начинают расходиться, а потом код начинает "спотыкаться"

Пока у вас всё разложено по полочкам - здоровье, скорость и урон считаются как целые числа, а новые враги появляются из формы на базе одного объекта - да здравстсвует оптимизация!

Правда, одно поле до сих пор никак не системтатизированно: вид сущности. Напишите в поле боссБосс или боСс - для таблицы баланса и для движка это три разных значения, которые никогда не совпадут.

Тот же дрейф касается связанных данных. Слабое место в одном враге - часть тела, в другом - таблица урона.

Исправление заключается в том, чтобы перестать описывать эти вещи произвольным текстом и вместо этого определить их один раз как реальные типы структуры, которые собирают несколько связанных полей в одну переиспользуемую форму, а перечисления ограничивают поле фиксированным набором допустимых значений.

Что такое структура и перечисление

Структура - это многоразовая форма, которая собирает несколько полей со свойствами в одну единицу. Определите её один раз, и любой элемент сможет использовать её как тип поля - тогда редактор отобразит это вложенной формой, а значение сохранится одним структурированным объектом.

Перечисление - фиксированный список допустимых значений. Вместо произвольного текста поле принимает только те значения, которые вы определили, каждое со стабильным служебным именем под капотом. При выборе значения в данных сохраняется точный ключ, поэтому движок и таблицы баланса всегда видят одну и ту же согласованную строку.

Создаём структуру Враги

Структуры создаются как обычные элементы. Нажмите Создать элементДругое, выберите тип Структура и назовите её Враги. Откроется выделенный редактор структуры.

Нажмите Добавить поле, чтобы задать форму, общую для всех врагов. У каждого поля есть имя, тип и служебное имя. Задайте структуре Враги поля, которые встречаются вместе по всей коллекции:

  • Слабое место — Тип: Структура (форма о частях тела, которую вы зададите далее)
  • Стол с добычей — Тип: Выбор элемента

Теперь Слабое место - не расплывчатое слово, а известная форма с проверяемыми подполями.

Задаём перечисление Тип Врага

Теперь словарь типов. Нажмите Создать элементДругое, выберите тип Перечисление и назовите его ТипВрага. Откроется выделенный редактор перечисления с пустым списком значений.

Нажмите Добавить элемент, чтобы добавить каждый допустимый тип:

  • Посетитель-ходячий
  • Грубый
  • Босс

У каждой записи есть Имя (то, что вы видите) и служебное имя (стабильный ключ, сохраняемый в данных, - показан тегом). Редактор отклоняет повторяющиеся служебные имена, поэтому вы просто не можете завести босс и Босс как отдельные записи, и каждый элемент, использующий это перечисление, выбирает одно и то же значение.

Используем структуру и перечисление как типы полей

Задать полю тип Структура или Перечисление - значит ввести их в работу. На базовом объекте Враги добавьте в свойствах поле Тип и задайте его тип Перечисление, затем в параметрах выберите ТипВрага. Добавьте поле Слабое место с типом Структура и в параметрах выберите свою структуру Враги.

Теперь каждый экземпляр врага редактирует данные поля: Тип - выпадающий список из трёх значений, Слабое место - вложенная форма, составленная из структуры.

Поскольку перечисление хранит служебное имя, а структура - заданную форму, значения согласованы у каждого экземпляра, в таблице баланса и в экспортированном JSON.

Результат: ввод заслуживает доверия

Дизайнер больше не может выдумать тип с опечаткой, а движок может положиться на то, что словарь останется единым.

Что дальше: просмотр графа связей

Ваш дизайн теперь структурирован, связан и приведён к единым типам. Мы рассмотрим дизайн как граф связей - персонажи, способности и враги, нарисованные единой сетью, чтобы вы знали, что от чего зависит, прежде чем редактировать.


FAQ

Что такое структура в игровом дизайне?

Структура - это форма, которая собирает несколько полей со свойствами в одну единицу. Определите её один раз и используйте как тип поля на множестве элементов? каждый элемент заполняет вложенную форму, построенную из полей структуры.

Что такое перечисление в игровом дизайне?

Перечисление - это фиксированный список допустимых значений поля. Вместо свободного текста поле принимает только заданные вами значения, каждое с постоянным служебным именем, поэтому словарь остаётся согласованным везде, где он используется.

Как создать структуру в IMS Creators?

Нажмите Создать элемент, нажмите другое и выберите тип Структура и дайте имя. Откроется выделенный редактор структуры, где вы добавляете поля кнопкой Добавить поле, задавая каждому имя, тип и служебное имя.

Как создать перечисление в IMS Creators?

Нажмите Создать элемент, нажмите другое выберите тип Перечисление и дайте имя. Откроется выделенный редактор перечисления, где вы добавляете допустимые значения кнопкой Добавить элемент; у каждого есть имя и служебное имя, повторяющиеся служебные имена отклоняются.

Как использовать структуру или перечисление как тип поля?

При настройке типа свойства выберите Структура или Перечисление, затем в параметрах укажите конкретную структуру или перечисление. Элемент после этого редактирует поле как управляемое - вложенную форму для структуры, выпадающий список для перечисления.

Зачем нужны перечисления вместо того, чтобы вводить значение самому?

Потому что свободный текст уводит в сторону: боссБосс и боСс - три разных значения для машины. Перечисление фиксирует словарь в согласованном наборе, поэтому все могут быть уверены в том, что в документе нет дубликатов

Назад к блогу