Namens-Kreationen

Wiedereinmal alle Energie in die Spielidee gesteckt, und richtig kreative Namen für Charaktere, Städte, ganze Rassen oder Planeten bleiben auf der Strecke? Ein Wortbildungs-Algorithmus schafft Abhilfe.

Der kreative Algorithmus

Aber nicht nur für diesen Zweck, sondern auch für die dynamische Erstellung von Namen während eines Spiels eignen sich Wortbildungs-Algorithmen. Auf einen dieser Algorithmen, den der Paarbildung aus einer gegebenen Wortsammlung, werde ich hier näher eingehen. Im Prinzip funktioniert dieser so, dass ein String mit Worten vorgegeben wird und der Algo anhand dieser Sammlung untersucht, welcher Buchstabe wie häufig auf einen anderen folgen kann. Mit diesen gefundenen Paarbildungsregeln werden anschließend neue Worte gebildet.

Am einfachsten funktioniert das, indem man für jedes der 255 ASCII-Zeichen einen eigenen String anlegt. Dann geht man die Wortsammlung Buchstabe für Buchstabe durch und schreibt den jeweils folgenden Buchstaben in den String des aktuellen ASCII-Codes.

Für die Wortsammlung "donaudampfschiffkapitän" sieht die Paarbildung dann so aus:
Erster Buchstabe ist ein "d", der zweite ein "o". In den "d"-String wird also als erstes ein "o" eingetragen.
Auf das "o" folgt ein "n": in den "o"-String wird somit ein "n" eingetragen usw.

Hier ist die so entstandene vollständige Liste der möglichen Paare aus "donaudampfschiffkapitän":

a --> ump
c --> h
d --> oa
f --> sfk
h --> i
i --> ft
k --> a
m --> p
n --> a
o --> n
p --> fi
s --> c
t --> ä
u --> d
ä --> n

Was nichts anderes bedeutet als: auf ein "a" kann ein "u", ein "m" oder ein "p" folgen. Auf ein "c" immer nur ein "h" usw.

Um nun ein Wort zu kreieren, wird bei einem zufällig gewählten Buchstaben aus der Wortsammlung angefangen. Als Beispiel nehmen wir den 5. Buchstaben aus "donaudampfschiffkapitän", das ist ein u.
Anhand der Paarbildungs-Liste können wir sehen, dass nach einem "u" nur ein "d" erlaubt ist. Also nehmen wir dieses, unser Wort lautet nun "ud".
Nach dem "d" haben wir die Wahl zwischen "o" und "a". Die zufällige Wahl fällt auf "a", es entsteht "uda".
Nach dem "a" haben wir die Wahl zwischen 3 möglichen Folgebuchstaben usw.

Mit dieser Wortsammlung sind noch keine allzu kreativen Namen zu gewinnen. Je mehr Auswahl aber an möglichen Folgebuchstaben besteht, desto kreativer erscheinen die Namen. Dabei sollte man jedoch folgende Dinge beachten:

  • Es sollte eine Wortsammlung gewählt werden, in der viele Buchstaben mehrfach mit wechselnden, aber auch gleichen Partnern vorkommen.

  • Doppellaute sind zu vermeiden, da dann z.B. auf ein "f" wieder ein "f" folgen kann, auf dieses wiederum eines usw.

  • der letzte Buchstabe der Wortsammlung muss mindestens noch einmal irgendwo früher im Wort vorkommen, damit dieser mindestens einen Folgepartner besitzt und der Algo an dieser Stelle nicht hängenbleibt.

  • Die Wortsammlung sollte (muss aber nicht zwingend) um Großbuchstaben, Leerzeichen, Satzzeichen, Sonderzeichen und -laute usw. bereinigt sein und nur aus Kleinbuchstaben bestehen.

  • Bei aufeinanderfolgenden Konsonanten, z.B. in "wortkreationen" ist zu beachten, dass es für den Algo nicht verboten wäre, ein Wort mit "rtkr" an den unmöglichsten Stellen zu bilden, z.B. am Wortanfang. Abhilfe schaffen hier zusätzlich eingefügte Vokale.

 

Eine typische einigermaßen bereinigte Wortsammlung, die aus einem hier benutzen Absatz entstanden ist, kann z.B. so aussehen:

deralgorithmusadaptiertemehroderiwenigererkenbaradenostiludiesp
rachederavorgegebenenewortsamlungemanasolteinmalomitenglischenu
deutschenundandersprachigenostringsexperimentierenauchauschlies
lichefachbegrifederonamenakoeneninteresantesein

 

Schauen wir uns das entstehende Paarbildungsarray etwas näher an:

a --> ldprdcvmnslncuucmkn
b --> aee
c --> hhhhhhhh
d --> eaeeieeaee
e --> rrmhrnrrnnsdrgbnnwminnunrnxrnrnsfgdrnnnrssi
f --> ae
g --> oeeeelesr
h --> mreeeialeb
i --> tewglentsgnmeecfnn
k --> eo
l --> guutoiii
m --> uelaaiee
n --> iboeegamguuddogtaaaeitt
o --> rdsrrlmsne
p --> trre
r --> aitoiekaaagtsaiieioe
s --> atpaoccpteclae
t --> hieiseesriee
u --> sdndtncs
v --> o
w --> eo
x --> p

Wie man sieht sind nun die meisten Buchstaben des Alphabets vertreten, und die meisten haben auch mehrere mögliche Partner. Dass hier und da ein Buchstabe mehrfach in einem String vorkommt, ist nicht nur egal, sondern sogar erwünscht: dieser wird mit größerer Wahrscheinlichkeit als seine Konkurrenten ausgewählt, und zwar mit derselben Wahrscheinlichkeit, mit der das Paar in der Wortsammlung aufgetreten ist. Auf ein "e" wird im Beispiel recht häufig ein "n" oder "r" folgen, was typisch für die deutsche Sprache ist. Auch die Bildung von typisch deutschen Folgen wie "st", "ch" und "sch" ist vorprogrammiert, wogegen es z.B. nie zu einem typisch englischen "sh" kommen kann.

Der Algorithmus adaptiert also mehr oder weniger erkennbar den Stil bzw. die Sprache der vorgegebenen Wortsammlung. Man sollte einmal mit englischen, deutschen und anderssprachigen Strings experimentieren. Auch ausschließlich Fachbegriffe oder Namen können interessant sein.

Eine Beispielliste von zufällig gebildeten Worten mit einer Länge von 4-12 Zeichen kann nun so aussehen:

Alimach
Nten
Apene
Tework
Engsapte
Osthmegeml
Udendedena
Ehap
Danod
Edergedapes
Prinin
Rigersc
Enakeh
Hmeheniw
Angosprende
Eresch
Stsewos
Gengert
Tenichme
Orinachine

Na, das sieht doch schon fast nach Figuren und Orten aus einem Fantasy-Roman aus. Auch wenn das ein oder andere Ergebnis vielleicht eher lustig oder gar unbrauchbar erscheint - immerhin kann man die meisten Worte fast mühelos lesen und aussprechen.

Den Algorithmus in Aktion kann man hier sehen: WortCreator (in HTML/JavaScript).
Für das kommentierte JavaScript-Listing einfach den Quelltext anzeigen lassen.

Viel Spaß!
J. Diehl

 

 

<< zurück zu Tutorials


(c) 2003 by J. Diehl