/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, его провал в клиенте только
пишется в консоль, поэтому отказ ничего не изменил бы, зато сделал бы шумной каждую атаку старой
сборки, которая про рубильник не знает. Такая запись попадает в лог ошибок сервера вместе с её
размером.
Падение этого запроса сейчас ничего не стоит
Результат боя уже засчитан методом завершения. С приходом сервиса валидации это станет входом для читера — достаточно заблокировать один запрос. Политика на этот счёт ещё не выбрана; сколько боёв реально доигрывается без записи, видно на странице реплеев в админке.