Уникальные значения
Обзор
Модуль дает возможность регистрировать уникальные значения в рамках всего проекта, которые привязываются к игроку. Изменять и удалять значение может только игрок-владелец. После регистрации ни у одного игрока не может быть такого же уникального значения по тегу.
Примеры уникальных значений:
- Логин / никнейм;
- Название базы / города;
- Предмет в единственном экземпляре.
- Статус владельца выбранного региона.
- И многое многое другое.
Зарегистрировать значение
+1 RequestЧтобы зарегистрировать или обновить уникальное значение нужно передать тег и значение.
- Если значение еще не было зарегистрировано игроком, то оно добавится:
- Если ни у кого нет такого же значения с этим тегом.
- Если значение уже было у игрока с таким тегом, то оно обновится:
- Если ни у кого нет такого же значения с этим тегом.
Размер тега / значения не больше 1 KB.
- JavaScript
- Unity
// Зарегистрировать
gp.uniques.register({ tag: 'login', value: 'Be$t_Devel0per' });
// Обновить по тегу
gp.uniques.register({ tag: 'login', value: 'The_Be$t_Devel0per' });
// Зарегистрировать
GP_Uniques.Register("login", "Be$t_Devel0per");
// Обновить по тегу
GP_Uniques.Register("login", "The_Be$t_Devel0per");
События при регистрации значения
- JavaScript
- Unity
// Зарегистрировано успешно
gp.uniques.on('register', (uniqueValue) => {
// uniqueValue.tag
// uniqueValue.value
});
// Ошибка при регистрации
gp.uniques.on('error:register', (error) => {});
public void Register() => GP_Uniques.Register("login", "The_Be$t_Devel0per", OnRegister, OnRegisterError);
// Зарегистрировано успешно
private void OnRegister(string tag) => Debug.Log("ON REGISTER: SUCCESS: " + tag);
// Ошибка при регистрации
private void OnRegisterError(string err) => Debug.Log("ON REGISTER: ERROR: " + err);
Метод регистрации с promises
- JavaScript
- Unity
const result = await gp.uniques.register({ tag: 'login', value: 'Be$t_Devel0per' });
/**
* Было ли успешно зарегистрировано
* @type {boolean}
*/
result.success;
Не реализовано
Получить значение
FREE- JavaScript
- Unity
// Получить
const value = gp.uniques.get('login'); // string
// Получить
string value = GP_Uniques.Get("login");
Список значений
Весь список уникальных значений, зарегистрированных игроком.
FREE- JavaScript
- Unity
const values = gp.uniques.list;
UniquesData[] uniques = GP_Uniques.List();
foreach(UniquesData data in uniques)
{
Debug.Log($"TAG: {data.tag}, VALUE: {data.value}");
}
Пример содержания:
[
{ tag: 'login', value: 'Be$t_Devel0per' },
{ tag: 'cityName', value: 'Crabifornia' },
{ tag: 'item', value: 'THOUSAND_TRUTHS_SWORD' },
{ tag: 'title', value: 'GAME_LORD' },
];
Проверить значение
+1 RequestЧтобы проверить уникальное значение нужно передать тег и значение. Это может понадобиться при валидации в реальном времени. При этом при попытке зарегистрировать значение все равно значение будет еще раз проверено.
- JavaScript
- Unity
// Проверить
gp.uniques.check({ tag: 'login', value: 'Be$t_Devel0per' });
// Проверить
GP_Uniques.Check("login", "Be$t_Devel0per");
События при проверке значения
- JavaScript
- Unity
// Проверено успешно, совпадений нет
gp.uniques.on('check', (uniqueValue) => {
// uniqueValue.tag
// uniqueValue.value
});
// Ошибка при проверке
gp.uniques.on('error:check', (error) => {});
public void Check() => GP_Uniques.Check("login", "The_Be$t_Devel0per", OnCheck, OnCheckError);
// Проверено успешно, совпадений нет
private void OnCheck(string tag) => Debug.Log("ON CHECK: SUCCESS: " + tag);
// Ошибка при проверке
private void OnCheckError(string err) => Debug.Log("ON CHECK: ERROR: " + err);
Метод проверки с promises
- JavaScript
- Unity
const result = await gp.uniques.check({ tag: 'login', value: 'Be$t_Devel0per' });
/**
* Проверено успешно, совпадений нет
* @type {boolean}
*/
result.success;
Не реализовано
Удалить значение
+1 RequestВы можете освободить ненужное значение для других игроков, чтобы оно снова стало доступно.
- JavaScript
- Unity
// Удалить
gp.uniques.delete({ tag: 'login' });
// Удалить
GP_Uniques.Delete("login");
События при удалении значения
- JavaScript
- Unity
// Удалено успешно
gp.uniques.on('delete', (uniqueValue) => {
// uniqueValue.tag
// uniqueValue.value
});
// Ошибка при удалении
gp.uniques.on('error:delete', (error) => {});
public void Delete() => GP_Uniques.Delete("login", OnDelete, OnDeleteError);
// Удалено успешно
private void OnDelete(string tag) => Debug.Log("ON DELETE: SUCCESS: " + tag);
// Ошибка при удалении
private void OnDeleteError(string err) => Debug.Log("ON DELETE: ERROR: " + err);
Метод проверки с promises
- JavaScript
- Unity
const result = await gp.uniques.delete({ tag: 'login' });
/**
* Удалено успешно
* @type {boolean}
*/
result.success;
Не реализовано
Управление данными
Через панель администратора вы можете добавлять, изменять и удалять уникальные значения в разделе "Уникальные значения" в проекте.
В форме добавления вы можете:
- Указать тег в рамках которого будет создано уникальное значение;
- Указать уникальное значение (строка);
- Указать ID игрока-владельца, кому принадлежит значение,
0
- зарезервировать системой.
Цензурирование данных
Если вы хотите оградить игроков он нежелательных слов, вы можете использовать опцию цензурирования значений.
Вы можете выбрать алгоритмы цензурирования:
Упрощенный. Мы будем использовать алгоритмы перебора и стемминга, чтобы максимально эффективно валидировать плохие слова.
- Списки плохих слов на 25 языках. Более 6500 слов;
- Стемминг на 8 популярных языках. Выделение основы слова, чтобы исключить разные способы написания плохого слова;
- Валидация ссылок.
Цензурирование через ИИ:
- Используется не перебор, а понимание контекста;
- Обеспечивает высокое качество распознавания, но и затраты ресурсов так же высоки;
- Распознавание сложных случаев, например
A$_H@LE
,2girls1cup
,πздец / 3.14здец
и других; - Многоязычность, понимание матов и контекстных оскорблений в каждом языке.
За цензурирование взимается дополнительная плата на каждый запрос.
Если используется цензурирование через ИИ: Минимальная стоимость за 1 проверку — 3 запроса, далее +1 запрос за каждые 20 токенов текста (GPT токены).
Если используется упрощенный фильтр: Дополнительная стоимость за 1 проверку — 1 запрос.
В панели управления в разделе "Уникальные значения" создайте правило для нужного тега.
В форме добавления вы можете:
- Указать тег для правил.
- Настроить цензурирование:
- Указать контекст значений:
- Укажите на английском языке для чего предназначен текст, например
character name
илиgame chat
. Это поможет ИИ понять нарушает ли текст правила. Например, если игрок укажетУнылый Парень
как никнейм, то это допустимо, однако если он напишет это в чате, то это может быть оскорблением игроков, однако зависит от полного контекста предложения.
- Укажите на английском языке для чего предназначен текст, например
- Запретить мат и ругательства;
- Запретить ссылки;
- Запретить спам;
- Запретить провокации, которые могут как-то задеть игроков;
- Указать возрастное ограничение контента.
- В играх 0+ нежелательно использовать любые плохие слова. В играх 16+ могут быть допустимы легкие ругательства и эвфемизмы без контекста оскорбления, например,
капец
. В играх 18+ может быть допустим мат, но не в отношении игроков. ИИ руководствуется вашим контекстом, но может посчитать даже в 18+ играх такое слово не уместным в рамках контекста.
- В играх 0+ нежелательно использовать любые плохие слова. В играх 16+ могут быть допустимы легкие ругательства и эвфемизмы без контекста оскорбления, например,
- Указать контекст значений:
Типы данных
Уникальное значение
Поле | Тип | Описание | Пример |
---|---|---|---|
tag | string | Тег значения | login |
value | string | Значение | Be$t_Devel0per |
Коды ошибок
Ошибка | Описание ошибки |
---|---|
player_not_found | Игрок не найден |
empty_tag | Передан пустой тег значения |
unique_value_not_found | Значение с таким тегом не найдено |
already_exists | Значение уже занято |
size_limit_exceeded | Ограничение по размеру превышено |
bad_value_filter_censor | Значение не прошло проверку цензуры |
undefined | Непредвиденная ошибка (смотрите консоль) |
Оставайтесь на связи
С другими разделами документации вы можете ознакомиться здесь. Для начала работы вы можете ознакомиться с нашими туториалами.
Сообщество GamePush в Telegram
: @gs_community.
Для ваших обращений e-mail
: [email protected]
Желаем вам успехов!