Перейти к содержанию

Статусы и коды

Статусы генераций

status Описание
pending В очереди или уже выполняется
in_progress Генерация выполняется; приходит не от всех видов, после pending может сразу прийти completed
completed Готово, результат в генерации
failed Не получилось, причина в error

Фазы игры

status Описание
lobby Ожидание игроков
countdown Отсчёт 3 секунды перед вопросом
reading Вопрос без вариантов, если у вопроса reading_seconds > 0
question Приём ответов; заканчивается по question_deadline_at или когда ответили все
reveal Верный ответ и статистика
leaderboard Таблица мест
podium Итог после последнего вопроса
finished Игра завершена
paused Пауза во время вопроса

Фазы переключает сервер по своим таймерам, ведущий может переключить их методом «Следующая фаза». Лобби без старта дольше 30 минут завершается само. Таймер вопроса на экране: (question_deadline_at - now) / (question_deadline_at - question_started_at).

Очки

Правило Значение
Верный ответ 500 + до 500 за скорость, пропорционально оставшемуся времени
Серия +10% за каждый верный ответ подряд, не больше +50%
Неверный ответ или нет ответа 0, серия сбрасывается
multi Доля: верных выбрано / всего верных минус неверных выбрано / всего неверных, не меньше 0; при доле меньше 1 без бонуса серии
«Почему?» Полный балл только при верных основном ответе и ответе на «Почему?»
Последний вопрос Очки удваиваются при final_double: true
Равные очки Выше тот, кто суммарно ответил быстрее

Коды ошибок Доды

code HTTP Описание
NICKNAME_INVALID 422 Ник пустой, длиннее 64 символов или с управляющими символами
NICKNAME_TAKEN 409 Смена ника: новый ник занят в этой игре; при входе занятый ник не ошибка, Дода дополняет его номером
GAME_ALREADY_STARTED 409 Игра уже началась: войти, сменить ник или выйти нельзя
PLAYER_NOT_FOUND 401 player_token не найден

Статусы запуска кода

status Описание
success Программа завершилась
compile_error Ошибка компиляции, текст в stderr
runtime_error Ошибка выполнения
timeout Превышено время выполнения
validation_error Запуск отклонён до выполнения, причина в message: язык недоступен, пустой или слишком большой код или ввод, сторонняя библиотека, слишком частые запуски
internal_error Сбой песочницы

Служебные методы

Метод Описание
GET {API_URL}/health Процесс жив: {"status": "ok"}
GET {AI_URL}/health Процесс жив: {"status": "ok"}
GET {DODA_URL}/health, GET {DODA_URL}/readiness Процесс жив, готов к работе
GET {COMPILER_URL}/health Процесс жив
GET {COMPILER_URL}/ready Готов ли компилятор запускать код: {"status": "ready", ...}; если нет - 503 и "status": "not_ready"