Перейти к содержимому


Давайте научим балансировщик делить на 2

балансировщик

  • Закрытая тема Тема закрыта
Сообщений в теме: 115

alexius #1 Отправлено 28 окт 2015 - 07:22

    Майор

  • Игроки
  • 43274 боя
  • 8 210
  • Регистрация:
    10.08.2012

*
Популярное сообщение!

Уже не один год (с того момента, как начала действовать нынешняя версия балансировщика) существует одна очень заметная проблема. Балансировщик не умеет делить на 2. 
По идее, он умеет делать равные команды. Чуть ли не зеркально равные, вплоть до того, что поровну всех уровней, типов техники на каждом уровне, и даже брелковзводы уравновешиваются брелковзводами. НО! очень часто возникают ситуации, когда в одной команде "топов" (танков высшего для боя уровня) на 2 (3, 4, вплоть до 6 встречал) больше, чем в другой. При этом когда, например, 2 десятки и 2 десятые арты против 4 десяток - это еще более-менее. Но когда, например, 1 десятка и 2 десятые арты против 3 десяток и 2 десятых арт - это уже явный перекос. При том, что, вообще-то, 4 танка 10 уровня очень даже хорошо можно поделить на 2 команды. 
Еще чаще встречаются такие перекосы, когда, например, в одной команде 4 десятки и 11 девяток, в другой 5 десяток, 8 девяток и 2 восьмерки.
Так же часто получаюстя ситуации, когда вроде бы почти поровну, но, например, в одной команде 4 восьмерки, 9 семерок и 2 шестерки, а в другой 4 восьмерки и 11 семерок. При том, что танки 6 уровня из первой команды даже не во взводе, но попали в одну команду.

Почему так происходит? Все дело в том, как сейчас балансировщик набирает команды.

Вкратце: есть очередь, из нее он берет игрока, ставит в одну команду, берет еще, ставит в команду, берет еще, ставит, и так 30 раз. Соблюдая при этом примерное равенство между балансным весом команды. 
Казалось бы, все красиво, но при такой системе возникают описанные выше ситуации. Все дело в том, что танки близких уровней имеют достаточно равный балансный вес. А потому для балансировщика 4 танка 10 уровня и 11 танков девятого против 6 танков десятого и 9 девятого - нормальная ситуация, ведь балансный вес команд различается на допустимое значение.


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


Что я предлагаю: немного изменить последовательность, в которой действует балансировщик. Ничего радикального (лишние 10 строк кода). Сделать так:
Пусть по такому же принципу набирает игроков для боя. Но не ставит их сразу по командам, а просто собирает в кучу. Можно даже ничего не менять, пусть наберет бой 15 на 15 по тому алгоритму, который есть сейчас, а затем всех соберет в кучу.
После этого начнет эти 30 игроков расставлять по командам (назовем их команда А и команда В)

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

Например, взвод 3 топовых (по уровню) танков в команду А, второй взвод 2 топовых танков в команду В. Еще один взвод 2 топовых танков в команду В. Еще один взвод из 3 танков, которые уже ниже уровнем, в команду А. Следующий взвод из 3 танков этого уровня в команду В, следующий взвод из 2 танков этого уровня в А, и так далее.

 

После того, как взводы разделены, начать расставлять оставшиеся танки.
Допустим, после расстановки взводов получилась следующая ситуация:

 

взвод 1 10 уровень 10 уровень взвод 2
взвод 1 10 уровень 10 уровень взвод 2
взвод 3 10 уровень 10 уровень взвод 4
взвод 3 10 уровень 10 уровень взвод 4
    10 уровень взвод 5
       
       
взвод 1 9 уровень 9 уровень взвод 5
взвод 3 9 уровень 9 уровень взвод 6
взвод 7 9 уровень 9 уровень взвод 6
взвод 7 9 уровень 9 уровень взвод 6
       
    8 уровень взвод 8
взвод 9 8 уровень 8 уровень взвод 8
взвод 9 8 уровень 8 уровень взвод 8

(взводы пронумерованы в том порядке, в котором они расставлялись)

 

