/arena/replay/upload

Загрузить запись боя — отдельным запросом после его завершения.

Адрес метода

/arena/replay/upload

Требует сессию пользователя

Параметры

Параметр Обязательный Тип Описание
battle_id ДА int(1+) Строка боя игрока
recording ДА json Запись боя
log НЕТ json Текстовый лог, массив строк

Результат

{"response": {"success": 1}}

Что важно знать

Только атаки и только своей строкой боя. Защиту играет ИИ, записывать её некому.

Один реплей на бой. Повторная загрузка отклоняется: второй запрос — это дубль или попытка подменить запись, но не новые данные о том же бое.

Загрузка возможна ограниченное время после старта боя — лимит боя плюс буфер на загрузку.

Запись складывается на диск в сжатом виде, а строка боя получает ссылку на артефакт. Ссылка и файл живут и удаляются вместе.

Сбор можно выключить, и тогда запрос отвечает успехом, но ничего не сохраняет. Рубильник — галочка «Собирать реплеи боёв» на странице реплеев в админке; её значение уезжает клиенту в config.replay_upload ответа /arena/info, и клиент при нуле не записывает бой вовсе. Отказ вместо успеха здесь был бы хуже: запрос fire-and-forget, его провал в клиенте только пишется в консоль, поэтому отказ ничего не изменил бы, зато сделал бы шумной каждую атаку старой сборки, которая про рубильник не знает. Такая запись попадает в лог ошибок сервера вместе с её размером.

Падение этого запроса сейчас ничего не стоит

Результат боя уже засчитан методом завершения. С приходом сервиса валидации это станет входом для читера — достаточно заблокировать один запрос. Политика на этот счёт ещё не выбрана; сколько боёв реально доигрывается без записи, видно на странице реплеев в админке.