Okay! Sorry for being away for so long, it's been nuts. I finally have actually coded this into the game, and did a ton of updating today. I see that you guys have already been busy since my work, too, heh. I've updated the original post of this topic, but I'll repost that here just to have it:
Any questions on it, please feel free! Or if you have questions about the races, too.
----------------
Hey guys!
So... this is a pretty huge favor to ask, sorry about this. But if any of you have any time you'd be willing to donate, I'd be much appreciated. And the market in the game will be that much cooler for it.
BackgroundThe tech tree in this game is a hand-designed affair, and is ONLY used by the player races. Your race is so far behind everyone else that nobody else needs what you're working on.
BUT! There's a whole other section of the game called the Market, and it works kind of like a procedurally-generated tech tree. It's more randomized than that, but you can affect the outcome of what you're "unlocking" in various ways. And you can then trade those things away even if you don't find them really useful for yourself. And you can trade for things that other races invent as time goes on.
In order to really make this shine, that involves having each market item come up with a cool procedurally-generated name. I have the framework for that in place, and as of the 4/9 update it's going pretty swimmingly (thanks in huge part to your help).
The Krolin wrote a hilariously-titled piece of Dark Philosphophy entitled: "Why Do The Fatally Crabby Die?" Seeing that show up in my inventory just made me laugh out loud. And there were a bunch of other good ones, too. What a difference this makes to the feel of the market!
The TaskOkay! After much work by many talented people, we have arrived at the (current as of now) attached spreadsheet. The actual online spreadsheet has already evolved well beyond this, naturally, even as I write this.
Here's how this works:
1. There are a variety of categories of market item types, and it looks for a column with the header matching that exact name. The types are:
Broadcast_Comedy
Broadcast_Sports
Broadcast_News
Broadcast_Education
Broadcast_Violent
Broadcast_Romance
ConsumerProduct_Hygiene
ConsumerProduct_Clothing
ConsumerProduct_DangerousToys
ConsumerProduct_Technological
ConsumerProduct_Gadgets
Military_Components
Military_PersonalWeapons
Military_VehicleWeapons
Military_PersonalArmor
Military_VehicleArmor
Military_PersonalBioAugments
Military_RangedWeaponAugments
Military_BannedWeapons
Philosophy_Serious
Philosophy_Dark
Philosophy_Trivial
Philosophy_Social
Fiction_Uplifting
Fiction_Tragic
Fiction_Propaganda
NonFiction_TortureResults
NonFiction_MilitaryTactics
NonFiction_Politics
NonFiction_Science
NonFiction_Biology
NonFiction_Technology
Periodical_News
Periodical_Research
Periodical_Propaganda
Periodical_Entertainment
Poetry_Humor
Poetry_Crude
Poetry_Uplifting
Poetry_Romantic
Poetry_EpicHeroism
Poetry_Angsty
2. Once it has found the appropriate column for the type of "item" being generated, it then pulls a random row from that column.
3. It then looks into that column and finds any tags (anything that starts with { and ends with } is a tag), and does a couple of things with them.
a. Special tag: {n} -- in this case, it places a number between 1 and 20. I'd advise staying away from numbers and mark levels and such too much, though, because if you put that in there players will assume it has meaning when it does not. If you want to say "A Collection of {n} Poems," that's a good use for this tag.
b. Special tag: {Adjective} -- In this case, it will look to the column for the race that is inventing this item. So for the Skylaxians, this is the SkylaxiansAdjectives column, for the Andors it's the AndorsAdjectives column. It then pulls a random row from the appropriate column.
c. Special tag: {Place} -- In this case, it will look to the column for the race that is inventing this item. So for the Skylaxians, this is the SkylaxiansPlaceTypes column, for the Andors it's the AndorsPlaceTypes column. It then pulls a random row from the appropriate column.
d. All other tags are considered custom, and will look for a column in the spreadsheet with that same name. So if you want to have a tag named {HiThereBob}, you would need a column with the header HiThereBob as well. These are case-sensitive, so your capitalization matters.
5. The generator runs through this recursively until there are no more tags. So if there are tags within tags, that is okay. Also, if you have multiple copies of {n} or {GenericAdverb} or whatever in one name, it will pick a unique name for each instance of that tag.
Important rules of thumb:I. If you wouldn't mind having everything in proper capitalization, that would be awesome. It's super easy to do by just going here:
http://www.textfixer.com/tools/capitalize-sentences.php Choose "Capitalize Every Word" and paste in your entries, and bam.
II. The inventor race is something I'd prefer be apparent. So pretty much everything should use {Adjective} or {Place} in there somewhere. If we wind up needing to make other race-specific categories, then fine. And I guess there can be exceptions to this. But it's pretty nice when the race makes their own mark on things.
III. As mentioned before, the capitalization of the tags matters. The tag name and capitalization must exactly match the header of the column to pull from. Just re-emphasizing that.
IV. Overall not having names that are ridiculously super-long is a good thing, as is not having things that seem to indicate a specific function when really the name has nothing to do with the function. Aka "Amulet of Power Reduction" would be incredibly misleading since it might have nothing to do with power reduction.
V. If there is a gap of any rows in a column, there is a good chance it might be skipped. It's not a certain thing, but once the spreadsheet reaches a row where no columns have any content -- even if more rows down south of that row have content in at least one column -- then it stops. So leaving gaps is something to avoid when possible.
-- Most importantly, here's the actual sheet where data is to be entered at this point:
https://docs.google.com/spreadsheets/d/1ngsCKxrQUVM5JRxN5eN-ZnSbWaPvw9G5BKcbFARhVRk/edit#gid=0Thank you very much for any help!