@dulingleb

Как правильно реализовать подбор игроков для мультиплеера?

Хотел бы поинтересоваться, как правильно создать систему поиска игроков для лобби 5x5, по примеру как у CS:GO, faceit, Dota 2. Чтобы учитывался рейтинг игроков (слабые с слабыми, сильные с сильными на основе предыдущих игр). Если возможно на примере Laravel.

Что я смог придумать, это когда игрок нажимает "поиск", он добавляется в таблицу поиска игры (прим. Searching) и идет проверка по этой таблице, есть ли игроки с похожим рейтингом. И когда 10 игроков набирается с соответствующим рейтингом, то вебсокетом всем отправляю ответ и уже там дальше создаю лобби в другой таблице. Но не уверен, что это правильный, с точки зрения оптимизации, вариант.
  • Вопрос задан
  • 489 просмотров
Пригласить эксперта
Ответы на вопрос 2
dollar
@dollar
Делай добро и бросай его в воду.
Думаю, здесь нужно гуглить что-то типа: matchmaking algorithm
К слову, надеюсь, английский вы знаете неплохо.

Советую разделять:
  1. Логику подбора игроков
  2. Конкретный алгоритм (оптимизация этой логики)
  3. Реализацию на конкретных ЯП и БД

Это всё разные вопросы. И их следует адресовать разным экспертам, а не 3 в 1. Эксперт по ЯП может не уметь в геймдизайн и наоборот.

Что касается первого (логики подбора), то самым тонким моментом является определение "слабого" и "сильного" игрока, и по какой шкале измеряется их сила. Это имеет отношение скорее к геймдизайну, где цель - сделать игру интересной. Следующие пункты относятся уже к другому - к быстродействию (не путать с временем ожидания игрока при поиске группы), дешевизне решения, борьбе с читерами и т.д.
Ответ написан
Комментировать
ThunderCat
@ThunderCat
{PHP, MySql, HTML, JS, CSS} developer
Задачка больше на логику и базовые алгоритмы, ничего фантастического...
когда игрок нажимает "поиск",
Проверяем есть ли неукомплектованные команды, и если есть, удовлетворяет ли средний рейтинг команды +- погрешность рейтингу игрока. Если команд нет, создаем новую, пишем туда игрока, (средний) рейтинг, и ждем наполнения. Все.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы