Telegram Web
В последнее время постоянно убеждаюсь в необходимости разделять в исследованиях и при принятии решений экономику и монетизацию.

Экономика — это, условно, как организована игра, как мы побуждаем пользователя к платежу. Пользователи платят там, где мы ожидаем платеж и тратят валюту туда, куда мы планируем. Например, динамическая сложность уровней в match3, где мы ожидаем пики платежей в наиболее сложных уровнях. Или прокачка предметов. Приход-расход и накопления валют на руках, стоимость игровых сущностей, модели дистрибуции контента — все сюда.

Монетизация — как мы оптимизируем платежи пользователей (в идеале, на уже работающей экономике). Персональные офферы, скидки, акции и тому подобное. Чудеса лайвопса во всей своей красе. Когда-нибудь, надеюсь, сюда и трюки из поведенческой экономики воткнуть смогу.

Сложности начинаются тогда, когда одно подменяется другим. Дать скидку проще, чем спроектировать кривую сложности, да и эффект быстрее. Но хуже всего, когда приходиться шатать экономику и одновременно тестируется система офферов — оркестрировать это маятно, а в выводах, без дополнительного контроля, появляется пространство для спекуляций. У меня даже появляются крамольные мысли, что на прототипах/MVP выстраивать монетизацию как можно раньше — не так чтобы хорошая идея. Хотя я понимаю команды, которые так делают — в конце концов, это живые деньги и возможность тестировать маркетинговые каналы.

Если вы где-то видели хорошие определения, что такое игровая экономика/монетизация, или же просто знаете хорошие материалы про это — пришлите мне, пожалуйста.
👍10
Мои прекрасные друзья из Lategame/Krista ищут себе опытного продуктового аналитика. Формальное описание вакансии здесь. Фуллтайм, удаленка.

Из нюансов. Студия молодая, но ребята достаточно давно в индустрии. Делают мидкор, сейчас он на стадии MVP и пришла пора его оценки (собственно, почему открыли вакансию). Аналитики нет никакой, совсем. И ребята не очень готовы к самописным решениям.

Поэтому аналитику надо будет не только циферки крутить, но и сделать так, чтобы они были -- выбрать стек, обосновать его, задизайнить события для логирования и т.д. Ну и весь набор задач и экспериментов на ранних этапах проекта.

В общем, если вы такой человек или знаете, кому это может быть интересно -- напишите мне, пожалуйста.
4
Сижу, читаю ГДД по новой фиче — скоро релиз и разрабам нужен дизайн события логирования. В разделе “Аналитика” вижу запрос: “Как повлияла фича на дальнее удержание?”

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

С другой стороны — ответить на такой вопрос весьма непросто. A/B-тесты лучший и самый надежный вариант, конечно. Но тестировать вклад крупных фич в A/B-тестах бывает затруднительно — может не быть инструментов A/B-тестов, фичу может быть трудно выдать только части аудитории, банально может не хватать выборки и т. д.

В результате остаются только косвенные методы, близкие по духу casual inference идеям. В частности, взять (не)доживших до day X и сравнить их, насколько они различаются по использованию фичи. Попутно можно саму выборку кластеризовать на несколько близких по разным метриками групп (по метрикам активности, например) и сравнивать пользователей внутри кластеров. Одна проблема с таким методом: воспользовавшиеся фичой и не воспользовавшиеся — принципиально разные люди, с разным поведением и мотивами, и это стоит учитывать в выводах.

Еще один способ (и он сейчас мне кажется наиболее интересным, надо тестировать) — сравнить ретеншен фичи и общий ретеншен проекта, и скорость изменения обеих метрик. Условно, если пользователи каждый день пользуются фичой, но в целом проект показывает слабое удержание и скорость отвала от фичи меньше скорости отвала от проекта — вклад фичи не столь уж и большой. И наоборот.

P.S. спасибо коллегам из чатов аналитиков за обсуждение темы и интересные идеи.
👍4
Одна из моих любимых задач в работе аналитика — придумывать метрики, которые нам помогут понять, что происходит. В эти моменты психодиагност во мне просыпается и с любопытством осматривается.

И ладно если метрики относительно прозрачные, типа эффективности юнита в бою. Можно пробовать и смотреть разное — kills / spawn, damage / health, damage / time_in_battle, что угодно. Измерить просто, сравнить по ценности — тоже.

