Estou fazendo um jogo (ou planejando, pelo menos) e, para fazer isso, preciso de uma maneira de gerar automaticamente nomes para os "chefes" do NPC (explicação longa e irrelevante aqui). Algo como este é um bom exemplo do que quero dizer.
Eu tenho uma idéia de que eu posso apenas construir um banco de dados de nomes por nacionalidade, talvez o primeiro / último par, e atribuí-los aleatoriamente, com uma lista de nomes ignorados, para que eu não tenha algo como Homer Simpson e seja processado ou algo assim.
O problema disso é que eu precisaria criar um enorme banco de dados de nomes para que isso funcionasse. Isso levaria uma eternidade ou custaria dinheiro, a menos que alguém já tenha uma lista de nomes disponível gratuitamente.
Eu tenho outra ideia em que faço pares aleatórios de vogais e consoantes, viro algumas e as adiciono, mas um programa rápido que gera esses nomes:
- Seermeecpa
- Cime
- Ofmiahwumafi
- Gozidi
- Effawided
(Para qualquer pessoa interessada no código, você pode vê-lo aqui )
Estes são ... meio que um bocado. Bem, exceto "Gozidi" - esse poderia funcionar. Ainda assim, a taxa de sucesso claramente não é muito boa.
Existe algo que eu possa fazer para tornar os nomes mais agradáveis (veja abaixo) ou devo começar a fazer essa lista? Posso de alguma forma imitar a maneira como os humanos decidem se um nome é decente ou não, com pelo menos alguma precisão? Eu prefiro algo assim a uma pesquisa em uma grande lista.
O que quero dizer com "melhor" é que, em vez de combinações aleatórias de caracteres (o que é, para ser justo), coisas que soam como nomes reais. Eles podem ser de qualquer cultura (ou parecer que são), reais ou imaginários, qualquer coisa, desde que seu americano estereotipado, burro e monolíngue como eu possa dizê-los sem muita dificuldade.
Se você precisar de mais esclarecimentos, vá em frente e pergunte. Não tenho muita certeza do que colocar aqui.
Adendo: Até onde eu sei, realmente não existem tags que se encaixam nessa questão tão bem. Se alguém que está aqui há mais tempo pode recomendar alguns, isso seria incrível.
fonte
Respostas:
A maioria dos geradores de nomes funciona através de algumas variações da cadeia de Markov , que são construções bastante notáveis (re markov le?) Que têm muitos usos em jogos, bem como em outros domínios.
A abordagem básica invoca uma lista de algum tipo. Estes não precisam ser razoavelmente grandes. O objetivo desta lista é apenas informar ao algoritmo quais sílabas provavelmente serão emparelhadas para uma determinada categoria de nome.
Isso permite que você crie listas diferentes para, por exemplo, nomes masculinos, femininos, sobrenomes ou nomes de diferentes culturas / regiões / espécies.
O tempo que você gastará aprimorando um algoritmo que reúne aleatoriamente sílabas inventadas de uma maneira agradável provavelmente será mais do que você gastaria apenas gerando uma lista de nomes que você acha que soa bem e se encaixam em um tema comum.
Não são muitas listas de nomes disponíveis. Faça o download do mais recente banco de dados de censo dos EUA para nomes modernos, facilmente separados por idade, sexo e etnia, ou pegue listas de nomes antigos nórdicos ou similares. Tudo isso é muito fácil de encontrar via Google; esse último link foi literalmente meu primeiro hit para "lista de nomes nórdicos".
fonte
A maioria dos nomes nos idiomas segue uma série de padrões. Por exemplo, nomes russos ou gregos podem ter cinco ou dez prefixos diferentes; portanto, se você encontrar um nome terminado com -ov, poderá suspeitar que seja russo porque ele se encaixa no padrão.
Se você quiser nomes reais (ou reais), acho que você deve começar a criar sua lista (que não deve ser tão longa) porque analisar nomes reais de algumas linguagens, encontrar seu padrão e criar um algoritmo para produzir esses nomes não vale a pena. o esforço na minha opinião.
Se você quiser nomes aleatórios que possam ser um nome em algum idioma, crie uma pequena lista de regras a seguir (como um subconjunto do acima). Já, o que você está fazendo é o seguinte: você fez uma regra sobre vogais e consoantes. Você pode adicionar um pouco mais de sobrenome, que deve terminar nessas 10 sílabas ou algumas consoantes podem ser seguidas apenas por vogais como 'q', seguidas apenas de 'u' e outras podem ser seguidas por outras consoantes como 's', seguidas de 't 'ou' k '. Novamente, isso é mais para criar algumas palavras que podem ser pronunciadas e parecem um pouco reais do que criar nomes reais.
Algo que pode ser relevante é a maneira como "Documentos, por favor" gera nomes. http://papersplease.wikia.com/wiki/List_of_names
fonte
Acho que a maneira mais fácil de fazer isso é usar um gerador de nome aleatório existente ou uma lista existente de nomes aleatórios que atendam aos seus requisitos. Depois guarde-o em algum lugar como uma lista. Quando você precisar de um nome aleatório, basta escolher a lista existente aleatoriamente.
fonte