/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 вместе со сработавшим правилом — по нему настраиваются списки; «занято» туда не пишется. Эти ошибки не попадают в журнал ошибок и не поднимают алерт: это ответ на ввод игрока, а не сбой.