Достижения (Achievements)
Достижения (Achievements)
Сервис достижений является одним из ключевых элементов геймификации платформы. Он позволяет создавать, управлять и отслеживать прогресс пользователей в выполнении различных достижений.
Основные концепции
Достижение (Achievement)
Достижение - это награда, которую пользователь может получить за выполнение определенных условий. Каждое достижение имеет:
- Название и описание (с поддержкой мультиязычности)
- Изображение (значок достижения)
- Условия получения
- Награды за выполнение
- Статус активности (активно/неактивно)
Условия достижения (AchievementCondition)
Условия определяют, при каких обстоятельствах пользователь получает достижение:
- Тип события - какое событие должно произойти (например, выполнение задания, посещение стрима)
- Количество событий - сколько раз должно произойти событие
- Временные рамки - период, в течение которого должны произойти события
- Ограничения - дополнительные условия (например, только для определенных игр или активностей)
- Доступное количество - ограничение на количество пользователей, которые могут получить достижение (или
unlimitedдля неограниченного количества)
Награды за достижения (AchievementReward)
За выполнение достижения пользователь может получить различные награды:
- Внутриигровая валюта
- Опыт
- Предметы из магазина
- Особые статусы или титулы
- Доступ к эксклюзивному контенту
Пакет выдачи (AchievementBatch)
Система обрабатывает выдачу достижений пакетами:
- Создается пакет пользователей, подходящих под условия достижения
- Каждый пользователь в пакете получает достижение и соответствующие награды
- Система отслеживает, кто и когда получил достижение
Бизнес-процессы
Создание достижения
Администратор создает новое достижение, указывая:
- Название и описание на всех поддерживаемых языках
- Загружает изображение достижения
- Определяет, будет ли достижение активным сразу после создания
Администратор настраивает условия получения достижения:
- Выбирает тип события (из доступных типов событий)
- Указывает необходимое количество событий
- Устанавливает временные рамки (если применимо)
- Определяет максимальное количество пользователей, которые могут получить достижение
Администратор настраивает награды за достижение:
- Выбирает тип наград (валюта, опыт, предметы)
- Указывает количество для каждого типа награды
Система активирует достижение, делая его доступным для получения пользователями
Получение достижения пользователем
Достижения могут выдаваться двумя способами:
1. Автоматическая выдача на основе событий
- Пользователь выполняет действие в системе (например, завершает задание)
- Система генерирует соответствующее событие
- Сервис достижений получает событие и проверяет, соответствует ли оно условиям каких-либо достижений
- Если условия достижения выполнены:
- Создается запись о получении достижения пользователем
- Пользователю начисляются соответствующие награды
- Пользователь получает уведомление о получении достижения
2. Периодическая обработка (для сложных условий)
- Система периодически запускает задачу проверки достижений
- Для каждого активного достижения:
- Определяются пользователи, выполнившие условия достижения
- Формируется пакет выдачи достижения
- Пользователям начисляются соответствующие награды
- Отправляются уведомления о получении достижения
Отображение достижений пользователя
- Пользователь открывает раздел достижений в своем профиле
- Система отображает:
- Полученные достижения
- Достижения в процессе выполнения с индикатором прогресса
- Доступные, но еще не полученные достижения
- Награды за каждое достижение
Типы событий для достижений
Система поддерживает различные типы событий, которые могут приводить к получению достижений:
- Выполнение заданий - события, связанные с выполнением заданий из сервиса задач
- Игровые события - события из интегрированных игр (Dota 2, CS2)
- Социальная активность - события из социальных интеграций (Discord, Twitch и т.д.)
- Взаимодействие с платформой - события, связанные с использованием самой платформы
- Клановая активность - события, связанные с деятельностью в кланах
- Транзакции магазина - события покупок в магазине
- Временные события - события, связанные с определенными временными рамками или датами
Теги достижений
Для удобства организации и поиска достижения могут быть помечены тегами:
- По игре (Dota 2, CS2)
- По типу активности (социальные, игровые, платформенные)
- По сложности (легкие, средние, сложные)
- По сезону или мероприятию
- По тематике
Интеграция с другими сервисами
Сервис достижений тесно интегрирован с другими сервисами системы:
- Сервис задач - достижения могут быть получены за выполнение заданий
- Сервис магазина - предметы из магазина могут быть наградами за достижения
- Сервис пользователей - отслеживание прогресса и выдача достижений пользователям
- Сервис уведомлений - отправка уведомлений о получении достижений
- Игровые сервисы - достижения на основе игровых событий
- Социальные сервисы - достижения за активность в социальных сетях
