#Gamedev TutorialsBecoming a #GamedevProgramming

I wanna make a fighting game! – A practical guide for beginners (part I)

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.

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

Hadoken!
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

Gamer's Pro Tip: Load/access your all-time favorite PC games into the cloud with virtual windows desktop having excellent GPU performance from CloudDesktopOnline.com. If you prefer a server, Rent a server from one of the best DaaS providers – Apps4Rent.com.

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!

Yes, this is 3D. No, I'm not joking.
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.

Yes, this Terminator
A nice example for explaining the uncanny valley - just be sure to check out the scenes this guy appears in! Credits: stephen bowler, released under CC 2.0 Attribution license

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.

The ur-example in all its new glory
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 😉

 

Read more:

I wanna make a fighting game! – A practical guide for beginners (part II)

I wanna make a fighting game! – part III: The character as a state machine 

I wanna make a fighting game! - part IV: Hitboxes and hurtboxes

Tags
#2dgame #3Dgame #tutorial #retrogming #retrogames #m.u.g.e.n. #streetfighter #fightinggame
Show More

Andrea "Jens" Demetrio

A PhD student in Physics by day and hobbyist game programmer by night. My insane love for fighting games made me try to build my own one – Schwarzerblitz – and spending my time improving it. I'm the kind of jack-of-all-trades / one-man-team guy who goes full throttle on his passions and never gives up.

Related Articles

