CitizenSnips
Insider
So I've been mulling over this for a while and I just can't seem to come up with a solution, so I've decided to ask you guys for your thoughts on what I've drudged up so far and if it makes sense. I put this in General Discussion because I'm sure the concepts could be applied to SG, especially with the stated goal of having a really dynamic story.
My problem is that random event systems aren't really all that random. Generally there's a list of events that could happen and a bunch of anchor points that the events can occur at. An RNG loops over and over until it lands on one of the events and bam, "randomness" occurs. The problem is this isn't really random, and it doesn't feel random. In the end, there's usually not that many events and the player sees something that has already happened and suddenly the immersion is broken and all the mystique dissolves in the face of the limitations of the system.
So how do we avoid this? I feel that the solution is in AI. The reason events have the be guided at all is that the AI isn't smart enough to interact in a way that an event will arise. Let's take a gander at good ole Skyrim:
Skyrim's random event system is pretty much exactly as described above. Radiant grabs an event from the list and throws it down just out of the player's line of sight, and then the player happens upon it. The NPCs are scripted to do something on some trigger, and then... nothing. There's probably a hundred or so of these events that can occur. Maybe a bandit trap is set with a broken down carriage where the bandits attack the player when they go to investigate. So what's the problem with this system?
Well the problem is that a developer can only make so much content. Once the player exhausts the full list of events, nothing new can happen. The player realizes this and loses their sense of adventure. The first time that bandit attack comes you're taken by surprise. The second time might catch you off guard, but after that it's all just repetition. Games like Skyrim have a huge initial burst of excitement as people find new things and experience fresh experiences, but it quickly dies once people have run through the list.
The solution then is to find a way to make it so these events happen on their own without any parameters other than an RNG seed and happenstance. And the only way to really do that is a complex AI. I believe it is necessary for two artificially intelligent entities to interact in a way that is not simply a boolean "kill or don't kill" decision. This does not mean that they need to be perfectly human, or even close to it. However, it does mean that there needs to be more than two reactions to every action by the other entity.
Consider the following scenarios. Let's say that two NPCs happen upon eachother. They have an interaction that is 3 events long.
Situation 1: The NPCs follow a boolean decision tree. There are a possible 2^3 (8) full interaction sequences. That means that there are eight total series of events that could transpire.
Situation 2: The NPCs follow a ternary decision tree. There are now a possible 3^3 (27) full interaction sequences. This means that there are 27 total series of events that could transpire.
Adding a single extra decision per interaction more than triples the possible series of events. So now in our 3 event interaction, instead of landing on "kill", let's say one of the NPC's AI RNG lands on "Greet Happily". From this action, the other NPC's AI then looks at its internal table for appropriate reactions to "Greet Happily" and applies some sort of weighting based on perhaps an internal happiness meter that records the overall progress of the conversation. So now this other AI's RNG lands on "Approach Cautiously", but it could have also landed on "Kill" or "Greet Happily". In response to this, the first AI looks up appropriate reactions. Let's say that this is a "Sneaky" type AI. The appropriate sneaky reactions to "Approach Cautiously" might be something like "Attack", "Approach Happily and Then Attack", or simply "Idle Chat". So it lands on "Approach Happily and Then Attack", and suddenly this Sneaky NPC has cut the other's throat and a dynamic event has happened.
The nice part about this is that you have a completely dynamic event that has an implied story behind it, but was simply a result of RNGs. It wasn't hard coded and the outcome wasn't predetermined. Perhaps the first NPC instead rolled "Kill" right off the bat and attacked the second NPC. From this the other NPC could roll "Defend", "Flee", or "Yield", to which the first will respond with something similar.
From an abstract standpoint, this is a very simple thing to implement (But then again, what isn't? ). Simply add a tree data structure for each AI personality type you want and populate it with decisions as you wish. The truly important part is choosing decisions that will create memorable and worthwhile events.
Now all this doesn't mean that there shouldn't be something like Skyrim's Radiant system for random events. However, I believe the actual event should be handled by the AI, while a system like Radiant should only be used to plop down some actors and maybe some influencing props and then let them do their thing.
I think this could be a great system to implement in Sui Generis in place of a random event generator, which would stale rather quickly. I would encourage BME to focus on AI, as it is so much more worthwhile than a random event generator. Also I love all of you. That is all.
My problem is that random event systems aren't really all that random. Generally there's a list of events that could happen and a bunch of anchor points that the events can occur at. An RNG loops over and over until it lands on one of the events and bam, "randomness" occurs. The problem is this isn't really random, and it doesn't feel random. In the end, there's usually not that many events and the player sees something that has already happened and suddenly the immersion is broken and all the mystique dissolves in the face of the limitations of the system.
So how do we avoid this? I feel that the solution is in AI. The reason events have the be guided at all is that the AI isn't smart enough to interact in a way that an event will arise. Let's take a gander at good ole Skyrim:
Skyrim's random event system is pretty much exactly as described above. Radiant grabs an event from the list and throws it down just out of the player's line of sight, and then the player happens upon it. The NPCs are scripted to do something on some trigger, and then... nothing. There's probably a hundred or so of these events that can occur. Maybe a bandit trap is set with a broken down carriage where the bandits attack the player when they go to investigate. So what's the problem with this system?
Well the problem is that a developer can only make so much content. Once the player exhausts the full list of events, nothing new can happen. The player realizes this and loses their sense of adventure. The first time that bandit attack comes you're taken by surprise. The second time might catch you off guard, but after that it's all just repetition. Games like Skyrim have a huge initial burst of excitement as people find new things and experience fresh experiences, but it quickly dies once people have run through the list.
The solution then is to find a way to make it so these events happen on their own without any parameters other than an RNG seed and happenstance. And the only way to really do that is a complex AI. I believe it is necessary for two artificially intelligent entities to interact in a way that is not simply a boolean "kill or don't kill" decision. This does not mean that they need to be perfectly human, or even close to it. However, it does mean that there needs to be more than two reactions to every action by the other entity.
Consider the following scenarios. Let's say that two NPCs happen upon eachother. They have an interaction that is 3 events long.
Situation 1: The NPCs follow a boolean decision tree. There are a possible 2^3 (8) full interaction sequences. That means that there are eight total series of events that could transpire.
Situation 2: The NPCs follow a ternary decision tree. There are now a possible 3^3 (27) full interaction sequences. This means that there are 27 total series of events that could transpire.
Adding a single extra decision per interaction more than triples the possible series of events. So now in our 3 event interaction, instead of landing on "kill", let's say one of the NPC's AI RNG lands on "Greet Happily". From this action, the other NPC's AI then looks at its internal table for appropriate reactions to "Greet Happily" and applies some sort of weighting based on perhaps an internal happiness meter that records the overall progress of the conversation. So now this other AI's RNG lands on "Approach Cautiously", but it could have also landed on "Kill" or "Greet Happily". In response to this, the first AI looks up appropriate reactions. Let's say that this is a "Sneaky" type AI. The appropriate sneaky reactions to "Approach Cautiously" might be something like "Attack", "Approach Happily and Then Attack", or simply "Idle Chat". So it lands on "Approach Happily and Then Attack", and suddenly this Sneaky NPC has cut the other's throat and a dynamic event has happened.
The nice part about this is that you have a completely dynamic event that has an implied story behind it, but was simply a result of RNGs. It wasn't hard coded and the outcome wasn't predetermined. Perhaps the first NPC instead rolled "Kill" right off the bat and attacked the second NPC. From this the other NPC could roll "Defend", "Flee", or "Yield", to which the first will respond with something similar.
From an abstract standpoint, this is a very simple thing to implement (But then again, what isn't? ). Simply add a tree data structure for each AI personality type you want and populate it with decisions as you wish. The truly important part is choosing decisions that will create memorable and worthwhile events.
Now all this doesn't mean that there shouldn't be something like Skyrim's Radiant system for random events. However, I believe the actual event should be handled by the AI, while a system like Radiant should only be used to plop down some actors and maybe some influencing props and then let them do their thing.
I think this could be a great system to implement in Sui Generis in place of a random event generator, which would stale rather quickly. I would encourage BME to focus on AI, as it is so much more worthwhile than a random event generator. Also I love all of you. That is all.