CleverRaven / Cataclysm-DDA

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

Make seeing the object (in adequate light) be a requirement for knowing what it is. #17766

Closed Learner10 closed 7 years ago

Learner10 commented 8 years ago

The issue: So it's occurred to me that currently, we own a perfect form of vision in the dark, and from a distance: we can tell what something is, even without a source of light, from instantly telling apart t-shirts from polo shirts, to reading the title of a book the second we've accidentally tripped over it in the dark. It doesn't stop there. We've also been blighted by Terminator vision, where we can also equally identify objects from a distance, no matter how far we are. The same issue basically applies: perfect identification, regardless of how small or far the object is.

A solution? : (I'm no programming expert, but aren't flags used for this exact thing?) Anyhow, the way I imagine it, if you can't 'see it', you can't really tell what it is, because I'd figure that if you're in the dark, you'd be feeling around to learn of your environment. The obvious example, are books. It makes absolutely no sense to see the title when by all rights, you're as blind as a rock. Anyways, instead of telling you the exact name, you'd get a category label, or a generic shape, so the "First Responder Handbook" becomes "Book" or "Thick Book" because of its volume of 8, whereas "plastic bottle of salt water" becomes "bottle of liquid". Now, the moment you step into some light (or otherwise acquire a means of night-vision) should be the moment that you can identify your things. Lastly, there are 2 more things to consider (but one is WAY more important then the other): 1. How expansive the generic title list would be. Though basic item categories would be easier to start with, they're too generic, and I'm pretty sure they'd make no effort to tell apart a knife from a gun. So, my guess is, a new list of labels would probably need to be made. The 2nd thing to think about, and this one's the VERY important one: do we flag monsters for identification? Just from zombies alone, I'd think that instinctively knowing what kind of zombie you're coming up against would be very important because of how badly things would go if you couldn't tell what kind it was.

Balancing issues: This could effectively kill night rides (scavenging in the dark), but I've thought of a fairly simple fix, and it relies on matches and lighters. At the expense a match, or a couple of uses from a lighter, you can identify the nearby objects (or briefly acquire enough light to THEN identify them, but that would then be putting you in the light for other things to see). I'm hoping that a flashing option for various light sources could be added for the same purpose. (The point of flashing would be to avoid not being seen by monsters.)

On the subject of distance identification: If you're looking at something from a normal distance in the day, the size and nature of the object should be considered for identifying it, so books need to be fairly close to be able to read their titles, and clothes likewise, though not to the same extent. Objects that can used to see from a distance, and the looking action might help. (This entire thing is a lot harder to code for, but it should be considered too.)

Coolthulhu commented 8 years ago

Sounds annoying and hard to implement for items. Makes sense for monsters.

(The point of flashing would be to avoid not being seen by monsters.)

Flashing not revealing player to monsters is a bug and no features will be added that support its usage.

drbig commented 8 years ago

Yup. From my POV maybe in zero-light you get item category instead of the full name... but many issues all around. Still worth having as a suggestion IMO.

kevingranade commented 8 years ago

Basically we would want to combine perception, distance, light level, etc, to determine a "how well can you see this square" score, then code that displays items, furniture, and monsters would use this score to display an appropriate description.

drbig commented 8 years ago

Basically we would want to combine perception, distance, light level, etc, to determine a "how well can you see this square" score, then code that displays items, furniture, and monsters would use this score to display an appropriate description.

That would indeed be the full-on proper approach. Which is the perfect opposite of my minimal approach. In any case I'm always for more realism :)

Coolthulhu commented 8 years ago

I'm 100% against limiting item descriptions until we have a system that remembers what was seen. That is, once seen, the item should be remembered as seen at particular detail level and always described as the highest detail level it was seen at. Otherwise the whole deal will get very annoying very fast.

Remembering items could have another cool advantage: they could be drawn even on unseen squares.

drbig commented 8 years ago

I'm 100% against limiting item descriptions until we have a system that remembers what was seen.

Yeah, that was also in my issue list. Another cool thing here could be taking into account intelligence etc. - you can't remember everything.

drbig commented 8 years ago

Oh, my concern was also with PC inventory -> you can't make it "reveal stuff", but I'm not sure how (if) it would work with forgetting stuff (or we can start without that at all, still realism++).

Coolthulhu commented 8 years ago

Another cool thing here could be taking into account intelligence etc. - you can't remember everything.

Absolutely not. Using in-game mechanics to limit any info that can be noted on paper is a horrible practice. Not to mention that intelligence doesn't relate to (long term) memory that much.

It could help with spotting extra details, for example identifying books by covers, weapons by proportions etc., but if we're talking about realism, effect of intelligence would be rather small here.

drbig commented 8 years ago

And I agree completely with the above. (at least) One concern solved!

BorkBorkGoesTheCode commented 8 years ago

I'm 100% against limiting item descriptions until we have a system that remembers what was seen. That is, once seen, the item should be remembered as seen at particular detail level and always described as the highest detail level it was seen at. Otherwise the whole deal will get very annoying very fast.

Remembering items could have another cool advantage: they could be drawn even on unseen squares.

