Какие способности у персонажа и с каких врагов выпадают карты? Просмотрите весь дизайн одним графом

Расскажем, как разобраться в хитросплетениях вашего геймдизайна. Какой объект от какого объекта зависит? Что изменится, если мы удалим врага или добавим ещё одного? Ответы подскажет граф вашего проекта

Этот туториал — часть серии Начало работы — День 5, Неделя 2.

Проблема: слепые зоны при редактировании

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

Это слепая зона. Редактируя карту, вы гадаете о последствиях: у какого персонажа это способность? Из каких врагов она выпадает? Если я изменю урон, кто это заметит? Отвечать по памяти получается, пока проект не перешагнул определённый размер — затем вы правите одно и ломаете пять других мест, о существовании которых не подозревали.

А есть вторая, более острая проблема, спрятанная в том, как вы строили связи. Вы намеренно храните каждое соединение в одном месте — ссылка Владелец живёт на карте, таблица добычи — на враге. Это отлично для согласованности. Но ответ на естественный вопрос оказывается не там, где его ищешь: чтобы спросить «какие способности есть у Хлои?», пришлось бы открыть каждую карту способности и прочитать её Владельца. Ссылки знают; вы — нет.

Граф существует ровно затем, чтобы исправить эту асимметрию.

Откуда берутся связи

Прежде чем смотреть на граф, полезно понять, что он отслеживает. Связи геймдизайна — это соединения, которые вы построили на этой неделе:

  • Владелец — поле Выбор элемента на базовом элементе Карта способности, указывающее на персонажа.
  • Таблица добычи — массив-структура на базовом элементе Враг, каждая строка связывает Игровую карту (Выбор элемента) с Шансом выпадения.
  • Наследование — каждая Карта способности наследуется от Игровой карты, каждый конкретный враг — от базого элемента Враг.

Эти связи живут в данных каждого элемента, и именно их рёбрами рисует граф.

Открываем граф связей

Откройте любой элемент и нажмите три вертикальные точки в шапке элемента — затем выберите Показать связи.

Три вертикальные точки в шапке элемента с выделенным пунктом Показать связи

Откроется диалог Связи. Ваш элемент в центре, а всё, что с ним связано, нарисовано вокруг — одним графом. Базовый объект показан скруглённым прямоугольником; элементы, производные от него, располагаются вокруг. И главное: граф рисует связи в обе стороны — не только те элементы, на которые указывает ваша ссылка, но и все, кто указывает на вас.

Один экран — и вы видите обе стороны каждой однонаправленной ссылки.

Вопрос 1: какие способности есть у Хлои?

Первый обратный вопрос. Вы никогда не хранили список способностей на персонаже — ссылка Владелец живёт один раз, на каждой карте способности. Чтобы ответить «что умеет Хлоя?», откройте Хлою, нажмите три вертикальные точки в её шапке, выберите Показать связи.

Вокруг неё граф нарисует и карты способностей, чей Владелец указывает на неё, — те самые ссылки, которые вы сделали со стороны карты выше. Появится Дымовая завеса (а если вы её переименовали, как мы делали в среду, то покажется новое имя). Одно чтение графа — и вся колода персонажа видна без дополнительного поля на самом персонаже.

Граф с Хлоей в центре и её картами способностей, обратными ссылками вокруг неё

Однонаправленное хранение данных и двунаправленный вид работают вместе: храните ссылку один раз там, где ей место, читайте её оттуда, откуда нужно.

Вопрос 2: из кого выпадает эта карту?

Второй обратный вопрос касается таблицы добычи. Враги ссылаются на Игровую карту через строки своей таблицы добычи — значит, сама карта никогда не ведёт списка «из кого я выпадаю». Давайте попробуем ответить на вопрос от лица карты.

Откройте карту Огнетушитель, выберите Показать связи. Граф встает в центр на карту и рисует каждого врага, чья таблица добычи ссылается на неё: «Посетитель-ходячий», роняющий её с шансом 0.3, бронированный вариант с 0.5. Если её роняет и босс — он тоже на экране. На вопрос «Из кого выпадает эта карта?» теперь можно ответить одним взглядом на карту — враги сами привязались к ней.

