непонятных для меня моментов:
1. Как я вижу логику взаимодействия между web-сервером и игровым сервером при регистрации и авторизации:
1.1. запускаю web-сервер и игровой сервер (на игровом сервере всего одна карта);
1.2. запускаю клиент игры;
1.3. регистрирусь в игре через клиент игры:
1.3.1. заполняю формы логина, пароля и email для регистрации (для отправки данных использую плагин VaRest);
1.3.2. отправляю данные с формы методом POST (или json) на web-сервер;
1.3.3. на стороне web-сервера проверяется логика (оригинальность логина и email), хешируется пароль (при успешой регистрации);
1.3.4. при неуудачной регистрации web-сервер сообщает об этом пользователю (клиенту игры), отправив ответ методом POST (или json);
1.3.5. при удачной регистрации web-сервер записывает данные в БД и сообщает об этом пользователю (клиенту игры), отправив ответ методом POST (или json);
1.4. для авторизации ввожу логин и пароль на клиенте игры и отправляю на web-сервер методом POST (или json);
1.5. web-сервер проверяет есть-ли такой пользователь с таким паролем в БД;
1.6. Ответ web-сервера клиенту:
1.6.1. если авторизация неуспешная, то web-сервер сообщает об этом пользователю методом POST (или json), что такого логина с таким паролем не найдено;
1.6.2. если авторизация успешная, то web-сервер отправляет данные об удачной авторизации методом POST (или json) на клиент игры и пользователь переходит на игровую карту сервера.
2. Логику взаимодействия между web-сервером и игровым сервером в тот момент, когда пользователь online, я вижу в нескольких вариантах:
2.1. со стороны web-сервера с помощью cron проверять, к примеру, каждые 2 секунды online каждого пользователя;
2.2. с клиента игры отправлять те же 2 секунды данные об активности пользователя, а с помощью cron также проверять каждые 10 секунд online каждого пользователя.
Вопросы:
1) Что неправильно/некорректно в представленной мною логике?
1) Какие данные при успешной авторизации web-сервер должен отправлять клиенту, а клиент далее игровому серверу ( см. 1.6.2.)? Токен и id игрока?
2) Как правильно реализовать взаимодействие между web-сервером и игровым сервером в тот момент, когда пользователь online (см. 2.) и какую информацию в этот момент передавать?
P.S. За портянку прошу прощения. Старался изложить по сути...
Хочу уточнить, я правильно понимаю что пост запросы тут используются только для авторизации, и ты не собираешься непосредственно мультиплеер на них делать?
POST (или json) запросы планирую применять для регистрации, авторизации, выхода из игры (для сохранения данных об игроке в БД) и проверки того, что игрок сейчас онлайн - не более.
Онлайн с HTTP запросами каждые 2 секунды будет тяжеловато на большом количестве игроков имхо
Ещё раз 👋 по поводу логин сервера я тебе скидывал видос с моего канала https://m.youtube.com/watch?v=Y83z6e1Pof0 А насчёт коммуникации, советую смотреть в сторону websocket, в 4.27 По-моему websocket уже был рабочий.
Вебсокет рабочий с момента как они пиксель стриминг начали тыкать)
С 4.26 он точно нормально работает
На гите много в исходниках не доработок было, правда времени немного утекло с того момента)
Вполне возможно...
Да нормально там всё)
Вебсокеты для этого лучше те же
Благодарю за совет.
Есть ещё вариант protobuf, но я его не интегрировал в анрил пока
Для меты то? Самое то
Это очень, очень спорное утверждение)))
Советую познакомиться с playfab или gamelift. Там есть все что надо и куча документации, у pf есть ролноценный плагин в анрил. Если все же захочется делать самому - то можно сделать по примеру этих решений. Но если нет отдельных людей на бекенд - не стоит.
Обсуждают сегодня