Книга: Игровой баланс. Точная наука геймдизайна (Электронная)
Назад: 13. Аналитика
Дальше: 15. Разработка и игровое тестирование

14. Метаигровые системы

В этой главе

• Ранги и рейтинги.

• Системы рейтингов.

• Распространенные проблемы рейтинговых систем.

• Использование рейтингов для прогнозирования исхода игры.

• Системы ранжирования.

• Турниры и лиги.

• Метаигровые системы вознаграждений.

Ранги и рейтинги

Конечно, Magic: the Gathering — стратегическая игра… Но, с другой стороны, Гарри Каспаров не проиграл ни одну из своих партий лишь потому, что не использовал пешку в течение первых десяти ходов.

Разработчик игр с десятилетним опытом

В повседневной жизни мы часто употребляем слова «ранг» и «рейтинг» как синонимы, но на самом деле они означают немного разные вещи.

Ранг игрока — это порядковый номер, который показывает, какую позицию он занимает относительно других игроков. Ранг 1 означает, что игрок лучше всех прочих, ранг 2 — что он лучше всех, за исключением игрока с рангом 1, и т.д. Система ранжирования представляет собой способ определения и обновления рангов каждого игрока. Ранг не отражает абсолютную разницу в уровне навыков или относительной позиции игроков. Разница между игроками ранга N и ранга N + 1 может быть как очень маленькой, так и очень большой — вам известно лишь то, что между ними нет каких-либо других игроков. Широко известными примерами систем ранжирования являются таблицы лидеров и леддеры.

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

Системы рейтингов

Хотя система «Эло» далеко не первая из когда-либо созданных рейтинговых систем, она наиболее широко используется в играх с рейтингами. Создавалась она в качестве рейтинговой системы для шахмат, призванной заменить применявшуюся ранее систему «Харкнесс».

Система «Харкнесс»

Система «Харкнесс», названная так по фамилии создателя, была разработана в качестве системы управления рейтингами участников шахматных турниров. В ней каждый игрок регистрируется для участия в турнире со своим ранее полученным рейтингом (новым игрокам, у которых еще нет рейтинга, присваивается некоторое начальное число). На этом турнире вычисляется средний рейтинг соперников каждого игрока — обозначим это число буквой R. При равном количестве побед и поражений новый рейтинг игрока после турнира становится равным R вне зависимости от того, какой рейтинг у него был до турнира. При более удачном выступлении новый рейтинг определяется как R + 10P, где P — величина отклонения в большую сторону от соотношения 50/50 в процентах. При менее удачном выступлении новый рейтинг определяется как R – 10P, где P — величина отклонения в меньшую сторону от соотношения 50/50 в процентах.

Допустим, участник турнира с исходным рейтингом 1800 играет против соперников с рейтингами 1500, 1700, 1750, 1900 и 1950 со следующим результатом: три победы, одно поражение и одна ничья. (В системе «Харкнесс» не имеет значения, какие именно партии закончились победой или поражением, нужно знать лишь усредненный рейтинг соперников и количество побед, поражений и ничьих.) Усредненный рейтинг соперников здесь составляет 1760, поэтому, если бы у игрока были две победы, два поражения и одна ничья, его новый рейтинг был бы равен 1760. Однако в данном случае у игрока три победы, одно поражение и одна ничья. Приняв, что победа стоит 1 очко, поражение — 0 очков и ничья — 0,5 очка, получим, что у этого игрока 3,5 очка из максимально возможных 5, то есть относительное количество побед у него составляет 3,5 / 5 = 70 %. Это на 20 % выше 50 %, поэтому P = 20. В таком случае новый рейтинг составляет 1760 + (10 × 20) = 1960. Обратите внимание на то, что игрок получил бы этот новый рейтинг вне зависимости от того, какой рейтинг у него был раньше.

Даже без тщательного анализа можно понять, что в некоторых случаях система «Харкнесс» может быть недостаточно точной. Во-первых, новый рейтинг игрока после турнира определяется исключительно результатами сыгранных партий и рейтингами соперников, а его предыдущий рейтинг учитывается лишь при расчете новых рейтингов его соперников. В силу этого рейтинг тех игроков, которые демонстрируют не очень стабильную игру, может сильно колебаться. Кроме того, поскольку рейтинг рассчитывается добавлением или вычитанием величины отклонения от 50 % в большую или меньшую сторону, умноженной на 10, он не может отклоняться от среднего уровня соперников более чем на 500 очков. Поэтому, если начинающему игроку удастся попасть на турнир гроссмейстерского уровня, он в итоге получит очень высокий рейтинг, даже проиграв все свои партии!

Система «Эло»

Для устранения недостатков системы «Харкнесс» была создана система «Эло» (тоже названная по фамилии ее создателя). В ней предыдущий рейтинг игрока используется в качестве исходного уровня и увеличивается или уменьшается в зависимости от результата каждой партии. Размер этих изменений зависит от того, насколько рейтинг соперника отличается от рейтинга игрока. Игрок получает больше очков за победу над соперником с более высоким рейтингом и меньше — за победу над более слабым соперником. Таким же образом он теряет меньше очков, когда проигрывает более опытному сопернику, и больше, когда рейтинг соперника ниже.

Расчет изменений, вносимых в рейтинг «Эло», производится в два этапа. Сначала нужно рассчитать для игрока ожидаемое количество побед:

.

В этой формуле Rсоп — рейтинг соперника, а Rигр — рейтинг игрока до начала игры. E — ожидаемое количество побед исходя из разницы в рейтинге между игроками (победа засчитывается как 1 очко, а поражение — как 0 очков). В случае одной игры число E представляет собой вероятность победы и варьируется от 0 до 1, где 0 соответствует случаю, когда игрок бесконечно хуже соперника, а 1 — когда бесконечно лучше.

