Closed nicolealexawalter closed 3 years ago
all items will be equally likely to promote diversity and prevent me from having to re-generate an npc just to get someone unique and interesting
also if I add a whole bunch of new races then it will keep me from having a million orcs generated at random, ya know?
create a config file that will enumerate each options for all given characteristics (at least race, age, gender, sexuality, stats - other items can be 1:1 for entries in the given list) and allow me to dictate their commonality in a simple way
as in, a race.config could look like: Human,70% Elf,10% Dwarf,10% Halfling,5% Gnome,5%
Need to have word generator (#7) completed for generation of names.
will need one language file per race (so each race can have its own custom name sounds)
Consider filtering languages by sounds? (EG all words with two consecutive consonants (foot, feet), all words with SH/CH/TH/DR/... sounds, etc)
could also filter language by the scripts of books - text of the Bible for one language, text of moby dick for another, etc
will be included in the race file, not done programmatically
Allow for race mixing :) select two (or four) races at random and combine them into a half & half
Notes on ticket (concerning this ticket + #7 ):
/Name /Age /Sexuality /Gender /Race, /Stats Is /Trait, Values /Ideal, Feels /Emotion Born /Locale, grew up /activity, currently works as a /trade
Silura amiable old androphilic queer Orc Values Creativity | Feels Surprised | STR -2 / DEX +2 Born in a magical womb, grew up as a knight's squire, currently is a aristocrat.
Need files for: [-] trades
as in, write out different combinations of races that make sense to me
eg Tiefling:Tiefling with Blue Skin Need word generators for each race:
orcs have 1 very long name, elves have 4 names, halflings have 1 short name and 1 long name, etc
EG all words with two consecutive consonants (foot, feet), all words with SH/CH/TH/DR/... sounds, poly/bi/mono-syllabic words, words that end/start with certain sounds, etc see https://grammar.yourdictionary.com/word-lists/words-with-double-letters.html could also filter language by the scripts of books - text of the Bible for one language, text of moby dick for another, etc
To-Do
Implement markov chain functionality
Modify markov chain to take in arrays of individual words and split them apart so I can generate new words instead of word chains
Generate NPC text using hardcoded values and add it into the pane
3a. Add a reset button so I can clear the pane as needed!
set up basic random implementation
4a. Use basic markov chain to generate example name
4b. Set up random choosing of file & non-file values
create / finalize non-race files
5a. Trades / remove duplicate rows / set up (a / an / the) prefixes
5b. Activities / create file / make sure they follow (grew up) prefix
5c. Locales / expand the list of locations / set up (on a / in a / near the) prefixes
5d. Emotions / clean up any I dont understand?
5e. Ideals / make sure they fit into (Values X) format
5f. Traits / make sure they all fit as adjectives
load files into global variables
set up race/language files & name/race generation
7a. start with basic master race file (human-human) and testing language file
7b. ensure we can automatically get the language file for a given race and use it as below
i. build markov chains for each language
ii. build function to generate name for a given race using the relevant markov chain
iii. load in master race list
iv. IN NPC GEN, select a race at random
v. grab primary race
vi. use primary race to generate name from relevant markov chain
vii. set descriptive race as race value
viii. set up basic human/elf test case to determine that it works!
Build out list of all primary races (see below for checklist)
Build out list of descrip races on each primary (see below for ideas)
Add both lists to races file!
Create a language file for each primary race and add it to repo (see below for ideas)
Add code to A) fetch raw language array, B) train chain on raw array, C) switch statement in determineName by primayrace
For adding the actual determination of name, consider the max length / number of names / how to conjoin them (`-,) 6a. consider adding code to create minimum length of word - could just generate a new word and append it to the word in generate word, and if it goes over max just trim it down! 6b. see below for considerations / ideas
MASTER RACE FILE
- should follow primary:description format
- dont forget to include half/quarter/mixed/1% races (any possible combinations!)
- dont forget to review all source material for PLAYABLE races & NPC races! (as in, certain creatures!)
- review race ideas in comment below
LANGUAGE FILES
- should each be totally distinct, as in...:
- all words with [two consecutive consonants](https://grammar.yourdictionary.com/word-lists/words-with-double-letters.html)
- all words with SH/CH/TH/DR/... sounds
- all poly/bi/mono-syllabic sounds
- words that end/start with certain letters/sounds
- specific types of words (from bible, moby dick, ancient writes, slang words from urban dictionary or AAVE)
- maybe literal writing of certain accents? Like, every word in english, but written out with a scottish accent??? (would include apostrophes and stuff, which would help keep the accent going)
- could customize to a races speech patterns (like an in S' or 's to words for Yuan-ti language!)
- latin names would be a good one to have
- lists of names or words from fictional languages? or place names from various places? or fictional times?
DETERMINING A NAME
- for each primary race, there should be a different way of determining a name for them
- each race should have different naming structures
- EG 1 very long name / 1 short name, 1 long name / 2 sets of 2 names connected via apostrophes to indicate full ancestry? / etc
FINAL TASKS
functionality accomplished! admittedly with tech debt (#48) but still
Actually, just do it as in the comment below. Split into three sections, with new values for the relevant ones!
Need a screen where I can generate a brand new NPC with the following features: