Roblox GuidebookБаза знаний
Русский ⌄

Разработка / ROBLOX

Значок за достижение в Roblox: условие и серверная проверка

Спланируйте один значок для учебной трассы: точное условие, связь с нужной игрой, серверную выдачу и проверку владения. Разделите сообщение интерфейса, выполнение API и подтверждённый результат.

Обновлено:

Сначала опишите достижение #

Выберите маленькую цель, которую можно объяснить одной фразой: завершить тренировочную трассу и дойти до её финиша. Запишите, какие этапы обязательны и какое серверное состояние подтверждает завершение. Значок должен обозначать это достижение, а не просто касание любой похожей детали.

Наш пример — план отдельного учебного проекта. Реальный значок не создан, ID не получен, награды игрокам не выдавались и код ваших игр не менялся. Материал помогает подготовить реализацию, но не является уже проверенным скриптом BadgeService.

Согласуйте название, описание и условие #

Название сообщает, что произошло, описание объясняет, как получить награду. Проверьте их по правилу трассы: если нужно пройти весь маршрут, не пишите, что достаточно зайти. Если условия пока не определены, сначала уточните механику, затем создавайте карточку достижения.

Отдельно запишите дополнительные эффекты. Монеты, предмет или новая зона не возникают из одного названия значка: для каждого нужна своя реализация. Наш учебный план рассматривает только значок за завершение. Он не обещает Robux, предмет аватара или дополнительную привилегию игроку.

Подготовьте объект без случайных расходов #

В Creator Dashboard инструменты значков относятся к выбранной игре; документация описывает создание через меню игры и дальнейший раздел Engagement → Badges. Перед любым созданием убедитесь, что выбрали нужную игру, и проверьте действующую квоту: дополнительные значки могут стоить Robux.

Для подготовки статьи создавать объект не требуется. Можно заполнить паспорт с пустым полем badgeId и условием. Не используйте чужой ID или выдуманное рабочее число. Когда объект действительно будет создан в рамках отдельной задачи, сопоставьте его страницу, ID и игру с паспортом.

Проверьте иконку и доступность #

Документация рекомендует исходное изображение 512×512 и учитывает круглое обрезание. В нашем плане важный символ остаётся внутри круга, а длинное название хранится отдельно от рисунка. Проверьте, узнаётся ли смысл на маленьком размере, а не только на полном изображении.

У значка есть включённое состояние. Отключённый значок не показывается среди значков страницы игры и не может быть получен. Получение картинки и создание значка — разные задачи; красивая иконка не подтверждает доступность или правильное серверное условие.

Свяжите условие с серверной логикой #

Документация описывает выдачу через AwardBadgeAsync из серверного Script. До вызова наша будущая логика должна определить, завершил ли именно этот игрок нужный маршрут. Сообщение клиента «я финишировал» или визуальная анимация не заменяют проверку игрового состояния.

Запишите, где хранится прогресс и как определяется действительный финиш. Затем перечислите недопустимые случаи: старт ещё не был пройден, финиш относится к другой трассе, игрок уже получил подтверждённое достижение. Это предлагаемые требования к будущей реализации, не результаты нашего тестирования.

Достижение и подтверждениеОткрыть изображение крупнее ↗
Оригинальная схема проверки достижения, не работающая выдача.

Разделите сведения, выдачу и владение #

GetBadgeInfoAsync получает сведения о значке, включая IsEnabled. AwardBadgeAsync предназначен для выдачи, а UserHasBadgeAsync — для проверки владения конкретным значком. Эти вызовы отвечают на разные вопросы и не должны сливаться в одно наблюдение «всё работает».

В карточке проверки есть отдельные результаты: нужный значок выбран, доступность проверена, условие выполнено, вызов выдачи завершился, владение проверено. Укажите исходный аккаунт и badgeId в закрытом тестовом журнале. На публичной странице статьи реальные данные игроков не нужны.

Смотрите не только на успех защищённого вызова #

API указывает boolean как результат AwardBadgeAsync и UserHasBadgeAsync. У защищённого вызова отдельно есть признак отсутствия исключения и значение, которое вернула вызванная функция. Поэтому отсутствие ошибки нельзя без дополнительной проверки подписывать как успешную выдачу.

Аналогично, ошибка проверки владения означает неизвестный результат, а не подтверждённое отсутствие значка. В предложенном журнале сохраняются оба слоя результата и дальнейшее решение. Не показывайте игроку уверенное «получено», если наблюдалась только работа функции или нажатие кнопки.

Проверьте повтор и неготовые состояния #

План проверки включает повторный контакт с финишем, уже имеющийся значок, отключённый объект, неверный ID и ошибку получения сведений. Для каждого определите, какое состояние считается известным и что интерфейс может сообщить честно. Не превращайте любую ошибку в новое начисление.

Отдельно рассмотрите новый вход в игру. Владение значком и прогресс собственного маршрута — разные состояния: подтвердив одно, нельзя автоматически сделать вывод обо всём профиле. Если нужен дополнительный игровой эффект, его применение и сохранение проверяются своим сценарием.

Проведите ограниченный тест и запишите наблюдения #

Используйте отдельный учебный проект и заранее определённую цель. Сначала проверьте поведение до финиша, затем правильное завершение и повтор. Таблица ниже содержит ожидаемые вопросы, а не отчёт о реально проведённой выдаче. Не тестируйте чужие игры или аккаунты.

Сохраняйте шаг, исходное состояние, результат API и результат проверки владения. Если меняете условие, повторите тот сценарий, который выявил проблему. Имитация вызова, мысленная схема и реальная проверка в Studio дают разные свидетельства; обозначайте уровень явно.

СценарийЧто проверить
До финишаУсловие ещё не подтверждено?
Правильный финишЧто подтверждает завершение?
ПовторВладение и повтор сигнала разделены?
Ошибка APIНеизвестность не названа успехом?

Передайте паспорт другому разработчику #

Паспорт содержит цель, описание, выбранную игру, будущий badgeId, состояние доступности, серверное условие и матрицу проверок. Отдельно перечислите, что ещё не реализовано и какие наблюдения нужны перед запуском. Это делает задачу понятной следующему чату.

Готовность одного учебного достижения не доказывает правильность всех наград вашей игры. Здесь не выполнялись создание, оплата или выдача. Полезный результат — проверяемое правило и план доказательств, после которого разработчик сможет реализовать и проверить значок в согласованной среде.

Паспорт достиженияОткрыть изображение крупнее ↗
Оригинальный паспорт. Реальный ID и наблюдения заполняются при отдельной реализации.
ПолеЧто записать
ЦельТочное действие из описания
ОбъектНужная игра, ID и доступность
ЛогикаСерверное условие и повтор
ДоказательствоВид теста и фактический результат

Первоисточники

Roblox Creator Hub — Badges
Roblox Creator Hub — BadgeService API