Реализовать игровую сессию
Добрый день! Требуется разработчик для следующей задачи:
Есть Telegram MiniApp. React, Nodejs, Typescript. Страницы сделаны, нужно реализовать игровую сессию.
Логика:
Есть Telegram MiniApp. React, Nodejs, Typescript. Страницы сделаны, нужно реализовать игровую сессию.
Логика:
- Игроки заходят в приложение, нажимают на кнопку “Начать игру”.
- Переходят на страницу “Комната ожидания”. На backend каждый зашедший игрок записывается в Redis.
- При завершении обратного отчёта до начала игровой сессии игроки перемешиваются в игровые пары по двое с записью пар в Redis. Если есть лишний игрок, которому не хватило пары, то ему показываются рекламные ролики до тех пор, пока для него не будет найдена пара.
- После составления игровых пар начинается обратный отчёт до начала игры. По завершении отчёта через вебсокет отправляется событие начала игры.
- При начале игры всем игрокам показывается страница с рекламой (заглушка с роликом, ролик будет предоставлен).
- После показа страницы с рекламой игроки переходят на страницу раунда.
- Здесь у них есть n-секунд для того, чтобы сделать выбор между двумя вариантами.
- При выборе игроком варианта его ответ отправляется через вебсокет на backend. В payload должен быть указан Telegram ID игрока и выбранный им вариант. При выборе обоими игроками одного и того же варианта они оба должны переиграть раунд.
- Когда все игроки завершили свой раунд, на backend рандомным образом выбирается выигрышный вариант из 2-х. Все игроки, которые выбрали его, проходят в следующий раунд. Проигравшим показывается соответствующая страница для проигравшего. Из Redis удаляются проигравшие.
- Повторяются шаги с 4 по 9, пока не будет определён один выигравший в последнем раунде последней пары.
- Через вебсокет на backend отправляется Telegram ID выигравшего.