Google Sheets Nightmare
Многие из гейм-дизайнеров целыми днями сидят в таблицах. После рабочего дня они идут заниматься своими делами, а потом наступает время сна. Естественно дизайнеры видят сны про таблицы: идеальный баланс, корректно построенные графики, удобные макросы… но иногда снятся кошмары. Жуткие сны с ужасными таблицами.
Например, как-то раз я видел сон, в котором начинающий дизайнер начал строить таблицу с середины листа. Таблицу естественно он переименовывать не стал, ведь всем очевидно, что «Новая Таблица 0456» — это та самая таблица.
Сразу за этим последовало прекрасное форматирование:
Задача на день была простая: сравнить эффективность роботов (не будем уходить от классики). Урон и здоровье каждого известны. Формула знакома каждому джуну — просто перемножаем величины, чтобы получить мощь.
Однако у нашего коллеги возникла гениальная идея. Он добавил в формулу магические преобразования, а потом написал очень полезное примечание, которое всё расставило на свои места. Округлять значения не надо, ведь, чем больше знаков после запятой, тем лучше. Кстати, тоже самое можно сказать и про формулы — чем больше магических преобразований, тем точнее баланс.
Ох, точность и класс робота были забыты! Ничего, сейчас всё будет исправлено. Точность (Accuracy) измеряется в проекте от 0 до 1, и есть 3 класса: Light, Medium и Heavy. В зависимости от класса конечная мощь умножается на определенный коэффициент, а урон умножается на точность.
В спешке автор сокращает Accuracy до ACR, ведь какая разница, а на поля не вешает валидацию, ведь зачем оно надо? ошибок то не будет! Хотя, если приглядеться, то можно заметить, что в ACR проскочила двойка (G9), а в Class какой-то новый класс (I14). Формула расчета стала больше, может быть стоило разделить её на несколько строк? Ну, нет, еще терпит. Роботов, кстати, тоже стало больше, но закреплять строку автор не решился. Да и тем более, она по середине листа.
Переход к заключительному этапу — сравнению мощностей. Это было решено сделать через относительное сравнение каждого робота с самым мощным. Сказано — сделано.
Наш персонаж находит максимум (на всякий еще и минимум) через стандартные функции, применяя их к диапазону. Можно было бы использовать именованные диапазоны (named ranges), но это как-то сложно непонятно да и зачем? Диаграмма строится по щелку пальца, кажется, что видоизменять её смысла нет, всё легко читается.
Потребовалось сравнить легких роботов. Было решено создать дополнительный лист, который называется «Лист2», а на нем своего рода сводную таблицу.
- С «Лист1»перетащить нужные данные с помощью =ARRAYFORMULA;
- Создать столбец Flag, который проверят, что класс равен легкому;
- Пересчитать Result;
- Покрасить всё в модные цвета.
Дизайнер допускает небольшую ошибку, забывая, что сравнивает легких не между собой, а с самым крутым роботом в игре, который, кстати, не легкий, но ничего страшного! Может быть это была такая задача... На этом он заканчивает свой рабочий день и счастливый идет заниматься своими делами.
Я же проснулся весь в поту, потому что такой кошмар давно не снился. Сразу же зашел в таблицы и сделал свою версию, где:
- Адекватные названия листов;
- Простое форматирование;
- Отдельные листы для важных сущностей/абстракций, например, классов;
- Понятные формулы и примечания к ним.
Кстати, сами формулы баланса могут быть сложные, но не стоит с ними мудрить, а уж тем более использовать магические коэффициенты. Если они выходят на несколько строк, то не поленитесь их разбить на логические блоки, чтобы их было проще читать. Всё объясняйте!
Кстати, проверка данных подсветила ошибки. Фильтр же просто частенько может пригодиться, для него я ещё специально сделал столбец ID.
Далее создал сводную таблицу через заложенный функционал, поэтому, например, её форматирование не было изменено. Многие привыкли к такому, поэтому пусть так и будет.
Заодно я разделил листы по цвету и листу со сводной таблицей приписал PT (Pivot Table), но что же такое Update Log? Это просто лист, в котором удобно обозначать изменения, которые были внесены в таблицу. Если в офлайн конфиге всё можно отследить через VSC (при условии, что команда пишет вменяемы коммиты), то тут чуть сложнее.
На этом у меня всё! Кстати, я сам мог допустить где-то ошибки и/или что-то сделать лучше, но это всё было сразу после сна :D
Любите таблицы и уважайте своих коллег.
Во что же можно поиграть? Я мог бы посоветовать EVE Online, но это слишком банально. Кажется, что Stardew Valley — идеальный кандидат на роль игры, в которую можно играть и параллельно заполнять таблички, чтобы научиться лучше с ними работать. Вот у какого растения лучший ROI в игре?
- Как удобно вести игровой баланс и не сломаться от количества ячеек в таблицах
- Google Sheets для геймдизайнера
- Practical tips on technical Game Design Documentation (Part 3)