и остались еще 8 игроков: 3 танка 10 , 4 танка 9 и 1 танк 8 уровня
Их расставлять по оставшимся в составах команд местам следующим образом: танк 10 уровня в команду, где меньше десяток, танк 10 уровня в другую, танк 10-го в первую, танк 9 уровня в команду, где меньше сумма уровней десяток и девяток, танк 9 уровня в команду, где меньше сумма уровней десяток и девяток, танк 9 уровня в другую команду, танк 9 уровня в первую команду, танк 8 уровня в оставшееся место

После заполнения получим следующий состав:

взвод 1 10 уровень 10 уровень взвод 2
взвод 1 10 уровень 10 уровень взвод 2
взвод 3 10 уровень 10 уровень взвод 4
взвод 3 10 уровень 10 уровень взвод 4
игрок 1 10 уровень 10 уровень взвод 5
игрок 3 10 уровень 10 уровень игрок 2
игрок 4 9 уровень 9 уровень игрок 5
взвод 1 9 уровень 9 уровень взвод 5
взвод 3 9 уровень 9 уровень взвод 6
взвод 7 9 уровень 9 уровень взвод 6
взвод 7 9 уровень 9 уровень взвод 6
игрок 6 9 уровень 9 уровень игрок 7
игрок 8 8 уровень 8 уровень взвод 8
взвод 9 8 уровень 8 уровень взвод 8
взвод 9 8 уровень 8 уровень взвод 8

(игроки пронумерованы в том порядке, в котором они расставлялись)

В данном примере получились абсолютно равные команды

Возникает ряд вопросов: где разделение ЛТ и САУ, которых балансировщик расставляет отдельно, и где проверка на соответствие балансных весов команд

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

 

Касательно ЛТ и САУ:

Усложним описанный выше алгоритм.

Балансировщик набрал 30 игроков по уже существующему алгоритму (пусть даже набрав бой 15 на 15 и смешав игроков)
Заставим балансировщик в начале посчитать, какое число ЛТ каждого уровня должно быть в команде А, и какое число в команде В. Затем балансировщик посчитает, какое число САУ каждого уровня должно быть в команде А, и какое в команде В.

 

После чего балансировщик начинает распределять игроков по 2 командам, 15 мест в команде.

 

Сначала САУ, которые в взводе, по тем же правилам, которые описаны выше. После чего оставшиеся САУ по тем же правилам. При этом ЛТ, играющие во взводе с САУ, занимают отведенное им место для ЛТ, а танки, играющие во взводе с САУ, занимают место танков.

Затем оставшиеся ЛТ во взводе, по тем же правилам, с учетом уже расставленных ЛТ. Затем оставшиеся ЛТ по тем же правилам. При этом  танки, играющие во взводе с ЛТ, занимают место танков.
 

Далее оставшиеся взводы танков расставляются по тем же правилам с учетом уже расставленных танков, которые во взводе с ЛТ и/или САУ
Далее оставшиеся танки расставляются в оставшиеся места по тем же правилам

Пример

Spoiler

 

 

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

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

 

Очень хотелось бы увидеть реализацию такого алгоритма в игре, а то уже столько лет балансировщик не умеет делить на 2 даже четные числа.

 

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


Сообщение отредактировал Dlvo: 28 окт 2015 - 17:34


Casper48L #2 Отправлено 28 окт 2015 - 12:55

    Полковник

  • Игроки
  • 34890 боев
  • 20 455
  • Регистрация:
    27.01.2012
ТС отстань от балансировщика

 

                                                                                                                                                                                                                                    

 


IgorBurd #3 Отправлено 28 окт 2015 - 17:25

    Старший лейтенант

  • Игроки
  • 34050 боев
  • 3 493
  • Регистрация:
    29.09.2012

Просмотр сообщенияDlvo (28 Окт 2015 - 09:22) писал:

Spoiler

 

 

Довольно сложно описано, мало кто поймет.

Но я за равные команды, поэтому за такой вариант.

 

Но может можно упростить его работу каким то образом, разделив на несколько этапов?

К примеру - он набирает чётное количество игроков с одинаковым балансным весом(добавить пару исключений для взводов, ЛТ, льготов  т.п.) под определенный уровень боёв. Далее действует второй этап, это распределение по двум командам из этих 30ти игроков, тут возможно распределение с учетом "Личного рейтинга" т.е. баланс по скиллу, так и без него.

 


