/arena/onboarding/complete
Завершить онбординг арены: игрок победил Цукера, выбрал облик и имя — и становится участником боёв.
Адрес метода
/arena/onboarding/complete
Требует сессию пользователя
Параметры
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| name | НЕТ | string | Выбранное имя. Без параметра остаётся случайное, выданное при регистрации |
| skin_id | НЕТ | string(0..64) | cid выбранного скина. Без параметра остаётся текущий |
Результат
Тот же агрегат, что отдаёт /arena/info, уже с onboarding.onboarded = 1,
arena.onboarded = 1 и местом в группе (arena.group_id).
Ошибки
| Код | Когда |
|---|---|
| 10060 | Арена не инициализирована — сначала /arena/init |
| 10065 | Сервер не видит победы над Цукером в арене (onboarding.zucker_beaten = 0) |
| 10062 | Имя не прошло проверку, которую клиент делает и сам (длина, символы, формат, серия цифр и, если включено, один алфавит на слово). Какое правило сработало, не сообщается: поля reason нет |
| 10063 | Имя не разрешено правилом, которое есть только на сервере. Поле reason: profanity — фильтр ненормативной лексики, not_allowed — всё остальное (резерв, адрес сайта) |
| 10066 | Имя занято другим игроком (с точностью до регистра, похожих букв и разделителей) |
| 10002 | Скин не существует или не открыт |
Что важно знать
Победу проверяет сервер, а не клиент. Засчитывается пройденный уровень онбординга —
onboarding.level_cid из /arena/info, клон боя с Цукером. Бой играется
штатным путём PvE-уровня: /level/start → /level/complete
с result = 1. Победа в кампанийном c000l001 (VFC) — другой уровень и онбординг не завершает.
Флаг туториала клиента ничего не решает.
Все проверки — до применения. Отказ по имени (в том числе «занято») или по скину оставляет игрока ровно в прежнем состоянии: онбординг не пройден, места в группе нет. Вызов можно повторить с другим именем.
Метод идемпотентный. Уже прошедший онбординг игрок получает текущий агрегат, и ничего не меняется — повтор после оборвавшегося ответа не падает. Два параллельных вызова тоже безопасны: захват атомарный, проигравший ничего не применяет.
Что происходит при завершении. Имя и скин применяются, онбординг помечается пройденным, защитный набор заново копируется из боевого набора кампании (игрок мог прокачаться за время онбординга; пустой набор кампании защиту не затирает), игрок садится в группу своей лиги текущего сезона. С этого момента он виден матчмейкингу, стоит в рейтинге и может атаковать и быть атакованным.
Первое выбранное имя кулдаун смены не запускает — игрок только что увидел своё имя в игре и должен мочь сразу исправить опечатку через /arena/customization/set.
После онбординга это имя — имя персонажа везде, не только на арене: вне арены клиент получает его
полем character_name в объекте пользователя.
Правила имени
Правила геймдизайна от 25.09.2026. Структурные правила (первые пять пунктов) клиент повторяет сам и такое имя не отправляет; остальное — только на сервере. Настройки без деплоя — страница «Арена → Имена» в админке.
- Нормализация: полноширинная латиница и цифры (
John) — к обычным, разложенныей/ё(буква + комбинирующий знак) — в одну букву, типографские апострофы к', пробелы схлопываются, края обрезаются. Других «совместимых» форм сервер не сводит: математические шрифты (𝐉𝐨𝐡𝐧), лигатуры, надстрочные и обведённые знаки — это недопустимые символы (10062). В ответе приходит сохранённая, нормализованная форма. - Длина в символах —
name.min_length/name.max_lengthиз /arena/info, по умолчанию 3–16. - Символы: только английские и русские буквы (
A–Z a–z А–Я а–я Ё ё), цифры0–9, пробел и- _ . '. Буквы с диакритикой, украинскиеі ї є ґ, другие алфавиты, эмодзи, невидимые и управляющие символы не допускаются. - Формат: в имени есть хотя бы одна буква; разделитель не стоит в начале, в конце и два раза подряд. Не больше четырёх цифр подряд.
- Один алфавит на слово — необязательное правило, по умолчанию выключено (имя — игровой ник, а не
паспортное имя): буквы латиницы и кириллицы в слове можно смешивать. Включается в админке; тогда
Иван Smithможно, аIvaниJоhn(с кириллическойо) нельзя. Включено ли оно, клиент видит вname.one_alphabet_per_wordиз /arena/info. Похожие буквы другого алфавита фильтр и проверка занятости учитывают в любом случае. - Антиспам: адреса и домены,
www,http. - Зарезервированные имена: персонажи игры, служебные роли, название игры и студии.
- Фильтр по спискам ненормативной лексики — русский и английский плюс многоязычный список, с обходами (регистр, пробелы, повторы букв, leetspeak, похожие буквы других алфавитов). Применяется ко всем игрокам независимо от языка: имя видят все.
- Имя уникально. Занятым считается имя, которое выглядит так же, как чужое: регистр,
ё/е, похожие буквы кириллицы и латиницы (Сео=Ceo) и разделители (Brave Knight=brave_knight) не различаются. Цифры различаются:B0b— неBob. Своё текущее имя занятым не бывает. Имя, освобождённое сменой или сбросом арены, сразу свободно для любого.
Какое правило сработало, наружу не уходит (иначе фильтр подбирается перебором). Игрок узнаёт одно
из трёх: имя не подходит (10062 и 10063 с reason = not_allowed), содержит недопустимые слова
(10063 с reason = profanity), занято (10066). Каждый отказ по правилам пишется в журнал
arena_name_rejection вместе со сработавшим правилом — по нему настраиваются списки; «занято» туда не
пишется. Эти ошибки не попадают в журнал ошибок и не поднимают алерт: это ответ на ввод игрока, а не
сбой.