9 Comments

  1. Hi, just a 2 cent, I wish lots of great luck ! (TL DR: it’s not easy making an indie fighting game, hency why there are barely none, though new indie ones are Punch Planet, Fight of Gods, Fantasy Strike or Omen of Sorrow, check them out; they are good, they might not have the reconnaisannce/popularity but are fun fighting games))).

    I second everything that was said here and will share my opinion (I am indie game developer outside US making a 3D fighting game (alone) that uses 2.5D plane restriction, with (hopefully) quality on par to SF3-V, MK-X, KI, T7, KoFXIV, AoF, FF and such. (I use the UFE3D fighting script and Unity 5.6f1 (2017) game engine))).

    When I read certain comments on web about the ‘vibe’ on gamers on fighting games, it is a mixed bag :
    – Certain gamers people Want and Crave New fighting Games – Any…anything, and are very open to indie community creating something
    special – some- thing – any,thing, New – they wait, and wait…nothing comes…instead they play rogues/pixel scrollers/retro arcade lite indie games in the mean time or sometimes a couple of new ‘indie hits’, but in that time (years..) Indie-made Fighting Games are just a bygone memory, for there are none made (except the AAA studios’ blockbuster fighting games).
    – Then, there are other gamers whom have this Sacro-Saint thing with fighting games. I.e. Fighting Games can Only Be : Mortal Kombat, Street Fighter…and Mortal Kombat, Street Fighter… and Mortal Kombat, Street Fighter. Period.
    There explanation is that Other fighting games are a waste of time because ‘how could Any Other Fighting Game’ Be as Good as Street Fighter or Mortal Kombat – it is impossible. As such, other fighting games do not warrant their time or dollars. They just say: ”Buy MKX or SFV. Done. Tekken 7 is last ditch. And if you absolutely Must (For Some God Forbidden Reason) Buy Killer Instinct or King of Fighters XIV”.
    Thankfully, there are more of the first category and most gamers are ready for any ‘new’ game (including fighting game genre ones whom are (not so) surprisingly absent), provided it is good enough/polished enough.

    The scarcity of fighting games is good and bad thing, good because they are ‘rare breeds’ and thus special in that sense,
    bad because any Other fighting gamers is thought of ‘as less’ and immediately ‘compared’ to the Saint-Triad of Mortal Kombat/Street Fighter/Tekken…which is understandable
    since they are the pionneers but it is vicious circle and as such, unfortunate; it is very hard for indie developers to emulate this kind of quality when do not have the vast resources
    of these multi-million dollar/huge team AAA studios with over 30 years experience (Capcom (SF), Midway/NetherRealm Studios (MK), Tecmo (TK)).
    Thus it is a ‘winner’ takes all market (monopoly by 3 or 4 companies making fighting games that’s it), you can count the number of ‘fighting games’ one or two hands (that people ‘still’ play regularly and that have had franchises established over 30 years)).
    The rest are absolutely sleeping with the fishes when they come out with a ‘new’ fighting game that nobody knows of.
    Creating a fighting game is a bit like creating a new 3D game engine or an obscure new language (latin vs english), it can be adopted (like Unity) massively from its
    success/support/community (just like english), or, die (like Autodesk’s Stingray game engine) from its lack of adoption (just like latin)…

    You might say I’m definately making a Latin-like analogy game hoping for its adoption; I liken to making a ‘new’ Latin, Latin 2.0 : ) this one will stick because it is inspired by english/2018 language; thus not so ‘out of touch’ with today.
    Some might say I’m exaggerating a little which is true, I ‘m not reinventing the wheel (Capcom invented it 30 years ago with Street Fighter 1 and Midway continuing with Mortal Kombat 1 in 1993).

    The most important point, if you want to make a new fighting game, in my mind, is working on Game Design and balancing it.
    -What is special about your fighting game vs the others ?
    -How many charactesr are there (I will tell you, most gamers will not bother with a 8-character roster; they feel it is too
    limited when MK/SF/TEKKEN have upwards of 35 fighters Per Game. It makes for a dull repetitive game because in the space
    of 15 minutes you’ve ‘played the entire game’ in those 8 characters; not enough diversity (my roster is 33 fighters in my game (30 upfront, 3 hidden characters just to keep it interesting and ‘worth it’ to go through all them ‘to get the secret ones’ like an incentive for playing/training)))).
    -Do you have a training mode in it ?
    -Can it be played Multiplayer (P2P or Special Server) Online ?
    -Do you ahve special combos or can you parry, backdash, do you do airjuggling or not, you can chain moves, are there fishing moves like (fatalities) ?
    -Is your game ULTRA fast or ‘normal speed’ or dogslow ? do the players feel weighty or ‘floating’
    -Do you have all male roster or you added females/women..are they All Women (Blaz Blue/Girlz Fighting game) ?
    -Are they totally fictional or historical (in my case they are historical based, using reality is ok for some basing) ?
    -How long do you think you will spend on making game (or willing to, because you should at least aim 6months minimum, and for a more AAA-like experience it may need up to 2 years of dev)
    -Do you have money to buy assets/outsource work ? Can you survive with everything (rent/food/etc..) in the mean time ?
    -What is the fighting engine you use? M.U.G.E.N,/EF-12/Game Maker, nice ones but you won’t get far, very complicated for certain things and some cost a lot for licensing. What is the 3D engine used ? Unity/Unreal ? Lumberyard?
    -How many dev are you, solo or a team ?
    -Do you have a story mode (I can’T stress this enough, so many people complained that some fighting games were empty shells with empty characters/not-characterized/no background story thus like ‘extras’ in a MTV music clip, you don’t
    really care what happens to them because they are just filler in the background (hence why people ‘don’t connect’ with your characters, you must characterize them a little and give some ‘Fictive’ background story, even a 2 line story helps per character).
    People wish to feel like the old days ‘the Upcoming Ryu’ ‘Challenger’ or the Next ‘Scorpion or Sub-Zero’..these characters have a full lore and backgroudn stories, hence are immediately recognizable ‘as brand’. Thus, story/background elements is paramount
    to solidify the audience adoption of whatever fighter; or else, they will forget about them, like any extra in a MTV music video clip that is finished. Think about it – Street Fighter – can be summed in one word : Ryu. Ryu has been coming back since 1980s…
    this character ‘saved’ the franchise and was ‘milked’ to death to make the franchise survive (just like ‘Harry Potter’ or ‘Batman’ or ‘James Bond’ or ‘SpiderMan’, they are ‘trademarks’ characters now and the character itself explains the entire fighting game franchise/lore/story that
    started it all back to 1980s). People ‘identify’ with Super Heroes and Memorable Characters (Ryu, Yoda, Spiderman, Joker…etc), they become ‘Culture’ matter and ‘brand-association/franchise building/trust building’. People Want to see the Next Street Fighter 6 VI or Mortal Kombat 12 XII.

    When you are an indie dev you face the same…but it’s harder because no one knows you and you start..just like Ryu did in 1980s..’at the start’/bottom and must get ‘known’.
    Having an important character in your game, helps, like that ‘bigger than life’ character that helms it all and is the glue.
    Of course, none of this will matter if the game is not polished/amateur like and feels like a 50c rushed android game, and not like AAA 50-million dollar 3d fighting game.
    Fixing bugs/problems and balancing/rebalancing the damage/the speed/the gravity/the ‘skiddy feets’…bad animations. All these elements converge to make a solid fighting game.
    And of course, as specified in this text, the Art of your game – how does your Game Look Like (the Game Design/Art decisions you made/the Ideas you created for the roster of fighters)).

    Hope this helps in any way,
    Thanks for reading.

    Just a 2 cent.

    1. Won’t it will look a bit ragdoll-ish? I have seen a couple games using this approach, but usually they don’t seem so smooth. Do you have any specific tool/game in mind? If so, can you give me a link to check it?

  2. Actually nearly ever big fighting game nowadays is using Unreal.
    Guilty Gear Xrd, Street Fighter 5, Tekken 7, Mortal Kombat X, Injustice 1 and 2, Marvel vs. Capcom: Infinite and some more. I think the main reason for that is that Unreal has a very solid animation system.

  3. Tekken 7 wasn’t really coded in UE4 – just the graphical part was. The fighting system etc is still using the same code as the Tekken games prior to Tekken 7.

    1. According to this interview http://tekkengamer.com/2017/05/31/tekken-7-dev-qa-harada-michael-talk-unreal-engine-4-used-tekken-7/ , before 7 they used to work with Playstation code that would have been basically impossible to port, so they decided to exploit the whole physics engine of UE4, together with the graphic part, to achieve a faster development cycle. I’ve found no mention on what was coded within the UE4 engine C++ framework and what not (e.g. game logic, existing codebase, etc.). Can you link me some references? I would be really curious to read them, since I’m also trying to develop a fighting game 🙂

  4. I look forward to your next article. I come from a programming background so I am most worried about the assets and animation. I think I could learn to draw something simple and maybe make a sprite sheet, but I am not sure if I can come up with something of decent quality. I think I might go that route unless I can get access to some motion capture equipment somehow, because 3D animations really need to look fluid, and I highly doubt I would be able to do that manually.

    1. you can do poor mans rotoscoping. just film yourself going thru the sprite motions, or poses, then screen cap the poses you want your sprite to have and rough draw them in your graphics program.

      Might look cool if you could do a good set of basic poses, but then have really rough sketch assets.

We want your opinion! Go ahead and say something!

Close
%d bloggers like this: