Статусы и коды
Статусы генераций
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" |