Возможно, вас удивляет, почему в этой формуле используется число 400, а не какое-то другое. На самом деле здесь вместо него можно было бы взять любое другое число, автор системы выбрал его главным образом из эстетических соображений, чтобы обеспечить определенную степень детализации. При разработке системы Эло стремился к тому, чтобы при разнице в рейтинге 200 очков вероятность победы более сильного игрока (E) составляла примерно 0,75. На самом деле в таком случае E = 0,759 746 9, что довольно близко к тому, чего он хотел добиться.

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

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

Rнов = Rст + K(AE).

В этой формуле уравнении Rнов — обновленный рейтинг игрока, Rст — предыдущий рейтинг (то же самое, что и число Rигр в формуле для вычисления E), A — фактический результат игры (0 при поражении и 1 в случае победы). K — константа, которая равна максимально возможному размеру увеличения или уменьшения рейтинга за одну игру и, таким образом, является мерой его изменчивости: исходя из того, что нам неизвестен реальный уровень мастерства игрока и рейтинг является приближением, мы корректируем его вверх или вниз после игры в зависимости от того, насколько сильно предыдущая оценка отклоняется от реального результата (AE) и насколько она изменчива (K). В шахматах принято использовать более высокий коэффициент K для новых (неустановившихся) игроков, уровень мастерства которых по большей части неизвестен, и более низкий — на турнирах очень высокого уровня.

Полезной особенностью системы «Эло» является то, что она позволяет выставить рейтинг и для отдельной игры (как часто происходит в шахматных клубах, где их члены могут сыграть одну-две официальные рейтинговые игры в дополнение к тренировочным играм, для которых рейтинг не выставляется), и для целого турнира. Чтобы рассчитать изменение рейтинга в рамках турнира, нужно вычислить E для каждой проведенной игры и сложить все эти числа, при этом в качестве параметра A следует использовать общее количество набранных на турнире очков. Например, если игрок сыграл против одного очень сильного соперника (E = 0,2), одного соперника с таким же рейтингом (E = 0,5) и одного чуть более слабого (E = 0,6) и победил в двух из трех игр (A = 2), то размер необходимой корректировки рейтинга составляет K(2 – 1,3) = 0,7K. Если в качестве коэффициента K при этом используется типичное значение 16, этот игрок получит 11,2 рейтингового очка (или 11 очков в тех реализациях, которые позволяют выставлять только целочисленные рейтинги).

Поскольку изменение рейтингов «Эло» вверх или вниз производится относительно рейтингов соперников, они фактически не могут изменяться больше некоторого верхнего или нижнего предела. Если, например, изначально рейтинг игроков был равен 1000, то он вряд ли когда-нибудь поднимется выше 5000, поэтому если вы решили сымитировать распределение рейтингов игроков с помощью электронных таблиц и видите, что у кого-то из них он равен 7724, то в вашей симуляции, вероятно, есть ошибка.

В качестве еще одного, последнего замечания следует отметить, что в шахматах игры могут заканчиваться ничьей и система «Эло» не предусматривает явного разрешения ничейных ситуаций. Поскольку у двух игроков с одинаковым рейтингом число E будет равно 0,5, ничья оценивается в половину победы. Это означает, что, когда более слабому игроку удается закончить вничью партию с более сильным соперником, его рейтинг немного возрастает, а рейтинг более сильного — слегка понижается.

Хотя система «Эло» стала золотым стандартом в мире шахмат и, помимо этого, широко используется во многих других играх, у нее тоже есть определенные недостатки, которые делают ее неподходящей для некоторых типов игр. В частности, она предполагает, что игра ориентирована на уровень игровых навыков и при бесконечно большом превосходстве одного игрока над другим по уровню навыков вероятность его победы приближается к 100 % (что неверно в случае игр с элементом случайности, где игрок с меньшим уровнем навыков может выиграть просто за счет везения). Кроме того, предлагаемый системой «Эло» способ разрешения ничейных ситуаций уместен в лишь в случаях, когда ничья на самом деле стоит половину победы. Однако это может не подойти для игр, где слабейшему игроку проще добиться ничьей. И конечно же, не стоит забывать о том, что система «Эло» рассчитана на игры с двумя игроками и без дополнительных модификаций не может использоваться для игр с тремя геймерами или бóльшим их количеством.

Система «Глико»

Существует много систем, по сути представляющих собой вариации системы «Эло» с небольшими изменениями. Одна из них — система «Глико», названная так в честь ее создателя Марка Гликмана.

В системе «Глико» параметр K в формуле для расчета размера корректировки рейтинга «Эло» не постоянный, а изменяющийся. Каждый игрок обладает собственной мерой изменчивости, которая называется отклонением рейтинга (Ratings Deviation, RD) и обновляется после каждой игры. Обычно параметр RD уменьшается после каждой игры, но постепенно растет с течением времени. При этом подразумевается, что по мере проведения игроком все большего количества игр оценка его рейтинга становится более надежной, но если он не будет играть в течение некого времени, рейтинг изменится из-за отсутствия практики, что нужно будет скорректировать, увеличив отклонение.

Поскольку каждый игрок одновременно имеет и рейтинг, и параметр RD, рейтинг «Глико» можно отображать не как отдельное значение, а как диапазон R ± 2RD, к которому предположительно должны относиться 95 % игроков.

Система «Глико» — прекрасный пример того, как математика может вступать в противоречие с психологией игроков. С точки зрения математики уменьшение параметра RD при частом проведении игр позволяет довольно быстро найти реальный рейтинг игрока c небольшой погрешностью, что делает эту систему полезной и эффективной, когда стоит именно такая задача. Однако при очень низком значении RD рейтинг игрока несущественно изменяется в ту или иную сторону от игры к игре, и ему начинает казаться, что результаты проводимых игр не имеют значения, а единственный способ повысить рейтинг состоит в том, чтобы специально не играть в течение какого-то времени и таким образом снова увеличить свой параметр RD. Таким образом, с точки зрения психологии система «Глико» может отбивать у некоторых игроков охоту к частой игре, что оказывается негативным фактором. В силу этого создатель системы даже предложил при ее реализации не делать параметр RD меньше некоторого минимального значения, например 30, чтобы рейтинг хотя бы немного менялся после каждой игры.

