CleverRaven / Cataclysm-DDA

Cataclysm - Dark Days Ahead. A turn-based survival game set in a post-apocalyptic world.
http://cataclysmdda.org
Other
10.64k stars 4.18k forks source link

Standardize armour layering #52514

Closed I-am-Erk closed 2 years ago

I-am-Erk commented 3 years ago

Is your feature request related to a problem? Please describe.

Armours in game currently go on a number of layers, often with inconsistent choices. This can lead to balance issues when players are able to combine things in strange ways, and makes it harder to standardize how we work on nesting armour layers.

Describe the solution you'd like

We can work out what layers stuff belongs on first by looking at street clothign:

Then we can extrapolate that to something like riot armour, for example:

Or the US military outfit:

If we go with a system like that, then we just adapt the layering of other armours to follow suit. So by those standards extrapolating to maximillian plate armour, we'd have: -underwear, skin layer -padded layer eg gambeson, inner layer -plate armor, outer layer (a full suit of chain would go here as well: if you're wearing chain under plate, it's probably as reinforcement on the gambeson, not a full hauberk of its own) -tabard and scabbard and other ~bard stuff on strapped layer

That means that any hard plate stuff such as hard arm and leg guards should be moved to outer layer. Anything that forms the "main body" of armour and could feasibly be pulled on over street clothes goes on outer. All rigid armour belongs in outer unless someone wants to change my mind.

The strapped layer should, generally, only contain hanging containers and other stuff you'd have on outside your armour for easy access and for removal: this is important enough that we may wish to add a CI test for it, if someone can devise one.

Describe alternatives you've considered

We could add new layers, or change the names of layers, to make it more clear.

At some point I would very much like to change the way we handle layer JSON to take it out of flags and make it a required attribute instead.

Additional context

We may wish, based on this, to work out some standardization for how much material thickness each layer supports. The key difference between these layers, really, is how thick they can get before interacting with each other. I am open to suggestions here: what I'd like it some sort of test that looks at both coverage, encumbrance, and thickness of an article of clothing and compares it to what layer its on, with an index value that will throw a warning if it's too high.

I-am-Erk commented 3 years ago

So for CI testing I am picturing something like: clothing_bulk_index CBI = (coverage * material_thickness) / (layer * max_encumbrance) where layer: skin=1, inner=2, outer=3, and strapped layer stuff is ignored. We then create some index values and declare what is acceptable, possibly tweaking the numbers for layer.

I don't have this equation quite right yet: I would like it to force more of a balance between coverage and thickness and I'm not sure encumbrance needs to play a role. It's also possible we could just have a different CBI calculation for each layer.

PatrikLundell commented 3 years ago

I'd say material stiffness is more important than thickness. A 1 mm steel plate cover is more cumbersome to wear than a 1 cm thick wool item (knitted items in particular can be rather fluffy, with most of that fluff being air).

On the other hand, a surface layer that's fluffy can be annoying when moving in environments where you can get caught by things (branches, nails, splinters,... while a smooth surface can just glance off of such obstructions.

Terrorforge commented 3 years ago

One thing that's been bugging me re:layers is coat type clothing. On the upper body, it makes sense that a trenchcoat would be an Outer-layer garment that potentially conflicts with e.g. plate armor when you try to force bulky, snagging plates into it - but how would the free-floating "skirt" over your legs interfere with greaves? This is a problem for true armor as well, since garments like the gambeson and hauberk have a similar construction.

Should there perhaps be a new "draped" layer for things like cloaks, skirts and blankets that just sort of free-float above everything else? If so, should we allow different parts of one garment to cover different layers, e.g. a trenchcoat being Outer on the arms and torso, but Draped on the legs? Because that's the only solution I've thought of so far, but the second part feels like it could be problematic. Would cause some comprehension issues, if nothing else.

Jarewill commented 2 years ago

I was told to move some of my points from #54916 to here. My main issue with the current layer choices is how armor seems to interfere with several pieces of clothing, when it really shouldn't. For example: Hoodie interferes with hard chest guard and elbow pads, where in real life those shouldn't have issues with themselves. (I have worn elbow pads and plastic motorbike armor over my hoodie many times to no problems)

There are are some odd choices with how armors are layered, such as utility vests being strapped while ballistic vests being outer, which doesn't make much sense to me. Trying to put a vest over a chest guard also seems like it would be a bigger issue than putting a chest guard over a jacket. I could see an issue with putting armor over a thick winter coat, so maybe such clothing could also be moved to the same layer as armor. Besides coats like these don't interact badly with jackets or hoodies to my experience.

In my issue I mentioned moving the armor items to the strapped layer, as that made sense to me seeing how most of them are held by straps. But creating a layer specifically for armor and really thick clothing could also work. Something like an "outer outer" layer meant to be worn over normal and outer clothing. I am fine with either choice as long as the conflict between armor and outer clothes can be resolved.

catdach commented 2 years ago

Well I wasn't expecting to have an existential crisis about my attire today. So I see a lot of complaints/confusion about things on the outer/strapped layers (hoodies, chainmail, gambeson, knee pads, etc.) but I think some of the confusion steams from problems with the inner/skin layers (AKA normal/underwear layers). I'll parse out my thoughts and hopefully some of it makes sense and is useful.

(For the sake of simplicity, assume that I'm just talking about items on the torso (different limbs have different needs)) I want to change the definitions(qualifications? guidelines?) to something like the following, reasoning explained bellow:

that got really over wordy so TLDR:

Protection means from damage and/or cold. Comfort could be seen as the opposite of encumbrance, but that's not necessarily the case.

REASONING:

underwear, including long underwear: Skin layer.

street clothes: inner layer.

Firstly, "street clothes" is an almost worthless for layer qualification. Its like one of those things that Intuitively I think I know what it means, but I have trouble putting it into words. The closest I can get is "clothes that are normal to wear in public" (that are maybe also comfortable?). The term is very cultural and vague but more importantly, has almost no relevance to what layer a piece of clothing is on. (I think I have a 'better' qualifier but I'll get to that later)

Secondly, the distinction between an undershirt and a white T-shirt/tank top is pretty arbitrary. Also they are so thin that their ability to conflict with anything is pretty negligible, a T-shirt can be (and often is) worn under or over pretty much anything without discomfort (for aesthetic purposes); including long-sleeved shirts and other T-shirts. in every practical sense, they are underwear. (regular shirts could go in either kin layer or inner layer. I opted to put them on skin layer because of their lack of protection, but the distinction is arbitrary)

Thirdly, hoodies are a weird middle ground between the current outer and normal layers. it's basically thin enough that it can be worn with almost anything else without too much discomfort but it is definitely always always always worn above a shirt (by normal people 🙄) so it should be a category above shirts. Conversely, putting the hoodie on a layer equal to plate armor is like saying that no one every wore anything around the the thickness of a hoodie between their armor and their underwear, with without a substantial amount of extra encumbrance (which seems pretty ridiculous)

REASONING TLDR 1&2. Currently skin and normal layers aren't very meaningfully distinctive

  1. Currently it would be useful to have a layer between the thin-shirts layer and heavy armor/coat layer for relatively lighter outerwear like hoodies and gambesons.

I think that's basically it.
We could also just have 5 layers with something like: underwear > inner clothes > outer clothes > armor > strapped? But I assume that would be even more difficult to do.(maybe its a better solution IDK)

edit: I forgot to talk about pants. pants don't need a fifth layer as much as torso items. there isn't much (if anything) that can go between pants and leg armor so there isn't a need for a buffer layer between them. anything that does comes from items that aren't primarily leg items (aprons and such) which... aw heck, I don't wanna think about it. most examples are strapped layer anyway, we'll get there when we get there.

bombasticSlacks commented 2 years ago

There are are some odd choices with how armors are layered, such as utility vests being strapped while ballistic vests being outer, which doesn't make much sense to me.

utility and tac vests are designed to fit over armored vests

Hoodie interferes with hard chest guard and elbow pads, where in real life those shouldn't have issues with themselves. (I have worn elbow pads and plastic motorbike armor over my hoodie many times to no problems)

Then you should make a PR and argue for the hoodie being moved to normal layer

This was discussed months ago when this issue was created and the TLDR is sometimes your clothing will just conflict, we are not getting new layers. Armor + thick outer warmth clothing would be more awkward than wearing it over a tshirt or something. The system already handles a hoodie being less awkward than a winter jacket in that the additional encumbrance is equivalent to the encumbrance of the lesser item.

my real point is the following: people have been standardizing and working on this for 4 months now, chucking out all that work now is ridiculous if something doesn't work as far as you are concerned then it may just not be updated to the new system. For example someone could potentially argue that all tshirts and the like are inner layer being equivalent to underwear for most people and move the hoodie and some lighter sweaters to the normal layer I don't know if that would get merged but it sounds like it would solve most the grievances without reinventing the wheel

Jarewill commented 2 years ago

utility and tac vests are designed to fit over armored vests

Alright, I can understand that. I certainly don't have experience with armored and tactical vests, but I always thought they were similar enough to intervene with each other. But if in reality they don't, then I can take that answer.

Then you should make a PR and argue for the hoodie being moved to normal layer

Okay, I can make a PR with that.

Lastly, it wasn't my intention to imply the current standarization effort to be reverted. I just wanted to voice my opinion on the current layering choices, which to my uninformed mind, seemed odd. I am sorry for annoying the people involved with it.

bombasticSlacks commented 2 years ago

Sorry if I seemed overly harsh, I was just waking up and I've had this conversation a lot over last few months most of which has been lost to time on the discord so I wanted to write some definitive firm information here in case other people come back to this. I was originally of the opinion that strapped should be where armor exists, and argued similar points to yours and it was firmly settled that the above decision written up by Erk is what is desired. Anyone who wants to help on the Layering consistency-ify the help would be greatly appreciated and everyone can bring a bit of their own expertise to the table but I think it's important that the community be on the same page so people don't put in effort on things that wont get merged or will get reverted it's a recipe for frustration.

I really do think you could argue that hoodies and some other mid layer stuff be moved to normal and t-shirts and such be moved to inner. However jackets and hard armor are firmly staying outer.

RandDenner commented 2 years ago

So, I've read through all this and have come to the conclusion that the four layers doesn't solve the problem if the "strapped" layer is limiting the number of items.

Here's my thinking: inner - good, see no problems normal - good, see no problems outer - heavy stuff like armor or bulky coats strapped - umm...

So imagine a guy wearing plate & mail like the crusaders. From innermost to outermost: 1) smallclothes 2) gambeson/padding 3) chain hauberk 4) plates of armor 5) surcoat 6) belt & scabbard, etc... 7) backpack

Are 5, 6, and 7 the same layer? Do we really want loose vests and coats and cloaks and such to slide into the strapped layer. What about the hauberk? Where is that? Is it "outer", and so the plates are also "strapped" like 5 to 7?

Jarewill commented 2 years ago

Today I was thinking: Do we still need the WAIST layer? I know it was made to make belts not interfere with backpacks, but we have sublimbs now, so maybe it would be a good idea to start moving belts back onto the strapped layer on the waist sublimb instead of having a separate WAIST layer?

This wouldn't really change anything mechanically, but it would make strapped items more consistent in my opinion. And also I know it might probably just be me, but it's kinda bothering me that the waist has a dedicated layer instead of a sublimb like other body parts have. Also I recall seeing some leg items that are on the WAIST layer, but I can't remember which ones so maybe that was already fixed.

Regardless, I could do the work of converting all belts to the waist sublimb, but I don't think there even is a waist sublimb currently. And I don't know how to add a new sublimb either.

bombasticSlacks commented 2 years ago

yes I would love this consistency to happen.

56224 makes the waist a sublimb. You would just need to go through and swap things from waist to BELTED with specifically_covers: [ "torso_waist" ]

also keep in mind the specifically is scaled so if a belt before had coverage 10 (since it covers 10% of the torso) it should now have coverage 100 since it covers 100% of the waist.

catdach commented 2 years ago

Today I was thinking: Do we still need the WAIST layer? I know it was made to make belts not interfere with backpacks, but we have sublimbs now, so maybe it would be a good idea to start moving belts back onto the strapped layer on the waist sublimb instead of having a separate WAIST layer?

~I see where your coming from, but remember that some items cover all sublimb locations so moving WAIST to a sublimb will make it conflict with those items. We also would end up having under, normal, and outer layers for that sublimb, which doesn't make alot of sense if it's mainly for belts.~

Also I recall seeing some leg items that are on the WAIST layer, but I can't remember which ones so maybe that was already fixed.

~I believe you're thinking of holsters and scabbards, which brings up another problem: sidedness. Unless we also add a new sublimb to legs then we wouldn't be able to wear 2 holsters/scabbards anymore, and they may also conflict with belts too. Or we could just have waist as a leg sublimb, but then we can wear 2 belts on each leg.~

~I get where you're coming from, waist as a layer is kinda a hacky solution; but changing it to a sublimb seems like it might cause more problems than it fixes.~

edit: I was wrong, was kinda in a morning haze when I wrote this.

Jarewill commented 2 years ago

56224 makes the waist a sublimb. You would just need to go through and swap things from waist to BELTED with specifically_covers: [ "torso_waist" ]

Oh, thanks a lot! If this gets merged, I'll start working on changing up the belts.

I see where your coming from, but remember that some items cover all sublimb locations so moving WAIST to a sublimb will make it conflict with those items. We also would end up having under, normal, and outer layers for that sublimb, which doesn't make alot of sense if it's mainly for belts.

I understand the conflict isn't wanted, but they could be handled how backpacks and slings are. Currently backpacks and slings have a special sublimb "hanging off back/front" which makes them not interfere with any items that don't strictly specify the same sublimb and it only works for strapped layer items. The PR bombasticSlacks made seems to add the waist to that special sublimb group. At least I think, please correct me if I'm wrong here.

I believe you're thinking of holsters and scabbards, which brings up another problem: sidedness. Unless we also add a new sublimb to legs then we wouldn't be able to wear 2 holsters/scabbards anymore, and they may also conflict with belts too. Or we could just have waist as a leg sublimb, but then we can wear 2 belts on each leg.

I don't think it's those items, as I just checked and they are on the strapped layer. Regardless I didn't mean for those items to be kept on the waist sublimb, but rather be moved to the strapped layer on the legs. I would have to first find them though, as I don't remember the exact items I'm thinking of. Or maybe they were already changed to be on the strapped layer.

bombasticSlacks commented 2 years ago

Today I was thinking: Do we still need the WAIST layer? I know it was made to make belts not interfere with backpacks, but we have sublimbs now, so maybe it would be a good idea to start moving belts back onto the strapped layer on the waist sublimb instead of having a separate WAIST layer?

I see where your coming from, but remember that some items cover all sublimb locations so moving WAIST to a sublimb will make it conflict with those items. We also would end up having under, normal, and outer layers for that sublimb, which doesn't make alot of sense if it's mainly for belts.

Also I recall seeing some leg items that are on the WAIST layer, but I can't remember which ones so maybe that was already fixed.

I believe you're thinking of holsters and scabbards, which brings up another problem: sidedness. Unless we also add a new sublimb to legs then we wouldn't be able to wear 2 holsters/scabbards anymore, and they may also conflict with belts too. Or we could just have waist as a leg sublimb, but then we can wear 2 belts on each leg.

I get where you're coming from, waist as a layer is kinda a hacky solution; but changing it to a sublimb seems like it might cause more problems than it fixes.

Not to be rude but I'm busy so I'll be blunt.

Everything you say here is incorrect.

Jarewill is correct they will be treated like backpacks and rifle slings and only be able to extist as belted.

catdach commented 2 years ago

That makes sense, and yeah I think I was wrong about the scabbards/holsters thing.

I-am-Erk commented 2 years ago

Hey slacks, would you say this is done enough to close this issue out?

bombasticSlacks commented 2 years ago

yes,

there are a few things left I think could be added but the current item pool is standardized IMO