Eu recomendo que você deixe o cliente fazer isso manualmente.
De uma perspectiva de custo, desta vez você tem sorte:
- Você espera não mais que 100 usuários / dia, possivelmente tão baixo quanto 10 / dia
- Você possui um sistema de autenticação, o que significa que as proibições podem ser permanentes
- Você tem um cliente que pode excluir nomes (com pouca frequência)
A realidade é que os 10 minutos que alguém levará para examinar as principais tabelas de classificação e banir nomes extremos - serão simplesmente mais baratos e mais confiáveis do que você gastando tempo com uma solução de engenharia (que terá problemas).
Com um número de reprodução tão baixo, é improvável que isso precise ser feito com frequência - mesmo uma vez por semana durante o pico é suficiente.
Mas tenho muito tempo, posso fazer algo certo?
Errado.
Você pode facilmente fazer algo errado, que é mais prejudicial para a marca do cliente do que não fazer nada.
Deseja usar o Regex para pegar todos os nomes ruins? Espero que você acerte perfeitamente e também filtre todos os falsos positivos de vários bancos de dados de nomes internacionais de pessoas reais:
https://en.wikipedia.org/wiki/Scunthorpe_problem
E mesmo que você gerencie o que foi mencionado acima com sucesso, os jogadores não são burros - eles encontrarão uma maneira fácil de contornar o sistema para criar um nome igualmente ofensivo que você não está entendendo.
No mínimo, você acabou de adicionar ainda mais trabalho para manter essas regras atualizadas, em comparação com o pequeno trabalho manual de apenas observar as pontuações e proibições mais altas.
Não, mas falando sério, este é um jogo infantil - o cliente deixou claro que não pode haver tolerância para nomes ofensivos. Tem que haver alguma coisa!
Se esse for o caso, honestamente, e você não pode tolerar nomes ofensivos. A única solução realista é não deixar seus jogadores criarem seus próprios nomes.
Esta é a solução que você encontrará em quase todos os sites de jogos infantis, como o Cartoon Network.
Em vez de fornecer uma entrada em branco, você oferece uma seleção de "partes de nome" pré-fabricadas. Por exemplo:
Um adjetivo, como "Incrível", "Fantástico", "Astucioso"
Um meio, como "Barbudo", "Olho de Laser", "Pirata"
Um substantivo, como "Mestre", "Vencedor", "Detector"
O que restringe os nomes de exibição a coisas como "Awesome Pirate Master".
Também faça uma rápida consideração de quais listas de palavras você está usando. Não faz sentido implementar esse sistema se o usuário for capaz de mexer em nomes para obter coisas que ainda soam ofensivas ou sujas.
Claro, também existe a possibilidade de duplicatas - mas você pode escrever isso (3 listas de 100 palavras, já fornece 1 milhão de nomes possíveis) devido ao número de jogadores que possui ou se necessário - você ainda pode verificar se ninguém mais tem o nome no registro.
Realisticamente, essa pode ser a solução mais eficaz se você estiver seriamente preocupado com os maus nomes. Mas você precisa fazer uma análise de custos e descobrir se vale a pena fazer esse sistema, mesmo se comparado a verificações manuais simples.