Разработка React JS приложения для игры Дозор в студенческом лагере

8 000 руб. за проект
26 июня 2022, 21:26 • 8 откликов • 115 просмотров
Механика игры:
Командам необходимо пройти все точки созданные в игре, разгадать загадки и набрать максимальное количество очков за правильно введенные коды. Все точки в игре идут друг за другом и автоматически переключаются АПИ приложения.

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





Каждая точка характеризуется параметрами:

  • Подсказка при переходе на точку(указывает куда дальше идти команде)
  • Подсказка на точке(указывает какие коды верные, их необходимо ввести в поле ввода)
  • Коды правильных ответов

Описание доступного АПИ Выдам доступ к апи методам позже, документация реализована через swagger


Подключение пользователя к игре
https://solbaumanec.ru/dozor/connect


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

Для управления статусами игры необходимо пользоваться эндроитом
https://solbaumanec.ru/dozor/admin/game/setStatus

Игра с административной точки зрения делится на 3 статуса:

  • DEVELOP - заведение точек, подсказок, вопросов и т.д (тестовые данные уже заведены в систему)
  • WAITING_ACTIVE - игра готова к старту, на этом моменте пользователю отображается таймер до начала игры(Стартовая страница). Время до начала игры приходит через webSocket /dozor/action
  • ACTIVE - игра активна, переключению раундов и движение команд идет по заведенному сценарию
Ввод кода игроком осуществляется через эндпоинт
https://solbaumanec.ru/dozor/code/save

После введения кода всем игрокам команды придет сообщение через web socket
/dozor/directlyTeam/{teamName}

Пример подключения и работы web socket можно посмотреть тут
https://solbaumanec.ru/test/socket

Переводите игру по статусам и socket будет отображаться сообщения

Макет страницы https://www.figma.com/file/FaNJH59JqOy0WRlyhvA8yM/DOZOR?node-id=0%3A1


Данные получаемые через web socket
Типы данных получаемых через web socket:

PRE_START_TIME - время до ориентировочного старта игры
{"message":"action","responseType":"PRE_START_TIME","object":"9:42:41"}
ROUND_TIME - время раунда для команды
TRANSIT_TIME - время перехода команды к точке
DOZOR_DATA - информация об игре, придет текущая точка для команды или изменение ее статуса

В случае если игра перешла в статус WAITING_ACTIVE прийдет сообщение

{"message":"action","responseType":"DOZOR_DATA","object":{"id":2,"type":"DOZOR","dozorPointSet":[],"status":"WAITING_ACTIVE","sequenceOfPassingGame":1,"dozorSequenceOfPassingGameSet":[],"estimatedStartTime":"2022-08-01T18:00:00.000+0000","smenaId":1}}


В случае если игра перешла в статус ACTIVE то при начале времени перехода прийдет сообщение в канал команды

{"message":"action","responseType":"DOZOR_DATA","object":{"id":2,"type":"DOZOR","dozorPointSet":[],"status":"WAITING_ACTIVE","sequenceOfPassingGame":1,"dozorSequenceOfPassingGameSet":[],"estimatedStartTime":"2022-08-01T18:00:00.000+0000","smenaId":1}}


ENTERED_CODE - введенный код одним из участников команды

MESSAGE - нотификация для пользователей команды или для всех пользователей(должна отобразится нотификация в верхней части окна)

{"message":"action","responseType":"MESSAGE","object":"Тестовое сообщение"}