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

Rule #49: always have backup #53523

Closed I-am-Erk closed 10 months ago

I-am-Erk commented 2 years ago

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

Not many people know this, but actually, it's really easy to die in this game. This can be a bit frustrating as this is a game that rewards long, slow, patient playthroughs, and we intend to make that more and more the case. For those that have noticed the Easter egg that it's very easy to die in this game, these may seem to be at odds.

Solution you would like.

Eltank has granted unto us the solution, but we have yet to see it realized.

We need a system in game to swap characters, taking over one of your faction NPCs while your previous player becomes an NPC ally.

The primary use case for this is as an extra life. Now, your death means the loss of a powerful survivor, but the faction may live on. Only when everyone's gone does the story end. The secondary use case is equally important: as we move ever further from "lone wolf" gameplay, it becomes less prohibitive for a player to be able to do everything, even though a character can't. Sure, you can't be a mechanical engineer veterinarian doctor atomic physicist, but you could certainly have at least a few of those in your faction. Switch between them if you want to do a different task.

limitations

Eventually, we're going to want some kind of loyalty statistic to determine how freely you can switch characters... Disloyal characters or new recruits might not be choosable, unless there's nobody else left. However, on a first pass, i think we can allow character swapping in two specific conditions.

  1. Your main character dies. In this case, you can choose to take over any faction NPC without restriction.
  2. You and the NPC to switch with are both in the faction camp and no enemies are in line of sight of either of you.

For a first pass, this will allow us to sort out all the details and bugs, and later on we can allow other situations for more flexibility and new stats for more roleplay.

Describe alternatives you have considered.

Additional context

I think we can get this in as a last major feature for G, as this is basically extending Eltank's initial implementation

Photoloss commented 2 years ago

You and the NPC to switch with are both in the faction camp and no enemies are in line of sight of either of you.

Please do not tie this to the extremely rigid, clunky and unrewarding faction camp system. Maybe track an abstract "faction loyalty" score for each NPC, or just use whichever existing scoring system makes NPC allies stand their ground right behind me as I run into a zombie hulk. Requiring a camp would also be extremely punishing for nomadic characters even though nomadic tribes with social cohesion probably predate settled civilisation.

I-am-Erk commented 2 years ago

The feature won't always require a camp, but there are few to no similarly appropriate and easily added "home and safe" restrictions already in game.

Photoloss commented 2 years ago

Why would "home" be a requirement in the first place? "Away on a faction camp mission" is a valid disqualifier without established radio comms but "you take over if I don't make it" seems like it'd be standard fare in a survival situation.

Inglonias commented 2 years ago

Why would "home" be a requirement in the first place? "Away on a faction camp mission" is a valid _dis_qualifier without established radio comms but "you take over if I don't make it" seems like it'd be standard fare in a survival situation.

I agree here. I feel that player death should allow for taking over an NPC follower regardless of the situation. Let the user roleplay that situation however they want.

I-am-Erk commented 2 years ago

"you take over it I don't make it" applies regardless of faction camps.

If you want to program a different, sufficiently error trapped and micromanagement resistant algorithm, be my guest. Otherwise, this isn't very productive.

Ramza13 commented 2 years ago

Just to make sure everyone knows, the first item is doable via json. #51890 has an example json for switching characters on death. The second item is a little harder making it a dialog choice is easy, but there are no conditions as of yet for being in a faction camp or being safe. I'll take a look at adding some though, at least for danger it should be easy, less sure about faction camp but we will see.

I-am-Erk commented 2 years ago

We should have a dialogue condition for being in a faction camp anyway, it would make a few possibilities for soft coded faction camp events that are outside the usual change.

The current "is safe" stuff is not very robust afaik

Photoloss commented 2 years ago

What do you mean "error trapped"? Unless I missed a recent change follower relations reach the point where we can strip them naked, hand them grenades, have them drink/inject mutagens or install CBMs and tell them to melee zombie hulks. I am under no delusion that the prerequisites for doing so are in any way realistic or well thought out, but whatever present relations state allows those should represent more than enough trust to swap player character and maintain faction cohesion.

Basically just copy-paste the existing highest requirement and fix that independently because the code probably just reads "if FRIENDSHIP > 90" or something like that.

I-am-Erk commented 2 years ago