Система TrueSkill

Система TrueSkill от компании Microsoft схожа с системой «Глико» в том, что каждый игрок одновременно имеет и рейтинг (обозначаемый здесь буквой µ — «мю»), и показатель степени изменчивости (обозначаемый здесь буквой σ — «сигма»). Уровень навыков игрока при этом характеризуется распределением вероятностей на колоколообразной гауссовой кривой (которую также называют кривой нормального распределения), где µ — среднее значение, а σ — стандартное отклонение. Значение µ всегда возрастает в случае победы и уменьшается после поражения. Изменение при этом зависит от соотношения между параметрами σ игроков. (У игрока с высоким параметром σ очень ненадежная оценка рейтинга, и если он играет против соперника с низким σ и надежной оценкой рейтинга, его рейтинг может сильно измениться, потому что он получает точнейшую информацию о своем положении относительно соперника. У последнего уже и так очень надежная оценка рейтинга, и он получает мало информации от игры против игрока с ненадежным рейтингом, поэтому его рейтинг меняется очень мало.) Величина изменения параметра µ также зависит от разницы между параметрами µ игроков, как и в системе «Эло» (при неожиданном исходе происходит более крупное изменение, чем когда выигрывает предполагаемый победитель). Одно из самых важных нововведений в системе TrueSkill, по сравнению с ранее созданными рейтинговыми системами, — явный способ обработки многопользовательских матчей.

В играх, где группа геймеров борется друг с другом в режиме «каждый сам за себя», они получают свой первый рейтинг в соответствии с их окончательным результатом в игре (например, в шутерах с режимом «смертельного боя» рейтинг игроков определяется окончательным счетом, а в гоночных играх — очередностью финиширования). Если в игре участвуют N игроков, то она рассматривается как N – 1 игр, сыгранных каждым игроком в режиме «один на один», в которых он выиграл у каждого игрока с более удачным результатом и проиграл каждому игроку с менее удачным результатом. При довольно незначительной разнице между окончательными результатами двух игроков считается, что они сыграли вничью. Размер этой довольно малой разницы устанавливается для каждой игры в отдельности, кроме того, в некоторых играх ничья вообще невозможна (например, в гоночных играх игроки часто не могут финишировать одновременно, что исключает возможность такого результата).

Система TrueSkill также включает в себя механизм для командных игр, который действует следующим образом. Каждая команда рассматривается как отдельный игрок, у которого параметры µ и σ равны суммам параметров µ и σ каждого члена команды соответственно. Затем вычисляется размер корректировки рейтинга для каждой команды, после чего увеличение или уменьшение количества очков распределяется в рамках каждой команды в соответствии со значением параметра σ каждого игрока (игроки с более высокой степенью неопределенности получают более крупное изменение рейтинга).

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

Онлайновые системы рейтингов

В играх жанра MOBA наподобие League of Legends и некоторых других разновидностях состязательных онлайн-игр вроде Hearthstone и Dota Auto Chess можно использовать некоторые дополнительные соображения и новации по сравнению с вышеупомянутыми системами, основываясь на том, что известно о поведении игроков.

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

Для этого в большинстве таких игр всем игрокам присваиваются рейтинги подбора игроков (match making rating, MMR), которые обычно обновляются подобно рейтингам «Эло» и TrueSkill. Когда игрок сообщает о своем желании сыграть, система подбора соперников помещает его в очередь и пытается как можно быстрее найти для него соперника с примерно таким же рейтингом MMR. Если не удается быстро подобрать такого, допустимая разница в рейтинге MMR увеличивается до тех пор, пока наконец не будет найден подходящий соперник, даже если он намного лучше или хуже первого игрока. Игра может как отображать рейтинги MMR для игроков, так и не делать этого. Чтобы не расхолаживать игроков с низким рейтингом, многие игры скрывают эту информацию, ведь, даже когда геймер побеждает лишь в половине своих игр, ему кажется, что он играет хорошо, несмотря на то что на самом деле это ему удается лишь потому, что уровень соперников столь же низок.

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

Мастер-очки

Еще одна разновидность рейтинговых систем, о которой стоит здесь упомянуть, используется, помимо прочего, в карточной игре бридж, теннисе и коллекционной карточной игре Magic: the Gathering. В этих системах игроки получают определенное количество мастер-очков за участие в каждом официальном событии в зависимости от успешности своего выступления. Например, игрок может получать 3 очка за победу, 1 очко за ничью и 0 очков за поражение в каждой проведенной им турнирной игре. Рейтинг игрока представляет собой суммарное количество очков, набранных им во всех сыгранных ранее играх.

Конкретные реализации этой системы обычно представляют собой некоторые вариации на эту тему. Например, в бридже используются несколько обозначенных разными цветами категорий очков, начисляемых в зависимости от престижности события. Для участия в закрытом состязании нужно иметь не только определенное общее количество очков, но и некоторое минимальное количество очков конкретного цвета (это позволяет различать игроков, преуспевших на клубном и национальном или международном уровне). В игре Magic: the Gathering игроки получают некоторое количество очков просто за участие в событии наряду с очками, начисляемыми за каждую победу. Такая схема призвана мотивировать игроков к участию в большом количестве событий.

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

Распространенные проблемы рейтинговых систем

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

Поощрение активности