А иногда интересны такие вещи, на которые сидишь, смотришь и думаешь, как тот волче — “а как тебя операционализировать-то?”. Через какое наблюдаемое поведение мы можем делать вывод о том, что происходит с пользователем?

Например, есть представление, что “пользователям не нравится играть с ботами”. Это достаточно важный вопрос, так как от него зависит требования к матчмейкингу и наполнению боев людьми, к количеству стартовых боев с ботами и так далее.

Но как вот это “не нравится” измерять? Спрашивать бессмысленно, пользователи сами не знают, что происходит или будут конструировать объяснение. Тестировать A/B-тестами количество ботов можно, но это локальное и тактическое решение, да и не всегда возможное. Ко всему прочему, надо всегда учитывать, какие рычаги для изменения метрики у нас есть.

Поэтому приходится останавливаться на весьма бедных интерпретациях — “не нравится == не пошел в следующий бой”, “не нравится == вышел из боя в первые секунды” и тому подобных. Можно, конечно, начать с вопроса “почему не нравятся боты”, но это отдельное (в идеале качественное) исследование, на которое может не быть ресурсов или квалификации.

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

Несколько лет назад в одном из проектов обсуждали, нужны ли боты на старте игры. Надо, не надо, сколько первых боев с ботами делать и так далее. Аргументы “против” понятные — ботов надо делать (мозги придумывать и все такое), боты могут не нравиться пользователям, тюнить ботов по сложности и человекоподобности — отдельное сомнительное развлечение, да и при полноценной заливке может быть достаточно пользователей для наполнения матчмейкинга людьми и т. д.

Аргументы “за” тоже понятные — ботами проще контролировать опыт в первых боях (чтобы пользователи выигрывали), к тому же в тестах прототипов мы не сможем добиться полного матчмейкинга, слишком мало пользователей. Да и какие-то наброски по ботам уже есть, скорее всего.

Но есть еще один аргумент “за”, о котором я, признаться, даже и не подумал тогда. Если мы делаем бои на всю аудиторию, сугубо pvp и без ботов, то это надо поднимать достаточное количество гейм-серверов. Но при ретеншене порядка 35-45% мы в первые несколько боев безвозвратно теряем больше половины игроков. Соответственно, зачем тратить деньги на геймы, если можно сделать ботов и пользователи будут играть с ними на клиенте первые бои?

Таким образом, понимание метрик ретеншена и игровой активности в первый день помогло принять решение по ботам, озадачить разрабов реализацией боев на клиенте и, по словам СТО, сократить расходы.
🔥18👍71
На одном из совместных проектов продюсер и топы второй студии активизировались и хотят еще аналитики и дашбордов.

А в аналитике хотят разного. Очень видно качественно иной подход — больше метрик вовлечения, больше акцент на отвалы, на боевые статистики, на ладдеры коммьюнити-ивентов и тому подобное. От некоторых запросов вообще накрывает флешбеками многолетней давности, когда сидишь, смотришь на сырую табличку по пользователям из d2d, и единственное, что можешь оттуда вытянуть — rolling retention. Эхо тех сумеречных эпох, когда хранили только последний стейт пользователя, а не все логины-логауты и промежуточные логи.

Несмотря на все мое ворчание, интересно посмотреть, как оно будет работать в оперировании (пока только закрытая бета). Мы много работаем с метриками монетизации и экономики, но вот тот же отток обычно смотрим с точки зрения “китам что-то не нравится”. Бездушные “донатные сосалки” (c) однако, а тут высокий и тонкий мир ПК-бояр со своей атмосферой.

В общем, столкновение с Другим всегда обогащает, если суметь пережить и переварить этот опыт. Но мозги скрипят, мир за пределами своей модели и привычных инструментов уже кажется странным.
8
Немного технических страданий (после пары недель плохого самочувствия все равно ничего более осмысленное сказать не получается). Некоторое время назад тихо-мирно тестировал скрипт для агрегации данных под дашборды. Краем глаза увидел вот такой варнинг: FutureWarning: The default value of regex will change from True to False in a future version.

