Category:Radiant Story
Summary
Radiant Story refers to the system for making dynamic quests and other story content, whose locations, actors, and items can be created or found at run time, rather than completely predefined.
It's essentially the same tool set from Oblivion and Fallout 3, but the system has been expanded to include the "Aliases," "Scenes," and a "Story Manager."
Aliases
An Alias is a Reference or a Location used by a Quest. It can be assigned a discrete value, or it can be "filled" by picking from a random list of references and locations in the world, or it can create a brand new reference from a leveled list, or it can even grab the alias from another quest.
If the game was a movie, then the Quest would be the screenplay, its aliases would be the roles, props, and locations, and the game would be a procrastinating producer who could decide just as the movie starts rolling, which actor to cast for each role, which item would become each prop, and which locations to use.
Dialgoue can be conditioned for aliases rather than specific NPCs, and Packages can be given to aliases rather than specific NPCs, so that any actor can "step into the role" of an alias in a quest.
Note: Aliases can be, and often are, predefined. But they can be dynamic, and even in very controlled stories, like the Main Quest, or Guild quest lines, aspects of certain stories are dynamic.
Scenes
Scenes are data in Quests that are used to set up packages and dialogue for multiple actors in such a way that they form a scene, much like a scene in a play. You pick which Aliases to include in the scene, and define package actions, and dialogue actions for each Alias across various phases. Phases, package action stacks, and dialogue action stacks can all have Conditions so that you can add variations and controls to various scenes.
For example, in Skyrim we set up a little "quest" that works like this: When the player enters an inn (change location event, looking for keyword on the location of "LocTypeInn," fills an Innkeeper alias and a Servant alias, and if you sit down in a chair starts a scene where the innkeeper calls out to the servant to come take the player's order. This can work in any inn, and the dialogue in the scene can be conditionalized so that each innkeeper welcomes the player in a unqiue way, and calls out the name of the servant, but all use the same quest and scene to get the behavior.
Story Manager
The heart of the Radiant Story system is the Story Manager. It is a nested node tree that holds all of the radiant story quests and is used to determine which quest or quests are started as a result of receiving a Story Manager Event from the game.
Every Story Manager Event comes along with various Event Data. For example: A "Change Location" event data includes the old and new locations, and the "Kill Actor" event data includes the victim, the killer, and whether the death is known to be a crime of murder. You can use this Event Data to respond to events that meet specific criteria. This makes Radiant Story a powerful tool for crafting quests and scenes that respond to the players actions or immediate situation, or send him to some place he hasn't been before, etc.
The primary way you make use of Event Data is by using Conditions on the quests and nodes in the Story Manager to check Event Data for particulars.
For instance you can use the condition "Run On->Event Data:Victim - GetInFaction MySpecialFaction == 1" to respond to the deaths of actors who are members of particular factions. This works for data that are passed in as references. For other types of data you use the special GetEventData condition.
You can also use Papyrus Script Events that run on a script attached to a Quest to interrogate the data that was passed into the Story Manager that caused the quest to start. For instance, if you want to set a global variable when a quest starts based on the event data.
Examples of Radiant Story Content
- Bounty Quests - player enters a town, find the innkeeper there, put a bounty letter to give the player that sends you to a random bandit location with the objective to kill the boss bandit there, and put reward dialogue on the Steward or Jarl of the hold where the inn is located in.
- Companions Questline Jobs - find an animal den location, give the player an objective to go kill the boss animal there.
- Create a dead adventurer in the wilderness, create a special magical item, place it in a random dungeon's "boss chest" and put a note on the dead adventurer that gives the player a quest target and objective to find said treasure.
- Player Shouts in a town - create a letter that is sent to the player by courier that gives him an objective to find the word wall in a randomly chosen dungeon that has a word wall in it.
- Have the guests of player-NPC wedding to be friends of both the player and his spouse.
- If a relative of a nearby NPC dies, have that NPC freak out run home and lock their doors and have "mourning" dialogue.
- If the player drops a weapon on the ground, find a nearby guard to come and scold the player for leaving dangerous items laying around
As you can see, Radiant Story is a power tool for making a quest or scene and leaving certain details nebulous (its location, its quest target, its quest giver, etc.) to be filled in later - it is helpful for directing players to a place they haven't been before, and it can also be used to generate world reactions that respond to things the player has done or involving NPCs the that are important to the player.
Components
There are many components that are used in the creation of a Radiant Story. Here's a list of the various things that inform or make use of the Radiant Story system.
- The Radiant Story Manager holds the hierarchy of conditionalized quests to start in resposne to Story Manager Events
- Quests can be flagged with Story Manager Events which starts it (or set to start when the player starts a new game - "game enabled")
- Quest Aliases can be filled by creating something new, or picking randomly from a list of practically anything existing in the game world, limited by conditions, rather than set to specific actors and locations
- Packages can be flagged to be owned by quests, and then have their Package Data point at Quest Aliases rather than specific references (for example, an NPC's travel package location can be a radius around MyQuest's "WidgetOfDoom" Alias)
- Papyrus Scripts
- Have Script Events that can intercept the Radiant Story Event Data and process things before the quest starts
- Can force references and force locations into aliases even after the quest starts (so you can have "dynamic" content, even after a quest fires up and starts rolling)
- Can start a "Script Event" radiant story event using the SendStoryEvent function, so that you can fire off a radiant quest from a script
Where to start?
Take a simple radiant quest, like one of the Bounty Quests that shipped with the original Skyrim game (BQ01, BQ02, BQ03, BQ04) and try to decontruct it. See how it uses the Change Location event. See how the conditions are set to fill the aliases. And then make a new bounty quest to go kill something else. Then try extending it so that you are supposed to retrieve something (and make an alias a created reference from a magical weapon loot list). Then change it so it's not an innkeeper but one of the other town folks who gives you the quest. Take a look at some of the "world interaction" quests (prefixed with "WIxxx") to see how you can use some of the other story manager events and find nearby citizens and start scenes.
This category currently contains no pages or media.