В рейтинговых системах наподобие системы «Эло» у достигшего высокого рейтинга игрока часто возникает ощущение, что ему лучше прекратить играть, чтобы сохранить свой рейтинг, особенно если он чувствует, что рейтинг завышен и он потеряет очки в долгосрочной перспективе, или если вошел в число лучших в мире и боится утратить лидерство.

Система рейтингов может снижать мотивацию к проявлению активности и каким-либо иным образом. Например, в системе «Глико» имеется параметр RD, который определяет, сколько очков может быть получено или потеряно в одной игре. Этот параметр уменьшается при большой активности игрока и в стандартной реализации этой системы, в ее изначальном виде, постепенно приближается к нулю при частом проведении игр. Это фактически означает, что очень активный игрок может застрять на своем текущем рейтинге, поскольку даже большое количество побед не позволит ему сколько-нибудь заметно продвинуться вперед. Увеличить параметр RD можно, лишь на какое-то время отказавшись от участия в играх. Это побуждает игроков к тому, чтобы чередовать периоды игровой активности, которые служат для повышения рейтинга, с периодами неактивности, увеличивающими параметр RD. Гликман особо выделил этот недостаток своей системы и предложил не делать параметр RD меньше 30, чтобы люди могли получать хотя бы минимальный прирост рейтинга в каждой игре.

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

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

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

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

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

Уровень навыков и удача

В системе «Эло» ожидаемая вероятность победы варьируется в диапазоне от 0 до 1. Это означает, что игрок с бесконечно высоким уровнем навыков должен выигрывать у игрока с бесконечно низким уровнем навыков в 100 % случаев. Это справедливо для игр с ориентацией на игровые навыки, таких как шахматы, но не для тех, где некоторую роль играет удача, таких как покер или Magic: the Gathering.

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

Допустим, что в некой карточной игре вы можете каким-то образом определить, что исход игры на 95 % обуславливается уровнем навыков и на 5 % — фактором удачи. То есть исход каждой 20-й игры определяется удачей, а исход остальных — навыками.

При очень большой разнице в уровне навыков в 19 играх из 20 выигрывает более сильный игрок, а в последней игре с вероятностью 50 % могут победить оба игрока, поскольку ее исход определяется фактором удачи, который дает равные шансы обоим. Таким образом, в данном случае система рейтингов должна исходить из того, что ожидаемая вероятность победы находится в диапазоне 0,025… 0,975, а не в диапазоне 0… 1. В более общем случае, если исход игры на N процентов определяется фактором удачи, вероятность победы находится в диапазоне от N / 200 до 1 – N / 200.

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

Какие же изменения следует внести в систему, которая, подобно системе «Эло», учитывает только уровень навыков, чтобы она принимала в расчет и фактор удачи? Если вероятность победы E, рассчитанная вами только с учетом уровня навыков, составляет определенное значение, а коэффициент удачи (вероятность того, что исход игры будет определяться фактором удачи, а не навыками) равен L, то:

E = (1 – L)(определенное значение) + 0,5L.

Как же была получена эта формула? Здесь мы используем принцип расчета ожидаемого значения с учетом степени его вероятности: умножаем каждый возможный результат на степень его вероятности и складываем полученные числа. Первый член этой формулы показывает, что вероятность того, что исход игры будет определяться уровнем навыков, составляет (1 – L), и вероятность победы в этом случае рассчитывается по исходной формуле, учитывающей только уровень навыков. Второй член этой формулы показывает, что вероятность того, что исход игры будет определяться удачей, равна L (по определению) и вероятность победы в этом случае составляет 0,5.

Подбор соперников

Допустим, игрок хочет сыграть рейтинговую игру. Как в таком случае для него подбирается соперник? Для этого используется система подбора соперников.

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

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

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

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

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

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

Инфляция и дефляция рейтингов

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

Этому есть объяснение. Любая рейтинговая система должна иметь определенную отправную точку — рейтинг, присваиваемый новому игроку, который еще не участвовал ни в одной игре. Предположим, что в некоторой системе все новые игроки изначально получают 1000 очков. Что это значит? На самом деле само по себе это ничего не значит, поскольку число имеет смысл лишь во взаимосвязи с рейтингами других игроков. Если медианный рейтинг игроков равен 1500, значит, в данном случае предполагается, что рейтинг новичков должен быть намного ниже среднего значения. Если же медианный рейтинг игроков 1000, значит, предполагается, что рейтинг новичков изначально должен равняться медиане и их реальный рейтинг будет определяться в первых нескольких играх.

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

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

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

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

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

Разрешение ничейных ситуаций

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

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

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

Многопользовательские игры

Система «Эло» исходит из предположения, что игра представляет собой противостояние между двумя игроками в режиме «один на один». Когда в игре может участвовать больше двух игроков, приходится идти на некоторые дополнительные ухищрения, как, например, в системе TrueSkill. Хотя в многопользовательских играх между игроками могут возникать самые разные взаимодействия, те виды конкурентных отношений, которые подходят для применения рейтинговой системы, обычно можно разделить на две категории: борьба в режиме «каждый сам за себя» и командная борьба.

В играх с режимом «каждый сам за себя» несколько игроков одновременно противостоят друг другу. Каждый из них преследует только свои интересы, не вступая в команды или союзы. Примером такой игры может быть шутер с режимом «смертельный бой» или симулятор автомобильных гонок. При разработке такой игры необходимо определить, какие параметры наилучшим образом отражают уровень эффективности игрока, учитывая то, что в разных играх они могут быть разными. Ожидаемый исход игры может определяться просто средним рейтингом соперников, или преимущественно самым сильным или самым слабым соперником, или иным соотношением соперников.

В командной игре два или несколько игроков объединяются в группу с общими целями и общей победой или поражением. Две или несколько команд состязаются друг с другом в режиме «один на один» или «каждый сам за себя», где в роли отдельного игрока фактически выступает целая команда. При этом вопрос заключается в том, что определяет общую силу и ожидаемую эффективность команды. Конечно, каждый ее член вносит свой вклад, но может ли один сильный игрок сыграть доминирующую роль и привести к победе в целом слабую команду? Или, наоборот, может ли один слабый игрок потянуть на дно всю команду, даже если остальные игроки довольно сильны? Общий рейтинг команды может рассчитываться просто как средняя величина рейтинга отдельных игроков или с определенным взвешиванием отдельных значений. Еще одним важным фактором в командных играх является степень знакомства игроков. Хорошо сыгранная команда давних приятелей часто может превзойти команду, состоящую из более опытных, но незнакомых друг другу игроков.

Разрыв соединения

Разрабатывая сетевые игры, помимо прочего, нужно подумать о разрешении случаев разрыва соединения с игрой у одного из игроков в ходе игрового процесса. Иногда это происходит по не зависящим от человека причинам — из-за выхода из строя или временного ухудшения интернет-соединения, а иногда он сам разрывает соединение из-за того, что его сильно расстраивает или злит то, что он проигрывает. Что должно происходить с рейтингом игрока в том случае, когда он или его соперник теряет соединение с игрой и больше его не восстанавливает? Как такая ситуация должна разрешаться в игре с противостоянием двух игроков в режиме «один на один», в игре с режимом «каждый сам за себя» или в командной игре? Какой подход будет наиболее справедливым, с точки зрения игроков, учитывая то, что мы не можем отличить аварийный разрыв соединения от умышленного?

В игре с двумя игроками возможны следующие варианты.

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

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

• В случае разрыва соединения игрока может подменять бот на основе ИИ с сохранением в силе итогового исхода игры. Этот вариант уже не так несправедлив по отношению к игрокам с плохим соединением, как предыдущий вариант. Однако нужно реализовать достаточно компетентный ИИ, что часто требует больших усилий. (Создание неудачного ИИ может привести к тому, что при разрыве соединения игрок будет практически всегда терпеть поражение, так что данный вариант будет отличаться от предыдущего лишь приложением бóльших усилий.)

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

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

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

При использовании серверов следует учитывать и ряд других моментов, зависящих от того, как связываются друг с другом игроки во время матча — напрямую или через сервер. Когда это происходит через серверы, принадлежащие владельцу игры, легко выявлять лишившихся соединения игроков, а также скрывать IP-адреса одних игроков от других, что не позволит злонамеренным игрокам разрывать соединение своих соперников, проводя DoS-атаку. Если же игроки связываются друг с другом напрямую, то в случае утраты связи между ними гораздо труднее выяснить, у кого соединение работает, а у кого — нет. Геймеры могут пытаться снова связаться с игровым сервером для загрузки своих результатов, и утративший соединение игрок, по идее, не сможет сделать этого, что позволит вам понять, у кого есть соединение, а у кого — нет. Но что, если нарушилось лишь соединение между двумя игроками и им обоим без проблем удается снова связаться с сервером? И что, если один из игроков специально разорвет интернет-соединение, чтобы избежать поражения, и восстановит его как раз перед тем, как подключиться к серверу? (Да, некоторые вполне способны на такое.)

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

Обман системы

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

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

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

Если игра позволяет выбирать соперников, игроки могут намеренно проигрывать своим друзьям. Каждый геймер может завести несколько игровых аккаунтов и задействовать один из них, основной, для конкурентной борьбы, а остальные, вспомогательные — чтобы обеспечить легкие победы своим друзьям. А те будут «сливать» игры основному аккаунту игрока, используя свой дополнительный аккаунт, и наоборот. При этом игрок может пытаться подкупить других соперников с тем, чтобы они проигрывали в обмен на внутриигровые или реальные деньги (иногда успешно, иногда — нет). Существенно затруднить такое поведение могут автоматический подбор соперников и обеспечение определенной степени анонимности игроков.

Если рейтинговая система содержит элементы с положительной суммой, такие как нижний порог рейтинга или бонусные очки за проведение игр определенного типа, то игроки, скорее всего, попытаются извлечь из них определенную выгоду. Чтобы этого не произошло, проследите за тем, чтобы рейтинговая система была системой с нулевой суммой. Конечно, при этом игроки будут пытаться сделать свой рейтинг максимально большим. В том случае, когда игра скрывает рейтинг MMR и отображает лишь ранг игроков, последние пытаются выявить читы и эксплойты, способные обеспечить им максимально высокий ранг. Например, если игра позволяет получить высокий ранг вне зависимости от рейтинга, игрок может специально добиваться максимального снижения рейтинга с тем, чтобы система подбора находила ему более слабых соперников.

Использование рейтингов для прогнозирования исхода игры

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

P = Y / (X + Y).

Обратите внимание на то, что вероятность победы соперника при этом составляет X / (X + Y), а сумма этих двух вероятностей, как и следовало ожидать, равна 1. Также обратите внимание на то, что происходит в крайних случаях. Если Y = 0, то игрок не теряет очки в случае поражения и можно предположить, что он будет постоянно проигрывать, не получая за это никакого наказания. Вероятность победы P при этом равна 0 вне зависимости от того, чему равен параметр X. Если же, наоборот, X = 0, то игрок не получает очков в случае победы, так как ожидается, что он будет постоянно выигрывать. Вероятность P при этом составляет Y / Y = 1 независимо от того, чему равен параметр Y.

Использование дополнительных показателей для прогнозирования исхода игры

