RPG Design Analysis: Formula G
Yesterday I was in and out of sleep. I have been adjusting to the hellish overnight schedule I now have for work. I don’t particularly love it. You might say I hate it. Thankfully, I love money more than I hate trying to stay awake. So everything is a balance.
Anyone who knows me on X knows that I have a borderline obsession with motor-sport. I particularly love F1 and the history of it. Much like Hemingway, I would argue there are only a few sports. Though I’d replace bullfighting with Chess in that assertion if Chess had a feature where allowing yourself to be checkmated meant an autogun blowing you away at the table. The things I like about racing are pretty self-evident. Speed, the twitch reflex and psychological mind-games that occur on the track, and the very real risk involved. Of course it can be deadly, and tragic, but there is something about the human spirit that really comes to the forefront when this threat is applied. God rest every soul who ever hit a track and did not walk away from it.
And God rest Grid Girls. We have had so much taken from us.
When I was young I didn’t understand the appeal of racing. For me the technical aspects of it are probably the most interesting. It’s a spit in the face of physics, just how far you can push the limits of the laws of science, control tire wear, choose the right amount of fuel to get you around the track without weighing you down, tune the car for the proper adjustment of manoeuvrability and power, and find the right racing lines which are quite literally manipulating friction to get the best possible path out of a corner so that as much speed is maintained as possible. And of course, on a track that is two lanes wide, trying to have a 360 degree view of the track at all times so that you can defend your position, and try and predict how the driver behind you is going to attempt an overtake.
To get right into it I’ve always been pretty unsatisfied with how racing is handled on tabletop. It just doesn’t translate very well to an activity that is known for being slow and deliberate. There are places it has been done correctly - board games like Downforce and Heat, the movement templates and risk-reward of Gaslands. But in RPG’s specifically it is usually more of an afterthought and it isn’t difficult to see why - as soon as you add any sufficiently advanced mechanic to a roleplaying game, especially one that is meant to facilitate a side distraction, it absolutely destroys the pace of your game. Abstraction is done at the highest degree, usually involving a series of skill checks in order to see how the narrative plays out.
So really from that perspective there isn’t much of a great reason to reinvent the wheel. Most people will be satisfied in their Cyberpunk game or whatever if the race sequence involved is quick and dirty and “solved” within a couple of minutes.
But sometimes the reason to sit down and attempt to design a system is not to solve a problem. Sometimes the reason is simply to see if you can, especially if that problem is something of sufficient interest.
OG GM on X approached me yesterday and was showing me his own design for a racing mechanic in a game. I couldn’t help myself in immediately getting my gears turning. It felt a little wrong to suggest to him it could be done “better”, since better is subjective. But I was too compelled by the prospect of it to help myself. In a half-hour I sit down with my phone and an open document and starting jotting out ideas. While he seemed to like some of them, they were not appropriate for what he wanted for his own setup. So he suggested I use them on my own in some way.
So here we are, and here I am going to quickly go over and breakdown my universal system for track racing in roleplaying games which I am calling Formula G after another idea that exists in both my head and in the space of my company Mycelium Games growing repertoire of conceptual meanderings.
The very first thing you need to figure out when you are trying to assimilate a real life idea into a game mechanic is what it’s broad strokes happen to be. There are a lot of technical intricacies in racing. But if we want to create a system that is generic and universal and can apply to any game, there are a bunch of assumptions we don’t want to make; namely that players are going to spend any significant amount of time diving into the weeds on the details of their fictional car.
For this reason I chose a few basic concepts to focus Formula G around.
In it’s most simplistic terms, the sections of a track are essentially broken down into two primary types - straights and curves. In Monza here, my favorite race-track, we can see more going on than this. There are also chicanes, more complicated pieces of the track that require far more deliberate action to successfully navigate. But for the purpose of simplicity, I’ve highlighted the key components Formula G is concerned with here, red circles indicating our turning points where maneuvaribility is the focus, and straights, where speed is the focus.
And to take a few more liberties here for the sake of further abstraction, we could even look at Monza like this:
I realize there is technically a straight between 05 and 03. But as you’ll see shortly, I am trying to keep some brevity here.
So we have three straights and five corners. That is a total of eight points of “interest” on our track. What does that mean for a theatre of the mind focused mechanic for handling track racing?
That means that we essentially have eight rounds we need to handle, with one lap logically being our turn.
We could represent this with a track diagram as above. But being fairly high level, we absolutely don’t need too. We could use a really simple one column table in descending order because that’s all the information we really require.
Now let’s assume we want to add more granularity and account for chicanes, hairpin turns, corkscrews, etc.
All I’ve really done here is broken down each corner area into how many directional changes of the steering wheel are necessary to navigate them. That turns out table into this:
Now we are accounting for the fact that turns are not equal. We assign a number between 1 to three, and hopefully not more. This may be harder to implement for a more complex track like Autódromo Hermanos Rodríguez where we have some fairly complicated sections.
Or, heaven forbid, Nurburgring.
But even these could simply be broken down into more rounds if we wanted to emulate them. Though I’d suggest they be broken down into an equal number of parts to Monza instead, and that we try to limit the amount of rounds in a turn for the sake of expediency.
So for our purposes, three levels of challenge is enough to add a bit of complexity without making things too exceedingly difficult or annoying.
So we have handled tracks. And again, because we have broken things down into a table, we don’t even need to have a track diagram or board in front of us to deal with this. Now we need to figure out the rest.
In race, if we look at what is happening as simply as possible, there are only a few things really going on from a broad overhead view.
Drivers are battling for grid position when the race starts in a panicked flurry of quick decision making where the danger of a collision is at it’s highest.
After position is established, drivers are attempting to defend their position on the track.
When opportunities are available, drivers are attempting to overtake one another, either by passing them on the left or on the right.
The conditions of the track are being assessed - have their been any weather changes, or chances for the weather to change? Does the driver need to pit to change tires to account for this?
Drivers are assessing the current condition of the vehicle for damage, tire wear, and fuel consumption, and trying to determine when the best strategic time is for them to box and to refuel and undergo a tire change or minor repairs.
Of course, they are doing all of these things while trying to maintain as much speed as possible, and of course, not dying.
This isn’t that much to consider but we aren’t taking a lot of other things into account. And even this may be too much for a simple, generic system for racetrack driving.
So I attempt to break it down further in a way that will equate to our mechanics.
Now we have two primary pieces of our track which we determined earlier - our straights, and our corners. So we need a way to differentiate them, and we need a mechanic for doing so. Not every mechanic will be used all the time. For street racing scenarios, there will be no boxing, corners will likely be simpler, and boxing is not a concern. But this simple chart covers everything we will need. At any rate, unless it is a straight drag race, which wouldn’t be interesting unless combined with some other mechanic such as combat which we are not covering here since any RPG we apply this too is going to have some way we can incorporate that in tandem with it’s own combat system, we only need to figure out two things:
How do we account for straights?
How do we account for corners?
Because this system is universal I’ve chosen a simple D6 pool - one pool called Power, and one called Handling. They aren’t especially elegant but they tell us two things; how well our car handles, and how fast it is.
And in order to account for the fact that the vehicles in question will have some variability in their handling and power, I’ve created three classifications for vehicles:
Fast
Balanced
Agile
The base for our die pools is three. A Balanced car would leave players with two dice pools with three dice per pool. A Fast car would gain an additional die for its Power pool, and lose one for it’s Handling pool leaving it with four Power dice, and two Handling dice. And an Agile car would swap those variables having two Power dice, and four Handling dice.
Racing is all about balance. Drivers are trying to push when they need too, and allow the vehicle to cool down and reduce risk when they are ahead. If they don’t go hard enough into a corner, or don’t go fast enough on a straight, they will lose speed and can be overtaken. However, if they go too hard, they have a risk of spinning out and losing control.
We want to account for this in a few meaningful ways. In the heat of a race, the entire idea of controlling this at all becomes harder to facilitate. We are not driving as carefully when we are pushing to gain a position. Risks are taken. Cost-benefit analysis is harder to focus on when there are a thousand other factors involved. So there is an element of subconscious betrayal of control.
For this reason, our rolls want to generally stay between a range of 2-5 in order to keep us in a “sweet spot”. This means rolls of 1’s and 6’s are going to be generally undesirable in comparison, where 1’s indicate a lack of commitment to a move, and where 6’s indicate that we are pushing too hard.
Things get a little fuzzy from here because there is an almost limitless potential to play with variances. This is where I admit to you, shamefully, that Formula G is not yet a complete idea, and where I talk both you and myself through the process of it’s design.
Racing is a gamble. Risks are taken all the time and we are also playing a mind-game with the driver in front of us, trying to demonstrate some unpredictability so that we reduce his chance of defending a position when we attempt an overtake.
So the broad stroke mechanic for the game is as follows.
Once we have determined grid position, which we haven’t explored mechanically yet, we will be left with this:
Assume what you will about any subconscious or conscious placement of these famous F1 drivers. I thought them up and slotted them in the order I thought of them.
But what we have here is the current position of our players on the track. We don’t need to be concerned where they are. We have too, for the sake of abstraction, assume that all of our races are fairly tight. We can’t be worried about long gaps of multiple seconds in between any of our drivers. They don’t concern us and would only further bog down and complicate things. So for all intents and purposes, every round is going to involve one of these drivers and their attempts to overtake a position. And the reverse of this is essentially our initiative order; from Hamilton up to Senna, we will determine during the race, once at every section of the track, if these drivers are able to overtake one another.
So beginning with Lewis, at the first Straight in our track, we only need to find out one piece of information - is Lewis able to overtake Hunt during this round?
The first assumption we must make is that Hunt is going to try and defend his position. This is where our Handling die pool comes into place. Hamilton will have to dedicate some amount of his Handling dice to a roll. He will be doing this against Hunt, and in return, Hunt will invariably have to defend.
Remember, 6’s and 1’s. They are “bad”. If either are rolled by Hamilton when choosing the amount of dice from his pool to commit, they will paint a bad portent. We haven’t balanced this yet either. We don’t know if the dice pools, arbitrarily chosen, are going to provide enough complexity for this to work. But we can’t determine that by working it out mentally, that comes through testing and is outside the scope of this blog.
In this case, let’s assume all the cars are balanced, and therefore, their die pools contain three dice each. The race is still early, but Hamilton is in the last position. He does not want to be there. So he will commit two of his dice to seeing if he can manoeuvre, and in a manoeuvre on a straight, all Hamilton needs to determine is if he is passing on the left, or passing on the right.
Hamilton also doesn’t want Hunt to know how many dice he is committing. It may be a feint he is performing. Because the way this will work is that Hunt also must commit a number of dice to defending the manoeuvre, from his Handling pool. But if he commits too heavily, he will not be able to defend. Since there is only one position behind him, this isn’t a concern. He could defend to his hearts content. But he will also get the opportunity to attack later, so if he commits all of his dice now, he won’t be able to do so.
Now, if you have been paying attention and working through this, you may already be seeing some of the problems inherent in the thought process here. Namely, what does a player do if they have no dice to use in their attack or defense? The pools for all players come back at the beginning of the next round. But let’s work this out.
Hamilton commits two of his three Handling dice to perform a manoeuvre. We will explain how that works after, but in return, Hunt sacrifices two of his. We will assume that Hamilton fails, he retains his position behind Hunt, and since he will not act again this round, that is where he stays regardless of what happens between Hunt and Lauda in the following round.
Hunt doesn’t need to worry about defending again this round. He does need to attack Lauda, but since he has used two of his three dice, he only has one left to do so. But no matter how his position changes, there is only one more opportunity for him to have to use Handling dice. So in any given race a driver can only potentially be overtaken once, and can only attack once. But there is one more variable here that would aid Hunt should he overtake Lauda, expend his Handling dice, and then have Lauda attempt to overtake him.
This is where our 6’s and 1’s come into play.
Over commitment of a Handling roll has consequences. The consequences being that the chances of rolling a 6 or 1 are higher. Keep in mind a 1 indicates a lack of commitment to the manoeuvre, and a 6, that the manoeuvre was pushed too hard.
I have had a few ideas for how to deal with this. What do we do if a 6 or 1 is rolled? I think it is going to depend on which dice pool is being used. It makes sense to me that logically, too much speed in a corner, indicated by a 6 while rolling Power dice, would be a detriment. We have a limited pool of dice so I don't want to remove values from the sum. But my thinking is this.
When performing a manoeuvre, any roll of six indicating too much inertia would result in the manoeuvre failing. But, any result of one in that roll as it coincides to the rolled six would indicate that control was regained in the process. So if rolling three dice, if you have a result of a six and a one, the two would cancel one another out. You would still add the sum of those dice with the third die rolled and as long as it was not also a six, the manoeuvre would proceed to resolution.
Likewise, when rolling from the Power pool, a roll of a one would be considered a failure. This indicates a lack of pushing the vehicle to it's maximum. And any six rolled along with it indicates a correct, and would cancel out that failed roll.
We still have a missing piece here - when do we use Power dice and when do we use Handling dice?
Well, we have cars of varying strengths. And we have two values in Power and Handling. We also have two parts to a track - Corners and Straights. This is a bit of a conundrum in some ways because we are trying to simulate a race but we also don't want things to be too complex because that will slow things down. And just how accurate would our racing simulation be if it took hours to resolve?
I'd propose this.
We need handling when ever we want to overtake or defend. But it's not the direct focus of an attack on a straight. On a straight, speed is the primary concern. In a corner we certainly want to maintain speed, but handling is the focus.
So my first instinct would be to simply tie the Power die pool for use in straights, and the Handling pool for use during cornering. It seems simplistic but shortly you will see where I bridge the gap between the two.
There are other elements to play with here but before we keep dreaming about those possibilities let me address the starting grid.
I haven't mentioned it up to this point because it is actually the simplest mechanic in the game. And it only occurs once, at the very beginning of the race. Starting grid position determination is simply a rolling of initiative. Initiative changes constantly from round to round as the position of the driver's change, so we never have to do it again. The starting grid of a race is chaotic, and while there is a structure there in real racing that implies a rough order of placement, the fact is that anything is possible in the beginning 30 seconds of a race. So our abstraction accounts for that. We have no idea where our drivers begin in the grid in this oversimplified approach. We simply have everyone involved in the race roll a D20 or even a D6, it doesn't matter much but we use the same system initiative from our RPG of choice we are applying Formula G too. And then our position on the track is determined from there.
The reason for this is that all we need to know is who is first, who is last, and who is in between. The last player will always go first at the beginning of each round and proceed through in a leap frog faction, with any “skipped” players in the initiative order taking their turn immediately after they have been overtaken as a kind of reaction. It's simplistic, perhaps to a fault since right now there aren't enough other variables to support complexity there. But it tells us who goes first and who will go last. Because even if the person in second place overtakes the guy in first, he is still going to take his turn right after regardless if he is overtaken or not.
But there is one more little element here that will mix things up during play.
Right now three did pools aren't very interesting. After attacking and defending there is no reason to reserve any dice. So let's add one. Otherwise every decision will be either I am going to commit 75 percent of my dice to my attack and the other 25 to defend or vice versa.
The Push will help alleviate this somewhat. A Push happens after the round is essentially over with the new position of the drivers having been solidified. Any players with remaining dice can now choose to Push. They only need to spend one, and indeed CAN only spend one. And if in a straight, that die needs to come from their Power pool, and in corners, from their Handling pool.
But if they choose to attempt a Push, it's a simple gamble.
On a roll of a 6 and only a 6, they overtake the driver in front of them. The driver has no defense for this. But if they roll a 1 or a 2, they will lose a position to the driver behind.
These are risky odds. They can be maximally rewarding, but have a greater chance of setting a player back. A roll between 3-5 simply means nothing changes. So this there is some real cost-benefit analysis at play here.
We could shift these numbers so that there is an equal chance for all three outcomes, but that wouldn't be as exciting or satisfying when a Push is successful. And a Push achieved at the right time could mean the difference between a win or a loss. Gambling is always more satisfying when the odds are stacked against the gambler and they come out on top.
One thing we don't have in place is how the Handling and Power pool interact with one another. Currently, it doesn't even matter if there are two pools or ten pools of dice to choose from because we only manage one of them are a time. And the fact that an attack can make a move and then not have any way to mitigate a failure except the randomness of another die rolling the opposite value on the face of the die to cancel out a negative effect is not very interesting.
As it stands now we have an increasing emphasis on resource management but there is more that we can do. So in the case of a failure in an attack, let's take things a step further.
Returning to the idea that in straights we use Power dice and in corners we use Handling dice, let's add something else.
Whenever a failure to attack or defend occurs, players should have some opportunity to mitigate this in a deliberate way and have another chance at success. So, if attacking on the corner, should they roll their Handling dice and fail in their attack or be blocked, they will have an opportunity to use dice from their Power pool to convert them into new Handling dice. And to keep it simple, they can only use one die from their opposing pool in this manner.
This is to represent the idea that whether they are attacking through manoeuvring or speed, both are always going to be used to some degree even if the emphasis is more heavily focused on one or the other depending if they are in a corner or a straight. We would use the same exact mechanic that we used for the Push. They can roll one additional die from the pool opposite to their focus pool. If the result is a 6, their failure becomes a success. In this case we will eschew punishment - that's better saved for the desperation of the Push. This works for a blocked attacker or an attacker whose attack failed. And a defender whose defense fail can also reap the potential reward of this system.
So now our game with two separate pools of resources has some consistency and the mechanics are beginning to inter-mesh. But we aren't finished yet.
To emphasize the gamble of quick decisions in a race there is one more thing we can do to tie everything together.
As said previously when an attacker is attempting an overtake they need to choose the direction of approach. They can either attack from the left or the right. The defender has to predict and pay attention to this, but again, they aren't a fly - they have a limited ability to view all possible vectors at the same time, and of course, are still focusing most of their effort looking forward so that they can avoid crashing into something or running off the track. Imagine that.
We also know that information has to be hidden. When a player decides to make their move to overtake and commits their dice from one of their two pools, they don't want the opposing player to know how many dice they are committing. Likewise, The defender also does not want them to know. And they need to resolve these rolls simultaneously in order for things to be kept fair.
Chess and Poker both employ something I like about the psychological element of competition - the stare down. Professional fights are the same with promos having fighters size one another up. If using Formula G it would be tragic in my mind to not have it be competitive in nature. That is the heart of racing, and even good friends in real life don’t hold anything back on the track.
The system is simple. Whenever players need to roll off one another, they will take their dice pool and put it under the table. Out of sight, they will put the dice they are committing into the hand of the direction they are going to go. Then, they bring both hands closed back onto the table, and at the same time, reveal their committed die pools.
If the defender chooses the same hand as the attacker for the roll, they will get a +2 bonus to their roll indicating that they have predicted the vector from which the attack will come and have responded to it. The attack still gets to attack - feints and direction changes happen in a real race, so there is no reason they shouldn’t be able to proceed into the attack regardless of their original plan having failed.
It’s simple, and provides a fun moment of two players locking eyes in challenge before the reveal comes. And it does two things. It simulates the moment of an attempted overtake, and it provides a little excitement, tension, and drama at the table.
One more thing we need to account for is the difficult of the various corners in our race course. And we left something out from before. So let’s take a step back and look at our track.
I’ve made a change here and added values to the straights. If corners will have a level of complexity tied to them, then there is no reason why straight’s wouldn’t also. A particularly long straight such as Nurburgring should have a difficulty of 3. And at Monza here, we are being a bit more arbitrary since the straights are roughly similar in length, but just to mix things up, the first straight is classed with a difficulty of 2.
What does the difficulty mean in context?
If a player is defending a position, they shouldn’t have to fight as hard or commit as much to do so. So our difficult applies to attackers. Simply put, these are a negative modifier for making an attack. The numbers might not be perfect with a more limited 3 die pool, but at any rate, the intent is that when they want to attack, these modifiers will reduce the sum of their total roll. As a designer my intent here is that players cannot constantly attack. There are stretches of most races where maintaining a position is the focus - not every spot on a track is going to be ideal for an overtake. Infact, some entire tracks make it very difficult for such overtakes to ever occur. So here is our new table for Monza.
I think eight should be the maximum for any track in order to keep things relatively expedient. And I’d suspect that three laps on most any course would be the maximum we would want to go. That’s 24 rounds in total, which is probably too much, so I would consider that the absolutely longest race we would want to simulate here.
Pit-stops are another manner. We don’t have stats for tire wear and other components of racing that make it necessary to pit. Weather will probably introduce another modifier of some kind depending on severity. And if we want to get really cheeky, we could have tire grades that offer a bonus and a negative depending on the weather at hand, and also reduce our need to box.
But I am satisfied at this point that we are at a place where we have all the broad strokes of our game. We identified the most important elements of our simulation. We created mechanics that try to simulate the feel of racing around a track, cornering, speeding up on straights, and pushing the limits of the vehicle. We account for failures, we account for track complexity, we account for determining starting grid position, and we have a very human element of gambling and hidden information, and have created endless opportunities for moments of tension and taunting at the table. We essentially have everything required to simulate various kinds of races, as long as they are races that have both straights and corners involved. And it would probably work for drag racing, but we would definitely want to modify things for it to be more suitable there.
Now we have to answer the most important question - does any of it work?
This is where I must disappoint you, and where I must emphasize the most important part of this article: I have no idea.
None of what we have done here can exist in a vacuum. All of these things are theoretical. We may need to tweak numbers. We may need to change things up, add new things, remove others. We just don’t know yet, because at this stage in the process of our design, these are just ideas. Which brings me to what I hope will be the biggest takeaway for you, the designer reading this today:
NONE OF THIS IS RELEVANT UNTIL IT HAS BEEN TESTED.
I’ll say it once more, in different words. Until we get this system to a table and actually play it out with other people, these are all just ideas. They have not been put under real scrutiny. I’ve tried to fill in as many gaps as I can from a theoretical perspective for the purpose of guiding you through my design thought process, but I could make this blog another ten thousand words like the first entry of Deep Dungeon Mastery, and we will never be able to determine how this will actually run until we get it on a table and run it. I have simulated some of these elements in my own free time just to get a better feel for the writing here, but it’s not remotely close to the rigour needed to actually hash this out, a process that must occur with other people, with feedback, and with experimental tweaking sometimes taking place during those test sessions.
The purpose of this article was to start with something simple and manageable that could be built from start to logical finish so that you understand the thought process that goes into design. Formula G is not a finished system. The bedrock of the idea is there, built over three days or constant pondering and some experimentation and writing this blog. But what we have here, while theoretically “complete” in that we had a “problem”, which was trying to understand how to design a mechanical system for simulating racing at a tabletop, and that we “solved” that problem. But it won’t truly be solved until it has been tested and we have ripped it to shreds and dissected it over and over again to find the flaws. And there will be flaws, and if you dear reader noticed those flaws for yourself, good! That means you also have a mind for this, and that is all you need to engage in this exact process.
A I am working on finishing Formula G. When I do get there I will post it as a free document on DriveThru RPG. I have a dream of making a full game out of it eventually called Formula G: World Tour as well, but until then, I hope you were able to gain something from this.
Until next time!


















I love seeing new ways to handle vehicle interaction in a game space. This makes me want to go pull out my copy of formula D board game for family Sunday showdown race.
Great article. Gives some good ideas. I have an idea for a futuristic racing one-page rpg that I plan to work on eventually.