Правила форума


Для размещения сообщений в этом форуме нужно заполнить WoW профиль и проверить персонажа. Более детально тут.

История одной “нерешаемой” проблемы и ее решение  
Автор Сообщение

0
Сообщение История одной “нерешаемой” проблемы и ее решение
Внимение! Имеющих аллергию на стену текста просим срочно покинуть сие опасное место!


В одном из топиков раздела достаточно случайно разговор зашел о проблеме дисбаланса количества игроков на БГ. В ответ на мой упрек близзам, что 3 года не могут решить простейшую проблему, меня попросили предложить ее решение. Понимая, что объяснение потребует большого количества текста, а так же желая просветить побольше народу, я делаю отдельную тему.

Итак, с чего все начиналось, история и суть проблемы. Она родилась в тот же день, как близы выпустили в свет батлграунды, тогда их было всего два, WSG и AV. Никто бы никогда так и не узнал, что такая проблема существует, если бы разработчики сразу сделали все как следует. Но что-то у них не срослось, и перед нами предстала…

Версия решения через жопу номер один. Работало оно следующим образом. Ставиться в очередь можно было только на один батлграунд (и только в определенном месте мира, хотя это и не так важно). Как только у каждой фракции в очереди на БГ набиралось определенное минимальное количество игроков (для WSG – 3, для AV – 10) запускался батлгрунд и туда приглашалось столько народу, чтобы заполнить все свободные места. При том не имело значения, есть ли у противоположной фракции в очереди достаточное количество. Последнему дураку понятно, что если при такой системе на одной стороне стоит в очереди 30 игроков, а на другой 3, то в БГ будет приглашено 10 против 3.

Проблема усугублялась тем, что не все стоящие в очереди действительно входили в игру (кто-то засыпал в ожидании, у кого то оплата кончалась, а кто то и просто физически не доживал), так что элементарно могло запускаться БГ 10 против 0. Даже такая простейшая вещь, как оценка возможностей противоположной фракции наполнить игру, сделана не была. Прошло примерно пол года, форумы ныли про длинные очереди и дисбаланс сторон на БГ и близы родили…

Версию решения через жопу номер два. Собственно это было усовершенствование первой версии и заключалось оно в том, что в момент запуска БГ близзы таки сделали проверку длины очереди каждой из сторон и приглашали на игру только ограниченное количество. После запуска БГ (буквально каждые 45 секунд) близы проверяли, а нет ли кого-нибудь там еще в очереди, и если кто-то был, то они снова приглашали одинаковое количество. Но как вы, конечно, понимаете, без жопы тут никак обойтись не могло, и заключалась она в том, что система приглашения игроков на БГ абсолютно игнорировала текущее количество уже играющих. То есть в случае, если игроки одной из команд не входили в игру или из нее выходили, то система не желала это видеть и как только в очереди появлялась еще пара игроков, она звала обоих. Учитывая психологию людей, которые не хотели играть в меньшинстве, и отсутствие на тот момент дебафа дезертира, сторона, которая стартовала в меньшинстве, просто выходила из БГ и вставала в очередь снова в надежде на более справедливую игру. И система звала их вновь… вместе с еще таким же количеством противоположной стороны. Как следствие игры 10 на 3 совершенно никуда не исчезли и версия номер два оказалась ровно таким же фейлом как и первая.

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

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

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

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

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

Версия решения через жопу номер 5. О решении было объявлено аж в патчноутах. Возрадуйтесь, мол, теперь БГ будут запускаться, только когда они заполняются полностью. Дураки тут же поверили, что их осчастливили навеки. Они как манны небесной ждали патча… который вообще ничего не изменил. И только отдельные умные личности поняли, что под коварными патчноутами подразумевалась простая и ни на что не влияющая вещь. Вместо того, чтобы запускать WSG, когда длина очереди достигла 3, они теперь ждут пока очередь составит 10 человек, и после этого запускают. Проблема нарисованных игроков вкупе со всеми проблемами первых версий никуда не делась и не было даже никакой попытки ее решить. Близы просто увеличили одну числовую константу, которая и так ни на что не влияла. В общем, над этим даже смеяться не получается, слезы наворачиваются смотреть на их потуги.

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

Еще раз сформулируем главные причины, из-за которой вообще происходит создание несбалансированных игр:
1. Разное количество желающих играть от каждой фракции, при том соотношение меняется в зависимости от БГ
2. Далеко не все входят в игру получив приглашение
3. Кое-кто выходит из игры в середине.