Yeah, that was also in my issue list. Another cool thing here could be taking into account intelligence etc. - you can't remember everything.

And the item memory could become out-of-date as NPCs pillage the countryside. Also somebody on the forums suggested making the Forgetful trait cause you to forget the location of landmines..

kevingranade commented 8 years ago

Regarding remembered items, if it's limited to, "best visibility this square was seen in" (including perception level, no changing what you remember seeing based on increased perception after the fact), it would be as simple as storing a small number per square in the player object, which is also all that's needed for remembering terrain, aka fog of war. It gets a bit more involved if you want to have the player actually remember things to avoid leaking information they don't have, but not too bad as long as it's limited to item/terrain identity and not state, remembering the full state of every item ever encountered is a bit much.

Coolthulhu commented 8 years ago

It gets a bit more involved if you want to have the player actually remember things to avoid leaking information they don't have, but not too bad as long as it's limited to item/terrain identity and not state

It has some limits, as seen in few roguelikes that do it. Biggest problem is terrain modification:

Both of those are pretty serious and exploitable, so the only really robust solution here is to keep the entire remembered state stored. That is, remembering the submap's current state. This can be stored as a simple binary set in most cases, but needs to be copied if some tiles differ from the version the player has remembered.

remembering the full state of every item ever encountered is a bit much

The tname would be enough. And for tiles that didn't change since the player has last seen them, even that wouldn't be required.

Then again, there is one relatively minor feature that is going to be a giant pain here: Worlds with multiple players. Pretty much all options other than storing the entire remembered state break here.

kevingranade commented 8 years ago

Another cool thing here could be taking into account intelligence etc. - you can't remember everything.

Absolutely not. Using in-game mechanics to limit any info that can be noted on paper is a horrible practice.

Are you objecting to the player forgetting things at all, or just tying it to the int stat?

The tname would be enough.

That's roughly what I meant, personally I'd prefer to limit it to "combat knife" rather than "combat knife (chipped)", which is what tname implies, storing a string for every item is a lot more overhead than storing the item type, but the former might be more flexible.

Then again, there is one relatively minor feature that is going to be a giant pain here: Worlds with multiple players. Pretty much all options other than storing the entire remembered state break here.

You're right, storing observation level doesn't work, we'd have to capture whatever state we want to display, it's just unworkable otherwise because of the multiple player problem.

Coolthulhu commented 8 years ago

Are you objecting to the player forgetting things at all, or just tying it to the int stat?

Forgetting. As in, making forgetting a game mechanic. As long as the player can remember it outside the game, this knowledge shouldn't be hidden in game. This only leads to discrepancies between what the character does and what the character "should" do. This actually ends up being less realistic than eidetic memory, because the game is telling you that the character forgot what is here, but the character goes for all the stuff anyway, because the player remembers it. It would also require quantizing how well are things remembered (ie. for how long), which would necessarily be a horrible approximation that would almost never work, because people remember important things (in this case good drops) and forget the background (zombie clothing made of cotton).

I'm generally against hiding information that is trivial (even if incredibly tedious) to obtain. This forces metagaming.

That's roughly what I meant, personally I'd prefer to limit it to "combat knife" rather than "combat knife (chipped)"

For weapons, the state is a pretty big deal. Though more about "damaged" vs "totally undamaged". Contents of tin cans are important too, as the nutrition varies wildly. Modded items are important (they tend to be player's favorites). Charges could be dropped, but this would lead to "a giant mound of flour" being remembered as the same item as "a pinch of flour".

Learner10 commented 8 years ago

You make a very strong point here against forgetting as a mechanic. While it's true that us the players do tend to forget the simple things (as a strong example, the most I can remember of the contents of a go bag is "lots of stuff in here", but the recipe called for specifics last I remember), it doesn't account for player (us) behavior. Some people for instance make stashes, or to some extent sort items into piles (this is the scrap metal pile, books go there, and here's where all the guns go, right next to the ammo), so I'd be highly agitated if we could forgot stuff like that.

In short, this kind of a mechanic forces a limitation on people where there might not be one (barring any physical action of course, this is a game after all), and that's not good.

kevingranade commented 8 years ago

Are you objecting to the player forgetting things at all, or just tying it to the int stat?

Forgetting. As in, making forgetting a game mechanic. As long as the player can remember it outside the game, this knowledge shouldn't be hidden in game. This only leads to discrepancies between what the character does and what the character "should" do.

The only way to avoid that discrepancy is to not have the feature (memory) at all. Every other solution is going to either remember too much or too little according to different players.

Personally I'd be in favor of aging out memories over time and letting the user mark certain areas for special attention, but in a zero-sum way where marking nothing and marking everything are equivalent.

I'm totally against perfect memory.

nornagon commented 8 years ago

Could the game be responsible for short-term memory (crudely approximated by e.g. stuff dropping out of memory once it leaves vision radius) and leave long-term memory be left to the player?

Leland commented 7 years ago

Discussion's been stalled on this for about 8 months. Closing – if anyone wants this reopened, please ping me here and it shall be done.