Jump to content
Korean Random
shizzard

Сервис подбора взвода: алгоритмы и идеи

  

44 members have voted

You do not have permission to vote in this poll, or see the poll results. Please sign in or register to vote in this poll.

Recommended Posts

Приветствую всех посетителей этого форума.

Эта тема является логическим продолжением темы "Распределение игроков согласно рейтинга эффективности", которую можно найти в разделе разработки xvm.

'Ссылка на тему, кому интересно'

 

Для тех, кому лень читать простынку по ссылке, объясню суть здесь.

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

 

Итак, для начала, форма реализации сервиса. Это будет вебсайт с авторизацией с помощью OpenID Варгейминга (то, что сейчас реализовано на Wotreplays). Сервис будет писаться на Erlang, с каким-нибудь реляционным хранилищем в бэкенде для хранения данных игроков. Какое конкретно хранилище будет использоваться - не так уж важно, я склоняюсь к старому-доброму MySQL (MariaDB, если кому-нибудь интересно). Вебморда, конечно, на JavaScript.

 

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

  • С определенным интервалом сервера Варгейминга будут опрашиваться на предмет получения свежей статистики игроков, обсчитываться (рейтинги, etc) и записываться в базу. Все игроки будут поделены на равные группы (групп я сейчас предполагаю около 100), с градацией по рейтингу. Какой именно рейтинг использовать - пока вопрос открытый.
  • При запросе на получение списка потенциальных совзводных от игрока Х в расчете будут принимать участие только игроки его группы (ну или ±1, в зависимости от адекватности поиска в одной группе). Таким образом, первоочередной фильтр будет работать на общем рейтинге игроков для того, чтобы подобрать игроков, примерно подходящих по скиллу.
  • Следующий эта фильтрации - выборка "любимой" техники игрока, в два этапа. Первая группа "любимой" техники - самая катаемая. Выбирается самая часто катаемая техника игрока (например, 90-й перцентиль или просто топ-10). Вторая группа - техника, на которой игрок показывает лучшие результаты с фильтром по количеству боев не меньше N. Конечно, вторую группу техники можно будет получить, если Варгейминг починит выдачу статистики per-vehicle. 
  • После получения списка техники мы начинаем отфильтровывать людей с похожими параметрами по выбранной технике. То есть сравниваем списки самой катаемой техники и сравниваем рейтинги на самой результативной технике. Таким образом, как мне кажется, можно будет добиться получения списка игроков со схожими вкусами.
  • Теперь самый шик, который будет возможен, если Варгейминг серьезно настроен и решится выдать в общий доступ информацию об онлайне игрока. Мы можем вычислить прайм-тайм каждого из игроков по дням недели (или же будни/выходные; вопрос тестирования алгоритма вычисления прайм-тайма). После этого мы сможем отфильтровать игроков, которые играют не в одно время, чтобы подобрать взвод, которому действительно удобно играть вместе.

 

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

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

Edited by shizzard
  • Upvote 4

Share this post


Link to post

Short link
Share on other sites
Следующий эта фильтрации - выборка "любимой" техники игрока, в два этапа. Первая группа "любимой" техники - самая катаемая. Выбирается самая часто катаемая техника игрока (например, 90-й перцентиль или просто топ-10).

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

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

 

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

Edited by seriych

Share this post


Link to post

Short link
Share on other sites

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

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

 

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

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

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

Share this post


Link to post

Short link
Share on other sites

Как вижу это я.

Открываю я значит окошко, в котором я вижу список игроков с кпд "my_eff +- 50".

Так как я хочу качать Объект 704, я подбираю игроков, у которых указан танк\перечень танков\уровень танков на котором он желает ездить.

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

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

Такая возможность, грамотно продуманная конечно, верх совершенства будет.

Share this post


Link to post

Short link
Share on other sites

Немного дополню вышеотписавшихся.
 
Практически всегда, если выполняются два условия:

  • У человека много боёв на определенной технике;
  • Он недавно на ней катал

- можно сделать вывод, что это его любимая техника, за исключением одного "но" - премиумные танки. Думаю, большое количество игроков катают их из необходимости, а не для фана/удовольствия (особенно если процент побед не выше 50).
 
Чтобы было понятно, приведу пример. Есть игрок X, у которого есть танк Lowe, на котором он отыграл 2000 боёв из 8000 на акке. Просто нужно было серебро. Но игрока X уже тянет блевать этот танк совсем не вдохновляет, более того, причиняет моральную боль и страдания. И тут система рекомендует его игроку Y1, Y2... И таких рекомендаций будет очень много, причем они будут совсем не в радость игроку X. При первой же возможности он сделает всё, чтобы его не приглашали пофармить. Таких случаев будет множество, т.к. у многих игроков больше всего боёв на прем технике.
 
