По договоренности
Необходимо разработать серверное приложение на websocket для мобильной игры на языке программирования Java. Разработку серверного приложения планируется разбить на две части:
- Lobby отвечает за подбор игроков с наиболее схожими параметрами;
- Rooms клиенты с одинаковым ID-матча обмениваются сообщениями.
Серверное приложение должно удовлетворять следующий требованиям:
- Язык программирования Java;
- Подключение клиентов через WebSocket соединение;
- Оптимизированая работа на обработку большого количества клиентов;
- Получение основных настроек из файла-конфига (таймауты, количество клиентов и т.п.);
- Правильное обрабатывание критических ошибок;
- Логирование критических ошибок, предупреждений и важных сообщений;
- Возможность стороннего мониторинга основных данных (просмотр через административную панель: количества соединений, количества матчей, сообщения по ID-матча).
Схема работы приложения в прикрепленном файле.
Часть 1 (Lobby)
Lobby должно иметь следующий функционал:
- Подключение клиента и получение информации об игроке (авторизация, без этих данных сервер не получает и не передает другую информацию);
- Подбор оппонента по наиболее схожим параметрам (описание подбора);
- Генерация уникального ID-матча;
- Отключение клиента по таймауту (противник не найден).
Принцип работы Lobby:
Игроки подключаются к серверному приложению и передают данные игрока. Далее клиент ожидает информацию о подобранном противнике. В случае успешного подбора, серверное приложение генерирует ID-матча и передает клиенту. Иначе отключает клиента по таймауту.
Часть 2 (Rooms)
Rooms должны иметь следующий функционал:
- Подключение клиента, получение информации матча и данных игрока (авторизация, без этих данных сервер не получает и не передает другую информацию);
- Ожидание подключения всех игроков матча;
- Получение сообщения-действие от клиента и трансляция его остальным клиентам, занесение его в отдельный массив;
- Отдача массив действий.
Принцип работы Rooms:
Клиенты подключаются к серверному приложению и передают информацию матча (ID-матча) и данные игрока. Серверное приложение запоминает эти данные и в дальнейшем группирует клиентов по общему ID-матча. Клиент отправляет на сервер сообщения-действия, а сервер в свою очередь заносит их в массив действий и транслирует всем клиентам с одинаковым ID-матча. Клиент, в случае потери соединения, может возобновить игру, повторно подключившись к серверному приложению и запросить массив действий для восстановления состояния матча на клиенте. Также клиент с функцией “наблюдатель” может запросить массив действий и восстановить состояние матча.
Требования к соискателю:
- Опыт работы в сфере деятельности объявления от двух лет;
- Наличие опыта разработки подобного серверного приложения (работа с сокетным соединением);
- Наличие оформленного портфолио с возможностью просмотра кода через репозиторий для определения уровня компетентности соискателя.
Также будет предоставлено более подробное ТЗ по работе Lobby и Rooms.