Skip to content

Private matchmaking #711

@Russiancold

Description

@Russiancold

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

Protocol: HTTP
Path: mm/getlink
Method: POST
QueryParam: name&playerCount
Host: {IP}:8080
ResponseBody: gameId
  • Наша реализация:
    image
    Согласно архитектуре, предложенной всем, у нас есть возможность создать игру:
    host:8080/game/create?playerCount=count
    Этот интерфейс мы и использовали. В нашей реализации, при создании игры, мы инкрементировали поле lastId, которое использовали, как идентификатор игровой сессии и, соответственно возвращали его как gameId. То есть, когда мы создаем сессию через getLink lastId так же инкрементится, и для общей очереди будет возвращаться уже следующий id. Благодаря этому коллизий между обычным и 'private' матчмейкингом не возникало. В итоге, нам не пришлось как-то делить пул игровых сессий или очередь на создание игры. Затем, получив gameId мы напрямую коннектимся к gs через вебсокет при нажатии на коннект, так же используя дефолтный интерфейс.

В идеале...

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

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions