I’m not sure how to build this thing, so I want to talk it out here. I’m aiming to get a sense of the general logic.
Suppose you have pretty active NPCs that run around and do things, like Sims would if Sims didn’t need a human to point-and-click for them.
What I’m currently thinking of is a set of Significant Event scenes, that hang out in potentiality, waiting for a chance to realize themselves. They have boundary conditions. The more the boundary conditions are fulfilled, the more likely the Significant Event scene is to fire.
When the Significant Event scene becomes active, it starts whispering in the NPCs ears, to tilt their actions toward doing those kinds of things that fulfill the conditions that cause the event to happen.
–That’s the core point: I don’t know how to handle such tilting. It seems, of course, that how to implement the “whispering in the ear of the NPC” depends strongly on how the NPCs choose to do things. OTOH, it’s up in the air how to make the NPCs do things. Naturally I want to design that in such a way that the plot engine can manage it relatively easily.
The intended benefit of this will be to replace entirely the linear plot structure, with choice points (or without them). Instead we’ll have a cloud of simulator events, with Significant Event scenes opportunistically arising out of the chaos.
Sims already do. (They don’t do important things, like find new jobs, have sex, fix broken appliances or teach their children how to walk, but they can mostly handle business-as-usual behaviour. They’re inefficient at it, which is another matter.
The difficulty is not how to do this, but how to do this in a way that doesn’t slow your game down to a crawl. If you have a large number of NPCs, all with a significant number of potential actions and Significant Events, all of which have to be checked against each other on a regular basis… yowch. You’d want to find ways to space these out (perhaps by managing NPCs through short-term goals rather than action by action).
One obvious way to tilt actions, for instance, would be to have NPCs choose their actions from a weighted probability list, and tinker with the probabilities depending on context. But doing it this way would involve a lot of repeating through lists or tables, and a considerable amount of work on keeping the probability scores updated.
Assuming you get your performance issues sorted out, there are still design issues. First, complex NPC simulations are just difficult for the player to figure out: if you’ve ever played Prom Week you’ll know that the system can feel rather impenetrable. Relatedly, it’s important (and difficult) to give the player enough tools to be able to successfully negotiate a simulated social landscape.
Finally, making procedural character behaviour non-idiotic is just a great big pile of consistently difficult work – doubly so if you want your characters to be doing non-boring things, triply if you want this to be described in a non-boring way. (And all this tends to lead to bloat; this is not something that most IF platforms will accomodate easily, except at relatively modest scales.) You need to hand-craft things a lot – which is what you’re thinking of doing with Significant Scenes, presumably.
Yes, I suppose I’m looking for NPCs that take care of Business As Usual. I’m thinking them through.
I suppose the goal is to organize NPC behavior so it (a) creates a volatile situation, which however (b) never actually triggers an extreme event.
So, you’d have all kinds of interesting things the NPCs could potentially do, but they don’t actually do them until the player comes along and gives things a shove. Perhaps a village or fortress where the player can try to play matchmaker, get an honest man to run for office (or Hamlet to get his act in gear), and so forth.
Or conversely, you could have a situation where the NPCs are headed toward Certain Doom of some kind – a war is brewing, perhaps – and the player must intervene to prevent the calamity. But I prefer the other version.
I see your point about slowing down a program with a lot of processing. Also, goal-oriented behavior – making NPCs chess players – becomes very difficult to handle very quickly.
I guess there are three basic levels I’m thinking about this on:
Business as usual.
Trivial narrative events.
Business as usual is the background hum of the npc social fabric. Trivial narrative events are scripted events that happen by default, but that stand out from business as usual. Dramatic events require the intervention of the player.
I think maybe you should consider whether to go for a bottom-up approach (autonomous NPCs whose behaviours form (emergent?) patterns) or a top-down approach (the larger patterns actually control the NPCs). Or some sort of mix, where the NPCs are largely autonomous, but you’re pulling the strings to nudge them towards certain behaviours.