nicolealexawalter / Dungeons-and-Dragons-Utility-Tool

https://nicolealexawalter.github.io/Dungeons-and-Dragons-Utility-Tool/
0 stars 0 forks source link

Village Generator #10

Open nicolealexawalter opened 3 years ago

nicolealexawalter commented 3 years ago

Copy & Pasted from previous project - text not refined at all since I originally posted it 4 years ago:

Dynamically create a village - create a list of buildings and what each building needs - i.e.; a blacksmith needs a mine and a well and 3 laborers, a mine needs 15 laborers, a well needs 1 laborer. For every 15 laborers there must be 1 trading post or farm (for food), and etcetera.

The generator could choose the number of starting buildings, randomly chosen, based of the size of the village. For example, from the list of all building, for a city, 100 are chosen that are then expanded upon. Also for each building there is a 5% chance that it is imported (or each building has a custom % chance that it is imported), and there could be a master screen for each building. Also there should be Thieves Guilds, Cults, etcetera (basically operate off of the existing list of all possible building types).

For the size of the village, you could: a) choose a starting amount of buildings (10, 100, 1000?) or b) click an "expand" button (which could add a series of residences - each residence populated by workers, each worker needed a job, each job filling up job-slots in existing job-buildings or creating new job-buildings to fill the job-slots within, etcetera).

Try to look at historical or anthropological documents to see what each building will require.

Ideally, as each new desired building is generated, an existing map (created/displayed on screen at the click of "Generate") would have buildings dynamically drawn on it. Each building, at the end of generation, you would then be able to click on an receive information (i.e.; who lives there, what their jobs are, etc).

So for the "laborers required" they should be paired to homes in twos, and then it should be decided whether or not to give them parents living with them or somewhere else, to make them pregnant or give them children (both of these likely based off of their ages), etc. These increases in the population then factor into the rates of crime, etc.

Ideally at the end there would be graphs created (alongside the central, displayed map) that could display interesting statistics about the village. For the graphs to mean something (like population over time), then I would have to be recording the population from the beginning on and watch as it grows (but then I would also have to know how long each population increase takes, & etcetera. Could do this based off a series of turns, so that in each turn children can be born, etc. Of course this is almost an entirely different of doing it than from above, because above the idea is to create a current-day representation of a village/living area, rather than to dynamically create on over "time". Both work, I just have to choose which way I want. ---

It could be something like I create an internal calendar with all needed events - like Day 0: Smithy founded. Now on Days 100, 101, 120, & 147 there is scheduled the creations of a Well, a Farm, a Farm, & a Common House housing 15 laborers and 7 family members of laborers. And then after the creation of a common house I would say that on Day 300, Day 325, Day 350 (/etc) that certain people move out of the common house. This, however, is a lot more in depth than the other way of doing it.)

Would also be nice to have a "Percentage Completed" bar. Would be calculated doing "last date of calendar" / "current date on calendar" or "number of buildings left to be produced" / "current number of buildings produced"... Something like that.

Allow building of the map as an SVG (with zooming/panning)? Allow export as PNG for user-editing?

Also, I'd like to put them on a grid and be able to draw the trade routes (imports/export), the most frequented areas (might need statistics for bars/taverns, could even say who would go there based off the total population of the village), etc. This way I could do some pathfinding algorithms through the village.... etcetera.

One day I could turn this into a "series of villages" generators, where the imports of one village are the exports of another...

/r/proceduralgeneration

For each person in the village, figure out their wealth level (maybe dynamically generating some wealthy individuals (or already generated business owners?)) and for nobles, figure out what sorts of servants they'd have, etc etc.

When choosing the owner of a business, 35% a new person is generated to own it, 25% an existing worker is elevated to business owner, and 40% chance an existing (other) business owner also owns this business. Then, for any person who owns at least 5 businesses, they are a noble and get a special nobility home, etcetera etcetera.

nicolealexawalter commented 3 years ago

review #12 if I ever get serious about this - one comment in particular may be very useful (about using other books)

nicolealexawalter commented 3 years ago

I think there should be tables for creating villages/tows/countries/etc in some of the books

encapsulated in village folder in last repo