Cataclysm-DDA icon indicating copy to clipboard operation
Cataclysm-DDA copied to clipboard

Create Stages of Radio Broadcasts

Open DoctorBoomstick opened this issue 1 year ago • 7 comments

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.

  • Stage 1, the early cataclysm, would play for 3–4 days after game start and reflect the final remains of official broadcasts, the last few formal radio networks going down with their ships, as it were, the military’s last consolidation of the First Fleet, some limited survivor transmissions, etc.
  • Stage 2, the midgame, would play out for about 20–40 days after stage one and would retain communications between old guard units, starting survivor transmissions, small-scale communications between groups of survivors, single-person warnings, and the opening stages of establishments, like the scrapper NPC, perhaps announcing that they’re setting up places for business. These transmissions should be relatively infrequent, complemented by repeater messages left behind from stage one and the end of the world, to reflect the fact that people are struggling to get set up, establish themselves, survive, and not die. Those who manage this get to progress to stage 3.
  • Stage 3, the main faze, is basically a month or two into the cataclysm, when those who would have died earlier have died, the survivors that are left have established themselves, and bigger groups can turn to radio as a realistic prospect of communications: the refugee centre and the free merchants, for example, could advertise their businesses at this time. Unseen factions that have been communicating through radio, such as holdouts in different states, can fall, be overrun, encounter singularities, have bush wars, whatever.

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

DoctorBoomstick avatar Jun 22 '24 08:06 DoctorBoomstick

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.

ADekema avatar Jun 22 '24 12:06 ADekema

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).

PatrikLundell avatar Jun 22 '24 14:06 PatrikLundell

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.

DoctorBoomstick avatar Jun 22 '24 14:06 DoctorBoomstick

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).

PatrikLundell avatar Jun 22 '24 14:06 PatrikLundell

adding conditions to snippets in general would be really useful

LyranRenegade avatar Jun 24 '24 23:06 LyranRenegade

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:

  • weather: can get temperature, humidity, pressure, windpower, and precipitation.
  • characters_nearby/monsters_nearby: the radio could comment on groups of characters or monsters visible from the station.
  • faction_like/faction_respect/faction_trust: everyone likes some good gossip.
  • moon_phase: if you have nothing better to talk about.
  • skill: if someone is a master at something, word might get around, and it might also be useful information to the player.
  • has_visible_trait: if someone heavily mutated is running around, it'll draw attention.

Event EOCs could also be used to trigger broadcasts:

  • activates_mininuke
  • camp_taken_over
  • character_kills_character/character_dies
  • destroys_triffid_grove
  • vehicle_moves: if there is a functioning helicopter, boat, or train going around.
  • player_fails_conduct/player_gets_achievement: if you want to get silly.

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 avatar Jun 25 '24 16:06 zachary-kaelan

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:

  • faction: what faction is running the station, as factions may run multiple stations.
  • available_condition: under what conditions a station is visible to the player.
    • Time since the start of the cataclysm can be used to disable pre-cataclysm stations after Stage 1.
    • Player statistics and achievements could be used to guide change in stages,
    • A certain level of faction trust - or a certain level of hacking - may be required to gain access to specific stations.
  • broadcast_condition: under what general conditions a station makes broadcasts, with context variables containing info on the latest broadcast.
    • A lot of stations will only be making broadcasts at certain times of day.
    • If the latest broadcast is something like "I ate some slime and got food poisoning, whoopsie daisy" then they shouldn't be making more broadcasts for a while.

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

  • category: for organizational purposes.
  • station/channel: where the broadcasts are made from.
  • condition: given context variables for the time since the last broadcast, the number of times broadcasted, and the number of times heard by the player.
  • can_interrupt: whether the broadcast can interrupt ongoing broadcasts, for example if a mininuke got set off.
  • ignores_station_condition: whether the broadcast ignores the station's broadcast_condition.
  • text: either a single string or an array of strings.

zachary-kaelan avatar Jun 25 '24 17:06 zachary-kaelan

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.

github-actions[bot] avatar Jul 25 '24 17:07 github-actions[bot]