Какие выходы вижу из этой ситуации:

  • использовать галочку "искать рекомендации среди прем техники"
  • которая активирует дополнительное поле "с процентом побед не менее X" (этот пункт, возможно, бредовый).
  • отслеживать технику, на которой у игроков много боёв, но их число не увеличивается (наигрались)
  • возможность быстрой и легкой авторизации через WG ID как с целью поиска совзводных, так и с целью отметить нелюбимую технику / отписаться от системы приглашений.

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

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

 

С рейтингом отлично придумал.

Edited by DotNetFramework

Share this post


Link to post

Short link
Share on other sites

На счёт "звёздосбивателей": как мне кажется, данную проблему (если её вообще таковой считать, т.к. с хорошим игроком сбить звёзды тоже полезно) можно решить элементарным выставлением свободного статуса (хотя можно и шаблонного). Что бы тот кто ищет, мог спокойно для себя решить - играть или нет с данным человеком. К примеру: "Катаю на 6-8", "Только премы", "Играю ещё 34 мин. 16 сек." и т.п.. 

Edited by fakeEmotion

Share this post


Link to post

Short link
Share on other sites

Ух, сколько сообщений. Видно, тема и правда интересная :)

 

Как вижу это я.

Открываю я значит окошко, в котором я вижу список игроков с кпд "my_eff +- 50".

Так как я хочу качать Объект 704, я подбираю игроков, у которых указан танк\перечень танков\уровень танков на котором он желает ездить.

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

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

Такая возможность, грамотно продуманная конечно, верх совершенства будет.

Во-первых, нет возможности увидеть игроков со списком техники, на которой он ездить желает. Когда-нибудь, если проект выстрелит и станет популярным, это станет возможным. Но на данный момент сервис - это вебсайт, и абсолютное большинство людей о нем не знает. А значит, мы не знаем о нем ничего кроме того, что скажет нам WG PAPI. А значит, никаких окошек и комнат. Я не знаю, возможно ли написать мод для клиента (на AS3 писал совсем немного), который будет работать с API сервиса, но что-то мне подсказывает, что нельзя - мы просто не узнаем какой ник у игрока или не сможем открыть окно чата из-за отсутствия API. Поправьте, если я не прав.

Но в целом я идею понял. Хочется сбить звезду или покатать качаемую технику, которая не попадает в "самую эффективную" и "самую катаемую". Надо этот вопрос обдумать.

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

 

Немного дополню вышеотписавшихся.
 
Практически всегда, если выполняются два условия:

  • У человека много боёв на определенной технике;
  • Он недавно на ней катал

- можно сделать вывод, что это его любимая техника, за исключением одного "но" - премиумные танки. Думаю, большое количество игроков катают их из необходимости, а не для фана/удовольствия (особенно если процент побед не выше 50).
 
Чтобы было понятно, приведу пример. Есть игрок X, у которого есть танк Lowe, на котором он отыграл 2000 боёв из 8000 на акке. Просто нужно было серебро. Но игрока X уже тянет блевать этот танк совсем не вдохновляет, более того, причиняет моральную боль и страдания. И тут система рекомендует его игроку Y1, Y2... И таких рекомендаций будет очень много, причем они будут совсем не в радость игроку X. При первой же возможности он сделает всё, чтобы его не приглашали пофармить. Таких случаев будет множество, т.к. у многих игроков больше всего боёв на прем технике.
 
Какие выходы вижу из этой ситуации:

  • использовать галочку "искать рекомендации среди прем техники"
  • которая активирует дополнительное поле "с процентом побед не менее X" (этот пункт, возможно, бредовый).
  • отслеживать технику, на которой у игроков много боёв, но их число не увеличивается (наигрались)
  • возможность быстрой и легкой авторизации через WG ID как с целью поиска совзводных, так и с целью отметить нелюбимую технику / отписаться от системы приглашений.

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

 

С рейтингом отлично придумал.

По поводу галки, которая отключает/включает прем-технику, имхо, самое оно.

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

Отслеживать количество боев на технике в динамике - отлично, это поможет найти не столько самую катаемую технику, сколько качаемую.

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

 

На счёт "звёздосбивателей": как мне кажется, данную проблему (если её вообще таковой считать, т.к. с хорошим игроком сбить звёзды тоже полезно) можно решить элементарным выставлением свободного статуса (хотя можно и шаблонного). Что бы тот кто ищет, мог спокойно для себя решить - играть или нет с данным человеком. К примеру: "Катаю на 6-8", "Только премы", "Играю ещё 34 мин. 16 сек." и т.п.. 

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

 

 

