Citadel Generators · Legacy archive
Random Generator Chat
-
Random Generator Chat
#1Everybody in this forum can have access to the test site. Will dig up those details later and post.
A key piece to add value was to create content once and then use it in many different, useful ways. A random generator does this brilliantly of course.
Is there a way we can leverage the content we have into other useful random generators?
The 30's are awesome and lend themselves to generator usage if we can harness them. Can we develop a huge list of random generator themes that can use this content in ways that create a product that is useful?
My request for this:
Take a look at the current database structure of the ideas and see if we can harness them or if we need to redesign
Find some of the better random generators out there and share them here.
See if we can leverage our content to make something or design some inputs to encourage, automate the addition of the info.
Create a list of generator ideas we can make with our current content
Find the content that screams random generator and base some generators around it.
What other ideas can we use that are in place but need some work?
Honestly, the generators should probably turn into a main selling part of the site. Especially if we put a few things in place to organize/collect what we currently have and make it easier to add more.
Anybody know any server-side software that can make random village maps and such like the linked?
Links:
http://citygenerator.morgajel.net/citygenerator
Ok. Holy Shit
https://gist.github.com/morgajel/6089915
https://github.com/CityGenerator/CityGenerator
He just posted on G+ that he ran out of steam.
https://plus.google.com/112661873200782342936/posts
So, this might need some research. -
Re: Random Generator Chat
#2I think this has every type of generator possible. No need to brainstorm that anymore. Now just see what the Citadel content can offer. :)
http://chaoticshiny.com/taverngen.php -
Re: Random Generator Chat
#3Here's a neat idea for any equipment or item based content on Strolen's.
Some kind of merchant generator with inventory.
---------- Forwarded message ----------
From: JohnR
Johnn,
If there's been something in a recent article about this I apologize, as I get quite a bit of email from you (by choice!) but don't get to scan it all as carefully as I'd like. Anyway, here's my question:
What is a recommended tool or resource to determine what magical items (of any type or power) might be available for sale in a given town or city? I would be willing to spend a modest amount of cash for a good tool (preferably a PDF of some sort with tables), or if someone had a good generator out there that focuses on this, I'd like to know about it.
I spent nearly three hours with my players last game session generating availability of items on the fly in a modest sized town in which they've based their operations for the last 2 months or so in game time. I'm playing D&D 3.5, and my sole resource for this exercise was the DMG 3.5. I've since combed my collection of old Dragon magazines, and some other stuff I have, and while there are tons of general advice on city design, no one seems to address this specific issue with a handy set of tables. It was fun for everyone (especially the grimaces I was able to produce due to 'adventurers-with-gold' inflation), but I'd have prefered to spend that time moving the game forward.
I would like, ideally, to have some tables I could put into a spreadsheet, enter some parameters, and produce a list of potions, scrolls, weapons and armor, and rods staff and wands, based on the town's gold value, how long the adventurers have been spending money there, town disposition, and maybe a couple of other factors. But barring that, if a basic list could be produced I could pick and choose as needed according to my instincts about the mood of the town.
Thanks for any advice and or references.
Regards,
John -
Re: Random Generator Chat
#4You know, I remember seeing that article and thinking, "Man, I could totally come up with a generator for that." Guess this means I should get hopping. -
Re: Random Generator Chat
#5Can we make a generator engine that makes use of database tables to populate? I currently do not like the hard coded generators we have.
I would also want it to be recursive, so a generator result could be built from any number of other generator results, etc.
Table 1:
1. You find a [Random Color Table] [Random Weapon Table] in a [Random Container Table]
Random Container Table
1. A [Random Metal Table] Chest protected by a [Random Object Trap Table]
So basically, the output of a table is actually a primitive script. If there are special characters marking a table, eg:
"You find a @RandomColorTable @RandomWeaponTable in a @RandomContainerTable" You recursively resolve each of the @ objects until no further resolution is required, and then bubble up the final text output. Ideally, this result could have BBcode or simplified HTML within so links and formatting could be included.
The tables themselves should allow for weighted entries
At least, that is what I'd like to see in the generators.
I had some code close to done, but untested, and with the current Ebook activities won't have time to do it for a while.
-
Re: Random Generator Chat
#6
...database tables...
Easy. Ajax-powered would keep it responsive and allow user-selection without a full page reload. Processing is done server-side instead of client-side. No issue at all. Cuts down on bandwidth used too, since the database tables sit on the server, instead of being sent to the user.
...recursive...
This is probably the hardest part, because on the surface it's really simple, but by the same token, it's also very possible to get into an infinite loop. We'll absolutely have to have a sanity-checker that automatically checks to see if a candidate uses the current generator as an inserted field, and discard it if so.
...weighted entries...
This is merely a function of the selection algorithm. Not difficult at all. The issue will probably be in ensuring that people building the tables don't provide bad input for probabilities. There are ways around that, though. -
Re: Random Generator Chat
#7I know dick about coding and generators but I am liking what I am seeing here -
Re: Random Generator Chat
#8You know, we should have admin level editors for these generators. That way we code once, but the admins can make all sorts of generators, add additional content, etc...
Ideally we'll do it the same way we submit submissions on the main site. -
Re: Random Generator Chat
#9That is exactly where i am going with this, you populate the database i mentioned with a editor screen. -
Re: Random Generator Chat
#10I kinda figured you meant something along those lines. Just translated tech lingo to human speech ;) -
Re: Random Generator Chat
#11Mayhap I wasn't concise in my first and third bullets.
Take a look at the current database structure of the ideas and see if we can harness them or if we need to redesign
---
See if we can leverage our content to make something or design some inputs to encourage, automate the addition of the info.
The intent is that with some random generators we can almost use the current ideas. They are mostly broken up into different main categories. For some generators, that would be usable. For others we will have to define how to phrase things and specific requests depending on what random they enter. I thought it could be for admins or users. User inputted would just have to be approved by an admin prior to use in the random generators.
And if we need to redesign how we collect ideas with more details or a different format to better use them in the generators, then I would want to do that.
But definitely inputted once and used in many different ways. Many ways! That github link has a good template on how he set it up or even using what he already has working. https://gist.github.com/morgajel/6089915 -
Re: Random Generator Chat
#12No, im just streching with what id like to see. I see two types of generators - pure text like our current content, and generators that build results from the output of other generators. -
Re: Random Generator Chat
#13Also the current table structure needs expansion, no?
So we can tag the ideas with
type (dungeon, item, etc),
genre (low sorcery, high fantasy, dark fantasy, ski-fi, post apo, etc),
powerlevel (mundane, week, normal, strong, campaign defining, etc),
and so on.
We have sooooo much fine stuff here.
ALSO:
I want to make a PbP GM and player tool.
Some sandboxed player and GM targeted dice roll + post reminder + and other stuff that would be neat -o to have.
Probably won't make much of a difference for attracting newcomers, but sure as hell will please the regulars.
-
Re: Random Generator Chat
#14It all makes a difference! -
Re: Random Generator Chat
#15I dont know about the code stuff but let me say what I want.
I want a generator where I can just input lists into the blank spaces, and have buttons I click on to widgets into the generation string.
Fixed Text (generator widget - adjective) (generator widget noun) Fixed text (generator widget - whatever)
Like if I want a random car generator I can have the following tables/widgets set up
(color)
(make and model)
(car condition)
(modifications to car)
You find a (color)(make and model), the car is in (car condition) and has (modifications to car) -
Re: Random Generator Chat
#16I feel like this is something I can take reasonable charge of. Or at least make decent headway to get us started down the right track. If there's something I've gotten better at recently, it's taking hold of stumbling projects and forcing them onward to completion (or at least to deployment; most of the ones I deal with are continually being improved upon, so there isn't any final "we're done!").
As such, I've made a Trello board for tracking ideas and progress: https://trello.com/b/gN74wmBL/strolen-s-citadel-generators
It's public, anyone can view it, if you'd like to be assigned to the board, just send me a PM with your Trello email so I can add you.
For the moment, it's just got this thread's highlights added. I'll start fleshing it out more as things progress. -
Re: Random Generator Chat
#17Awesome.
Sounds like your expertise in picking up monkeys and herding cats will be well used! -
Re: Random Generator Chat
#18So I'm considering how we can avoid issues with allowing users to use the output of one generator within another (see this card for a description of the generator capabilities and structure). Example:
Generator A has 3 items in it. Items 1 and 3 have just static content, but item 3 incorporates the output of generator B.
Generator B has 3 items as well. Item 1 uses a few widget-generators in it's template, but nothing important. Item 2 is static content. But item 3 uses a few widgets AND the output of Generator A.
We now have a dependency cycle from A->B->A, which in the worst case can cause an infinite loop (especially if ALL the items in both generators use the output of other generators).
On the flip side, it makes perfect sense to allow someone to specify the output of any other generator within their items, even if that introduces dependencies. For that matter, it makes reasonable sense to allow someone to specify generator output recursively (that is, allowing a generator to incorporate its own output into its results), though I've never much been a fan of that kind of list generation (Lisp, you can go to hell. Haskell, you can join it.).
And regardless of whether we actually allow it, we need SOME way to detect those kinds of cycles, so that we can manually break out of them if necessary, or warn the user that said widget is unavailable for use.
My current thoughts are:
Whenever an item is added or edited, both it and the parent generator are updated with a list of the generators used. Then we check against that whenever a widget is inserted, and display a warning if the widget introduces a dependency (or just not allow it to be inserted at all).
Allow dependency cycles, but keep track of how many times each particular generator is hit and manually break out of the loop when it reaches an absurd number (50-100).
When actually running the generator, have it examine the dependencies of each item it has and discard any that use a generator that is already in the "call chain" of the current generator.
Whenever an item is submitted, construct a full dependency graph of generators and items, then ensure that there is at least one path to a terminal node. This would be painful to code, but would also let us detect if there is no possible way to end the cycle and throw an error (or insert a terminal node item automatically, to ensure that the cycle CAN break).
I'm sure there are other options, but those are the ones I'm thinking of at the moment. They're not necessarily mututally exclusive, but putting them together might be stepping on our own toes. -
Re: Random Generator Chat
#19Agree.
Add to the card:
A result can contain an arbitrary number of sub-generator results, for example to build a name, a country, a well described weapon, etc.
Gen 1 emits:
A [random firearm] of [random quality], along with [random number] of [random type] rounds.
I didn't see that particular nuance in the card.
-
Re: Random Generator Chat
#20I thought it was implied by the use of plural "widgets" and "generators". But I can add that as a clarification, certainly. -
Re: Random Generator Chat
#21Each phrase could have a multiplier that we can associate with it to.
5x[A [random firearm] of [random quality], along with [random number] of [random type] rounds]
Would give a list of 5 items with that format.
Possibly a random chart roller too that automatically takes the roll and divides it. (or we just have selection checkboxes to choose the obvious numbers of randoms so we don't have to check their math prior to running it.
100[20x[A [random firearm] of [random quality], along with [random number] of [random type] rounds.]]
or 20[20x[...phrase...]]
Would produce 20 items in a chart for with the first column being the random number to roll. 1-5, 6-10..., and 1, 2, 3... respectively. -
Re: Random Generator Chat
#22Also, for certain types of generators - treasure being a good example, the generator should run until it generates enough items to meet a budget :P
So, you pass a max value, and it builds the result from the items until it runs out of cash.
-
Re: Random Generator Chat
#23too soon for my idea of 'tagged' entries?
IDea: Early rolls influence the weight of subsequent roles through the acquisition of 'tags'.
So ideas that tend to go together might have a greater chance of clumping logically...
-
Re: Random Generator Chat
#24From Full Chat:
(19:10:10) Chaosmark: aaaaaand I've got your generator suggestions to add to Trello.
(19:10:18) valadaar: I'd guess :)
(19:10:36) valadaar: including the esoteric related tags?
(19:11:03) Chaosmark: I'm sorta debating whether I can get away with coding up the generators in Python and Django, and getting Strolen to integrate it with the main site. :D
(19:11:20) valadaar: ooh python would be nice
(19:11:26) valadaar: I think much better in python
(19:11:59) valadaar: I'd be pretty far along on it if python was an option.
(19:12:02) Chaosmark: The tag idea is interesting. I'm thinking we'd need a clustering weight, and maybe let the users control that to a limited degree. But I haven't thought it through completely yet.
(19:12:36) valadaar: You can use it to wieght against incompatible results as well as to cluster compatible ones.
(19:12:47) Chaosmark: Well, if we use Django and mod_wsgi, then Strolen can just mark off a subsection of the site as "/generators/, here there be Python" and leave us to our devices. XD
...
(19:14:32) valadaar: as for dealing with it - if its just linking I expect he would be okay with it.
(19:14:36) valadaar: Not sure though
(19:15:12) valadaar: i mean, the generator code is mixed chunks of javascript and php
(19:15:26) valadaar: and lots of raw data in the code..
(19:15:29) valadaar: shudders
(19:15:53) Chaosmark: And we'd still need some javascript to do the AJAX calls. But jQuery isn't all that heavyweight, and the heavy-lifting would be done on the server now.
(19:16:04) Chaosmark: Python could handle rendering the pages too.
...
(19:26:50) valadaar: Once we have an easy generator framework, we should be able to cook up a lot. Maybe even rival that other site Strolen linked
(19:27:08) Chaosmark: Yep. That's why I'm trying to make sure we start it up right.
(19:27:12) valadaar: I'd like to reparse our 30's for generator use
(19:27:39) Chaosmark: I'm not sure we can do it automatically, but we can certainly come up with a straightforward process for adding new entries.
(19:27:47) valadaar: yep
(19:27:48) Chaosmark: I was definitely thinking those need to be a Thing.
(19:28:07) valadaar: special page for numbered subs?
(19:28:19) valadaar: Hit a Plus button to add an entry
(19:28:37) valadaar: which also creates a distinct, reusable element
(19:28:41) Chaosmark: I don't see much reason why that couldn't be the standard "Add Item to Generator" page.
(19:28:55) valadaar: Well, I'm thinking the 30's as well
(19:29:07) valadaar: so at the same time youmake a 30, you make a generator automatically.
(19:29:19) Chaosmark: Ooooh!
(19:29:23) valadaar: so you can either use the sub as a sub, or use it as a generator
(19:29:27) Chaosmark: Now THAT's an interesting idea.
(19:29:37) valadaar: different views of the same thing.
(19:29:47) Chaosmark: Absolutely. I'm loving that idea.
(19:29:58) valadaar: I'd chuck stubs and scroll entries into the same bucket.
(19:30:46) Chaosmark: Well, I was thinking you could mark a sub (or stub, or scroll entry) as "used in a generator", which allows cross-linking.
(19:31:31) Chaosmark: So when the generator pushes out a result that originally came from XYZ submission (or WAS XYZ submission), it would automatically add a little note and link stating so.
(19:31:32) valadaar: The marking is a good idea - and you could either add the sub from the generator creation screen (not sure from what list)
(19:31:47) Chaosmark: And likewise on the submission page, it shows what generators a submission has content used in.
(19:31:54) valadaar: Or, you could have an 'add to generator' button the sub.
(19:32:01) valadaar: like favorites
(19:32:36) valadaar: so you could create a generator and name it, then use search/freetext/etc to create a set of subs to go through
(19:32:42) Chaosmark: Perhaps, though I'm also wondering whether we're wanting Generators to be something that anyone can make any generator that'll then get put up on the generators page, or if we want to restrict it somehow.
(19:32:54) valadaar: leveled option
(19:33:14) Chaosmark: Maybe let anyone make a generator that they can share and use, but only admin-approved generators are on the Offical Page?
(19:33:20) valadaar: with the recursive functionality being additionally leveled
(19:33:26) valadaar: sure
(19:33:41) valadaar: or thats another level-based parameter
(19:33:43) Chaosmark: Ah, the higher generator types become available at higher levels!
(19:33:47) valadaar: yes
(19:33:59) Chaosmark: So you get to make a generator with static content to start, then as you level you get better generators.
(19:34:00) valadaar: level 2 - Text only
(19:34:29) Chaosmark: Recursive, Tag-Grouping, Weighted Entry, etc.
(19:34:36) valadaar: yep
(19:34:49) Chaosmark: Strolen is gonna love that.
(19:35:13) valadaar: I think we could even do choose your own adventure type subs with that underlying logic as well.
(19:36:05) Chaosmark: Hm...Create Your Own Adventure/Campaign generators. Slip that little bundle in with the GM Toolkit.
(19:36:14) valadaar: yep
(19:36:18) Chaosmark: Plus the map generators.
(19:36:29) Chaosmark: "Campaign in a box. Just add computer."
(19:36:32) valadaar: it could be used to provide welcome to the campaign tutorials
(19:36:51) valadaar: like the short ones in the DMG and original D&D boxes
(19:37:03) valadaar: character generators
The results thereof:
Language and technology: https://trello.com/c/Fgt8Yueq
Types of Generators: https://trello.com/c/R4hHiSNY
Better generator types as a higher-level feature
Anyone (users of course) can make a generator, use it, and share it, but only admins/higher-levels can make generators show up on the Official Page
Create Your Own Adventure/Campaign generators; bundle those in with the GM toolkit
-
Re: Random Generator Chat
#25Some additional thoughts coming to mind:
"Forking" generators, ala Github. Makes sense only if users are allowed to have personal generators.
Backreferences within a template. Would you want to reference the output of another generator more than once?
Also, potential generators that have been added from people's suggestions:
Non-Euclidean Dungeon Generator: https://trello.com/c/JBin45Jw
"Random Roll Chart" Generator: https://trello.com/c/LhvDdCpu
Merchant Generator with Inventory: https://trello.com/c/qHq1iZr1
Strolen: I'm not sure a phrase multiplier as-described would be all that useful, though it's definitely doable. Would it really get much use outside of Random Roll Tables? If not, then the generator specifically for that would cover it neatly. -
Re: Random Generator Chat
#26Brainstorming. I am good with whatever your call is on it.
I have no issue putting in Django and running python or whatever other languages or systems you are comfortable working in. Take your strengths and run with it. The server shouldn't have an issue with them and, if it does, hell, we upgrade.
I will say I am not quite understanding how we will be able to create random generators ourselves exactly, but I am LOVING the concept. -
Re: Random Generator Chat
#27User-made generators isn't all that difficult. The idea is that we build the framework by coding up the different types of generators, and the interfaces for editing and using them. But then users can use their own datasets for actual content generation. Those datasets would be their "generators", which would presumably have their own unique ids and links, and so-on.
I'm more wondering about the consequences, and how much space those generators are going to take once the userbase starts creating generators, associated items, widget-generators, and possibly forking each other's generators. I'll see what I can do to come up with a reasonable solution before we start making that available as an option, but I think it needs to be addressed from the get-go to ensure the framework is built properly.
My other concern right this second is getting the various generator types to use each other nicely. The metadata necessary for each specialized type of generator means that something like Val's Tag-Grouping generators are going to have trouble talking to generators of other types. For the moment, I'm seeing that each of them should interact reasonably, with intelligent default fallbacks, but it could get pretty damn complicated fast if we aren't careful as we're adding new types. All that said, I'm starting to think it might not be as much of a problem if we're keeping datasets distinct on a user-generator basis. That changes things subtly from the original idea I had where all the items would be stored in a gigantic table with one item per row. -
Re: Random Generator Chat
#28Didn't want to leave these generators out of the drooling.
These generators, especially the concept currently spinning, are awesome and I haven't seen anything like it before. It will be incredible seeing it come together. -
Re: Random Generator Chat
#29I certainly want to see users be able to use other users generators - perhaps some could be communal property like wiki's.
Or you could fork them off and have your own copy.
-
Re: Random Generator Chat
#30Yes on both accounts. Anyone should be able to use any other generator in their own. But editing it requires you to fork it. That way you don't fsck up someone else's hard work. -
Re: Random Generator Chat
#31Make this happen!
Give me generators! -
Re: Random Generator Chat
#32This sounds like a fun generator to create a nice history with background
http://strolen.com/guild/index.php/topic,5045.msg68080.html#msg68080
I'd lean more towards more illustrative 'cards' then the descriptions below. Eg. Barbarian Culture, Gladiator would be cards that would count towards Athletic endeavors.
I think the beauty of this is that you omit attributes entirely and can apply the cards as your creativity and your GM would allow. Gladiator card could provide bonuses for languages, foreign culture, showmanship, acting, weapon maintenance, etc. Virtually any other card which capture a culture or career would bring knowlege and attributes appropriate for that field.
Street Urchin give me options to go towards... Runner (which leads into the thieves guild paths, or gang/bandit paths (which then lead into merc/solider paths) or begger or guild apprentice or apprentice mage (if you have the prerequiste occult background).
Farmer leads towards Farmer, Militia, or Village Crafter pathways.
The advantage of these systems is that they create your history as you make the character and your skills are based immediately on what you are doing. Each path takes up "time". so you start at a young age and age as you go.
The disadvantage of said system is writing up all 100-200 paths. And unless your GM lets you make new ones, you might not always be able to find what you are looking for. (The more paths written, the less likely that will happen.)
The rest of the thread is a good read on building a character as well but that quote brings in the random branch system of character creation. -
Re: Random Generator Chat
#33Yeah, the generator tool would be put to good use in your hands.
Make it happen, Chaosmark! :)
Make this happen!
Give me generators!
-
Re: Random Generator Chat
#34If you give me the generator I have described, I will give you magnificent generators the likes of which your imaginations dream of.
Reiterated points:
let me assign rarity to entries, so I can make something a common output without putting it into the generator 10 ten times. Common, uncommon, rare, super rare, etc
Let me build the generator piece by piece, so I can pick the number of input fields I want
If possible, I would like to have generators that branch out, or draw from different lists to create content. If I make a weapon generator, it could branch out into three sub categories in the generation, with stabbing weapons getting their own sub content versus bludgeoning weapons. You don't stab someone with a hammer. -
Re: Random Generator Chat
#35Can we get tool-built generators to count as submissions? Perhaps allow voting?
-
Re: Random Generator Chat
#36This is getting insane and I love it.
Another submission type, you bet.
Is django already instaled? -
Re: Random Generator Chat
#37I have installed nothing. -
Re: Random Generator Chat
#38I would like to request that we install Python 2.7, and the virtualenv toolkit. I can take it from there, since virtualenv comes with pip. Currently developing on a VM, but I'll need those in place when I get to something workable to show off. -
Re: Random Generator Chat
#39Wow, being able to write in python will be cool.
-
Re: Random Generator Chat
#40Status Update
Currently have the code written for the basic randomizers (that is, the code classes that do the actual content selection; I'm reserving "Generator" for the user-generated datasets):
Even_Randomizer -- Base-level randomizer, does an evenly-distributed selection from the provided items.
Weighted_Randomizer -- Selects based on a weighted ordering of the provided items. It selects the category of item (common, uncommon, rare, superrare), then chooses an item from that "sublist" of choices. Common items will be selected 50% of the time, uncommon 25%, rare 12.5%, superrare 6.25%, assuming there are actually items in each of those categories; the randomizer will fallback to other categories if the chosen one is empty.
I also wrote up the code for the template parser; this really isn't a randomizer, just a post-processing step after content is selected by a generator. The fun part here was writing it in an iterative fashion to bypass potential problems with the Python stack limit (a recursive solution probably would have been easier by far, but this way is probably more extensible and makes more sense).
None of the code has actually been tested yet, however. Now that I've got the basic infrastructure laid out, I've settled in on what the data needs to look like and can start writing tests.
Next Steps: Write test-cases to ensure generators and templates all work properly. Build basic UI for display and editing. Moar generator types.
Val: I need some clarification on what you're looking for in your tag-influenced randomizer. Throw me some use-cases and examples so I can get a better grasp of what you're aiming at. At the moment it's too indistinct.