Сообщение отредактировал IgorBurd: 28 окт 2015 - 17:26

Современные танки в world of tanks!

Современные танки в WOT


irbis_rok #4 Отправлено 28 окт 2015 - 17:52

    Лейтенант

  • Игроки
  • 33334 боя
  • 2 353
  • Регистрация:
    09.01.2012

Просмотр сообщенияDlvo (28 Окт 2015 - 04:22) писал:

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

...в предложениях разработчикам не пробовал закинуть?

ЗЫ давненько я этаких "простыней" не читывал)



"Кто умеет стоять тихо, тот вне опасности.И может пребывать долго." Лао Цзы

ru_sergei_net #5 Отправлено 02 ноя 2015 - 15:56

    Старшина

  • Игроки
  • 20363 боя
  • 517
  • Регистрация:
    31.03.2014
Я за равенство команд

NET93 #6 Отправлено 02 ноя 2015 - 18:40

    Старшина

  • Игроки
  • 67502 боя
  • 760
  • Регистрация:
    14.08.2011

при таком  количестве разной техники сбалансировать 2 симметричные команды?  это уже фантастика в бой будет 10 минут система  балансировать 

захожу иногда в игру и не могу себя заставить нажать кнопку в бой!!! нет выбора карт и не равные топ танки  в команде   % скил игроков вообще  не учитываю:facepalm: вот и выходит одним железа  другим кактусов!!! и как играть? а я уже и не играю подгорело!!!  сделайте игру  интересной захватывающей а не источником негативных эмоций !!!!



alexius #7 Отправлено 02 ноя 2015 - 18:45

    Майор

  • Игроки
  • 43274 боя
  • 8 210
  • Регистрация:
    10.08.2012

Просмотр сообщенияNET93 (02 Ноя 2015 - 23:40) писал:

при таком  количестве разной техники сбалансировать 2 симметричные команды?  это уже фантастика в бой будет 10 минут система  балансировать 

захожу иногда в игру и не могу себя заставить нажать кнопку в бой!!! нет выбора карт и не равные топ танки  в команде   % скил игроков вообще  не учитываю:facepalm: вот и выходит одним железа  другим кактусов!!! и как играть? а я уже и не играю подгорело!!!  сделайте игру  интересной захватывающей а не источником негативных эмоций !!!!

 

Я ни слова не написал про "2 симметричные команды"
Вопрос не в том, как выбирать 30 танков из очереди, а в том, как их после выборки перераспределить по командам

WorstFriend #8 Отправлено 03 ноя 2015 - 03:14

    Сержант

  • Игроки
  • 27730 боев
  • 102
  • [LOVER] LOVER
  • Регистрация:
    30.12.2013
Мне кажется, что все идеи "уравнять" составы посягают на то, чтобы уменьшить в игре количество превозмогания. Не надо так!

Rolling_man #9 Отправлено 03 ноя 2015 - 06:28

    Ефрейтор

  • Игроки
  • 19292 боя
  • 26
  • Регистрация:
    27.01.2012

Частенько вижу ситуацию - разница команд в 3 танка топового уровня. Причем эти 3 "лишних" танка - не во взводе.

Раскидать камушки в 2 корзины - это задача по программированию 1 курса какой-нибудь шараги. 

Таблица из N количества элементов (очередь). У каждого элемента - 2 реквизита (уровень и вид(арта/лт/все остальное)).

Из этой таблицы необходимо раскидать по 15 элементов в 2 команды. 

Очередь постоянно обновляется - так пусть поиск идет с "конца", т.е. старейших элементов.

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

Неужели сложно? 

 


Сообщение отредактировал Rolling_man: 03 ноя 2015 - 06:28


Zie7oora #10 Отправлено 03 ноя 2015 - 09:09

    Сержант

  • Игроки
  • 29450 боев
  • 198
  • Регистрация:
    16.04.2015
Равный балансный вес, насколько я понимаю, означает что, к примеру, ПТ 9 лвл и ТТ 10 лвл одинаково полезны для команды. Если это не так, то надо думать над понятием "балансный вес". Если это так, то не надо заморачиваться на уровни.

iHcTpukTop #11 Отправлено 03 ноя 2015 - 09:10

    Лейтенант

  • Игроки
  • 19127 боев
  • 1 768
  • Регистрация:
    16.10.2013