Теперь система, которая решает эти проблемы. Во первых, сервер постоянно ведет статистику по каждой БГ на тему какой именно процент игроков из получивших приглашение реально входит в игру. Учитывая этот процент, сервер вычисляет размер очереди, необходимый для заполнения нужного кол-ва слотов. Дальше сервер создает игру ограниченную не длиной очереди, а длиной очереди с учетом процента входящих. То есть если в очереди 10, а вероятность 50%, то сервер должен планировать старт игры 5 на 5 и не звать игроков сверх этого лимита пока у фракции с пустой очередью не появятся новые игроки.
Теперь, допустим, у нас есть некоторое количество в игре, пусть пока равное. Следующий шаг, сервер может постараться увеличить количество игроков на некий X, где X зависит от величины БГ, на WSG это может быть 1-2 человека, на AV 4-5. Если в очереди обоих сторон есть такое количество, то сервер шлет им приглашения. Если нет, никому приглашений не приходит. Сервер ни в коем случае не должен пытаться призвать у более активной стороны количество игроков, которому нет необходимой длины очереди соперников, при том с учетом процента реального входа в игру.

Теперь, допустим, у нас со старта БГ не сбалансировано, вошло, например, 2 против 5. Сервер старается заполнить только меньшую сторону и большая сторона не получает приглашений пока меньшая не догонит (как это не смешно, но такай простой вещи сейчас у близзов нет, приглашения рассылаются не зависимо от текущего баланса на БГ, хоть там 5 против 1, все равно команда с 5 будет увеличиваться).

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

PS: Кто не понял, я не виноват. :pardon


24 окт 2009, 18:47
Профиль

0
Сообщение Re: История одной “нерешаемой” проблемы и ее решение
Эйни, я думал пойдет речь о Батлгруппах, как "математически" уровнять количество орды и альянса, а то что ты написал, можно даже и не читать, тысяча и 1 способ решить проблему дисбаланса на батлграундах. Нынешнее решение близзов, от части это решило, я дисбаланс сейчас вижу очень редко.


24 окт 2009, 18:50
Профиль

0
Сообщение Re: История одной “нерешаемой” проблемы и ее решение
Чет шрифт убогий :D


24 окт 2009, 18:52
Профиль

0
Сообщение Re: История одной “нерешаемой” проблемы и ее решение
Я просто хотел показать, какие там дебилы в разработчиках сидят на одном простом примере. Примеров, разумеется, можно найти море.


24 окт 2009, 19:02
Профиль

0
Сообщение Re: История одной “нерешаемой” проблемы и ее решение
ниасилил


24 окт 2009, 19:03
Профиль

Сообщение Re: История одной “нерешаемой” проблемы и ее решение
Эйни писал(а):

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

Разумные люди и так это понимают, то, что ты написал - вполне очевидно и просто.


24 окт 2009, 19:04
Профиль

0
Сообщение Re: История одной “нерешаемой” проблемы и ее решение
Эйни писал(а):

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

расскажи, как уровнять количество аленей и орды =)


24 окт 2009, 19:10
Профиль

0
Сообщение Re: История одной “нерешаемой” проблемы и ее решение
Разве "версия решения через жопу номер 3" была введена раньше "версии решения через жопу номер 4"? Если я не ошибаюсь, сначала сделали возможность ставиться на несколько БГ, а только потом кроссерверные ввели.


24 окт 2009, 19:11
Профиль

Сообщение Re: История одной “нерешаемой” проблемы и ее решение
Dord писал(а):

расскажи, как уровнять количество аленей и орды =)

Не вводить сервис рерола из одной фракции в другую :O


24 окт 2009, 19:13
Профиль

0
Сообщение Re: История одной “нерешаемой” проблемы и ее решение
Может быть, я не помню уже. :pardon


24 окт 2009, 19:16
Профиль

0
Сообщение Re: История одной “нерешаемой” проблемы и ее решение
Эйни писал(а):

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

сделай лучше :blu


24 окт 2009, 19:24
Профиль

0
Сообщение Re: История одной “нерешаемой” проблемы и ее решение
Dord писал(а):

Эйни, я думал пойдет речь о Батлгруппах, как "математически" уровнять количество орды и альянса, а то что ты написал, можно даже и не читать, тысяча и 1 способ решить проблему дисбаланса на батлграундах. Нынешнее решение близзов, от части это решило, я дисбаланс сейчас вижу очень редко.

"математически" это довольно просто сделать
представь себе модель сервера с онлайном 0 на 0, и при заселении приводим подсчет где каждого созданного/трансфернутого/рерольнутого персонажа за альянс записываем в переменную А, за орду в переменную Б и проверяем, если разница между А и Б больше на, например 30% то автоматически запрещаем все возможности пополнения числености А или Б, пока разница не уменьшится до 29% и все, задачка для 8 класника :), но это в теории, на практике мы натнемся на многие другие факторы, одним из которых например будет являтся количество неактивных персонажей на сервере, где "мертвецы" будут мешать притоку "свежей крови" поетому нужно создавать буферы в А и Б именно для "мертвецов", а твинки, а фармперсонажи и.т.д так же например надо учитывать умышленное увеличение сторон самими игроками путем создания кучи перволевельных чаров с разных акков для того что бы трансфернутся за интересующую сторону, поетому технически это довольно сложный процесс и не выгодный, так как некислую копеечку несут рерольщики-трансферщики.


24 окт 2009, 19:37
Профиль

0
Сообщение Re: История одной “нерешаемой” проблемы и ее решение
А что если вводить бесплатный реролл в альянс там где его не хватает? И наоборот.


24 окт 2009, 19:45
Профиль

0
Сообщение Re: История одной “нерешаемой” проблемы и ее решение
Эйни писал(а):

Внимение! Имеющих аллергию на стену текста просим срочно покинуть сие опасное место!
.............................
PS: Кто не понял, я не виноват. :pardon


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

Вопросы:
1)
Эйни писал(а):

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


С чего ты взял, что сервер ведет такую статистику? И с чего ты взял, что цифра будет постоянной и справедливой хотя бы в течении 1го дня для определенного сервера?

Имхо, решение проблемы "справедливовго" старта 1й сессии БГ не очевидна

2)
Эйни писал(а):

Теперь, допустим, у нас есть некоторое количество в игре, пусть пока равное. Следующий шаг, сервер может постараться увеличить количество игроков на некий X, где X зависит от величины БГ, на WSG это может быть 1-2 человека, на AV 4-5. Если в очереди обоих сторон есть такое количество, то сервер шлет им приглашения. Если нет, никому приглашений не приходит. Сервер ни в коем случае не должен пытаться призвать у более активной стороны количество игроков, которому нет необходимой длины очереди соперников, при том с учетом процента реального входа в игру.


Ок. Допустим зашло 7-7 на Арати, начинают играть, и сервер по твоей логике начинает кидать инвайты. Какая вероятность по твоему что хотя бы 50% игры пройдут в режиме 15-15?

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


Ну и пример с головы... представь игра 7-7. 1на сторна быстров захватили 3 из 4х точек и пока сервер там пытается разрулить ситуацию по твоей системе, 2-3 человека выходят на нервах, а сервак уже кинул инвайты по 2 для каждой стороны. Там зашло 2 игрока, там 1, у тех уже +1, тот что зашел видит что дело плохо, плюет, выходит. Такая канетель будет продолжатся почти до конца матча. Для большинства игроков со стороны проблема не будет решена. И при этом игра почти никогда не будет 15-15 почти до конца игры.

И последнее. Любое алгоритмическое решение задач, требует заранее известные данные, что в твоем примере почти не реально. Статистика поведения игроков это плохие данные для переменной, если ты не создаеш такую систему, которая делает саму статистику более точной (я имею ввиду стимул и штрафы). Так что сначала надо управлять поведением игроков ЛУЧШЕ, а потом придумывать такие формулы.

...так что сори, не убедил.


24 окт 2009, 19:46
Профиль

0
Сообщение Re: История одной “нерешаемой” проблемы и ее решение
согласен с [dwarf] [паладин] адекватные люди это и так понимают


24 окт 2009, 19:50
Профиль

0
Сообщение Re: История одной “нерешаемой” проблемы и ее решение
Dord писал(а):

расскажи, как уровнять количество аленей и орды =)

Либеральными методами это невозможно. Только диктатура и массовые расстрелы :) К примеру динамическая оплата подписки - играешь ты за фракцию, в которой слишком много народа - плати на 30% больше. Играешь на сервере, где постоянные очереди - плати еще 30% на больше. Ну и добавить бесплатные межсерверные и межфракционные трансферы туда, куда нет очередей с кд 1 месяц.


24 окт 2009, 20:29
Профиль

0
Сообщение Re: История одной “нерешаемой” проблемы и ее решение
Или убрать нахер все расиалы, тогда 50 на 50 обеспечено =)


24 окт 2009, 20:32
Профиль

0
Сообщение Re: История одной “нерешаемой” проблемы и ее решение
gnm писал(а):

Dord писал(а):
расскажи, как уровнять количество аленей и орды =)

Либеральными методами это невозможно. Только диктатура и массовые расстрелы :) К примеру динамическая оплата подписки - играешь ты за фракцию, в которой слишком много народа - плати на 30% больше. Играешь на сервере, где постоянные очереди - плати еще 30% на больше. Ну и добавить бесплатные межсерверные и межфракционные трансферы туда, куда нет очередей с кд 1 месяц.


Так делать нельзя. От такого шага близзард потеряет много подписчиков.


24 окт 2009, 20:37
Профиль

0
Сообщение Re: История одной “нерешаемой” проблемы и ее решение
Jazz писал(а):

Так делать нельзя. От такого шага близзард потеряет много подписчиков.

Да, нельзя. Диктатура и массовые расстрелы обычно расстраивают людей :)


24 окт 2009, 20:40
Профиль

0
Сообщение Re: История одной “нерешаемой” проблемы и ее решение
gnm писал(а):

Jazz писал(а):
Так делать нельзя. От такого шага близзард потеряет много подписчиков.

Да, нельзя. Диктатура и массовые расстрелы обычно расстраивают людей :)


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


24 окт 2009, 20:51
Профиль
Начать новую тему Ответить на тему


Перейти:  

На сайте использованы материалы, принадлежащие Blizzard Entertainment. Копирование материалов возможно только c разрешения портала. В противном случае это будет называться уже другим словом.
Рейтинг@Mail.ru