Граф с картой Огнетушитель в центре и врагами, которые её роняют, как обратные ссылки

У обоих вопросов одна форма: данные хранятся на стороне автора (карта, которая владеет; враг, который роняет), а граф отвечает со стороны читателя (персонаж, карта). В этом и польза графа — направление хранения перестаёт диктовать направление вопроса.

Исследуем кликами

По графу можно ходить, а не просто смотреть. Кликните по соседу — и граф перецентрируется на нём: этот элемент становится новым центром, а его собственные связи расходятся вокруг. Кликайте дальше, чтобы проследить цепочку: Хлоя → её карта способности → базовая карта способности → базовая игровая карта -> Карта «Огнетушитель» -> враг, из которого она выпадает... насколько хватает связей.

Когда вы двигаетесь по графу, кнопки Назад и Вперёд возвращают вас по следу, а В центр мгновенно возвращает к фокусному элементу. Если связей с соседями больше, чем умещается на экран, кнопки Предыдущие связи и Следующие связи листают их страницами (примерно по 25 на страницу).

Граф, перецентрированный на другом элементе после клика по соседу, с видимой панелью Назад/Вперёд и листанием связей

Подписи на рёбрах указывают тип связи — связь наследования между базовым объектом и его экземплярами подписана наслед.

Проверка влияния: что сломается, если я это изменю?

Это и есть настоящее предназначение графа. Прежде чем менять Урон карты, спросите: кто под ударом? Кликните по карте в графе — и вы увидите каждого персонажа, для которого это способность, и каждого врага, чья таблица добычи её указывает, одним взглядом. Изменение, казавшееся числом в одном блоке свойств, на деле задевает шесть элементов — и теперь вы знаете об этом заранее.

Работает и в обратную сторону. Прежде чем править базовый объект, граф показывает каждый экземпляр, наследующий от него, — и вы понимаете радиус взрыва одного изменения поля. Граф превращает «кажется, это безопасно» в «я вижу, что это безопасно».

Итоги недели 2

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

  • Типы данных дали вашим значениям реальное поведение — поле это число или строка, а не двусмысленный текст.
  • Базовые объекты убрали повторения — враг, персонаж и карта получают схему из одного определения, а многоуровневое наследование сделало Карту способности картой плюс Владельцем.
  • Ссылки заменили скопированные имена стабильными связями — Владелец живёт один раз на карте, и переименование больше не ломает колоду.
  • Структуры и перечисления стандартизировали словарь — таблицы добычи стали списками типизированных строк, а Роль персонажа — значением из Роль Персонажа, а не произвольной строкой.
  • Граф связей — сегодня — сделал каждую связь видимой и отвечаемой: что умеет персонаж и кто роняет карту, видно одним взглядом.

Что дальше: баланс

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


FAQ

Как открыть граф связей в IMS Creators?

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

Что означают узлы на графе?

Каждый узел — это элемент геймдизайна. Элемент, который вы открыли, — главный узел в центре; всё, что с ним связано — персонажи, карты способностей, карты из таблицы добычи, базовые объекты — появляется вокруг. Базовый объект рисуется скруглённым прямоугольником, остальные элементы — кругами.

Какие связи рисует граф?

Все соединения в данных элементов, в обе стороны: ссылки Выбор элемента (Владелец карты, Карта в строке добычи), наследование от базовых объектов (Карта способности наследует от Игровой карты) и обратные ссылки от других элементов на ваш. Однонаправленное хранение, двунаправленное чтение.

Что означает подпись ребра «наслед»?

Подписи на рёбрах описывают связь между двумя элементами. Наслед отмечает связь наследования — элемент, который получает схему от базового объекта. Так видно одним взглядом, как элементы наследуются от каких базовых объектов.

Как понять, что зависит от элемента, прежде чем его менять?

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

Почему граф важен по мере роста проекта?

Вручную, чем больше элементов, тем труднее предсказать, что заденет изменение. Граф здесь подходит как нельзя лучше. Вместо того, чтобы помнить о том, кто использует тот или иной объект, вы смотрите на связи напрямую — и поскольку он читает ссылки в обе стороны, вопросы вроде «что умеет этот персонаж?» можно всегда ответить, не смотря на масштаб вашего проекта.

Назад к блогу