CleverRaven / Cataclysm-DDA

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

Create Stages of Radio Broadcasts #74716

Open DoctorBoomstick opened 1 week ago

DoctorBoomstick commented 1 week ago

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

In my view, in-game radio has the potential to be a very powerful tool for story telling and world-building; however, it is, at the present, not utilised to its full potential. We have, apart from particular factions, very few areas and events that evolve as the game progresses: buildings don’t continually rot, streets don’t get overgrown by vegetation, etc. The radio has this same issue; all the snippets retained within can reflect various different game times with no relation to how far the player’s progressed in the world. Reports of the secession of Rhode Island rub shoulders with broadcasts from DJ Dustbowl, which are blended in with military communications from the assembly of the First Fleet. This makes it particularly hard to write consistent snippets for this category, as, while on the one hand, one might wish to write a snippet of a radio station’s last broadcast before being evacuated by what little remains of operational military forces following April 25th, one has no control over whether this snippet shows up 1 day into the cataclysm or 2 years into the game.

Solution you would like.

I propose that the current radio category should be divided into three stages that would transition throughout game-time.

More personal broadcasters, like DJ Dustbowl, can have their storylines run the length of stages 2 and 3. This would be positive, as one could gate-given events to approximately happen in consecutive order. For example, currently, a broadcast from Dustbowl contains information that his pupper’s died. This makes no sense if, later, the player hears more radio messages where the dog’s still alive. With this system, the death message can come in stage 3, and anything else can come in stage 2. I think this would, if in an indirect and not strictly player-interactive way, represent some limited mobility and evolution in the world beyond the player’s bubble. I would take care to, likely, avoid directly name-dropping buildings the player themselves can visit, such as the aforementioned refugee centre, as it would be incongruent if the player could hear braudcasts from this location after they’ve blown up, stabbed, eaten, murdered, or done whatever edge lords do to those poor folks. Name-dropping the free merchants advertising faction business, for example, would be good; these could be facilities the player will never encounter in the game. Name-dropping characters the player can encounter as direct speakers in the broadcasts, Smokes, ignores the fact that these people can and will very likely die as the player interacts with them.

Describe alternatives you have considered.

No response

Additional context

No response

ADekema commented 1 week ago

I didn´t know that radio broadcasts where a thing in game. It would be interesting if the player could interact with some broadcasts. Think finding and potentially communicating with military or police leftovers, Maybe finding a survivor broudcast only to track down the signal and realize that the braudcaster is long dead or find a supposed official government sanctuary that is in reality a raider trap.

PatrikLundell commented 1 week ago

I think we'd need one or more elaborate systems where snippets are tied to each other in chains to preserve a logical order, and have possible connections to other chains' progression states. The snippets should only appear of they haven't been received previously and should appear at the appropriate time (so you can miss a lot of snippets from a source but still get one appropriate for the time of the game). I would suggest a snippet to be "valid" for some length of time (snippet times in a chain should probably not overlap, but it shouldn't be required that the next snippet becomes available immediately, as the broadcasters can reasonably be off the air for periods of time for various reasons. If you allow for interdependencies I think it should be possible to only provide a snippet if the condition is met (e.g. something about an interaction with the Free Merchants only being available if they're still around in a reasonably healthy state). In addition to this, I think it would be interesting if radio broadcasts would be a way to find some really far away factions. I would suggest the reception of such a broadcast would allow the PC to try to contact them via radio and build up sufficient trust for them to provide you with their coordinates (lets just hand wave away the issue of providing coordinates over unsecured channels, although consequences of doing so with the PC not arriving there within some time limit might be interesting. In that case, the radio comms ought to allow you to put the exact coordinates on hold and only give you a rough area to provide you with enough info to know whether you're ready to try to reach them before requesting the coordinates). Another complication is that the snippets ought to have some means to tie time to the seasons settings (it doesn't really make sense to get one about freezing cold in the middle of your summer (especially if seasons are disabled).

DoctorBoomstick commented 1 week ago

This would be ideal, yes. I had the idealistic thought that, in a perfect world, depending upon the state of the factions, different packets of snippets could be injected into the broadcasts. So, for example, if the Old Guard’s doing well, one could hear radio snippets about base points being secured and the like, and if they’re not doing so well, that would be reflected in their communications. While everything you suggested here is my personal dream state that would allow so many different forms of story telling to be done, I think we would first need at least a basic delineation between game stages. Perhaps, rather than my original suggestions of three overall game stages or categories from which to pull snippets, a new value could be introduced to snippets that would specify when the snippet would enter the pool of pullable entries and when it would be removed. Something in the vain of:

“id”:

“text”:

“weight”:

“duration”: “min”: “1 d”: “max”: “2 d”

For even more fine manipulation, I would like if such a system could use mixed integers, day and hour. This would very much help out with the current standing of things and would also be of utility in things that aren’t radio broadcasts; survivor notes and video logs come to mind. This would negate one snippet having to be gated behind another, as the writer could simply set the duration as appropriate.

PatrikLundell commented 1 week ago

I agree with you. A first stage of a duration of validity go a fair way to provide a sense of time progression (not sure if "duration", "min", "max" is the best set of words here, as it suggests it's a variable length of validity. I think "duration", "start", "end" might be better, but it can still be improved).

LyranRenegade commented 1 week ago

adding conditions to snippets in general would be really useful

zachary-kaelan commented 1 week ago

Yeah the current radio storytelling system is unacceptable. If anything, I think you're underestimating the full potential.

EOCs and NPC dialogue syntax are very versatile and well-equipped for this. The time_since math function can do things like { "math": [ "time_since(u_timer_caravan_RandEnc)", ">", "time('1 h')" ] } and { "math": [ "time_since('cataclysm', 'unit':'years') > 1" ] }. Other potentially relevant functions include:

Event EOCs could also be used to trigger broadcasts:

Various new events could be added to assist with this kind of thing, like an evolution_progress event, as well as a player_hears_broadcast event for assigning missions or adding map details.

zachary-kaelan commented 1 week ago

I think a station/channel type should be added, each of which can be "muted" by the player and has some of the following fields:

As far as what fields would be in a broadcast type: