Je fais un jeu (ou je prévois au moins) et pour ce faire, j'ai besoin d'un moyen de générer automatiquement des noms pour les "boss" des PNJ (longue explication et non pertinente ici). Quelque chose comme ça est un bon exemple de ce que je veux dire.
J'ai une idée que je peux simplement créer une base de données de noms par nationalité, peut-être les premières / dernières paires, et les attribuer au hasard, avec une liste de noms ignorée, donc je n'ai pas quelque chose comme Homer Simpson et je suis poursuivi ou quelque chose.
Le problème, c'est que je devrais créer une énorme base de données de noms pour que cela fonctionne. Cela prendrait une éternité ou coûterait de l'argent, sauf si quelqu'un a déjà une liste de noms disponibles gratuitement.
J'ai une autre idée où je fais des paires aléatoires de voyelles et de consonnes, en retourne quelques-unes et les ajoute ensemble, mais un programme rapide qui fait cela a généré des noms comme ceux-ci:
- Seermeecpa
- Cime
- Ofmiahwumafi
- Gozidi
- Effawided
(Pour toute personne intéressée par le code, vous pouvez le voir ici )
Ce sont ... une sorte de bouchée. Eh bien, sauf "Gozidi" - celui-là pourrait fonctionner. Pourtant, le taux de réussite n'est clairement pas très bon.
Y a-t-il quelque chose que je pourrais faire pour rendre les noms plus agréables (voir ci-dessous), ou devrais-je commencer à faire cette liste? Puis-je en quelque sorte imiter la façon dont les humains décident si un nom est décent ou non, avec au moins une certaine précision? Je préférerais de beaucoup quelque chose comme ça à une recherche dans une grande liste.
Ce que je veux dire par "plus agréable", c'est qu'au lieu de combinaisons aléatoires de caractères (ce qui est, pour être juste), des choses qui ressemblent à des noms réels. Ils peuvent être de n'importe quelle culture (ou sonner comme ils sont), réels ou imaginaires, n'importe quoi, tant que votre Américain stupide et monolingue comme moi peut les dire sans trop de problèmes.
Si vous avez besoin de précisions supplémentaires, allez-y et demandez. Je ne sais pas trop quoi mettre ici.
Addendum: Pour autant que je sache, il n'y a vraiment pas de balises qui correspondent à cette question si bien. Si quelqu'un qui est ici depuis plus longtemps peut en recommander, ce serait génial.
la source
Réponses:
La plupart des générateurs de noms fonctionnent via une variante de Markov Chain , qui sont des constructions assez remarquables (re markov le?) Qui ont de nombreuses utilisations dans les jeux, ainsi que dans d'autres domaines.
L'approche de base invoque une liste quelconque. Ceux-ci n'ont pas besoin d'être assez énormes. Le but de cette liste est simplement d'indiquer à l'algorithme quelles syllabes sont susceptibles d'être appariées pour une catégorie de nom donnée.
Cela vous permet de constituer différentes listes, par exemple des noms masculins, féminins, des noms de famille ou des noms pour différentes cultures / régions / espèces.
Le temps que vous passerez à peaufiner un algorithme qui assemble au hasard des syllabes composées de manière agréable sera probablement plus long que vous ne passeriez à générer une liste de noms qui vous semblent bons et correspondent à un thème commun.
Il existe de nombreuses listes de noms disponibles. Téléchargez la dernière base de données du recensement américain pour les noms modernes facilement séparés par âge, sexe et origine ethnique, ou récupérez des listes d' anciens noms nordiques ou similaires. Ce sont tous assez faciles à trouver via Google; ce dernier lien était littéralement mon premier coup pour «liste de noms nordiques».
la source
La plupart des noms dans les langues suivent une série de modèles. Par exemple, les noms russes ou grecs peuvent avoir cinq ou dix préfixes différents, donc si vous trouvez un nom se terminant par -ov, vous pouvez suspecter son russe car il correspond un peu au modèle.
Si vous voulez de vrais noms (ou des vrais), je pense que vous devriez commencer à construire votre liste (qui ne devrait pas être si longue) car analyser les vrais noms de certaines langues, trouver leur modèle et créer un algorithme pour produire de tels noms ne vaut pas la peine l'effort à mon avis.
Si vous voulez des noms aléatoires qui pourraient être un nom dans une langue, vous pouvez construire une petite liste de règles à suivre (comme un sous-ensemble de ce qui précède). Déjà, ce que vous faites, c'est que: vous avez établi une règle concernant les voyelles et les consonnes. Vous pouvez ajouter quelques autres noms comme les noms de famille devraient se terminer par ces 10 syllabes ou certaines consonnes peuvent être suivies uniquement par des voyelles comme «q» suivies uniquement par «u» et d'autres peuvent être suivies par d'autres consonnes comme «s» suivies de «t 'ou' k '. Encore une fois, c'est plus pour créer des mots qui peuvent être prononcés et se sentir un peu réels que de créer des noms réels.
Quelque chose qui peut être pertinent est la façon dont "Papers, Please" génère des noms. http://papersplease.wikia.com/wiki/List_of_names
la source
Je pense que la façon la plus simple de le faire est d'utiliser un générateur de noms aléatoires existant ou une liste existante de noms aléatoires qui répondent à vos besoins. Ensuite, stockez-le quelque part sous forme de liste. Lorsque vous avez besoin d'un nom aléatoire, choisissez simplement dans la liste existante au hasard.
la source