Tips from a combat designer: Fibonacci game design
[In this reprinted #altdevblogaday in-depth piece, Vigil Games' senior designer Mike Birkhead explains Fibbnoaci game design, and looks at how it can be "a total ace up your sleeve."]
"Add things until it starts sucking, take things away until it stops getting better."
Good systems find a balance between keeping the player guessing and keeping things simple; this means both knowing how many options to provide the player, and knowing when to say no to something regardless of how cool. It involves things like how many weapons to have in the game, how many talent trees, or how many monsters to spawn in an encounter.
Situations like this rarely have the perfect answer, and that limitless possibility shuts my brain right off. That first brush stroke on a blank canvas can be the most difficult, so I always try to constrain my options.
You are probably familiar with the Fibonacci sequence from your college math classes, but if you need a refresher it looks like this:
1, 1, 2, 3, 5, 8, 13, …
There are two applications of this sequence that I apply to game design: the Rule of Three (extended edition), and the Golden Ratio.
The rule of three (extended edition)
The first use of Fibonacci game design is the Rule of Three. The number three is a special number in game design — in everything, really. It crops up everywhere: three talent trees, three rounds, three party members, etc.
I don't care what you are designing, if you can break things down, divide things up, or cut things out so that it gets you down to threes, then it is a good decision. Your game will, in all likelihood, be better for it. That's a promise. It will feel rough, I know, and you will mourn the loss from something from the game, but the player doesn't know what you cut from your game, they only know the product.
The Rule of Three is so universal and applicable that it will probably be the greatest trick in your toolbox for a long time. People will marvel at your ability to create simple, clean, elegant systems, and little will they know that all you did was focus on that little number three. Look: I'm not crazy. The number three is just super powerful. You can see it crop up in all different kinds of fields:
But I admit, at times it won't feel right to break things down to threes, and that's where his two friends come into play: two and five.
There is just something about systems in twos, threes, and fives. They just feel RIGHT. You feel like you have choice, but you are not overwhelmed. You will notice, of course, that these are Fibonacci numbers — 2, 3, 5 — which is NOT a coincidence.
Here's why: once you provide five options to the player it can be super easy to say, "why not six?" Sure, why NOT six. Well, because it bloats the game, dummy. More is not always better; in fact, it is almost always worse.
When I think about adding something to the game I constrain myself within Fibonacci's beautiful sequence, for it forces me to REALLY commit to "just one more", as now it is NOT just one more, but in fact several more.
If, for example, I currently provide five options, then I would have to upgrade it to eight; for eight, thirteen. The choice to increase the player's options, as you can clearly see, gets heftier and heftier: THERE'S A LESSON THERE.
Do this, and everything you design will turn up golden.
How much experience should the player need at level 50 versus level 30? How much at level 20?
You will face and solve this problem at least once in your career. Probably more than once, if you become a system designer, and it is another of those blank canvas problems. The experience caps you set can be almost ANYTHING. It's simply a matter of how you want your game to scale, how you want to control your gains, and the feel you want for the system. Of course, certain choices you make can make your life more or less difficult.
Now, me personally, I prefer systems that grow exponentially. They just FEEL better to me. I like gaining levels really fast in the beginning, so you can get that Pavlovian reward system going.
But HOW do we grow something exponentially, and at what rate? Enter the Golden Ratio.
Take any number N from the Fibonacci sequence and divide it by the previous number in the sequence N-1. As N approaches infinity, the number you get from the division approaches the Golden Ratio. Ah HA, you say! You wondered when this would tie back to that Fibonacci fellow. This is interesting, but how is it useful?
Link: The Short form to solve for the Golden Ratio
The Golden Ratio, like the rule of three, crops up all over the place.
- The proportions of the human body
- The spiral of a nautilus shell
- The spirals in the arms of a galaxy
- The rectangular shape of light switches
Link: Vitruvian Man compared against golden ratios
From the very small to the very large it shows up, and there is something about it that we find pleasing. Where am I going with this? Anyone that has done this already knows where I'm headed, so let's catch you up.
Our goal is to create an equation to calculate how much experience the player needs at any particular level, and we want it to grow exponentially. Here's an example of something I have used in the past as a starting point (Coefficient and Exponent are constants).
Reward = Coefficient * (GoldenRatio ^ (Level + Exponent))
Things usually deviate from this, especially when systems start interacting, but it's usually a nice starting point with pleasing results. OK, you say, what about a real world example of how to use all this Fibonacci game design? Let's take a look at MK9.
When I was designing the Challenge Tower for MK9 I was faced with a compelling problem. The player should have 300 completely different missions, they needed to get money for beating them, they should be able to buy their way passed missions they didn't like, and it needed to all fit into the larger picture of the entire economy.
The first question was how to break up the missions. I decided on blocks of 5 missions that focused on the same character. This way I could ramp up the difficulty on a player, and they are given enough time to familiarize themselves with how that character controls. Between each block would be a minigame, which breaks up the gameplay to keep things interesting.
I also had some special or funny missions that I wanted to showcase, and doing it this way meant I could have a cool mission every 30 missions.
Once I had everything broken up into my mission blocks, I began the next phase of the process, which was to systematically rank them on how difficult they were on a scale of one to five. It is difficult to do this kind of estimation in a vacuum, by the way, so make good use of other people. You are always going to be the worst judge of your own difficulty spikes.
Link: A Screenshot Of The File I Used
As an aside, I was also tracking the kind of gameplay gimmicks being used, how many times different characters occurred, what arenas it took place in, what kind of ring knockouts used, etc. Missions were constantly being shuffled around, and keeping this file maintained was a full time and commitment heavy job, but it was so worth it.
Finally, now that I had all the missions organized and categorized, I was ready to start assigning reward values to them, which, using the 5 point difficulty scale I already created, was output from the following formula:
Reward = 50 * (2 ^ Difficulty)
This gave me nice round numbers that started off at 100. The final outcome looks random, but you can see that at every step of the process I was making meaningful calls about how things were organized, and, more importantly, you probably noticed the constant appearance of 2, 3, and 5 in the design. That was all on purpose.
"When forced to work within a strict framework the imagination is taxed to its utmost — and will produce its richest ideas. Given total freedom the work is likely to sprawl." – T.S. Eliot
Designs with no structure tend to sprawl. It's something that we all understand, but it can be very hard to follow that advice. Being a designer means you have the heart of a dreamer, or you wouldn't be doing the job in the first place. We like adding shit, because we traffic in a world of cool. Isn't it better if we add more? Probably not.
The numbers two, three, and five are not magic missiles, however, and they won't suddenly make your designs super clean; what they WILL do is help keep a structure to things and, like I said, a little bit of constraint can be very helpful when staring down the barrel of the blank canvas.
Look back to the original task I was given on the Challenge Tower: 300 missions of various gameplay. That's it! Just 300 missions, go take care of it – gulp! I love tasks like that, though, and you probably do too; yet, such freedom can easily cause you to baulk. How do I start?!
Me, I immediately apply my Fibonacci structure to the process; not because it limits to my imagination, but because it allows my brain to focus on what matters: giving the player a good experience.
The same will be true for you. Fibonacci game design is a total ace up your sleeve. You can apply it to almost every single system you ever attack, and people will marvel at your ability to create clean, simple, fun systems.
[This piece was reprinted from #AltDevBlogADay, a shared blog initiative started by @mike_acton devoted to giving game developers of all disciplines a place to motivate each other to write regularly about their personal game development passions.]