15 October, 2016

The string

Here's the basic structure of the string I'll be working with. It's in a human readable format, but I'll ensure that any time the string is exported out of the website it gets encoded, perhaps with a base64_encode, or maybe with a gzinflate. I don't necessarily want to make the encoding too strong, this is just a simple personal project designed for a bit of fun.

The string format follows...

[xxxxxx][xx][xx....][xxxx][x..x][xx..xx][xx][xx][xx][..]
Core
        Name
            Equipment
                    Traits
                          Skills
                                Edges
                                        Race Path
                                            Cultural Path
                                                Progress Path 1
                                                    Subsequent Progress Paths
Core - first six digits determine basic stats, race and culture, 

First Digit (Base Attributes): 1 = 1122, 2 = 1212, 3 = 1221, 4 = 2211, 5 = 2112, 6 = 2121, 7 = 3111, 8 = 1311, 9 = 1131, 0 = 1113 {where the attributes in order are: Combat, Influence, Knowledge, Magic}

Second Digit (Race): a = mixed blood, A = human, b = fey blood, B = fey, c = mutant blood, C = mutant, d = naga blood, D = naga, e = ogre blood, E = ogre, f = kitsune blood, F = kitsune, g = tengu blood, G = tengu, h = kami blood, H = kami, i = oni blood, I = oni.

Third Digit (Culture): a = local, b = urban, c = rural, d = mountain, e = swamp, f = plains, g = forest, h = north ice, i = south desert 

Fourth Digit (number of adult paths begun): a = 1, b = 2, c = 3, d = 4, e = 5, etc. {if letter is capitalised, character is honourable}

Fifth Digit (level of honour/reputation): a = 1, b = 2, c = 3, d = 4, e = 5, etc. {if letter is capitalised, character is tainted}

Sixth Digit (inventory): a = 1, b = 2, c = 3, etc. number of items (first will be a weapon, second will be an armour, then other items)  

Name - next two digits determine the character's name {common given names ??as per culture?? and family names ??as per race??}

Equipment - next few digits determine current useful equipment 2*(1+x) {where x is determined by the sixth digit}

First Digit: a = unarmed, b = tanto, c = wakizashi, d = katana, e = yari, f = bo staff, g = no-dachi, h = kyu, i = racial weapon 1, j = racial weapon 2, (still working on the specifics here).  
[if capitalised, item is enchanted]

Second Digit: a = no armour, b = no armour + helmet, c = no armour + sleeves, d = no armour + helmet + sleeves (+1 hp), e = no armour + leg greaves, f = no armour + leg greaves + helmet (+1 hp), g = no armour + leg greaves + sleeves (+1 hp), h = no armour + leg greaves + sleeves + helmet (+1 hp), i = light armour (+1 hp), j = light armour + helmet (+2 hp), k = light armour + sleeves (+2 hp), l = light armour + helmet + sleeves (+2 hp), m = light armour + leg greaves (+2 hp), n = light armour + leg greaves + helmet (+2 hp), o = light armour + leg greaves + sleeves (+3 hp), p = light armour + leg greaves + sleeves + helmet (+3 hp), q = heavy armour (+3 hp), r = heavy armour + helmet (+3 hp), s = heavy armour + sleeves (+3 hp), t = heavy armour + helmet + sleeves (+4 hp), u = heavy armour + leg greaves (+3 hp), v = heavy armour + leg greaves + helmet (+4 hp), w = heavy armour + leg greaves + sleeves (+4 hp), x = heavy armour + leg greaves + sleeves + helmet (+4 hp)  
[if capitalised, character displays a family crest]

Third and subsequent digits: after the first two letters...
a 0 followed by a letter is an unequipped weapon or armour
a 1 followed by a letter is a foodstuff
a 2 followed by a letter is common equipment 
a 3 followed by a letter is uncommon equipment
a 4 followed by a letter is an occupational tool 
a 5 followed by a letter is personal trinket
a 6 followed by a letter is a religious icon to a specific race (letter indicates race)
a 7 followed by a letter is a magical focus
a 8 followed by a letter is a quest item
a 9 followed by a letter is a companion

Traits - next four digits determine the traits that might currently apply to a character

The first digit reflects traits that are predominantly physical: 1 = tired only, 2 = injured only, 3 = injured and tired, 4 = empowered only, 5 = empowered and tired, 6 = empowered and injured, 7 = empowered and injured and tired, 8 = knocked out [1], 9 = knocked out [2]

The second digit reflects traits that are predominantly mental: 1 = dazed only, 2 = confused only, 3 = dazed and confused, 4 = focused only, 5= focused and dazed, 6 = focused and confused, 7 = focused and dazed and confused

The third digit reflects other debilitating traits: 1 = poisoned only, 2 = diseased only, 3 = poisoned and diseased, 4 = cursed only, 5 = cursed and poisoned, 6 = cursed and diseased, 7 = cursed and diseased and poisoned 

The fourth digit reflects traits that are predominantly beneficial: 1 = waiting only, 2 = hidden only, 3 = waiting and hidden, 4 = blessed only, 5 = blessed and waiting, 6 = blessed and hidden, 7 = blessed and hidden and waiting

Skills - a variable number of digits determine the array of skills at the character's disposal

The first digit indicates how many skills in total are possessed by the character

The remaining digits in this section are a complete collection of the skills available (there are 60 total skills)

Edges - a variable number of digits determine the array of edges at the character's disposal

The first digit indicates how many edges in total are possessed by the character 

The remaining digits are in pairs.
        a c followed by a letter is a combat edge
        an i followed by a letter is an influence edge
        a k followed by a letter is a knowledge edge
        an m followed by a letter is a magic edge

Race Path - next four digits determine racial path level and any bonuses acquired

First Digit (Check digit): Should match the second digit in the string (if digit is lowercase, racial path may never achieve advanced progression beyond lvl 3)  

Second Digit (Levels in this Progression): 0 = just began this path, no progress yet, 1 = lvl 1, 2 = lvl 2, 3 = lvl 3, 4 = lvl 4, 5 = lvl 5, 6 = lvl 6

Culture Path - next four digits determine base cultural path and any bonuses acquired

First Digit (Check digit): Should match the third digit in the string (if digit is lowercase, cultural path may never achieve advanced progression beyond lvl 3)

Second Digit (Levels in this Progression): 0 = just began this path, no progress yet, 1 = lvl 1, 2 = lvl 2, 3 = lvl 3, 4 = lvl 4, 5 = lvl 5, 6 = lvl 6

Progress Paths - each subsequent four digits determine adulthood path and any bonuses acquired

First Digit (Path Identifier): a-z,A-Z = 52 general occupational paths, 0-4 = racial specific paths (cross referenced to second digit), 5-9 = culturally specific paths (cross referenced to second digit)

Second Digit (Levels in this Progression): 0 = just began this path, no progress yet, 1 = lvl 1, 2 = lvl 2, 3 = lvl 3, 4 = lvl 4, 5 = lvl 5, 6 = lvl 6

As you might be able to tell from the various races, and the current range of weapon selections, I'm tentatively running with a fantasy setting heavily inspired by Japanese folklore. Anything not specifically indicated by letters can be derived by a simple formula from those elements of a character that have been specified.

Character generation will follow 10 basic steps.

1. Where were you born? (N = 0010, E = 0100, S = 1000, W = 0001)

This starts the process of character generation. The location of a character's birth limits what races they might belong to, limits the types of cultures they might have been brought up in, and provides an inherent attribute bonus.

2. What blood runs in your veins? (Human, Fey, Naga, Ogre, Kitsune, Tengu, Oni, Kami)

Central: Human or Any 1/2 Blood Race
North: Human, 1/2 Fey, Full Fey, 1/2 Kitsune, Full Kitsune
East: Human, 1/2 Fey, Full Fey, 1/2 Naga, Full Naga
South: Human, 1/2 Fey, Full Fey, 1/2 Orge, Full Ogre
West: Human, 1/2 Fey, Full Fey, 1/2 Tengu, Full Tengu
(Oni and Kami are available anywhere, but only once a player has reached certain objectives within the game.)

3. What are you known for? (Fighting +1000, Silver Tongue +0100, Smarts +0010, Mysterious +0001)

Between the birth location of the character and this step, the base array of character attributes are determined. 

4. What kind of upbringing did you have? (urban, rural, military, cult, plains, ice, desert, forest, mountains)

Central: Urban, Rural, Military or Cult only
North: Rural, Military, Cult, Plains or Ice
East: Rural, Military, Cult, Plains or Forest
South: Rural, Military, Cult, Plains or Desert
West: Rural, Military, Cult, Plains or Mountains
(Just as Oni and Kami are unlockable races, I might include some unlockable cultures for players who have achieved certain exploration goals within the game)

5. What sort of job have you been doing? (apprentice, courtier, merchant, rogue, scholar, student, wanderer, warrior)

Anyone can start with any of these starting occupations. Some occupations may seem more appropriate to some race or cultures (and I might provide a bonus synergy level when this occurs, but I haven't specifically decided this yet.) 

6. Distribute 6 points across race/culture/role

A screen displays the race, culture and starting occupation of the character. The player distributes six points across them. A character may not spend more than 3 points on race if they are only half blooded, otherwise the expenditure of points is unrestricted.  

7. Allocate benefits from race/culture/role

Based on previous choices, if a character has accumulated any skills, they now get the opportunity to specify what those skills might be. They then get the opportunity to specify any edges they might have acquired (it is specifically done in this order because many edges have prerequisite skills that need to be acquired before they may be selected.)

8. Select two starter item packs

Depending on the homeland, race, culture, occupation, and whether or not certain edges were chosen, a range of starting equipment options will be provided. A player will be able to choose two of these for their character.
  
9. Choose a name

I'm in two minds about this, but at the moment I'm tending toward the idea of having a specific list of given names and family names. The range of given names will be determined by the birth location, the race and the occupation of the character (maybe 10 of each). The range of family names will be determined by the race, and the culture of the character. This ensures characters have names that match the context of the setting and the choices they've made so far. Name will also help contextualise the character from a gender perspective.

10. Choose an image (maybe)

I'm thinking of a modular "paper-doll" approach to character images. A few basic image structures with a couple of modular components indicating different hairstyles, adornments, colourings, etc. I haven't included the image functionality into the string, but this would probably be added as two more digits integrated into the "name" element. Additional components might be added into the character image based on equipment chosen (eg. armour, necklace, family crest, etc.).

After this, a character is ready to explore the world, and ready to be encoded into a string. 
Post a Comment