Регистрация 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 данные текущего снимка мира. Первом пакетом сервер вернем вам снимок текущего мира и всех смежных с ним в открытом мире локациях о структуре пакета которого пойдет речь в следующей статье