Найти в Дзене

Больше баланса богу баланса. Часть 1.

Продолжение. Начало (и дисклеймер - с ним всё так же) тут: Считать - тоже, но читать данные - сложнее. Мы остановились на том, что хорошо, зная отклонения от баланса, просчитывать необходимые изменения. Но это читерство, так каждый сможет. Попробуй починить баланс, имея максимум качественные оценки изменений. А то и просто срез метагейма. Разработчики, впрочем, сами виноваты - имея возможность собирать нужную информацию, они этой возможностью не пользуются. В результате - многие метрики известны от самих игроков и считаются на основе куда меньшего массива данных. Тем более, сами аналитики могут делать неверные допущения. Базовыми параметрами для оценки баланса являются доли в метагейме и вероятности успеха в матчах между стратегиями. Ну, и поскольку идеала стабилизации можно ждать долго, то ещё и общий винрейт каждой из них (для стабильного метагейма мы просто считаем эту вероятность как нейтральную, обычно 0.5). Последний параметр обычно считывается неплохо (нет, на самом деле). К со
Оглавление

Продолжение. Начало (и дисклеймер - с ним всё так же) тут:

Читать - это сложно.

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

Базовыми параметрами для оценки баланса являются доли в метагейме и вероятности успеха в матчах между стратегиями. Ну, и поскольку идеала стабилизации можно ждать долго, то ещё и общий винрейт каждой из них (для стабильного метагейма мы просто считаем эту вероятность как нейтральную, обычно 0.5). Последний параметр обычно считывается неплохо (нет, на самом деле). К сожалению, об остальных этого сказать нельзя. Хорошо, что этот набор параметров избыточен. Плохо, что он не настолько избыточен, как бы нам хотелось. Но об этом потом, сначала всё же о том, почему сложно получить эти параметры напрямую.

Проблема первая - устаревание данных. Метагейм непрерывно меняется - и достаточно сложно выбрать такой период, чтоб, с одной строны, получить достаточно данных, а с другой - чтоб он не успел за его продолжительность поменяться. Условно, в рамках одного турнира мы можем наблюдать стабильность метагейма при маленькой выборке. А собрав данные по всем турнирам за месяц - получим приемлемую выборку без гарантии стабильности. В абсурдном случае каждый игрок одну партию сыграет стратегией 1, а вторую - стратегией 2. Аггрегированная информация даст доли в метагейме 50/50 при полностью нейтральных результатах - что позволит сделать вывод о равной силе стратегий 1 и 2. Но это будет неверно - поскольку между ними вообще не было матчей.

Момент второй - неполнота данных при любых турнирных схемах, кроме "каждый с каждым". Допустим, мы знаем, что в трёх турах швейцарки максимум побед набрали две стратегии - 1 и 2. Можно ли говорить о каком-либо их отношении или об успешности одной и другой? Нет, потому что можно все победы сделать против других стратегий - и тогда это говорит о высоком винрейте. А можно - в зеркальных матчах. И это будет говорить только о том, что стратегия представлена слишком широко.

... а она есть
... а она есть

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

И, наконец, момент четвёртый, самый неприятный - невозможно получить данные по отсутствующей в метагейме стратегии. Но это уже совсем неочевидный случай. Хотя, если выбор стратегии игроком имеет какие-то дополнительные ограничения кроме выкладок теории игр, то вполне реальный. Камень-ножницы-бумага не могут стабилизироваться в соотношении 1/0/0 (или в 1 на любой другой позиции). А вот если игрокам нужно было бы покупать соответствующий предмет... Тоже вряд ли, но аналогию вы поняли. Но в вырожденном метагейме мы даже не видим не представленных стратегий, не говоря уж о более подробной их статистике. Приходится по умолчанию допускать, что все актуальные стратегии представлены.

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

Ложная простота.

Итак, у нас есть метагейм. Пусть, доли в метагейме будут такие: К-60%, Н-30%, Б-10% при винрейте К-55%, Н-50%, Б-45%. Допустим, что это достоверная инфа. Дисбаланс налицо - и мы хотим его чинить. Что же делать?

Действие первое. Смотрим относительные винрейты. Для этого берём систему уравнений из прошлой статьи и решаем её не относительно долей метагейма, а относительно относительных винрейтов. О, поздравляю, держите два замечания без глубокой алгебры. Первое, мы только что сделали неявное допущение, использовав ту ситему в лоб. А именно - предположили, что ничьих в игре нет (а без сего допущения у нас проблемы - но о них чуть ниже). До этого мы сей факт говорили явно. Но, допустим, это допущение оправданное. Мы хотя бы не свалились в жуткие ошибки предположения стабильности метагейма или равного представления архетипов. Второе, опытному взгляду алгебра тут не нужна, чтоб сказать, что всё плохо - 60% матчей дают К 30% его винрейта, так что на 40% остальных приходится 25% общего числа побед. Это не то, чтоб невозможно, но это много.

А ещё это говорит, что К выигрывает у Н, потому что больше 10% победных матчей Б дать не может. Стало быть, на Н приходится больше 15%, то есть больше половины. А дальше получается, что Б получает в матчах с Н меньше 10% побед (ибо 5% Б имеет в зеркальных матчах, и больше 30% - против К). При 30% матчей. Это очень плохой шанс. При том, что против К очень высокого винрейта быть не может. В прочем, пока не будем лезть дальше...

