таблицы
June 20, 2022

Google Sheets Nightmare

Многие из гейм-дизайнеров целыми днями сидят в таблицах. После рабочего дня они идут заниматься своими делами, а потом наступает время сна. Естественно дизайнеры видят сны про таблицы: идеальный баланс, корректно построенные графики, удобные макросы… но иногда снятся кошмары. Жуткие сны с ужасными таблицами.

Типичный кошмар про таблицы.

Например, как-то раз я видел сон, в котором начинающий дизайнер начал строить таблицу с середины листа. Таблицу естественно он переименовывать не стал, ведь всем очевидно, что «Новая Таблица 0456» — это та самая таблица.

Начальная таблица.

Сразу за этим последовало прекрасное форматирование:

  1. Яркая заливка ячеек;
  2. Модные шрифты;
  3. Разный кегель.
Таблица начинает преобразоываться.

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

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

Таби с посчитанной мощью. Внимание на формлу и примечание.

Ох, точность и класс робота были забыты! Ничего, сейчас всё будет исправлено. Точность (Accuracy) измеряется в проекте от 0 до 1, и есть 3 класса: Light, Medium и Heavy. В зависимости от класса конечная мощь умножается на определенный коэффициент, а урон умножается на точность.

Таблица с классами и точностью. Некоторые значения специально выделены.

В спешке автор сокращает Accuracy до ACR, ведь какая разница, а на поля не вешает валидацию, ведь зачем оно надо? ошибок то не будет! Хотя, если приглядеться, то можно заметить, что в ACR проскочила двойка (G9), а в Class какой-то новый класс (I14). Формула расчета стала больше, может быть стоило разделить её на несколько строк? Ну, нет, еще терпит. Роботов, кстати, тоже стало больше, но закреплять строку автор не решился. Да и тем более, она по середине листа.

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

В таблице полявляются дополнительные поля и диаграмма.

Наш персонаж находит максимум (на всякий еще и минимум) через стандартные функции, применяя их к диапазону. Можно было бы использовать именованные диапазоны (named ranges), но это как-то сложно непонятно да и зачем? Диаграмма строится по щелку пальца, кажется, что видоизменять её смысла нет, всё легко читается.

Потребовалось сравнить легких роботов. Было решено создать дополнительный лист, который называется «Лист2», а на нем своего рода сводную таблицу.

  1. С «Лист1»перетащить нужные данные с помощью =ARRAYFORMULA;
  2. Создать столбец Flag, который проверят, что класс равен легкому;
  3. Пересчитать Result;
  4. Покрасить всё в модные цвета.
Своего рода сводная таблица.

Дизайнер допускает небольшую ошибку, забывая, что сравнивает легких не между собой, а с самым крутым роботом в игре, который, кстати, не легкий, но ничего страшного! Может быть это была такая задача... На этом он заканчивает свой рабочий день и счастливый идет заниматься своими делами.

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

  1. Адекватные названия листов;
  2. Простое форматирование;
  3. Отдельные листы для важных сущностей/абстракций, например, классов;
  4. Понятные формулы и примечания к ним.

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

Мой вариант таблицы.

Таким образом, я использовал:

  1. Закреплние строки;
  2. Проверку данных в нужных столбцах;
  3. Именованные диапазоны в формулах;
  4. Филтр.

Кстати, проверка данных подсветила ошибки. Фильтр же просто частенько может пригодиться, для него я ещё специально сделал столбец ID.

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

Сводная таблица. Шутка про неё: «A pivot table walks into a bar and orders a beer. It says, “Put me in the same tab, will ya?”».

Заодно я разделил листы по цвету и листу со сводной таблицей приписал PT (Pivot Table), но что же такое Update Log? Это просто лист, в котором удобно обозначать изменения, которые были внесены в таблицу. Если в офлайн конфиге всё можно отследить через VSC (при условии, что команда пишет вменяемы коммиты), то тут чуть сложнее.

Использование макроса.

На этом у меня всё! Кстати, я сам мог допустить где-то ошибки и/или что-то сделать лучше, но это всё было сразу после сна :D

Таблицы можно посмотреть тут.

Любите таблицы и уважайте своих коллег.

Во что же можно поиграть? Я мог бы посоветовать EVE Online, но это слишком банально. Кажется, что Stardew Valley — идеальный кандидат на роль игры, в которую можно играть и параллельно заполнять таблички, чтобы научиться лучше с ними работать. Вот у какого растения лучший ROI в игре?

Ферма.

Полезные материалы:

PS Сон и проект естественно выдуманные.

by Chaotic Game Design