То есть в следующей версии (а точнее уже в текущей, так как у меня локально стоит древняя) все выражения вида pd.Series.str.replace(’[0-9]’, ‘’) перестанут работать. Потому что раньше паттерн [0-9] по умолчанию интерпретировался как regex, а сейчас — как строка.

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

А мы как раз недавно обновили Airflow, который потребовал новых панд.

Вообще, конечно, dependency hell — совсем не то, что хочется держать в голове, хоть и приходится. Мне бы на выручку посмотреть да группы посравнивать, а не думать, что и у кого отвалится, когда обновимся. Ну и панды сами по себе мерзкие, а тут еще такой подарочек, зачем.
😢104
Классическая эвристика в ситуациях, когда просела какая-то метрика — поиск сегмента, за счет которого произошла просадка. Например, перестали платить новые пользователи. Или почему-то перестали возвращаться старые киты.

С относительными когортными метриками (ретеншен, конверсия) ситуация немного сложнее. Изменение может лежать как в самом сегменте, так и в структуре сегментов. Например, мы знаем, что чем больше боев пользователь сделал в день инсталла, тем выше вероятность, что он вернется на следующий день (рет1). У нас есть определенная разметка пользователей на несколько сегментов в зависимости от того, сколько боев они делают.

И вот мы видим, что один сегмент просел. То есть после одного из изменений пользователи с таким количеством боев стали хуже возвращаться. Но не настолько хуже, чтобы объяснить общее снижение ретеншена. Оказалось, что еще часть просадки была обусловлена изменением структуры аудитории — пользователей с небольшим количеством боев (и, соответственно, с не очень высоким удержанием) стало существенно больше.

Почему так произошло (просел один сегмент и изменилась структура сегментов) — вопрос отдельного размышления и исследований. Это следующий шаг в понимании, почему изменилась метрика.

Намного более простой пример — когда закупили много пользователей из Китая (они традиционно хуже удерживаются) или начался фичер. То есть пришло большое количество некачественных и/или нерелевантных пользователей, которые и уронили ретеншен. Тут изменение просто в структуре.

В общем, доли, парадокс Симпсона и его вариации.

NB. Пример навеян недавними задачами, но все же во многом искусственный и упрощенный.
👍5🔥1
Разбираюсь сейчас с ретеншеном платящих. И понял, что в один пост не уложусь, сначала надо сделать подводку. Так что сейчас про активность пользователей, а завтра — уже про платящих.

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

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

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

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

Когда дело доходит до платежей, становится еще интереснее.
14👍6
Львиная доля задач на новых проектах касается вопроса “как бы нам повысить ARPU”. Мы тут смотрим на форму кумулятивной кривой, ищем точки перегиба и выхода на плато, и пытаемся понять, что происходит. Два ключевых инструмента для меня здесь — воронка платежей и ретеншен платящих. Конверсия в платящих тоже важна, но это отдельная тема.

Ретеншен платящих — тот же возврат пользователей в игру по дням от инсталла, только за 100% мы берем общее количество платящих, сделавших платеж в определенный период. Например, в день инсталла, или в за первые X дней, или за все наблюдаемое время когорты. Иногда можно просто посмотреть количество дней в игре после последнего платежа, с учетом окна лайфтайма сравниваемых когорт. Общая задача — проверить, а интересна ли игра этим пользователям. Если пользователи быстро отваливаются — одна история. Если платят мало (например, сделали платеж в первый день), но продолжают играть — совсем другая.

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

В конечном счете это сводится к проверке гипотез, пользователи не платят, потому что отвалились (даже платящим игра неинтересна). Тут изменение лежит в области геймплея, проработанности меты и так далее. Или пользователи не платят, потому что им нравится игра, но нет потребности или желания что-то еще покупать. И это уже про удовольствие и ожидания от платежа, про субъективную оценку “дорого/дешево” офферов и так далее.

Впрочем, одна явно локализованная причина плохих кривых cARPU — это редкость. Чаще всего мы имеем комбо, и надо выбрать то, что пробуем исправить в первую очередь, а потом оценить, как поменялось платежное поведение. Все переплетено, как это обычно у людей и бывает.
👍8🔥1
Так как я работаю с новыми проектами, у меня много задач, которые касаются разных версий игры. Притом версии существенно разные, особенно с точки зрения экономики. Где-то одна модель дистрибуции контента, где-то другая. Где-то изменили скорость прогрессии пользователя. Где-то просто перешатали дефициты.

