Как стать автором
Обновить

Автоматизация или смерть: как управлять тысячами единиц игрового контента с помощью гугл-таблиц

Время на прочтение14 мин
Количество просмотров14K
Всего голосов 41: ↑39 и ↓2+37
Комментарии22

Комментарии 22

Как-то это очень костыльно, это невозможно читать, невозможно поддерживать.


А вам, фактически, не нужны сложные табличные функции, вам нужен CRUD, совместная работа и взаимосвязи между таблицами. Которые наверняка можно написать проще и чище, чем вот это:


=ЕСЛИ(ЕНД(ВПР(A4;importrange(“имя_таблицы”;“‘Лист1’!B:F”);5; ЛОЖЬ))=ЛОЖЬ; ВПР(A4;importrange(“имя_таблицы”;“‘Лист1’!B:F”);5; ЛОЖЬ); ЕСЛИ(ЕНД(ВПР(A4;importrange(“имя_таблицы”;“‘Лист1’!C:F”);4; ЛОЖЬ))=ЛОЖЬ; ВПР(A4;importrange(“имя_таблицы”;“‘Лист1’!C:F”);4; ЛОЖЬ); ЕСЛИ(ЕНД(ВПР(A4;importrange(“имя_таблицы”;“‘Лист1’!D:F”);3; ЛОЖЬ))=ЛОЖЬ; ВПР(A4;importrange(“имя_таблицы”;“‘Лист1’!D:F”);3; ЛОЖЬ); ЕСЛИ(ЕНД(ВПР(A4;importrange(“имя_таблицы”;“‘Лист1’!E:F”);2; ЛОЖЬ))=ЛОЖЬ; ВПР(A4;importrange(“имя_таблицы”;“‘Лист1’!E:F”);2; ЛОЖЬ);“НИМА ТАКОГО“))))

и, тем более, вот это:


=ifs(L3="DeadlyGames";0;L3="BattleRoyale";0;L3="TeamDuel";0;1=1; ЕСЛИ(I3="killPlayer";ifs(A3=0; ЕСЛИ(СЧЁТЕСЛИ($I$2:I2;"killPlayer")>=(TasksData!$B$34+TasksData!$B$36+TasksData!$B$38)6; ЕСЛИ(СЧЁТЕСЛИ($I$2:I2;"killPlayer")<(TasksData!$B$34+TasksData!$B$36+TasksData!$B$38+TasksData!$B$47)6;1;0);0);A3=1; ЕСЛИ(СЧЁТЕСЛИ($I$2:I2;"killPlayer")>=(TasksData!$B$34+TasksData!$B$36+TasksData!$B$38+TasksData!$B$47+TasksData!$B$48+TasksData!$C$34+TasksData!$C$36+TasksData!$C$38)6; ЕСЛИ(СЧЁТЕСЛИ($I$2:I2;"killPlayer")<(TasksData!$B$34+TasksData!$B$36+TasksData!$B$38+TasksData!$C$34+TasksData!$C$36+TasksData!$C$38+TasksData!$B$47+TasksData!$B$48+TasksData!$C$47)6;1;0);0);A3=2; ЕСЛИ(СЧЁТЕСЛИ($I$2:I2;"killPlayer")>=(TasksData!$B$34+TasksData!$B$36+TasksData!$B$38+TasksData!$B$47+TasksData!$B$48+TasksData!$C$34+TasksData!$C$36+TasksData!$C$38+TasksData!$C$47+TasksData!$C$48+TasksData!$D$34+TasksData!$D$36+TasksData!$D$38)6; ЕСЛИ(СЧЁТЕСЛИ($I$2:I2;"killPlayer")<(TasksData!$B$34+TasksData!$B$36+TasksData!$B$38+TasksData!$B$48+TasksData!$C$34+TasksData!$C$36+TasksData!$C$38+TasksData!$D$34+TasksData!$D$36+TasksData!$D$38+TasksData!$B$47+TasksData!$C$47+TasksData!$C$48+TasksData!$D$47)6;1;0);0));0))
У нас составлен и зафиксирован набор таблиц баланса по разным типам контента: оружие, питомцы, гаджеты и так далее. Большинство данных для настройки и балансировки подтягивается из них как раз с помощью взаимосвязей и перекрестных ссылок. Базовые вещи давно настроены, а если требуется собрать с нуля уникальную таблицу, чтобы проверить какой-то конкретный случай, то это делается за 15-20 минут.
Что касается сложных функций. Мы используем таблицы не только для баланса, но и для генерации нового контента, симуляции рандомов, дропа и многого другого. И нам для этого не нужно привлекать программистов и делать что-то прямо на проекте.
А вообще основная идея в том, чтобы максимально все автоматизировать. У нас каждый сотрудник может прийти с предложением сделать проще. Например, если где-то можно написать одну формулу, которая затем сэкономит кучу ручной работы — отлично. Главное, чтобы процесс был автоматизирован и удобен для всех.

Вы можете обижаться и минусовать, но у меня один клиент недавно как раз просил автоматизацию с основой в Google Sheets. Я сделаль классный импорт, это всё работает -- до поры до времени. Так что отлично себе Но представляю рабочий процесс на этой базе. Вердикт -- это именно костыль , то есть в какой-то момент подломится и подставит.