Помимо рейтинга игроков, на исход игры может влиять и множество других факторов. Если рейтинговая система не будет принимать их в расчет, то ее рейтинги окажутся не совсем точными. Как уже упоминалось в этой главе, одним из таких факторов является удача, но есть и другие. Когда геймеру позволяется перед началом игры выбрать определенные игровые объекты: заранее составляемую колоду в коллекционной карточной игре, сборку персонажей в MMO-игре, персонажа в играх жанров MOBA, «файтинг» и «массовая драка», это обусловливает определенное неравенство с самого начала. В коллекционной карточной игре слабый игрок, использующий одну из лучших турнирных колод, легко может одержать победу над сильным, имеющим плохо составленную колоду. Сетевая игра уже может содержать хуки аналитики для сбора данных, применяемых для обоснования решений в отношении баланса, например о том, насколько вероятность победы зависит от каждого игрового объекта, персонажа или стратегии. Хотя большинство рейтинговых систем не принимает эти данные во внимание, теоретически их можно учитывать в формуле для расчета ожидаемого исхода игры при определении размера увеличения или уменьшения рейтинга.

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

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

В играх, исход которых — это не просто бинарное состояние победы/поражения, положение игроков относительно друг друга в конце игры может отражать их относительный уровень навыков. Так, в Magic: the Gathering каждый игрок изначально имеет 20 очков жизни, и победу с сохранением этих 20 очков можно считать более внушительной, чем выигрыш с сохранением лишь одного очка. Таким образом, рейтинговые системы можно использовать не только для выявления вероятного победителя, но и для распределения очков, в случае чего с помощью разницы в итоговом количестве очков можно более точно определять рейтинги.

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

Проверка системы

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

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

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

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

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

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

Системы ранжирования

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

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

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

Степень детализации

Ранги могут иметь как высокую, так и низкую степень детализации. Высокодетализированный ранг отражает точное относительное положение игрока в пределах базы игроков («Вы обладаете рангом № 3487 из 65 234 игроков»). Низкодетализированный ранг сообщает лишь о том, что игрок относится одному из нескольких крупных диапазонов (например, «бронза», «серебро», «золото», «алмаз» или «платина»).

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

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

Сообщество

Информация о ранге может предоставляться игрокам в виде глобального атрибута, соотносимого со всеми другими участниками игры по всему миру, или носить более локальный характер, будучи соотносимой лишь с некоторым подмножеством игроков. Например, геймер может видеть ранги лишь ближайших к нему игроков, занимающих 30 позиций непосредственно над ним и 30 позиций непосредственно под ним. Он также может видеть относительные ранги тех, кто входит в ту же гильдию, включен им в список друзей, играет на том же сервере или даже физически находится в том же городе. Игра может отображать и только один, и сразу несколько таких списков. Преимуществом использования нескольких списков ранжирования является то, что игрок может находиться ближе к первой позиции в одном из них, даже если в рамках всего мира может существовать лишь один игрок № 1. Недостаток же заключается в том, что несколько списков могут сбивать его с толку, если он не будет точно знать, какой из них отражает реальную или официальную информацию и должен учитываться в первую очередь.

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

Перманентность

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

Регулярный сброс рангов несет с собой определенные преимущества. В таком случае игроки осознают, что в каждом новом игровом сезоне (фиксированном периоде, в рамках которого происходит ранжирование) все они имеют равные шансы на получение высокого ранга. Это вызывает у них ощущение прогресса, а не застоя, возникающего при использовании бессрочного рейтинга, почти не изменяющегося с течением времени. Поскольку после каждого сброса игрокам снова приходится играть для восстановления прежнего ранга, это подталкивает их к регулярной игровой активности. А когда игрок чувствует, что дошел до своего предела, сброс позволяет ему предпринять еще одну попытку. Из-за этого игровые сезоны используются довольно часто, особенно в сетевых PvP-играх.

Субъективность

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

Прогрессия

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

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

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

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

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

Главное преимущество лестничных систем заключается в том, что, как предполагает их название, они вызывают у игроков ощущение постепенного прогресса, напоминающего восхождение по лестнице. Кроме того, как минимум в половине игр человек никак не рискует: когда соперник занимает более высокую позицию на лестнице, он либо поднимается вверх, либо остается на текущей позиции, но не скатывается вниз в случае поражения. Это вызывает у игроков ощущение безопасности. Недостатком лестничных систем является то, что самую верхнюю позицию может занимать только один игрок, в результате чего все остальные могут испытывать разочарование. Такой подход может показаться игрокам слишком рутинным, поскольку им приходится проводить игры не только для того, чтобы продвигаться вперед, но и просто для сохранения нынешней позиции. Хотя первая часть восхождения по лестнице дается сравнительно легко, продвижение после достижения средней точки становится затруднительным для большинства игроков.

Интересная система ранжирования, которую стоит рассмотреть в качестве практического примера, применена в игре Hearthstone. В ней игроки начинают продвижение с ранга 25. Каждый ранг имеет по несколько звезд (по две у первых нескольких рангов, и возрастает до пяти на ранг по мере прогресса игрока), и игрок получает одну звезду за каждую победу. После того как он набирает полный набор звезд для текущего ранга и получает еще одну звезду, ему присваивается следующий ранг (24, 23 и т.д., пока не дойдет до ранга 1).

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

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

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

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

Турниры и лиги

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

Круговая система

Самым простым и наиболее справедливым форматом турнира является круговая система, при которой каждый игрок по очереди играет со всеми другими. Итоговый ранг игроков определяется соотношением побед и поражений. В случае получения игроками одинакового соотношения побед и поражений можно использовать определенный метод устранения ничьих, провести между этими игроками игру на выбывание или присвоить им одинаковую итоговую позицию. Главным недостатком кругового формата являются большие затраты времени: при участии в турнире N игроков им нужно будет сыграть N – 1 игру, что делает этот подход подходящим лишь при очень небольшом количестве участников.

Выбывание после одного поражения

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

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

Рис. 14.1

Имена участников записываются на внешних ветвях турнирной сетки слева и справа. Заполненная турнирная сетка может выглядеть как на рис. 14.2.

Рис. 14.2

