Simulating Fluid Dynamic Change
I've been trying to figure out for quite awhile how to present the player with changeable situations in the space game I'm working on. I've got three goals with the system for creating events-- it should respond to player changes, it should be self-balancing, and it should present a wide variety of outcomes. Here's a working example: You're a smuggler running guns. Each time you sell a batch of guns in an area, you affect the locals and potentially tip events one way or another. Selling enough guns to people who hate each other should raise the level of conflict, for instance, but I'd like this not to be totally predictable. Yet I need to keep it controllable both in terms of implementation and the player telling what the heck is going on. If I could figure out how to make this flexible, other outcomes should be things like police stepping up patrols or assassins coming after you. Question 1: How Predictable Should This Kind of Thing Be? I hate games where you know the ending in advance. But I've got no plot and I want to rely on throwing the player into novel situations. If anything can happen as a result of taking an action then it pretty much invalidates all actions-- you can't predict and therefore protect yourself. If giving guns to a tribe doesn't result in aggression or war most of the time it seems to weaken the heart of this idea that you can "change the world." OTOH, after awhile being able to predict the outcome gives you no surprises. Granted, the whole of player actions may lead to fluidity, but the whole will be comprised of lots of little actions and results. Is it better to err on the side of player control and feedback, or is surprise and novelty better? Does this depend on the type of game we're talking about (strategy, versus RPG, for instance-- and what about hybrids?). Question 2: How To Conceptualize This? I'm leaning toward this idea: At certain intervals the game decides that "An Event Will Occur Here." Rather than iterating through tons of state driving variables, I've been wondering about dynamically generating event tables using predefined values which are attached to player actions. An example: You sell guns to a region. The act of trading guns increases the chance for Conflict. Conflict lies on a continuum of possible events which are lumped together and divided by the whole of all things that could happen. So let's say you have Peace - 100 pts Conflict - 200 pts Assassination - 50 pts Disaster - 50 pts etc. The whole table is rebuilt each interval to something like this Peace 25% chance (100 / 100 + 200 + 50 + 50) Conflict 50% chance Assassination 12.5% etc. As you sell more and more weapons, the chance for conflict to break out grows. However, let's say the a faction like "The Space Rangers" or whatever show up. Maybe they add +200 to Peace, forcing you to remove their influence however the game allows. I like the idea for the ease of implementation, especially because I can make multiple "what can happen" tables (even ones exclusive to the player). But one weakness is that given enough density, your actions can be swamped. If you sell guns and a riot breaks out or workers go on strike, won't that be confusing? Or does that look like a very dynamic world?
--------------------Just waiting for the mothership...
I think macro predictability combined with micro unpredictability would be what I would enjoy the most. Selling weapons on the black market should always decrease area stability, but what happens as a result of that is where things should get interesting.
I would look at first breaking the events down into a player influenced event table and a player independent event table. The player independent table would be filled with things like natural disasters, changes in government etc. These are things that are outside of your control, but that should impact your market in positive or negative ways. All of the items in this table would have low probabilities of occurring.
For the player influenced side of things, I would look at pulling peace and conflict out of your table and combining them into a stability variable. This variable would start at zero and be positively or negatively affected by your actions.
You could then use this variable as a modifier to the probabilities in your player influenced event table. A negative stability would give a probability of zero to all of the positive "good guy" events in the table, and increase the probabilities of getting one of the negative "bad guy" events, and vise-versa.
I would be fine with something like this happening, personally. Being able to take advantage of the civil unrest caused by your arms trade by selling humanitarian goods to a society that you helped to destroy.. being able to find ways to work the system like this would keep me coming back for more.
I would look at first breaking the events down into a player influenced event table and a player independent event table. The player independent table would be filled with things like natural disasters, changes in government etc. These are things that are outside of your control, but that should impact your market in positive or negative ways. All of the items in this table would have low probabilities of occurring.
For the player influenced side of things, I would look at pulling peace and conflict out of your table and combining them into a stability variable. This variable would start at zero and be positively or negatively affected by your actions.
You could then use this variable as a modifier to the probabilities in your player influenced event table. A negative stability would give a probability of zero to all of the positive "good guy" events in the table, and increase the probabilities of getting one of the negative "bad guy" events, and vise-versa.
Quote:
Original post by Wavinator
If you sell guns and a riot breaks out or workers go on strike, won't that be confusing? Or does that look like a very dynamic world?
I would be fine with something like this happening, personally. Being able to take advantage of the civil unrest caused by your arms trade by selling humanitarian goods to a society that you helped to destroy.. being able to find ways to work the system like this would keep me coming back for more.
It is a challenging problem, I’ve trying to designing a similar a system myself recently.
The approach I’ve taken is to have a web of entities.
An Entity has a number of stats and is connected by relationships to other entities.
Those relationships are hooked into stats of interest with possibly a magnitude setting to determine how much a change is required on source entity before the associated entity takes notice.
It’s those changes and relationships that will trigger in game events.
So, in your example.
You’d have the following Entities and relationships
Black Mark
[Arms]
[Drugs]
[Security]
[Finance]
- Partners with -> Rebel Faction
- Threat to -> Police Force
- Partners with -> Smugglers Guild
Rebel Faction
[Finance]
[Threat]
[Aggression]
[Strength]
- Rival of -> Police Force
Police Force
[Control]
[Heavy Handedness]
[Strength]
[Respect]
- Rival of -> Smugglers Guild
- Controls -> Populace
Populace
[Happiness]
[Freedom]
[Expected Liberty]
Selling weapons on Proxima 4 increases the black mark arms rating, which triggers the Rebels to buy guns, increasing their threat rating and decreasing their finance. The Police in turn respond by cracking down which decreases the freedom of the populace.
All those reactions would be based on relationships between entities and their stats.
Those changes would translate to game world events and changes.
I’d also recommend taking a test driven development methodology with this. For me I’m building my tests by creating a particular scenario, and applying a set of certain changes that will deliver a set of expected results. Then building the engine so that produces those expected results. Rinse and repeat with new scenarios, inputs, and outcomes until I have an engine that I’m happy with and still works for all existing tests.
So for instance in the above scenario I might build a test in which the players sells 100 guns every day for 60 days where the expected out come is that on day 20 the smugglers guild launches an assignation attempt on the player. On day 40 the populace starts rioting and on day 45 the rebels launch a successful coup against the government.
Once I know it works as expected when expected it should be flexible enough to have all sorts of emergent outcomes.
The approach I’ve taken is to have a web of entities.
An Entity has a number of stats and is connected by relationships to other entities.
Those relationships are hooked into stats of interest with possibly a magnitude setting to determine how much a change is required on source entity before the associated entity takes notice.
It’s those changes and relationships that will trigger in game events.
So, in your example.
You’d have the following Entities and relationships
Black Mark
[Arms]
[Drugs]
[Security]
[Finance]
- Partners with -> Rebel Faction
- Threat to -> Police Force
- Partners with -> Smugglers Guild
Rebel Faction
[Finance]
[Threat]
[Aggression]
[Strength]
- Rival of -> Police Force
Police Force
[Control]
[Heavy Handedness]
[Strength]
[Respect]
- Rival of -> Smugglers Guild
- Controls -> Populace
Populace
[Happiness]
[Freedom]
[Expected Liberty]
Selling weapons on Proxima 4 increases the black mark arms rating, which triggers the Rebels to buy guns, increasing their threat rating and decreasing their finance. The Police in turn respond by cracking down which decreases the freedom of the populace.
All those reactions would be based on relationships between entities and their stats.
Those changes would translate to game world events and changes.
I’d also recommend taking a test driven development methodology with this. For me I’m building my tests by creating a particular scenario, and applying a set of certain changes that will deliver a set of expected results. Then building the engine so that produces those expected results. Rinse and repeat with new scenarios, inputs, and outcomes until I have an engine that I’m happy with and still works for all existing tests.
So for instance in the above scenario I might build a test in which the players sells 100 guns every day for 60 days where the expected out come is that on day 20 the smugglers guild launches an assignation attempt on the player. On day 40 the populace starts rioting and on day 45 the rebels launch a successful coup against the government.
Once I know it works as expected when expected it should be flexible enough to have all sorts of emergent outcomes.
Writing Blog: The Aspiring Writer
Novels:
Legacy - Black Prince Saga Book One - By Alexander Ballard (Free this week)
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement
Recommended Tutorials
Advertisement