You are misunderstanding the point. A faction camp is a stable, stationary location unlikely to have zombies in it. It has nothing to do with loyalty to the player, it has to do with avoiding a mechanic that becomes an unpleasant micromanagement tool to optimize NPC behaviour in combat. You should only be switching characters when we can guarantee you're in a stable, safe location, and it shouldn't be easy to do at whim or it will become micro.

Photoloss commented 2 years ago

Oh that's what you meant! I guess a flat >15min cooldown would be the trivial solution, maybe an hour or so. That seems like a reasonable time frame for a "hey, can you go do this special task for me?" type arrangement (which is the closest in-universe explanation I can come up with for the POV shift right now).

For combat micromanagement "no enemy in sight for either of them" might be enough, if you micromanage so much to momentarily break LoS the constraints heeded to do so should outweigh the benefits of swapping. Maybe add a much shorter cooldown similar to default safemode settings if there's a prevalent abuse case with e.g. house rooms but the additional risk of having the NPC with you at all probably outweighs the benefits in the earlygame.

Is there any particular scenario you are worried about? Especially one where you couldn't just walk a few tiles away, plop down an empty camp and then come back? You can still tell them to run away, hand them a weapon or the like right now and I haven't heard of anyone successfully micromanaging those.

Inglonias commented 2 years ago

One way to ensure that things are "safe" might be to make switching an activity that takes, let's say... five minutes and makes conversation noises? Justify it by logging something like "You explain the plan to Billy Joe Bob" or whatever. Five minutes is enough time for a zombie to kill you, I would think, especially if you're making noise as this happens.

I-am-Erk commented 2 years ago

Having it take time is not an unreasonable idea, but for the moment, I would be much happier keeping its use comfortably restricted and opening it further once it's better tested than making it widely available and having to claw it back for balance reasons.

catdach commented 2 years ago

As much as I hate myself for suggesting it, we could make it tied to a faction camp task/activity. Something like a "learn to lead" or whatever. That way it's tied to a base and be given a time requirement before completion. could even be given other requirements like the NPC has to have a certain skill level(so no new recruits) or be paid a certain amount of food or other resources(no ploping down a temporary camp for 20 minutes). Could even make it locked until some level of base progression like certain expansions are. My goodness, it's almost perfect. I hate it 🙃

PatrikLundell commented 2 years ago

I definitely like the concept of a faction specialization system, and I think the work around to switch character to perform specialized tasks is a good approach for the intermediate future (while the long term goal should be to have the companions capable of performing those tasks themselves when requested to do so). I don't like tying it to the base camp mechanic, although I can grudgingly accept it as a starting point from which to expand with the reasonably near term goal to detach it from the camp when sufficiently evolved. I'd like to see base camps as one mechanic for player faction management, but don't think it should disqualify other styles unless there are reasons that some mechanics only make sense in a camp context (and then I'd still prefer to see the "camp" concept loosened so that players can set up shop wherever they want (and have the might to do so) as far as possible).

Photoloss commented 2 years ago

Honestly camps feel rather superfluous and unnecessarily "game-y" overall. Like the original Command&Conquer only turn-based and taking hours of in-game time. The typical strategy "tech tree" progression doesn't make a lick of sense when you have abundant functional high-tech equipment available and it's also very restrictive in terms of roleplaying. Tying this to camps would be more akin to blocking it in "normal" play but not requiring the debug menu to access the in-progress features. If that is the intention then camp progression definitely is a very effective way of ensuring no regular player haphazardly stumbles across it.

LeahLuong commented 2 years ago

I think I agree w/ Photo on this 1. The camp system isn't something I've really explored yet because it's frankly daunting & seemingly superfluous to the gameplay as it stands now. I'd like to see rule 49 implemented automatically, perhaps built in to the query on death. Relegating this functionality to the camp system, there's no telling when it would be divorced from there.

I-am-Erk commented 2 years ago

I don't think I can emphasize more how not important the specifics of how you want to switch characters are. unless you have a relevant concen on how faction camps would be harder to implement on a first pass to try out the feature, please stop bikeshedding. This is not a discussion of the final phase feature, nor is the ability to switch with a live NPC even the main thing I want to get into here. And, as can be evidenced by the last post here, it seems to be confusing people: you'll still be able to switch characters on death even without a faction camp.

LeahLuong commented 2 years ago

Erk, I don't think my previous comment was evoking Parkinson's Law of Triviality. In your initial post when creating this thread, you list 2 alternatives that reference switching w/ live NPC's. The very title of the thread contains the concept of backup.

