For all fighting game enthusiasts, this tutorial series is meant to set the grounds on how to start creating your own fighting game.
If you are a fighting game enthusiast, you've probably thought about it more than once, amazed by the flashy fireballs and super combos in Street Fighter or the juggling system in Tekken, or the counter mechanics in Dead or Alive. Whatever fighting game inspired you, you want to do one – and you are not alone, you know it.
Learn how to make a professional looking two player game in Unity
Then, you open the Internet, and find out that aside from major studios and development teams (Capcom, Namco, Arc System Works, Team Ninja), there are little to no fighting games around. And you could be tempted to ask this question on a Q&A site. To quote the first answer:
Many inexperienced developers start working on a fighting game thinking they are easy and soon find themselves overwhelmed by far more work than they ever imagined.
Oh, really? Well, what are these issues?! What can go wrong with that?
Let's break things down in this series of articles!
First question first: 2D or 3D?
It can look like an easy question, at first, but if you answer in the wrong way, you send yourself and your game in development Hell before even starting. Here's some tips, broken down in different categories – so you can make an informed decision.
The game engine: how can I make my game?
The first and foremost question to answer. You want to make a game... now what?
Well, you have different choices in front of you – but it boils all down to one question:
How good are you at programming?
And, mind me, with programming I don't only mean writing lines of code: I mean knowing the structured logic behind a flow of actions. What you do when building RPG Maker's Events or playing around with Game Maker (without using the scripting tools) it's not programming in the common sense of the word, but requires you to have acquired some programming logic. And let's say it plain and simple: to build a good fighting game, you need at least one person in your team with a good grasp on the basic programming logic, whichever engine you choose. Now that this is settled, let's summarize what your choice could be – in terms of the most popular engines out there.
- Unity is a good engine for both 2D and 3D. It provides a nice user interface and some scripting tools (warning: C# knowledge required). It's almost-friendly to user without programming experience, but gives out its best when used by someone who knows the language. There is even a dedicated plugin engine for fighting games (and still no fighting games out :/) - disclaimer: I haven't tried the plugin. I'm just listing it because it exists 😉
- Unreal Engine 4 is probably even greater for 3D, but the learning curve is steep. Really steep. Furthermore, the engine uses C++, so you'll probably need some higher programming skills and dedication to achieve good results. That said, Tekken 7 has been written with this engine. Yes, Tekken 7. There are lots of tutorials around, but nothing specific for fighting games. Still, the fact that Tekken 7 was coded with this engine surely means something.
- M.U.G.E.N. is hands down the most famous 2D fighting game engine. It requires work and dedication, but there is a large support community and lots of already-done characters you can use to test your game mechanics. To have a good idea of what can be done with it, have a look at The Black Heart, in my opinion the most shining example of original M.U.G.E.N. game out there.
- EF-12 is something like a M.U.G.E.N. for 3D games, but it's not so straightforward to use and there is not a big community support until now.
- Fighter Maker 2002 is probably the most user-friendly 2D fighting game engine... but unfortunately is extremely hard to find, due to it being a Japanese exclusive – with some fan-translations lurking somewhere on the Internet. It's pretty straightforward to use and you don't need a single line of code, but it has some limitations due to the fact that there's very little documentation around and you can't expand the engine with scripts or code. If you can legally put your hands on it, just do it. It's the best entry point in fighting game making and though not as powerful as M.U.G.E.N., it helps you understand the basics of making a fighting game.
- Game Maker is another popular choice, but it's a multi-purpose engine, so you will have to do most for yourself, if you want to convert it to a fully-fledged fighting game engine. There are some nice Super Smash Bros. clones around which were done with Game Maker, so it's definitely an option to consider!
If you are not satisfied with any of them, then you have one last choice: you build your own game engine. Granted, this is a ton of work, but you can then have full control of the whole process. Personally, for building my fighting game Schwarzerblitz I have used Irrlicht, a basic-yet-powerful game engine which needs a good knowledge of C++ to work fine. I had access to the whole codebase and managed to make it work the way I like, but it's definitely not for starters 😉
To sum up this section:
For 2D, you can/should definitely use M.U.G.E.N. or Fighter Maker 2002 (provided you can find it) to start getting a grasp on the fundamentals. If you want to go full 3D, good luck with that: there is no dedicated engine with a huge community support around here – so you will likely have to spend some man-hours to get your engine working! Definitely, not impossible but yet not easy.
Assets – the stuff your game is made of
2D or 3D... or 3D which behaves like 2D? That's a really hard question! credits: Aleks Dorohovich, released under CC 2.0 Attribution license
The 2D dilemma
2D fighting games (like Street Fighter II, the early Mortal Kombat titles, anime fighters like Melty Blood, BlazBlue or Guilty Gear X) require an insane amount of assets. Every single move of your character must be animated, drawing every single frame separately. Every. Single. Frame.
On average, one animation consists of 5 to 30+ frames, depending on game, character, and so on. Now, multiply it for the number of available states: idle, walking, running, jumping, crouching, hit, guard, knockback, etc. Then, multiply it for the number of characters. Even if you consider only 5 frames per each, it's still a huge amount of work. You can make yourself an idea by having a look at Ryu's spritesheet from Super Street Fighter II. So, either you have a team of talented artists, or this looks awfully complicated.
This does not mean that it can't be done! Again, take a look at the excellent The Black Heart: this is a one-man project with fully custom assets and characters, but it took 7 years in the making. Still, it's a nice example of what a can-do attitude can achieve.
Is 3D really easier?
Yes, long story short, 3D fighting games (like Tekken, Virtua Fighter, and Dead or Alive) show less issues – at least, in principle - for a small development team. For starters, assets are slightly less problematic: You need to build your character models only once and then animate them. Cool, isn't it? And animations are not such a mess, since you don't have to redraw anything – you just play with the bones of the character until you reach perfection. Most important of all, you can re-use some animations for more than one character, without having to do that again and again from the beginning!
Surely, Arc System Works know how to make their 3D models look like anime drawings!
That said, I can definitely see why Arc System Works and Capcom have moved from sprite based fighters to 3D models in their most recent installments (though admittedly, Guilty Gear Xrd's 3D models are so amazingly sprite-like that I needed a couple minutes to figure out they were not drawn!).
So, where does the issue kick in?
Enter the dreaded uncanny valley!
<thunder roars in the background>
Have you ever watched Terminator? The first one, I mean. During the final moments of the movie, we see good ol' Arnold's metallic skeleton. Raise your hands if you felt like it was moving in an unnatural way, if you felt slightly disturbed by its strange motion pattern. That's it, you experienced the effects of sliding into the uncanny valley. This is what you have to avoid at all costs! In your game, animations play a really important role. If you mess with them, you are out. Therefore, even if the issues with assets are slightly less complicated, it's still worth noting that you shouldn't take it for granted.
Another issue is that players expect more fluidity from a 3D fighting game than from a 2D game. The 2D game is considered an “acceptable break from reality”, so if your character backdashes without changing frame, nobody will (probably) complain. In a 3D fighting game, if you do this... well, let's say that it's not visually so pleasing, to use a euphemism. It looks that your character likes skating while remaining perfectly still – which is a no sell.
To sum up this section:
You have to choose between drawing every character frame vs. animating 3D models in a smooth way. The second approach looks more viable for smaller developers/one-man teams, but there are obviously exceptions.
Game mechanics – what should I take care of?
Here's where things becomes slightly more tricky. You have three distinct categories of fighting games to handle. Yes, three. 2D fighting games, 3D fighting games and 3D fighting games which play like 2D fighting games. Street Fighter V, The King of the Fighters XIV, and Mortal Kombat X are shining example of this subset. As a matter of facts, the last item in our list can be merged together with the first one: 2D fighting games and 3D-but-2D offer the same design issues, the only big difference being the way the assets are built. From a more technical point of view, in the 3D-but-2D case you can exploit some characteristics of your 3D models to make your life easier, but this will be covered in a future article.
2D (and 3D-but-2D) fighting games
In a 2D fighting game, players are confined on a plane. This means that the only way to advance is to go forward, and the only way to put distance between you and your opponent is to go backward. Jumping is a key element, as well as moves that interrupt jumps and jump attacks (anti-air attacks). Projectile attacks (like the über-famous Hadoken) are a great strategical element in confining the opponent in his side of the screen. If you want to build a game which has lots of aerial play and cool, useful projectile attacks, 2D (or 3D-but-2D) is definitely the way to go.
Hadoken (TM): Zoning your opponent since 1991.
3D fighting games
You want to shot a nice Hadoken to corner your opponent? Too bad, there's a third dimension! Yes, this is the catch: in 3D fighting games you can usually sidestep. This adds a layer of complexity and makes projectile less useful, if not at short distance (best example: Akuma in his Tekken 7 incarnation). The addition of a third dimension can be a good reason to make jumps less effective or make them reach smaller altitudes: there are other ways to approach and circumvent your opponent. This is a paradigm shift in respect to Street Fighter. If you want your game to play slightly slower but put emphasis on full-stage movement, this is the way to go.
To sum up this section:
There's no pro and con in this case: You have to be aware that you are basically choosing between two completely different paradigms. It's better to decide this at the beginning, since there's no way back once you've started building your game for good.
Now the 2D vs. 3D part of the of the question has been eviscerated. The next article will cover the basic concepts behind a fighting game and some ideas on how to implement them 😉