Исходное попарное распределение игроков, которое называют посевом, хотя оно не имеет никакого отношения к зернам генератора псевдослучайных чисел, сильно влияет на ожидаемый результат турнира. Например, игроки ранжируются на основе реального уровня навыков, и каждый из них имеет 1 % преимущества над соперником на каждый ранг. Если при этом в турнире будут участвовать 16 игроков, то в поединке между лучшим и худшим игроками с 65%-ной вероятностью победит первый и с 35%-ной — второй. На рис. 14.3 представлены два возможных варианта турнирного посева, где числами обозначены ранги игроков.

Рис. 14.3

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

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

Наряду с обеспечением справедливого посева организатор турнира должен определиться с тем, как будут разрешаться ничейные ситуации в тех играх, которые могут закончиться ничьей. Формат турнира с выбыванием подразумевает, что в каждом раунде из турнира будет выбывать один из каждых двух соперников, однако что произойдет, если его покинут оба соперника или не уйдет ни один из них? В таком случае геймеры могут продолжать играть друг с другом до тех пор, пока не определится победитель, однако часто это неудобно с практической точки зрения, поскольку каждый дополнительный матч может на неопределенный срок задерживать остальные матчи. Некоторые игры позволяют провести дополнительную игру в ускоренном режиме «внезапной смерти», не допускающем ничьих, кроме того, для устранения ничьей и выявления победителя можно использовать определенные внутриигровые показатели, такие как количество накопленных игроком ресурсов.

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

Выбывание после двух поражений

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

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

Швейцарская система

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

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

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

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

Комбинированная система

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

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

Подобным образом можно объединять и другие форматы турниров.

Лиги и сезоны

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

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

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

Разрешение случаев досрочного выхода из турнира

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

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

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

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

Метаигровые системы вознаграждений

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

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

Считая неправильной философию «плати, чтобы выиграть», игроки обычно ожидают, что игра будет предоставлять одинаковые возможности и платящим, и тем, кто этого не делает. При этом перед разработчиком игры встает вопрос: выполняя какие действия, игроки должны зарабатывать внутриигровую валюту? В общем случае ответ на него звучит так: вы должны выплачивать валюту за действия, выполнение которых, на ваш взгляд, достойно поощрения (обычно подра­зумеваются те, которые повышают ценность игры). Можно выделить три основные категории таких действий.

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

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

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

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

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

Вопросы для обсуждения

1. В чем разница между системой ранжирования и системой рейтингов?

2. Какие преимущества и недостатки имеет использование систем ранжирования по сравнению с системами рейтингов?

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

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

5. Исходя из каких соображений, игровая компания может сделать выбор в пользу отображения или скрытия от геймеров рейтинга подбора игроков (MMR)?

6. Какими причинами может быть вызвана инфляция рейтингов?

7. Какие относительные преимущества и недостатки имеет проведение турнира по круговой системе с выбыванием после одного поражения или по швейцарской системе?

8. Какие изменения можно внести в систему рейтингов для повышения мотивации к участию в игре?

9. Какие изменения можно внести в систему рейтингов для снижения мотивации к участию в игре?

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

Побочные квесты

Побочный квест 14.1. Турнир с выбыванием

Допустим, что в турнире с выбыванием после одного поражения участвуют восемь игроков с разным уровнем навыков. В частности, лучший участник турнира может победить второго участника с вероятностью 55 %, третьего — с вероятностью 60 % и так далее с приращением 5 %, вплоть до наихудшего участника, вероятность победы над которым составляет 85 %. Сходным образом, у каждого другого игрока вероятность победы над следующими за ним игроками составляет 55, 60 % и т.д.

Рассмотрите представленные ниже два варианта размещения игроков в турнирной сетке, где лучший игрок обозначен номером 1, следующий за ним — номером 2 и т.д. Рассчитайте вероятность победы в турнире для каждого игрока. Какой из вариантов турнирной сетки является более справедливым?

Рис. 14.4

Побочный квест 14.2. Рейтинговая система «Альфа»

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

Эта система действует следующим образом. Пусть D — разница в рейтинге между двумя игроками. Если D < 20, то победитель получает 10 очков, а проигравший теряет 10 очков. Если 20 ≤ D < 40, то победитель получает 9 очков, а проигравший теряет 9 очков. При каждом последующем увеличении разницы в рейтинге на 20 очков стоимость игры уменьшается на 1 очко, вплоть до минимальной стоимости, составляющей 1 очко. В общем, в каждой игре на кон ставится следующее количество очков: max (1, 10 – floor (D / 20)).

Реализует ли эта система свою задачу, заставляя игроков искать соперников с таким же рейтингом? Если нет, то почему?

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

Побочный квест 14.3. Система «Эло», учитывающая фактор удачи

В рейтинговой системе «Эло» модифицируйте формулу для расчета значения корректировки рейтинга таким образом, чтобы она подходила для игры, исход которой на 90 % зависит от игровых навыков и на 10 % — от удачи.

Побочный квест 14.4. «Смертельный бой» по швейцарской системе

Допустим, у вас есть многопользовательская игра с режимом «смертельный бой», где четыре игрока противостоят друг другу в режиме «каждый сам за себя». На протяжении всей игры игроки получают 2 очка за каждое убийство и теряют 1 очко за каждую смерть (после смерти они быстро возрождаются). Изначально у игроков 0 очков, и количество очков не может быть меньше 0. Когда любой игрок набирает 20 очков или больше, игра заканчивается и каждый получает рейтинг в соответствии с набранным количеством очков.

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

Задача-максимум. Дополнительно создайте правила для прямого выхода в следующий круг турнира в том случае, если количество участников составит только 13–15 игроков, и схему разрешения ситуации досрочного выхода из состязания одного или нескольких из них.

Основной квест Волшебника, часть 5. Рейтинги в игре «Гармония»

Продолжение. Часть 4 см. в главе 12.