I don't pretend to know anything about this game's backend or how implementation of the concept proposed by Eltank would go but I'm having difficulty imagining how nesting rule 49 into the faction camp system would be simpler than an on-death prompt asking if you want to switch to a faction member. In my mind, placing this concept in the faction camp system would entail creating tutorialization dialogue & NPC interactions, separate menus for navigating these, zoning & checks for both char safety & error handling, & finally making sure all these features play nice w/ each other.

The faction camp system already has some functionality when it comes to delegating tasks to NPC's. Wouldn't we be better served by enhancing that functionality rather than creating a partially redundant, parallel system in a game that already has a steep learning curve??

I believe an on-death prompt directing you to a faction NPC is the simplest starting point for this concept. Perhaps building the concept out by adding faction camp systems later for more complexity would be good -- & I think it would be -- but maybe we should work on refining our invention of training wheels rather than discovering fires we may need to later put out. I really mangled that netaphor but I think you catch my drift.

kevingranade commented 2 years ago

It's not a hard blocker for an initial version, but at the end of the day I want something more demanding than, "sure we can work together for a while" as far as faction loyalty before the player takes full control of a NPC.

LeahLuong commented 2 years ago

As it stands, once an NPC joins your faction, you practically have full control of them. To quote Photo:

we can strip them naked, hand them grenades, have them drink/inject mutagens or install CBMs and tell them to melee zombie hulks.

Another thought I had regarding the "safety" angle: what are possible interactions between portal storms & rule 49?? It would really suck to have your backup overruled because of a storm effect . . .

I-am-Erk commented 2 years ago

LeahLuong, I don't know a nice way to say this but you are more or less talking about something completely different. This thread isn't about how complete your control of your faction is, it's about giving limited access to two separate versions of the same feature - taking over a different character after death, and swapping to a different character when alive.

If your concern is that swapping to a different character while alive is going to be too gameplay restricted, or in any way related to that, please leave it for a later conversation. I will summarily delete any further digressions. I'm talking here about a limited release of a feature for testing and trial, not a final version.

LeahLuong commented 2 years ago

Erk, the 1st part of my last comment was a response to Kevin. Didn't you notice his contribution to the thread just after my comment?? If I'm not mistaken, he's kind of the head honcho when it comes to this game's development. I'm pretty sure my comments haven't been "about something completely different" or else Kevin's input wouldn't read as a reply to myself & @ least 1 other person participating here.

This is your thread & you yourself placed the "Suggestion/Discussion" tag on it so I thought my input here would be welcome. You probably view this post as a censorable "digression" but worry not, I'll see my own way out. It seems the 1st pass implementation is in line w/ what I want anyway.

By the bye, I think you put a lot of time & effort into this game & you bring good ideas to the table. It puzzles me why you'd be so willing to quash my somewhat mild feedback & how you seemingly misread or ignored a large portion of what I've written here.

SunshineDistillery commented 2 years ago

This will make NPC dialogs very complicated, but I'm sure you know that...

There should be a flag to make certain (static) NPCs off-limits. If you take over an important quest-giver, you will have no way to talk to yourself to access those missions or dialogs. Also, some NPCs might be cool for a minion but really unbalanced for play, which would make it too tempting to find super guy every game and then transfer your consciousness to them. For example, someone with a custom set of good mutations.

Fris0uman commented 2 years ago

powerful NPC are better than your character

that's not an issue, if you want to play a powerfull character just use freeform and make one

quest givers

I'm pretty sure "important quest givers" can't be recruited which solves that.

I-am-Erk commented 2 years ago

This will make NPC dialogs very complicated, but I'm sure you know that...

Most NPC dialogues will actually be OK, and the ones that aren't are also bugged for multiple playthroughs in the same world (more severely) and could use the fix ups. What does need checking is that we should go through all user-side-stored variables and things and see if they transfer over with the character switch. For now, they should, and later we should have a "faction" stored variable setting to distinguish "this specific person has talked to me about this" from "any character from this faction counts as knowing about this" as there will be times we want to keep track of that.

Currently there are vanishingly few cases where that matters, and I don't think any of them are important enough to block stable.

There should be a flag to make certain (static) NPCs off-limits. If you take over an important quest-giver, you will have no way to talk to yourself to access those missions or dialogs. Also, some NPCs might be cool for a minion but really unbalanced for play, which would make it too tempting to find super guy every game and then transfer your consciousness to them. For example, someone with a custom set of good mutations.