Товарищи, спасибо всем за предложения, самые интересные я взял на карандаш и уже прорабатываю :) 

Если есть еще - курите чего вы там курите и пишите снова.

Share this post


Link to post

Short link
Share on other sites

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

 

Если играл в ВоВ, можно подчерпнуть вдохновление из механизма сбора пати в рандомный инст.)

Edited by TheHateInMe

Share this post


Link to post

Short link
Share on other sites

На счёт "звёздосбивателей": как мне кажется, данную проблему (если её вообще таковой считать, т.к. с хорошим игроком сбить звёзды тоже полезно) можно решить элементарным выставлением свободного статуса (хотя можно и шаблонного). Что бы тот кто ищет, мог спокойно для себя решить - играть или нет с данным человеком. К примеру: "Катаю на 6-8", "Только премы", "Играю ещё 34 мин. 16 сек." и т.п..

 

Так это применимо, как я понял, только для зарегистрировавшихся. Но поиск будет вестись по всем игрокам. Так вот, для тех, кто зарегистрировался, система таких "предпочтений" будет работать отлично. А с теми, кто не регистрировался нужно сделать максимально ненавязчиво. Иначе будет плохо. Самый яркий пример - представьте, если сайт знакомств ЛГБТников начнет делать рассылки по базам электронной почты? Как вы к этому отнесетесь? В лучшем случае - отправите в спам.

 

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

Если WG даст API. Когда-нибудь. Наверное. Edited by DotNetFramework

Share this post


Link to post

Short link
Share on other sites

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

 

Если играл в ВоВ, можно подчерпнуть вдохновление из механизма сбора пати в рандомный инст.)

Выше правильно сказали - Близзард имеет довольно мощный API на клиенте, там и язык используется Lua, который мне больше по душе :) У Варгейминга такого клиентского API, к сожалению, нет. По крайней мере, я не слышал о таковом.

Share this post


Link to post

Short link
Share on other sites

А веб-сайт уже доступен?

Нет, конечно :) Мне даже не дали еще доступа к бета-тесту PAPI. Пока копаю срез статистики за май. 

Share this post


Link to post

Short link
Share on other sites

Нет, конечно :) Мне даже не дали еще доступа к бета-тесту PAPI. Пока копаю срез статистики за май.

Там вообще что-то глухо. Кто-нибудь, кто получал ответ на заявку, отпишитесь.

Share this post


Link to post

Short link
Share on other sites

Там вообще что-то глухо. Кто-нибудь, кто получал ответ на заявку, отпишитесь.

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

Share this post


Link to post

Short link
Share on other sites

Сори, все прочитал но не понял задумки.

Как это работает сейчас:
Хочу покататься взводом
- смотрю контакты:
  есть друзья - зову
  нет друзей  - иду в роты
В ротах:
или уже есть рота поиска совзводных на интересной мне технике
или создаю сам.


В итоге: на поиск-создание взвода уходит 10 минут. Если совместные покатушки понравились - в друзья, если нет - ищем снова.

Какую оптимизацию данного процеса предполагается запилить?

Предположим я игрок уровня выше среднего. Хочу покататься взводом на 8-ках. Сервис найдет мне 50000 игроков моего уровня у которых есть прокачанные восьмерки с достаточным количеством боев? И что мне с этим списком делать? Всем слать приглосы?

Мне нужны игроки моего уровня, на нужной технике, которые готовы поиграть взводом со мной СЕЙЧАС.

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

Share this post


Link to post

Short link
Share on other sites

Сори, все прочитал но не понял задумки.

Как это работает сейчас:

Хочу покататься взводом

- смотрю контакты:

  есть друзья - зову

  нет друзей  - иду в роты

В ротах:

или уже есть рота поиска совзводных на интересной мне технике

или создаю сам.

В итоге: на поиск-создание взвода уходит 10 минут. Если совместные покатушки понравились - в друзья, если нет - ищем снова.

Какую оптимизацию данного процеса предполагается запилить?

 

Предположим я игрок уровня выше среднего. Хочу покататься взводом на 8-ках. Сервис найдет мне 50000 игроков моего уровня у которых есть прокачанные восьмерки с достаточным количеством боев? И что мне с этим списком делать? Всем слать приглосы?

Мне нужны игроки моего уровня, на нужной технике, которые готовы поиграть взводом со мной СЕЙЧАС.

 

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

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

 

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

 

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

 

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

Share this post


Link to post

Short link
Share on other sites

ВГ увидели твою идею и реализовали ее в функционале "Военкомат" в кланах))))

 

Вы кроме заголовка, и то, по диагонали, что-нибудь читали?

Share this post


Link to post

Short link
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...