Ещё один клиент до сих пор работает небольшим офисом в одной огромной общей Excel-ке. И тоже считает, что процесс налажен, зачем что-то менять? Иногда экселька ломается, начинает весить несколько гигов и её приходится руками восстанавливать. Но процесс налажен...

В этом опасность костылей, никогда не знаешь, когда с них грохнешься.

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

Это можно делать без знания языков/программ/кода и так далее — даже неподготовленный человек может быстро и наглядно работать с результатом. В другом случае придется потратить несколько дней на ТЗ, технический ресерч, карточки, менеджмент, подключение других сотрудников к задаче и прочее. Все эти процессы упростили до таблиц.

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

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

Если ваши ребята осилили написать это в Таблицах, то уж на Питоне они же без проблем справились бы, им было бы легче, а система -- в разы надёжнее.

Не говоря уж о том, что важная часть инфраструктуры лежит в Google Sheets, что само довольно ненадёжно.

Первое что приходит в голову при таких задачах — это база данных, таблицы с калькулируемыми полями, триггеры, вью, функции (и хранимые процедуры если хотите). База может (и должна) брать на себя часть бизнес-логики связанной только с данными и не требующая сложных расчетов, более того это позволяет делать полуавтоматическую балансировку (если подключить к данным еще и бд со статистикой), за которой надо только приглядывать одним глазом. Далее фронт на python/django+pandas+matplotlib для реализации простой вебморды поверх всего этого… опционально можно приделать докер. Максимально расширяемо, и легко поддерживать. Я не являюсь фанатом питона, у меня админка сделана на dotnet+extjs, но принцип тот же.

Соль на спину уж точно. Excel никак не отнять, все привыкли.

как управлять.. с помощью гуглотаблиц, напомнило
image


:D

Я думаю, нужен не этот хтонический ужас с формулами, а админпанель с БД внутри, таблицами снаружи, дополнительными проверками на валидность изменений и деплоем через git. Но я не настаиваю ;)
Разработка такого инструмента влетит в такую копеечку, что только держись. При чем сначала придется выловить из него огромное количество багов, которое в гуглшытсах уже давным-давно выловлено. Зато будет свое.
Принимали функционал, люди работали в огромных excel таблицах и даже с макросами у них это получалось крайне медленно. Нам понадобилось 1.5 человека на несколько месяцев, на перевод всего этого в БД, создание вебморды, и роботов. По итогу вот уже несколько лет с работой целого отдела справляются два младших сотрудника, которые нужны чтобы обрабатывать не автоматизируемые ситуации, находить агрегировать проблемы и передавать их разработчикам.
Я участвовал в создании такого продукта-заменителя, который решили делать потому, что в экселе жить было уже просто невозможно. Таки разработка влетела в копеечку, и по началу мы налетали на все те же подводные камни, на которые налетели в свое время работники с экселем. Но да! Когда все сделали, то эффективность выросла в разы, если не на порядки. Что не отменяет того, что это стоило дорого, и было не безболезненно.
Во времена, когда Delphi было актуально, базовый функционал табличного процессора делался в 2 щелчка мыши. Бросанием на форму компонента с таблицей. Сейчас этот секрет, увы, утрачен.
А если гугл что-то у себя улучшит — вы закроетесь?..

Тоже для себя открыл Excel когда играл в Eve Echoes и нужно было делать промышленный отдел в корпе (нужно было erp+crm+jira). Тоже писали скрипты, кнопки с автоматизацией, вебхуки, интеграция с discord.

В итоге начали помогать китайцам писать webapp под это дело. Потому что Excel для другого и имеет лимиты.

Сначала окрылились как вы, всё устраивало, но потом поняли что много воюем с экселем, вместо продуктивности.

Для тестов шансов дропа, проверки гипотез - он хорош.

Для управления вашими данными - не советую.

Делали почти так же, но с экспортом в CVS и потом в sqlite для клиента и MySQL для сервера. Все виды связей, валидации, дропдауны, изображения - это был кромешный ад и вереницы скриптов с формулами )

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

Работа с таблицами у нас это скорее вспомогательный процесс. Он ускоряет создание ТЗ, позволяет проводить предварительные тесты до QA-отдела и прочее. В итоге мы получаем сильный профит на препродакшене.

Жутковато.
Примеры формул стоило бы убрать под спойлеры

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

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

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

Кстати, вопрос - а как вы в этой системе решили вопрос с версиями? Как откатиться, как понять в какой версии произошло то или иное изменение?

Кстати, вопрос — а как вы в этой системе решили вопрос с версиями? Как откатиться, как понять в какой версии произошло то или иное изменение?
Это уже решается нашим конфиг-менеджером. При обновлении версии конфига на сервере сохраняется кто, когда и что залил, там же есть инструмент, показывающий разницу. При необходимости всегда можно поднять полную историю изменений.
Все говорят про кратный профит, но никто не смотрит и сравнивает затраты на поддержку и дальнейшее оперирование. Потому что «комфортно».
Бесспорно, гугл таблицы это круто и помогают быстро автоматизировать многие вопросы. при этом дают возможность одновременно использовать их нескольким людям, и бла бла бла
НО! Кому вы душу продали чтоб они у вас не тупили ?!)))
Зарегистрируйтесь на Хабре, чтобы оставить комментарий