Not much of this part makes sense. You're not going to be taking over any NPC in the game, only NPCs that can follow you. Presently, none of those NPCs are quest-givers for anything at all, and when I eventually set up the background quests I have been thinking of, they're just fun little side quests. And if you've modded in an npc with a custom set of good mutations, why not just start with that set?

PatrikLundell commented 2 years ago

Well, the companions you recruit have a tendency to give you quests (kill jabberwock, find religious token, etc.) and a certain "unique" LaCroix quest giver can be recruited (although I'm not sure that can happen before all quests have been performed). There's also an Isherwood character that you seem to be able to recruit to perform a quest.

I don't think any of these are "important" quest givers in the sense that they block major quest arcs, though.

esotericist commented 2 years ago

so let's talk about what makes a constructive discussion versus what results in disruption (what erk refers to as 'digression' above):

constructive: keeping on the provided topic. discussing in good faith. taking in good faith the conversation starter when they indicate they meant something other than what was interpreted, especially in the context of humorous referential-based comments like erk's tendency to cite zombieland's rules rather than use dry, clinical phrasing that makes it harder to keep engaged. (for those who might not be aware: erk's day job is an actual physician, and i'm pretty sure he sees enough clinical there he doesn't want to default to it here)

disruptive: seizing on the opportunity to complain about related systems, when those complaints aren't directly pertinent to the current proposal. treating proposals for things that someone on the team is interested exploring as an experiment as a final locked-in-stone design document. trying to attack specific minor points of the proposal as a way of pushing against a major point of the proposal (this would be the bikeshedding mention that erk made).

it's not that we want to censor discussion, it's that certain routes are clearly not actually in the interests of helping get things done, and when a senior member of the team tries to steer things back on track, balking isn't going to achieve much other than annoying members of the team. and annoying members of the team is nearly always not the best strategy for getting the results you want.

@Photoloss i need to state here, clearly and unambiguously: you have been a consistent source of negativity. many of your arguments in these threads are incoherently based, where you evidently don't understand what's being discussed, and insist on making firm arguments anyway. this is not helpful, and i'm going to ask you to reconsider how you approach things.

@LeahLuong what you were doing absolutely was bikeshedding, and the fact kevin came in and made a comment does not in any way change the nature of your comments, or how they pertain to the thread.

lastly, to everyone: the faction camp system is clunky. we know this. the solution to this is to make the faction camp system not clunky, so that it can be integrated more with gameflow, because we want factions and camps to be crucial to how the game functions. that does not mean we are specifically needing "faction camps" exactly as they are currently implemented, it's just the current implementation is all we have at the moment. if you don't like the current implementation of the faction camps, help us make it better. do not attack the idea of faction camps. this helps nobody, and bogs down conversations that might otherwise be improving the game.

SunshineDistillery commented 2 years ago

Not much of this part makes sense. You're not going to be taking over any NPC in the game, only NPCs that can follow you. Presently, none of those NPCs are quest-givers for anything at all, and when I eventually set up the background quests I have been thinking of, they're just fun little side quests. And if you've modded in an npc with a custom set of good mutations, why not just start with that set?

I'm working on a mod where an NPC has custom quests and dialog trees. And he has to be an official follower to call him on the radio. But taking control of him could break things.

Photoloss commented 2 years ago

it's just the current implementation is all we have at the moment.

See this is the part I disagree with. Let my try to phrase it more constructively: we have several related systems with ongoing active development and/or a need for such for other projects unrelated to this proposal. In particular we have the NPC factions relations with a lot of work going into the Exodii, and those also necessitate sensible interactions/opinions for individual NPCs. I presume "Missions" will continue to see development as well in this regard. These features have significant overlap both with faction camps and with the "swap while alive" part of this project. Safe Mode has been a staple for ages and "autonavigation" has seen significant improvements. Since at least the former sees such widespread use it seems much more productive to utilise components of these features rather than faction camps, which also opens up potential improvements to these other systems from refinements necessitated by swapping.

Going slightly off topic the faction "camp" aspect mostly seems to retread old ground with parallel independent implementations of the same fundamental mechanics (crafting, construction etc.) so building new features on top of the existing faction camp system feels like we might be headed to repeat the issues with the AIM and vehicle repairs.

And I pretty much always intend my comments to be read as "everything is great except for this little thing:" unless explicitly stated otherwise. Not as condemnation of the greater whole of the proposal.

@esotericist For any other complaints regarding my personal conduct contact me elsewhere with specifics and evidence! Unsubstantiated claims such as "incoherently based", "don't understand" or "reconsider" are not actionable on my part and will only sour relations on both sides.

kevingranade commented 2 years ago

This reply is a perfect example of the kind of thing esotericist is talking about. You have no idea what you're talking about with respect to what gets integrated with what and the relative costs of doing so, but you're making wild assertions about tradeoffs that for the most part don't exist. Everything you've said in this thread boils down to "I don't like faction camps, so here's a flood of nonsense for why you shouldn't add anything to them". You were even directly told by Erk that faction camps are not going to be used to track whether switching is allowed, it's just one of the places where it can happen, but you have ignored that and continue to harp on this illusory "integration" bugbear.

Your initial misunderstanding of the issue was understandable, if easily prevented by reading Erk's post carefully and not jumping to conclusions, but once that was cleared up, your further replies are simply unacceptable as you are not listening to what contributors are telling you. Then when told by another contributor the kinds of ways you are being disruptive that you are going to need to work on, you ignore that feedback and simply restate your fallacy-riddled position again.

The current state of things is you are firmly in the "not productive to communicate with" category of users, and you are teetering on the edge of "actively disruptive to the project". If you are going to claw back out of the hole you are currently in, you are going to need to start listening to feedback and actually incorporating that feedback into your understanding of and communication with the project.

To be perfectly clear, if you do not change the way you communicate in very short order, I will be banning you from posting in this repository. And no, you do not deserve or nor will you be receiving an itemized listing of how to do that.

hexagonrecursion commented 2 years ago

there are few to no similarly appropriate and easily added "home and safe" restrictions already in game.

What about at_safe_space? https://github.com/CleverRaven/Cataclysm-DDA/blob/86fe522ddda2f5aba3efd619e5f8ff9f875dd2b3/doc/NPCs.md#L877

github-actions[bot] commented 1 year ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. Please do not bump or comment on this issue unless you are actively working on it. Stale issues, and stale issues that are closed are still considered.

I-am-Erk commented 1 year ago

Keeping this open because "not on death" switching still isn't in and I'd like to have it at least in prototype.

cake-pie commented 1 year ago

Some thought needs to go into how achievements, conducts, and scores are handled. Some are backed by stats that need to check against avatar_id; other stats are guaranteed to be logged for the player character only. #63455 shows some of the pitfalls with just swap-on-death; things get messier if you can swap freely.

Are achievements, conducts, and scores tied to characters, or player actions? Are they invalidated once the starting character dies? Should player get credit / be penalized for events that characters did as NPCs before they were taken over? Or (if swap-anytime is allowed) when the "original player character" was temporarily an NPC because the player briefly took control of a different character?

Things are inconsistent and clarity is needed on what the desired behavior really ought to be. #63488 only is a first step to properly capture character swapping in the event stats, so that the information needed is at least available for later use, once it's been decided how things should actually work.

kevingranade commented 1 year ago

This issue has been mentioned on Cataclysm: Dark Days Ahead. There might be relevant details there:

https://discourse.cataclysmdda.org/t/catataclysm-dda-0-g-first-release-candidate/28560/3

RenechCDDA commented 11 months ago

Basic non-death implementation added by #65732. You can swap freely at any camp, but there is a 90-day cooldown. The cooldown is instantly cleared if the player character breaks a limb.

Although it requires a camp (ANY camp), camps can nowadays be arbitrarily placed which eliminates a huge barrier to entry.

Ideally I would also like it to be implemented through the talk menu of any follower - The relevant values/conditions are already exposed to json so this should probably be straightforward but not simple (lots and lots of lines of json probably).

hexagonrecursion's suggestion to use the safe space check for the dialogue is a fine idea and should be appropriate. The difficult part is just writing the json to do the swaps. Might need some C++ support.

Eventually, we're going to want some kind of loyalty statistic to determine how freely you can switch characters...

I personally think that this should be handled with the NPCs' opinions(of you) and values(personality) system, and characters should probably want leadership changes over a long-enough period. (i.e. calls for regular elections)

I-am-Erk commented 10 months ago

I think in the present state I can actually close this, although #69927 above is a discussion of how we could tweak it ongoing.