Dynamic Quest Generation #2: Basic Story Outlines

Last week we went over our approach philosophy and managed to get some characters with some motivations and goals around a quest object. Thanks for those who posted questions and responses. It helped us clarify our thinking.

Now we turn our attention to…

What Do These Characters Want the Player to Do?

Thanks to some conversation with Kaylo7 it became clear we need to define terms. We like to refer to the 1989 movie Indiana Jones and the Last Crusade.

Defining Terms

  • Quest - A series of one or more plots around a certain subject. Like Indy rescuing his dad. Or needing to get the journal back from Germany.

  • Plot - A set of tasks oriented around a quest objective from a specific character’s perspective.

    • Indy’s Dad Henry - wants to get the Holy Grail.

    • Nazi’s - want to get the Holy Grail

    • Order of the Cruciform Sword - want to hide the Grail and prevent anyone from getting it

  • Task - Something you do like: Fetch, Find, or Kill. Ideally with increasing tension. First Indy has to reach the castle he is imprisoned in. Then he has to sneak in. Then he has to get him out, etc…

    • Tasks can be shared across plots of equal goal alignment. Indy finding the tomb with the missing top half of the etching is in total alignment with his and the Nazi’s agenda which is why they initially help Indy do it. It is only later Indy finds out there is a second plot.

    • Tasks can be mutually exclusive, where once completed, invalidate and ‘fail’ the other plotlines. These kind of tasks are the ‘Moment of Decision’ for the player where they commit to a particular plot. Our goal is to delay these as late as possible because it leads to better story feel.

  • Story - A sequence of Quests chained together. Ideally with some kind of arc and increasing tension.

    • I'm playing Assassin Creed Valhalla right now. I like how they group their quests by Storyline. I also like their UI for it.

The task of Tasks

Here is the latest output from the generator program. Starting with our major and minor characters. If Majors disagree on end goal, that creates a different plotline. Minors provide stepping stones along the plot line based on their agreement, disagreement, or neutrality with the quest giver.

Majors:

Amice Middlemas, Female, High wealth, age 27 Motivation: Capture - A Intact Skeleton will make an excellent trophy.

Alfred Swaffer, Male, High wealth, age 26 Motivation: Avoid - We must prepare and protect ourselves against the Skeletons.

Minors:

Sabina Rait, Female, High wealth, age 47 Motivation: Fight - A Skeleton carcass is a valuable resource.

Robert Stanhope, Male, Low wealth, age 63 Motivation: Capture - I want to study a Intact Skeleton.

Eleanor Gorringe, Female, High wealth, age 51 Motivation: Capture - I want to study a Intact Skeleton.

Nicholas Ward, Male, Mid wealth, age 40 Motivation: Avoid - We must prepare and protect ourselves against the Skeletons.

Cecily Gigg, Female, High wealth, age 28 Motivation: Avoid - Skeletons have just as much right to exist as we do.

Avice Bunce, Female, High wealth, age 23 Motivation: Avoid - We must prepare and protect ourselves against the Skeletons.

=============================

Quest Plot 1: Amice Middlemas wants Capture - A Intact Skeleton will make an excellent trophy.

1. Amice Middlemas: Meet quest giver. Get introduction to quest

2. Robert Stanhope: Inquire about enemy (Allied - Capture - Study) They provide assistance

4. Alfred Swaffer: Interference: Plants an ambush for you (Against - Avoid - LiveAndLetLive) - Disagree on: ownership)

3. Amice Middlemas: Persuade X to do Y [End Quest] (Allied - Capture - Trophy)

===================

Quest Plot 2: Alfred Swaffer wants Avoid - We must prepare and protect ourselves against the Skeletons.

1. Alfred Swaffer: Meet quest giver. Get introduction to quest

2. Alfred Swaffer: Hire NPC to create item (Allied - Avoid - Defend)

3. Cecily Gigg: Persuade X to do Y (Allied - Avoid - LiveAndLetLive) They provide assistance

4. Avice Bunce: Appease enemy (Allied - Avoid - Defend) They provide assistance

5. Alfred Swaffer: Appease enemy [End Quest] (Allied - Avoid - Defend)

The above is a single quest that branches as soon as you start it. Amice wants a skeleton and Alfred doesn’t want to poke the bear, just leave them alone and build up protection from skeletons.

