Как игрокам соединится с сервером





Регистрация HTTP

Перед тем как установить соединение с сервисом нужно что бы сам игрок зарегистрировался (это можно делать незаметно для игрока в фоновом режиме и хранить данные авторизации на устройстве) 

http://" + SERVER + "/game/signin/register/?game_id="+GAME_ID&login=<логин>&password=<пароль>
  • SERVER - адрес физического сервера к которому привязана ваша учетная запись
  • GAME_ID - номер вашей игры в нашей системе (будет доступен когда Вы как разработчик получите учетную запись в нашем сервисе)

Авторизация по HTTP

Для подключения к игре игроку необходимо получить одноразовые токен (token). Этот токен выдается после того как будет пройдена авторизация с логином и паролем игрока

http://" + SERVER + "/game/signin/auth/?game_id="+GAME_ID&login=<логин>&password=<пароль>

Результатом запроса будет ответ http в формате JSON 

{"key": <уникальный ид игрока>, "token": <одноразовый пароль для соединения с сервером>, "host": <сервер локации>:<порт локации>, "step": <размер шага из настроек игры>, "fps": <частота циклов сервера в сек. из настроек>, "position_precision": <сколько знаков после запятой в координатах>}

Соединение с локацией

После получения данных можно создать соединение WebSocket (как это сделать на вашем языке программирования выходит за рамки данной статьи) на адрес и порт локации (host) переданной ранее где параметр HTTP_AUTHORIZATION кодированная в base64 строка id и token разделенная знаком :  для авторизации)

пример для Java Script

var ws = new WebSocket("ws://" + host + "/?HTTP_AUTHORIZATION=" + btoa(key + ':' + token));

пример для C# при использовании плагина WebSocketSharp

WebSocket ws = new WebSocket("ws://" + host);
ws.SetCredentials(key, token, true);

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








Что нового?


Статьи про разработку продукта

PHP, Разработка игр, Unity, Unreal Engine, Облачные сервисы, php, unity, mmo, mmorpg, сервер для игры

С 2021 года я начал делать свою MMO игру обнаружив что нет готовых сервисов ни в России, ни за рубежом. Но сделать игру я мечтал со времен «Бойцовского клуба» и текстового «Амулета дракона», вдобавок уже был неплохим программистом.

Так и родилась идея написать свое решение Авторитарного сервера для 2D Mmo RPG игр и, как говорил Илон Маск, «Батут работает».

Читать далее
ч.15 Игровой авторитарный сервер на процессах и его архитектура в картинках — Создание сервера для онлайн ММО игр на PHP
PHP, Программирование, Разработка игр, Unity, Unreal Engine, php, игровой сервер, разработка сервисов, онлайн-игры, разработка онлайн-игр
Создание сервера для онлайн ММО игр на PHP ч.14 — Сетевая карта и задержка кадра (Latency frame) по RFC 2544 (1242)
PHP, Проектирование и рефакторинг, Разработка игр, Сетевые технологии, Параллельное программирование, php, go, c#, онлан игры
Создание сервера для онлайн ММО игр на PHP ч.13 — Event-driven паттерн, JSON-RPC и почему не сервисная (SOA) архитектура
PHP, Программирование, Проектирование и рефакторинг, Разработка игр, Алгоритмы, php, event-driven, разработка игр, mmo, mmorpg, шаблон проектирования

Кабинет

Игры