Для подобных сравнений я в последнее время повадился считать метрики второго порядка. То есть, не просто кривую кумулятивного ARPU рисовать (или воронку боев), но и кривую коэффициентов. Где коэффициент — это значение cARPU day X / cARPU day 0. Берем и все значения cARPU делим на значение в какой-то выбранный день (день инсталла, третий день, седьмой, что угодно).

Такая метрика позволяет нам понять, а изменили ли мы вообще что-то в экономике и платежах, поменяв пол-игры. У проектов в оперировании, когда модель экономики уже сформирована, подобные кривые от версии к версии очень похожи. А вот у новых проектов из вариативность как раз и служит одним из маркеров, получилось ли нам что-то изменить или нет.

Второе применение подобных коэффициентов — понять, в каком именно месте расходятся версии. Потому что нередко бывает так, что, например, основной отвал происходит на второй день, а потом он просто длится. Такое можно поймать либо воронке с долями от предыдущего шага, либо как раз коэффициентом изменения для каждого шага относительно первого.
👍131
Знали бы вы, как я не люблю ботов. Именно как продуктовую фичу. Вечно с ними какие-то проблемы. То они слишком слабые. То слишком сложные. То они не очень похожи на поведение людей. То у них меняется логика или сложность, или все вместе. То их слишком много и постоянно кажется, что пользователям они не нравятся. То приходится использовать всякие трюки типа “пользователь не может отставать больше чем в полтора раза от ботов”, как мы в гоночках делали.

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

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

Так и живем.
👍12😁3
В малом чате аналитиков недавно обсуждали, как можно измерить, что “пользователю было интересно в бою”. Конечно, самый простой вариант — спросить пользователя явно, но это читерство. Впрочем, думаю, мы и до этого скоро дойдем.

Самый простой и надежный ответ на этот вопрос — “в данных нет ответа”, так как не все можно измерить и отследить в логах. Кажется, валидное утверждение. Как минимум оно позволяет быстро перейти к другим инструментам или гипотезам.

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

В общем, немного методологической ереси вам в ленту.
👍2
Прекрасный Антон Марцен, автор канала Product Science ищет аналитиков себе в команду Яндекс.Музыки. Вакансия зело симпатичная, хоть сам откликайся.

По требованиям стек понятный — SQL, Python, хорошая статистика и хорошая продуктовая часть. Ну и вся обвязка Яндекса в комплекте, само собой — от черномагических внутренних инструментов до процессов и плюшек.

Мне вакансия показалась интересной тем, что это развлекательный продукт, но еще не геймдев. Как я понимаю, сейчас такое называют “фантех”. Соответственно, разнообразное поведение и мотивация пользователей, которое надо огрокать и конвертировать в повышение бизнес-метрик.
🤩1
В последнее время на глаза попадалось несколько статьей про data design/modelling. Для меня интересная тема, так как я немалую часть времени занимаюсь проектированием системы логов на новых проектах — что логировать, как именно, как мы это будем использовать и т. д.

Тема сама по себе непростая, помнится, Никита Шустиков из Зепты меня как-то убеждал, что amplitude-like модель данных — лучшее, что может быть. А отдельные события, джойны и прочее — бессмысленный олдскул. Я же люблю воронки, обогащенные данные, рамочные события для ключевых компонент меты, много информации из конфигов, агрегаты на стороне проекта и прочее. В общем, есть о чем поговорить.

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

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

#datamodel
12
Любопытные новости, конечно. Особенно на фоне того, что несколько лет назад один из журналов по социальной психологии отказался принимать статьи с p-value и стал требовать только bayes factor.

Интересно, что привело гугл к такому решению. NHST, как ни крути, ведь тоже не идеал, да и на выборку весьма прожорлива.
1👍1🔥1😱1
Несколько лет назад делал что-то вроде аудита для одной студии с проектом жанра choices / love story. Так как жанр для меня совершенно незнакомый, спросил “а что мы продаем пользователю”. Получил несколько обескураживающий своей буквальностью ответ “харду и новые главы”. Пришлось уточнять, что меня больше интересовало, какой опыт получает пользователь, что его, по представлениям команды, привлекает и удерживает.

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

