After writing down the extensive catalog of attributes and skills, it's only natural that we have to create several characters to test things out. Characters (adventurers in this case) can be grouped in terms of their general capabilities and function; in many RPG games this would be a character class. In Age of Transcendence, there are no character classes; NPCs and players develop their skills as they see fit. In this model, "classes" are just suggestions on how a character may develop. Below, I call the classes "archetypes" and the development suggestions "level up strategies".
Spawn Adventurer From Archetype
An archetype is a configuration to build an infinite set of similar (in some aspects) adventurers. The parameters at the moment are:
- Race list
- Age range
- Alignment list
- Starting level range
- Level-up strategy list
When creating a character from an archetype, we choose a race from the race list, sample an age from the range, sample alignment from the list, sample a level from the range and choose a level up strategy. The interesting and complicated bit is the level-up strategy.
The level-up strategy is the configuration that the game logic uses to develop characters differently through the levels. For example, a level-up strategy for a fighter would focus on mostly improving strength, and focusing on skills such as body-building, heavy armor and weapon masteries, while one for a thief would focus on agility, daggers and/or bows and stealth skills.
The approach that I'm using is a mix of coarse and fine granularity weights, and it consists of:
- Attribute improvement weights: a weight value per attribute, so that when we want to allocate attribute points, we do weighted sampling.
- Well-rounded-ness: This is a scalar specifying how balanced a character will be. A balanced character will improve many attributes and skills, while an unbalanced will be more of a savant type, focusing heavily on a few skills, ignoring most others.
- Skill focus: A list of tuples (skill name, target mastery level, allow surpassing target mastery level).
- Skill category weights: A list of weights, one per skill category.
When we level up, we first allocate the unspent attribute points based on their respective weights.
Immediately after, we allocate a percentage of the unallocated skill points (based on wellroundedness: savants use more) to improve skills in the focus list, until we reach a target mastery level. When we reach the mastery level, we either never touch the skill again, or if we allow surpassing the target mastery level, we still consider it for advancement as explained below.
After we allocate focus skills, we have a remainder of skill points. These will be allocated to the rest of the skills, excluding the focus skills that have reached the target mastery and can't improve. The weight for each of these remainder skills is the product of a) the skill's category weight, b) the number of skills in the category and c) the distance of the skill's value to the required skill value of the maximum mastery we can achieve with the current attributes. (note: (b) looks odd but it's useful, as if we say that Offence (with about 10 skills) is as important as Adventuring (3 skills), it's 3 times more likely that a skill in Adventuring gets a point)
There's an extra important consideration. Some skills form subcategories, such as all "Weapon style"skills forming the "Weapon Style" subcategory, all "Melee weapon mastery" ones, etc. In these cases it's more typical that a character develops one or two more than others, rather than equally developing the whole selection. For this reason, I
Finally, well-roundedness is used every time we do weighted sampling by replacing the weights with "w = pow(w,2-well_roundedness)". It's also used for the skill subcategories in the same way.
Below are some example level-up progression results using matplotlib. Title shows some info (Yes, some is bonkers, like neutral paladins). Y axis is the skill value, with grid lines at mastery levels (30 is Master, 50 is Grandmaster). X axis shows attributes (first 5) and skills. Darker colors show values at earlier levels, while lighter colors show values at later levels, as explained in the legend. The images are large, so you might need to open them in a separate window, or zoom.
Still here? Well, there are videos of these progressions too :)
Here still? Here's my spreadsheet with the draft level-up strategy configuration. Well-roundedness seems to have an inverse effect, so I'd say that the graphs were helpful in noticing that :)
|Weapon style [two-handed]||Grandmaster||Master||Master|
|Weapon style [one-handed]||Grandmaster|
|Weapon style [dual-wielding||Expert+|
|Weapon style [ranged]||Master|
|Melee weapon mastery [blunt]|
|Melee weapon mastery [slashing]||Master|
|Melee weapon mastery [daggers]||Master|
|Melee weapon mastery [polearms]||Expert+|
|Ranged weapon mastery [bows/crossbows]||Master|
|Ranged weapon mastery [slings/blowpipes]|
|Ranged weapon mastery [thrown]|
|Sleight of hand||Expert+|
|History and legends||Expert+||Adept|
|Make accessories and utility|
|Magic school mastery [command]|
|Magic school mastery [alteration]|
|Magic school mastery [divination]|
|Magic school mastery [creation]|
|Magic school mastery [destruction]||Master|
(Formatting (bold, colors) is not copied over unfortunately, I'll update this if I find out how)