The Madden Story Engine

Sports games suck at telling stories.

On TV and radio sports analysts spend hundreds of hours a week telling stories. They debate player legacies, characterizing team matchups, and debrief on the wildest games of the week and talk about just what made them so uniquely interesting. When they talk about upcoming games, they create a story around why each one is uniquely important and what it means to the players and coaches.

In Madden’s Franchise mode, players are forced to tell themselves these stories because the games simply can’t. I designed a story engine that solves this problem. I outline how it works below:


The Shape of Stories

Kurt Vonnegut gave a lecture called “The Shape of Stories” in which he plotted the Good Fortune of a book’s protagonist over time. He used this method to categorize stories by shape. Here are some of his examples:

Vonnegut's Story Shapes'

And here is his "Man In Hole" plot alongside ESPN’s Patriots win probability graph from the 2016 Superbowl:

2016 Superbowl Win Probability'

Pam from the Office'

In Madden players want to win this game, win the superbowl, and be the greatest of all time.

This means we can chart their good fortune by tracking their win probability, probability of winning the superbowl, and probability of going down in history as the GOAT.

My story engine uses these metrics to categorize player stories. Instead of "Man In Hole" or "Kafka" we used terms like "Big Comeback" and "Crushing Defeat" but the idea is the same.


Identifying Story Beats

To tell the full story, we need to identify “story beats” and design a way to speak to them.

If a game narrative is the story of a player’s changing fortune, then the story beats should generally be the points in time where the win probability changed. You can structure a story beat as a three part mini story like so:

Pam from the Office'

This type of story telling is common in sports journalism. Here’s an example Cris Collinsworth and Taran Killam writing for ESPN:

Pam from the Office'

The first and final beats are just the win probability. Filling in the middle section is easy if the change occurs over one play - we just look and see what happened on that play and that’s the story. The Malcolm Butler story is an example of this.

Adding Nuance

When the win probability change occurs gradually over multiple plays we look for changes in other metrics. For example, if the player was struggling in the first half but making a comeback in the second, we check to see if this corresponds with other changes in metrics. This includes looking at KPIs (Is he passing more accurately? Running for more yards per attempt? Throwing further?) as well as looking at changes in player decision making (Is he running more man defense? Are they going for bigger throws? Are they making more 4th down conversion attempts?)

These stories might sound like “Tom Brady looked hopeless in the first half, he was barely completing half of his passes. I don’t know what they said in that locker room at half time but he’s playing like a new man. He’s connecting pass after pass and all of a sudden the Patriots are back in the game!”

Stiching Beats Together

Not all games are equally interesting. A game may have many story beats or even none. What’s great about this approach is that the 1st and 3rd part of a story beat are both just the win probability, so you can easily string together an arbitrary number of them in a row to tell more complex stories.

Pam from the Office'


Expanding Stories to Seasons and Careers

The same design and principles can be extended across a season by replacing “Win Probability” with “Probability to Win The Super Bowl,” across a career by replacing it with “GOAT score” (a custom formula which would rank the player PC against real world players of the same position), and across a franchise by replacing it with “Legacy Score” (another custom formula for a team.)