Для аналитики это еще и важнейший источник гипотез и идей для исследования. Например, в шутерах можно продавать блестяшки (скины и прочую кастомизацию), мощность в виде нового контента и геймплей в виде, опять-таки, нового контента. Блестяшки особый вариант — в первую очередь это характерно для проектов с многомиллионным DAU или для весьма специфичных ниш. А вот мощность (power) или геймплей — это да. Если мы предполагаем, что продаем геймплей, то наши юниты, кем мы играем, должны ярко различаться по боевым статистикам, тактике и т. д. Если мы продаем мощность, то тут возникают вопросы волн актуальности контента, активности и эффективности его использования и т. д.

В результате, если возникает вопрос “как бы увеличить ARPU”, мы можем оценить, правда ли мы продаем то, что планировали. А то вдруг юниты не различаются по геймплею или мощность у всех одинаковая. И действительно ли покупают то, что мы планировали — можно ведь продавать геймплей, а пользователи хотят покупать мощность. Или мы предлагаем скины, а пользователям они неинтересны в чистом слабо социальном мобильном pvp.
12
Всем привет.
Мы ищем продуктовых аналитиков. Описание вакансии здесь.
Подробности в личке, на что смогу — отвечу.

Из нюансов:
- в приоритете middle+ / senior, так как есть куча задач, которые решать надо прямо сейчас
- мы не используем внешние системы аналитики, сугубо DIY глубокая аналитика. Поэтому хорошие SQL+Python прямо обязательно
- если вы не из геймдева -- напишите, попробуем
- рассматриваем только зарубежные локации
- работать не со мной и моими проектами, но мы будем в одной команде
14
Посмотрел курс по продюсированию мобильных игр от Дмитрия Филатова (OwlCat, ex-MyGames/MGVC), автора канала DogDog. Курс выложен в открытый доступ, за что большое спасибо Дмитрию и Scream School.

Мне курс понравился. Кажется, он как раз закрывает недостающий кусочек — есть курсы по геймдизайну, по разработке или арту, да даже по аналитике кое-что есть. Но мало где говорится, как считать деньги команды, как оценивать перспективность игры, как мы вообще подходим к окупаемости, как декомпозировать задачи и выстраивать роадмап и т. д. “Вы пройдете полный цикл работы над идеей: от выбора и оценки до проработки и продажи ее бизнесу”.

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

При всем этом, я лично привык немного к другой роли продюсера. У Дмитрия сильный акцент сделан на организационно-финансовой части. Я же больше привык видеть другую сторону продюсеров — креативно-визионерскую. То есть я взаимодействую с продюсерами по поводу метагейма, экономики и в целом задачам вида “как повысить XXXX”. У Филатова в курсе эти компоненты оцениваются как менее значимые для работы продюсера. Даже на этапе прототипов, когда есть цели типа “нам нужен такой-то d1 retention”, роль продюсера в итеративном повышении метрики не особо раскрывается.

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

#courses
10👍1
Последнее время иногда думаю про логирование событий (когда устаю думать “а почему XXX такое низкое”). Хочется как-то перейти от простого “вот это надо обложить аналитикой” к какому-то более абстрактному/концептуальному уровню. Чтобы можно было для любой игры относительно быстро и безболезненно сформировать модель данных, например.

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

Пока дошел до выделения сущностей, их параметров и состояний, переходов в другие состояния, краешком затронул ресурсы и их виды. И это только самое начало — есть же еще всякие замороченные компоненты типа транзакций в движениях ресурсов или тапы/переходы в UI, платежи и их структура, в конце концов.

Но одно уже понятно сразу — очень много вкусовщины. Самый простой пример — квесты. Обычно для анализа квестов требуется как минимум два события — событие получение квеста и событие выполнения. Иногда могут быть дополнительные этапы, типа “квест выдан сервером”, “награда за этап квеста начислена сервером” и тому подобное.

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

Я же предпочитаю не плодить множество событий и все логировать в рамках только одного, но с разным значением в поле статуса (started / finished / etc). То есть длинный формат таблиц и потом группировка по соответствующим полям.

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

#datamodel
9
2025/07/09 14:20:16
Back to Top
HTML Embed Code: