Encounters and Plots

Hey Folks! Hope everyone had a good weekend. The zombie cough is still clinging to my lungs, and the cartilage pains continue their migration around my rib cage. But I'm still of the opinion it's "getting better." If I die suddenly before finishing this game, give the source code to the devs of Qud or Cogmind :)

Today was actually pretty productive, as I cleaned up a bunch of the stray bits mentioned last week into something more cohesive. Must be the weekend of rest, or at least the fresh morning brain.

Essentially, I made my interactions able to reward relationships, as well as filter based on them, in addition to all the original condition reward/filtering and item reward stuff. They are now one step closer to a "do everything" type encounter like we had in NEO Scavenger. I also modified my class for building/finding people, PersonSpec, to have additional rules for a relationship and condition trigger.

The result of the above was to make it easier to work with relationships and condition triggering within the existing game plumbing. Now, as part of an interaction, I can search for any bartenders related to the current one we're talking to. If it finds one, it'll assign some variables to it for plot purposes. And if it doesn't, it can make one to suit.

Then, whenever certain things happen in the game, I can do a plot search to see if any plot events should happen. E.g. when the player has an interaction, when they arrive at a station, leave a station, gain or lose a crew member, etc. The game can search through plot stubs for anything that might apply, and if it finds one, open the encounter UI and transition into an NS-like choice and consequence sequence. (Not coincidentally, this is kind of how the NS encounter system decides whether to load encounters or not.)

My hope is that by doing it this way, we have a fairly regular heartbeat checking for chances of interesting things to happen. And what's more, whenever an interesting thing happens, it often applies to existing NPCs in the System. In theory, this starts to layer more and more history onto the existing people in the System, and potentially in different ways each time.

E.g. this game, we meet bartender A first, the plot triggers, and we betray bartender B to help A. Later, we meet a mother who's trying to find her runaway daughter. The game looks for bartenders to use as a person who knows her whereabouts. Maybe it chooses B, and now we have to go back to our enemy, hat in hand. Or it chooses A, and we get enthusiastic help, shortening our quest.

Alternately, maybe the next game we meet the mother first, and bartender A has the clue. We go to bartender A, he helps us, and we owe him one. We might get the opportunity to pay him back if the game loads the betrayal plot while speaking with him. But what if we're speaking to bartender B when it triggers, and we have to betray A? Do we? Maybe that's attractive since we are in his debt, and it gets him out of the picture? Or maybe we have the option to alert A to B's intentions, to repay our debt?

Hopefully, you can see how this type of procedural networking and plot-manufacturing could work. It seems like it might produce some interesting situations, decisions, and stories.

The player will still have to fill in many of the blanks, of course. The game will only tell you that you're betraying bartender A once you've chosen to, not why. You'll have to imagine the reason as part of the role-playing. But if the relationship and AI works as intended, the bartender A (or B) will still hate you for betraying him, and future interactions will be colored by that. Whatever the cause was for the choice.