Школьная алгебра: вычисляем идеальную цену внутриигровых товаров

Формулы оптимального соотношения спроса и расценок.

16 февраля блог «Манжеты ГД» опубликовал статью о том, как определить оптимальную цену для товаров во free-to-play игре. Её автор — продюсер и продакт-лид 2RealLife Григорий Чопоров.

Школьная алгебра: вычисляем идеальную цену внутриигровых товаров
Григорий Чопоров,
game producer и products lead в 2RealLife

В этой статье вас ждёт простой способ определения такой цены (P = Price) на конкретный игровой товар, при которой количество ежедневных продаж этого товара (Q = Quantity) будет максимально выгодным. Возьмём, например, «Зелье огромной скорости», которое уже продаётся в игровом магазине и имеет какую-то цену. Нам нужно, чтобы произведение P*Q (а это — ежедневный доход с продажи зелий) было максимальным. Это чудо мы совершим за три простых шага:

— Исследуем спрос на товар;

— Построим кривую спроса;

— Найдём максимально эффективную цену;

— PROFIT!!!

Глава 1. В которой герой исследует спрос

Начнём с самого простого шага — исследования текущего спроса на зелья. Для этого нам понадобится собрать статистику его ежедневных продаж при нынешней цене. Статистика, разумеется, должна быть максимально релевантной (в неё не должны попасть дни с событиями, способными заметно повлиять на спрос — акции, ивенты и прочие катализаторы спроса). Усреднив результат по нескольким дням, мы получим первую пару чисел (P1, Q1) (среднее количество продаваемых в день зелий по текущей цене). Запомним их.

Осталось измерить, как вырастет спрос на товар при изменении цены на него. Для этого нам необходимо снизить цену на товар (можно и увеличить, однако не думаем, что это будет тепло встречено free-to-play аудиторией) и замерить среднее количество продаж в день при новой цене. Максимально правильно будет использовать для этого А/Б-тестирование — выделить несколько групп игроков и поменять цену на зелье для каждой группы на некоторую часть, например, от 10 до 50%, а затем собрать статистику по каждой группе игроков.

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

Правильных способов измерения нового спроса при новой акционной цене огромное количество (можете самостоятельно придумать пару-тройку после того, когда дочитаете главу). Расскажем о самом простом — акции под кодовым названием «Неделя+». Процесс измерения при ней выглядит так: вы объявляете скидку на товар (например, 50% — её размер не так важен, главное, чтобы изменение спроса под действием акции было достаточно заметным на фоне его обычных ежедневных колебаний) ровно на одну неделю (о чём громогласно объявляешь игрокам), после чего, по истечении срока акции, продлеваешь её ещё на одну неделю «по просьбам трудящихся».

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

Избавившись на первой неделе от «ажиотажных» продаж, мы получим достаточно ровный график на второй неделе акции (и достаточно релевантную статистику изменения спроса). Вычислив среднее количество продаж товара в день при новой цене, мы узнаём вторую пару чисел (P2, Q2). Запомним и их.

Этот акционный способ далеко не единственный. Кроме него, например, неплохо себя показывает объявление скидки на неопределённый срок (то есть игроки заранее не знают, когда закончится акция). Или ещё десяток других, которые способен придумать геймдизайнер. Основное правило для них одно — максимально избавиться от «ажиотажных» покупок (то есть покупок, совершаемых игроками только потому, что в данный момент цена товара ниже, чем обычно).

Если в вашей игре нельзя просто взять и исследовать цены при помощи А/Б тестирования, придётся запускать одинаковую акцию для всех игроков разом, исследовать отдельно игроков по категориям (не мешать, например, свежие регистрации и топовых игроков в одну категорию), а затем удовлетворяться всего одной парой чисел (P2, Q2).

Глава 2. В которой герой строит кривую спроса

Школьная алгебра: вычисляем идеальную цену внутриигровых товаров

