NPC Generator (work in progress)

Post Reply
Message
Author
User avatar
Leitz
Rider of Rohan
Rider of Rohan
Posts: 6769
Joined: Wed Sep 13, 2017 8:38 pm

NPC Generator (work in progress)

#1 Post by Leitz »

I like to create semi-generic NPCs for ship crews and mercenary units, and a friend challenged to me re-study the Go programming language. The two tasks converged, and I went back to some old code and got to work.

Go is a C-ish language with some of the warts cleaned off. Crewgen is being updated to include a CLI version. Sadly, updates broke the web version but fixing that is on the TODO list. Go cross-compiles easily and I have working Linux.amd64 and Darwin(MacOS).amd64 versions tested. The Linux.arm64 and Windows.amd64 binaries are built but not yet tested as I haven't fired up my RPi and I don't have a Windows box.

If this would be useful to you, the code is easy to get and then compile on your machine. Bug reports are always welcome and you can customize the data files to your campaign. If you'd like to get into Go programming, the current focus is teamgen and the test suite. Tests are easy to write and very useful. There's also a TODO list if you want to try something else.
User avatar
Leitz
Rider of Rohan
Rider of Rohan
Posts: 6769
Joined: Wed Sep 13, 2017 8:38 pm

Re: NPC Generator (work in progress)

#2 Post by Leitz »

Added a "-list" option to show the available Careers and Jobs. While a Career has a default job (Army:Infantry), any job can be used with any career. You can have a Navy:Other or a Merchant:Commando if you feel so inclined. What you do in the confines of your own campaign is none of my business. :twisted:

Successful test on Linux/arm64.
User avatar
GreyWolfVT
Wants a special title like Scott
Posts: 34151
Joined: Wed Oct 30, 2013 10:02 pm
Location: Central Vermont
Contact:

Re: NPC Generator (work in progress)

#3 Post by GreyWolfVT »

hmm I shall check this out sounds like it could help me when I can't think of things. :)
“All men did have darkness. Some wore it in the form of horns. Some bore it invisibly as rot in their souls.”
― Paul S. Kemp, Shadowbred
"If good people won’t do the hard things, evil people will always win, because evil people will do anything."
― Paul S. Kemp, Twilight Falling

Algrim Tirion Dwarf - HarnMaser
Boffin (Boff) Stonegirdle Dwarf Thief - Earthquakes in the Jotens
Dalin Silverhand Dwarf Thief - Barrowmaze
Pimlan 'Pim' Greenstride Halfling Fighter/Thief - Revisiting the Classics: Mod 1 “Return to Kendall Keep”
Razillin Tinkerboot Gnome Cleric - Hedge's Forgotten Realms Adventures (2e)
Torvik Shadowhood Dwarf Fighter/Thief - Nocturne
DM - GreyWolf's Mystara Adventures - AD&D 2e
User avatar
Leitz
Rider of Rohan
Rider of Rohan
Posts: 6769
Joined: Wed Sep 13, 2017 8:38 pm

Re: NPC Generator (work in progress)

#4 Post by Leitz »

It's currently geared for Traveller-ish games:

Code: Select all

bin/teamgen_linux.amd64 -career Merchant -job commando
Jessia Michaud [F] 447A6A Age: 31 human
3 terms Merchant
GunCbt(Any)-2, Survival-1, Demolitions-1
But it could feasibly be forked and made to work with most any skills based game like BRP derivatives (RuneQuest, Call of Chtulululu, etc) or the old FASA Star Trek game. I'd have to change a few things in the base code for someone to have an easy job of that, but it could be done.
User avatar
Leitz
Rider of Rohan
Rider of Rohan
Posts: 6769
Joined: Wed Sep 13, 2017 8:38 pm

Re: NPC Generator (work in progress)

#5 Post by Leitz »

Well, both brain cells are fried, but I started on a BRP output version. I need to fix the aging since it's affected by terms. Currently 'terms' says how many skills you get. These skills would actually be "+X", where the career/job starts out with minimum levels. So if an Merchant began with Streetwise 40, this would make them Streetwise 45.

Code: Select all

Josue Alford [M] Age: 40 human 5 terms Merchant
Str: 6  Con: 13  Siz: 9  Int: 8  Pow: 9  Dex: 9  
Streetwise-5
Admin-5
Vehicle-10
Trader-5
Carousing-5
User avatar
Leitz
Rider of Rohan
Rider of Rohan
Posts: 6769
Joined: Wed Sep 13, 2017 8:38 pm

Re: NPC Generator (work in progress)

#6 Post by Leitz »

In the time twixt then and now I've gone back to a very simple Python programming style; it makes things portable (as portable as one can get with Python these days) and is much easier to read. The project is called Village People (no reference to any musical group implied) and the next big step is to parse a text file of roles (blacksmith, farmers, etc) in the village and generate the families for each role. There's no hard-coded limit so you could do an entire city if your computer can handle it.

If you want to use it, you just need the make_peeps.py and data/build_village_peeps.db files. If you'd like to play with the code, it's standard Python 3.x and Sqlite. The README has instructions on how to do a custom database if you like, or you can use the one provided.

Code: Select all

./make_peeps.py 
Mohammed Lecuyer [M] Age: 16
Str: 14 Int: 12 Wis:  6 Dex:  7 Con: 11 Cha: 12
Temperament: Protector
Plot: Crimes of love
Positive Traits: Witty
Negative Traits: Humorless
The current version supports AD&D (the default), BRP, and Hauberk style stat blocks.

BRP

Code: Select all

./make_peeps.py -g brp
Elisabeth Delattre [F] Age: 16
Str: 11 Con:  7 Siz: 12 Int: 15 Pow: 13 Dex: 15 App: 13 Edu:  6
Temperament: Provider
Plot: Erroneous judgment
Positive Traits: Just
Negative Traits: Judgmental
Hauberk (which only uses the stat modifiers)

Code: Select all

./make_peeps.py -g hauberk
Deandrea Hermans [F] Age: 16
Str:  0 Int:  0 Wis:  2 Dex:  0 Con:  0 Cha:  0
Temperament: Counselor
Plot: Revolt
Positive Traits: Flamboyant
Negative Traits: Childish
You can generate a family with reasonable medieval ages, assuming what we know of medieval life spans is remotely correct.

Code: Select all

./make_peeps.py -f --f-age 25
Patron: Ward Allain [M] Age: 25
Str:  7 Int:  8 Wis:  7 Dex: 14 Con:  9 Cha: 12
Temperament: Fieldmarshal
Plot: The enigma
Positive Traits: Bold
Negative Traits: Scatterbrained

Matron: Jodi Allain [F] Age: 23
Str: 11 Int: 15 Wis: 14 Dex:  5 Con: 11 Cha:  6
Temperament: Inventor
Plot: Overcoming the Monster
Positive Traits: Patient
Negative Traits: Hypocritical

Jake Allain [M] Age:  6
Str:  5 Int:  9 Wis:  5 Dex:  5 Con: 13 Cha:  7
Temperament: Champion
Plot: Precursors
Positive Traits: Honorable
Negative Traits: Cowardly

Bobbie Allain [M] Age:  5
Str:  5 Int: 11 Wis:  5 Dex:  5 Con: 13 Cha:  8
Temperament: Champion
Plot: Precursors
Positive Traits: Honorable
Negative Traits: Cowardly

Donnie Allain [M] Age:  4
Str:  3 Int: 12 Wis:  3 Dex:  3 Con: 15 Cha: 10
Temperament: Champion
Plot: Precursors
Positive Traits: Honorable
Negative Traits: Cowardly

Shan Allain [F] Age:  3
Str:  3 Int: 15 Wis:  3 Dex:  3 Con: 10 Cha: 12
Temperament: Champion
Plot: Precursors
Positive Traits: Honorable
Negative Traits: Cowardly
User avatar
GreyWolfVT
Wants a special title like Scott
Posts: 34151
Joined: Wed Oct 30, 2013 10:02 pm
Location: Central Vermont
Contact:

Re: NPC Generator (work in progress)

#7 Post by GreyWolfVT »

Sorry I've kind of forgotten all about this Leitz. If there is anything I can do to assist HTML & CSS wise I will try to remember. :)
“All men did have darkness. Some wore it in the form of horns. Some bore it invisibly as rot in their souls.”
― Paul S. Kemp, Shadowbred
"If good people won’t do the hard things, evil people will always win, because evil people will do anything."
― Paul S. Kemp, Twilight Falling

Algrim Tirion Dwarf - HarnMaser
Boffin (Boff) Stonegirdle Dwarf Thief - Earthquakes in the Jotens
Dalin Silverhand Dwarf Thief - Barrowmaze
Pimlan 'Pim' Greenstride Halfling Fighter/Thief - Revisiting the Classics: Mod 1 “Return to Kendall Keep”
Razillin Tinkerboot Gnome Cleric - Hedge's Forgotten Realms Adventures (2e)
Torvik Shadowhood Dwarf Fighter/Thief - Nocturne
DM - GreyWolf's Mystara Adventures - AD&D 2e
Post Reply

Return to “General RPG discussion”