Consejo rápido cómo codificar un generador de nombres de caracteres simples

En este tutorial, te mostraré cómo crear un generador de nombres aleatorio simple, que podrías usar para dar a los NPC al azar una gran variedad de nombres únicos o dar sugerencias a los nombres de jugadores cuando hacen clic en un Nuevo nombre botón.

El sistema básico es bastante simple, y puede integrarse en casi cualquier lenguaje de programación y entorno disponible. Lo construiremos en Unity, que debería ser relativamente fácil de configurar. Si desea consultar el código directamente, puede obtener los archivos de proyecto de GitHub.

Listo? Vámonos.


Configurar la interfaz

Crea un nuevo archivo JavaScript en Unity y llámalo. nombreGenerador. Pon el siguiente código en él:

 var currentName: String = "Alex"; función OnGUI () if (GUI.Button (Rect (10,10,100,50), "Nuevo nombre")) CreateNewName ();  GUI.Box (Rect (120,10,200,50), currentName);  función CreateNewName () 

A continuación, agregue este script a un gameObject en la escena (poner en la cámara principal hará).

Esto crea una interfaz simple que mostrará el nombre que se creará. Si lo intentas, el botón no hará nada ahora, sin embargo..


Crear el primer nombre

Añadir algunas sílabas

Para generar un nuevo nombre, primero crearemos una lista de sílabas a partir de las cuales se ensamblará el nombre. Añade este código:

 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 ("rash"); firstNameSyllables.Push ("izen"); 

Usted querrá agregar algunos más usted mismo; esto no es suficiente!

Poner el primer nombre juntos

Para elegir un nombre, adapte el CrearNombreNombre () funciona como tal:

 function CreateNewName () // Crea un primer nombre con 2-3 sílabas var firstName: String = ""; var numberOfSyllablesInFirstName: int = Random.Range (2, 4); para (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; 

Este código elegirá aleatoriamente las sílabas de la lista, dos o tres veces, y las unirá. Luego eliminará la primera letra, la pondrá en mayúscula y la pegará de nuevo delante del nombre.

Cuando presionas el botón ahora, ¡obtienes un nombre ensamblado al azar de la lista! Puedes probarlo en esta compilación:

Estos son algunos de los nombres generados:

  • Zagmonshi
  • Izenzag
  • Shifay
  • Rashblarg

Pero este generador de nombres es bastante simple. Vamos a multiplicar nuestros resultados agregando apellidos..


Crear el apellido

Añadir algunas sílabas

Agreguemos una nueva lista de sílabas que solo se usarán en el apellido. El nuevo código se ve así:

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

Como antes, estos son sólo para empezar. Añade más sílabas para hacerlo más diverso.!

Poniendolo todo junto

A continuación, adapta el CrearNombreNombre () funciona de esta manera:

 function CreateNewName () // Crea un primer nombre con 2-3 sílabas var firstName: String = ""; var numberOfSyllablesInFirstName: int = Random.Range (2, 4); para (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; 

Ahora, en lugar de solo obtener un nombre de la lista, el generador creará un primer nombre, pondrá un espacio detrás de él y luego creará un apellido.

Puedes probarlo en esta compilación aquí:

Estos son algunos de los nombres generados:

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

Añadir un sufijo al final del nombre

Como detalle final, agreguemos un sufijo, que aparecerá al final del apellido. Agregue este código al comienzo de la nombreGenerador guión:

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

A continuación, agregue lo siguiente a CrearNombreNombre (), antes de que el nombre sea ensamblado al final:

 // agrega un sufijo al apellido con una probabilidad del 50% si (Random.Range (0,100) < 50)  lastName += nameSuffixes[Random.Range(0, nameSuffixes.length)]; 

Ahora hay un 50% de probabilidad de que un nombre generado tenga un nombre típico que termine.


Conclusión

En este tutorial, te mostré el código básico para formar un generador de nombres. Puede ampliar esto con variables y características adicionales. Intenta agregar:

  • Segundo nombre
  • Más sufijos de nombre (III, OBE, etc.)
  • Prefijos (señor, dama, conde y similares)
  • Otras adiciones ("Glagnarr el Destructor")

También puede utilizar esta idea para otras cosas: asigne nombres a las naves espaciales o cree descripciones de elementos al azar. Enloquecer!


Referencias

  • Crédito de la imagen: Identificación por Rémy Médard del Proyecto Noun.