Разработайте полноценную систему ранжирования и/или систему рейтингов для игры Harmony («Гармония»). Обосновывайте свой выбор по мере принятия тех или иных решений в ходе разработки. Если вам не хватает информации (например, вы не знаете, в какой степени исход игры определяется удачей), выразите эту информацию как переменную в формуле для расчета рейтинга, выполните предварительную оценку ее значения и подумайте о том, как его можно определить с помощью аналитики (см. главу 13).

Часть 6 см. в главе 15.


Если вы еще не поняли почему, подумайте о том, что произойдет, если Rсоп будет намного больше, чем Rигр. В таком случае возведение числа 10 в большую степень даст значительный результат и мы получим очень большой знаменатель, а деление 1 на большое число даст очень маленький результат. Чем больше будет Rсоп по сравнению с Rигр, тем меньше будет число E, приближаясь к 0, но никогда не достигая его. Если же, наоборот, Rигр будет намного больше, чем Rсоп, то возведение числа 10 в большую отрицательную степень даст очень маленький результат, при приближении которого к 0 мы будем делить 1 на (1 + почти ноль), и результат этого деления будет близок к единице.

Одна из наиболее распространенных схем сводится к тому, чтобы использовать коэффициент K = 32 для неустановившихся игроков и уменьшать его до K = 16 после проведения ими определенного количества рейтинговых игр. Использование более высокого коэффициента K для новых игроков позволяет довольно быстро поднять или опустить их рейтинг таким образом, чтобы он примерно соответствовал уровню их мастерства. В некоторых реализациях коэффициент K дополнительно уменьшается после достижения игроком определенного рейтинга, поскольку для высококлассных игроков нехарактерны резкие изменения в уровне мастерства и слишком высокий коэффициент K здесь будет обеспечивать слишком сильную изменчивость. В общем, здесь следует найти баланс: коэффициент K одновременно должен быть и не слишком низким, чтобы система могла быстро отражать изменения в уровне мастерства игроков, и не слишком высоким, чтобы рейтинг отражал в основном результаты последних игр. Общепринятого значения коэффициента K не существует — каждая реализация данной системы может использовать свое.

Поскольку точная формула для расчета рейтингов «Глико» довольно сложна, мы не будем ее анализировать. Однако эта система схожа с системой «Эло», и, в принципе, ее можно считать системой «Эло», у которой коэффициент K варьируется от пользователя к пользователю. Подроб­ное описание этой системы см. по адресу http://www.glicko.net/glicko.html.

В зависимости от игры усредненный рейтинг может рассчитываться вычислением среднего или средневзвешенного значения. Существует много способов приблизительной оценки общего уровня навыков команды на основе отдельных рейтингов MMR. Например, в игре, где самый сильный член команды играет доминирующую роль, а остальные — просто попутчики, в качестве среднего значения может выступать максимальное значение, в случае чего вес игрока с наибольшим рейтингом будет составлять 100 %, а вес остальных игроков — 0 %.

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

Строго говоря, если и X, и Y равны нулю, то вероятность победы P = 0 / 0, а результат деления нуля на ноль не определен. Однако обычно не бывает ситуаций, предполагающих одновременно и победу, и поражение игрока.

Как признаются представители компании Valve, мнение игроков о системе рейтингов MMR в игре DOTA 2 сильно коррелирует с тем, насколько высока вероятность их победы в данный момент. С этими сведениями можно ознакомиться по адресу http://blog.dota2.com/2013/12/matchmaking/.

Один из возможных способов справедливого разрешения ничейных ситуаций сводится к следу­ющему: при одинаковом результате у двух игроков в расчет принимаются результаты предыдущих встреч между ними. Если игроки A и B имеют равный общий результат предыдущих игр и в данном турнире A выиграл у B, то игрок A получает более высокий ранг. Но если в данном турнире игроки сыграли вничью или одинаковый результат предыдущих игр у трех или более игроков, придется прибегнуть еще к одному методу, например сравнить результаты встреч с обладателем наивысшего ранга, затем — с обладателем второго ранга и далее вниз по списку. Еще один способ сводится к тому, чтобы использовать для устранения ничьих рейтинги игроков, но в таком случае игроки с высоким рейтингом получают неустранимое преимущество, не зависящее от уровня их игры на турнире, что несправедливо.

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

Хотя ранжирование по соотношению побед и поражений — наиболее распространенный подход, строго говоря, в швейцарской системе оно может проводиться по общему количеству любых очков, набираемых игроком в ходе турнира. Часто игроки набирают просто 1 очко за победу, 0,5 очка за ничью и 0 очков за поражение, но если они могут получать различное количество очков в каждой игре (как, например, в го, бридже и скрабле), общее количество очков теоретически может определяться организатором турнира на основе количества очков, полученного в каждой игре, или иного показателя. В таком случае игрок, демонстрирующий хорошую игру в матче, может получать более значительное преимущество, а не просто +1 очко за победу.

В швейцарской системе можно использовать различные способы подбора соперников. При голландской системе каждому игроку находится соперник, набравший такое же количество очков, при этом среди игроков с одинаковым результатом игроку из верхней половины таблицы рангов подбирается соперник, занимающий соответствующую позицию в ее нижней половине. Например, если имеется шесть игроков с общим результатом 2–1–0 (две победы, одно поражение и ноль ничьих), то первый по рангу игрок должен сыграть с четвертым, второй — с пятым, а третий — с шестым. При использовании системы Монрада первый по рангу игрок играет со вторым, третий — с четвертым, пятый — с шестым и т.д. Существует много других систем подбора соперников. Какой бы способ подбора вы ни использовали, его можно дополнительно модифицировать таким образом, чтобы никто из игроков не играл с одним и тем же соперником дважды и не получал право прямого выхода в следующий раунд больше одного раза.

Назад: 13. Аналитика
Дальше: 15. Разработка и игровое тестирование