Bump.
This is still alive, I've been working on the dungeon generator some more, trying to get a good system for props, so I can reuse it for the dungeon walls, floors, ceilings, the props inside, loot, traps, hidden passageways, the terrain generator, and anywhere else I might want it. So i'm gonna write up how its gonna work to both clear my head about it, and in case anyone finds it interesting.
Props are saved into a special folder using a modified version of BVSS (which is now totally outdated, but whatever). I run a command to read through the first few lines of the file, where data is stored on its tags. From this, I create a 'PropData' object, which stores the tag info. Then, when I need to generate a prop, I can search through all of the propdatas, and find one that fits the criteria.
The propdata has a create function which creates the bricks in the specified position and rotation. A 'prop' object is created which knows what bricks belong to it, and what propdata is was created from. This acts similarly to datablocks. There can be infinite props per propdata.
Now, for the tags themselves. I read some procedural interior design papers, and picked some of the best ideas from them. There are three types of tag stored on each prop; Placement Tags, Static Tags, and Zones.
Static Tags are the most important, they hold some variables which all props need to have. These variables currently are:
Type - States whether it is a wall, floor, ceiling, dungeon prop, terrain prop, or a dungeon & terrain prop. I'll need to expand this list for the terrain generator.
Tags - The most varied static tag, states what the prop is, eg, table, chair, cupboard, door, wall, etc. Needs to be able to have multiple.
Age - 'older' props spawn more often in older dungeons (dungeons also have an age).
Value - The more valuable the prop is, the less likely it is to spawn for lower leveled parties in the higher floors of dungeons (closer to surface).
Rarity - The rarer it is, the less likely it will spawn, period. Not effected by party levels or floor.
HighlightSkill - The skill required which will highlight this prop, for example if you have the ability to see hidden doors, or treasure.
Id imagine i'd need some natural tag for when i get to the terrain generator.
Zones are areas which designate special behaviors. For example, the clearance zone states that no other prop can spawn within that area (but other clearance zones can be in it). 'On' zones designate where the 'on' location is for each prop (assuming there is one), which is used in the placement tags. There can be infinite of each zone type.
Placement Tags is a few words which explains to the generator where to place each prop. For example, "On table" would put the prop inside the 'on' zone of a 'table', "On table or on cupboard", "On table against wall", "InfrontOf chair", "Above desk".
I think that explains everything well enough. Another note I have from the procedural interior design documents I've read says that I should make the placement rules dependent on the type of room. I'm not really sure how I could implement that, maybe designate a purpose to each room in the dungeon, but idk how detailed I should go into it. Btw, if anyone wants me to explain my thoughts on anything else, just ask.
Edit: I should also explain that im storing info on the author of the prop.