Теперь, когда у нас есть две пары чисел (P, Q), мы вполне способны построить кривую спроса и получить её (кривой) аналитическое представление.

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

Для этого мы рассчитаем коэффициент эластичности спроса товара по цене.

Коэффициент эластичности спроса по цене показывает, на сколько процентов изменится величина спроса при изменении цены на 1%.

Формула для вычисления коэффициента достаточно проста:

E = ((Q2 — Q1) / Q1) * (P1 / (P2 — P1))

Подставим в неё запомненные нами в предыдущей главе пары чисел (P1, Q1) и (P2, Q2) и внимательно посмотрим на получившийся коэффициент. Если этот коэффициент меньше -1 (то есть спрос эластичен), у нас есть приятная новость — скорость изменения спроса выше скорости изменения цены, а это значит, что есть смысл уменьшить цену на данный товар (в нашем случае, напомним, это «Зелье огромной скорости») для увеличения дохода от его продаж.

В случае, если изменение спроса на товар при снижении цены значительно («значительным» считается изменение спроса больше, чем на 5% при снижении цены на 1%), стоит использовать формулу дуговой эластичности:

E = ((Q2 — Q1) / (Q2 + Q1)) * ((P2 + P1) / (P2 — P1))

Но эту формулу мы решили написать для тех зануд, которые про неё знают, потому что при эластичном спросе обе формулы дадут коэффициент меньше -1. В этом случае (при коэффициенте эластичности меньше -1) при наличии только двух пар чисел (P, Q) график спроса можно грубо представить линейной функцией вида Q = a — b * P

Если же полученный коэффициент больше -1, то приятных новостей не будет. Простите.

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

Школьная алгебра: вычисляем идеальную цену внутриигровых товаров

Сами же отправимся вычислять коэффициенты a и b для нашей идеальной линейной функции. Для вычисления коэффициентов составим систему линейных уравнений вида:

Q1 = a — b * P1
Q2 = a — b * P2

Из неё легко получаем значения a и b, а после и саму функцию.

Глава 3. В которой герой снова вспоминает школьную алгебру

Школьная алгебра: вычисляем идеальную цену внутриигровых товаров

Итак, аналитическое представление кривой спроса на чудное (судя по названию) зелье мы получили. Самое время вспомнить, ради чего мы всё это затевали — нам необходимо определить такую точку (P, Q) на графике полученной функции, в которой произведение P * Q будет максимальным (а это произведение, напомним, — и есть тот самый доход от продажи товара, который согревает вашего продюсера холодными зимними вечерами).

Сделать это проще простого — достаточно найти первую производную функции F(P, Q) = P * Q, приравнять её к нулю и найти точку экстремума функции. Если вы прогуливали школу — в википедии описано, что такое производная, и как она считается. И про экстремумы функции там тоже есть.

Мы же все молодцы, и в школе учились, поэтому легко посчитаем:

F'(P, Q) = (P * Q)’ = (P * (a — b * P)’ = a — 2 * b * P

Отсюда: если

a — 2 * b * P = 0

то

P = a / (2 * b)

ну а

Q = a — b * (a / (2 * b)) = a / 2

Пытливые умы из предыдущей главы, понятное дело, ищут экстремумы получившейся у них функции. Запишем ещё раз результат (для закрепления):

P = a / (2 * b)
Q = a / 2

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

Эпилог

Школьная алгебра: вычисляем идеальную цену внутриигровых товаров
1212
33 комментария

Хороший ликбез, спасибо! Ждем продолжения.

7
Ответить

Друзья, в следующий раз когда участники в том числе и этой беседы будут спрашивать меня про "странные комментарии в ПРО, которыми никто не чистит" - я просто скринами покажу, что вы зачем-то сами поддерживаете эту странную беседу)

5
Ответить

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

1
Ответить

игры любить конечно нужно. Делать нелюбя "чистую математику" невозможно. По крайней мере хорошо делать.

3
Ответить

Комментарий недоступен

1
Ответить

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

4
Ответить