Some assumptions to clear up:

  • Not every quest will have multiple plots. If an innkeeper needs dye for a sign, it is unlikely anyone will disagree and thwart that.

  • There are two entrances into the quest depending on who you talk to first: Amice or Alfred. I really like how it isn’t set to just one NPC.

  • We have to introduce the other party, immediately, upon talking to the first quest giver.

    • This could be via a letter: “It’s come to my attention you are working for Amice to secure a skeleton. Meet me at the Inn. It’ll be worth your while.”

    • Or just embedding it in the dialog with Amice ‘And make sure you don’t talk to Alfred about this. He is a fool and not to be indulged’. First thing I’ll do is go and see this Alfred!

  • We are making the quest giver the first and last part of the plot. It doesn’t have to be this way, but it feels good for now.

  • Characters with opposite goals can do things to thrwart your progress. We to better define this, but for now they can plant an ambush, attack, or report you to authorities.

Things we Discovered in Generating Tasks

  • Pretty obvious, but we had to tie tasks to goal outcomes. When we had a generic pool of tasks to draw upon we were getting weird things like pacifists asking you to kill and destroy the thing they were trying to protect.

  • We had to split tasks into two kinds (for now) of ‘major’ and ‘minor’ to control pacing and tension. It was pretty silly and anti-climatic when the first task was an epic battle and the last task was to deliver a letter across town. We expect escalation. And while this can be subverted sometimes, its an expectation for a reason.

  • Had to write something in to stop duplicates from occurring… but not always. Randomization is interesting and a quick way to start, but a quest where you have to do the same task 3 times in a row because that is how it rolled up randomly, it just isn’t interesting.

  • Nolan comes from writing and screenwriting. In books and TV when a character goes against type it is ‘interesting nuance’. But what is true in those mediums isn’t true in video games. Once you inject interactivity and the chance for the player to get lost or confused between story points, it’s not ‘fun’ when characters are inconsistent in behavior or task.

  • Originally we had major characters with complex goals and minor characters without real goals, we just slotted them into Allied, Against, or Neutral towards a certain major character and gave them the Support goal. This was insufficient when we needed to figure out how and where they provide assistance. We needed more data on the why. So we went back to giving all characters complex goals and it is the alignment of goals that determines which plot they get involved in for assistance or obstacles.

  • With better character goals the player can have a dialogue choice like "why are you helping" and the answer is "Because I want the corpse myself!" then the player knows the npc will make an offer near the end of the plot. I think this deduction and foreshadowing is cool. It also creates the option for late branches and multiple endpoints of the plot beyond just the quest giver.

  • For better stories it was important to not just know two people disagree, but to know how much and on what do they disagree. This allows us the Nazi & Indy situation where both want the tomb with the etching to be found, and overcoming the 3 trials at the grail’s location, it is only the last step of who possesses the grail is where they differ. This means we do late breaking branches of plot rather than having entirely different plots for essentially the same tasks to a similar objective. Which leads to my next point…

  • We started designing a ‘Reaction based’ system, where the plot can twist and turn based on variable thresholds along the way. Like if the mayors approval rating is < 50 the quest continues, but if it is > 50 then it is over. What I came to realize is there is no difference between reaction in real time (a quest of 8 steps that can end at each step) or just generating 3 or 5 steps. There is no way for the player to know so don’t overcomplicate it.

    • It's hard to come up with a reaction necessary at runtime besides skill checks like persuasion. We’ll think more on this.

  • It isn’t the quest writer’s (person or algorithm) job to come up with specific ordeals to block the player’s progress in a plot. It is the job of the world to oppose the player naturally. Like if you need a resource, there is a 'trial' in it's just hard to locate, or there are goblins around it, or whatever. We don't need to PLAN on those things, just rely on the game to do them.

  • But there is the occasion where someone actively wants to stop you from doing that precise task. So they interject a trial, like Saruman making the snow pass collapse causing the fellowship to have to go into the mines of Moria.

  • Keep it relational. Choice has to be based on the person and not the task/goal. The longer we delay a branch, the more the player can interact with the disagreeing parties, and therefore the more likely they are to care about each one’s perspective. When the choice comes, make it a choice between people.

    • This is super important and removes the emotional impact from the actual tasks or writing (which may be basic and samey) but the people and their reasons will differ. For example, a thousand different people can rob a bank. And while each one does it ‘for the money’, it is their personal and specific reason that makes it interesting though the act is the same.

We’re working on the tasks more this week and hope to have something cooler to show soon!