Petite astuce Comment coder un générateur de nom de caractère simple

Dans ce didacticiel, je vais vous montrer comment créer un générateur de noms aléatoires simple, que vous pouvez utiliser pour donner aux NPC aléatoires une grande variété de noms uniques ou donner des suggestions de noms de joueurs lorsqu'ils cliquent sur un bouton. Nouveau nom bouton.

Le système de base est assez simple et peut être construit dans pratiquement tous les langages de programmation et environnements disponibles. Nous allons le construire dans Unity, qui devrait être relativement facile à configurer. Si vous voulez extraire le code directement, vous pouvez obtenir les fichiers du projet auprès de GitHub.

Prêt? Allons-y.


Configurer l'interface

Créez un nouveau fichier JavaScript dans Unity et appelez-le. nomGénérateur. Mettez le code suivant dedans:

 var currentName: String = "Alex"; function OnGUI () if (GUI.Button (Rect (10,10,100,50), "Nouveau nom"))) CreateNewName ();  GUI.Box (Rect (120,10,200,50), currentName);  fonction CreateNewName () 

Ajoutez ensuite ce script à un gameObject dans la scène (mettre sur la caméra principale fera l'affaire).

Cela crée une interface simple qui affichera le nom qui sera créé. Si vous l'essayez, le bouton ne fera rien pour le moment, bien que.


Créer le prénom

Ajouter des syllabes

Pour générer un nouveau prénom, nous allons d'abord créer une liste de syllabes à partir desquelles le nom sera assemblé. Ajoutez ce code:

 var firstNameSyllables: Array; function Start () firstNameSyllables = new Array (); firstNameSyllables.Push ("mon"); firstNameSyllables.Push ("fay"); firstNameSyllables.Push ("shi"); firstNameSyllables.Push ("zag"); firstNameSyllables.Push ("blarg"); firstNameSyllables.Push ("éruption"); firstNameSyllables.Push ("izen"); 

Vous voudrez ajouter un peu plus vous-même; c'est de loin pas assez!

Mettez le prénom ensemble

Pour choisir un nom, adaptez le CreateNewName () fonctionne comme ceci:

 function CreateNewName () // Crée un prénom avec 2-3 syllabes var firstName: String = ""; var numberOfSyllablesInFirstName: int = Random.Range (2, 4); pour (var i: int = 0; i < numberOfSyllablesInFirstName; i++)  firstName += firstNameSyllables[Random.Range(0, firstNameSyllables.length)];  var firstNameLetter: String = ""; firstNameLetter = firstName.Substring(0,1); firstName = firstName.Remove(0,1); firstNameLetter = firstNameLetter.ToUpper(); firstName = firstNameLetter + firstName; 

Ce code choisira au hasard deux ou trois fois des syllabes dans la liste et les chaînera. Ensuite, il enlèvera la première lettre, la mettra en majuscule et la collera devant le nom.

Lorsque vous appuyez sur le bouton maintenant, vous obtenez un nom assemblé de manière aléatoire dans la liste! Vous pouvez l'essayer dans cette version:

Voici quelques noms générés:

  • Zagmonshi
  • Izenzag
  • Shifay
  • Rashblarg

Mais ce générateur de noms est assez simple. Multiplions nos résultats en ajoutant les noms de famille.


Créer le nom de famille

Ajouter des syllabes

Ajoutons une nouvelle liste de syllabes qui ne seront utilisées que dans le nom de famille. Le nouveau code ressemble à ceci:

 var lastNameSyllables: Array; function Start () lastNameSyllables = new Array (); lastNameSyllables.Push ("malo"); lastNameSyllables.Push ("zak"); lastNameSyllables.Push ("abo"); lastNameSyllables.Push ("wonk"); 

Comme avant, ce sont juste pour vous aider à démarrer. Ajouter plus de syllabes pour le rendre plus diversifié!

Mettre tous ensemble

Ensuite, adaptez le CreateNewName () fonctionner de cette façon:

 function CreateNewName () // Crée un prénom avec 2-3 syllabes var firstName: String = ""; var numberOfSyllablesInFirstName: int = Random.Range (2, 4); pour (var i: int = 0; i < numberOfSyllablesInFirstName; i++)  firstName += firstNameSyllables[Random.Range(0, firstNameSyllables.length)];  var firstNameLetter: String = ""; firstNameLetter = firstName.Substring(0,1); firstName = firstName.Remove(0,1); firstNameLetter = firstNameLetter.ToUpper(); firstName = firstNameLetter + firstName; //Creates a last name with 1-2 syllables var lastName: String = ""; var numberOfSyllablesInLastName: int = Random.Range(1, 3); for (var j: int = 0; j < numberOfSyllablesInLastName; j++)  lastName += lastNameSyllables[Random.Range(0, lastNameSyllables.length)];  var lastNameLetter: String = ""; lastNameLetter = lastName.Substring(0,1); lastName = lastName.Remove(0,1); lastNameLetter = lastNameLetter.ToUpper(); lastName = lastNameLetter + lastName; //assembles the newly-created name currentName = firstName + " " + lastName; 

Maintenant, au lieu d’obtenir un seul nom de la liste, le générateur crée un prénom, met un espace après, puis crée un nom de famille..

Vous pouvez l'essayer dans cette version ici:

Voici quelques noms générés:

  • Blargshiizen Maloabokor
  • Zagblarg Maloson
  • Rashzag Wonkli
  • Shifay Abomalo

Ajouter un suffixe à la fin du nom

Dernier détail, ajoutons un suffixe qui apparaîtra à la fin du nom de famille. Ajoutez ce code au début de la nomGénérateur scénario:

 var nameSuffixes: Array; function Start () nameSuffixes = new Array (); nameSuffixes.Push ("fils"); nameSuffixes.Push ("li"); nameSuffixes.Push ("ssen"); nameSuffixes.Push ("kor"); 

Ensuite, ajoutez ce qui suit à CreateNewName (), avant que le nom ne soit assemblé à la fin:

 // ajoute un suffixe au nom de famille avec une chance de 50% si (Random.Range (0,100) < 50)  lastName += nameSuffixes[Random.Range(0, nameSuffixes.length)]; 

Maintenant, il y a 50% de chances qu'un nom généré reçoive un nom typique se terminant par.


Conclusion

Dans ce tutoriel, je vous ai montré le code de base pour former un générateur de noms. Vous pouvez étendre cela avec des variables et des fonctionnalités supplémentaires. Essayez d'ajouter:

  • Deuxième prénom
  • Plus de suffixes de noms (III, OBE, etc.)
  • Préfixes (monsieur, dame, comte, etc.)
  • Autres ajouts ("Glagnarr the Destructor")

Vous pouvez également utiliser cette idée pour d'autres tâches: attribuez des noms aléatoires aux vaisseaux spatiaux ou créez des descriptions d'éléments aléatoires. Devenir fou!


Références

  • Crédit image: Identification par Rémy Médard du projet Noun