Josh approached us with the idea of a simple fighting game for this Hackathon. Since all of us have played at least one fighting game before, we knew the mechanics and figured implementing them would be fairly straightforward. We wanted to make a simple fighting game similar to Mortal Kombat or Street Fighter.

What it does

It is a simple 2D fighting game meant to be played locally with 2 players. The objective of the game is to reduce your opponents life to 0 using your attacks, or to have more health than them before the timer runs out.
The game allows for 2 players to be controlled at the same time using the same keyboard. Several movement mechanics are implemented in the game, being walking, running, and having the players bump into each other.
The players can walk and run in either direction using a different combination of keys (shown in the README file), and when the players collide with each other, the players bounce off each other. Collision detection with the wall is also implemented to prevent the players from moving out of bounds. There are 3 combat mechanics implemented in the game, being a basic attack, blocking, and a guard break.
A basic attack is a move that damages the opponent when they are not blocking. It is faster, and has a longer reach than the guard break attack.
Blocking is a state the player enters when they press the designated button. This prevents them from taking damage from basic attacks while they are in the state, and when a block is completed, they are able to attack an opponent before the opponent can attack them.
A guard break is a slower attack with shorter reach (so it is vulnerable to basic attacks), but can bypass the enemy's blocking and still damage them.

How we built it

We used Visual Studio 2019 (community edition) and the glm and glfw libraries to handle vector calculations. Again, all the libraries mentioned are open source.

We also used some open source assets from the internet, which includes character sprites and the background(s).


Sprites and Animations

Challenges we ran into

Learning C++ was challenging for those who were not familiar with it, but getting all the combat mechanics and animations to work as intended was the hardest challenge.

Accomplishments that we're proud of

Our team didn't use a premade game engine for this - we essentially did everything from scratch. Also, we implemented dynamic hitboxes (areas where the player hits the opponent) and hurtboxes (areas where the opponent can hurt the player with their own hitboxes) so that the hitboxes and hurtboxes are active on different frames as to prevent spamming, and add a layer of strategy to the game.

What we learned

Our team learned some basics of game development, including how the gpu displays images to the screen, dealing with different types of collisions, and physics engines.

What's next for Wacky Fighting Game

We might add in additional stages, sound, and more advanced mechanics down the road.

Built With

Share this project: