Praxxian / RPG-City-Generator

20 stars 10 forks source link

Feature requests #2

Closed MSWallack closed 2 years ago

MSWallack commented 3 years ago

First, let me say that I absolutely love your RPG City Generator. I came across it while looking for just this sort of thing to help me populate some towns that I'm creating both for a novel that I'm writing and/or for an RPG setting (in the same place as the events of the novel). In any event, there are a few things that I would love to see added to the generator (and I hope that you're [a] still developing the generator and [b] receptive to feature requests). I don't think that any of these suggestions would be particularly difficult to implement (though I'll admit that even though I work for a software development company, I haven't written any real code myself in ... well, I was writing it in Pascal...). So here are the things that I'd love to see:

1) Allow the user to indicate whether the setting is high or low magic (which may impact such things as the wizard tower or inventory of shops).

2) Allow a user to have a little input as to the setting of the town (e.g., in the forest, along a river, by a lake or ocean, etc.) and then add or omit certain professions based on the locale (e.g., no fishermen or boatwrights if no water).

3) I'm not sure if the nature of the people and/or businesses, etc., have anything to do with the information generated about the town (e.g., built on the place of an ancient ruin or war among thieves guilds). If not, never mind. If so, it would be great if the user could pick from some sort of list to direct what sort of town might be generated (e.g., I might need a peaceful agricultural town known for its ales).

4) Allow a user to indicate whether the town has nobility or not (or estates or not) or, perhaps, the percent of the town that might classify as nobility.

5) Similar to the previous, allow a user to indicate whether the town is prosperous, poor, or somewhere in between.

5) This one is probably the most difficult: The generator already handles spouses, but I wonder if it would be possible to add other sorts of familiar relationships (e.g., parents, grandparents, siblings, and children). Sometimes, this is obvious, but other times, less so.

I really hope that you're receptive to some or all of these sorts of additions to your generator, and I'd be happy to discuss any possible additions or changes. And whether you make changes or not, I'm grateful for your efforts and the generator that you've so generously provided to the RPG and writing communities.

Praxxian commented 3 years ago

I really appreciate your comment! Brightens my day that other humans have actually used this, haha. I haven't updated in a while, but mostly from lack of interest from other parties and also busy with my own home D&D games. I am certainly receptive to feedback, and it will reinvigorate me to develop this further.

  1. This was something I grappled with because magic is one of those things that is so different between settings. I sort of built this to be a foundation for medieval fantasy where you could add as much magic as you like and according to your own magic systems, since by default there is very little. E.g. you might have a high fantasy setting with no arcane magic, just magic from gods and the outer planes.

New locations like a wizard tower, monk's dojo, warlock lair, etc would not be difficult to implement, but where things become messy is determining what goods/services they can provide and for how much. One could spend a lot of effort pricing magical items from D&D, although there is some work out there that may be available for free to leverage. I will think more about this.

  1. This was my intention of the Major Industry setting, although I have yet to fully implement this as it is. I would like to develop this more. I think it may be more intuitive to have separate geographical features that can be ticked, and for each one a percentage of agriculture gets shifted away for them. E.g. something could be near both hills for mining and a lake, so peasants have a an equal chance of working in either mining, fishing, shipping, or typical agriculture.

  2. At the moment that general description comes from a roll table and does not have any real relationship to the generated data for people/businesses. However, personality stuff is rolled for people, and I could potentially shift/weight those rolls if the user selected some sort of disposition setting (scale of friendly, pleasant, neutral, rude, hostile). In that case I would take a look at the description generation to replace people descriptions and only leave in the things that aren't really reflected in the data, such as being a famous burial site. That way the peoples' disposition is always known and reflected in the data, and the descriptions are just flavor to take or leave.

  3. I have thought about this, too. I could expose these percentages as an Advanced Setting because it is a very crunchy sort of thing to tinker with.

  4. This is very related to #4. In fact, it may be worth coming up with some presets that the user normally picks from that sets the values in #4 behind the scenes, but if the user wanted to get really specific, they could choose Custom and input the ratios themselves to indicate this.

  5. Things like parents/children/siblings are inferred from people in the same family. E.g. 2 spouses and a child imply the spouses are the parents of the child. This can be a little unclear with fantasy races because their ages can be at unintuitive scales. A 38 year old elf is basically a child. I avoided putting this as an additional column because the table was getting so wide as it is. I could make this a little more explicit. The grandparents thing I have wrestled with, as there really isn't an explicit intergenerational family that gets created. Generally, I create individuals to match demographic trends (age/gender distributions), then I match them to couples, and then I match couples to children. Single parents and orphans are all possible, too. I have thought about adding in grandparents as another level in this, though. It would certainly make things feel more realistic. As long as I can make the demographics make sense, this would be cool to add.

