Механика игры:
Командам необходимо пройти все точки созданные в игре, разгадать загадки и набрать максимальное количество очков за правильно введенные коды. Все точки в игре идут друг за другом и автоматически переключаются АПИ приложения.
Каждый игрок подключается к игре по отдельности и связан со своей командой, все очки полученные игроком зачисляются на счет команды
Каждая точка характеризуется параметрами:
- Подсказка при переходе на точку(указывает куда дальше идти команде)
- Подсказка на точке(указывает какие коды верные, их необходимо ввести в поле ввода)
- Коды правильных ответов
Описание доступного АПИ
Выдам доступ к апи методам позже, документация реализована через 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":"Тестовое сообщение"}