I’m always working on stuff to contribute to the open source gaming world. One of the things I think it lacks the most is a good fighting game, an open source alternative to the Tekken / Mortal Kombat / Street Fighter world. And it turns out to be a very interesting problem for a game programmer.
Like most game types, making a good fighting game engine is not simple. Actually, this might be especially true for fighting games, as they don’t usually allow much exploration of the scenery like first person shooters and role playing games, allowing you to distract the player with interesting plots and beautiful graphics. They also provide very short games unlike, for example, real time strategy games, thus allowing the players to quickly get to know your engine and learn how to exploit it’s weaknesses. And it will definitely have weaknesses.
Making a game like that is where you really start noticing how much every small decision for the engine has big consequences on the gameplay – how fast are attacks? does a missed attack leave you vulnerable? does getting hit leave you vulnerable? any decision like that will change what players will want to do to win – is it better to constantly attack? should you block often? is there a reason to use a wide array of different moves or is one basic attack enough? Hopefully we’ll explore some of those options here in the future.
Like good scientists, we’ll start with a spherical cow. Our initial engine will only allow three things: moving left, moving right, and attacking. What kind of gameplay will that produce? We shall see. Meanwhile, as we now focus on the engine, the graphics I made are somewhat less than perfect:
We start with free attacks. Pressing the attack button is an immediate attack, and if it’s in the proper range it’s an immediate hit. As you might assume, it encourages a pretty simple playing style, of simply advancing to the proper range and attacking constantly. It didn’t take me long to make an AI that does that and kicks my ass. I suppose if I give it some limitations to make it more human (think slower and be less accurate in estimating distances) it could become playable, but not very fun.
How do we go on from here? More on that later.