It looks like you're new here. If you want to get involved, click one of these buttons!
Title: Arena / Daggerfall Unity
Authors: Bethesda Softworks / Daggerfall Workshop
Language: C#
Years of development: 1994 /2021
In 1994, Bethesda Softworks released Arena, a computer roleplaying game with a large world full of procedurally generated characters and locations. The content generation included creating culturally appropriate names for people that you meet. These names would be given when you talk to them, like so:
Each of the names would be generated according to different sets of rules. For the European-inspired fantasy races (Bretons, Nords, Imperials), these would involve simple combination of a prefix and suffix. For example, the male Bretons names have 169 variations, each comprised of a combination of one of 13 suffixes and 13 prefixes:
The 13 prefixes for male Breton names are: Agr-, Alab-, And-, Bed-, Dun-, Edw-, Gond-, Mord-, Per-, Rod-, Theod-, Trist-, and Uth-.
The 13 suffixes for male Breton names are: -ane, -ard, -astyr, -istair, -istyr, -ore, -oryan, -yctor, -yn, -ynak, -yrick, -yval, and -ywyr.
This would be guaranteed to lead to comprehendible fantasy names like "Alabard", Theodyrick", or "Peryn". However, for the Redguard race, the algorithm for generating names is a bit more complicated. Here is the code for generating names as recreated for Daggerfall Unity. This is a project that recreates Daggerfall, which is the sequel to Arena. It faithfully uses the same set of rules and word list as the original Arena.
// Gets random Redguard name which follows 0+1+2+3(75%) (male), 0+1+2+4 (female) pattern
string GetRandomRedguardName(NameBank nameBank, Genders gender)
{
// Get set parts
string[] partsA, partsB, partsC, partsD;
if (gender == Genders.Male)
{
partsA = nameBank.sets[0].parts;
partsB = nameBank.sets[1].parts;
partsC = nameBank.sets[2].parts;
partsD = nameBank.sets[3].parts;
}
else
{
partsA = nameBank.sets[0].parts;
partsB = nameBank.sets[1].parts;
partsC = nameBank.sets[2].parts;
partsD = nameBank.sets[4].parts;
}
// Generate strings
uint index = DFRandom.rand() % (uint)partsA.Length;
string stringA = partsA[index];
index = DFRandom.rand() % (uint)partsB.Length;
string stringB = partsB[index];
index = DFRandom.rand() % (uint)partsC.Length;
string stringC = partsC[index];
string stringD = string.Empty;
if (gender == Genders.Female || (DFRandom.rand() % 100 < 75))
{
index = DFRandom.rand() % (uint)partsD.Length;
stringD = partsD[index];
}
return stringA + stringB + stringC + stringD;
}
The strings referred to here can be seen in this file. The code works as described on the unofficial Elder Scrolls wiki:
Names for male Redguards in Arena consist of a prefix followed by a vowel followed by a consonant, sometimes followed by a suffix. Redguards have no surnames.
The 43 prefixes for male Redguard names are: B, Ba, Bl, Br, C, Ca, Ch, Cr, D, Dh, F, Fh, Fl, Fr, G, Gh, Gl, Gr, K, Kh, Kl, Kr, L, Lh, M, Ma, Mh, N, Nh, R, Rh, Rl, S, Sa, Sh, Shr, Sl, St, T, Th, Tl, V, Vl
The 5 vowels for male Redguard names are: a, e, i, o, u
The 15 consonants for male Redguard names are: b, c, d, h, j, k, l, m, n, p, r, s, t, v, z
The 22 suffixes for male Redguard names are: am, an, ar, e, em, en, er, im, in, ir, ke, 'kern, om, on, rn, t, ta, te, ten, um, un, ur
The Redguards, in their appearance, dress and architecture, are clearly inspired to an extent by Arabic and North African cultures. However, in attempting to make a generator that generates legible and 'Redguard-sounding' names, among the many possible names are several which have absurd or offensive meanings in English and other languages.
For example, this character's name is particularly apt in Portuguese:
Following the algorithm (picking from the lists in order: a prefix, a vowel, a consonant and then optionally a suffix), you can easily form a number of words that wouldn't be appropriate to label someone, including racial epithets or words close to them.
Given the huge range of possible names (74,175 male names), it's quite possible most players wouldn't see anything untoward, though some would. After all, the screenshot above was from my own playthrough, the seventh person I spoke to.
What would have been a more anti-racist way of procedurally generating fantasy names?
In later instalments of the series, certain Redguard name suffixes and prefixes took on a specific meaning, inspired by Arabic naming conventions. Instead of stringing together non-meaningful combinations of letters, they could have alternatively taken the approach of using larger name components, as seen with many of the other cultures names in the game.
And should projects that seek to recreate and restore old games, like Daggerfall Unity, reproduce code that can produce derogatory and racist names?