Действие второе. Но давайте всё же решим систему. А, увы, не решим, у неё нет подходящего нам решения. Потому как при известных долях метагейма приведённая левая часть всегда будет иметь нулевой определитель (а сие есть гарантия того, что единственного решения не будет). В именно нашем случае не будет никакого. УПС. Значит, какое-то из допущений было неверным. Но какое? А неважно (на самом деле, тоже важно - но это уже индикатор систематической или статистической ошибки в сборе данных, к перестройке баланса это имеет опосредованое отношение). Потому что в реальности в метагейме обычно больше трёх сторон - и уравнений заведомо не хватит (число переменных растёт квадратично, а уравнений - линейно). Как их не хватит, если разрешить ничьи (это увеличит число переменных вдвое при неизменном количестве уравнений). Но что делать-то?

Ну, можно попытаться получить из невозможного набора данных ближайший возможный. Благо, уравнение для связи между долями и винрейтами есть (и отклонение от нужного значения там в нашем примере не такое и большое, всего-то 5%). То есть улучшить статистические данные не столь сложно. Но не очень осмысленно, ибо условные винрейты нам по прежнему не будут доступны.

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

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

О том, решают ли 5%.

Для начала, о том, откуда вообще взята оценка отклонения данных в поставленной задаче в 5%. Условием разрешимости нашей системы относительно условных винрейтов (далее - W(XY)) является равенство суммы произведений долей стратегии (далее - Р(A)) и общего винрейта (далее - W(A)) этой стратегии 0.5. В принципе, это равенство даже не требует какой-либо линейной алгебры. Потому что оно следует из того, что ожидаемый винрейт произвольного игрока в произвольном матче этим 0.5 (потому что у его оппонента он таков же, ибо это тоже произвольный игрок в произвольном матче) и равен. В нашем случае эта сумма равна 0.6*0.55 + 0.3*0.5 + 0.1*0.45, то есть 0.525. Отклонение абсолютное - 0.025, относительное - 0.05. Собственно, 5%.

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

W(КН) > 0.5, W(КБ) < 0.5, W(КН)*0.3 + W(КБ)*0.1 = 0.25 (1). Из интересного пока только что W(КН) > 0.66.

W(БК) > 0.5, W(БН) < 0.5, W(БК)*0.6 + W(БН)*0.3 = 0.4 (2). О, вот тут уже любопытнее, очевидно, что W(БК) < 0.66, а W(БН) < 0.33. Отсюда W(КБ) > 0.33, а W(НБ) > 0.66.

W(НБ) > 0.66, W(НК) < 0.33, W(НБ)*0.1 + W(НК)*0.6 = 0.35 (3). Эээээ... W(НК)*0.6 не больше 0.2, стало быть, W(НБ)*0.1 > 0.15. Но это невозможно в принципе. Причём, тут уже расхождение слишком велико. Так что 5% решают - и от них придётся избавиться. Но перед этим попробуем ещё раз извлечь что-то качественное из наших, как выяснилось, не слишком полезных данных.

Оценка движения метагейма в моменте.

Рассмотрим теперь винрейты стратегий, откинув зеркальные матчи. Так или иначе, они не влияют на восприятие игроками, является ли стратегия выигрышной или проигрышной в данный момент. Обозначим их... ну, пусть будет, w(Х). Несложно посчитать, что w(К) = 0.625, w(Н) = 0.5, а w(Б) = 0.44. То есть доля К будет расти и дальше, а доля Б - сокращаться. Что мало влияет на w(К) (причём, в сторону увеличения), но сильно влияет на w(Б) (тоже в сторону увеличения, но уже куда более заметного). Однако при доле Н в 30% (а это плюс-минус желаемое значение в метагейме из трёх стратегий) равновесие между К и Б будет достигнуто в ещё более разбалансированной точке (и это равновесие будет очень невыгодно для Н). Но и долю Н уменьшать сильно тоже неохота.

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

Корректируем исходные данные.

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

Взяв, допустим, лобовой метод наименьших квадратов, мы упрёмся в два условия, одно из которых будет нелинейным (то самое про средний шанс победы в принципе). А учитывая, что даже в нашем самом простом случае мы имеем 6 переменных, то про ручное аналитическое решение стоит забыть сразу. Скормим данные специально обученной программе - и получим что-то типа следующего набора.

W(К) = 0.53, W(Н) = 0.45, W(Б) = 0.48, P(К) = 58%, P(Н) = 27%, P(Б) = 15%.

Если кто-то хочет, может попробовать найти подходящие значения с более жёстким предельным отклонением (у меня было 5% - и два параметра в этот предел уткнулись). Пока же заметим то, что это ограничение привело к допущению, что баланс смещён вовсе не так, как нам казалось поначалу (и дела Н в данный момент, на самом деле, хуже, чем у Б - потому что Н проигрывает К, чем больше игроков перетечёт в сторону победителя - тем сильнее он будет побеждать). Посмотрим винрейты против других стратегий - w(К) = 0.57, w(Н) = 0.43, а w(Б) = 0.48. Здесь картинка кажется уже более очевидной - нужно остановить перетекание из Н в К, не разворачивая его (потому как балансировка метагейма сама по себе улучшит положение Н). Интуитивное решение - ослабить Н в матче Н-Б.

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

Продолжение следует.