MSWallack commented 3 years ago

Thanks. I really, really like your idea in response to #2. With regard to #6, I feel your pain. I was trying to think of ways to easily design something to accomplish this but it made my head hurt and it helped me remember one of the reasons that I became a lawyer instead of a programmer. Sigh.

Your answer regarding #3 does give me some comfort because now I know that I don't need to keep regenerating until the brief description of the town matches what I have in mind.

Also, while reading your response (way too late...) last night, I thought of two other things:

  1. Allow the user to designate new files to be used for names. I tend to use EBoN (Everchanging Book of Names) and use different files to reflect different types of names in different regions.

  2. I wonder if the races selection might become easier with a checkbox at the top for "Humans Only" so that a user designing a human-only town doesn't need to go through all of the individual racial frequencies below.

Praxxian commented 3 years ago

4&5 have been implemented together. Under the population, there is a dropdown set to "Average Prosperity" by default. "Destitute" means there are half as many non-peasant castes. "Prosperous" means there are twice as many. Selecting "Custom" lets you adjust the % for each caste. The sliders are set to whatever the last-non custom option you selected.

Note: if you don't see the new drop-down, you may have to ctrl+F5 to refresh.

MSWallack commented 3 years ago

Thanks! That is an excellent addition.

(And I just bought you some dice...)

Praxxian commented 3 years ago

Thanks! I am implementing natural features next.

MSWallack commented 3 years ago

Just curious to know if you've made any more progress.

Praxxian commented 3 years ago

Got a bit distracted, as I switched my roll20 game to Foundry (highly recommend, btw).

I do have a very basic version of the natural features working, but not public yet: image

So far forests/mountains create a lumber/mine business owned by a noble in the town. A large portion of would-be farmers are put to work in these businesses instead. I had started to create something similar with Oceans/lakes, but realized that these features would create businesses at different castes, and I have been thinking about how to implement them in the existing business generation logic. For instance, a fishing "business" could be a simple peasant, or it could be a large mercantile operation. Shipping would be owned by a merchant or noble, but mostly employ peasants. I was also thinking of making a ship a single business, including creating a name generation algorithm for them. Lots to think about here. I need to organize these thoughts a little better and make a plan on how best to implement them.

It might be better to release a simple version of Oceans/lakes, and build out some of this stuff as separate enhancements.

MSWallack commented 3 years ago

I'm not sure that I'd necessarily have lumber or mines owned by a noble. Maybe... But not always. Certainly, in medieval Britain a distant lord may have "owned" the lumber and mines, but policing that was difficult (or impossible). Mines were probably easier to police than lumber, but still difficult, especially in the most rural or distant areas. With regard to fishing, don't forget rivers (and the fishing there might or might not use small boats or rafts in addition to nets, traps, and other individual methods). The same might be true for lakes.

Anyway, glad to hear that development is ongoing. It's a cool tool.

Praxxian commented 3 years ago

The ownership question is tough because in a sort of generic European medieval setting, which I am not exactly an expert, it seems like you would need to be noble to have rights to such important natural resources. The concept of "ownership" is inherently a little tricky because property rights were vastly different back then. It's a simplification. I will do a little more research into that area.

I think I'll split up rivers, lakes, and ocean as separate features. The businesses available will be a combination of the city size and these features. For instance, any water-adjacent village, regardless of size, can have an independent fisherman. Basically a guy in a boat with maybe a buddy or two. A medium village along the river would probably have multiple fishermen and some local shipping/transport, whereas a town by an ocean might have a large fishing industry and harbors to support distant shipping/transport. A tiny ocean village? Probably just fishing and no real harbor to speak of.

MSWallack commented 3 years ago

OK... Crazy idea time. I have no idea whether this would be on the "gee, that's easy!" or "you might as well ask me to cure cancer" level of difficulty. Anyway, are you familiar with Watabou's village generator (https://watabou.itch.io/village-generator). It makes really cool little village maps (or bigger...). For the time, he is not working on implementing details about the map. I wonder, though, whether it would be possible to take the .json info created for each village and ... link? ... the information that your generator creates to the village map.

Oh, and note that the .json file can also be loaded into Watabou's city viewer app (https://watabou.itch.io/city-viewer) for a cool 3D flyaround rendering.

Praxxian commented 3 years ago

I have had this thought with other similar generators. Like if you could use these great existing map generators and create links to where you'd find everyone.

Wouldn't be trivial to implement, but not impossible. It's more a question of priority. I'd rather develop the quality and options of what you can make and leave those sorts of integrations for when I'm about 90% happy with the city generator on its own.

MSWallack commented 3 years ago

Makes sense... But a guy can dream, can't he?

Praxxian commented 3 years ago

Better natural features are live! Like I mentioned, I did a lot of reworking under the hood for how businesses are created and assigned workers, so I am hoping other things are not way out of whack. Things looked good on my trial runs. I might look at lowering the amount of miners/lumberjacks. It's a little high.

lefoudre commented 3 years ago

Found your generator yesterday, that's a great work, I love it ! If you want to make some translations, let me know, would love to help you.

MSWallack commented 3 years ago

Looking forward to playing around with it... If I could just get work and family to leave me alone for a while...

Praxxian commented 3 years ago

Not really related to these requests, but I also implemented dark styling with some other layout improvements. I also removed some random descriptors that had to do with prosperity and natural features since those are user-selected.

MSWallack commented 3 years ago

From my (very!) brief time spent playing with the updated version, I'm impressed!

Praxxian commented 3 years ago

Just FYI I added a new Change Log tab so that I can expose some updates for those that are curious. For example, I just added some name generation stuff. There's a 50-50 chance a name could be generated using Markov chains to mix up the names and make them more fantastical.

MSWallack commented 3 years ago

I like the change log. Everything is looking really good.

Quick thought: Perhaps add a checkbox or something at the top of the race section for "Humans only" to save some users the time of going through and changing each of the races to None.

Also, in the CSV/Excel export, the field "Manuerism" should be "Mannerism".

Praxxian commented 3 years ago

What a strange typo. Fixed!

Yeah I have been having choice paralysis on a lot of stuff I want to do with races, like custom name lists, but I could probably get a QOL improvement out before all that, haha.

On Thu, Nov 11, 2021 at 7:36 AM Michael Wallack @.***> wrote:

I like the change log. Everything is looking really good.

Quick thought: Perhaps add a checkbox or something at the top of the race section for "Humans only" to save some users the time of going through and changing each of the races to None.

Also, in the CSV/Excel export, the field "Manuerism" should be "Mannerism".

— You are receiving this because you were assigned. Reply to this email directly, view it on GitHub https://github.com/Praxxian/RPG-City-Generator/issues/2#issuecomment-966401520, or unsubscribe https://github.com/notifications/unsubscribe-auth/ANDNMVPKY5V5H5YJCLUNLYDULPPJFANCNFSM5AMFQJWA . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

-- Best Regards,

Chase

Praxxian commented 3 years ago

Updated with this feature. There's a dropdown above the variety option where you can choose if one race applies to the whole town.

With that, I think only 1 & 6 are still open.

MSWallack commented 3 years ago

Also 7

  1. Allow the user to designate new files to be used for names. I tend to use EBoN (Everchanging Book of Names) and use different files to reflect different types of names in different regions.

But in any event, this is getting better and better and has definitely become a go-to tool. Thanks for your continued hard work.

Praxxian commented 3 years ago

Here's a preview of what I am working on:

image

I don't want to tie the tool to a particular third party tool, but if you have a list of names, you can just paste them in here.

MSWallack commented 3 years ago

Is that going to be a copy & paste or will the user have the ability to point to a text file and say "use this"?

Praxxian commented 3 years ago

Name update (7) is live! For now, it is just copy+paste.

Edit: removed the link to an unrelated issue.

Praxxian commented 3 years ago

I had another request for adding magic level, so I think that will be my next focus.

Options: none, low, high

None: no magic locations, magic items, or spellcasting services. Low: rare magic locations, no magic items, and some low-level spellcasting services at magic locations. High: usually 1 magic location or more depending on size, has magic items, and spellcasting services for every level.

MSWallack commented 3 years ago

I'd suggest adding a "rare" level between none and low. A "rare" setting might have rare magic locations but no spellcasting services.

JamesPildis commented 3 years ago

I agree. That rare functionality might mean there's one hermit Wizard that sells his services or wares from a Wizard Tower, or a singular cleric that runs a hospital, etc.

Praxxian commented 2 years ago

I agree. That rare functionality might mean there's one hermit Wizard that sells his services or wares from a Wizard Tower, or a singular cleric that runs a hospital, etc.

What you are describing is what I intend for the "low" setting.

Going to track this in it's own issues: https://github.com/Praxxian/RPG-City-Generator/issues/8 https://github.com/Praxxian/RPG-City-Generator/issues/9

And multiple generations: https://github.com/Praxxian/RPG-City-Generator/issues/10

Btw, I recently added a little dice button to people and businesses that lets you reroll their name. I have some performance stuff to work on with that, but that's a QoL thing I always meant to implement.