Designing a Racing League

We love player progression – it’s important that we make the racing fun, but then we also want you to have a good reason to want to race, then race again. We could just have a series of loosely connected events for the player to work through, but we decided we wanted something with a little more meat.

Sometimes something as simple as “Level Select” can be pretty important. There have been a number of games that have lost my attention simply because the level selection wasn’t presented in an interesting way – maybe it was too gamey. Instead of an overworld map, the game just may just give me a grid of levels, firmly reminding me that “Yes, James. You are playing a game right now. You’re not a super-sweet ranger about to save the disgustingly quaint village of Smilesville from the fel-orc-goblin-ites.”

We threw around a bunch of ideas for Tail Drift. We knew we wanted to break the game into a series of leagues – each league being thematically different. We knew we wanted to have the player race through a series of events, and that the player has multiple options when deciding where to go next. Our first thought was to simply give the player three random events to choose from, and completely one event would replace it with another. Simple enough approach, you can choose your favourite event types, play through enough to unlock a final race, then move to the next league.

Something felt missing though – just using a selection of random events until we deem you awesome enough to compete in the final event for a league doesn’t really give much sense of progression. How far are you through the league? It’s a little hard to tell. What’s coming up next – no idea, it’s random. We felt we could do it a little better.

A node graph may sound boring, but bear with me. First, let me show you what I mean ┬áby node graph (and remember that this is all my terrible programmer placeholder art – none of this is final).

Node Graph

Each of those ringed capsules represents an event for the player to complete in. At the start of the league, all but the first node on the left is locked. Completing one of the nodes will unlock any other node it’s connected to. Each event can be one of several types – maybe it’s a classic race, or maybe it’s an elimination battle – and main goal of the league is to get from the first event on the left, to the final event on the right, then unlocking the next league. In the final version, each of these nodes will look different to show what event the player will be competing in, and what the track will look like.

The more we thought about using a node graph for our level selection, the more we liked it.

First, it neatly solved two problems. We want to give the player some choice on where to go next, and give them the ability to preference their favourite event types. By letting the player see the entire league, they can choose their path. Maybe they aren’t a huge fan of Time Trial events, but they love Classic Race, well, if you plan your path, you can get to those events that you love.

Secondly, it’s easy to tell how you’re progressing. You’ve got that map right there in front of you. You know how much you’ve done, and how much you have left.

Finally, it gave us a degree of control over the player experience to slowly introduce elements. Let’s just say there is an important mechanic we need to teach the player before moving on to a more advanced game mode. Maybe a player should know how to fly through a floating ring on the track before jumping in to a more advanced fast-paced Remix mode, with crazy objectives being thrown at them. By using a node graph, we can actually take away choice from the player. This may sound like a bad thing, but it’s really not. The node graph let’s use create bottlenecks in content to make sure the player can complete one challenge before moving on to something more advanced.

Node Graph Bottleneck

Effectively, this kind of map let’s just control the degree of choice a player can have, and still provide a guided and accessible experience for all players.

The final product will look much more interesting than what we have at the moment, but with a little imagination hopefully you can see the merit in using this kind of map for playing through a racing league.

What do you think about using a Node Graph for playing through a racing league?


One thought on “Designing a Racing League

  1. I like this solution, gives the player choice while also data mining their decisions in order to prioritize options you think they would enjoy, and gives a good sense of progression.

    Much stronger than randomization, and I’m a big fan of things that can have the variety of ‘random’ but are actually based on deterministic behavior, it’s fairer for the player.

Leave a Reply