Я рекомендую вам просто позволить клиенту сделать это вручную.
С точки зрения затрат, на этот раз вам повезет:
- Вы ожидаете не более 100 пользователей в день, возможно, до 10 в день
- У вас есть система аутентификации, что означает, что запреты могут быть постоянными
- У вас есть клиент, который с удовольствием удаляет имена (редко)
Реальность такова, что те 10 минут, которые понадобятся кому-то, чтобы просмотреть топ-листы лидеров и запретить любые экстремальные имена, будут просто дешевле и надежнее, чем вы тратите время на инженерное решение (которое будет иметь проблемы).
При таком малом количестве игр маловероятно, что это нужно будет делать часто - даже одного раза в неделю во время пика, вероятно, будет достаточно.
Но у меня много времени, я могу что-то сделать правильно?
Неправильно.
Вы можете очень легко сделать что-то не так, что более вредно для бренда клиента, чем ничего не делать вообще.
Хотите использовать Regex, чтобы поймать все плохие имена? Лучше надеяться, что вы все сделаете правильно, а также отфильтруете все ложные срабатывания из нескольких баз данных международных имен реальных людей:
https://en.wikipedia.org/wiki/Scunthorpe_problem
И даже если вы успешно справитесь с вышеперечисленным, игроки не глупы - они очень легко найдут способ обойти вашу систему, чтобы создать столь же оскорбительное имя, которое вы не поймете.
Как минимум, вы только что добавили еще больше работы по обновлению этих правил по сравнению с небольшой ручной работой - просто смотреть на самые высокие оценки и банить.
Нет, но серьезно, это детская игра - клиент дал понять, что для оскорбительных имен не может быть никакой терпимости. Там должно быть что-то!
Если это действительно так, и вы не можете терпеть оскорбительные имена вообще. Единственное реалистичное решение - просто не позволять игрокам создавать свои собственные имена.
Это решение вы найдете практически на всех детских игровых сайтах, таких как Cartoon Network.
Вместо того, чтобы вводить пустые данные, вы выбираете готовые «части имени». Например:
Прилагательное, такое как «Удивительный», «Фантастический», «Хитрый»
Середина, такая как «Бородатый», «Лазерный глаз», «Пират»
Существительные, такие как «Мастер», «Победитель», «Детектор»
Что ограничивает отображаемые имена такими вещами, как «Awesome Pirate Master».
Также быстро рассмотрите, какие списки слов вы используете. Нет смысла внедрять эту систему, если пользователь может поиграть с именами, чтобы получить вещи, которые по-прежнему звучат оскорбительно или грязно.
Конечно, есть возможность для дубликатов, но вы можете либо списать их (3 списка по 100 слов, уже дает 1 миллион возможных имен) из-за того, что у вас мало игроков, либо, если необходимо, вы можете проверить, что никто другой не имеет имени при регистрации.
На самом деле, это может быть наиболее эффективным решением, если вы серьезно обеспокоены плохими именами. Но вам нужно провести анализ затрат и выяснить, стоит ли даже делать эту систему действительно по сравнению с простыми ручными проверками.