Цифры без контекста - ничто, одно и то же число может означать всё что угодно: урон, секунды или здоровье

Как быстро определять в документе высталвенные параметры?

Проблема: ваше число может означать что угодно - урон, секунды или здоровье

Наши Враги находятся в одной коллекции, каждый из них - игровой объект с одинаковыми полями. Поля хранят значения - Здоровье = 60Скорость = 30Урон = 8. Мы совершили прорыв, однако в этих цифрах кроется один подвох.

Посмотрите на простое значение 10. Что это? Это может быть урон, может быть длительность в секундах, а может быть количество здоровья или просто флаг, который вы хотели сделать "true", но ввели как текст. Сама по себе «десятка» в поле ввода - чистая загадка: по ней невозможно понять её истинный смысл.

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

Решение - задать каждому полю тип. Типизированное поле несёт собственный смысл: "это число", "это текст", "это переключатель true/false".

Почему мы используем такой подход

Тип поля сообщает редактору, таблице баланса и движку, как обращаться со значением. В IMS Creators типы полей, к которым вы будете обращаться чаще всего:

  • Строка - одна строка текста, например имя.
  • Текст - более длинный многострочный текст, который можно форматировать.
  • Число - значение с десятичной частью (float), например 8.5.
  • Целое число - целое значение, например 60.
  • Флажок - переключатель true/false (булево значение).

Смысл типа не в формальности. Каждый тип меняет поведение движка:

  • Строка и Текст хранят слова, а не числа - так в поле имени не окажется случайно вычислений.
  • Число и Целое число хранят значения, с которыми можно работать математически - их можно сортировать, сравнивать и балансировать как числа, а не как текст.
  • Число (float) сохраняет десятичные части, а Целое число ограничивает значения целыми - так здоровье 60 остаётся чистым целым, а урон 8.5 допустим.
  • Флажок строго хранит true или false - никакой записи текстом и никакой двусмысленности.

Добавьте типизированные поля врагу

Применим это к одному из врагов в коллекции. Чтобы задать тип поля: в блоке Свойства откройте меню поля (нажав три вертикальные точки в ячейке поля), выберите Изменить настройки и укажите Тип. IMS Creators предлагает Строку, Текст, Число, Целое число, Флажок и другое, так что вы можете смоделировать ровно то, что нужно полю.

Вот и всё. Теперь каждое значение имеет свой смысл и свойство. Макс. здоровье - целое число, Урон - десятичное, Босс - переключатель true/false.

Результат: значения понятны и проверяемы

Типизация полей меняет то, что вы можете делать с данными.

  • Редактор проверяет значения. Раз поле знает свой тип, вводимое проверяется по ходу. Поле целого числа молча не примет "abc", а флажок останется чистым true/false вместо дрейфа в текст. Ошибки всплывают в момент ввода, когда их легко исправить.
  • Таблица баланса понимает числа. Когда значения типизированы и сравнимы, сортировка и сравнение "Макс. здоровья" или "Урона" работают с настоящими числами - таблица знает, что 10 это число, а не строка, и как его упорядочить.
  • Движок понимает, что означает каждое число. Когда вы позже загрузите JSON элемента в движок, типизированное поле несёт свой смысл - float, целое, булево.

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

Дальше: базовые объекты

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

Готовы дать своим показателям настоящие типы? Скачайте IMS Creators, откройте ims.cr5.space/desktop, откройте врага в своём проекте и задайте каждому полю тип - Строку для имени, Текст для описания, Число для урона, Целое число для макс. здоровья и Флажок для "Босс". Две минуты типизации - и ваши числа начинают что-то значить.


FAQ

Почему тип поля важен?

Тип сообщает редактору, таблице баланса и движку, что на самом деле представляет собой значение - число, текст или переключатель true/false. Без типа простое значение 10 может быть и уроном, и секундами, и здоровьем, и никто не может его проверить или осмысленно использовать.

Какие типы полей доступны?

Самые распространённые: Строка (одна строка текста), Текст (многострочный, форматируемый), Число (десятичное значение), Целое число (целое значение) и Флажок (true/false). IMS Creators также предлагает более богатые типы полей, которые разберём позже.

В чём разница между Числом и Целым числом?

Число хранит значения с десятичной частью, например 8.5Целое число ограничивает значения целыми числами, например 60. Выбирайте по тому, что должно храниться: урон может быть десятичным, здоровье обычно целое.

Флажок - это то же самое, что "boolean" в коде?

Да. Флажок хранит значение true/false - булево значение. В интерфейсе он представлен как флажок, но хранимые данные - это булево (true/false) значение, которое движок читает напрямую.

Как задать тип поля?

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

Могут ли типизированные поля предотвратить неверные записи?

Да, в определённой степени. Так как редактор знает тип поля, он проверяет значения при вводе - поле целого числа не примет молча текст, а флажок останется чистым true/false. Это выявляет ошибки рано, когда их дёшево исправить.

Меняют ли типизированные поля то, что загружает движок?

Да. Типизированное поле несёт свой смысл в данных - float, целое или булево, - поэтому при загрузке JSON элемента движок знает, как интерпретировать каждое значение, а не догадывается о нём.

Назад к блогу