Плюсонул,потому,что сам не раз писал про баланс...и если это предложение понравится разработчикам,то нужно переименовать,не балансировщик,а сортировщик!:)

Rolling_man #12 Отправлено 03 ноя 2015 - 12:12

    Ефрейтор

  • Игроки
  • 19292 боя
  • 26
  • Регистрация:
    27.01.2012

Просмотр сообщенияZie7oora (03 Ноя 2015 - 06:09) писал:

Равный балансный вес, насколько я понимаю, означает что, к примеру, ПТ 9 лвл и ТТ 10 лвл одинаково полезны для команды.

Следуя вашей логике, ПТ-10 полезнее ТТ-10?

 



Newler #13 Отправлено 03 ноя 2015 - 13:46

    Старший лейтенант

  • Игроки
  • 21880 боев
  • 3 661
  • [MOP03] MOP03
  • Регистрация:
    21.12.2012
Мысль светлая, поддерживаю :honoring:

AHГAP

Zie7oora #14 Отправлено 03 ноя 2015 - 15:13

    Сержант

  • Игроки
  • 29450 боев
  • 198
  • Регистрация:
    16.04.2015

Просмотр сообщенияRolling_man (03 Ноя 2015 - 12:12) писал:

Следуя вашей логике, ПТ-10 полезнее ТТ-10?

 

 

Это пример, мне конкретные цифры не докладывали. Может быть какая-нибудь имбанутая ПТ полезней унылого танка, может нет.

djromich #15 Отправлено 03 ноя 2015 - 22:33

    Старшина

  • Игроки
  • 70330 боев
  • 651
  • [ASBP] ASBP
  • Регистрация:
    27.01.2011
в игре полнейший дисбаланс 

alexius #16 Отправлено 04 ноя 2015 - 08:34

    Майор

  • Игроки
  • 43274 боя
  • 8 210
  • Регистрация:
    10.08.2012

Просмотр сообщенияdjromich (04 Ноя 2015 - 03:33) писал:

в игре полнейший дисбаланс 

 

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

__MELIOR__ #17 Отправлено 08 ноя 2015 - 18:35

    Старший лейтенант

  • Игроки
  • 16622 боя
  • 2 675
  • [KRAK] KRAK
  • Регистрация:
    13.02.2013

Просмотр сообщенияDlvo (02 Ноя 2015 - 18:45) писал:

 

Я ни слова не написал про "2 симметричные команды"
Вопрос не в том, как выбирать 30 танков из очереди, а в том, как их после выборки перераспределить по командам

 

а разве они не будут почти симметричные?
Мой план стать нагибатором:  имба, куст на базе, фулголда, автоприцел. Должно сработать.

EgorCo #18 Отправлено 08 ноя 2015 - 18:50

    Лейтенант

  • Игроки
  • 54811 боев
  • 1 829
  • Регистрация:
    14.07.2012

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

Например по 5 десяток в каждой команде, не важно какие это будут десятки, ТТ, СТ или ПТ.

А совсем не давно стал замечать, что команды обделяют артой, в одной 2 арты, в другой 3,

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


Не жадничай, ставь плюс


Paca93 #19 Отправлено 08 ноя 2015 - 23:26

    Старший сержант

  • Игроки
  • 58944 боя
  • 308
  • Регистрация:
    16.12.2012

Поддерживаю!

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

Перекосы можно понять и простить ©, списав на то,  что танки в очереди (которую мы не видим) сильно разные, но когда вот они одинаковые в наличии - выглядит странно.



blindsnake #20 Отправлено 09 ноя 2015 - 00:10

    Сержант

  • Бета-тестеры
  • 24737 боев
  • 120
  • [_TWD] _TWD
  • Регистрация:
    31.01.2010
Поддерживаю ТС.
Мне кажется, что чего-то о балансировщике мы не знаем. Иначе, как получается, что при более-менее равных составах по уровням,
одна команда сплошь желто-зелёная,
а вторая красно-оранжевая с одним фиолетом или синим в середине или низу списка?
10 миллионов леммингов не могут ошибаться.

 





Читать еще на тему: балансировщик

Количество пользователей, просматривающих этот форум: 1

0 пользователей, 0 гостей, 0 анонимных