Карта грузится с сервера. Враги - под управлением сервера (они видят тебя, прокладвают маршрут,обходят препятствия,у сервера своя зона камеры за пределами которой жизнь останавливается). Попробуй убежать от них.
войдите в игру
Адрес текущего сервера: 185.117.153.89/?HTTP_AUTHORIZATION=base64_decode(id:token)
, частота тиков сервера от 62.5 до 62.5 FPS (циклов в секунду)
Перед использованием необходимо авторезироваться по HTTP на адрес
/server/sign/auth/с POST данными
['login'=><логин>, 'password'=><пароль>]
Результатом возврата будen даныне:
['id'=><идентификатор игрока>, 'token'=><для соединения с Websocket>, 'host'=><хост соединения Websocket для карты>, 'map'=><данные карты сжатые в Zlib и кодированы Base64>]
После необходимо отправить запрос на соединение с Websocket сервером (адрес и порт выше) с кодироавнным по base64 параметром HTTP_AUTHORIZATION включающих полученный id и токен выше разделенные знаком :
и дождаться получения массива содержащего весь игровой мир на карте
Каждый следующий запрос из клиента должен содержать данные:
['action'=><команда>, 'command_id'=><номер команды ввиде UnixTimeStamp>, '...'=><опционально доп параметры команды>]
Весь перечень доступных команд представлен на этой странице. Если нажать на них - результат их исполнения покажутся в игре, отправленные и полученные данные тела запроса - в специальном поле выше
Команды этого цвета нельзя вызвать с клиентской части, однако их можно вызвать внутри сервера (например разлогиневание) или быть повешаны на объект по умолчанию (например регенерация)
Команды скомнопованы в группы и имеют общее время таймаута (паузы до следующего вызова).
Все поступившие команды игроков добавляются в очередь на исполнение. Каждый игровой кадр игры проверяется возможность их выполнить (если таймаут пришел), рассылаются данные изменившиеся в игровом мире всем игрокам в виде массива в формате json
Тут же имеется отладочное окно наглядно показвающее отправленные и полученные даныне
Помимо интеграции обращения к API и обработки ответов от сервера необходима нумерация каждой команды command_id в формате UnixTimeStamp с милисекундами. Необходимо сохранять список на клиенте какие номера command_id в какой группе уже высланы.
Без этого невозможно расчитать PING, помогать игрокам с медленным интернетом слать команды заранее (интерполяция) и защитить сервер от DDOS (слишком частых отправок команд). Подробнее в видео, готовый код есть так же в демонстрационной игре
К методам одной группе можно высылать не более 2х запросов до возврата результата по ним:
C сервера возвращается так же и массив с отработанными command_id всех групп вида:
[['command_id'=><номер отработанный команды>, 'wait_time'=><время между от получения до возврата результата - для расчета времени сети (ping)>], ...]
Получить PING можно по формуле: текущий UnixTimeStamp - command_id - wait_time и после и удалить command_id из списка освободив место для новых запросов по группе
Если в клиенте время ожидания опеределенной command_id ответа от сервера больше чем таймаут события + текущий пинг - удалять ее из списка (сервер делает так же), тк иногда метод может не возвращать результат (например игрок идет в стену, или первый в списке был перезаписан вторым)
Рекомендуется предусмотреть дополнительную минималную паузу в клиенте между считыванием нажатия кнопок и отправкой запросов на группу для частых команд с малым таймаутом во избежания дабл клика (например не ходить по 2 клетки за раз)
Примеры исходного кода для работы с API, раскодировки и сборки карты, интерполяции, структуры ответов и др доступны в исходниках к игре Игорь
Раздел и игра постоянно обновляется и для получения свежей копии очистите кеш (например ctrl+f5 кнопки на клавиатура ПК)
Подробнее по интеграции читайте в разеле документация