Создать лобби для мультиплеера 5x5

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

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


Ответы (1 шт):

Автор решения: Alex

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

→ Ссылка