I wrote this in the Bug Vs the Wardrobe thread as a response to discussion of drawers, and Bug suggested I should put it here, so, here it is!
I would not say remove the drawers, but how about converting them to a tagging system?
That would eliminate the need to load a whole drawer. And it would allow things like tagging an item as both "long dress" and "red." Users could have up to 50 tags and assign them to any item.
(And there could also be some built in tags if you wanted - it would save a lot of total work if the system simply tagged hair styles or wigs with "hair" or "wig" rather than expecting every player to do it... but that would be a later addition I expect - though it could start with the items that have the "wig" type already)
I haven't used drawers at all yet (as I am fairly new to Subeta and don't have as extensive a wardrobe as long time players) but I would love to be able to tag all my skirts so I can find a skirt when I want one - and also tag all my items from a given holiday store (steamworks, Esther's) so I can make holiday specific outfits, tag my Cash Shop items, and the like. It wouldn't be nearly as useful for me to have only one category per item.
Tagging in Wardrobe has been rejected as a Suggestion multiple times. Maybe knows something different, or maybe he doesn't know why it isn't/wasn't considered feasible yet.
I know that we crowdsourced tags for Minions for the battle system in the Minion Zoo, and not a lot came out of that other than the Achievements for doing them.
Rather than tagging, I'd prefer it if the wardrobe itself was just broken down into further categories. instead of the generic head, it now becomes wigs and accessories. face has the addition of eyes, mouth, makeup, etc.
there are far too many items in the wardrobe now to not have them separated, and that number keeps going up. There really isn't a reason to keep the categories so broad now that the limit per layer is gone.
I could get behind tagging. I could also get behind more categories. I'd even be happy to help label some of the items, if Subeta did that again.
bird and bear and hare and fish give my love her fondest wish
I also remember someone on staff (although I don't recall who?) saying that tagging isn't feasible, although if 's amazing coding skills can make it possible I wholeheartedly support it! I'd love to be able to cross reference items (eg have an item tagged as 'long pants' and 'formal' and 'color' ). If that doesn't work, though, more categories would be great, especially since layer limits aren't a thing anymore!
they/them/theirs, please.
I don't know exactly how Bug's thinking of coding it, but since it's a limit of 50 tags that I proposed, here's how I'd do it for efficiency of storage and loading time.
Each of the 50 tags would get a bit in a 50-binary-digit number. This would fit into a BIGINT in mysql so it could all go in one column in a table. Then you create an array of bitmasks so you can do a bitwise AND with the sum of the user's selected bitmasks, and see if the item has that tag/all the tags/any of the tags depending on result (all tags match is result = bitmask; any tag match is result > 0).
(If your database doesn't support bitwise operators you can get the same effect by having 50 separate binary columns but then you have to construct long "or" and "and" chains in the queries and it's really more trouble even if it might seem simpler to those unfamiliar with bitmasks.)
When you load the wardrobe, you load the user's tag names and their associated bitmasks into memory. Then when the user loads items, if they've selected a tag or tags, you can have your query do the bitmask and show only those items.
Given the speed at which computers run and's and or's (any computer's native language), I can't imagine it'd be a huge amount more strain on the system than the very similar query to see what drawer something is in. It would take a bit more disk storage space to store the column of bigints though. If you limited people to fewer tags, you could get by with smaller integers. A regular mysql int is 32 bits which would allow each user 30 tags.