Suggerimento rapido come codificare un semplice generatore di nomi di caratteri

In questo tutorial, ti mostrerò come creare un semplice generatore di nomi casuali, che potresti usare per dare agli NPC casuali un'enorme varietà di nomi univoci o dare un suggerimento al nome del giocatore quando fanno clic su un Nuovo nome pulsante.

Il sistema di base è abbastanza semplice e può essere costruito praticamente in qualsiasi linguaggio di programmazione e ambiente disponibile. Lo svilupperemo in Unity, che dovrebbe essere relativamente facile da configurare. Se vuoi controllare direttamente il codice, puoi ottenere i file di progetto da GitHub.

Pronto? Muoviamoci.


Configura l'interfaccia

Crea un nuovo file JavaScript in Unity e chiamalo NameGenerator. Inserisci il seguente codice:

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

Quindi aggiungi questo script a a gameObject nella scena (inserendo la fotocamera principale).

Questo crea una semplice interfaccia che visualizzerà il nome che verrà creato. Se lo provi, il pulsante non farà nulla al momento, però.


Crea il nome

Aggiungi alcune sillabe

Per generare un nuovo nome, creeremo prima un elenco di sillabe da cui verrà assemblato il nome. Aggiungi questo codice:

 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 ( "eruzione"); firstNameSyllables.Push ( "Izen"); 

Vorresti aggiungerne qualcun altro; questo di gran lunga non è abbastanza!

Metti il ​​nome insieme

Per scegliere effettivamente un nome, adattare il CreateNewName () funzione in questo modo:

 function CreateNewName () // Crea un nome con 2-3 sillabe var firstName: String = ""; var numberOfSyllablesInFirstName: int = Random.Range (2, 4); per (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; 

Questo codice selezionerà casualmente le sillabe dalla lista, due o tre volte, e le stringa insieme. Quindi rimuoverà la prima lettera, la in maiuscola e la rimetterà davanti al nome.

Quando premi il pulsante ora, ottieni un nome assemblato casualmente dalla lista! Puoi provarlo in questa build:

Ecco alcuni dei nomi generati:

  • Zagmonshi
  • Izenzag
  • Shifay
  • Rashblarg

Ma questo generatore di nomi è abbastanza semplice. Moltiplichiamo i risultati aggiungendo i cognomi.


Crea il cognome

Aggiungi alcune sillabe

Aggiungiamo una nuova lista di sillabe che saranno usate solo nel cognome. Il nuovo codice ha questo aspetto:

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

Come prima, questi sono solo per iniziare. Aggiungi più sillabe per renderla più diversificata!

Mettere tutto insieme

Quindi, adattare il CreateNewName () funziona in questo modo:

 function CreateNewName () // Crea un nome con 2-3 sillabe var firstName: String = ""; var numberOfSyllablesInFirstName: int = Random.Range (2, 4); per (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; 

Ora, invece di ottenere un solo nome dall'elenco, il generatore creerà un nome, inserirà uno spazio dopo di esso e quindi creerà un cognome.

Puoi provarlo in questa build qui:

Ecco alcuni dei nomi generati:

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

Aggiungi un suffisso alla fine del nome

Come dettaglio finale, aggiungiamo un suffisso, che apparirà alla fine del cognome. Aggiungi questo codice all'inizio del NameGenerator script:

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

Quindi, aggiungere il seguente a CreateNewName (), prima che il nome si riunisca alla fine:

 // aggiunge un suffisso al cognome con una possibilità del 50% se (Random.Range (0,100) < 50)  lastName += nameSuffixes[Random.Range(0, nameSuffixes.length)]; 

Ora c'è il 50% di possibilità che un nome generato ottenga un nome tipico che termina.


Conclusione

In questo tutorial, ti ho mostrato il codice di base per formare un generatore di nomi. Puoi estenderlo con variabili e caratteristiche extra. Prova ad aggiungere:

  • Nomi medi
  • Altri suffissi del nome (III, OBE e così via)
  • Prefissi (Sir, Lady, Count e simili)
  • Altre aggiunte ("Glagnarr the Destructor")

Puoi usare questa idea anche per altre cose: dai nomi casuali alle astronavi o crea descrizioni di oggetti casuali. Impazzire!


Riferimenti

  • Credito immagine: identificazione di Rémy Médard dal progetto Noun